There was an error fetching the job.
rspec unit pg13-as-if-foss single-db-ci-connection 21/28
Passed Started
by
@gitlab-bot

🤖 GitLab Bot 🤖
1Running with gitlab-runner 15.9.0~beta.212.g8ccc65e7 (8ccc65e7)2 on green-1.private.runners-manager.gitlab.com/gitlab.com/gitlab-org 4bq1s9yM, system ID: s_9d15f3e4e7ae3 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.18-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service postgres:13 ...8Pulling docker image postgres:13 ...9Using docker image sha256:dd421ca1f7f13d81c5c145d77d97d8d84cd0e6f1e045936ee506ce0f50ee397a for postgres:13 with digest postgres@sha256:00f455399f30cc3f2fe4185476601438b7a4959c74653665582d7c313a783d51 ...10Starting service redis:6.2-alpine ...11Pulling docker image redis:6.2-alpine ...12Using docker image sha256:3616f0c0705d2a35d30dde109daf3cbe58ae7284121aafa6f5cfa987db98d1a8 for redis:6.2-alpine with digest redis@sha256:edddbcad5a41d58df2f142d68439922f1860ea902903d016257337c3342f30fc ...13Waiting for services to be up and running (timeout 30 seconds)...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.18-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...16Using docker image sha256:7a1b51158a1ee23b080b514ce6ebbf52ac51585877198fb52709e5cd01805a77 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.18-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.18-rust-1.65-node-16.14-postgresql-13@sha256:412d55913d43377094427ced549cb422ed2f2c7223e6a605d0d3e0151cb892b0 ...18Running on runner-4bq1s9ym-project-278964-concurrent-0 via runner-4bq1s9ym-private-1680167732-f2d9e68b...20$ eval "$CI_PRE_CLONE_SCRIPT"21Fetching changes with git depth set to 20...22Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/23Created fresh repository.24remote: Enumerating objects: 135903, done. 25remote: Counting objects: 100% (135903/135903), done. 26remote: Compressing objects: 100% (88560/88560), done. 27remote: Total 135903 (delta 58315), reused 94618 (delta 42152), pack-reused 0 28Receiving objects: 100% (135903/135903), 121.35 MiB | 30.71 MiB/s, done.29Resolving deltas: 100% (58315/58315), done.31 * [new ref] refs/pipelines/822866544 -> refs/pipelines/82286654432Checking out 523abdde as detached HEAD (ref is refs/merge-requests/116270/merge)...33Skipping Git submodules setup34$ git remote set-url origin "${CI_REPOSITORY_URL}"36Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...37cache.zip is up to date 38Successfully extracted cache39Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-3.0-16...40cache.zip is up to date 41Successfully extracted cache43Downloading artifacts for compile-test-assets as-if-foss (4031138200)...44Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4031138200 responseStatus=200 OK token=64_YsYcr45Downloading artifacts for detect-tests (4031138213)...46Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4031138213 responseStatus=200 OK token=64_YsYcr47Downloading artifacts for retrieve-tests-metadata (4031138217)...48Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4031138217 responseStatus=200 OK token=64_YsYcr49Downloading artifacts for setup-test-env (4031138204)...50Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4031138204 responseStatus=200 OK token=64_YsYcr52Using docker image sha256:7a1b51158a1ee23b080b514ce6ebbf52ac51585877198fb52709e5cd01805a77 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.18-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.18-rust-1.65-node-16.14-postgresql-13@sha256:412d55913d43377094427ced549cb422ed2f2c7223e6a605d0d3e0151cb892b0 ...53$ echo $FOSS_ONLY54155$ [ "$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.sh710Using decomposed database config (config/database.yml.postgresql)711Enabling ci connection (database_tasks: false) in config/database.yml712Geo DB won't be set up.713$ setup_db_user_only714CREATE ROLE715GRANT716==> 'setup_db_user_only' succeeded in 1 seconds.717$ bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes718Dropped database 'gitlabhq_test'719Created database 'gitlabhq_test'720==> 'bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes' succeeded in 31 seconds.721$ setup_db_praefect722SELECT pg_catalog.set_config('search_path', '', false);723CREATE DATABASE praefect_test ENCODING 'UTF8';724==> 'setup_db_praefect' succeeded in 0 seconds.725$ source ./scripts/rspec_helpers.sh726$ run_timed_command "gem install knapsack --no-document"727$ gem install knapsack --no-document728Successfully installed knapsack-4.0.07291 gem installed730==> 'gem install knapsack --no-document' succeeded in 1 seconds.731$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"835$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"836SKIP_FLAKY_TESTS_AUTOMATICALLY: false837RETRY_FAILED_TESTS_IN_NEW_PROCESS: true838KNAPSACK_GENERATE_REPORT: 839FLAKY_RSPEC_GENERATE_REPORT: 840KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling,components}{,/**/}*_spec.rb841KNAPSACK_LOG_LEVEL: debug842KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13-as-if-foss_single-db-ci-connection_21_28_report.json843FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json844FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13-as-if-foss_single-db-ci-connection_21_28_report.json845NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13-as-if-foss_single-db-ci-connection_21_28_report.json846SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg13-as-if-foss_single-db-ci-connection_21_28_report.txt847CRYSTALBALL: 848Knapsack node specs:849spec/tasks/gitlab/backup_rake_spec.rb850spec/models/concerns/noteable_spec.rb851spec/models/clusters/cluster_spec.rb852spec/lib/gitlab/database/migration_helpers_spec.rb853spec/lib/gitlab/github_import/importer/protected_branch_importer_spec.rb854spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb855spec/models/broadcast_message_spec.rb856spec/models/merge_request/cleanup_schedule_spec.rb857spec/policies/note_policy_spec.rb858spec/services/ci/retry_job_service_spec.rb859spec/services/resource_access_tokens/create_service_spec.rb860spec/models/ci/ref_spec.rb861spec/lib/gitlab/import_export/references_configuration_spec.rb862spec/models/resource_label_event_spec.rb863spec/lib/gitlab/import_export/import_export_equivalence_spec.rb864spec/services/snippets/create_service_spec.rb865spec/services/projects/move_forks_service_spec.rb866spec/models/concerns/awardable_spec.rb867spec/serializers/issue_entity_spec.rb868spec/services/resource_events/change_state_service_spec.rb869spec/workers/packages/debian/process_changes_worker_spec.rb870spec/graphql/resolvers/namespace_projects_resolver_spec.rb871spec/lib/gitlab/diff/file_collection/paginated_merge_request_diff_spec.rb872spec/services/merge_requests/link_lfs_objects_service_spec.rb873spec/services/design_management/save_designs_service_spec.rb874spec/services/auto_merge_service_spec.rb875spec/services/admin/set_feature_flag_service_spec.rb876spec/models/integrations/buildkite_spec.rb877spec/lib/gitlab/slash_commands/command_spec.rb878spec/lib/gitlab/ci/status/stage/factory_spec.rb879spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb880spec/services/issuable/common_system_notes_service_spec.rb881spec/lib/gitlab/ci/config/entry/need_spec.rb882spec/lib/gitlab/background_migration/backfill_project_import_level_spec.rb883spec/lib/gitlab/git/diff_spec.rb884spec/models/metrics/dashboard/annotation_spec.rb885spec/graphql/mutations/design_management/upload_spec.rb886spec/graphql/types/issue_type_spec.rb887spec/uploaders/ci/pipeline_artifact_uploader_spec.rb888spec/lib/gitlab/template/merge_request_template_spec.rb889spec/lib/api/entities/merge_request_basic_spec.rb890spec/services/metrics/dashboard/annotations/create_service_spec.rb891spec/models/import_export_upload_spec.rb892spec/models/prometheus_metric_spec.rb893spec/lib/gitlab/ci/config/external/file/remote_spec.rb894spec/services/timelogs/create_service_spec.rb895spec/lib/gitlab/github_import/importer/note_importer_spec.rb896spec/helpers/clusters_helper_spec.rb897spec/tasks/gitlab/git_rake_spec.rb898spec/lib/gitlab/optimistic_locking_spec.rb899spec/lib/gitlab/runtime_spec.rb900spec/views/admin/application_settings/general.html.haml_spec.rb901spec/services/projects/forks/sync_service_spec.rb902spec/models/dependency_proxy/manifest_spec.rb903spec/lib/gitlab/ci/config/normalizer_spec.rb904spec/lib/gitlab/database/load_balancing/connection_proxy_spec.rb905spec/lib/gitlab/ci/build/policy/changes_spec.rb906spec/models/ci/sources/pipeline_spec.rb907spec/services/projects/hashed_storage/base_attachment_service_spec.rb908spec/workers/ci/delete_unit_tests_worker_spec.rb909spec/lib/gitlab/diff/suggestions_parser_spec.rb910spec/finders/projects/groups_finder_spec.rb911spec/serializers/discussion_entity_spec.rb912spec/lib/gitlab/safe_request_store_spec.rb913spec/lib/gitlab/ci/status/build/retried_spec.rb914spec/models/concerns/ci/artifactable_spec.rb915spec/services/ci/play_manual_stage_service_spec.rb916spec/models/ci/freeze_period_spec.rb917spec/lib/gitlab/cache/import/caching_spec.rb918spec/finders/security/license_compliance_jobs_finder_spec.rb919spec/lib/gitlab/rack_attack_spec.rb920spec/lib/gitlab/ci/build/artifacts/metadata_spec.rb921spec/workers/issues/rebalancing_worker_spec.rb922spec/lib/gitlab/ci/config/entry/prefix_spec.rb923spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb924spec/models/concerns/encrypted_user_password_spec.rb925spec/services/projects/group_links/create_service_spec.rb926spec/lib/gitlab/ci/config/entry/service_spec.rb927spec/lib/gitlab/security/scan_configuration_spec.rb928spec/lib/gitlab/harbor/query_spec.rb929spec/validators/color_validator_spec.rb930spec/tooling/danger/feature_flag_spec.rb931spec/lib/api/entities/project_import_status_spec.rb932spec/services/web_hooks/destroy_service_spec.rb933spec/lib/error_tracking/sentry_client/api_urls_spec.rb934spec/views/projects/issues/_issue.html.haml_spec.rb935spec/lib/gitlab/database/background_migration/health_status/indicators/write_ahead_log_spec.rb936spec/lib/sidebars/your_work/menus/merge_requests_menu_spec.rb937spec/workers/namespaces/schedule_aggregation_worker_spec.rb938spec/helpers/web_hooks/web_hooks_helper_spec.rb939spec/models/integrations/google_play_spec.rb940spec/uploaders/records_uploads_spec.rb941spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb942spec/lib/sidebars/user_settings/menus/access_tokens_menu_spec.rb943spec/models/packages/build_info_spec.rb944spec/lib/gitlab/repository_cache/preloader_spec.rb945spec/models/packages/dependency_spec.rb946spec/services/members/unassign_issuables_service_spec.rb947spec/lib/gitlab/ci/reports/security/locations/sast_spec.rb948spec/services/update_merge_request_metrics_service_spec.rb949spec/lib/bulk_imports/groups/transformers/member_attributes_transformer_spec.rb950spec/lib/gitlab/diff/rendered/notebook/diff_file_helper_spec.rb951spec/rubocop/cop/gitlab/delegate_predicate_methods_spec.rb952spec/lib/banzai/pipeline/incident_management/timeline_event_pipeline_spec.rb953spec/serializers/merge_request_user_entity_spec.rb954spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb955spec/graphql/resolvers/design_management/version_in_collection_resolver_spec.rb956spec/workers/delete_merged_branches_worker_spec.rb957spec/workers/merge_requests/resolve_todos_after_approval_worker_spec.rb958spec/serializers/test_report_entity_spec.rb959spec/workers/hashed_storage/project_migrate_worker_spec.rb960spec/lib/gitlab/usage_data/topology_spec.rb961spec/lib/gitlab/background_migration/disable_legacy_open_source_licence_for_recent_public_projects_spec.rb962spec/lib/gitlab/sql/except_spec.rb963spec/workers/gitlab/github_import/stage/import_issue_events_worker_spec.rb964spec/lib/gitlab/email/handler_spec.rb965spec/lib/gitlab/import_export/snippets_repo_saver_spec.rb966spec/services/ci/create_pipeline_service/environment_spec.rb967spec/views/projects/jobs/_build.html.haml_spec.rb968spec/services/issues/related_branches_service_spec.rb969spec/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder_spec.rb970spec/services/ci/create_pipeline_service/custom_config_content_spec.rb971spec/lib/gitlab/background_migration/batching_strategies/dismissed_vulnerabilities_strategy_spec.rb972spec/lib/gitlab/cluster/rack_timeout_observer_spec.rb973spec/services/git/wiki_push_service/change_spec.rb974spec/models/packages/npm_spec.rb975spec/graphql/mutations/ci/job_token_scope/remove_project_spec.rb976spec/lib/gitlab/ci/yaml_processor/result_spec.rb977spec/experiments/concerns/project_commit_count_spec.rb978spec/graphql/mutations/todos/restore_spec.rb979spec/lib/gitlab/jira_import/issues_importer_spec.rb980spec/lib/gitlab/alert_management/alert_status_counts_spec.rb981spec/lib/gitlab/ci/badge/pipeline/template_spec.rb982spec/services/packages/rubygems/metadata_extraction_service_spec.rb983spec/graphql/types/error_tracking/sentry_error_type_spec.rb984spec/helpers/milestones_helper_spec.rb985spec/lib/gitlab/kubernetes/deployment_spec.rb986spec/lib/gitlab/utils/delegator_override_spec.rb987spec/lib/gitlab/ci/secure_files/p12_spec.rb988spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb989spec/lib/gitlab/ci/build/prerequisite/factory_spec.rb990spec/services/clusters/cleanup/service_account_service_spec.rb991spec/lib/gitlab/import_export/project/exported_relations_merger_spec.rb992spec/lib/gitlab/diff/formatters/image_formatter_spec.rb993spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb994spec/models/application_setting/term_spec.rb995spec/lib/gitlab/query_limiting/middleware_spec.rb996spec/models/concerns/delete_with_limit_spec.rb997spec/lib/gitlab/ci/reports/security/finding_key_spec.rb998spec/lib/gitlab/lets_encrypt/order_spec.rb999spec/lib/gitlab/database/migrations/test_background_runner_spec.rb1000spec/graphql/types/projects/base_service_type_spec.rb1001spec/lib/gitlab/kubernetes/namespace_spec.rb1002spec/models/users/ghost_user_migration_spec.rb1003spec/lib/gitlab/gitaly_client/health_check_service_spec.rb1004spec/lib/gitlab/graphql/lazy_spec.rb1005spec/initializers/net_http_patch_spec.rb1006spec/lib/gitlab/submodule_links_spec.rb1007spec/lib/gitlab/polling_interval_spec.rb1008spec/models/push_event_payload_spec.rb1009spec/serializers/merge_requests/pipeline_entity_spec.rb1010spec/lib/gitlab/github_import/issuable_finder_spec.rb1011spec/models/loose_foreign_keys/modification_tracker_spec.rb1012spec/graphql/resolvers/ci/template_resolver_spec.rb1013spec/lib/system_check/app/authorized_keys_permission_check_spec.rb1014spec/models/integrations/irker_spec.rb1015spec/services/users/dismiss_callout_service_spec.rb1016spec/lib/gitlab/database/schema_validation/structure_sql_spec.rb1017spec/services/users/respond_to_terms_service_spec.rb1018spec/lib/gitlab/ci/status/success_spec.rb1019spec/services/note_summary_spec.rb1020spec/lib/gitlab/github_import/page_counter_spec.rb1021spec/services/service_desk_settings/update_service_spec.rb1022spec/graphql/resolvers/release_milestones_resolver_spec.rb1023spec/lib/gitlab/ci/parsers_spec.rb1024spec/serializers/ci/dag_stage_entity_spec.rb1025spec/graphql/types/commit_signature_interface_spec.rb1026spec/lib/gitlab/sidekiq_signals_spec.rb1027spec/lib/gitlab/github_gists_import/status_spec.rb1028spec/models/packages/rubygems/metadatum_spec.rb1029spec/lib/gitlab/ci/config/entry/stages_spec.rb1030spec/uploaders/favicon_uploader_spec.rb1031spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb1032spec/lib/gitlab/ci/config/entry/release/assets/links_spec.rb1033spec/graphql/types/time_tracking/timelog_sort_enum_spec.rb1034spec/lib/gitlab/kubernetes/service_account_token_spec.rb1035spec/views/admin/application_settings/_eks.html.haml_spec.rb1036spec/policies/resource_state_event_policy_spec.rb1037spec/finders/admin/plans_finder_spec.rb1038spec/lib/gitlab/asset_proxy_spec.rb1039spec/scripts/create_pipeline_failure_incident_spec.rb1040spec/lib/gitlab/ci/reports/sbom/report_spec.rb1041spec/services/webauthn/register_service_spec.rb1042spec/services/members/creator_service_spec.rb1043spec/lib/gitlab/pagination/keyset/cursor_based_request_context_spec.rb1044spec/lib/api/entities/bulk_imports/entity_failure_spec.rb1045spec/lib/gitlab/config/entry/validatable_spec.rb1046spec/workers/gitlab/github_import/stage/import_attachments_worker_spec.rb1047spec/graphql/types/ci/runner_platform_type_spec.rb1048spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb1049spec/lib/gitlab/pagination/keyset/in_operator_optimization/column_data_spec.rb1050spec/graphql/types/release_asset_link_input_type_spec.rb1051spec/lib/api/validations/validators/git_sha_spec.rb1052spec/graphql/types/clusters/agent_token_status_enum_spec.rb1053spec/lib/api/validations/validators/array_none_any_spec.rb1054spec/lib/gitlab/error_tracking/processor/sanitize_error_message_processor_spec.rb1055spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb1056spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb1057spec/lib/gitlab/ci/reports/security/scan_spec.rb1058spec/lib/forever_spec.rb1059spec/graphql/types/packages/helm/maintainer_type_spec.rb1060spec/graphql/types/work_items/widgets/labels_update_input_type_spec.rb1061spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/where_constraints_spec.rb1062spec/lib/gitlab/usage_data_counters/base_counter_spec.rb1063spec/graphql/types/x509_certificate_type_spec.rb1064spec/lib/gitlab/metrics/dashboard/defaults_spec.rb1065spec/services/ci/runners/unregister_runner_service_spec.rb1066spec/lib/peek/views/memory_spec.rb1067spec/lib/gitlab/utils/execution_tracker_spec.rb1068spec/lib/api/helpers/open_api_spec.rb1069spec/views/errors/omniauth_error.html.haml_spec.rb1070spec/graphql/types/ci/analytics_type_spec.rb1071spec/lib/gitlab/database/schema_validation/validators/different_definition_indexes_spec.rb1072spec/graphql/types/container_repository_cleanup_status_enum_spec.rb1073spec/lib/microsoft_teams/activity_spec.rb1074spec/uploaders/uploader_helper_spec.rb1075spec/lib/bulk_imports/common/extractors/graphql_extractor_spec.rb1076spec/lib/gitlab/ci/pipeline/metrics_spec.rb1077spec/graphql/types/ci/pipeline_status_enum_spec.rb1078spec/workers/gitlab/github_import/import_collaborator_worker_spec.rb1079spec/graphql/types/work_items/widgets/notifications_type_spec.rb1080Filter specs:1081Running specs:1082Running all node tests without filter1083spec/tasks/gitlab/backup_rake_spec.rb1084spec/models/concerns/noteable_spec.rb1085spec/models/clusters/cluster_spec.rb1086spec/lib/gitlab/database/migration_helpers_spec.rb1087spec/lib/gitlab/github_import/importer/protected_branch_importer_spec.rb1088spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb1089spec/models/broadcast_message_spec.rb1090spec/models/merge_request/cleanup_schedule_spec.rb1091spec/policies/note_policy_spec.rb1092spec/services/ci/retry_job_service_spec.rb1093spec/services/resource_access_tokens/create_service_spec.rb1094spec/models/ci/ref_spec.rb1095spec/lib/gitlab/import_export/references_configuration_spec.rb1096spec/models/resource_label_event_spec.rb1097spec/lib/gitlab/import_export/import_export_equivalence_spec.rb1098spec/services/snippets/create_service_spec.rb1099spec/services/projects/move_forks_service_spec.rb1100spec/models/concerns/awardable_spec.rb1101spec/serializers/issue_entity_spec.rb1102spec/services/resource_events/change_state_service_spec.rb1103spec/workers/packages/debian/process_changes_worker_spec.rb1104spec/graphql/resolvers/namespace_projects_resolver_spec.rb1105spec/lib/gitlab/diff/file_collection/paginated_merge_request_diff_spec.rb1106spec/services/merge_requests/link_lfs_objects_service_spec.rb1107spec/services/design_management/save_designs_service_spec.rb1108spec/services/auto_merge_service_spec.rb1109spec/services/admin/set_feature_flag_service_spec.rb1110spec/models/integrations/buildkite_spec.rb1111spec/lib/gitlab/slash_commands/command_spec.rb1112spec/lib/gitlab/ci/status/stage/factory_spec.rb1113spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb1114spec/services/issuable/common_system_notes_service_spec.rb1115spec/lib/gitlab/ci/config/entry/need_spec.rb1116spec/lib/gitlab/background_migration/backfill_project_import_level_spec.rb1117spec/lib/gitlab/git/diff_spec.rb1118spec/models/metrics/dashboard/annotation_spec.rb1119spec/graphql/mutations/design_management/upload_spec.rb1120spec/graphql/types/issue_type_spec.rb1121spec/uploaders/ci/pipeline_artifact_uploader_spec.rb1122spec/lib/gitlab/template/merge_request_template_spec.rb1123spec/lib/api/entities/merge_request_basic_spec.rb1124spec/services/metrics/dashboard/annotations/create_service_spec.rb1125spec/models/import_export_upload_spec.rb1126spec/models/prometheus_metric_spec.rb1127spec/lib/gitlab/ci/config/external/file/remote_spec.rb1128spec/services/timelogs/create_service_spec.rb1129spec/lib/gitlab/github_import/importer/note_importer_spec.rb1130spec/helpers/clusters_helper_spec.rb1131spec/tasks/gitlab/git_rake_spec.rb1132spec/lib/gitlab/optimistic_locking_spec.rb1133spec/lib/gitlab/runtime_spec.rb1134spec/views/admin/application_settings/general.html.haml_spec.rb1135spec/services/projects/forks/sync_service_spec.rb1136spec/models/dependency_proxy/manifest_spec.rb1137spec/lib/gitlab/ci/config/normalizer_spec.rb1138spec/lib/gitlab/database/load_balancing/connection_proxy_spec.rb1139spec/lib/gitlab/ci/build/policy/changes_spec.rb1140spec/models/ci/sources/pipeline_spec.rb1141spec/services/projects/hashed_storage/base_attachment_service_spec.rb1142spec/workers/ci/delete_unit_tests_worker_spec.rb1143spec/lib/gitlab/diff/suggestions_parser_spec.rb1144spec/finders/projects/groups_finder_spec.rb1145spec/serializers/discussion_entity_spec.rb1146spec/lib/gitlab/safe_request_store_spec.rb1147spec/lib/gitlab/ci/status/build/retried_spec.rb1148spec/models/concerns/ci/artifactable_spec.rb1149spec/services/ci/play_manual_stage_service_spec.rb1150spec/models/ci/freeze_period_spec.rb1151spec/lib/gitlab/cache/import/caching_spec.rb1152spec/finders/security/license_compliance_jobs_finder_spec.rb1153spec/lib/gitlab/rack_attack_spec.rb1154spec/lib/gitlab/ci/build/artifacts/metadata_spec.rb1155spec/workers/issues/rebalancing_worker_spec.rb1156spec/lib/gitlab/ci/config/entry/prefix_spec.rb1157spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb1158spec/models/concerns/encrypted_user_password_spec.rb1159spec/services/projects/group_links/create_service_spec.rb1160spec/lib/gitlab/ci/config/entry/service_spec.rb1161spec/lib/gitlab/security/scan_configuration_spec.rb1162spec/lib/gitlab/harbor/query_spec.rb1163spec/validators/color_validator_spec.rb1164spec/tooling/danger/feature_flag_spec.rb1165spec/lib/api/entities/project_import_status_spec.rb1166spec/services/web_hooks/destroy_service_spec.rb1167spec/lib/error_tracking/sentry_client/api_urls_spec.rb1168spec/views/projects/issues/_issue.html.haml_spec.rb1169spec/lib/gitlab/database/background_migration/health_status/indicators/write_ahead_log_spec.rb1170spec/lib/sidebars/your_work/menus/merge_requests_menu_spec.rb1171spec/workers/namespaces/schedule_aggregation_worker_spec.rb1172spec/helpers/web_hooks/web_hooks_helper_spec.rb1173spec/models/integrations/google_play_spec.rb1174spec/uploaders/records_uploads_spec.rb1175spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb1176spec/lib/sidebars/user_settings/menus/access_tokens_menu_spec.rb1177spec/models/packages/build_info_spec.rb1178spec/lib/gitlab/repository_cache/preloader_spec.rb1179spec/models/packages/dependency_spec.rb1180spec/services/members/unassign_issuables_service_spec.rb1181spec/lib/gitlab/ci/reports/security/locations/sast_spec.rb1182spec/services/update_merge_request_metrics_service_spec.rb1183spec/lib/bulk_imports/groups/transformers/member_attributes_transformer_spec.rb1184spec/lib/gitlab/diff/rendered/notebook/diff_file_helper_spec.rb1185spec/rubocop/cop/gitlab/delegate_predicate_methods_spec.rb1186spec/lib/banzai/pipeline/incident_management/timeline_event_pipeline_spec.rb1187spec/serializers/merge_request_user_entity_spec.rb1188spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb1189spec/graphql/resolvers/design_management/version_in_collection_resolver_spec.rb1190spec/workers/delete_merged_branches_worker_spec.rb1191spec/workers/merge_requests/resolve_todos_after_approval_worker_spec.rb1192spec/serializers/test_report_entity_spec.rb1193spec/workers/hashed_storage/project_migrate_worker_spec.rb1194spec/lib/gitlab/usage_data/topology_spec.rb1195spec/lib/gitlab/background_migration/disable_legacy_open_source_licence_for_recent_public_projects_spec.rb1196spec/lib/gitlab/sql/except_spec.rb1197spec/workers/gitlab/github_import/stage/import_issue_events_worker_spec.rb1198spec/lib/gitlab/email/handler_spec.rb1199spec/lib/gitlab/import_export/snippets_repo_saver_spec.rb1200spec/services/ci/create_pipeline_service/environment_spec.rb1201spec/views/projects/jobs/_build.html.haml_spec.rb1202spec/services/issues/related_branches_service_spec.rb1203spec/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder_spec.rb1204spec/services/ci/create_pipeline_service/custom_config_content_spec.rb1205spec/lib/gitlab/background_migration/batching_strategies/dismissed_vulnerabilities_strategy_spec.rb1206spec/lib/gitlab/cluster/rack_timeout_observer_spec.rb1207spec/services/git/wiki_push_service/change_spec.rb1208spec/models/packages/npm_spec.rb1209spec/graphql/mutations/ci/job_token_scope/remove_project_spec.rb1210spec/lib/gitlab/ci/yaml_processor/result_spec.rb1211spec/experiments/concerns/project_commit_count_spec.rb1212spec/graphql/mutations/todos/restore_spec.rb1213spec/lib/gitlab/jira_import/issues_importer_spec.rb1214spec/lib/gitlab/alert_management/alert_status_counts_spec.rb1215spec/lib/gitlab/ci/badge/pipeline/template_spec.rb1216spec/services/packages/rubygems/metadata_extraction_service_spec.rb1217spec/graphql/types/error_tracking/sentry_error_type_spec.rb1218spec/helpers/milestones_helper_spec.rb1219spec/lib/gitlab/kubernetes/deployment_spec.rb1220spec/lib/gitlab/utils/delegator_override_spec.rb1221spec/lib/gitlab/ci/secure_files/p12_spec.rb1222spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb1223spec/lib/gitlab/ci/build/prerequisite/factory_spec.rb1224spec/services/clusters/cleanup/service_account_service_spec.rb1225spec/lib/gitlab/import_export/project/exported_relations_merger_spec.rb1226spec/lib/gitlab/diff/formatters/image_formatter_spec.rb1227spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb1228spec/models/application_setting/term_spec.rb1229spec/lib/gitlab/query_limiting/middleware_spec.rb1230spec/models/concerns/delete_with_limit_spec.rb1231spec/lib/gitlab/ci/reports/security/finding_key_spec.rb1232spec/lib/gitlab/lets_encrypt/order_spec.rb1233spec/lib/gitlab/database/migrations/test_background_runner_spec.rb1234spec/graphql/types/projects/base_service_type_spec.rb1235spec/lib/gitlab/kubernetes/namespace_spec.rb1236spec/models/users/ghost_user_migration_spec.rb1237spec/lib/gitlab/gitaly_client/health_check_service_spec.rb1238spec/lib/gitlab/graphql/lazy_spec.rb1239spec/initializers/net_http_patch_spec.rb1240spec/lib/gitlab/submodule_links_spec.rb1241spec/lib/gitlab/polling_interval_spec.rb1242spec/models/push_event_payload_spec.rb1243spec/serializers/merge_requests/pipeline_entity_spec.rb1244spec/lib/gitlab/github_import/issuable_finder_spec.rb1245spec/models/loose_foreign_keys/modification_tracker_spec.rb1246spec/graphql/resolvers/ci/template_resolver_spec.rb1247spec/lib/system_check/app/authorized_keys_permission_check_spec.rb1248spec/models/integrations/irker_spec.rb1249spec/services/users/dismiss_callout_service_spec.rb1250spec/lib/gitlab/database/schema_validation/structure_sql_spec.rb1251spec/services/users/respond_to_terms_service_spec.rb1252spec/lib/gitlab/ci/status/success_spec.rb1253spec/services/note_summary_spec.rb1254spec/lib/gitlab/github_import/page_counter_spec.rb1255spec/services/service_desk_settings/update_service_spec.rb1256spec/graphql/resolvers/release_milestones_resolver_spec.rb1257spec/lib/gitlab/ci/parsers_spec.rb1258spec/serializers/ci/dag_stage_entity_spec.rb1259spec/graphql/types/commit_signature_interface_spec.rb1260spec/lib/gitlab/sidekiq_signals_spec.rb1261spec/lib/gitlab/github_gists_import/status_spec.rb1262spec/models/packages/rubygems/metadatum_spec.rb1263spec/lib/gitlab/ci/config/entry/stages_spec.rb1264spec/uploaders/favicon_uploader_spec.rb1265spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb1266spec/lib/gitlab/ci/config/entry/release/assets/links_spec.rb1267spec/graphql/types/time_tracking/timelog_sort_enum_spec.rb1268spec/lib/gitlab/kubernetes/service_account_token_spec.rb1269spec/views/admin/application_settings/_eks.html.haml_spec.rb1270spec/policies/resource_state_event_policy_spec.rb1271spec/finders/admin/plans_finder_spec.rb1272spec/lib/gitlab/asset_proxy_spec.rb1273spec/scripts/create_pipeline_failure_incident_spec.rb1274spec/lib/gitlab/ci/reports/sbom/report_spec.rb1275spec/services/webauthn/register_service_spec.rb1276spec/services/members/creator_service_spec.rb1277spec/lib/gitlab/pagination/keyset/cursor_based_request_context_spec.rb1278spec/lib/api/entities/bulk_imports/entity_failure_spec.rb1279spec/lib/gitlab/config/entry/validatable_spec.rb1280spec/workers/gitlab/github_import/stage/import_attachments_worker_spec.rb1281spec/graphql/types/ci/runner_platform_type_spec.rb1282spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb1283spec/lib/gitlab/pagination/keyset/in_operator_optimization/column_data_spec.rb1284spec/graphql/types/release_asset_link_input_type_spec.rb1285spec/lib/api/validations/validators/git_sha_spec.rb1286spec/graphql/types/clusters/agent_token_status_enum_spec.rb1287spec/lib/api/validations/validators/array_none_any_spec.rb1288spec/lib/gitlab/error_tracking/processor/sanitize_error_message_processor_spec.rb1289spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb1290spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb1291spec/lib/gitlab/ci/reports/security/scan_spec.rb1292spec/lib/forever_spec.rb1293spec/graphql/types/packages/helm/maintainer_type_spec.rb1294spec/graphql/types/work_items/widgets/labels_update_input_type_spec.rb1295spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/where_constraints_spec.rb1296spec/lib/gitlab/usage_data_counters/base_counter_spec.rb1297spec/graphql/types/x509_certificate_type_spec.rb1298spec/lib/gitlab/metrics/dashboard/defaults_spec.rb1299spec/services/ci/runners/unregister_runner_service_spec.rb1300spec/lib/peek/views/memory_spec.rb1301spec/lib/gitlab/utils/execution_tracker_spec.rb1302spec/lib/api/helpers/open_api_spec.rb1303spec/views/errors/omniauth_error.html.haml_spec.rb1304spec/graphql/types/ci/analytics_type_spec.rb1305spec/lib/gitlab/database/schema_validation/validators/different_definition_indexes_spec.rb1306spec/graphql/types/container_repository_cleanup_status_enum_spec.rb1307spec/lib/microsoft_teams/activity_spec.rb1308spec/uploaders/uploader_helper_spec.rb1309spec/lib/bulk_imports/common/extractors/graphql_extractor_spec.rb1310spec/lib/gitlab/ci/pipeline/metrics_spec.rb1311spec/graphql/types/ci/pipeline_status_enum_spec.rb1312spec/workers/gitlab/github_import/import_collaborator_worker_spec.rb1313spec/graphql/types/work_items/widgets/notifications_type_spec.rb1314Running all node tests without filter1315Running all node tests without filter1316Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format RspecJunitFormatter --out rspec/junit_rspec.xml --tag ~quarantine --tag ~level:background_migration --default-path spec -- spec/tasks/gitlab/backup_rake_spec.rb spec/models/concerns/noteable_spec.rb spec/models/clusters/cluster_spec.rb spec/lib/gitlab/database/migration_helpers_spec.rb spec/lib/gitlab/github_import/importer/protected_branch_importer_spec.rb spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb spec/models/broadcast_message_spec.rb spec/models/merge_request/cleanup_schedule_spec.rb spec/policies/note_policy_spec.rb spec/services/ci/retry_job_service_spec.rb spec/services/resource_access_tokens/create_service_spec.rb spec/models/ci/ref_spec.rb spec/lib/gitlab/import_export/references_configuration_spec.rb spec/models/resource_label_event_spec.rb spec/lib/gitlab/import_export/import_export_equivalence_spec.rb spec/services/snippets/create_service_spec.rb spec/services/projects/move_forks_service_spec.rb spec/models/concerns/awardable_spec.rb spec/serializers/issue_entity_spec.rb spec/services/resource_events/change_state_service_spec.rb spec/workers/packages/debian/process_changes_worker_spec.rb spec/graphql/resolvers/namespace_projects_resolver_spec.rb spec/lib/gitlab/diff/file_collection/paginated_merge_request_diff_spec.rb spec/services/merge_requests/link_lfs_objects_service_spec.rb spec/services/design_management/save_designs_service_spec.rb spec/services/auto_merge_service_spec.rb spec/services/admin/set_feature_flag_service_spec.rb spec/models/integrations/buildkite_spec.rb spec/lib/gitlab/slash_commands/command_spec.rb spec/lib/gitlab/ci/status/stage/factory_spec.rb spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb spec/services/issuable/common_system_notes_service_spec.rb spec/lib/gitlab/ci/config/entry/need_spec.rb spec/lib/gitlab/background_migration/backfill_project_import_level_spec.rb spec/lib/gitlab/git/diff_spec.rb spec/models/metrics/dashboard/annotation_spec.rb spec/graphql/mutations/design_management/upload_spec.rb spec/graphql/types/issue_type_spec.rb spec/uploaders/ci/pipeline_artifact_uploader_spec.rb spec/lib/gitlab/template/merge_request_template_spec.rb spec/lib/api/entities/merge_request_basic_spec.rb spec/services/metrics/dashboard/annotations/create_service_spec.rb spec/models/import_export_upload_spec.rb spec/models/prometheus_metric_spec.rb spec/lib/gitlab/ci/config/external/file/remote_spec.rb spec/services/timelogs/create_service_spec.rb spec/lib/gitlab/github_import/importer/note_importer_spec.rb spec/helpers/clusters_helper_spec.rb spec/tasks/gitlab/git_rake_spec.rb spec/lib/gitlab/optimistic_locking_spec.rb spec/lib/gitlab/runtime_spec.rb spec/views/admin/application_settings/general.html.haml_spec.rb spec/services/projects/forks/sync_service_spec.rb spec/models/dependency_proxy/manifest_spec.rb spec/lib/gitlab/ci/config/normalizer_spec.rb spec/lib/gitlab/database/load_balancing/connection_proxy_spec.rb spec/lib/gitlab/ci/build/policy/changes_spec.rb spec/models/ci/sources/pipeline_spec.rb spec/services/projects/hashed_storage/base_attachment_service_spec.rb spec/workers/ci/delete_unit_tests_worker_spec.rb spec/lib/gitlab/diff/suggestions_parser_spec.rb spec/finders/projects/groups_finder_spec.rb spec/serializers/discussion_entity_spec.rb spec/lib/gitlab/safe_request_store_spec.rb spec/lib/gitlab/ci/status/build/retried_spec.rb spec/models/concerns/ci/artifactable_spec.rb spec/services/ci/play_manual_stage_service_spec.rb spec/models/ci/freeze_period_spec.rb spec/lib/gitlab/cache/import/caching_spec.rb spec/finders/security/license_compliance_jobs_finder_spec.rb spec/lib/gitlab/rack_attack_spec.rb spec/lib/gitlab/ci/build/artifacts/metadata_spec.rb spec/workers/issues/rebalancing_worker_spec.rb spec/lib/gitlab/ci/config/entry/prefix_spec.rb spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb spec/models/concerns/encrypted_user_password_spec.rb spec/services/projects/group_links/create_service_spec.rb spec/lib/gitlab/ci/config/entry/service_spec.rb spec/lib/gitlab/security/scan_configuration_spec.rb spec/lib/gitlab/harbor/query_spec.rb spec/validators/color_validator_spec.rb spec/tooling/danger/feature_flag_spec.rb spec/lib/api/entities/project_import_status_spec.rb spec/services/web_hooks/destroy_service_spec.rb spec/lib/error_tracking/sentry_client/api_urls_spec.rb spec/views/projects/issues/_issue.html.haml_spec.rb spec/lib/gitlab/database/background_migration/health_status/indicators/write_ahead_log_spec.rb spec/lib/sidebars/your_work/menus/merge_requests_menu_spec.rb spec/workers/namespaces/schedule_aggregation_worker_spec.rb spec/helpers/web_hooks/web_hooks_helper_spec.rb spec/models/integrations/google_play_spec.rb spec/uploaders/records_uploads_spec.rb spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb spec/lib/sidebars/user_settings/menus/access_tokens_menu_spec.rb spec/models/packages/build_info_spec.rb spec/lib/gitlab/repository_cache/preloader_spec.rb spec/models/packages/dependency_spec.rb spec/services/members/unassign_issuables_service_spec.rb spec/lib/gitlab/ci/reports/security/locations/sast_spec.rb spec/services/update_merge_request_metrics_service_spec.rb spec/lib/bulk_imports/groups/transformers/member_attributes_transformer_spec.rb spec/lib/gitlab/diff/rendered/notebook/diff_file_helper_spec.rb spec/rubocop/cop/gitlab/delegate_predicate_methods_spec.rb spec/lib/banzai/pipeline/incident_management/timeline_event_pipeline_spec.rb spec/serializers/merge_request_user_entity_spec.rb spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb spec/graphql/resolvers/design_management/version_in_collection_resolver_spec.rb spec/workers/delete_merged_branches_worker_spec.rb spec/workers/merge_requests/resolve_todos_after_approval_worker_spec.rb spec/serializers/test_report_entity_spec.rb spec/workers/hashed_storage/project_migrate_worker_spec.rb spec/lib/gitlab/usage_data/topology_spec.rb spec/lib/gitlab/background_migration/disable_legacy_open_source_licence_for_recent_public_projects_spec.rb spec/lib/gitlab/sql/except_spec.rb spec/workers/gitlab/github_import/stage/import_issue_events_worker_spec.rb spec/lib/gitlab/email/handler_spec.rb spec/lib/gitlab/import_export/snippets_repo_saver_spec.rb spec/services/ci/create_pipeline_service/environment_spec.rb spec/views/projects/jobs/_build.html.haml_spec.rb spec/services/issues/related_branches_service_spec.rb spec/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder_spec.rb spec/services/ci/create_pipeline_service/custom_config_content_spec.rb spec/lib/gitlab/background_migration/batching_strategies/dismissed_vulnerabilities_strategy_spec.rb spec/lib/gitlab/cluster/rack_timeout_observer_spec.rb spec/services/git/wiki_push_service/change_spec.rb spec/models/packages/npm_spec.rb spec/graphql/mutations/ci/job_token_scope/remove_project_spec.rb spec/lib/gitlab/ci/yaml_processor/result_spec.rb spec/experiments/concerns/project_commit_count_spec.rb spec/graphql/mutations/todos/restore_spec.rb spec/lib/gitlab/jira_import/issues_importer_spec.rb spec/lib/gitlab/alert_management/alert_status_counts_spec.rb spec/lib/gitlab/ci/badge/pipeline/template_spec.rb spec/services/packages/rubygems/metadata_extraction_service_spec.rb spec/graphql/types/error_tracking/sentry_error_type_spec.rb spec/helpers/milestones_helper_spec.rb spec/lib/gitlab/kubernetes/deployment_spec.rb spec/lib/gitlab/utils/delegator_override_spec.rb spec/lib/gitlab/ci/secure_files/p12_spec.rb spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb spec/lib/gitlab/ci/build/prerequisite/factory_spec.rb spec/services/clusters/cleanup/service_account_service_spec.rb spec/lib/gitlab/import_export/project/exported_relations_merger_spec.rb spec/lib/gitlab/diff/formatters/image_formatter_spec.rb spec/lib/bulk_imports/groups/pipelines/namespace_settings_pipeline_spec.rb spec/models/application_setting/term_spec.rb spec/lib/gitlab/query_limiting/middleware_spec.rb spec/models/concerns/delete_with_limit_spec.rb spec/lib/gitlab/ci/reports/security/finding_key_spec.rb spec/lib/gitlab/lets_encrypt/order_spec.rb spec/lib/gitlab/database/migrations/test_background_runner_spec.rb spec/graphql/types/projects/base_service_type_spec.rb spec/lib/gitlab/kubernetes/namespace_spec.rb spec/models/users/ghost_user_migration_spec.rb spec/lib/gitlab/gitaly_client/health_check_service_spec.rb spec/lib/gitlab/graphql/lazy_spec.rb spec/initializers/net_http_patch_spec.rb spec/lib/gitlab/submodule_links_spec.rb spec/lib/gitlab/polling_interval_spec.rb spec/models/push_event_payload_spec.rb spec/serializers/merge_requests/pipeline_entity_spec.rb spec/lib/gitlab/github_import/issuable_finder_spec.rb spec/models/loose_foreign_keys/modification_tracker_spec.rb spec/graphql/resolvers/ci/template_resolver_spec.rb spec/lib/system_check/app/authorized_keys_permission_check_spec.rb spec/models/integrations/irker_spec.rb spec/services/users/dismiss_callout_service_spec.rb spec/lib/gitlab/database/schema_validation/structure_sql_spec.rb spec/services/users/respond_to_terms_service_spec.rb spec/lib/gitlab/ci/status/success_spec.rb spec/services/note_summary_spec.rb spec/lib/gitlab/github_import/page_counter_spec.rb spec/services/service_desk_settings/update_service_spec.rb spec/graphql/resolvers/release_milestones_resolver_spec.rb spec/lib/gitlab/ci/parsers_spec.rb spec/serializers/ci/dag_stage_entity_spec.rb spec/graphql/types/commit_signature_interface_spec.rb spec/lib/gitlab/sidekiq_signals_spec.rb spec/lib/gitlab/github_gists_import/status_spec.rb spec/models/packages/rubygems/metadatum_spec.rb spec/lib/gitlab/ci/config/entry/stages_spec.rb spec/uploaders/favicon_uploader_spec.rb spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb spec/lib/gitlab/ci/config/entry/release/assets/links_spec.rb spec/graphql/types/time_tracking/timelog_sort_enum_spec.rb spec/lib/gitlab/kubernetes/service_account_token_spec.rb spec/views/admin/application_settings/_eks.html.haml_spec.rb spec/policies/resource_state_event_policy_spec.rb spec/finders/admin/plans_finder_spec.rb spec/lib/gitlab/asset_proxy_spec.rb spec/scripts/create_pipeline_failure_incident_spec.rb spec/lib/gitlab/ci/reports/sbom/report_spec.rb spec/services/webauthn/register_service_spec.rb spec/services/members/creator_service_spec.rb spec/lib/gitlab/pagination/keyset/cursor_based_request_context_spec.rb spec/lib/api/entities/bulk_imports/entity_failure_spec.rb spec/lib/gitlab/config/entry/validatable_spec.rb spec/workers/gitlab/github_import/stage/import_attachments_worker_spec.rb spec/graphql/types/ci/runner_platform_type_spec.rb spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb spec/lib/gitlab/pagination/keyset/in_operator_optimization/column_data_spec.rb spec/graphql/types/release_asset_link_input_type_spec.rb spec/lib/api/validations/validators/git_sha_spec.rb spec/graphql/types/clusters/agent_token_status_enum_spec.rb spec/lib/api/validations/validators/array_none_any_spec.rb spec/lib/gitlab/error_tracking/processor/sanitize_error_message_processor_spec.rb spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb spec/lib/gitlab/ci/reports/security/scan_spec.rb spec/lib/forever_spec.rb spec/graphql/types/packages/helm/maintainer_type_spec.rb spec/graphql/types/work_items/widgets/labels_update_input_type_spec.rb spec/lib/gitlab/usage/metrics/names_suggestions/relation_parsers/where_constraints_spec.rb spec/lib/gitlab/usage_data_counters/base_counter_spec.rb spec/graphql/types/x509_certificate_type_spec.rb spec/lib/gitlab/metrics/dashboard/defaults_spec.rb spec/services/ci/runners/unregister_runner_service_spec.rb spec/lib/peek/views/memory_spec.rb spec/lib/gitlab/utils/execution_tracker_spec.rb spec/lib/api/helpers/open_api_spec.rb spec/views/errors/omniauth_error.html.haml_spec.rb spec/graphql/types/ci/analytics_type_spec.rb spec/lib/gitlab/database/schema_validation/validators/different_definition_indexes_spec.rb spec/graphql/types/container_repository_cleanup_status_enum_spec.rb spec/lib/microsoft_teams/activity_spec.rb spec/uploaders/uploader_helper_spec.rb spec/lib/bulk_imports/common/extractors/graphql_extractor_spec.rb spec/lib/gitlab/ci/pipeline/metrics_spec.rb spec/graphql/types/ci/pipeline_status_enum_spec.rb spec/workers/gitlab/github_import/import_collaborator_worker_spec.rb spec/graphql/types/work_items/widgets/notifications_type_spec.rb/builds/gitlab-org/gitlab/lib/gitlab.rb:47: warning: already initialized constant Gitlab::APP_DIRS_PATTERN1317/builds/gitlab-org/gitlab/lib/gitlab.rb:47: warning: previous definition of APP_DIRS_PATTERN was here1318/builds/gitlab-org/gitlab/lib/gitlab.rb:48: warning: already initialized constant Gitlab::VERSION1319/builds/gitlab-org/gitlab/lib/gitlab.rb:48: warning: previous definition of VERSION was here1320/builds/gitlab-org/gitlab/lib/gitlab.rb:49: warning: already initialized constant Gitlab::INSTALLATION_TYPE1321/builds/gitlab-org/gitlab/lib/gitlab.rb:49: warning: previous definition of INSTALLATION_TYPE was here1322/builds/gitlab-org/gitlab/lib/gitlab.rb:50: warning: already initialized constant Gitlab::HTTP_PROXY_ENV_VARS1323/builds/gitlab-org/gitlab/lib/gitlab.rb:50: warning: previous definition of HTTP_PROXY_ENV_VARS was here1324Run options: exclude {:quarantine=>true, :level=>"background_migration"}1325Test environment set up in 0.489078975 seconds1326gitlab:backup namespace rake tasks1327 lock parallel backups1328 when a process is running1329 exits the new process1330 when no processes are running1331 tasks_name: "db", rake_task: "gitlab:backup:db:restore"1332 locks the PID file1333 deletes the PID file and logs a message1334 tasks_name: "repositories", rake_task: "gitlab:backup:repo:restore"1335 locks the PID file1336 deletes the PID file and logs a message1337 tasks_name: "builds", rake_task: "gitlab:backup:builds:restore"1338 locks the PID file1339 deletes the PID file and logs a message1340 tasks_name: "uploads", rake_task: "gitlab:backup:uploads:restore"1341 locks the PID file1342 deletes the PID file and logs a message1343 tasks_name: "artifacts", rake_task: "gitlab:backup:artifacts:restore"1344 locks the PID file1345 deletes the PID file and logs a message1346 tasks_name: "pages", rake_task: "gitlab:backup:pages:restore"1347 locks the PID file1348 deletes the PID file and logs a message1349 tasks_name: "lfs", rake_task: "gitlab:backup:lfs:restore"1350 locks the PID file1351 deletes the PID file and logs a message1352 tasks_name: "terraform_state", rake_task: "gitlab:backup:terraform_state:restore"1353 locks the PID file1354 deletes the PID file and logs a message1355 tasks_name: "registry", rake_task: "gitlab:backup:registry:restore"1356 locks the PID file1357 deletes the PID file and logs a message1358 tasks_name: "packages", rake_task: "gitlab:backup:packages:restore"1359 locks the PID file1360 deletes the PID file and logs a message1361 backup_restore1362 with gitlab version1363 when restore matches gitlab version1364 invokes restoration on match1365 when the restore directory is not empty1366 removes stale data1367 when the backup is restored1368 restores the data1369 backup1370 with specific backup tasks1371 prints a progress message to stdout13722023-03-30 11:41:34 UTC -- Dumping database ... [SKIPPED]13732023-03-30 11:41:34 +0000 -- Deleting backup and restore lock file13742023-03-30 11:41:34 UTC -- Dumping repositories ... 1375{"command":"create","gl_project_path":"namespace5/project4","level":"info","msg":"started create","relative_path":"@hashed/ef/2d/ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d.git","storage_name":"default","time":"2023-03-30T11:41:34.519Z"}1376{"command":"create","gl_project_path":"namespace5/project4.wiki","level":"info","msg":"started create","relative_path":"@hashed/ef/2d/ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d.wiki.git","storage_name":"default","time":"2023-03-30T11:41:34.521Z"}1377{"command":"create","error":"manager: repository empty: repository skipped","gl_project_path":"namespace5/project4.wiki","level":"warning","msg":"skipped create","relative_path":"@hashed/ef/2d/ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d.wiki.git","storage_name":"default","time":"2023-03-30T11:41:34.526Z"}1378{"command":"create","gl_project_path":"namespace5/project4","level":"info","msg":"started create","relative_path":"@hashed/ef/2d/ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d.design.git","storage_name":"default","time":"2023-03-30T11:41:34.526Z"}1379{"command":"create","error":"manager: repository empty: repository skipped","gl_project_path":"namespace5/project4","level":"warning","msg":"skipped create","relative_path":"@hashed/ef/2d/ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d.design.git","storage_name":"default","time":"2023-03-30T11:41:34.527Z"}1380{"command":"create","gl_project_path":"namespace5/project4","level":"info","msg":"completed create","relative_path":"@hashed/ef/2d/ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d.git","storage_name":"default","time":"2023-03-30T11:41:34.631Z"}13812023-03-30 11:41:34 UTC -- Dumping repositories ... done13822023-03-30 11:41:34 +0000 -- Deleting backup and restore lock file13832023-03-30 11:41:34 UTC -- Dumping uploads ... 13842023-03-30 11:41:34 UTC -- Dumping uploads ... done13852023-03-30 11:41:34 +0000 -- Deleting backup and restore lock file13862023-03-30 11:41:34 UTC -- Dumping builds ... 13872023-03-30 11:41:34 UTC -- Dumping builds ... done13882023-03-30 11:41:34 +0000 -- Deleting backup and restore lock file13892023-03-30 11:41:34 UTC -- Dumping artifacts ... 13902023-03-30 11:41:34 UTC -- Dumping artifacts ... done13912023-03-30 11:41:34 +0000 -- Deleting backup and restore lock file13922023-03-30 11:41:34 UTC -- Dumping pages ... 13932023-03-30 11:41:34 UTC -- Dumping pages ... done13942023-03-30 11:41:34 +0000 -- Deleting backup and restore lock file13952023-03-30 11:41:34 UTC -- Dumping lfs objects ... 13962023-03-30 11:41:34 UTC -- Dumping lfs objects ... done13972023-03-30 11:41:34 +0000 -- Deleting backup and restore lock file13982023-03-30 11:41:35 UTC -- Dumping terraform states ... 13992023-03-30 11:41:35 UTC -- Dumping terraform states ... done14002023-03-30 11:41:35 +0000 -- Deleting backup and restore lock file14012023-03-30 11:41:35 UTC -- Dumping container registry images ... 14022023-03-30 11:41:35 UTC -- Dumping container registry images ... done14032023-03-30 11:41:35 +0000 -- Deleting backup and restore lock file14042023-03-30 11:41:35 UTC -- Dumping packages ... 14052023-03-30 11:41:35 UTC -- Dumping packages ... done14062023-03-30 11:41:35 +0000 -- Deleting backup and restore lock file1407 logs the progress to log file1408 backup create fails1409 backup_class: Backup::Database, rake_task: "gitlab:backup:db:create", error: #<Backup::DatabaseBackupError: Backup::DatabaseBackupError>1410 raises an error with message1411 backup_class: Backup::Files, rake_task: "gitlab:backup:builds:create", error: #<Backup::FileBackupError: Backup::FileBackupError>1412 raises an error with message1413 backup_class: Backup::Files, rake_task: "gitlab:backup:uploads:create", error: #<Backup::FileBackupError: Backup::FileBackupError>1414 raises an error with message1415 backup_class: Backup::Files, rake_task: "gitlab:backup:artifacts:create", error: #<Backup::FileBackupError: Backup::FileBackupError>1416 raises an error with message1417 backup_class: Backup::Files, rake_task: "gitlab:backup:pages:create", error: #<Backup::FileBackupError: Backup::FileBackupError>1418 raises an error with message1419 backup_class: Backup::Files, rake_task: "gitlab:backup:lfs:create", error: #<Backup::FileBackupError: Backup::FileBackupError>1420 raises an error with message1421 backup_class: Backup::Files, rake_task: "gitlab:backup:registry:create", error: #<Backup::FileBackupError: Backup::FileBackupError>1422 raises an error with message1423 with tar creation1424 sets correct permissions on the tar contents1425 deletes temp directories1426 with archive file permissions1427 sets correct permissions on the tar file1428 with custom archive_permissions1429 uses the custom permissions1430 when registry is disabled1431 does not create registry.tar.gz1432 with multiple repository storages1433 with no concurrency1434 behaves like includes repositories in all repository storages1435 aggregate_failures1436 with concurrency1437 behaves like includes repositories in all repository storages1438 aggregate_failures1439 when REPOSITORIES_STORAGES is set1440 includes repositories in default repository storage1441 with concurrency settings1442 passes through concurrency environment variables1443 when CRON env is set1444 does not output to stdout1445 skipping items in a backup1446 does not contain repositories and uploads1447 does not invoke restore of repositories and uploads1448 skipping tar archive creation1449 created files with backup content and no tar archive1450 those component files can be restored from1451 Human Readable Backup Name1452 name has human readable time1453Noteable1454 #discussions1455 includes discussions for diff notes, commit diff notes, commit notes, and regular notes1456 #commenters1457 when noteable is an issue1458 behaves like commenters1459 does not automatically include the noteable author1460 with no user1461 contains a distinct list of non-internal note authors1462 with non project member1463 contains a distinct list of non-internal note authors1464 does not include a commenter from another noteable1465 with reporter1466 contains a distinct list of non-internal note authors1467 with noteable author1468 contains a distinct list of non-internal note authors1469 when noteable is a merge request1470 behaves like commenters1471 does not automatically include the noteable author1472 with no user1473 contains a distinct list of non-internal note authors1474 with non project member1475 contains a distinct list of non-internal note authors1476 does not include a commenter from another noteable1477 #discussion_ids_relation1478 returns ordered discussion_ids1479 #discussion_root_note_ids1480 returns ordered discussion_ids and synthetic note ids1481 filters by comments only1482 filters by system notes only1483 #grouped_diff_discussions1484 includes active discussions1485 does not include outdated discussions1486 groups the discussions by line code1487 discussion status1488 #discussions_resolvable?1489 when all discussions are unresolvable1490 returns false1491 when some discussions are unresolvable and some discussions are resolvable1492 returns true1493 when all discussions are resolvable1494 returns true1495 #discussions_resolved?1496 when discussions are not resolvable1497 returns false1498 when discussions are resolvable1499 when all resolvable discussions are resolved1500 returns true1501 when some resolvable discussions are not resolved1502 returns false1503 #discussions_to_be_resolved1504 includes only discussions that need to be resolved1505 #discussions_can_be_resolved_by?1506 all discussions can be resolved by the user1507 allows a user to resolve the discussions1508 one discussion cannot be resolved by the user1509 allows a user to resolve the discussions1510 .replyable_types1511 exposes the replyable types1512 .resolvable_types1513 exposes the replyable types1514 .email_creatable_types1515 exposes the email creatable types1516 #capped_notes_count1517 notes number < 101518 the number of notes is returned1519 notes number > 101520 10 is returned1521 #has_any_diff_note_positions?1522 returns true when it has diff note positions1523 returns false when it has notes but no diff note positions1524 returns false when it has no notes1525 #creatable_note_email_address1526 incoming email enabled1527 returns the address to create a note1528 returns nil for unsupported types1529 incoming email disabled1530 returns nil1531Clusters::Cluster1532 is expected to includes the HasEnvironmentScope module1533 is expected to belong to user required: false1534 is expected to belong to management_project class_name => ::Project required: false1535 is expected to have many cluster_projects1536 is expected to have many projects1537 is expected to have many cluster_groups1538 is expected to have many groups1539 is expected to have many groups_projects1540 is expected to have one provider_gcp1541 is expected to have one provider_aws1542 is expected to have one platform_kubernetes1543 is expected to have one integration_prometheus1544 is expected to have one application_helm1545 is expected to have one application_ingress1546 is expected to have many kubernetes_namespaces1547 is expected to have one cluster_project1548 is expected to have many deployment_clusters1549 is expected to have many metrics_dashboard_annotations1550 is expected to have many successful_deployments1551 is expected to have many environments through deployments1552 is expected to delegate #status to the #provider object1553 is expected to delegate #status_reason to the #provider object1554 is expected to delegate #application_ingress_external_ip to the #application_ingress object as #external_ip1555 is expected to delegate #application_ingress_external_hostname to the #application_ingress object as #external_hostname1556 is expected to respond to #project1557 is expected to be namespace per environment1558 has default helm_major_version 31559 behaves like having unique enum values1560 has unique values in "cluster_type"1561 has unique values in "platform_type"1562 has unique values in "provider_type"1563 default values1564 is expected to eq 31565 behaves like it has loose foreign keys1566 has at least one loose foreign key definition1567 has the deletion trigger present1568 records record deletions1569 cleans up record deletions1570 applications have inverse_of: :cluster option1571 does not do a third query when referencing cluster again1572 .enabled1573 is expected to contain exactly #<Clusters::Cluster id: 5, user_id: 187, provider_type: nil, platform_type: nil, created_at: "2023-03...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1574 .disabled1575 is expected to contain exactly #<Clusters::Cluster id: 7, user_id: 189, provider_type: nil, platform_type: nil, created_at: "2023-03...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1576 .user_provided1577 is expected to contain exactly #<Clusters::Cluster id: 9, user_id: 191, provider_type: "user", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1578 .gcp_provided1579 is expected to contain exactly #<Clusters::Cluster id: 11, user_id: 193, provider_type: "gcp", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1580 .gcp_installed1581 is expected to contain exactly #<Clusters::Cluster id: 14, user_id: 196, provider_type: "gcp", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1582 .aws_provided1583 is expected to contain exactly #<Clusters::Cluster id: 17, user_id: 199, provider_type: "aws", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1584 .aws_installed1585 is expected to contain exactly #<Clusters::Cluster id: 20, user_id: 202, provider_type: "aws", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1586 .managed1587 cluster is not managed1588 is expected not to include #<Clusters::Cluster id: 22, user_id: 204, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1589 cluster is managed1590 is expected to include #<Clusters::Cluster id: 23, user_id: 205, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1591 .with_management_project1592 cluster has a management project1593 is expected to include #<Clusters::Cluster id: 24, user_id: 206, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: 170, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1594 cluster does not have a management project1595 is expected not to include #<Clusters::Cluster id: 25, user_id: 208, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1596 .with_integration_prometheus1597 cluster has prometheus application1598 is expected to include #<Clusters::Cluster id: 26, user_id: 209, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1599 cluster does not have prometheus application1600 is expected not to include #<Clusters::Cluster id: 27, user_id: 210, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1601 .distinct_with_deployed_environments1602 cluster has multiple successful deployment with environment1603 is expected to include #<Clusters::Cluster id: 28, user_id: 211, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1604 lists only distinct environments1605 cluster has only failed deployment with environment1606 is expected not to include #<Clusters::Cluster id: 28, user_id: 211, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1607 cluster does not have any deployment1608 is expected not to include #<Clusters::Cluster id: 28, user_id: 211, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1609 .with_project_http_integrations1610 project has alert service data1611 is expected to include #<Clusters::Cluster id: 29, user_id: 215, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1612 project has no alert service data1613 is expected not to include #<Clusters::Cluster id: 30, user_id: 217, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1614 .for_project_namespace1615 is expected to contain exactly #<Clusters::Cluster id: 31, user_id: 219, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1616 .with_name1617 is expected to contain exactly #<Clusters::Cluster id: 33, user_id: 223, provider_type: nil, platform_type: nil, created_at: "2023-0...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>1618 validations1619 when validates unique_environment_scope1620 for a project cluster1621 when identical environment scope exists in project1622 is expected to be falsey1623 when identical environment scope does not exist in project1624 is expected to be truthy1625 when identical environment scope exists in different project1626 is expected to be truthy1627 for a group cluster1628 when identical environment scope exists in group1629 is expected to be falsey1630 when identical environment scope does not exist in group1631 is expected to be truthy1632 when identical environment scope exists in different group1633 is expected to be truthy1634 for an instance cluster1635 identical environment scope exists1636 is expected to be falsey1637 identical environment scope does not exist1638 is expected to be truthy1639 when validates name1640 when provided by user1641 when name is empty1642 is expected to be falsey1643 when name is nil1644 is expected to be falsey1645 when name is present1646 is expected to be truthy1647 when provided by gcp1648 when name is shorter than 11649 is expected to be falsey1650 when name is longer than 631651 is expected to be falsey1652 when name includes invalid character1653 is expected to be falsey1654 when name is present1655 is expected to be truthy1656 when record is persisted1657 when name is changed1658 is expected to be falsey1659 when name is same1660 is expected to be truthy1661 when validates restrict_modification1662 when creation is on going1663 is expected to be falsey1664 when creation is done1665 is expected to be truthy1666 cluster_type validations1667 validates presence1668 project_type cluster1669 does not allow setting group1670 group_type cluster1671 does not allow setting project1672 instance_type cluster1673 does not allow setting group1674 does not allow setting project1675 domain validation1676 when cluster has domain1677 is expected to be valid1678 when cluster is not a valid hostname1679 adds an error on domain1680 when cluster does not have a domain1681 is expected to be valid1682 unique scope for management_project1683 duplicate scopes for the same management project1684 adds an error on environment_scope1685 helm_major_version can only be 2 or 31686 helm_major_version: 2, expect_valid: true1687 is expected to eq true1688 helm_major_version: 3, expect_valid: true1689 is expected to eq true1690 helm_major_version: 4, expect_valid: false1691 is expected to eq false1692 helm_major_version: -1, expect_valid: false1693 is expected to eq false1694 .ancestor_clusters_for_clusterable1695 when project does not belong to this group1696 returns nothing1697 when group has a configured kubernetes cluster1698 returns the group cluster1699 when group and instance have configured kubernetes clusters1700 returns clusters in order, descending the hierachy1701 when sub-group has configured kubernetes cluster1702 returns clusters in order, descending the hierachy1703 avoids N+1 queries1704 for a group1705 returns clusters in order for a group1706 scope chaining1707 returns nothing1708 #provider1709 when provider is gcp1710 returns a provider1711 when provider is aws1712 returns a provider1713 when provider is user1714 is expected to be nil1715 #platform1716 when platform is kubernetes1717 returns a platform1718 #first_project1719 when cluster belongs to a project1720 is expected to eq #<Project id:195 namespace195/project194>>1721 when cluster does not belong to projects1722 is expected to be nil1723 #group1724 when cluster belongs to a group1725 is expected to eq #<Group id:533 @group18>1726 when cluster does not belong to any group1727 is expected to be nil1728 .with_persisted_applications1729 preloads persisted applications1730 #persisted_applications1731 when applications are created1732 returns a list of created applications1733 #applications1734 when none of applications are created1735 returns a list of a new objects1736 when applications are created1737 returns a list of created applications1738 #find_or_build_application1739 rejects classes that are not applications1740 when none of applications are created1741 returns the new application1742 when application is persisted1743 returns the persisted application1744 #allow_user_defined_namespace?1745 project type cluster1746 gitlab managed1747 is expected to be truthy1748 not managed1749 is expected to be truthy1750 group type cluster1751 gitlab managed1752 is expected to be falsey1753 not managed1754 is expected to be truthy1755 instance type cluster1756 gitlab managed1757 is expected to be falsey1758 not managed1759 is expected to be truthy1760 #all_projects1761 cluster_type is project_type1762 returns projects1763 cluster_type is group_type1764 returns group projects1765 cluster_type is instance_type1766 returns all instance's projects1767 #kube_ingress_domain1768 with domain set in cluster1769 is expected to eq "example.com"1770 with no domain on cluster1771 with domain set at instance level1772 is expected to eq "global_domain.com"1773 #kubernetes_namespace_for1774 validates the project id1775 when environment has no last_deployable1776 is expected to eq "project200-201-the-environment-name"1777 when cluster is managed1778 returns the cached namespace if present, ignoring CI config1779 returns the default namespace when no cached namespace, ignoring CI config1780 when cluster is not managed1781 returns the cached namespace if present, regardless of CI config1782 returns the CI YAML namespace when configured1783 returns the default namespace when no namespace is configured1784 #predefined_variables1785 with an instance domain1786 includes KUBE_INGRESS_BASE_DOMAIN1787 with a cluster domain1788 includes KUBE_INGRESS_BASE_DOMAIN1789 with no domain1790 returns an empty array1791 #provided_by_user?1792 with a GCP provider1793 is expected to be falsy1794 with an user provider1795 is expected to be truthy1796 #status_name1797 the cluster has a provider1798 is expected to eq :errored1799 when cluster cleanup is ongoing1800 status_name: :errored, cleanup_status: :cleanup_not_started1801 returns cleanup_ongoing when uninstalling applications1802 status_name: :cleanup_ongoing, cleanup_status: :cleanup_removing_project_namespaces1803 returns cleanup_ongoing when uninstalling applications1804 status_name: :cleanup_ongoing, cleanup_status: :cleanup_removing_service_account1805 returns cleanup_ongoing when uninstalling applications1806 status_name: :cleanup_errored, cleanup_status: :cleanup_errored1807 returns cleanup_ongoing when uninstalling applications1808 there is a cached connection status1809 is expected to eq :connected1810 there is no connection status in the cache1811 is expected to eq :created1812 cleanup_status state_machine1813 #start_cleanup!1814 when cleanup_status is cleanup_not_started1815 behaves like cleanup_status transition1816 transitions cleanup_status correctly1817 schedules a Clusters::Cleanup::*Worker1818 when cleanup_status is errored1819 behaves like cleanup_status transition1820 transitions cleanup_status correctly1821 schedules a Clusters::Cleanup::*Worker1822 #make_cleanup_errored!1823 transitions cleanup_status from cleanup_not_started to cleanup_errored1824 sets error message1825 transitions cleanup_status from cleanup_removing_project_namespaces to cleanup_errored1826 sets error message1827 transitions cleanup_status from cleanup_removing_service_account to cleanup_errored1828 sets error message1829 #continue_cleanup!1830 behaves like cleanup_status transition1831 transitions cleanup_status correctly1832 schedules a Clusters::Cleanup::*Worker1833 #connection_status1834 is expected to be nil1835 with a cached status1836 is expected to eq :connected1837 #connection_error1838 is expected to be nil1839 with a cached status1840 is expected to eq :unknown_error1841 #node_connection_error1842 is expected to be nil1843 with a cached status1844 is expected to eq :unknown_error1845 #metrics_connection_error1846 is expected to be nil1847 with a cached status1848 is expected to eq :unknown_error1849 #nodes1850 is expected to be nil1851 with a cached status1852 is expected to eq [{"metadata"=>{"name"=>"gke-cluster-applications-default-pool-49b7f225-v527"}, "status"=>{"allocatable"=>{"cpu"=>"1930m", "memory"=>"5777164Ki"}, "capacity"=>{"cpu"=>"2", "memory"=>"7657228Ki"}}}]1853 #calculate_reactive_cache1854 cluster is disabled1855 does not populate the cache1856 cluster is enabled1857 connection to the cluster is successful1858 is expected to eq {:connection_status=>:connected, :nodes=>[{"metadata"=>{"name"=>"gke-cluster-applications-default-poo...ity"=>{"cpu"=>"2", "memory"=>"7657228Ki"}}, "usage"=>{"cpu"=>"144208668n", "memory"=>"1789048Ki"}}]}1859 cluster cannot be reached1860 is expected to eq {:connection_error=>:connection_error, :connection_status=>:unreachable}1861 cluster cannot be authenticated to1862 is expected to eq {:connection_error=>:authentication_error, :connection_status=>:authentication_failure}1863 Kubeclient::HttpError1864 is expected to eq {:connection_error=>:http_error, :connection_status=>:authentication_failure}1865 generic timeout1866 is expected to eq {:connection_error=>:http_error, :connection_status=>:unreachable}1867 gateway timeout1868 is expected to eq {:connection_error=>:http_error, :connection_status=>:unreachable}1869 an uncategorised error is raised1870 is expected to eq {:connection_error=>:unknown_error, :connection_status=>:unknown_failure}1871 notifies Sentry1872 #integration_prometheus_available?1873 is expected to be falsey1874 when integration is enabled1875 is expected to be truthy1876 when integration is disabled1877 is expected to be falsey1878 #prometheus_adapter1879 returns nothing1880 has integration_prometheus1881 returns the integration1882 #delete_cached_resources!1883 deletes associated namespace records1884 #clusterable1885 project type1886 is expected to eq #<Project id:215 namespace215/project214>>1887 group type1888 is expected to eq #<Group id:701 @group28>1889 instance type1890 is expected to be a kind of Clusters::Instance1891 unknown type1892 raises NotImplementedError1893 #on_creation?1894 without provider1895 is expected to eq false1896 with provider1897 with on_creation? set to true1898 is expected to eq true1899 with on_creation? set to false1900 is expected to eq false1901 #platform_kubernetes_active?1902 without platform_kubernetes1903 is expected to eq false1904 with platform_kubernetes1905 with active? set to true1906 is expected to eq true1907 with active? set to false1908 is expected to eq false1909 #platform_kubernetes_rbac?1910 without platform_kubernetes1911 is expected to eq false1912 with platform_kubernetes1913 with rbac? set to true1914 is expected to eq true1915 with rbac? set to false1916 is expected to eq false1917 #application_helm_available?1918 without application_helm1919 is expected to eq false1920 with application_helm1921 with available? set to true1922 is expected to eq true1923 with available? set to false1924 is expected to eq false1925 #application_ingress_available?1926 without application_ingress1927 is expected to eq false1928 with application_ingress1929 with available? set to true1930 is expected to eq true1931 with available? set to false1932 is expected to eq false1933Gitlab::Database::MigrationHelpers1934 overridden dynamic model helpers1935 #define_batchable_model1936 defines a batchable model with the migration connection1937 #each_batch1938 calls each_batch with the migration connection1939 #each_batch_range1940 calls each_batch with the migration connection1941 #remove_timestamps1942 can remove the default timestamps1943 can remove custom timestamps1944 #add_timestamps_with_timezone1945 adds "created_at" and "updated_at" fields with the "datetime_with_timezone" data type1946 can disable the NOT NULL constraint1947 can add just one column1948 can add choice of acceptable columns1949 cannot add unacceptable column names1950 #add_concurrent_index1951 outside a transaction1952 creates the index concurrently1953 creates unique index concurrently1954 unprepares the async index creation1955 when the index exists and is valid1956 does leaves the existing index1957 when an invalid copy of the index exists1958 when the default name is used1959 drops and recreates the index1960 when a custom name is used1961 drops and recreates the index1962 when a qualified table name is used1963 drops and recreates the index1964 when targeting a partition table1965 when allow_partition is true1966 creates the index concurrently1967 when allow_partition is not provided1968 raises ArgumentError1969 inside a transaction1970 raises RuntimeError1971 #remove_concurrent_index1972 outside a transaction1973 by column name1974 removes the index concurrently1975 does nothing if the index does not exist1976 unprepares the async index creation1977 when targeting a partition table1978 when dropping an index on the partition table1979 raises ArgumentError1980 by index name1981 removes the index concurrently by index name1982 does nothing if the index does not exist1983 removes the index with keyword arguments1984 raises an error if the index is blank1985 unprepares the async index creation1986 when targeting a partition table1987 when dropping an index on the partition table1988 raises ArgumentError1989 inside a transaction1990 raises RuntimeError1991 #remove_foreign_key_if_exists1992 when the foreign key does not exist1993 does nothing1994 when the foreign key exists1995 removes the foreign key1996 when the target table is not given1997 passes the options as the second parameter1998 when the reverse_lock_order option is given1999 requests for lock before removing the foreign key2000 when not inside a transaction2001 does not lock2002 #add_concurrent_foreign_key2003 inside a transaction2004 raises an error2005 outside a transaction2006 target column2007 defaults to (id) when no custom target column is provided2008 references the custom taget column when provided2009 ON DELETE statements2010 on_delete: :nullify2011 appends ON DELETE SET NULL statement2012 on_delete: :cascade2013 appends ON DELETE CASCADE statement2014 on_delete: nil2015 appends no ON DELETE statement2016 ON UPDATE statements2017 on_update: :nullify2018 appends ON UPDATE SET NULL statement2019 on_update: :cascade2020 appends ON UPDATE CASCADE statement2021 on_update: nil2022 appends no ON UPDATE statement2023 when on_update is not provided2024 appends no ON UPDATE statement2025 when no custom key name is supplied2026 creates a concurrent foreign key and validates it2027 does not create a foreign key if it exists already2028 when a custom key name is supplied2029 for creating a new foreign key for a column that does not presently exist2030 creates a new foreign key2031 for creating a duplicate foreign key for a column that presently exists2032 when the supplied key name is the same as the existing foreign key name2033 does not create a new foreign key2034 when the supplied key name is different from the existing foreign key name2035 creates a new foreign key2036 validate option2037 when validate is supplied with a falsey value2038 behaves like skips validation2039 skips validation2040 behaves like skips validation2041 skips validation2042 when validate is supplied with a truthy value2043 behaves like performs validation2044 performs validation2045 behaves like performs validation2046 performs validation2047 when validate is not supplied2048 behaves like performs validation2049 performs validation2050 when the reverse_lock_order flag is set2051 explicitly locks the tables in target-source order2052 when creating foreign key for a group of columns2053 references the custom target columns when provided2054 when foreign key is already defined2055 does not create foreign key2056 when creating foreign key on a partitioned table2057 creates the FK without using NOT VALID2058 raises an error if allow_partitioned is not set2059 when the reverse_lock_order flag is set2060 explicitly locks the tables in target-source order2061 #validate_foreign_key2062 when name is provided2063 does not infer the foreign key constraint name2064 when name is not provided2065 infers the foreign key constraint name2066 when the inferred foreign key constraint does not exist2067 raises an error2068 #concurrent_foreign_key_name2069 returns the name for a foreign key2070 when using multiple columns2071 returns the name of the foreign key2072 #foreign_key_exists?2073 compares by target table if no column given2074 raises an error if an invalid on_delete is specified2075 without specifying a target table2076 behaves like foreign key checks2077 finds existing foreign keys by column2078 finds existing foreign keys by name2079 finds existing foreign_keys by name and column2080 finds existing foreign_keys by name, column and on_delete2081 finds existing foreign keys by target table only2082 finds existing foreign_keys by identifier2083 compares by column name if given2084 compares by target column name if given2085 compares by foreign key name if given2086 compares by foreign key name and column if given2087 compares by foreign key name, column and on_delete if given2088 specifying a target table2089 behaves like foreign key checks2090 finds existing foreign keys by column2091 finds existing foreign keys by name2092 finds existing foreign_keys by name and column2093 finds existing foreign_keys by name, column and on_delete2094 finds existing foreign keys by target table only2095 finds existing foreign_keys by identifier2096 compares by column name if given2097 compares by target column name if given2098 compares by foreign key name if given2099 compares by foreign key name and column if given2100 compares by foreign key name, column and on_delete if given2101 if the schema cache does not include the constrained_columns column2102-- transaction()2103main: -- execute("DROP VIEW IF EXISTS postgres_foreign_keys;\nCREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\nWHERE contype = 'f';\n")2104main: -> 0.0042s2105main: -- execute("CREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier,\n constrained_table.relname::text AS constrained_table_name,\n referenced_table.relname::text AS referenced_table_name,\n constrained_cols.constrained_columns,\n referenced_cols.referenced_columns,\n pg_constraint.confdeltype AS on_delete_action,\n pg_constraint.coninhcount > 0 as is_inherited\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY conkey.idx) -- must order here so that attributes are in correct order in array\n FROM unnest(pg_constraint.conkey) WITH ORDINALITY conkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = conkey.attnum AND pg_attribute.attrelid = constrained_table.oid\n ) constrained_cols(constrained_columns)\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY confkey.idx)\n FROM unnest(pg_constraint.confkey) WITH ORDINALITY confkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = confkey.attnum AND pg_attribute.attrelid = referenced_table.oid\n ) referenced_cols(referenced_columns)\nWHERE contype = 'f';\n")2106main: -> 0.0056s2107 -> 0.0692s2108 correctly sets up the test without the column in the columns_hash2109 behaves like foreign key checks2110-- transaction()2111main: -- execute("DROP VIEW IF EXISTS postgres_foreign_keys;\nCREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\nWHERE contype = 'f';\n")2112main: -> 0.0045s2113main: -- execute("CREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier,\n constrained_table.relname::text AS constrained_table_name,\n referenced_table.relname::text AS referenced_table_name,\n constrained_cols.constrained_columns,\n referenced_cols.referenced_columns,\n pg_constraint.confdeltype AS on_delete_action,\n pg_constraint.coninhcount > 0 as is_inherited\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY conkey.idx) -- must order here so that attributes are in correct order in array\n FROM unnest(pg_constraint.conkey) WITH ORDINALITY conkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = conkey.attnum AND pg_attribute.attrelid = constrained_table.oid\n ) constrained_cols(constrained_columns)\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY confkey.idx)\n FROM unnest(pg_constraint.confkey) WITH ORDINALITY confkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = confkey.attnum AND pg_attribute.attrelid = referenced_table.oid\n ) referenced_cols(referenced_columns)\nWHERE contype = 'f';\n")2114main: -> 0.0056s2115 -> 0.0803s2116 finds existing foreign keys by column2117-- transaction()2118main: -- execute("DROP VIEW IF EXISTS postgres_foreign_keys;\nCREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\nWHERE contype = 'f';\n")2119main: -> 0.0042s2120main: -- execute("CREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier,\n constrained_table.relname::text AS constrained_table_name,\n referenced_table.relname::text AS referenced_table_name,\n constrained_cols.constrained_columns,\n referenced_cols.referenced_columns,\n pg_constraint.confdeltype AS on_delete_action,\n pg_constraint.coninhcount > 0 as is_inherited\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY conkey.idx) -- must order here so that attributes are in correct order in array\n FROM unnest(pg_constraint.conkey) WITH ORDINALITY conkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = conkey.attnum AND pg_attribute.attrelid = constrained_table.oid\n ) constrained_cols(constrained_columns)\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY confkey.idx)\n FROM unnest(pg_constraint.confkey) WITH ORDINALITY confkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = confkey.attnum AND pg_attribute.attrelid = referenced_table.oid\n ) referenced_cols(referenced_columns)\nWHERE contype = 'f';\n")2121main: -> 0.0058s2122 -> 0.0796s2123 finds existing foreign keys by name2124-- transaction()2125main: -- execute("DROP VIEW IF EXISTS postgres_foreign_keys;\nCREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\nWHERE contype = 'f';\n")2126main: -> 0.0044s2127main: -- execute("CREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier,\n constrained_table.relname::text AS constrained_table_name,\n referenced_table.relname::text AS referenced_table_name,\n constrained_cols.constrained_columns,\n referenced_cols.referenced_columns,\n pg_constraint.confdeltype AS on_delete_action,\n pg_constraint.coninhcount > 0 as is_inherited\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY conkey.idx) -- must order here so that attributes are in correct order in array\n FROM unnest(pg_constraint.conkey) WITH ORDINALITY conkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = conkey.attnum AND pg_attribute.attrelid = constrained_table.oid\n ) constrained_cols(constrained_columns)\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY confkey.idx)\n FROM unnest(pg_constraint.confkey) WITH ORDINALITY confkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = confkey.attnum AND pg_attribute.attrelid = referenced_table.oid\n ) referenced_cols(referenced_columns)\nWHERE contype = 'f';\n")2128main: -> 0.0057s2129 -> 0.0808s2130 finds existing foreign_keys by name and column2131-- transaction()2132main: -- execute("DROP VIEW IF EXISTS postgres_foreign_keys;\nCREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\nWHERE contype = 'f';\n")2133main: -> 0.0046s2134main: -- execute("CREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier,\n constrained_table.relname::text AS constrained_table_name,\n referenced_table.relname::text AS referenced_table_name,\n constrained_cols.constrained_columns,\n referenced_cols.referenced_columns,\n pg_constraint.confdeltype AS on_delete_action,\n pg_constraint.coninhcount > 0 as is_inherited\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY conkey.idx) -- must order here so that attributes are in correct order in array\n FROM unnest(pg_constraint.conkey) WITH ORDINALITY conkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = conkey.attnum AND pg_attribute.attrelid = constrained_table.oid\n ) constrained_cols(constrained_columns)\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY confkey.idx)\n FROM unnest(pg_constraint.confkey) WITH ORDINALITY confkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = confkey.attnum AND pg_attribute.attrelid = referenced_table.oid\n ) referenced_cols(referenced_columns)\nWHERE contype = 'f';\n")2135main: -> 0.0057s2136 -> 0.0798s2137 finds existing foreign_keys by name, column and on_delete2138-- transaction()2139main: -- execute("DROP VIEW IF EXISTS postgres_foreign_keys;\nCREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\nWHERE contype = 'f';\n")2140main: -> 0.0042s2141main: -- execute("CREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier,\n constrained_table.relname::text AS constrained_table_name,\n referenced_table.relname::text AS referenced_table_name,\n constrained_cols.constrained_columns,\n referenced_cols.referenced_columns,\n pg_constraint.confdeltype AS on_delete_action,\n pg_constraint.coninhcount > 0 as is_inherited\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY conkey.idx) -- must order here so that attributes are in correct order in array\n FROM unnest(pg_constraint.conkey) WITH ORDINALITY conkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = conkey.attnum AND pg_attribute.attrelid = constrained_table.oid\n ) constrained_cols(constrained_columns)\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY confkey.idx)\n FROM unnest(pg_constraint.confkey) WITH ORDINALITY confkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = confkey.attnum AND pg_attribute.attrelid = referenced_table.oid\n ) referenced_cols(referenced_columns)\nWHERE contype = 'f';\n")2142main: -> 0.0056s2143 -> 0.0788s2144 finds existing foreign keys by target table only2145-- transaction()2146main: -- execute("DROP VIEW IF EXISTS postgres_foreign_keys;\nCREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\nWHERE contype = 'f';\n")2147main: -> 0.0041s2148main: -- execute("CREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier,\n constrained_table.relname::text AS constrained_table_name,\n referenced_table.relname::text AS referenced_table_name,\n constrained_cols.constrained_columns,\n referenced_cols.referenced_columns,\n pg_constraint.confdeltype AS on_delete_action,\n pg_constraint.coninhcount > 0 as is_inherited\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY conkey.idx) -- must order here so that attributes are in correct order in array\n FROM unnest(pg_constraint.conkey) WITH ORDINALITY conkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = conkey.attnum AND pg_attribute.attrelid = constrained_table.oid\n ) constrained_cols(constrained_columns)\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY confkey.idx)\n FROM unnest(pg_constraint.confkey) WITH ORDINALITY confkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = confkey.attnum AND pg_attribute.attrelid = referenced_table.oid\n ) referenced_cols(referenced_columns)\nWHERE contype = 'f';\n")2149main: -> 0.0057s2150 -> 0.0777s2151 finds existing foreign_keys by identifier2152-- transaction()2153main: -- execute("DROP VIEW IF EXISTS postgres_foreign_keys;\nCREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\nWHERE contype = 'f';\n")2154main: -> 0.0043s2155main: -- execute("CREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier,\n constrained_table.relname::text AS constrained_table_name,\n referenced_table.relname::text AS referenced_table_name,\n constrained_cols.constrained_columns,\n referenced_cols.referenced_columns,\n pg_constraint.confdeltype AS on_delete_action,\n pg_constraint.coninhcount > 0 as is_inherited\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY conkey.idx) -- must order here so that attributes are in correct order in array\n FROM unnest(pg_constraint.conkey) WITH ORDINALITY conkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = conkey.attnum AND pg_attribute.attrelid = constrained_table.oid\n ) constrained_cols(constrained_columns)\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY confkey.idx)\n FROM unnest(pg_constraint.confkey) WITH ORDINALITY confkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = confkey.attnum AND pg_attribute.attrelid = referenced_table.oid\n ) referenced_cols(referenced_columns)\nWHERE contype = 'f';\n")2156main: -> 0.0057s2157 -> 0.0792s2158 compares by column name if given2159-- transaction()2160main: -- execute("DROP VIEW IF EXISTS postgres_foreign_keys;\nCREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\nWHERE contype = 'f';\n")2161main: -> 0.0044s2162main: -- execute("CREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier,\n constrained_table.relname::text AS constrained_table_name,\n referenced_table.relname::text AS referenced_table_name,\n constrained_cols.constrained_columns,\n referenced_cols.referenced_columns,\n pg_constraint.confdeltype AS on_delete_action,\n pg_constraint.coninhcount > 0 as is_inherited\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY conkey.idx) -- must order here so that attributes are in correct order in array\n FROM unnest(pg_constraint.conkey) WITH ORDINALITY conkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = conkey.attnum AND pg_attribute.attrelid = constrained_table.oid\n ) constrained_cols(constrained_columns)\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY confkey.idx)\n FROM unnest(pg_constraint.confkey) WITH ORDINALITY confkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = confkey.attnum AND pg_attribute.attrelid = referenced_table.oid\n ) referenced_cols(referenced_columns)\nWHERE contype = 'f';\n")2163main: -> 0.0059s2164 -> 0.0874s2165 compares by target column name if given2166-- transaction()2167main: -- execute("DROP VIEW IF EXISTS postgres_foreign_keys;\nCREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\nWHERE contype = 'f';\n")2168main: -> 0.0041s2169main: -- execute("CREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier,\n constrained_table.relname::text AS constrained_table_name,\n referenced_table.relname::text AS referenced_table_name,\n constrained_cols.constrained_columns,\n referenced_cols.referenced_columns,\n pg_constraint.confdeltype AS on_delete_action,\n pg_constraint.coninhcount > 0 as is_inherited\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY conkey.idx) -- must order here so that attributes are in correct order in array\n FROM unnest(pg_constraint.conkey) WITH ORDINALITY conkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = conkey.attnum AND pg_attribute.attrelid = constrained_table.oid\n ) constrained_cols(constrained_columns)\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY confkey.idx)\n FROM unnest(pg_constraint.confkey) WITH ORDINALITY confkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = confkey.attnum AND pg_attribute.attrelid = referenced_table.oid\n ) referenced_cols(referenced_columns)\nWHERE contype = 'f';\n")2170main: -> 0.0055s2171 -> 0.0780s2172 compares by foreign key name if given2173-- transaction()2174main: -- execute("DROP VIEW IF EXISTS postgres_foreign_keys;\nCREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\nWHERE contype = 'f';\n")2175main: -> 0.0039s2176main: -- execute("CREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier,\n constrained_table.relname::text AS constrained_table_name,\n referenced_table.relname::text AS referenced_table_name,\n constrained_cols.constrained_columns,\n referenced_cols.referenced_columns,\n pg_constraint.confdeltype AS on_delete_action,\n pg_constraint.coninhcount > 0 as is_inherited\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY conkey.idx) -- must order here so that attributes are in correct order in array\n FROM unnest(pg_constraint.conkey) WITH ORDINALITY conkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = conkey.attnum AND pg_attribute.attrelid = constrained_table.oid\n ) constrained_cols(constrained_columns)\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY confkey.idx)\n FROM unnest(pg_constraint.confkey) WITH ORDINALITY confkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = confkey.attnum AND pg_attribute.attrelid = referenced_table.oid\n ) referenced_cols(referenced_columns)\nWHERE contype = 'f';\n")2177main: -> 0.0057s2178 -> 0.0768s2179 compares by foreign key name and column if given2180-- transaction()2181main: -- execute("DROP VIEW IF EXISTS postgres_foreign_keys;\nCREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\nWHERE contype = 'f';\n")2182main: -> 0.0040s2183main: -- execute("CREATE OR REPLACE VIEW postgres_foreign_keys AS\nSELECT\n pg_constraint.oid AS oid,\n pg_constraint.conname AS name,\n constrained_namespace.nspname::text || '.'::text || constrained_table.relname::text AS constrained_table_identifier,\n referenced_namespace.nspname::text || '.'::text || referenced_table.relname::text AS referenced_table_identifier,\n constrained_table.relname::text AS constrained_table_name,\n referenced_table.relname::text AS referenced_table_name,\n constrained_cols.constrained_columns,\n referenced_cols.referenced_columns,\n pg_constraint.confdeltype AS on_delete_action,\n pg_constraint.coninhcount > 0 as is_inherited\nFROM pg_constraint\n INNER JOIN pg_class constrained_table ON constrained_table.oid = pg_constraint.conrelid\n INNER JOIN pg_class referenced_table ON referenced_table.oid = pg_constraint.confrelid\n INNER JOIN pg_namespace constrained_namespace ON constrained_table.relnamespace = constrained_namespace.oid\n INNER JOIN pg_namespace referenced_namespace ON referenced_table.relnamespace = referenced_namespace.oid\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY conkey.idx) -- must order here so that attributes are in correct order in array\n FROM unnest(pg_constraint.conkey) WITH ORDINALITY conkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = conkey.attnum AND pg_attribute.attrelid = constrained_table.oid\n ) constrained_cols(constrained_columns)\n CROSS JOIN LATERAL (\n SELECT array_agg(pg_attribute.attname ORDER BY confkey.idx)\n FROM unnest(pg_constraint.confkey) WITH ORDINALITY confkey(attnum, idx)\n INNER JOIN pg_attribute ON pg_attribute.attnum = confkey.attnum AND pg_attribute.attrelid = referenced_table.oid\n ) referenced_cols(referenced_columns)\nWHERE contype = 'f';\n")2184main: -> 0.0058s2185 -> 0.0788s2186 compares by foreign key name, column and on_delete if given2187 with foreign key using multiple columns2188 finds existing foreign keys by columns2189 finds existing foreign keys by name2190 finds existing foreign_keys by name and column2191 finds existing foreign_keys by name, column and on_delete2192 finds existing foreign keys by target table only2193 compares by column name if given2194 compares by target column name if given2195 compares by foreign key name if given2196 compares by foreign key name and column if given2197 compares by foreign key name, column and on_delete if given2198 #true_value2199 returns the appropriate value2200 #false_value2201 returns the appropriate value2202 #update_column_in_batches2203 when running outside of a transaction2204 updates all the rows in a table2205 updates boolean values correctly2206 when a block is supplied2207 yields an Arel table and query object to the supplied block2208 when the value is Arel.sql (Arel::Nodes::SqlLiteral)2209 updates the value as a SQL expression2210 when the table is write-locked2211 disables the write-lock trigger function2212 raises an error if it does not disable the trigger function2213 when running inside the transaction2214 raises RuntimeError2215 #rename_column_concurrently2216 in a transaction2217 raises RuntimeError2218 outside a transaction2219 when the column to rename exists2220 renames a column concurrently2221 passes the batch_column_name2222 passes the type_cast_function2223 raises an error with invalid batch_column_name2224 with existing records and type casting2225 copies the value to the new column using the type_cast_function2226 when default is false2227 copies the default to the new column2228 when the table in the other database is write-locked2229 does not raise an error when renaming the column2230 when the column to be renamed does not exist2231 raises an error with appropriate message2232 #undo_rename_column_concurrently2233 reverses the operations of rename_column_concurrently2234 #cleanup_concurrent_column_rename2235 cleans up the renaming procedure2236 #undo_cleanup_concurrent_column_rename2237 in a transaction2238 raises RuntimeError2239 outside a transaction2240 reverses the operations of cleanup_concurrent_column_rename2241 passes the batch_column_name2242 raises an error with invalid batch_column_name2243 when default is false2244 copies the default to the old column2245 #change_column_type_concurrently2246 changes the column type2247 passed the batch column name2248 with type cast2249 changes the column type with casting the value to the new type2250 #undo_change_column_type_concurrently2251 reverses the operations of change_column_type_concurrently2252 #cleanup_concurrent_column_type_change2253 cleans up the type changing procedure2254 #undo_cleanup_concurrent_column_type_change2255 in a transaction2256 raises RuntimeError2257 outside a transaction2258 reverses the operations of cleanup_concurrent_column_type_change2259 passes the type_cast_function, batch_column_name and limit2260 raises an error with invalid batch_column_name2261 #install_rename_triggers2262 installs the triggers2263 #remove_rename_triggers2264 removes the function and trigger2265 #rename_trigger_name2266 returns a String2267 #indexes_for2268 returns the indexes for a column2269 #foreign_keys_for2270 returns the foreign keys for a column2271 #copy_indexes2272 using a regular index using a single column2273 copies the index2274 using a regular index with multiple columns2275 copies the index2276 using an index with a WHERE clause2277 copies the index2278 using an index with a USING clause2279 copies the index2280 using an index with custom operator classes2281 copies the index2282 using an index with multiple columns and custom operator classes2283 copies the index2284 using an index with multiple columns and a custom operator class on the non affected column2285 copies the index2286 using an index of which the name does not contain the source column2287 raises RuntimeError2288 #copy_foreign_keys2289 copies foreign keys from one column to another2290 #column_for2291 returns a column object for an existing column2292 raises an error when a column does not exist2293 #replace_sql2294 builds the sql with correct functions2295 results2296 replaces the correct part of the string2297 #check_trigger_permissions!2298 does nothing when the user has the correct permissions2299 raises RuntimeError when the user does not have the correct permissions2300 #convert_to_bigint_column2301 returns the name of the temporary column used to convert to bigint2302 #convert_to_type_column2303 returns the name of the temporary column used to convert to bigint2304 returns the name of the temporary column used to convert to uuid2305 #create_temporary_columns_and_triggers2306 when no mappings are provided2307 raises an error2308 when any of the mappings does not have the required keys2309 raises an error2310 when the target table does not exist2311 raises an error2312 when the column to migrate does not exist2313 raises an error2314 when old_bigint_column_naming is true2315 calls convert_to_bigint_column2316 when old_bigint_column_naming is false2317 calls convert_to_type_column2318 #initialize_conversion_of_integer_to_bigint2319 when the target table does not exist2320 raises an error2321 when the primary key does not exist2322 raises an error2323 when the column to migrate does not exist2324 raises an error2325 when the column to convert is the primary key2326 creates a not-null bigint column and installs triggers2327 when the column to convert is not the primary key, but non-nullable2328 creates a not-null bigint column and installs triggers2329 when the column to convert is not the primary key, but nullable2330 creates a nullable bigint column and installs triggers2331 when multiple columns are given2332 creates the correct columns and installs the trigger2333 #restore_conversion_of_integer_to_bigint2334 when the target table does not exist2335 raises an error2336 when the column to migrate does not exist2337 raises an error2338 when a single column is given2339 creates the correct columns and installs the trigger2340 when multiple columns are given2341 creates the correct columns and installs the trigger2342 #revert_initialize_conversion_of_integer_to_bigint2343 when single column is given2344 removes column, trigger, and function2345 when multiple columns are given2346 removes column, trigger, and function2347 #backfill_conversion_of_integer_to_bigint2348 when the target table does not exist2349 raises an error2350 when the primary key does not exist2351 raises an error2352 when the column to convert does not exist2353 raises an error2354 when the temporary column does not exist2355 raises an error2356 when the conversion is properly initialized2357 when a single column is being converted2358 creates the batched migration tracking record2359 when multiple columns are being converted2360 creates the batched migration tracking record2361 #revert_backfill_conversion_of_integer_to_bigint2362 when a single column is being converted2363 deletes the batched migration tracking record2364 when a multiple columns are being converted2365 deletes the batched migration tracking record2366 when primary key column has custom name2367 deletes the batched migration tracking record2368 #index_exists_by_name?2369 returns true if an index exists2370 returns false if the index does not exist2371 when an index with a function exists2372 returns true if an index exists2373 when an index exists for a table with the same name in another schema2374 returns false if the index does not exist in the current schema2375 #create_or_update_plan_limit2376 properly escapes names2377 when plan does not exist2378 does not create any plan limits2379 when plan does exist2380 when limit does not exist2381 inserts a new plan limits2382 when limit does exist2383 updates an existing plan limits2384 #backfill_iids2385 generates iids properly for models created after the migration2386 generates iids properly for models created after the migration when iids are backfilled2387 generates iids properly for models created after the migration across multiple projects2388 when the first model is created for a project after the migration2389 generates an iid2390 when a row already has an iid set in the database2391 backfills iids2392 backfills for multiple projects2393 #add_primary_key_using_index2394 executes the statement to add the primary key2395 when changing the primary key of a given table2396 #swap_primary_key2397 executes statements to swap primary key2398 when new index does not exist2399 raises ActiveRecord::StatementInvalid2400 #unswap_primary_key2401 executes statements to unswap primary key2402 #drop_sequence2403 executes the statement to drop the sequence2404 #add_sequence2405 executes the statement to add the sequence2406 #partition?2407 when a partition table exist2408 when the view postgres_partitions exists2409 calls the view2410 when the view postgres_partitions does not exist2411 does not call the view2412 when a partition table does not exist2413 is expected to be falsey2414 #table_partitioned?2415 is expected to be truthy2416 with a non-partitioned table2417 is expected to be falsey2418Gitlab::GithubImport::Importer::ProtectedBranchImporter2419 # order random2420 #execute2421 when branch is protected on GitLab2422 allow_force_pushes_on_github: true, allow_force_pushes_on_gitlab: true, expected_allow_force_push: true2423 behaves like create branch protection by the strictest ruleset2424 calls service with the correct arguments2425 creates protected branch and access levels for given github rule2426 allow_force_pushes_on_github: true, allow_force_pushes_on_gitlab: false, expected_allow_force_push: false2427 behaves like create branch protection by the strictest ruleset2428 calls service with the correct arguments2429 creates protected branch and access levels for given github rule2430 allow_force_pushes_on_github: false, allow_force_pushes_on_gitlab: true, expected_allow_force_push: false2431 behaves like create branch protection by the strictest ruleset2432 calls service with the correct arguments2433 creates protected branch and access levels for given github rule2434 allow_force_pushes_on_github: false, allow_force_pushes_on_gitlab: false, expected_allow_force_push: false2435 behaves like create branch protection by the strictest ruleset2436 calls service with the correct arguments2437 creates protected branch and access levels for given github rule2438 when branch is not protected on GitLab2439 behaves like create branch protection by the strictest ruleset2440 calls service with the correct arguments2441 creates protected branch and access levels for given github rule2442 when branch is default2443 when "allow force pushes - everyone" rule is enabled2444 when there is any default branch protection2445 behaves like create branch protection by the strictest ruleset2446 calls service with the correct arguments2447 creates protected branch and access levels for given github rule2448 when there is no default branch protection2449 behaves like create branch protection by the strictest ruleset2450 calls service with the correct arguments2451 creates protected branch and access levels for given github rule2452 when required_conversation_resolution rule is enabled2453 changes project settings2454 when required_conversation_resolution rule is disabled2455 behaves like does not change project attributes2456 does not change only_allow_merge_if_all_discussions_are_resolved2457 does not change push_rule for the project2458 when required_signatures rule is enabled2459 when the push_rules feature is not available2460 behaves like does not change project attributes2461 does not change only_allow_merge_if_all_discussions_are_resolved2462 does not change push_rule for the project2463 when required_signatures rule is disabled2464 behaves like does not change project attributes2465 does not change only_allow_merge_if_all_discussions_are_resolved2466 does not change push_rule for the project2467 when branch is not default2468 when required_conversation_resolution rule is enabled2469 behaves like does not change project attributes2470 does not change only_allow_merge_if_all_discussions_are_resolved2471 does not change push_rule for the project2472 when required_conversation_resolution rule is disabled2473 behaves like does not change project attributes2474 does not change only_allow_merge_if_all_discussions_are_resolved2475 does not change push_rule for the project2476 when required_signatures rule is enabled2477 behaves like does not change project attributes2478 does not change only_allow_merge_if_all_discussions_are_resolved2479 does not change push_rule for the project2480 when required_signatures rule is disabled2481 behaves like does not change project attributes2482 does not change only_allow_merge_if_all_discussions_are_resolved2483 does not change push_rule for the project2484 when required_pull_request_reviews rule is enabled on GitHub2485 when no user is allowed to bypass push restrictions2486 behaves like create branch protection by the strictest ruleset2487 calls service with the correct arguments2488 creates protected branch and access levels for given github rule2489 when there are users who are allowed to bypass push restrictions2490 when the protected_refs_for_users feature is not available2491 behaves like create branch protection by the strictest ruleset2492 calls service with the correct arguments2493 creates protected branch and access levels for given github rule2494 when required_pull_request_reviews rule is disabled on GitHub2495 when branch is default2496 when default branch protection = Gitlab::Access::PROTECTION_DEV_CAN_PUSH2497 behaves like create branch protection by the strictest ruleset2498 calls service with the correct arguments2499 creates protected branch and access levels for given github rule2500 when default branch protection = Gitlab::Access::PROTECTION_DEV_CAN_MERGE2501 behaves like create branch protection by the strictest ruleset2502 calls service with the correct arguments2503 creates protected branch and access levels for given github rule2504 when branch is protected on GitLab2505 when there is branch protection rule for the role2506 when No one can merge2507 behaves like create branch protection by the strictest ruleset2508 calls service with the correct arguments2509 creates protected branch and access levels for given github rule2510 when Maintainers and Developers can merge2511 behaves like create branch protection by the strictest ruleset2512 calls service with the correct arguments2513 creates protected branch and access levels for given github rule2514 when there is no branch protection rule for the role2515 behaves like create branch protection by the strictest ruleset2516 calls service with the correct arguments2517 creates protected branch and access levels for given github rule2518 when branch is neither default nor protected on GitLab2519 behaves like create branch protection by the strictest ruleset2520 calls service with the correct arguments2521 creates protected branch and access levels for given github rule2522 when the code_owner_approval_required feature is not available2523 behaves like create branch protection by the strictest ruleset2524 calls service with the correct arguments2525 creates protected branch and access levels for given github rule2526BroadcastMessage2527 is expected to be valid2528 validations2529 is expected to allow :color to be ‹nil›2530 is expected to allow :color to be ‹"#000"›2531 is expected to allow :color to be ‹"#AABBCC"›2532 is expected not to allow :color to be ‹"000"›2533 is expected to allow :font to be ‹nil›2534 is expected to allow :font to be ‹"#000"›2535 is expected to allow :font to be ‹"#AABBCC"›2536 is expected not to allow :font to be ‹"000"›2537 is expected to allow :broadcast_type to be ‹1›2538 is expected not to allow :broadcast_type to be ‹nil›2539 is expected not to allow :target_access_levels to be ‹nil›2540 is expected to validate that :target_access_levels is either ‹10›, ‹20›, ‹30›, ‹40›, or ‹50›2541 default values2542 is expected to eq "#E75E40"2543 is expected to eq "#FFFFFF"2544 .current2545 returns both types2546 behaves like time constrainted2547 returns message if time match2548 returns multiple messages if time match2549 returns empty list if time not come2550 returns empty list if time has passed2551 behaves like message cache2552 caches the output of the query for two weeks2553 expires the value if a broadcast message has ended2554 does not create new records2555 includes messages that need to be displayed in the future2556 does not clear the cache if only a future message should be displayed2557 behaves like matches with current path2558 returns message if it matches the target path2559 returns message if part of the target path matches2560 returns message if provided a path without a preceding slash2561 returns the message for empty target path2562 returns the message if target path is nil2563 does not return message if target path does not match2564 does not return message if target path does not match when using wildcard2565 does not return message if target path has no wild card at the end2566 does not return message if target path has wild card at the end2567 does return message if target path has wild card at the beginning and the end2568 does not return message if the target path is set but no current path is provided2569 behaves like matches with user access level2570 when feature flag is disabled2571 when message is role-targeted2572 does not return the message2573 when message is not role-targeted2574 returns the message2575 when target_access_levels is empty2576 returns the message if user access level is not nil2577 returns the message if user access level is nil2578 when target_access_levels is not empty2579 does not return the message if user access level is nil2580 returns the message if user access level is in target_access_levels2581 does not return the message if user access level is not in target_access_levels2582 behaves like handles stale cache data gracefully2583 when cache returns stale data (e.g. nil target_access_levels)2584 does not raise error (e.g. NoMethodError from nil.empty?)2585 when feature flag is disabled2586 does not raise error (e.g. NoMethodError from nil.empty?)2587 when message is from cache2588 behaves like matches with current path2589 returns message if it matches the target path2590 returns message if part of the target path matches2591 returns message if provided a path without a preceding slash2592 returns the message for empty target path2593 returns the message if target path is nil2594 does not return message if target path does not match2595 does not return message if target path does not match when using wildcard2596 does not return message if target path has no wild card at the end2597 does not return message if target path has wild card at the end2598 does return message if target path has wild card at the beginning and the end2599 does not return message if the target path is set but no current path is provided2600 behaves like matches with user access level2601 when feature flag is disabled2602 when message is role-targeted2603 does not return the message2604 when message is not role-targeted2605 returns the message2606 when target_access_levels is empty2607 returns the message if user access level is not nil2608 returns the message if user access level is nil2609 when target_access_levels is not empty2610 does not return the message if user access level is nil2611 returns the message if user access level is in target_access_levels2612 does not return the message if user access level is not in target_access_levels2613 behaves like matches with current path2614 returns message if it matches the target path2615 returns message if part of the target path matches2616 returns message if provided a path without a preceding slash2617 returns the message for empty target path2618 returns the message if target path is nil2619 does not return message if target path does not match2620 does not return message if target path does not match when using wildcard2621 does not return message if target path has no wild card at the end2622 does not return message if target path has wild card at the end2623 does return message if target path has wild card at the beginning and the end2624 does not return message if the target path is set but no current path is provided2625 behaves like matches with user access level2626 when feature flag is disabled2627 when message is role-targeted2628 does not return the message2629 when message is not role-targeted2630 returns the message2631 when target_access_levels is empty2632 returns the message if user access level is not nil2633 returns the message if user access level is nil2634 when target_access_levels is not empty2635 does not return the message if user access level is nil2636 returns the message if user access level is in target_access_levels2637 does not return the message if user access level is not in target_access_levels2638 .current_banner_messages2639 only returns banners2640 behaves like time constrainted2641 returns message if time match2642 returns multiple messages if time match2643 returns empty list if time not come2644 returns empty list if time has passed2645 behaves like message cache2646 caches the output of the query for two weeks2647 expires the value if a broadcast message has ended2648 does not create new records2649 includes messages that need to be displayed in the future2650 does not clear the cache if only a future message should be displayed2651 behaves like matches with current path2652 returns message if it matches the target path2653 returns message if part of the target path matches2654 returns message if provided a path without a preceding slash2655 returns the message for empty target path2656 returns the message if target path is nil2657 does not return message if target path does not match2658 does not return message if target path does not match when using wildcard2659 does not return message if target path has no wild card at the end2660 does not return message if target path has wild card at the end2661 does return message if target path has wild card at the beginning and the end2662 does not return message if the target path is set but no current path is provided2663 behaves like matches with user access level2664 when feature flag is disabled2665 when message is role-targeted2666 does not return the message2667 when message is not role-targeted2668 returns the message2669 when target_access_levels is empty2670 returns the message if user access level is not nil2671 returns the message if user access level is nil2672 when target_access_levels is not empty2673 does not return the message if user access level is nil2674 returns the message if user access level is in target_access_levels2675 does not return the message if user access level is not in target_access_levels2676 behaves like handles stale cache data gracefully2677 when cache returns stale data (e.g. nil target_access_levels)2678 does not raise error (e.g. NoMethodError from nil.empty?)2679 when feature flag is disabled2680 does not raise error (e.g. NoMethodError from nil.empty?)2681 when message is from cache2682 behaves like matches with current path2683 returns message if it matches the target path2684 returns message if part of the target path matches2685 returns message if provided a path without a preceding slash2686 returns the message for empty target path2687 returns the message if target path is nil2688 does not return message if target path does not match2689 does not return message if target path does not match when using wildcard2690 does not return message if target path has no wild card at the end2691 does not return message if target path has wild card at the end2692 does return message if target path has wild card at the beginning and the end2693 does not return message if the target path is set but no current path is provided2694 behaves like matches with user access level2695 when feature flag is disabled2696 when message is role-targeted2697 does not return the message2698 when message is not role-targeted2699 returns the message2700 when target_access_levels is empty2701 returns the message if user access level is not nil2702 returns the message if user access level is nil2703 when target_access_levels is not empty2704 does not return the message if user access level is nil2705 returns the message if user access level is in target_access_levels2706 does not return the message if user access level is not in target_access_levels2707 .current_notification_messages2708 only returns notifications2709 behaves like time constrainted2710 returns message if time match2711 returns multiple messages if time match2712 returns empty list if time not come2713 returns empty list if time has passed2714 behaves like message cache2715 caches the output of the query for two weeks2716 expires the value if a broadcast message has ended2717 does not create new records2718 includes messages that need to be displayed in the future2719 does not clear the cache if only a future message should be displayed2720 behaves like matches with current path2721 returns message if it matches the target path2722 returns message if part of the target path matches2723 returns message if provided a path without a preceding slash2724 returns the message for empty target path2725 returns the message if target path is nil2726 does not return message if target path does not match2727 does not return message if target path does not match when using wildcard2728 does not return message if target path has no wild card at the end2729 does not return message if target path has wild card at the end2730 does return message if target path has wild card at the beginning and the end2731 does not return message if the target path is set but no current path is provided2732 behaves like matches with user access level2733 when feature flag is disabled2734 when message is role-targeted2735 does not return the message2736 when message is not role-targeted2737 returns the message2738 when target_access_levels is empty2739 returns the message if user access level is not nil2740 returns the message if user access level is nil2741 when target_access_levels is not empty2742 does not return the message if user access level is nil2743 returns the message if user access level is in target_access_levels2744 does not return the message if user access level is not in target_access_levels2745 behaves like handles stale cache data gracefully2746 when cache returns stale data (e.g. nil target_access_levels)2747 does not raise error (e.g. NoMethodError from nil.empty?)2748 when feature flag is disabled2749 does not raise error (e.g. NoMethodError from nil.empty?)2750 when message is from cache2751 behaves like matches with current path2752 returns message if it matches the target path2753 returns message if part of the target path matches2754 returns message if provided a path without a preceding slash2755 returns the message for empty target path2756 returns the message if target path is nil2757 does not return message if target path does not match2758 does not return message if target path does not match when using wildcard2759 does not return message if target path has no wild card at the end2760 does not return message if target path has wild card at the end2761 does return message if target path has wild card at the beginning and the end2762 does not return message if the target path is set but no current path is provided2763 behaves like matches with user access level2764 when feature flag is disabled2765 when message is role-targeted2766 does not return the message2767 when message is not role-targeted2768 returns the message2769 when target_access_levels is empty2770 returns the message if user access level is not nil2771 returns the message if user access level is nil2772 when target_access_levels is not empty2773 does not return the message if user access level is nil2774 returns the message if user access level is in target_access_levels2775 does not return the message if user access level is not in target_access_levels2776 #attributes2777 includes message_html field2778 #active?2779 is truthy when started and not ended2780 is falsey when ended2781 is falsey when not started2782 #started?2783 is truthy when starts_at has passed2784 is falsey when starts_at is in the future2785 #ended?2786 is truthy when ends_at has passed2787 is falsey when ends_at is in the future2788 #flush_redis_cache2789 flushes the Redis cache2790MergeRequest::CleanupSchedule2791 associations2792 is expected to belong to merge_request required: false2793 validations2794 is expected to validate that :scheduled_at cannot be empty/falsy2795 state machine transitions2796 sets status to unstarted by default2797 #run2798 sets the status to running2799 when previous status is not unstarted2800 does not change status2801 #retry2802 sets the status to unstarted2803 increments failed_count2804 when previous status is not running2805 does not change status2806 #complete2807 sets the status to completed2808 sets the completed_at2809 when previous status is not running2810 does not change status2811 #mark_as_failed2812 sets the status to failed2813 increments failed_count2814 when previous status is not running2815 does not change status2816 .scheduled_and_unstarted2817 returns records that are scheduled before or on current time and unstarted (ordered by scheduled first)2818 .stuck2819 returns records that has been in running state for more than 6 hours2820 .stuck_retry!2821 sets stuck records to unstarted2822 when there are more than 5 stuck schedules2823 only retries 5 stuck schedules at once2824 .start_next2825 finds the next scheduled and unstarted then marked it as running2826NotePolicy2827 #rules2828 when the noteable is a deleted commit2829 allows to read2830 when the noteable is a commit2831 when the project is private2832 behaves like a discussion with a private noteable2833 when the note author can no longer see the noteable2834 behaves like user cannot read or act on the note2835 is expected to be disallowed :admin_note, :reposition_note, :resolve_note, :read_note, and :award_emoji2836 when the note author can still see the noteable2837 can edit the note2838 when the project is public2839 when repository access level is private2840 behaves like a discussion with a private noteable2841 when the note author can no longer see the noteable2842 behaves like user cannot read or act on the note2843 is expected to be disallowed :admin_note, :reposition_note, :resolve_note, :read_note, and :award_emoji2844 when the note author can still see the noteable2845 can edit the note2846 when the noteable is a Design2847 can read, award emoji and reposition the note2848 when project is private2849 behaves like user cannot read or act on the note2850 is expected to be disallowed :admin_note, :reposition_note, :resolve_note, :read_note, and :award_emoji2851 when the noteable is a personal snippet2852 behaves like a note on a public noteable2853 can only read and award emoji on the note2854 when user is the author of the personal snippet2855 can edit note2856 when it is private2857 behaves like user cannot read or act on the note2858 is expected to be disallowed :admin_note, :reposition_note, :resolve_note, :read_note, and :award_emoji2859 when the project is public2860 when user is not the author of the note2861 behaves like a note on a public noteable2862 can only read and award emoji on the note2863 when the note author is not a project member2864 can edit a note2865 when the noteable is a project snippet2866 can edit note2867 when it is private2868 behaves like a discussion with a private noteable2869 when the note author can no longer see the noteable2870 behaves like user cannot read or act on the note2871 is expected to be disallowed :admin_note, :reposition_note, :resolve_note, :read_note, and :award_emoji2872 when the note author can still see the noteable2873 can edit the note2874 when a discussion is confidential2875 behaves like a discussion with a private noteable2876 when the note author can no longer see the noteable2877 behaves like user cannot read or act on the note2878 is expected to be disallowed :admin_note, :reposition_note, :resolve_note, :read_note, and :award_emoji2879 when the note author can still see the noteable2880 can edit the note2881 when a discussion is locked2882 when the note author is a project member2883 can edit a note2884 when the note author is not a project member2885 can not edit a note2886 can read a note2887 for discussions2888 allows the author to manage the discussion2889 when the user does not have access to the noteable2890 behaves like a discussion with a private noteable2891 when the note author can no longer see the noteable2892 behaves like user cannot read or act on the note2893 is expected to be disallowed :admin_note, :reposition_note, :resolve_note, :read_note, and :award_emoji2894 when the note author can still see the noteable2895 can edit the note2896 when it is a system note2897 when noteable is a public issue2898 when user is project member2899 behaves like user can read the note2900 allows the user to read the note2901 behaves like user can act on the note2902 allows the user to read the note2903 when user is not project member2904 behaves like user can read the note2905 allows the user to read the note2906 when user is anonymous2907 behaves like user can read the note2908 allows the user to read the note2909 when notes widget is disabled for task2910 when noteable is task2911 behaves like user cannot read or act on the note2912 is expected to be disallowed :admin_note, :reposition_note, :resolve_note, :read_note, and :award_emoji2913 when noteable is issue2914 behaves like user can read the note2915 allows the user to read the note2916 behaves like user can act on the note2917 allows the user to read the note2918 when it is a system note referencing a confidential issue2919 when user is project member2920 behaves like user can read the note2921 allows the user to read the note2922 behaves like user can act on the note2923 allows the user to read the note2924 when user is not project member2925 behaves like user cannot read or act on the note2926 is expected to be disallowed :admin_note, :reposition_note, :resolve_note, :read_note, and :award_emoji2927 when user is anonymous2928 behaves like user cannot read or act on the note2929 is expected to be disallowed :admin_note, :reposition_note, :resolve_note, :read_note, and :award_emoji2930 with internal notes2931 for issues2932 disallows noteable assignees to read all notes2933 behaves like internal notes permissions2934 does not allow non members to read internal notes and replies2935 does not allow guests to read internal notes and replies2936 allows reporter to read all notes but not resolve and admin them2937 allows developer to read and resolve all notes2938 allows maintainers to read all notes and admin them2939 disallows noteable author to read and resolve all notes2940 when admin mode is enabled2941 allows admins to read all notes and admin them2942 when admin mode is disabled2943 does not allow non members to read internal notes and replies2944Ci::RetryJobService2945 #clone!2946 raises an error when an unexpected class is passed2947 when the job to be cloned is a bridge2948 behaves like clones the job2949 when the user has ability to execute job2950 marks the old job as retried2951 when there is a failed job ToDo for the MR2952 resolves the ToDo for the failed job2953 when the job has needs2954 bulk inserts all the needs2955 when the user does not have permission to execute the job2956 raises an error2957 when given variables2958 does not give variables to the new bridge2959 when the job to be cloned is a build2960 behaves like clones the job2961 when the user has ability to execute job2962 marks the old job as retried2963 when there is a failed job ToDo for the MR2964 resolves the ToDo for the failed job2965 when the job has needs2966 bulk inserts all the needs2967 when the user does not have permission to execute the job2968 raises an error2969 when a build with a deployment is retried2970 creates a new deployment2971 does not create a new environment2972 when a build with a dynamic environment is retried2973 creates a new deployment2974 does not create a new environment2975 when given variables2976 when the build is actionable2977 gives variables to the new build2978 when the build is not actionable2979 does not give variables to the new build2980 when enqueue_if_actionable is provided2981 enqueue_if_actionable: true, trait: nil, enqueue_immediately: false2982 behaves like checks enqueue_immediately?2983 returns enqueue_immediately2984 enqueue_if_actionable: true, trait: :manual, enqueue_immediately: true2985 behaves like checks enqueue_immediately?2986 returns enqueue_immediately2987 enqueue_if_actionable: true, trait: :expired_scheduled, enqueue_immediately: true2988 behaves like checks enqueue_immediately?2989 returns enqueue_immediately2990 enqueue_if_actionable: false, trait: nil, enqueue_immediately: false2991 behaves like checks enqueue_immediately?2992 returns enqueue_immediately2993 enqueue_if_actionable: false, trait: :manual, enqueue_immediately: false2994 behaves like checks enqueue_immediately?2995 returns enqueue_immediately2996 enqueue_if_actionable: false, trait: :expired_scheduled, enqueue_immediately: false2997 behaves like checks enqueue_immediately?2998 returns enqueue_immediately2999 #execute3000 when the job to be retried is a bridge3001 and it is not retryable3002 behaves like does not retry the job3003 returns :not_retryable and :unprocessable_entity3004 behaves like retries the job3005 enqueues the new job3006 behaves like clones the job3007 when the user has ability to execute job3008 marks the old job as retried3009 when there is a failed job ToDo for the MR3010 resolves the ToDo for the failed job3011 when the job has needs3012 bulk inserts all the needs3013 when the user does not have permission to execute the job3014 raises an error3015 when there are subsequent processables that are skipped3016 resumes pipeline processing in the subsequent stage3017 updates ownership for subsequent builds3018 updates ownership for subsequent bridges3019 when the pipeline has other jobs3020 when job has a nil scheduling_type3021 populates scheduling_type of processables3022 when job has scheduling_type3023 does not call populate_scheduling_type!3024 when the pipeline is a child pipeline and the bridge uses strategy:depend3025 marks the source bridge as pending3026 when given variables3027 does not give variables to the new bridge3028 when the job to be retried is a build3029 and it is not retryable3030 behaves like does not retry the job3031 returns :not_retryable and :unprocessable_entity3032 behaves like retries the job3033 enqueues the new job3034 behaves like clones the job3035 when the user has ability to execute job3036 marks the old job as retried3037 when there is a failed job ToDo for the MR3038 resolves the ToDo for the failed job3039 when the job has needs3040 bulk inserts all the needs3041 when the user does not have permission to execute the job3042 raises an error3043 when there are subsequent processables that are skipped3044 resumes pipeline processing in the subsequent stage3045 updates ownership for subsequent builds3046 updates ownership for subsequent bridges3047 when the pipeline has other jobs3048 when job has a nil scheduling_type3049 populates scheduling_type of processables3050 when job has scheduling_type3051 does not call populate_scheduling_type!3052 when the pipeline is a child pipeline and the bridge uses strategy:depend3053 marks the source bridge as pending3054 when there are subsequent jobs that are skipped3055 does not cause an N+1 when updating the job ownership3056 when given variables3057 when the build is actionable3058 gives variables to the new build3059 when the build is not actionable3060 does not give variables to the new build3061 when job being retried has jobs in previous stages3062 previous_stage_job_status: :created, after_status: "created"3063 updates the new job status to after_status3064 previous_stage_job_status: :pending, after_status: "created"3065 updates the new job status to after_status3066 previous_stage_job_status: :running, after_status: "created"3067 updates the new job status to after_status3068 previous_stage_job_status: :manual, after_status: "created"3069 updates the new job status to after_status3070 previous_stage_job_status: :scheduled, after_status: "created"3071 updates the new job status to after_status3072 previous_stage_job_status: :success, after_status: "pending"3073 updates the new job status to after_status3074 previous_stage_job_status: :failed, after_status: "skipped"3075 updates the new job status to after_status3076 previous_stage_job_status: :skipped, after_status: "pending"3077 updates the new job status to after_status3078 when job being retried has DAG dependencies3079 dag_dependency_status: :created, after_status: "created"3080 updates the new job status to after_status3081 dag_dependency_status: :pending, after_status: "created"3082 updates the new job status to after_status3083 dag_dependency_status: :running, after_status: "created"3084 updates the new job status to after_status3085 dag_dependency_status: :manual, after_status: "created"3086 updates the new job status to after_status3087 dag_dependency_status: :scheduled, after_status: "created"3088 updates the new job status to after_status3089 dag_dependency_status: :success, after_status: "pending"3090 updates the new job status to after_status3091 dag_dependency_status: :failed, after_status: "skipped"3092 updates the new job status to after_status3093 dag_dependency_status: :skipped, after_status: "skipped"3094 updates the new job status to after_status3095 when there are other manual/scheduled jobs3096 trait: nil, enqueue_immediately: false3097 retries the given job but not the other manual/scheduled jobs3098 behaves like checks enqueue_immediately?3099 returns enqueue_immediately3100 trait: :manual, enqueue_immediately: true3101 retries the given job but not the other manual/scheduled jobs3102 behaves like checks enqueue_immediately?3103 returns enqueue_immediately3104 trait: :expired_scheduled, enqueue_immediately: true3105 retries the given job but not the other manual/scheduled jobs3106 behaves like checks enqueue_immediately?3107 returns enqueue_immediately3108ResourceAccessTokens::CreateService3109 #execute3110 when resource is a project3111 behaves like when user does not have permission to create a resource bot3112 behaves like token creation fails3113 does not add the project bot as a member3114 immediately destroys the bot user if one was created3115 behaves like correct error message3116 returns correct error message3117 user with valid permission3118 behaves like allows creation of bot with valid params3119 is expected to change `User.count` by 13120 creates resource bot user3121 logs the event3122 email confirmation status3123 when created by an admin3124 when admin mode is enabled3125 behaves like creates a user that has their email confirmed3126 creates a user that has their email confirmed3127 when admin mode is disabled3128 returns error3129 when created by a non-admin3130 behaves like creates a user that has their email confirmed3131 creates a user that has their email confirmed3132 bot name3133 when no name is passed3134 uses default name3135 when user provides name3136 overrides the default name value3137 bot username and email3138 check email domain3139 contains SecureRandom part3140 email name is the same as username3141 when conflicts3142 when username is reserved3143 when username is reserved by user3144 uniquifies username and email3145 when it conflicts with top-level group namespace3146 uniquifies username and email3147 when it conflicts with top-level group namespace that includes upcased characters3148 uniquifies username and email3149 when email is reserved3150 when it conflicts with confirmed primary email3151 uniquifies username and email3152 when it conflicts with unconfirmed primary email3153 uniquifies username and email3154 when it conflicts with confirmed secondary email3155 uniquifies username and email3156 when email and username is reserved3157 uniquifies username and email3158 access level3159 when user does not specify an access level3160 adds the bot user as a maintainer in the resource3161 when user specifies an access level3162 behaves like bot with access level3163 adds the bot user with the specified access level in the resource3164 with DEVELOPER access_level, in string format3165 behaves like bot with access level3166 adds the bot user with the specified access level in the resource3167 when user is external3168 creates resource bot user with external status3169 personal access token3170 is expected to change `PersonalAccessToken.count` by 13171 when user does not provide scope3172 has default scopes3173 when user provides scope explicitly3174 overrides the default scope value3175 expires_at3176 when no expiration value is passed3177 uses nil expiration value3178 expiry of the project bot member3179 project bot membership does not expire3180 when user provides expiration value3181 overrides the default expiration value3182 expiry of the project bot member3183 sets the project bot to expire on the same day as the token3184 when invalid scope is passed3185 behaves like token creation fails3186 does not add the project bot as a member3187 immediately destroys the bot user if one was created3188 behaves like correct error message3189 returns correct error message3190 when access provisioning fails3191 with MAINTAINER access_level, in integer format3192 behaves like token creation fails3193 does not add the project bot as a member3194 immediately destroys the bot user if one was created3195 behaves like correct error message3196 returns correct error message3197 with MAINTAINER access_level, in string format3198 behaves like token creation fails3199 does not add the project bot as a member3200 immediately destroys the bot user if one was created3201 behaves like correct error message3202 returns correct error message3203 when user specifies an access level of OWNER for the bot3204 when the executor is a MAINTAINER3205 with OWNER access_level, in integer format3206 behaves like token creation fails3207 does not add the project bot as a member3208 immediately destroys the bot user if one was created3209 behaves like correct error message3210 returns correct error message3211 with OWNER access_level, in string format3212 behaves like token creation fails3213 does not add the project bot as a member3214 immediately destroys the bot user if one was created3215 behaves like correct error message3216 returns correct error message3217 when the executor is an OWNER3218 adds the bot user with the specified access level in the resource3219 when resource is a group3220 behaves like when user does not have permission to create a resource bot3221 behaves like token creation fails3222 does not add the project bot as a member3223 immediately destroys the bot user if one was created3224 behaves like correct error message3225 returns correct error message3226 user with valid permission3227 behaves like allows creation of bot with valid params3228 is expected to change `User.count` by 13229 creates resource bot user3230 logs the event3231 email confirmation status3232 when created by an admin3233 when admin mode is enabled3234 behaves like creates a user that has their email confirmed3235 creates a user that has their email confirmed3236 when admin mode is disabled3237 returns error3238 when created by a non-admin3239 behaves like creates a user that has their email confirmed3240 creates a user that has their email confirmed3241 bot name3242 when no name is passed3243 uses default name3244 when user provides name3245 overrides the default name value3246 bot username and email3247 check email domain3248 contains SecureRandom part3249 email name is the same as username3250 when conflicts3251 when username is reserved3252 when username is reserved by user3253 uniquifies username and email3254 when it conflicts with top-level group namespace3255 uniquifies username and email3256 when it conflicts with top-level group namespace that includes upcased characters3257 uniquifies username and email3258 when email is reserved3259 when it conflicts with confirmed primary email3260 uniquifies username and email3261 when it conflicts with unconfirmed primary email3262 uniquifies username and email3263 when it conflicts with confirmed secondary email3264 uniquifies username and email3265 when email and username is reserved3266 uniquifies username and email3267 access level3268 when user does not specify an access level3269 adds the bot user as a maintainer in the resource3270 when user specifies an access level3271 behaves like bot with access level3272 adds the bot user with the specified access level in the resource3273 with DEVELOPER access_level, in string format3274 behaves like bot with access level3275 adds the bot user with the specified access level in the resource3276 when user is external3277 creates resource bot user with external status3278 personal access token3279 is expected to change `PersonalAccessToken.count` by 13280 when user does not provide scope3281 has default scopes3282 when user provides scope explicitly3283 overrides the default scope value3284 expires_at3285 when no expiration value is passed3286 uses nil expiration value3287 expiry of the project bot member3288 project bot membership does not expire3289 when user provides expiration value3290 overrides the default expiration value3291 expiry of the project bot member3292 sets the project bot to expire on the same day as the token3293 when invalid scope is passed3294 behaves like token creation fails3295 does not add the project bot as a member3296 immediately destroys the bot user if one was created3297 behaves like correct error message3298 returns correct error message3299 when access provisioning fails3300 with MAINTAINER access_level, in integer format3301 behaves like token creation fails3302 does not add the project bot as a member3303 immediately destroys the bot user if one was created3304 behaves like correct error message3305 returns correct error message3306 with MAINTAINER access_level, in string format3307 behaves like token creation fails3308 does not add the project bot as a member3309 immediately destroys the bot user if one was created3310 behaves like correct error message3311 returns correct error message3312 when user specifies an access level of OWNER for the bot3313 adds the bot user with the specified access level in the resource3314Ci::Ref3315 is expected to belong to project required: false3316 state machine transitions3317 unlock artifacts transition3318 pipline is locked3319 initial_state: :unknown, action: :succeed!, count: 13320 when transitioning states3321 calls unlock artifacts service3322 initial_state: :unknown, action: :do_fail!, count: 03323 when transitioning states3324 calls unlock artifacts service3325 initial_state: :success, action: :succeed!, count: 13326 when transitioning states3327 calls unlock artifacts service3328 initial_state: :success, action: :do_fail!, count: 03329 when transitioning states3330 calls unlock artifacts service3331 initial_state: :failed, action: :succeed!, count: 13332 when transitioning states3333 calls unlock artifacts service3334 initial_state: :failed, action: :do_fail!, count: 03335 when transitioning states3336 calls unlock artifacts service3337 initial_state: :fixed, action: :succeed!, count: 13338 when transitioning states3339 calls unlock artifacts service3340 initial_state: :fixed, action: :do_fail!, count: 03341 when transitioning states3342 calls unlock artifacts service3343 initial_state: :broken, action: :succeed!, count: 13344 when transitioning states3345 calls unlock artifacts service3346 initial_state: :broken, action: :do_fail!, count: 03347 when transitioning states3348 calls unlock artifacts service3349 initial_state: :still_failing, action: :succeed, count: 13350 when transitioning states3351 calls unlock artifacts service3352 initial_state: :still_failing, action: :do_fail, count: 03353 when transitioning states3354 calls unlock artifacts service3355 pipeline is unlocked3356 does not call unlock artifacts service3357 .ensure_for3358 when pipeline is a branch pipeline3359 behaves like ensures ci_ref3360 when ci_ref already exists3361 returns an existing ci_ref3362 when ci_ref does not exist yet3363 creates a new ci_ref3364 when pipeline is a tag pipeline3365 behaves like ensures ci_ref3366 when ci_ref already exists3367 returns an existing ci_ref3368 when ci_ref does not exist yet3369 creates a new ci_ref3370 when pipeline is a detached merge request pipeline3371 behaves like ensures ci_ref3372 when ci_ref already exists3373 returns an existing ci_ref3374 when ci_ref does not exist yet3375 creates a new ci_ref3376 #last_finished_pipeline_id3377 when there are no finished pipelines3378 returns nil3379 when there are finished pipelines3380 returns the pipeline id3381 when the pipeline a dangling pipeline3382 returns nil3383 #update_status_by!3384 when pipeline status is success or failed3385 pipeline_status: :success, current_ref_status: :unknown, expected_ref_status: :success3386 transitions the status via state machine3387 pipeline_status: :success, current_ref_status: :success, expected_ref_status: :success3388 transitions the status via state machine3389 pipeline_status: :success, current_ref_status: :failed, expected_ref_status: :fixed3390 transitions the status via state machine3391 pipeline_status: :success, current_ref_status: :fixed, expected_ref_status: :success3392 transitions the status via state machine3393 pipeline_status: :success, current_ref_status: :broken, expected_ref_status: :fixed3394 transitions the status via state machine3395 pipeline_status: :success, current_ref_status: :still_failing, expected_ref_status: :fixed3396 transitions the status via state machine3397 pipeline_status: :failed, current_ref_status: :unknown, expected_ref_status: :failed3398 transitions the status via state machine3399 pipeline_status: :failed, current_ref_status: :success, expected_ref_status: :broken3400 transitions the status via state machine3401 pipeline_status: :failed, current_ref_status: :failed, expected_ref_status: :still_failing3402 transitions the status via state machine3403 pipeline_status: :failed, current_ref_status: :fixed, expected_ref_status: :broken3404 transitions the status via state machine3405 pipeline_status: :failed, current_ref_status: :broken, expected_ref_status: :still_failing3406 transitions the status via state machine3407 pipeline_status: :failed, current_ref_status: :still_failing, expected_ref_status: :still_failing3408 transitions the status via state machine3409 when pipeline status is success3410 updates the status3411 when pipeline status is canceled3412 is expected to eq :unknown3413 when pipeline status is skipped3414 behaves like no-op3415 does nothing and returns nil3416 when pipeline status is not complete3417 behaves like no-op3418 does nothing and returns nil3419 when pipeline is not the latest pipeline3420 behaves like no-op3421 does nothing and returns nil3422 when pipeline does not belong to the ci_ref3423 behaves like no-op3424 does nothing and returns nil3425 loose foreign key on ci_refs.project_id3426 behaves like cleanup by a loose foreign key3427 cleans up (delete or nullify) the model3428Import/Export Project configuration3429 relation_path: "project", relation_name: :project3430 where relation project3431 does not have prohibited keys3432 relation_path: "project.labels", relation_name: :labels3433 where relation project.labels3434 does not have prohibited keys3435 relation_path: "project.labels.priorities", relation_name: :priorities3436 where relation project.labels.priorities3437 does not have prohibited keys3438 relation_path: "project.milestones", relation_name: :milestones3439 where relation project.milestones3440 does not have prohibited keys3441 relation_path: "project.milestones.events", relation_name: :events3442 where relation project.milestones.events3443 does not have prohibited keys3444 relation_path: "project.milestones.events.push_event_payload", relation_name: :push_event_payload3445 where relation project.milestones.events.push_event_payload3446 does not have prohibited keys3447 relation_path: "project.issues", relation_name: :issues3448 where relation project.issues3449 does not have prohibited keys3450 relation_path: "project.issues.events", relation_name: :events3451 where relation project.issues.events3452 does not have prohibited keys3453 relation_path: "project.issues.events.push_event_payload", relation_name: :push_event_payload3454 where relation project.issues.events.push_event_payload3455 does not have prohibited keys3456 relation_path: "project.issues.timelogs", relation_name: :timelogs3457 where relation project.issues.timelogs3458 does not have prohibited keys3459 relation_path: "project.issues.notes", relation_name: :notes3460 where relation project.issues.notes3461 does not have prohibited keys3462 relation_path: "project.issues.notes.award_emoji", relation_name: :award_emoji3463 where relation project.issues.notes.award_emoji3464 does not have prohibited keys3465 relation_path: "project.issues.notes.system_note_metadata", relation_name: :system_note_metadata3466 where relation project.issues.notes.system_note_metadata3467 does not have prohibited keys3468 relation_path: "project.issues.notes.events", relation_name: :events3469 where relation project.issues.notes.events3470 does not have prohibited keys3471 relation_path: "project.issues.notes.events.push_event_payload", relation_name: :push_event_payload3472 where relation project.issues.notes.events.push_event_payload3473 does not have prohibited keys3474 relation_path: "project.issues.label_links", relation_name: :label_links3475 where relation project.issues.label_links3476 does not have prohibited keys3477 relation_path: "project.issues.label_links.label", relation_name: :label3478 where relation project.issues.label_links.label3479 does not have prohibited keys3480 relation_path: "project.issues.label_links.label.priorities", relation_name: :priorities3481 where relation project.issues.label_links.label.priorities3482 does not have prohibited keys3483 relation_path: "project.issues.milestone", relation_name: :milestone3484 where relation project.issues.milestone3485 does not have prohibited keys3486 relation_path: "project.issues.milestone.events", relation_name: :events3487 where relation project.issues.milestone.events3488 does not have prohibited keys3489 relation_path: "project.issues.milestone.events.push_event_payload", relation_name: :push_event_payload3490 where relation project.issues.milestone.events.push_event_payload3491 does not have prohibited keys3492 relation_path: "project.issues.resource_label_events", relation_name: :resource_label_events3493 where relation project.issues.resource_label_events3494 does not have prohibited keys3495 relation_path: "project.issues.resource_label_events.label", relation_name: :label3496 where relation project.issues.resource_label_events.label3497 does not have prohibited keys3498 relation_path: "project.issues.resource_label_events.label.priorities", relation_name: :priorities3499 where relation project.issues.resource_label_events.label.priorities3500 does not have prohibited keys3501 relation_path: "project.issues.resource_milestone_events", relation_name: :resource_milestone_events3502 where relation project.issues.resource_milestone_events3503 does not have prohibited keys3504 relation_path: "project.issues.resource_milestone_events.milestone", relation_name: :milestone3505 where relation project.issues.resource_milestone_events.milestone3506 does not have prohibited keys3507 relation_path: "project.issues.resource_state_events", relation_name: :resource_state_events3508 where relation project.issues.resource_state_events3509 does not have prohibited keys3510 relation_path: "project.issues.designs", relation_name: :designs3511 where relation project.issues.designs3512 does not have prohibited keys3513 relation_path: "project.issues.designs.notes", relation_name: :notes3514 where relation project.issues.designs.notes3515 does not have prohibited keys3516 relation_path: "project.issues.designs.notes.events", relation_name: :events3517 where relation project.issues.designs.notes.events3518 does not have prohibited keys3519 relation_path: "project.issues.designs.notes.events.push_event_payload", relation_name: :push_event_payload3520 where relation project.issues.designs.notes.events.push_event_payload3521 does not have prohibited keys3522 relation_path: "project.issues.design_versions", relation_name: :design_versions3523 where relation project.issues.design_versions3524 does not have prohibited keys3525 relation_path: "project.issues.design_versions.actions", relation_name: :actions3526 where relation project.issues.design_versions.actions3527 does not have prohibited keys3528 relation_path: "project.issues.design_versions.actions.design", relation_name: :design3529 where relation project.issues.design_versions.actions.design3530 does not have prohibited keys3531 relation_path: "project.issues.issue_assignees", relation_name: :issue_assignees3532 where relation project.issues.issue_assignees3533 does not have prohibited keys3534 relation_path: "project.issues.zoom_meetings", relation_name: :zoom_meetings3535 where relation project.issues.zoom_meetings3536 does not have prohibited keys3537 relation_path: "project.issues.sentry_issue", relation_name: :sentry_issue3538 where relation project.issues.sentry_issue3539 does not have prohibited keys3540 relation_path: "project.issues.award_emoji", relation_name: :award_emoji3541 where relation project.issues.award_emoji3542 does not have prohibited keys3543 relation_path: "project.snippets", relation_name: :snippets3544 where relation project.snippets3545 does not have prohibited keys3546 relation_path: "project.snippets.award_emoji", relation_name: :award_emoji3547 where relation project.snippets.award_emoji3548 does not have prohibited keys3549 relation_path: "project.snippets.notes", relation_name: :notes3550 where relation project.snippets.notes3551 does not have prohibited keys3552 relation_path: "project.snippets.notes.award_emoji", relation_name: :award_emoji3553 where relation project.snippets.notes.award_emoji3554 does not have prohibited keys3555 relation_path: "project.releases", relation_name: :releases3556 where relation project.releases3557 does not have prohibited keys3558 relation_path: "project.releases.links", relation_name: :links3559 where relation project.releases.links3560 does not have prohibited keys3561 relation_path: "project.releases.milestone_releases", relation_name: :milestone_releases3562 where relation project.releases.milestone_releases3563 does not have prohibited keys3564 relation_path: "project.releases.milestone_releases.milestone", relation_name: :milestone3565 where relation project.releases.milestone_releases.milestone3566 does not have prohibited keys3567 relation_path: "project.project_members", relation_name: :project_members3568 where relation project.project_members3569 does not have prohibited keys3570 relation_path: "project.project_members.user", relation_name: :user3571 where relation project.project_members.user3572 does not have prohibited keys3573 relation_path: "project.merge_requests", relation_name: :merge_requests3574 where relation project.merge_requests3575 does not have prohibited keys3576 relation_path: "project.merge_requests.approvals", relation_name: :approvals3577 where relation project.merge_requests.approvals3578 does not have prohibited keys3579 relation_path: "project.merge_requests.metrics", relation_name: :metrics3580 where relation project.merge_requests.metrics3581 does not have prohibited keys3582 relation_path: "project.merge_requests.award_emoji", relation_name: :award_emoji3583 where relation project.merge_requests.award_emoji3584 does not have prohibited keys3585 relation_path: "project.merge_requests.merge_request_assignees", relation_name: :merge_request_assignees3586 where relation project.merge_requests.merge_request_assignees3587 does not have prohibited keys3588 relation_path: "project.merge_requests.merge_request_reviewers", relation_name: :merge_request_reviewers3589 where relation project.merge_requests.merge_request_reviewers3590 does not have prohibited keys3591 relation_path: "project.merge_requests.notes", relation_name: :notes3592 where relation project.merge_requests.notes3593 does not have prohibited keys3594 relation_path: "project.merge_requests.notes.award_emoji", relation_name: :award_emoji3595 where relation project.merge_requests.notes.award_emoji3596 does not have prohibited keys3597 relation_path: "project.merge_requests.notes.system_note_metadata", relation_name: :system_note_metadata3598 where relation project.merge_requests.notes.system_note_metadata3599 does not have prohibited keys3600 relation_path: "project.merge_requests.notes.events", relation_name: :events3601 where relation project.merge_requests.notes.events3602 does not have prohibited keys3603 relation_path: "project.merge_requests.notes.events.push_event_payload", relation_name: :push_event_payload3604 where relation project.merge_requests.notes.events.push_event_payload3605 does not have prohibited keys3606 relation_path: "project.merge_requests.notes.suggestions", relation_name: :suggestions3607 where relation project.merge_requests.notes.suggestions3608 does not have prohibited keys3609 relation_path: "project.merge_requests.merge_request_diff", relation_name: :merge_request_diff3610 where relation project.merge_requests.merge_request_diff3611 does not have prohibited keys3612 relation_path: "project.merge_requests.merge_request_diff.merge_request_diff_commits", relation_name: :merge_request_diff_commits3613 where relation project.merge_requests.merge_request_diff.merge_request_diff_commits3614 does not have prohibited keys3615 relation_path: "project.merge_requests.merge_request_diff.merge_request_diff_commits.commit_author", relation_name: :commit_author3616 where relation project.merge_requests.merge_request_diff.merge_request_diff_commits.commit_author3617 does not have prohibited keys3618 relation_path: "project.merge_requests.merge_request_diff.merge_request_diff_commits.committer", relation_name: :committer3619 where relation project.merge_requests.merge_request_diff.merge_request_diff_commits.committer3620 does not have prohibited keys3621 relation_path: "project.merge_requests.merge_request_diff.merge_request_diff_files", relation_name: :merge_request_diff_files3622 where relation project.merge_requests.merge_request_diff.merge_request_diff_files3623 does not have prohibited keys3624 relation_path: "project.merge_requests.events", relation_name: :events3625 where relation project.merge_requests.events3626 does not have prohibited keys3627 relation_path: "project.merge_requests.events.push_event_payload", relation_name: :push_event_payload3628 where relation project.merge_requests.events.push_event_payload3629 does not have prohibited keys3630 relation_path: "project.merge_requests.timelogs", relation_name: :timelogs3631 where relation project.merge_requests.timelogs3632 does not have prohibited keys3633 relation_path: "project.merge_requests.label_links", relation_name: :label_links3634 where relation project.merge_requests.label_links3635 does not have prohibited keys3636 relation_path: "project.merge_requests.label_links.label", relation_name: :label3637 where relation project.merge_requests.label_links.label3638 does not have prohibited keys3639 relation_path: "project.merge_requests.label_links.label.priorities", relation_name: :priorities3640 where relation project.merge_requests.label_links.label.priorities3641 does not have prohibited keys3642 relation_path: "project.merge_requests.milestone", relation_name: :milestone3643 where relation project.merge_requests.milestone3644 does not have prohibited keys3645 relation_path: "project.merge_requests.milestone.events", relation_name: :events3646 where relation project.merge_requests.milestone.events3647 does not have prohibited keys3648 relation_path: "project.merge_requests.milestone.events.push_event_payload", relation_name: :push_event_payload3649 where relation project.merge_requests.milestone.events.push_event_payload3650 does not have prohibited keys3651 relation_path: "project.merge_requests.resource_label_events", relation_name: :resource_label_events3652 where relation project.merge_requests.resource_label_events3653 does not have prohibited keys3654 relation_path: "project.merge_requests.resource_label_events.label", relation_name: :label3655 where relation project.merge_requests.resource_label_events.label3656 does not have prohibited keys3657 relation_path: "project.merge_requests.resource_label_events.label.priorities", relation_name: :priorities3658 where relation project.merge_requests.resource_label_events.label.priorities3659 does not have prohibited keys3660 relation_path: "project.merge_requests.resource_milestone_events", relation_name: :resource_milestone_events3661 where relation project.merge_requests.resource_milestone_events3662 does not have prohibited keys3663 relation_path: "project.merge_requests.resource_milestone_events.milestone", relation_name: :milestone3664 where relation project.merge_requests.resource_milestone_events.milestone3665 does not have prohibited keys3666 relation_path: "project.merge_requests.resource_state_events", relation_name: :resource_state_events3667 where relation project.merge_requests.resource_state_events3668 does not have prohibited keys3669 relation_path: "project.external_pull_requests", relation_name: :external_pull_requests3670 where relation project.external_pull_requests3671 does not have prohibited keys3672 relation_path: "project.commit_notes", relation_name: :commit_notes3673 where relation project.commit_notes3674 does not have prohibited keys3675 relation_path: "project.commit_notes.events", relation_name: :events3676 where relation project.commit_notes.events3677 does not have prohibited keys3678 relation_path: "project.commit_notes.events.push_event_payload", relation_name: :push_event_payload3679 where relation project.commit_notes.events.push_event_payload3680 does not have prohibited keys3681 relation_path: "project.ci_pipelines", relation_name: :ci_pipelines3682 where relation project.ci_pipelines3683 does not have prohibited keys3684 relation_path: "project.ci_pipelines.stages", relation_name: :stages3685 where relation project.ci_pipelines.stages3686 does not have prohibited keys3687 relation_path: "project.ci_pipelines.stages.builds", relation_name: :builds3688 where relation project.ci_pipelines.stages.builds3689 does not have prohibited keys3690 relation_path: "project.ci_pipelines.stages.generic_commit_statuses", relation_name: :generic_commit_statuses3691 where relation project.ci_pipelines.stages.generic_commit_statuses3692 does not have prohibited keys3693 relation_path: "project.ci_pipelines.stages.bridges", relation_name: :bridges3694 where relation project.ci_pipelines.stages.bridges3695 does not have prohibited keys3696 relation_path: "project.ci_pipelines.external_pull_request", relation_name: :external_pull_request3697 where relation project.ci_pipelines.external_pull_request3698 does not have prohibited keys3699 relation_path: "project.ci_pipelines.merge_request", relation_name: :merge_request3700 where relation project.ci_pipelines.merge_request3701 does not have prohibited keys3702 relation_path: "project.ci_pipelines.pipeline_metadata", relation_name: :pipeline_metadata3703 where relation project.ci_pipelines.pipeline_metadata3704 does not have prohibited keys3705 relation_path: "project.auto_devops", relation_name: :auto_devops3706 where relation project.auto_devops3707 does not have prohibited keys3708 relation_path: "project.pipeline_schedules", relation_name: :pipeline_schedules3709 where relation project.pipeline_schedules3710 does not have prohibited keys3711 relation_path: "project.container_expiration_policy", relation_name: :container_expiration_policy3712 where relation project.container_expiration_policy3713 does not have prohibited keys3714 relation_path: "project.protected_branches", relation_name: :protected_branches3715 where relation project.protected_branches3716 does not have prohibited keys3717 relation_path: "project.protected_branches.merge_access_levels", relation_name: :merge_access_levels3718 where relation project.protected_branches.merge_access_levels3719 does not have prohibited keys3720 relation_path: "project.protected_branches.push_access_levels", relation_name: :push_access_levels3721 where relation project.protected_branches.push_access_levels3722 does not have prohibited keys3723 relation_path: "project.protected_tags", relation_name: :protected_tags3724 where relation project.protected_tags3725 does not have prohibited keys3726 relation_path: "project.protected_tags.create_access_levels", relation_name: :create_access_levels3727 where relation project.protected_tags.create_access_levels3728 does not have prohibited keys3729 relation_path: "project.project_feature", relation_name: :project_feature3730 where relation project.project_feature3731 does not have prohibited keys3732 relation_path: "project.custom_attributes", relation_name: :custom_attributes3733 where relation project.custom_attributes3734 does not have prohibited keys3735 relation_path: "project.prometheus_metrics", relation_name: :prometheus_metrics3736 where relation project.prometheus_metrics3737 does not have prohibited keys3738 relation_path: "project.project_badges", relation_name: :project_badges3739 where relation project.project_badges3740 does not have prohibited keys3741 relation_path: "project.ci_cd_settings", relation_name: :ci_cd_settings3742 where relation project.ci_cd_settings3743 does not have prohibited keys3744 relation_path: "project.error_tracking_setting", relation_name: :error_tracking_setting3745 where relation project.error_tracking_setting3746 does not have prohibited keys3747 relation_path: "project.metrics_setting", relation_name: :metrics_setting3748 where relation project.metrics_setting3749 does not have prohibited keys3750 relation_path: "project.boards", relation_name: :boards3751 where relation project.boards3752 does not have prohibited keys3753 relation_path: "project.boards.lists", relation_name: :lists3754 where relation project.boards.lists3755 does not have prohibited keys3756 relation_path: "project.boards.lists.label", relation_name: :label3757 where relation project.boards.lists.label3758 does not have prohibited keys3759 relation_path: "project.boards.lists.label.priorities", relation_name: :priorities3760 where relation project.boards.lists.label.priorities3761 does not have prohibited keys3762 relation_path: "project.service_desk_setting", relation_name: :service_desk_setting3763 where relation project.service_desk_setting3764 does not have prohibited keys3765ResourceLabelEvent3766 behaves like having unique enum values3767 has unique values in "action"3768 behaves like a resource event3769 importable3770 is expected to respond to #importing?3771 is expected to respond to #imported?3772 validations3773 is expected not to allow :user to be ‹nil›3774 when importing3775 is expected to allow :user to be ‹nil›3776 associations3777 is expected to belong to user required: false3778 .created_after3779 returns the expected events3780 returns no events if time is after last record time3781 behaves like a resource event for issues3782 associations3783 is expected to belong to issue required: false3784 .by_issue3785 returns the expected records for an issue with events3786 returns the expected records for an issue with no events3787 .by_issue_ids3788 returns the expected events3789 .by_created_at_earlier_or_equal_to3790 returns the expected events3791 returns the expected events3792 #issuable3793 returns the expected issuable3794 behaves like a resource event for merge requests3795 associations3796 is expected to belong to merge_request required: false3797 .by_merge_request3798 returns the expected records for an issue with events3799 returns the expected records for an issue with no events3800 #issuable3801 returns the expected issuable3802 on callbacks3803 does not trigger note created subscription3804 behaves like a note for work item resource event3805 builds synthetic note with correct synthetic_note_class3806 on callbacks3807 triggers note created subscription3808 associations3809 is expected to belong to label required: false3810 validations3811 is expected to be valid3812 Issuable validation3813 is invalid if issue_id and merge_request_id are missing3814 is invalid if issue_id and merge_request_id are set3815 is valid if only issue_id is set3816 is valid if only merge_request_id is set3817 callbacks3818 #expire_etag_cache3819 expires resource note etag cache on event save3820 expires resource note etag cache on event destroy3821 #outdated_markdown?3822 returns true if label is missing and reference is not empty3823 returns true if reference is not set yet3824 returns true if markdown is outdated3825 returns false if label and reference are set3826 .visible_to_user?3827 returns events with labels accessible by user3828 filters events with public project labels if issues and MRs are private3829 filters events with project labels not accessible by user3830 filters events with group labels not accessible by user3831 #discussion_id3832 generates different discussion ID for events created milliseconds apart3833 with multiple label events3834 builds synthetic note3835Gitlab::ImportExport3836Elements checked:3837{:hashes=>492, :arrays=>{:direct=>0, :pairwise=>271, :fuzzy=>6}, :values=>2890}3838 yields the initial tree when importing and exporting it again3839Snippets::CreateService3840 #execute3841 when ProjectSnippet3842 behaves like a service that creates a snippet3843 creates a snippet with the provided attributes3844 behaves like public visibility level restrictions apply3845 when user is not an admin3846 responds with an error3847 does not create a public snippet3848 when user is an admin3849 responds with success3850 creates a public snippet3851 when visibility level is passed as a string3852 assigns the correct visibility level3853 behaves like checking spam3854 executes SpamActionService3855 behaves like snippet create data is tracked3856 increments count when create succeeds3857 when create fails3858 does not increment count3859 behaves like an error service response when save fails3860 responds with an error3861 does not create the snippet3862 behaves like creates repository and files3863 creates repository3864 commits the files to the repository3865 when repository creation action fails3866 does not create the snippet3867 returns a generic creation error3868 does not return a snippet with an id3869 when repository creation fails with invalid file name3870 returns an appropriate error3871 when the commit action fails3872 does not create the snippet3873 destroys the created repository3874 destroys the snippet_repository3875 logs the error3876 returns a generic error3877 when snippet creation fails3878 does not create repository3879 behaves like after_save callback to store_mentions3880 when mentionable attributes change3881 saves mentions3882 when mentionable attributes do not change3883 does not call store_mentions3884 when save fails3885 does not call store_mentions3886 behaves like when snippet_actions param is present3887 creates a snippet with the provided attributes3888 commit the files to the repository3889 when content or file_name params are present3890 a validation error is raised3891 when snippet_actions param is invalid3892 a validation error is raised3893 when snippet_actions contain an action different from "create"3894 a validation error is raised3895 when "create" operation does not have file_path or is empty3896 generates the file path for the files3897 behaves like invalid params error response3898 responds to errors appropriately3899 when uploaded files are passed to the service3900 does not move uploaded files to the snippet3901 when PersonalSnippet3902 behaves like a service that creates a snippet3903 creates a snippet with the provided attributes3904 behaves like public visibility level restrictions apply3905 when user is not an admin3906 responds with an error3907 does not create a public snippet3908 when user is an admin3909 responds with success3910 creates a public snippet3911 when visibility level is passed as a string3912 assigns the correct visibility level3913 behaves like checking spam3914 executes SpamActionService3915 behaves like snippet create data is tracked3916 increments count when create succeeds3917 when create fails3918 does not increment count3919 behaves like an error service response when save fails3920 responds with an error3921 does not create the snippet3922 behaves like creates repository and files3923 creates repository3924 commits the files to the repository3925 when repository creation action fails3926 does not create the snippet3927 returns a generic creation error3928 does not return a snippet with an id3929 when repository creation fails with invalid file name3930 returns an appropriate error3931 when the commit action fails3932 does not create the snippet3933 destroys the created repository3934 destroys the snippet_repository3935 logs the error3936 returns a generic error3937 when snippet creation fails3938 does not create repository3939 behaves like after_save callback to store_mentions3940 when mentionable attributes change3941 saves mentions3942 when mentionable attributes do not change3943 does not call store_mentions3944 when save fails3945 does not call store_mentions3946 behaves like when snippet_actions param is present3947 creates a snippet with the provided attributes3948 commit the files to the repository3949 when content or file_name params are present3950 a validation error is raised3951 when snippet_actions param is invalid3952 a validation error is raised3953 when snippet_actions contain an action different from "create"3954 a validation error is raised3955 when "create" operation does not have file_path or is empty3956 generates the file path for the files3957 behaves like invalid params error response3958 responds to errors appropriately3959 when the snippet description contains files3960 stores the snippet description correctly3961 when there is a validation error3962 does not move uploaded files to the snippet3963Projects::MoveForksService3964 #execute3965 rollbacks changes if transaction fails3966 when moving a root forked project3967 moves the descendant forks3968 updates the fork network3969 when moving a intermediate forked project3970 moves the descendant forks3971 moves the ascendant fork3972 does not update fork network3973 when moving a leaf forked project3974 moves the ascendant fork3975 does not update fork network3976Awardable3977 Associations3978 is expected to have many award_emoji dependent => destroy3979 ClassMethods3980 orders3981 orders on upvotes3982 orders on downvotes3983 #awarded3984 filters by user and emoji name3985 filters by user and any emoji3986 #not_awarded3987 returns notes not awarded by user3988 #upvotes3989 counts the number of upvotes3990 #downvotes3991 counts the number of downvotes3992 #user_can_award?3993 is truthy when the user is allowed to award emoji3994 is falsy when the project is archived3995 querying award_emoji on an Awardable3996 sorts in ascending fashion3997 #grouped_awards3998 default award emojis3999 includes unused thumbs buttons by default4000 doesn't include unused thumbs buttons when disabled in project4001 includes unused thumbs buttons when enabled in project4002 doesn't include unused thumbs buttons in summary4003 includes used thumbs buttons when disabled in project4004 includes used thumbs buttons in summary4005IssueEntity4006 has Issuable attributes4007 has time estimation attributes4008 web_url4009 when issue is of type task4010 has a work item path with iid4011 type4012 has an issue type4013 current_user4014 has the exprected permissions4015 when issue got moved4016 when user cannot read target project4017 does not return moved_to_id4018 when user can read target project4019 returns moved moved_to_id4020 when issue got duplicated4021 when user cannot read new issue4022 does not return duplicated_to_id4023 when user can read target project4024 returns duplicated duplicated_to_id4025 when issuable in active or archived project4026 when project is active4027 returns archived false4028 returns nil for archived project doc4029 when project is archived4030 returns archived true4031 returns archived project doc4032 behaves like issuable entity current_user properties4033 can_create_confidential_note4034 when user can create confidential notes4035 is expected to equal true4036 when user cannot create confidential notes4037 is expected to eq false4038 when issue has email participants4039 with anonymous user4040 returns obfuscated email participants email4041 with signed in user4042 when user has no role in project4043 returns obfuscated email participants email4044 when user has guest role in project4045 returns obfuscated email participants email4046 when user has (at least) reporter role in project4047 returns full email participants email4048ResourceEvents::ChangeStateService4049 #execute4050 when resource is an Issue4051 when no source is given4052 behaves like a state event4053 creates the expected event if resource has opened state4054 sets the created_at timestamp from the system_note_timestamp4055 creates the expected event if resource has reopened state4056 sets the created_at timestamp from the system_note_timestamp4057 creates the expected event if resource has closed state4058 sets the created_at timestamp from the system_note_timestamp4059 creates the expected event if resource has locked state4060 sets the created_at timestamp from the system_note_timestamp4061 when source commit is given4062 behaves like a state event4063 creates the expected event if resource has opened state4064 sets the created_at timestamp from the system_note_timestamp4065 creates the expected event if resource has reopened state4066 sets the created_at timestamp from the system_note_timestamp4067 creates the expected event if resource has closed state4068 sets the created_at timestamp from the system_note_timestamp4069 creates the expected event if resource has locked state4070 sets the created_at timestamp from the system_note_timestamp4071 when source merge request is given4072 behaves like a state event4073 creates the expected event if resource has opened state4074 sets the created_at timestamp from the system_note_timestamp4075 creates the expected event if resource has reopened state4076 sets the created_at timestamp from the system_note_timestamp4077 creates the expected event if resource has closed state4078 sets the created_at timestamp from the system_note_timestamp4079 creates the expected event if resource has locked state4080 sets the created_at timestamp from the system_note_timestamp4081 when resource is a MergeRequest4082 when no source is given4083 behaves like a state event4084 creates the expected event if resource has opened state4085 sets the created_at timestamp from the system_note_timestamp4086 creates the expected event if resource has reopened state4087 sets the created_at timestamp from the system_note_timestamp4088 creates the expected event if resource has closed state4089 sets the created_at timestamp from the system_note_timestamp4090 creates the expected event if resource has locked state4091 sets the created_at timestamp from the system_note_timestamp4092 when source commit is given4093 behaves like a state event4094 creates the expected event if resource has opened state4095 sets the created_at timestamp from the system_note_timestamp4096 creates the expected event if resource has reopened state4097 sets the created_at timestamp from the system_note_timestamp4098 creates the expected event if resource has closed state4099 sets the created_at timestamp from the system_note_timestamp4100 creates the expected event if resource has locked state4101 sets the created_at timestamp from the system_note_timestamp4102 when source merge request is given4103 behaves like a state event4104 creates the expected event if resource has opened state4105 sets the created_at timestamp from the system_note_timestamp4106 creates the expected event if resource has reopened state4107 sets the created_at timestamp from the system_note_timestamp4108 creates the expected event if resource has closed state4109 sets the created_at timestamp from the system_note_timestamp4110 creates the expected event if resource has locked state4111 sets the created_at timestamp from the system_note_timestamp4112Packages::Debian::ProcessChangesWorker4113 #perform4114 with mocked service4115 calls ProcessChangesService4116 with non existing package file4117 returns early without error4118 with nil package file id4119 returns early without error4120 with non existing user4121 returns early without error4122 with nil user id4123 returns early without error4124 without a distribution4125 removes package file and log exception4126 when the service raises an error4127 removes package file and log exception4128 behaves like an idempotent worker4129 is labeled as idempotent4130 performs multiple times sequentially without raising an exception4131 sets the Debian file type as changes4132Resolvers::NamespaceProjectsResolver4133 has an high complexity regardless of arguments4134 with a group4135 #resolve4136 finds all projects4137 finds all projects including the subgroups4138 with an user namespace4139 finds all projects4140 finds all projects including the subgroups4141 search and similarity sorting4142 returns projects ordered by similarity to the search input4143 filters out result that do not match the search input4144 when `search` parameter is not given4145 returns projects not ordered by similarity4146 when only search term is given4147 filters out result that do not match the search input, but does not sort them4148 ids filtering4149 when ids is provided4150 returns matching project4151 when ids is nil4152 returns all projects4153 when passing a non existent, batch loaded namespace4154 returns nil without breaking4155Gitlab::Diff::FileCollection::PaginatedMergeRequestDiff4156 # order random4157 behaves like unsortable diff files4158 #raw_diff_files4159 does not call Gitlab::Diff::FileCollectionSorter even when sorted is true4160 behaves like unfoldable diff4161 calls Gitlab::Diff::File#unfold_diff_lines with correct position4162 #diff_files4163 returns paginated diff files4164 returns a valid instance of a DiffCollection4165 when first page4166 returns correct diff files4167 when another page4168 returns correct diff files4169 when page is nil4170 returns correct diff files4171 when per_page is nil4172 returns correct diff files4173 when invalid page4174 returns correct diff files4175 when last page4176 returns correct diff files4177 behaves like cacheable diff collection4178 #write_cache4179 calls Gitlab::Diff::HighlightCache#write_if_empty4180 calls Gitlab::Diff::StatsCache#write_if_empty with diff stats4181 #clear_cache4182 calls Gitlab::Diff::HighlightCache#clear4183 calls Gitlab::Diff::StatsCache#clear4184 #diff_files4185 calls Gitlab::Diff::HighlightCache#decorate4186 when there are stats cached4187 does not make a diff stats rpc call4188 when there are no stats cached4189 makes a diff stats rpc call4190MergeRequests::LinkLfsObjectsService4191 when no oldrev and newrev passed4192 behaves like linking LFS objects4193 when source project is the same as target project4194 does not call Projects::LfsPointers::LfsLinkService#execute4195 when source project is different from target project4196 and there are changes4197 and there are LFS objects added4198 calls Projects::LfsPointers::LfsLinkService#execute with OIDs of LFS objects in merge request4199 but there are no LFS objects added4200 does not call Projects::LfsPointers::LfsLinkService#execute4201 and there are no changes4202 does not call Projects::LfsPointers::LfsLinkService#execute4203 when oldrev and newrev are passed4204 behaves like linking LFS objects4205 when source project is the same as target project4206 does not call Projects::LfsPointers::LfsLinkService#execute4207 when source project is different from target project4208 and there are changes4209 and there are LFS objects added4210 calls Projects::LfsPointers::LfsLinkService#execute with OIDs of LFS objects in merge request4211 but there are no LFS objects added4212 does not call Projects::LfsPointers::LfsLinkService#execute4213 and there are no changes4214 does not call Projects::LfsPointers::LfsLinkService#execute4215DesignManagement::SaveDesignsService4216 #execute4217 when the feature is not available4218 does not create an event in the activity stream4219 behaves like a service error4220 returns an error4221 when the feature is available4222 creates a commit, an event in the activity stream and updates the creation count4223 can run the same command in parallel4224 repository existence4225 is ensured when the service runs4226 behaves like issue_edit snowplow tracking4227 behaves like Snowplow event tracking with RedisHLL context4228 behaves like Snowplow event tracking4229 is emitted4230 when the design collection is in the process of being copied4231 behaves like a service error4232 returns an error4233 when the design collection has a copy error4234 resets the copy state4235 the response4236 includes designs with the expected properties4237 saving the file to LFS4238 saves the design to LFS and saves the repository_type of the LfsObjectsProject as design4239 when HEAD branch is different from master4240 does not raise an exception during update4241 when a design is being updated4242 creates a new version for the existing design and updates the file4243 updates UsageData for changed designs4244 records the correct events4245 behaves like issue_edit snowplow tracking4246 behaves like Snowplow event tracking with RedisHLL context4247 behaves like Snowplow event tracking4248 is emitted4249 when uploading a new design4250 does not link the new version to the existing design4251 when detecting content type4252 detects content type when feature flag is enabled4253 skips content type detection when feature flag is disabled4254 when a design has not changed since its previous version4255 does not create a new version, and returns the design in `skipped_designs`4256 when doing a mixture of updates and creations4257 has the correct side-effects4258 when uploading multiple files4259 returns information about both designs in the response4260 has the correct side-effects4261 when uploading too many files4262 returns the correct error4263 when uploading duplicate files4264 returns the correct error4265 when the user is not allowed to upload designs4266 behaves like a service error4267 returns an error4268 failure modes4269 when creating the commit fails4270 behaves like an execution error4271 returns an error4272 when creating the versions fails4273 behaves like a service error4274 returns an error4275 when a design already existed in the repo but we didn't know about it in the database4276 creates the design and a new version for it4277 scalability4278 runs the same queries for all requests, regardless of number of files (PENDING: See: https://gitlab.com/gitlab-org/gitlab/-/issues/213169)4279AutoMergeService4280 .all_strategies_ordered_by_preference4281 returns all strategies in preference order4282 #available_strategies4283 returns available strategies4284 when the head piipeline succeeded4285 returns available strategies4286 #preferred_strategy4287 returns preferred strategy4288 when the head piipeline succeeded4289 returns available strategies4290 .get_service_class4291 returns service instance4292 when strategy is not present4293 returns nil4294 #execute4295 delegates to a relevant service instance4296 when the head pipeline succeeded4297 returns failed4298 when strategy is not specified4299 chooses the most preferred strategy4300 #update4301 when auto merge is enabled4302 delegates to a relevant service instance4303 when auto merge is not enabled4304 returns failed4305 #process4306 delegates to a relevant service instance4307 when auto merge is not enabled4308 returns nil4309 #cancel4310 delegates to a relevant service instance4311 when auto merge is not enabled4312 returns error4313 #abort4314 delegates to a relevant service instance4315 when auto merge is not enabled4316 returns error4317Admin::SetFeatureFlagService4318 # order random4319 sequences of executions4320 if we enable_percentage_of_actors and then disable4321 leaves the flag off4322 if we enable and then enable_percentage_of_actors4323 reports an error4324 if we disable the flag first4325 sets the percentage of actors4326 #execute4327 when we cannot interpret the operation4328 is expected to be error4329 is expected to have attributes {:reason => :illegal_operation}4330 is expected to have attributes {:message => "Cannot set 'abuse_reports_list' (\"unknown\") to \"wibble\""}4331 when the key is absent4332 is expected to be error4333 is expected to have attributes {:reason => :illegal_operation}4334 is expected to have attributes {:message => "Cannot set 'abuse_reports_list' to \"wibble\""}4335 when the value to set cannot be parsed4336 is expected to be error4337 is expected to have attributes {:reason => :illegal_operation}4338 is expected to have attributes {:message => "Not a percentage"}4339 when value is "remove_opt_out"4340 without a target4341 returns an error4342 with a target4343 when there is currently no opt-out4344 returns an error4345 when there is currently an opt-out4346 removes the opt out4347 when value is "opt_out"4348 opts the user and group out4349 without a target4350 is expected to be error4351 is expected to have attributes {:reason => :illegal_operation}4352 when enabling the feature flag4353 enables the feature flag4354 logs the event4355 when the flag is default_enabled4356 leaves the flag enabled4357 when enabling for a user actor4358 enables the feature flag4359 when the flag has been opted out for user4360 records an error4361 when the flag is default_enabled4362 leaves the feature enabled4363 when user does not exist4364 does nothing4365 when enabling for a feature group4366 enables the feature flag4367 when enabling for a project4368 enables the feature flag4369 when enabling for a group4370 enables the feature flag4371 when group does not exist4372 returns an error4373 when enabling for a user namespace4374 enables the feature flag4375 when namespace does not exist4376 returns an error4377 when enabling for a group namespace4378 enables the feature flag4379 when enabling for a repository4380 enables the feature flag4381 when enabling for a user actor and a feature group4382 enables the feature flag4383 when enabling given a percentage of time4384 enables the feature flag4385 when value is a float4386 enables the feature flag4387 with a target4388 is expected to be error4389 is expected to have attributes {:reason => :illegal_operation}4390 when enabling given a percentage of actors4391 enables the feature flag4392 when value is a float4393 enables the feature flag4394 with a target4395 is expected to be error4396 is expected to have attributes {:reason => :illegal_operation}4397 when disabling the feature flag4398 disables the feature flag4399 logs the event4400 when disabling for a user actor4401 disables the feature flag4402 when user does not exist4403 returns an error4404 when disabling for a feature group4405 disables the feature flag4406 when disabling for a project4407 disables the feature flag4408 when disabling for a group4409 disables the feature flag4410 when group does not exist4411 returns an error4412 when disabling for a user namespace4413 disables the feature flag4414 when namespace does not exist4415 returns an error4416 when disabling for a group namespace4417 disables the feature flag4418 when disabling for a user actor and a feature group4419 disables the feature flag4420Integrations::Buildkite4421 behaves like Integrations::BaseCi4422 default values4423 is expected to eq :ci4424 behaves like Integrations::ResetSecretFields4425 #exposing_secrets_fields4426 returns an array of strings4427 #reset_secret_fields?4428 returns false if no exposing field has changed4429 returns true if any exposing field has changed4430 validation callback4431 when an exposing field has changed4432 clears all secret fields4433 when a secret field has been updated4434 does not clear this secret field4435 when a secret field has been updated with the same value4436 does not clear this secret field4437 when no exposing field has changed4438 does not clear any secret fields4439 behaves like Integrations::HasWebHook4440 associations4441 is expected to have one service_hook inverse_of => integration4442 callbacks4443 calls #update_web_hook! when enabled4444 does not call #update_web_hook! when disabled4445 does not call #update_web_hook! when validation fails4446 #hook_url4447 returns a string4448 #url_variables4449 returns a hash4450 #hook_ssl_verification4451 returns a boolean4452 delegates to #enable_ssl_verification if the concern is included4453 #update_web_hook!4454 creates or updates a service hook4455 raises an error if the service hook could not be saved4456 does not attempt to save the service hook if there are no changes4457 #execute_web_hook!4458 creates the webhook if necessary and executes it4459 raises an error if the service hook could not be saved4460 Validations4461 when integration is active4462 is expected to validate that :project_url cannot be empty/falsy4463 is expected to validate that :token cannot be empty/falsy4464 behaves like issue tracker integration URL attribute4465 is expected to allow :project_url to be ‹"https://example.com"›4466 is expected not to allow :project_url to be ‹"example.com"›4467 is expected not to allow :project_url to be ‹"ftp://example.com"›4468 is expected not to allow :project_url to be ‹"herp-and-derp"›4469 when integration is inactive4470 is expected not to validate that :project_url cannot be empty/falsy4471 is expected not to validate that :token cannot be empty/falsy4472 .supported_events4473 supports push, merge_request, and tag_push events4474 commits methods4475 always activates SSL verification after saved4476 #hook_url4477 returns the webhook url4478 #commit_status_path4479 returns the correct status page4480 #build_page4481 returns the correct build page4482 #commit_status4483 returns the contents of the reactive cache4484 #calculate_reactive_cache4485 #commit_status4486 sets commit status to :error when status is 5004487 sets commit status to :error when status is 4044488 passes through build status untouched when status is 2004489 sets commit status to :error with a Net::OpenTimeout error4490 sets commit status to :error with a Net::ReadTimeout error4491 sets commit status to :error with a Net::WriteTimeout error4492 sets commit status to :error with a Gitlab::HTTP::ReadTotalTimeout error4493 sets commit status to :error with a EOFError error4494 sets commit status to :error with a SocketError error4495 sets commit status to :error with a OpenSSL::SSL::SSLError error4496 sets commit status to :error with a OpenSSL::OpenSSLError error4497 sets commit status to :error with a Errno::ECONNRESET error4498 sets commit status to :error with a Errno::ECONNREFUSED error4499 sets commit status to :error with a Errno::EHOSTUNREACH error4500 sets commit status to :error with a Errno::ENETUNREACH error4501 sets commit status to :error with a Gitlab::HTTP::BlockedUrlError error4502 sets commit status to :error with a Gitlab::HTTP::RedirectionTooDeep error4503 sets commit status to :error with a Net::HTTPBadResponse error4504Gitlab::SlashCommands::Command4505 #execute4506 when no command is available4507 displays 404 messages4508 when an unknown command is triggered4509 displays the help message4510 the user can not create an issue4511 rejects the actions4512 when trying to do deployment4513 and user can not create deployment4514 returns action4515 and user has deployment permission4516 returns action4517 when duplicate action exists4518 returns error4519 #match_command4520 IssueShow is triggered4521 is expected to eq Gitlab::SlashCommands::IssueShow4522 IssueCreate is triggered4523 is expected to eq Gitlab::SlashCommands::IssueNew4524 IssueSearch is triggered4525 is expected to eq Gitlab::SlashCommands::IssueSearch4526 IssueMove is triggered4527 is expected to eq Gitlab::SlashCommands::IssueMove4528 IssueComment is triggered4529 is expected to eq Gitlab::SlashCommands::IssueComment4530 when incident declare is triggered4531 IncidentNew is triggered4532 is expected to eq Gitlab::SlashCommands::IncidentManagement::IncidentNew4533 when feature flag is disabled4534 IncidentNew is triggered4535 is expected not to eq Gitlab::SlashCommands::IncidentManagement::IncidentNew4536Gitlab::Ci::Status::Stage::Factory4537 when stage has a core status4538 when core status is created4539 fabricates a core status created4540 extends core status with common stage methods4541 when core status is waiting_for_resource4542 fabricates a core status waiting_for_resource4543 extends core status with common stage methods4544 when core status is preparing4545 fabricates a core status preparing4546 extends core status with common stage methods4547 when core status is pending4548 fabricates a core status pending4549 extends core status with common stage methods4550 when core status is running4551 fabricates a core status running4552 extends core status with common stage methods4553 when core status is success4554 fabricates a core status success4555 extends core status with common stage methods4556 when core status is failed4557 fabricates a core status failed4558 extends core status with common stage methods4559 when core status is canceled4560 fabricates a core status canceled4561 extends core status with common stage methods4562 when stage has warnings4563 fabricates extended "success with warnings" status4564 extends core status with common stage method4565 when stage has manual builds4566 when status is manual4567 fabricates a play manual status4568 when status is scheduled4569 fabricates a play manual status4570 when status is skipped4571 fabricates a play manual status4572Gitlab::Prometheus::Queries::AdditionalMetricsDeploymentQuery4573 queries using specific time4574 metrics query context4575 project has Kubernetes service4576 when user configured kubernetes from CI/CD > Clusters4577 query context contains kube_namespace4578 behaves like query context containing environment slug and filter4579 contains ci_environment_slug4580 contains environment filter4581 project without Kubernetes service4582 query context contains empty kube_namespace4583 behaves like query context containing environment slug and filter4584 contains ci_environment_slug4585 contains environment filter4586 with one group where two metrics is found4587 some queries return results4588 return group data only for queries with results4589 with two groups with one metric each4590 both queries return results4591 return group data both queries4592 one query returns result4593 return group data only for query with results4594Issuable::CommonSystemNotesService4595 on issuable update4596 behaves like system note creation4597 creates 1 system note with the correct content4598 behaves like system note creation4599 creates 1 system note with the correct content4600 behaves like system note creation4601 creates 1 system note with the correct content4602 behaves like system note creation4603 creates 1 system note with the correct content4604 when new label is added4605 creates a resource label event4606 with merge requests Draft note4607 adding Draft note4608 behaves like system note creation4609 creates 1 system note with the correct content4610 and changing title4611 behaves like draft notes creation4612 creates Draft toggle and title change notes4613 removing Draft note4614 behaves like system note creation4615 creates 1 system note with the correct content4616 and changing title4617 behaves like draft notes creation4618 creates Draft toggle and title change notes4619 when changing dates4620 behaves like system note for issuable date changes4621 creates a system note for due_date set4622 creates a system note for start_date set4623 creates a note when both start and due date are changed4624 does not call SystemNoteService if no dates are changed4625 on issuable create4626 does not create system note for title and description4627 creates a resource label event for labels added4628 when changing milestones4629 does not create a system note for milestone set4630 creates a milestone change event4631 when changing dates4632 behaves like system note for issuable date changes4633 creates a system note for due_date set4634 creates a system note for start_date set4635 creates a note when both start and due date are changed4636 does not call SystemNoteService if no dates are changed4637Gitlab::Ci::Config::Entry::Need4638 with simple config4639 when job is specified4640 #valid?4641 is expected to be valid4642 #value4643 returns job needs configuration4644 behaves like job type4645 #type4646 is expected to eq :job4647 when need is empty4648 #valid?4649 is expected not to be valid4650 #errors4651 is returns an error about an empty config4652 behaves like job type4653 #type4654 is expected to eq :job4655 with complex config4656 with job name and artifacts true4657 #valid?4658 is expected to be valid4659 #value4660 returns job needs configuration4661 behaves like job type4662 #type4663 is expected to eq :job4664 with job name and artifacts false4665 #valid?4666 is expected to be valid4667 #value4668 returns job needs configuration4669 behaves like job type4670 #type4671 is expected to eq :job4672 with job name and artifacts nil4673 #valid?4674 is expected to be valid4675 #value4676 returns job needs configuration4677 behaves like job type4678 #type4679 is expected to eq :job4680 without artifacts key4681 #valid?4682 is expected to be valid4683 #value4684 returns job needs configuration4685 behaves like job type4686 #type4687 is expected to eq :job4688 with job name and optional true4689 is expected to be valid4690 behaves like job type4691 #type4692 is expected to eq :job4693 #value4694 returns job needs configuration4695 with job name and optional false4696 is expected to be valid4697 behaves like job type4698 #type4699 is expected to eq :job4700 #value4701 returns job needs configuration4702 with job name and optional nil4703 is expected to be valid4704 behaves like job type4705 #type4706 is expected to eq :job4707 #value4708 returns job needs configuration4709 without optional key4710 is expected to be valid4711 behaves like job type4712 #type4713 is expected to eq :job4714 #value4715 returns job needs configuration4716 when job name is empty4717 #valid?4718 is expected not to be valid4719 #errors4720 is returns an error about an empty config4721 behaves like job type4722 #type4723 is expected to eq :job4724 when job name is not a string4725 #valid?4726 is expected not to be valid4727 #errors4728 is returns an error about job type4729 behaves like job type4730 #type4731 is expected to eq :job4732 when job has unknown keys4733 #valid?4734 is expected not to be valid4735 #errors4736 is returns an error about job type4737 behaves like job type4738 #type4739 is expected to eq :job4740 with cross pipeline artifacts needs4741 when pipeline is provided4742 when job is provided4743 is expected to be valid4744 sets artifacts:true by default4745 sets the type as cross_dependency4746 when artifacts is provided4747 is expected to be valid4748 returns the correct value4749 when config contains not allowed keys4750 is expected not to be valid4751 returns an error4752 when need config is not a string or a hash4753 #valid?4754 is expected not to be valid4755 #errors4756 is returns an error about job type4757Gitlab::Git::Diff4758 .new4759 using a Hash4760 with a small diff4761 initializes the diff4762 does not prune the diff4763 using a diff that is too large4764 prunes the diff4765 using a GitalyClient::Diff4766 with a small diff4767 initializes the diff4768 does not prune the diff4769 using a diff that is too large4770 prunes the diff4771 logs the event4772 using a collapsable diff that is too large4773 prunes the diff as a large diff instead of as a collapsed diff4774 when the patch passed is not UTF-8-encoded4775 encodes diff patch to UTF-84776 using a Gitaly::CommitDelta4777 initializes the diff4778 is not too large4779 has an empty diff4780 is not a binary4781 when diff contains invalid characters4782 when replace_invalid_utf8_chars is true4783 will convert invalid characters and not cause an encoding error4784 when the diff is binary4785 will not try to replace characters4786 when replace_invalid_utf8_chars is false4787 will not try to convert invalid characters4788 straight diffs4789 has the correct size4790 diff4791 is an instance of Diff4792 has the correct new_path4793 has the correct diff4794 .between4795 is expected to be a kind of Gitlab::Git::DiffCollection4796 #size4797 is expected to eq 14798 diff4799 is expected to be a kind of Gitlab::Git::Diff4800 #new_path4801 is expected to eq "files/ruby/feature.rb"4802 #diff4803 is expected to include "+class Feature"4804 .filter_diff_options4805 without default options4806 filters invalid options4807 with default options4808 filters invalid options4809 merges with default options4810 overrides default options4811 #json_safe_diff4812 fake binary message when it detects binary4813 leave non-binary diffs as-is4814 #submodule?4815 is expected to eq false4816 is expected to eq true4817 #line_count4818 returns the correct number of lines4819 #diff_bytesize4820 returns the size of the diff in bytes4821 #too_large?4822 returns true for a diff that is too large4823 returns false for a diff that is small enough4824 returns true for a diff that was explicitly marked as being too large4825 #collapsed?4826 returns false by default even on quite big diff4827 returns false by default for a diff that is small enough4828 returns true for a diff that was explicitly marked as being collapsed4829 #collapsed?4830 returns true for a diff that is quite large4831 returns false for a diff that is small enough4832 #collapse!4833 prunes the diff4834Metrics::Dashboard::Annotation4835 associations4836 is expected to belong to environment required: false inverse_of => metrics_dashboard_annotations4837 is expected to belong to cluster class_name => Clusters::Cluster required: false inverse_of => metrics_dashboard_annotations4838 validation4839 is expected to validate that :description cannot be empty/falsy4840 is expected to validate that :dashboard_path cannot be empty/falsy4841 is expected to validate that :starting_at cannot be empty/falsy4842 is expected to validate that the length of :dashboard_path is at most 2554843 is expected to validate that the length of :panel_xid is at most 2554844 is expected to validate that the length of :description is at most 2554845 orphaned annotation4846 is expected not to be valid4847 reports error about both missing relations4848 ending_at_after_starting_at4849 starting_at: Tue, 28 Mar 2023 00:00:00.000000000 UTC +00:00, ending_at: Wed, 29 Mar 2023 00:00:00.000000000 UTC +00:00, valid?: true, message: nil4850 is expected to equal true4851 starting_at: Wed, 29 Mar 2023 00:00:00.000000000 UTC +00:00, ending_at: nil, valid?: true, message: nil4852 is expected to equal true4853 starting_at: Wed, 29 Mar 2023 00:00:00.000000000 UTC +00:00, ending_at: Wed, 29 Mar 2023 00:00:00.000000000 UTC +00:00, valid?: true, message: nil4854 is expected to equal true4855 starting_at: Wed, 29 Mar 2023 00:00:00.000000000 UTC +00:00, ending_at: Tue, 28 Mar 2023 00:00:00.000000000 UTC +00:00, valid?: false, message: /Ending at can't be before starting_at time/4856 is expected to include /Ending at can't be before starting_at time/4857 starting_at: nil, ending_at: Tue, 28 Mar 2023 00:00:00.000000000 UTC +00:00, valid?: false, message: /Starting at can't be blank/4858 is expected to include /Starting at can't be blank/4859 starting_at: nil, ending_at: nil, valid?: false, message: /Starting at can't be blank/4860 is expected to include /Starting at can't be blank/4861 environments annotation4862 is expected to be valid4863 clusters annotation4864 is expected to be valid4865 annotation with shared ownership4866 reports error about both shared ownership4867 scopes4868 #after4869 returns only younger annotations4870 #before4871 returns only older annotations4872 #for_dashboard4873 returns annotations only for appointed dashboard4874 #ending_before4875 returns annotations only for appointed dashboard4876Mutations::DesignManagement::Upload4877 #resolve4878 when the feature is not available4879 behaves like resource not available4880 raises an error4881 when the feature is available4882 contention in the design repo4883 running requests in parallel4884 does not cause errors4885 running requests in parallel on different issues4886 does not cause errors4887 running requests in serial4888 does not cause errors4889 when the user is not allowed to upload designs4890 behaves like resource not available4891 raises an error4892 with a valid design4893 returns the updated designs4894 when passing an invalid project4895 behaves like resource not available4896 raises an error4897 when passing an invalid issue4898 behaves like resource not available4899 raises an error4900 when creating designs causes errors4901 wraps the errors4902Types::IssueType4903 is expected to expose permissions using Types::PermissionTypes::Issue4904 is expected to eq "Issue"4905 is expected to require graphql authorizations :read_issue4906 is expected to include Types::Notes::NoteableInterface4907 is expected to include Types::CurrentUserTodos4908 has specific fields4909 pagination and count4910 when user does not have the permission4911 does not return an error4912 returns no data4913 count4914 returns total count4915 total count does not change between pages4916 pagination4917 returns new ids during pagination4918 issue notes4919 query issue notes4920 when user signed in4921 behaves like does not include private notes4922 does not return private notes4923 when user member of the project4924 behaves like includes private notes4925 returns all notes4926 when user is anonymous4927 behaves like does not include private notes4928 does not return private notes4929 hidden4930 when issue is hidden4931 returns `true`4932 when issue is visible4933 returns `false`4934 escalation_status4935 is expected to be nil4936 for an incident4937 is expected to be nil4938 with an escalation status record4939 is expected to eq "TRIGGERED"4940 type4941 when the issue_type_uses_work_item_types_table feature flag is enabled4942 gets the type field from the work_item_types table4943 when the issue_type_uses_work_item_types_table feature flag is disabled4944 does not get the type field from the work_item_types table4945Ci::PipelineArtifactUploader4946 behaves like builds correct paths4947 #store_dir4948 behaves like matches the method pattern4949 is expected to match /\h{2}\/\h{2}\/\h{64}\/pipelines\/\d+\/artifacts\/\d+/4950 #cache_dir4951 behaves like matches the method pattern4952 is expected to match /artifacts\/tmp\/cache/4953 #work_dir4954 behaves like matches the method pattern4955 is expected to match /artifacts\/tmp\/work/4956 #upload_path4957 behaves like matches the method pattern4958 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4959 #relative_path4960 is relative (PENDING: Path not set, skipping.)4961 .absolute_path4962 behaves like matches the method pattern4963 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4964 .base_dir4965 behaves like matches the method pattern4966 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4967 path traversal exploits4968 throws an exception4969 when object store is REMOTE4970 behaves like builds correct paths4971 #store_dir4972 behaves like matches the method pattern4973 is expected to match /\h{2}\/\h{2}\/\h{64}\/pipelines\/\d+\/artifacts\/\d+/4974 #cache_dir4975 behaves like matches the method pattern4976 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4977 #work_dir4978 behaves like matches the method pattern4979 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4980 #upload_path4981 behaves like matches the method pattern4982 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4983 #relative_path4984 is relative (PENDING: Path not set, skipping.)4985 .absolute_path4986 behaves like matches the method pattern4987 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4988 .base_dir4989 behaves like matches the method pattern4990 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4991 path traversal exploits4992 throws an exception4993 when file is stored in valid local_path4994 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/artifacts\/\h{2}\/\h{2}\/\h{64}\/pipelines\/129\/artifacts\/17\/code_coverage.json/4995Gitlab::Template::MergeRequestTemplate4996 .all4997 strips the md suffix4998 combines the globals and rest4999 .find5000 returns nil if the file does not exist5001 returns the merge request object of a valid file5002 .by_category5003 return array of templates5004 when repo is bare or empty5005 returns empty array5006 #content5007 loads the full file5008 raises error when file is not found5009 when repo is empty5010 raises file not found5011API::Entities::MergeRequestBasic5012 includes expected fields5013 with :with_api_entity_associations scope5014 avoids N+1 queries5015 reviewers5016 includes assigned reviewers5017 squash5018 is expected to eq true5019 squash_on_merge5020 is expected to eq false5021Metrics::Dashboard::Annotations::CreateService5022 .execute5023 with environment5024 with anonymous user5025 behaves like prevented annotation creation5026 returns error response5027 does not change db state5028 with maintainer user5029 behaves like executed annotation creation5030 returns success response5031 creates annotation5032 with cluster5033 with anonymous user5034 behaves like prevented annotation creation5035 returns error response5036 does not change db state5037 with maintainer user5038 behaves like executed annotation creation5039 returns success response5040 creates annotation5041 with owner user5042 behaves like executed annotation creation5043 returns success response5044 creates annotation5045 non cluster nor environment is supplied5046 behaves like annotation creation failure5047 returns error response5048 missing dashboard_path5049 with maintainer user5050 behaves like annotation creation failure5051 returns error response5052 incorrect dashboard_path5053 with maintainer user5054 behaves like prevented annotation creation5055 returns error response5056 does not change db state5057ImportExportUpload5058 import5059 behaves like stores the Import/Export file5060 stores the import file5061 export5062 behaves like stores the Import/Export file5063 stores the import file5064 scopes5065 .with_export_file5066 returns uploads with export file5067 .updated_before5068 returns uploads for a specified date5069 ActiveRecord callbacks5070 export file is stored in after_commit callback5071 import file is stored in after_save callback5072 export file5073 #export_file_exists? returns false5074 #export_archive_exists? returns false5075 with export5076 #export_file_exists? returns true5077 #export_archive_exists? returns false5078 when object file does not exist5079 #export_file_exists? returns true5080 #export_archive_exists? returns false5081 when checking object existence raises a error5082 #export_file_exists? returns true5083 #export_archive_exists? returns false5084PrometheusMetric5085 is expected to belong to project required: false5086 is expected to validate that :title cannot be empty/falsy5087 is expected to validate that :query cannot be empty/falsy5088 is expected to validate that :group cannot be empty/falsy5089 is expected to validate that :identifier is case-sensitively unique within the scope of :project_id as long as it is not nil5090 behaves like having unique enum values5091 has unique values in "group"5092 common metrics5093 common: false, with_project: true, result: true5094 is expected to eq true5095 common: false, with_project: false, result: false5096 is expected to eq false5097 common: true, with_project: true, result: false5098 is expected to eq false5099 common: true, with_project: false, result: true5100 is expected to eq true5101 #query_series5102 legend: "Some other legend", type: NilClass5103 is expected to be a kind of NilClass5104 legend: "Status Code", type: Array5105 is expected to be a kind of Array5106 #group_title5107 behaves like group_title5108 returns text Response metrics (NGINX Ingress VTS) for group nginx_ingress_vts5109 behaves like group_title5110 returns text Response metrics (NGINX Ingress) for group nginx_ingress5111 behaves like group_title5112 returns text Response metrics (HA Proxy) for group ha_proxy5113 behaves like group_title5114 returns text Response metrics (AWS ELB) for group aws_elb5115 behaves like group_title5116 returns text Response metrics (NGINX) for group nginx5117 behaves like group_title5118 returns text System metrics (Kubernetes) for group kubernetes5119 behaves like group_title5120 returns text Business metrics (Custom) for group business5121 behaves like group_title5122 returns text Response metrics (Custom) for group response5123 behaves like group_title5124 returns text System metrics (Custom) for group system5125 behaves like group_title5126 returns text Cluster Health for group cluster_health5127 #priority5128 group: :nginx_ingress_vts, priority: 105129 is expected to eq 105130 group: :nginx_ingress, priority: 105131 is expected to eq 105132 group: :ha_proxy, priority: 105133 is expected to eq 105134 group: :aws_elb, priority: 105135 is expected to eq 105136 group: :nginx, priority: 105137 is expected to eq 105138 group: :kubernetes, priority: 55139 is expected to eq 55140 group: :business, priority: 05141 is expected to eq 05142 group: :response, priority: -55143 is expected to eq -55144 group: :system, priority: -105145 is expected to eq -105146 group: :cluster_health, priority: 105147 is expected to eq 105148 #required_metrics5149 group: :nginx_ingress_vts, required_metrics: ["nginx_upstream_responses_total", "nginx_upstream_response_msecs_avg"]5150 is expected to eq ["nginx_upstream_responses_total", "nginx_upstream_response_msecs_avg"]5151 group: :nginx_ingress, required_metrics: ["nginx_ingress_controller_requests", "nginx_ingress_controller_ingress_upstream_latency_seconds_sum"]5152 is expected to eq ["nginx_ingress_controller_requests", "nginx_ingress_controller_ingress_upstream_latency_seconds_sum"]5153 group: :ha_proxy, required_metrics: ["haproxy_frontend_http_requests_total", "haproxy_frontend_http_responses_total"]5154 is expected to eq ["haproxy_frontend_http_requests_total", "haproxy_frontend_http_responses_total"]5155 group: :aws_elb, required_metrics: ["aws_elb_request_count_sum", "aws_elb_latency_average", "aws_elb_httpcode_backend_5_xx_sum"]5156 is expected to eq ["aws_elb_request_count_sum", "aws_elb_latency_average", "aws_elb_httpcode_backend_5_xx_sum"]5157 group: :nginx, required_metrics: ["nginx_server_requests", "nginx_server_requestMsec"]5158 is expected to eq ["nginx_server_requests", "nginx_server_requestMsec"]5159 group: :kubernetes, required_metrics: ["container_memory_usage_bytes", "container_cpu_usage_seconds_total"]5160 is expected to eq ["container_memory_usage_bytes", "container_cpu_usage_seconds_total"]5161 group: :business, required_metrics: []5162 is expected to eq []5163 group: :response, required_metrics: []5164 is expected to eq []5165 group: :system, required_metrics: []5166 is expected to eq []5167 group: :cluster_health, required_metrics: ["container_memory_usage_bytes", "container_cpu_usage_seconds_total"]5168 is expected to eq ["container_memory_usage_bytes", "container_cpu_usage_seconds_total"]5169 #to_query_metric5170 converts to queryable metric object5171 queryable metric object has title5172 queryable metric object has y_label5173 queryable metric has no required_metric5174 queryable metrics has query description5175 #to_metric_hash5176 returns a hash suitable for inclusion on a metrics dashboard5177Gitlab::Ci::Config::External::File::Remote5178 #matching?5179 when a remote is specified5180 returns true5181 with a missing remote5182 returns false5183 with a missing remote key5184 returns false5185 #valid?5186 when is a valid remote url5187 is expected to be truthy5188 with an irregular url5189 is expected to be falsy5190 with a timeout5191 is expected to be falsy5192 when is not a yaml file5193 is expected to be falsy5194 with an internal url5195 is expected to be falsy5196 #content5197 with a valid remote file5198 returns the content of the file5199 with a timeout5200 is falsy5201 with an invalid remote url5202 is nil5203 with an internal url5204 is nil5205 #error_message5206 when remote file location is not valid5207 returns an error message describing invalid address5208 when timeout error has been raised5209 returns error message about a timeout5210 when HTTP error has been raised5211 returns error message about a HTTP error5212 when response has 404 status5213 returns error message about a timeout5214 when the URL is blocked5215 includes details about blocked URL5216 when connection refused error has been raised5217 returns details about connection failure5218 #expand_context5219 drops all parameters5220 #metadata5221 is expected to eq {:blob=>nil, :context_project=>nil, :context_sha=>"12345", :extra=>{}, :location=>"https://gitlab.com....yml", :raw=>"https://gitlab.com/gitlab-org/gitlab-foss/blob/1234/.xxxxxxxxxxx.yml", :type=>:remote}5222 #to_hash5223 with a valid remote file5224 returns the content as a hash5225 when it has `include` with rules:exists5226 returns the content as a hash5227Timelogs::CreateService5228 #execute5229 when issuable is an Issue5230 behaves like issuable supports timelog creation service5231 when the user does not have permission5232 returns an error5233 when the user has permissions5234 when spent_at is in the future5235 returns an error5236 when time_spent is zero5237 returns an error5238 when time_spent is nil5239 returns an error5240 when the timelog save fails5241 returns an error5242 when the creation completes sucessfully5243 behaves like success_response5244 sucessfully saves the timelog5245 when issuable is a MergeRequest5246 behaves like issuable supports timelog creation service5247 when the user does not have permission5248 returns an error5249 when the user has permissions5250 when spent_at is in the future5251 returns an error5252 when time_spent is zero5253 returns an error5254 when time_spent is nil5255 returns an error5256 when the timelog save fails5257 returns an error5258 when the creation completes sucessfully5259 behaves like success_response5260 sucessfully saves the timelog5261 when issuable is a WorkItem5262 behaves like issuable supports timelog creation service5263 when the user does not have permission5264 returns an error5265 when the user has permissions5266 when spent_at is in the future5267 returns an error5268 when time_spent is zero5269 returns an error5270 when time_spent is nil5271 returns an error5272 when the timelog save fails5273 returns an error5274 when the creation completes sucessfully5275 behaves like success_response5276 sucessfully saves the timelog5277 when issuable is an Incident5278 behaves like issuable supports timelog creation service5279 when the user does not have permission5280 returns an error5281 when the user has permissions5282 when spent_at is in the future5283 returns an error5284 when time_spent is zero5285 returns an error5286 when time_spent is nil5287 returns an error5288 when the timelog save fails5289 returns an error5290 when the creation completes sucessfully5291 behaves like success_response5292 sucessfully saves the timelog5293Gitlab::GithubImport::Importer::NoteImporter5294 #execute5295 produces a valid Note5296 skips markdown field cache callback5297 when the noteable exists5298 when the author could be found5299 imports the note with the found author as the note author5300 when the note author could not be found5301 imports the note with the project creator as the note author5302 when the note have invalid chars5303 removes invalid chars5304 when note is invalid5305 fails validation5306 when the noteable does not exist5307 does not import the note5308 when the import fails due to a foreign key error5309 does not raise any errors5310 #find_noteable_id5311 returns the ID of the noteable5312ClustersHelper5313 #has_rbac_enabled?5314 when kubernetes platform has been created5315 returns kubernetes platform value5316 when kubernetes platform has not been created yet5317 delegates to cluster provider5318 when ABAC cluster is created5319 delegates to cluster provider5320 #js_clusters_list_data5321 displays endpoint path5322 generates svg image data5323 displays and ancestor_help_path5324 displays empty image path5325 displays add cluster using certificate path5326 displays create cluster path5327 displays project default branch5328 displays project path5329 displays kas address5330 displays GitLab version5331 displays KAS version5332 user has no permissions to create a cluster5333 displays that user can't add cluster5334 user is a maintainer5335 displays that the user can add cluster5336 project cluster5337 doesn't display empty state help text5338 displays display_cluster_agents as true5339 group cluster5340 displays empty state help text5341 displays display_cluster_agents as false5342 does not include a default branch5343 does not include a project path5344 certificate based clusters enabled5345 feature flag is enabled5346 is expected to eq "true"5347 feature flag is disabled5348 is expected to eq "false"5349 #cluster_type_label5350 project cluster5351 is expected to eq "Project cluster"5352 group cluster5353 is expected to eq "Group cluster"5354 instance cluster5355 is expected to eq "Instance cluster"5356 other values5357 diplays generic cluster and reports error5358 #display_cluster_agents?5359 when clusterable is a project5360 allows agents to display5361 when clusterable is a group5362 does not allow agents to display5363 #default_branch_name5364 when clusterable is a project without a repository5365 allows default branch name to display default name from settings5366 when clusterable is a project with a repository5367 allows default branch name to display repository root branch5368 when clusterable is a group5369 does not allow default branch name to display5370gitlab:git rake tasks5371 fsck5372 outputs the integrity check for a repo5373 checksum_projects5374 outputs the checksum for a repo5375 outputs blank checksum for no repo5376 outputs zeroes for empty repo5377 outputs errors5378Gitlab::OptimisticLocking5379 #retry_lock5380 does not change current_scope5381 when state changed successfully without retries5382 does not reload object5383 does not create log record5384 adds number of retries to histogram5385 when at least one retry happened, the change succeeded5386 completes the action5387 creates a single log record5388 adds number of retries to histogram5389 when MAX_RETRIES attempts exceeded5390 raises an exception5391 creates a single log record5392 adds number of retries to histogram5393 #retry_optimistic_lock5394 when locking module is mixed in5395 is an alias for retry_lock5396Gitlab::Runtime5397 when unknown5398 .identify5399 raises an exception when trying to identify5400 .safe_identify5401 returns nil5402 on multiple matches5403 .identify5404 raises an exception when trying to identify5405 .safe_identify5406 returns nil5407 puma without cli_config5408 behaves like valid runtime5409 identifies itself5410 does not identify as others5411 reports its maximum concurrency5412 puma with cli_config5413 identifies as an application runtime5414 behaves like valid runtime5415 identifies itself5416 does not identify as others5417 reports its maximum concurrency5418 when ActionCable worker pool size is configured5419 behaves like valid runtime5420 identifies itself5421 does not identify as others5422 reports its maximum concurrency5423 .puma_in_clustered_mode?5424 when Puma is set up with workers > 05425 is expected to equal true5426 when Puma is set up with workers = 05427 is expected to equal false5428 sidekiq5429 identifies as an application runtime5430 behaves like valid runtime5431 identifies itself5432 does not identify as others5433 reports its maximum concurrency5434 console5435 does not identify as an application runtime5436 behaves like valid runtime5437 identifies itself5438 does not identify as others5439 reports its maximum concurrency5440 test suite5441 does not identify as an application runtime5442 behaves like valid runtime5443 identifies itself5444 does not identify as others5445 reports its maximum concurrency5446 geo log cursor5447 behaves like valid runtime5448 identifies itself5449 does not identify as others5450 reports its maximum concurrency5451 rails runner5452 does not identify as an application runtime5453 behaves like valid runtime5454 identifies itself5455 does not identify as others5456 reports its maximum concurrency5457admin/application_settings/general.html.haml5458 sourcegraph integration5459 when sourcegraph feature is enabled5460 show the form5461 when sourcegraph feature is disabled5462 show the form5463 prompt user about registration features5464 when service ping is enabled5465 behaves like does not render registration features prompt5466 does not render a placeholder input with registration features message5467 with no license and service ping disabled5468 behaves like renders registration features prompt5469 renders a placeholder input with registration features message5470 add license5471 does not show the Add License section5472 jira connect settings5473 shows the jira connect settings section5474 sign-up restrictions5475 renders js-signup-form tag5476 error tracking integration5477 with error tracking feature flag enabled5478 expects error tracking settings to be available5479 expects display token and reset token to be available5480 with error tracking feature flag disabled5481 expects error tracking settings to not be avaiable5482Projects::Forks::SyncService5483 # order random5484 #execute5485 when fork is up-to-date with the upstream5486 does not perform merge5487 when fork is behind the upstream5488 when fork is not ahead of the upstream5489 updates the fork using ff merge5490 when fork is ahead of the upstream5491 and has conflicts with the upstream5492 returns an error5493 and does not have conflicts with the upstream5494 updates the fork using merge5495 when a merge cannot happen due to another ongoing merge5496 does not merge5497 when upstream branch contains lfs reference5498 links fetched lfs objects to the fork project5499 and there are too many of them for a single sync5500 updates the fork successfully5501DependencyProxy::Manifest5502 behaves like ttl_expirable5503 behaves like having unique enum values5504 has unique values in "status"5505 default values5506 is expected to within one second of 2023-03-30 11:56:08 UTC5507 is expected to within one second of 2023-03-29 11:56:08 UTC5508 validations5509 is expected to validate that :status cannot be empty/falsy5510 .read_before5511 returns items with created at older than the supplied number of days5512 .active5513 returns only active items5514 #read!5515 updates read_at5516 behaves like destructible5517 .next_pending_destruction5518 returns the oldest item pending destruction based on updated_at5519 returns the oldest item pending destruction based on created_at5520 behaves like updates namespace statistics5521 when creating5522 schedules a statistic refresh5523 when updating5524 when the statistic attribute has not changed5525 does not schedule a statistic refresh5526 when the statistic attribute has changed5527 schedules a statistic refresh5528 when deleting5529 schedules a statistic refresh5530 relationships5531 is expected to belong to group required: false5532 validations5533 is expected to validate that :group cannot be empty/falsy5534 is expected to validate that :file cannot be empty/falsy5535 is expected to validate that :file_name cannot be empty/falsy5536 is expected to validate that :digest cannot be empty/falsy5537 scopes5538 order_id_desc5539 file is being stored5540 when existing object has local store5541 behaves like mounted file in local store5542 is stored locally5543 when direct upload is enabled5544 behaves like mounted file in object store5545 is stored remotely5546 .find_by_file_name_or_digest5547 no manifest exists5548 is expected to be nil5549 manifest exists and matches file_name5550 is expected to eq #<DependencyProxy::Manifest id: 18, created_at: "2023-03-30 11:56:10.095803345 +0000", updated_at: "2...b3...", content_type: [FILTERED], status: "default", read_at: "2023-03-30 11:56:10.095918715 +0000">5551 manifest exists and matches digest5552 is expected to eq #<DependencyProxy::Manifest id: 19, created_at: "2023-03-30 11:56:10.171305818 +0000", updated_at: "2...b3...", content_type: [FILTERED], status: "default", read_at: "2023-03-30 11:56:10.171423958 +0000">5553Gitlab::Ci::Config::Normalizer5554 .normalize_jobs5555 with parallel config as integer5556 does not have original job5557 has parallelized jobs5558 sets job instance in options5559 parallelizes jobs with original config5560 when the job is not parallelized5561 returns the same hash5562 when there is a job with a slash in it5563 properly parallelizes job names5564 behaves like parallel dependencies5565 when job has dependencies on parallelized jobs5566 parallelizes dependencies5567 does not include original job name in RSpec::ExampleGroups::GitlabCiConfigNormalizer::NormalizeJobs::WithParallelConfigAsInteger::BehavesLikeParallelDependencies::WhenJobHasDependenciesOnParallelizedJobs::Anonymous5568 when there are dependencies which are both parallelized and not5569 parallelizes dependencies5570 includes the regular job in dependencies5571 behaves like parallel needs5572 when job has needs on parallelized jobs5573 parallelizes needs5574 when there are dependencies which are both parallelized and not5575 parallelizes dependencies5576 includes the regular job in dependencies5577 with parallel matrix config5578 does not have original job5579 sets job instance in options5580 sets job variables5581 parallelizes jobs with original config5582 has parallelized jobs5583 behaves like parallel dependencies5584 when job has dependencies on parallelized jobs5585 parallelizes dependencies5586 does not include original job name in RSpec::ExampleGroups::GitlabCiConfigNormalizer::NormalizeJobs::WithParallelMatrixConfig::BehavesLikeParallelDependencies::WhenJobHasDependenciesOnParallelizedJobs::Anonymous5587 when there are dependencies which are both parallelized and not5588 parallelizes dependencies5589 includes the regular job in dependencies5590 behaves like parallel needs5591 when job has needs on parallelized jobs5592 parallelizes needs5593 when there are dependencies which are both parallelized and not5594 parallelizes dependencies5595 includes the regular job in dependencies5596 when parallel config does not matches a factory5597 does not alter the job config5598 when jobs config is nil5599 is expected to eq {}5600Gitlab::Database::LoadBalancing::ConnectionProxy5601 #select5602 performs a read5603 #select_all5604 method signatures match5605 using a SELECT query5606 runs the query on a secondary5607 using a SELECT FOR UPDATE query5608 runs the query on the primary and sticks to it5609 sanitize_limit5610 runs the query on the replica5611 select5612 runs the query on the replica5613 select_one5614 runs the query on the replica5615 select_rows5616 runs the query on the replica5617 quote_column_name5618 runs the query on the replica5619 delete5620 runs the query on the primary and sticks to it5621 delete_all5622 runs the query on the primary and sticks to it5623 insert5624 runs the query on the primary and sticks to it5625 update5626 runs the query on the primary and sticks to it5627 update_all5628 runs the query on the primary and sticks to it5629 exec_insert_all5630 runs the query on the primary and sticks to it5631 methods using exec_insert_all on the connection5632 #upsert5633-- create_table(:_test_connection_proxy_insert_all, {:force=>true})5634 -> 0.0062s5635-- drop_table(:_test_connection_proxy_insert_all, {:force=>true})5636 -> 0.0021s5637 upserts a record and marks the session to stick to the primary5638 #insert_all!5639-- create_table(:_test_connection_proxy_insert_all, {:force=>true})5640 -> 0.0055s5641-- drop_table(:_test_connection_proxy_insert_all, {:force=>true})5642 -> 0.0019s5643 inserts multiple records and marks the session to stick to the primary5644 #insert5645-- create_table(:_test_connection_proxy_insert_all, {:force=>true})5646 -> 0.0058s5647-- drop_table(:_test_connection_proxy_insert_all, {:force=>true})5648 -> 0.0022s5649 inserts a single record and marks the session to stick to the primary5650 #transaction5651 session fallbacks ambiguous queries to replicas5652 with a read query5653 runs the transaction and any nested queries on the replica5654 with a write query5655 raises an exception5656 session does not fallback to replicas for ambiguous queries5657 with a read query5658 runs the transaction and any nested queries on the primary and stick to it5659 with a write query5660 runs the transaction and any nested queries on the primary and stick to it5661 #method_missing5662 runs the query on the primary without sticking to it5663 properly forwards keyword arguments5664 current session prefers to fallback ambiguous queries to replicas5665 runs the query on the replica5666 properly forwards keyword arguments5667 #read_using_load_balancer5668 with a regular session5669 uses a secondary5670 with a regular session and forcing all reads to replicas5671 uses a secondary5672 with a session using the primary but forcing all reads to replicas5673 uses a secondary5674 with a session using the primary5675 uses the primary5676 #write_using_load_balancer5677 uses but does not stick to the primary5678Gitlab::Ci::Build::Policy::Changes5679 #satisfied_by?5680 paths matching5681 is satisfied by matching literal path5682 is satisfied by matching simple pattern5683 is satisfied by matching recusive pattern5684 is satisfied by matching a pattern with a dot5685 is satisfied by matching a pattern with a glob5686 is not satisfied when pattern does not match path5687 is not satisfied when pattern does not match5688 is not satified when pattern with glob does not match5689 when modified paths can not be evaluated5690 is always satisfied5691 gitaly integration5692 is satisfied by changes introduced by a push5693 is not satisfied by changes that are not in the push5694 when branch is created5695 when source is merge request5696 is satified by changes in the merge request5697 is not satified by changes not in the merge request5698 when source is push5699 is always satified5700Ci::Sources::Pipeline5701 is expected to belong to project required: false5702 is expected to belong to pipeline required: false5703 is expected to belong to build class_name => Ci::Build required: false inverse_of => sourced_pipelines5704 is expected to belong to source_project class_name => ::Project required: false5705 is expected to belong to source_job required: false5706 is expected to belong to source_bridge required: false5707 is expected to belong to source_pipeline required: false5708 is expected to validate that :project cannot be empty/falsy5709 is expected to validate that :pipeline cannot be empty/falsy5710 is expected to validate that :source_project cannot be empty/falsy5711 is expected to validate that :source_job cannot be empty/falsy5712 is expected to validate that :source_pipeline cannot be empty/falsy5713 loose foreign key on ci_sources_pipelines.source_project_id5714 behaves like cleanup by a loose foreign key5715 cleans up (delete or nullify) the model5716 loose foreign key on ci_sources_pipelines.project_id5717 behaves like cleanup by a loose foreign key5718 cleans up (delete or nullify) the model5719 partitioning5720 assigns partition_id and source_partition_id from pipeline and source_job (PENDING: Skipping partitioning tests until `ci_builds` is partitioned)5721Projects::HashedStorage::BaseAttachmentService5722 #old_disk_path5723 is expected to respond to #old_disk_path5724 #new_disk_path5725 is expected to respond to #new_disk_path5726 #skipped?5727 is expected to respond to #skipped?5728 #target_path_discardable?5729 returns false5730 #discard_path!5731 renames target path adding a timestamp at the end5732 #move_folder!5733 when old_path is not a directory5734 adds information to the logger and returns true5735Ci::DeleteUnitTestsWorker5736 #perform5737 executes a service5738 behaves like an idempotent worker5739 is labeled as idempotent5740 performs multiple times sequentially without raising an exception5741 only deletes old unit tests and their failures5742Gitlab::Diff::SuggestionsParser5743 .parse5744 single-line suggestions5745 returns a list of Gitlab::Diff::Suggestion5746 parsed suggestion has correct data5747 multi-line suggestions5748 returns a list of Gitlab::Diff::Suggestion5749 suggestion with above and below param has correct data5750 suggestion with above param has correct data5751 suggestion with below param has correct data5752Projects::GroupsFinder5753 #execute5754 Public project5755 behaves like finding related groups5756 returns ancestor groups for this project5757 when the project does not belong to any group5758 is expected to eq []5759 when shared groups option is on5760 returns ancestor and all shared groups5761 when shared_min_access_level is developer5762 returns ancestor and shared groups with at least developer access5763 when shared_visible_only is on5764 returns ancestor and public shared groups5765 when user has access to the private shared group5766 returns ancestor and shared groups user has access to5767 when skip group option is on5768 excludes provided groups5769 when user is not authorized5770 returns ancestor groups for this project5771 when visible shared groups are requested5772 returns ancestor groups and public shared groups for this project5773 Private project5774 behaves like finding related groups5775 returns ancestor groups for this project5776 when the project does not belong to any group5777 is expected to eq []5778 when shared groups option is on5779 returns ancestor and all shared groups5780 when shared_min_access_level is developer5781 returns ancestor and shared groups with at least developer access5782 when shared_visible_only is on5783 returns ancestor and public shared groups5784 when user has access to the private shared group5785 returns ancestor and shared groups user has access to5786 when skip group option is on5787 excludes provided groups5788 when user is not authorized5789 is expected to eq []5790 Missing project5791 is expected to eq []5792DiscussionEntity5793 exposes correct attributes5794 does not include base discussion in the notes5795 resolved_by matches note_user_entity schema5796 exposes the url for custom award emoji5797 when is LegacyDiffDiscussion5798 exposes correct attributes5799 when diff file is present5800 exposes diff file attributes5801Gitlab::SafeRequestStore5802 .store5803 when RequestStore is active5804 uses RequestStore5805 when RequestStore is NOT active5806 does not use RequestStore5807 .begin!5808 when RequestStore is active5809 uses RequestStore5810 when RequestStore is NOT active5811 uses RequestStore5812 .clear!5813 when RequestStore is active5814 uses RequestStore5815 when RequestStore is NOT active5816 uses RequestStore5817 .end!5818 when RequestStore is active5819 uses RequestStore5820 when RequestStore is NOT active5821 uses RequestStore5822 .write5823 when RequestStore is active5824 uses RequestStore5825 does not pass the options hash to the underlying store implementation5826 when RequestStore is NOT active5827 does not use RequestStore5828 does not pass the options hash to the underlying store implementation5829 .[]=5830 when RequestStore is active5831 uses RequestStore5832 when RequestStore is NOT active5833 does not use RequestStore5834 .read5835 when RequestStore is active5836 uses RequestStore5837 when RequestStore is NOT active5838 does not use RequestStore5839 .[]5840 when RequestStore is active5841 uses RequestStore5842 when RequestStore is NOT active5843 does not use RequestStore5844 .exist?5845 when RequestStore is active5846 uses RequestStore5847 when RequestStore is NOT active5848 does not use RequestStore5849 .fetch5850 when RequestStore is active5851 uses RequestStore5852 when RequestStore is NOT active5853 does not use RequestStore5854 .delete5855 when RequestStore is active5856 uses RequestStore5857 when given a block and the key exists5858 does not execute the block5859 when given a block and the key does not exist5860 yields the key and returns the block result5861 when RequestStore is NOT active5862 does not use RequestStore5863 when given a block5864 yields the key and returns the block result5865Gitlab::Ci::Status::Build::Retried5866 #text5867 does not override status text5868 #icon5869 does not override status icon5870 #group5871 does not override status group5872 #favicon5873 does not override status label5874 #label5875 does not override status label5876 #badge_tooltip5877 returns status5878 #status_tooltip5879 with a failed build5880 does override status_tooltip5881 with another build5882 does override status_tooltip5883 .matches?5884 with a retried build5885 is expected to be truthy5886 with a build that has not been retried5887 is expected to be falsy5888Ci::Artifactable5889 artifact properties are included5890 when enum is defined5891 is expected to define :file_format as an enum backed by an integer with values ‹{raw: 1, zip: 2, gzip: 3}›, suffix: true5892 when const is defined5893 is expected to be const defined :FILE_FORMAT_ADAPTERS5894 #each_blob5895 when file format is gzip5896 when gzip file contains one file5897 iterates blob once5898 when gzip file contains three files5899 iterates blob three times5900 when file format is raw5901 iterates blob once5902 when there are no adapters for the file format5903 raises an error5904 pushes artifact_size to application context5905 logs artifact size5906 ActiveRecord scopes5907 .expired_before5908 returns expired artifacts5909 .expired5910 returns all expired artifacts5911 .with_files_stored_locally5912 returns artifacts stored locally5913 .with_files_stored_remotely5914 returns artifacts stored remotely5915 .project_id_in5916 when artifacts belongs to projects5917 returns artifacts belonging to projects5918Ci::PlayManualStageService#execute5919 when pipeline has manual processables5920 starts manual processables from pipeline5921 updates manual processables5922 when pipeline has no manual processables5923 does not update the processables5924 when user does not have permission on a specific processable5925 logs the error5926Ci::FreezePeriod5927 is expected to belong to project required: false5928 is expected to respond to #freeze_start5929 is expected to respond to #freeze_end5930 is expected to respond to #cron_timezone5931 behaves like cleanup by a loose foreign key5932 cleans up (delete or nullify) the model5933 cron validations5934 allows valid cron patterns5935 does not allow invalid cron patterns on freeze_start5936 does not allow invalid cron patterns on freeze_end5937 does not allow an invalid timezone5938 when cron contains trailing whitespaces5939 strips the attribute5940 #status5941 single freeze period5942 behaves like outside freeze period5943 is not frozen5944 behaves like within freeze period5945 is frozen5946 behaves like within freeze period5947 is frozen5948 behaves like outside freeze period5949 is not frozen5950 when period overlaps with itself5951 behaves like within freeze period5952 is frozen5953 behaves like outside freeze period5954 is not frozen5955 #active?5956 when freeze period status is active5957 behaves like a freeze period method5958 returns the correct value5959 when freeze period status is inactive5960 behaves like a freeze period method5961 returns the correct value5962 #time_start5963 behaves like a freeze period method5964 returns the correct value5965 #next_time_start5966 behaves like a freeze period method5967 returns the correct value5968 #time_end_from_now5969 behaves like a freeze period method5970 returns the correct value5971 #time_end_from_start5972 behaves like a freeze period method5973 returns the correct value5974Gitlab::Cache::Import::Caching5975 .read5976 reads a value from the cache5977 returns nil if the cache key does not exist5978 refreshes the cache key if a value is present5979 does not refresh the cache key if a value is empty5980 .read_integer5981 returns an Integer5982 returns nil if no value was found5983 .write5984 writes a value to the cache and returns the written value5985 behaves like validated redis value5986 raise error if value.to_s does not return a String5987 .increment_by5988 behaves like validated redis value5989 raise error if value.to_s does not return a String5990 .increment5991 increment a key and returns the current value5992 .set_add5993 adds a value to a set5994 behaves like validated redis value5995 raise error if value.to_s does not return a String5996 .set_includes?5997 returns false when the key does not exist5998 returns false when the value is not present in the set5999 returns true when the set includes the given value6000 behaves like validated redis value6001 raise error if value.to_s does not return a String6002 .values_from_set6003 returns empty list when the set is empty6004 returns the set list of values6005 .hash_add6006 adds a value to a hash6007 behaves like validated redis value6008 raise error if value.to_s does not return a String6009 .values_from_hash6010 returns empty hash when the hash is empty6011 returns the set list of values6012 .write_multiple6013 sets multiple keys when key_prefix not set6014 sets multiple keys with correct prefix6015 behaves like validated redis value6016 raise error if value.to_s does not return a String6017 .expire6018 sets the expiration time of a key6019 .write_if_greater6020 behaves like validated redis value6021 raise error if value.to_s does not return a String6022Security::LicenseComplianceJobsFinder6023 behaves like Security::JobsFinder6024 #new6025 does not get initialized for unsupported job types6026 #execute6027 behaves like JobsFinder core functionality6028 when the pipeline has no jobs6029 is expected to be empty6030 when the pipeline has no Secure jobs6031 is expected to be empty6032 when the pipeline only has jobs without report artifacts6033 is expected to be empty6034 when the pipeline only has jobs with reports unrelated to Secure products6035 is expected to be empty6036 when the pipeline only has jobs with reports with paths similar but not identical to Secure reports6037 is expected to be empty6038 when there is more than one pipeline6039 returns jobs associated with provided pipeline6040 #execute6041 returns only the license_scanning job6042Gitlab::RackAttack6043 .configure6044 extends the request class6045 configures the throttle response6046 configures the safelist6047 configures throttles if no dry-run was configured6048 configures tracks if dry-run was configured for all throttles6049 configures tracks and throttles with a selected set of dry-runs6050 enables dry-runs for `throttle_unauthenticated_api` and `throttle_unauthenticated_web` when selecting `throttle_unauthenticated`6051 user allowlist6052 is empty6053 reflects GITLAB_THROTTLE_USER_ALLOWLIST6054 .throttled_response_headers6055 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3600, :epoch_time=>1609842570}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"60", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1830"}6056 generates accurate throttled headers6057 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3600, :epoch_time=>1609844399}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"60", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1"}6058 generates accurate throttled headers6059 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3600, :epoch_time=>1609840800}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"60", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"3600"}6060 generates accurate throttled headers6061 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3600, :epoch_time=>1609889400}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"60", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609891200", "RateLimit-ResetTime"=>"Wed, 06 Jan 2021 00:00:00 GMT", "Retry-After"=>"1800"}6062 generates accurate throttled headers6063 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3400, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"57", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1800"}6064 generates accurate throttled headers6065 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3700, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"62", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1800"}6066 generates accurate throttled headers6067 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>59, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"1", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1800"}6068 generates accurate throttled headers6069 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>61, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"2", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1800"}6070 generates accurate throttled headers6071 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>15 seconds, :limit=>10, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"40", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609842615", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 10:30:15 GMT", "Retry-After"=>"15"}6072 generates accurate throttled headers6073 matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>27 seconds, :limit=>10, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"23", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609842627", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 10:30:27 GMT", "Retry-After"=>"27"}6074 generates accurate throttled headers6075Gitlab::Ci::Build::Artifacts::Metadata6076 metadata file exists6077 #find_entries! empty string6078 matches correct paths6079 matches metadata for every path6080 return Hashes for each metadata6081 #find_entries! other_artifacts_0.1.2/6082 matches correct paths6083 #find_entries! other_artifacts_0.1.2/another-subdirectory/6084 matches correct paths6085 #find_entries! recursively for other_artifacts_0.1.2/6086 matches correct paths6087 #to_entry6088 is expected to be an instance of Gitlab::Ci::Build::Artifacts::Metadata::Entry6089 #full_version6090 is expected to eq "GitLab Build Artifacts Metadata 0.0.1"6091 #version6092 is expected to eq "0.0.1"6093 #errors6094 is expected to eq {}6095 metadata file does not exist6096 #find_entries!6097 raises error6098 metadata file is invalid6099 #find_entries!6100 raises error6101 generated metadata6102 #find_entries!6103 reads expected number of entries6104Issues::RebalancingWorker6105 has the `until_executed` deduplicate strategy6106 #perform6107 without root_namespace param6108 is labeled as idempotent6109 performs multiple times sequentially without raising an exception6110 is labeled as idempotent6111 performs multiple times sequentially without raising an exception6112 behaves like running the worker6113 runs an instance of Issues::RelativePositionRebalancingService6114 anticipates there being too many concurent rebalances6115 takes no action if the value is nil6116 does not schedule a new rebalance if it finished under 1h ago6117 behaves like safely handles non-existent ids6118 anticipates the inability to find the issue6119 with root_namespace param6120 is labeled as idempotent6121 performs multiple times sequentially without raising an exception6122 is labeled as idempotent6123 performs multiple times sequentially without raising an exception6124 behaves like running the worker6125 runs an instance of Issues::RelativePositionRebalancingService6126 anticipates there being too many concurent rebalances6127 takes no action if the value is nil6128 does not schedule a new rebalance if it finished under 1h ago6129 behaves like safely handles non-existent ids6130 anticipates the inability to find the issue6131Gitlab::Ci::Config::Entry::Prefix6132 validations6133 behaves like key entry validations6134 when entry value contains slash6135 behaves like key with slash6136 is invalid6137 reports errors with config value6138 when entry value contains URI encoded slash (%2F)6139 behaves like key with slash6140 is invalid6141 reports errors with config value6142 when entry value is a dot6143 behaves like key with only dots6144 is invalid6145 reports errors with config value6146 when entry value is two dots6147 behaves like key with only dots6148 is invalid6149 reports errors with config value6150 when entry value is a URI encoded dot (%2E)6151 behaves like key with only dots6152 is invalid6153 reports errors with config value6154 when entry value is two URI encoded dots (%2E)6155 behaves like key with only dots6156 is invalid6157 reports errors with config value6158 when entry value is one dot and one URI encoded dot6159 behaves like key with only dots6160 is invalid6161 reports errors with config value6162 when key is a string6163 #value6164 returns key value6165 #valid?6166 is valid6167 when entry value is not correct6168 #errors6169 saves errors6170 .default6171 returns default key6172Gitlab::Analytics::CycleAnalytics::RecordsFetcher6173 #serialized_records6174 for issue based stage6175 returns all records6176 passes a hash with all expected attributes to the serializer6177 when records are loaded by guest6178 filters out confidential issues6179 for merge request based stage6180 returns all records6181 passes a hash with all expected attributes to the serializer6182 pagination6183 limits the results6184 loads the record for the next page6185User6186 # order random6187 #valid_password?6188 when the default encryption method is BCrypt6189 behaves like password validation fails when the password is encrypted using an unsupported method6190 is expected to eq false6191 when the user password PBKDF2+SHA5126192 is expected to eq true6193 re-encrypts the password as BCrypt6194 when the default encryption method is PBKDF2+SHA512 and the user password is BCrypt6195 behaves like password validation fails when the password is encrypted using an unsupported method6196 is expected to eq false6197 when the user password BCrypt6198 is expected to eq true6199 re-encrypts the password as PBKDF2+SHA5126200 #password=6201 calls default Devise encryptor and not the PBKDF2 encryptor6202 saves the password in BCrypt format6203 when FIPS mode is enabled6204 calls PBKDF2 digest and not the default Devise encryptor6205 saves the password in PBKDF2 format6206 #authenticatable_salt6207 when password is stored in BCrypt format6208 returns the first 30 characters of the encrypted_password6209 when password is stored in PBKDF2 format6210 uses the decoded password salt6211 does not use the first 30 characters of the encrypted_password6212 when the encrypted_password is an unknown type6213 returns the first 30 characters of the encrypted_password6214Projects::GroupLinks::CreateService#execute6215 when user has proper membership to share a group6216 updates authorization6217 behaves like shareable6218 adds group to project6219 with specialized project_authorization workers6220 schedules authorization update for users with access to group6221 when sharing outside the hierarchy is disabled6222 behaves like not shareable6223 does not share and returns an error6224 when group is inside hierarchy6225 behaves like shareable6226 adds group to project6227 when user does not have permissions for the group6228 behaves like not shareable6229 does not share and returns an error6230 when group is blank6231 behaves like not shareable6232 does not share and returns an error6233Gitlab::Ci::Config::Entry::Service6234 when configuration is a string6235 #valid?6236 is valid6237 #value6238 returns valid hash6239 #image6240 returns service's image name6241 #alias6242 returns service's alias6243 #command6244 returns service's command6245 #ports6246 returns service's ports6247 when configuration is a hash6248 #valid?6249 is valid6250 #value6251 returns valid hash6252 #image6253 returns service's image name6254 #alias6255 returns service's alias6256 #command6257 returns service's command6258 #entrypoint6259 returns service's entrypoint6260 #pull_policy6261 returns nil6262 when configuration has ports6263 when with_image_ports metadata is not enabled6264 #valid?6265 is not valid6266 when with_image_ports metadata is enabled6267 #valid?6268 is valid6269 when unknown port keys detected6270 is not valid6271 #ports6272 returns image's ports6273 when configuration has pull_policy6274 #valid?6275 is valid6276 #value6277 returns value6278 when entry value is not correct6279 #errors6280 saves errors6281 #valid?6282 is not valid6283 when unexpected key is specified6284 #errors6285 saves errors6286 #valid?6287 is not valid6288 when service has ports6289 alias field is mandatory6290 when service does not have ports6291 alias field is optional6292Gitlab::Security::ScanConfiguration6293 #available?6294 with a core scanner6295 type: :sast6296 is expected to be truthy6297 type: :sast_iac6298 is expected to be truthy6299 type: :secret_detection6300 is expected to be truthy6301 type: :container_scanning6302 is expected to be truthy6303 with custom scanner6304 is expected to be falsey6305 #configured?6306 is expected to be falsey6307 #configuration_path6308 is expected to be nil6309 #meta_info_path6310 is expected to be nil6311 #can_enable_by_merge_request?6312 with a core scanner6313 type: :sast6314 is expected to be truthy6315 type: :sast_iac6316 is expected to be truthy6317 type: :secret_detection6318 is expected to be truthy6319 with a custom scanner6320 is expected to be falsey6321Gitlab::Harbor::Query6322 Validations6323 page6324 with valid page6325 initialize successfully6326 with invalid page6327 initialize failed6328 limit6329 with valid limit6330 initialize successfully6331 with invalid limit6332 with limit less than 06333 initialize failed6334 with limit greater than 256335 initialize failed6336 repository_id6337 with valid repository_id6338 initialize successfully6339 with invalid repository_id6340 initialize failed6341 artifact_id6342 with valid artifact_id6343 initialize successfully6344 with invalid artifact_id6345 initialize failed6346 sort6347 with valid sort6348 initialize successfully6349 with invalid sort6350 initialize failed6351 search6352 with valid search6353 initialize successfully6354 with invalid search6355 initialize failed6356 #repositories6357 when params is {}6358 fills default params6359 when params contains options6360 fills params with standard of Harbor6361 when params contains invalid sort option6362 ignores invalid sort params6363 when client.get_repositories returns data6364 returns the right repositories data6365 #artifacts6366 when params is {}6367 fills default params6368 when params contains options6369 fills params with standard of Harbor6370 when params contains invalid sort option6371 ignores invalid sort params6372 when client.get_artifacts returns data6373 returns the right artifacts data6374 #tags6375 when params is {}6376 fills default params6377 when params contains options6378 fills params with standard of Harbor6379 when params contains invalid sort option6380 ignores invalid sort params6381 when client.get_tags returns data6382 returns the right tags data6383ColorValidator6384 fails fast for long invalid string6385 color: "#000abc", is_valid: true6386 only accepts valid colors6387 color: "#aaa", is_valid: true6388 only accepts valid colors6389 color: "#BBB", is_valid: true6390 only accepts valid colors6391 color: "#cCc", is_valid: true6392 only accepts valid colors6393 color: "#ffff", is_valid: false6394 only accepts valid colors6395 color: "#000111222", is_valid: false6396 only accepts valid colors6397 color: "invalid", is_valid: false6398 only accepts valid colors6399 color: "red", is_valid: false6400 only accepts valid colors6401 color: "000", is_valid: false6402 only accepts valid colors6403 color: nil, is_valid: true6404 only accepts valid colors6405 color: "", is_valid: false6406 only accepts valid colors6407 color: Thu, 30 Mar 2023 11:40:30.143125182 UTC +00:00, is_valid: false6408 only accepts valid colors6409 color: #<Gitlab::Color:0x00007f54e8fbc248 @value="#FF0000">, is_valid: true6410 only accepts valid colors6411 when color must be present6412 rejects nil6413Tooling::Danger::FeatureFlag6414 #feature_flag_files6415 retrieves added feature flag files6416 with added added feature flag files6417 returns an array of Found objects6418 without added added feature flag files6419 returns an array of Found objects6420 retrieves modified feature flag files6421 with modified modified feature flag files6422 returns an array of Found objects6423 without modified modified feature flag files6424 returns an array of Found objects6425 retrieves deleted feature flag files6426 with deleted deleted feature flag files6427 returns an array of Found objects6428 without deleted deleted feature flag files6429 returns an array of Found objects6430 Tooling::Danger::FeatureFlag::Found6431 #name6432 returns value from the YAML6433 #introduced_by_url6434 returns value from the YAML6435 #rollout_issue_url6436 returns value from the YAML6437 #milestone6438 returns value from the YAML6439 #type6440 returns value from the YAML6441 #group6442 returns value from the YAML6443 #default_enabled6444 returns value from the YAML6445 #raw6446 returns the raw YAML6447 #group_match_mr_label?6448 when group is nil6449 is true only if MR has no group label6450 when group is not nil6451 is true only if MR has the same group label6452API::Entities::ProjectImportStatus6453 #as_json6454 when no import state exists6455 includes basic fields and no failures6456 when import has not finished yet6457 includes basic fields and no failures6458 when import has finished with failed relations6459 includes basic fields with failed relations6460 when import has failed6461 includes basic fields with import error6462 when importing from github6463 exposes the import stats6464WebHooks::DestroyService6465 #execute6466 when the user does not have permission6467 is an error6468 when the user does have permission6469 is successful6470 destroys the hook6471 does not destroy logs6472 schedules the destruction of logs6473 when the hook fails to destroy6474 is not a success6475ErrorTracking::SentryClient::ApiUrls6476 # order random6477 #projects_url6478 behaves like correct url6479 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/"6480 behaves like correct url with extra slashes6481 behaves like correct url6482 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/"6483 #issue_url6484 behaves like correct url6485 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/"6486 behaves like correct url with extra slashes6487 behaves like correct url6488 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/"6489 behaves like correctly escapes issue ID6490 with param a string with reserved chars6491 is expected to include "123%24%25"6492 with param a symbol with reserved chars6493 is expected to include "123%24%25"6494 with param an integer6495 is expected to include "12345678"6496 #issue_latest_event_url6497 behaves like correct url6498 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/events/latest/"6499 behaves like correct url with extra slashes6500 behaves like correct url6501 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/events/latest/"6502 behaves like correctly escapes issue ID6503 with param a string with reserved chars6504 is expected to include "123%24%25"6505 with param a symbol with reserved chars6506 is expected to include "123%24%25"6507 with param an integer6508 is expected to include "12345678"6509 #issues_url6510 behaves like correct url6511 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project/issues/"6512 behaves like correct url with extra slashes6513 behaves like correct url6514 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project/issues/"6515projects/issues/_issue.html.haml6516 timestamp6517 when issue is open6518 shows last updated date6519 when issue is closed6520 shows closed date6521 when issue is closed but closed_at is empty6522 shows last updated date6523 when issue is service desk issue6524 with anonymous user6525 obfuscates service_desk_reply_to email for anonymous user6526 with signed in user6527 when user has no role in project6528 obfuscates service_desk_reply_to email6529 when user has guest role in project6530 obfuscates service_desk_reply_to email6531 when user has (at least) reporter role in project6532 shows full service_desk_reply_to email6533Gitlab::Database::BackgroundMigration::HealthStatus::Indicators::WriteAheadLog6534 #evaluate6535 remembers the indicator class6536 returns NoSignal signal in case the feature flag is disabled6537 returns NoSignal signal when WAL archive queue can not be calculated6538 uses primary database6539 when WAL archive queue size is below the limit6540 returns Normal signal6541 when WAL archive queue size is above the limit6542 returns Stop signal6543Sidebars::YourWork::Menus::MergeRequestsMenu6544 # order random6545 #has_pill?6546 when count is zero6547 returns false6548 when count is larger than zero6549 returns true6550 submenu items6551 order: 0, title: "Assigned", key: :assigned6552 renders items in the right order6553 when there are no MR counts6554 shows a pill even though count is zero6555 when there are MR counts6556 shows a pill with the correct count6557 order: 1, title: "Review requests", key: :review_requested6558 renders items in the right order6559 when there are no MR counts6560 shows a pill even though count is zero6561 when there are MR counts6562 shows a pill with the correct count6563 #pill_count6564 returns the assigned_open_merge_requests_count of the user6565 memoizes the query6566Namespaces::ScheduleAggregationWorker#perform6567 when group is the root ancestor6568 with remove_aggregation_schedule_lease feature flag enabled6569 when aggregation schedule does not exist6570 behaves like schedule root statistic worker6571 enqueues only RootStatisticsWorker6572 does not change AggregationSchedule count6573 when aggregation schedule does exist6574 behaves like schedule root statistic worker6575 enqueues only RootStatisticsWorker6576 does not change AggregationSchedule count6577 with remove_aggregation_schedule_lease feature flag disabled6578 when aggregation schedule exists6579 does not create a new one6580 when aggregation schedule does not exist6581 creates one6582 when group is not the root ancestor6583 with remove_aggregation_schedule_lease feature flag enabled6584 behaves like schedule root statistic worker6585 enqueues only RootStatisticsWorker6586 does not change AggregationSchedule count6587 with remove_aggregation_schedule_lease feature flag disabled6588 creates an aggregation schedule for the root6589 when namespace does not exist6590 logs the error6591 behaves like an idempotent worker6592 is labeled as idempotent6593 performs multiple times sequentially without raising an exception6594 with remove_aggregation_schedule_lease feature flag disabled6595 creates a single aggregation schedule6596WebHooks::WebHooksHelper6597 #show_project_hook_failed_callout?6598 all conditions are met6599 is true6600 stores a value6601 one condition is not met6602 namely user is logged in6603 is false6604 namely the user has permission6605 is false6606 namely a hook has failed6607 is false6608Integrations::GooglePlay6609 # order random6610 when integration is enabled6611 #fields6612 returns custom fields6613 #test6614 returns true for a successful request6615 returns false for an invalid request6616 #help6617 renders prompt information6618 .to_param6619 returns the name of the integration6620 #ci_variables6621 returns vars when the integration is activated6622 when integration is disabled6623 #ci_variables6624 returns an empty array6625 Validations6626 when active6627 is expected to validate that :service_account_key_file_name cannot be empty/falsy6628 is expected to validate that :service_account_key cannot be empty/falsy6629 is expected to validate that :package_name cannot be empty/falsy6630 is expected to allow :service_account_key to be ‹"{\n \"type\": \"service_account\",\n \"project_id\": \"demo-app-123\",\n \"private_key_id\": \"47f0b1700983da548af6fcd37007f42996099999\",\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDJn8w20WcN+fi5\\nIhO1BEFCv7ExK8J5rW5Pc8XpJgpQoL5cfv6qC6aS+x4maI7S4AG7diqXBLCfjlnA\\nqBzXwCRnnPtQhu+v1ehAj5fGNa7F51f9aacRNmKdHzNmWZEPDuLqq0I/Ewcsotu+\\nnb+tCYk1o2ahyPZau8JtXFZs7oZb7SrfgoSJemccxeVreGm1Dt6SM74/3qJAeHN/\\niK/v0IiQP1GS4Jxgz38XQGo+jiTpNrFcf4S0R...›6631 is expected not to allow :service_account_key to be ‹"{\"name\":\"H5bp\",\"path\":\"h5bp\",\"owner_id\":null,\"created_at\":\"2020-01-09 12:08:57 UTC\",\"updated_at\":\"2020-01-09 12:08:57 UTC\",\"description\":\"A voluptate non sequi temporibus quam at.\",\"avatar\":{\"url\":null},\"membership_lock\":false,\"share_with_group_lock\":false,\"visibility_level\":20,\"request_access_enabled\":true,\"ldap_sync_status\":\"ready\",\"ldap_sync_error\":null,\"ldap_sync_last_update_at\":null,\"ldap_sync_last_successful_update_at\":null,\"ldap_sync_last_sync...›6632 is expected to allow :package_name to be ‹"com.example.myapp"›6633 is expected to allow :package_name to be ‹"com.example.myorg.myapp"›6634 is expected to allow :package_name to be ‹"com_us.example.my_org.my_app"›6635 is expected to allow :package_name to be ‹"a.a.a"›6636 is expected not to allow :package_name to be ‹"com.example"›6637 is expected not to allow :package_name to be ‹"com"›6638 is expected not to allow :package_name to be ‹"com.example.my app"›6639 is expected not to allow :package_name to be ‹"1com.example.myapp"›6640 is expected not to allow :package_name to be ‹"com.1example.myapp"›6641 is expected not to allow :package_name to be ‹"com.example._myapp"›6642RecordsUploads6643 callbacks6644 #record_upload after `store`6645 #destroy_upload after `remove`6646 #record_upload callback6647 creates an Upload record after store6648 creates a new record and assigns size, path, model, and uploader6649 does not create an Upload record when the file doesn't exist6650 does not create an Upload record if model is missing6651 destroys Upload records at the same path before recording6652 does not affect other uploads with different model but the same path6653 #destroy_upload callback6654 destroys Upload records at the same path after removal6655 #filename6656 gets the filename from the path recorded in the database, not CarrierWave6657Preloaders::UserMaxAccessLevelInGroupsPreloader6658 when the preloader is used6659 when user has indirect access to groups6660 when traversal_ids feature flag is disabled6661 behaves like executes N max member permission queries to the DB6662 executes the specified max membership queries6663 caches the correct access_level for each group6664 when traversal_ids feature flag is enabled6665 behaves like executes N max member permission queries to the DB6666 executes the specified max membership queries6667 caches the correct access_level for each group6668 for groups arising from group shares6669 sets the right access level in cache for groups arising from group shares6670 when the preloader is not used6671 behaves like executes N max member permission queries to the DB6672 executes the specified max membership queries6673 caches the correct access_level for each group6674Sidebars::UserSettings::Menus::AccessTokensMenu6675 # order random6676 #render?6677 when personal access tokens are disabled6678 when user is logged in6679 does not render6680 when user is not logged in6681 does not render6682 when personal access tokens are enabled6683 when user is logged in6684 renders6685 when user is not logged in6686 does not render6687 behaves like User settings menu6688 does not contain any sub menu6689 renders the correct link6690 renders the correct title6691 renders the correct icon6692 defines correct active route6693Packages::BuildInfo6694 relationships6695 is expected to belong to package required: false6696 is expected to belong to pipeline required: false6697 with some build infos6698 .pluck_pipeline_ids6699 is expected to eq [179, 180, 181]6700 .without_empty_pipelines6701 is expected to contain exactly #<Packages::BuildInfo id: 1, package_id: 10, pipeline_id: 179>, #<Packages::BuildInfo id: 2, package_id: 10, pipeline_id: 180>, and #<Packages::BuildInfo id: 3, package_id: 10, pipeline_id: 181>6702 .order_by_pipeline_id asc6703 is expected to eq [#<Packages::BuildInfo id: 1, package_id: 10, pipeline_id: 179>, #<Packages::BuildInfo id: 2, package_id: 10, pipeline_id: 180>, #<Packages::BuildInfo id: 3, package_id: 10, pipeline_id: 181>]6704 .order_by_pipeline_id desc6705 is expected to eq [#<Packages::BuildInfo id: 3, package_id: 10, pipeline_id: 181>, #<Packages::BuildInfo id: 2, package_id: 10, pipeline_id: 180>, #<Packages::BuildInfo id: 1, package_id: 10, pipeline_id: 179>]6706 .with_pipeline_id_less_than6707 is expected to contain exactly #<Packages::BuildInfo id: 1, package_id: 10, pipeline_id: 179>6708 .with_pipeline_id_greater_than6709 is expected to contain exactly #<Packages::BuildInfo id: 3, package_id: 10, pipeline_id: 181>6710Gitlab::RepositoryCache::Preloader6711 #preload6712 when the values are already cached6713 prevents individual cache reads for cached methods6714 when values are not cached6715 reads and writes from cache individually6716Packages::Dependency6717 relationships6718 is expected to have many dependency_links6719 validations6720 is expected to validate that :name cannot be empty/falsy6721 is expected to validate that :version_pattern cannot be empty/falsy6722 is expected to validate that :name is case-sensitively unique within the scope of :version_pattern6723 .ids_for_package_names_and_version_patterns6724 is expected to contain exactly 4 and 56725 with unknown names6726 is expected to be empty6727 with unknown version patterns6728 is expected to be empty6729 with a name bigger than column size6730 is expected to contain exactly 4 and 56731 with a version pattern bigger than column size6732 is expected to contain exactly 4 and 56733 with too big parameter6734 is expected to raise ArgumentError with "Too many names_and_version_patterns"6735 with parameters size6736 above the chunk size6737 is expected to contain exactly 4, 5, 6, 7, 8, 9, and 106738 selecting too many rows6739 is expected to raise ArgumentError with "Too many Dependencies selected"6740 .for_package_names_and_version_patterns6741 is expected to contain exactly #<Packages::Dependency id: 11, name: "foo", version_pattern: "~1.0.0"> and #<Packages::Dependency id: 12, name: "bar", version_pattern: "~2.5.0">6742 with unknown names6743 is expected to be empty6744 with unknown version patterns6745 is expected to be empty6746Members::UnassignIssuablesService6747 #execute6748 when a user leaves a project6749 behaves like un-assigning issuables6750 removes issuable assignments6751 invalidates user cache6752 when a user leaves a group6753 behaves like un-assigning issuables6754 removes issuable assignments6755 invalidates user cache6756Gitlab::Ci::Reports::Security::Locations::Sast6757 behaves like vulnerability location6758 #initialize6759 when all params are given6760 initializes an instance6761 param: :file_path6762 when param file_path is missing6763 raises an error6764 param: :start_line6765 when param start_line is missing6766 raises an error6767 #fingerprint6768 generates expected fingerprint6769 #fingerprint_path6770 generates expected fingerprint6771 #==6772 returns true when fingerprints are equal6773 returns false when fingerprints are different6774MergeRequestMetricsService6775 #merge6776 updates metrics6777 #close6778 updates metrics6779 #reopen6780 updates metrics6781BulkImports::Groups::Transformers::MemberAttributesTransformer6782 returns nil when receives no data6783 returns nil when no user is found6784 when the user is not confirmed6785 returns nil even when the primary email match6786 returns nil even when a secondary email match6787 when the user is confirmed6788 finds the user by the primary email6789 finds the user by the secondary email6790 format access level6791 ignores record if no access level is given6792 ignores record if is not a valid access level6793 source user id caching6794 when user gid is present6795 caches source user id6796 when user gid is missing6797 does not use caching6798Gitlab::Diff::Rendered::Notebook::DiffFileHelper6799 #strip_diff_frontmatter6800 diff: "FileLine1\nFileLine2\n@@ -1,76 +1,74 @@\nhello\n", result: "@@ -1,76 +1,74 @@\nhello\n"6801 is expected to eq "@@ -1,76 +1,74 @@\nhello\n"6802 diff: "", result: nil6803 is expected to eq nil6804 diff: nil, result: nil6805 is expected to eq nil6806 #map_transformed_line_to_source6807 case: "if transformed diff is empty", transformed_blocks: [], result: 06808 is expected to eq 06809 case: "if the transformed line does not map to any in the original file", transformed_blocks: [{:source_line=>nil}], result: 06810 is expected to eq 06811 case: "if the transformed line maps to a line in the source file", transformed_blocks: [{:source_line=>3}], result: 36812 is expected to eq 36813 #image_as_rich_text6814 text does not contain image6815 is expected to be nil6816 text contains image6817 is expected to eq "<img src=\"data:image/png;base64,some_image_here\">"6818 text contains image that has malicious html6819 sanitizes the html6820 adds image to src6821 #line_positions_at_source_diff6822 case: " A A", index: 0, transformed_positions: [1, 1], mapped_positions: [1, 1]6823 is expected to eq [1, 1]6824 case: "- C ", index: 1, transformed_positions: [2, 2], mapped_positions: [3, 2]6825 is expected to eq [3, 2]6826 case: "- B ", index: 2, transformed_positions: [3, 2], mapped_positions: [2, 2]6827 is expected to eq [2, 2]6828 case: "- L ", index: 3, transformed_positions: [4, 2], mapped_positions: [0, 0]6829 is expected to eq [0, 0]6830 case: "+ D", index: 4, transformed_positions: [5, 2], mapped_positions: [4, 2]6831 is expected to eq [4, 2]6832 case: "+ J", index: 5, transformed_positions: [5, 3], mapped_positions: [0, 0]6833 is expected to eq [0, 0]6834 case: "+ E", index: 6, transformed_positions: [5, 4], mapped_positions: [4, 3]6835 is expected to eq [4, 3]6836 case: " K K", index: 7, transformed_positions: [5, 5], mapped_positions: [0, 0]6837 is expected to eq [0, 0]6838 case: " F F", index: 8, transformed_positions: [6, 6], mapped_positions: [4, 4]6839 is expected to eq [4, 4]6840 #lines_in_source_diff6841 old_lines: [1, 2, 2], new_lines: [1, 1, 4], is_deleted: false, is_new: false, existing_lines: {:from=>#<Set: {1, 2}>, :to=>#<Set: {1, 4}>}6842 is expected to eq {:from=>#<Set: {1, 2}>, :to=>#<Set: {1, 4}>}6843 old_lines: [1, 2, 2], new_lines: [1, 1, 4], is_deleted: true, is_new: false, existing_lines: {:from=>#<Set: {1, 2}>, :to=>#<Set: {}>}6844 is expected to eq {:from=>#<Set: {1, 2}>, :to=>#<Set: {}>}6845 old_lines: [1, 2, 2], new_lines: [1, 1, 4], is_deleted: false, is_new: true, existing_lines: {:from=>#<Set: {}>, :to=>#<Set: {1, 4}>}6846 is expected to eq {:from=>#<Set: {}>, :to=>#<Set: {1, 4}>}6847RuboCop::Cop::Gitlab::DelegatePredicateMethods6848 # order random6849 registers no offense for non-predicate method with allow_nil:true6850 registers offense for multiple predicate methods with allow_nil:true6851 registers no offense with predicate method without allow_nil6852 registers no offense with predicate method with allow_nil:false6853 registers offense for single predicate method with allow_nil:true6854Banzai::Pipeline::IncidentManagement::TimelineEventPipeline6855 # order random6856 .to_html6857 when markdown contains font style transformations6858 is expected to eq "<p><strong>bold</strong> <em>italic</em> <code>code</code></p>"6859 when markdown contains banned HTML tags6860 filters out banned tags6861 when markdown contains links6862 is expected to eq "<p><a href=\"https://gitlab.com\" rel=\"nofollow noreferrer noopener\" target=\"_blank\">GitLab</a></p>"6863 when markdown contains images6864 replaces image with a link to the image6865 when markdown contains emojis6866 renders emojis wrapped in <gl-emoji> tag6867 when markdown contains labels6868 replaces existing label to a link6869 when markdown contains table6870 is expected to eq "table headtable content"6871 when markdown contains a reference to an issue6872 contains a link to the issue6873 when markdown contains a reference to a merge request6874 contains a link to the merge request6875 .filters6876 contains required filters6877MergeRequestUserEntity6878 #as_json6879 exposes needed attributes6880 when `status` is not preloaded6881 does not expose the availability attribute6882 when the user has not approved the merge-request6883 exposes that the user has not approved the MR6884 when the user has approved the merge-request6885 exposes that the user has approved the MR6886 when `status` is preloaded6887 exposes the availibility attribute6888 performance6889 is linear in the number of merge requests (PENDING: See: https://gitlab.com/gitlab-org/gitlab/-/issues/322549)6890Gitlab::UsageMetricDefinitionGenerator6891 Creating metric definition file6892 without ee option6893 creates a metric definition file using the template6894 with ee option6895 creates a metric definition file using the template6896 Validation6897 does not raise an error6898 with a missing directory6899 raises an error6900 with an invalid directory6901 raises an error6902 with an already existing metric with the same key_path6903 raises an error6904 Name suggestions6905 adds name key to metric definition6906 with multiple file names6907 creates multiple files6908Resolvers::DesignManagement::VersionInCollectionResolver6909 #resolve6910 Neither id nor sha is passed as parameters6911 generates an appropriate error6912 we pass an id6913 is expected to eq #<DesignManagement::Version id: 48, sha: "69f7bf2ac802eef87b9c3253b1527c8996b9c0c7", issue_id: 250, created_at: "2023-03-30 11:57:47.066531240 +0000", author_id: 1627>6914 we pass a sha6915 is expected to eq #<DesignManagement::Version id: 48, sha: "69f7bf2ac802eef87b9c3253b1527c8996b9c0c7", issue_id: 250, created_at: "2023-03-30 11:57:47.066531240 +0000", author_id: 1627>6916 we pass an inconsistent mixture of sha and version id6917 is expected to be nil6918DeleteMergedBranchesWorker6919 #perform6920 delegates to Branches::DeleteMergedService6921 returns false when project was not found6922MergeRequests::ResolveTodosAfterApprovalWorker6923 calls TodoService#resolve_todos_for_target6924 behaves like subscribes to event6925 consumes the published event6926 behaves like an idempotent worker6927 is labeled as idempotent6928 performs multiple times sequentially without raising an exception6929 when the user does not exist6930 behaves like when object does not exist6931 logs and does not call TodoService#resolve_todos_for_target6932 when the merge request does not exist6933 behaves like when object does not exist6934 logs and does not call TodoService#resolve_todos_for_target6935TestReportEntity6936 #as_json6937 contains the total time6938 contains the counts6939 contains the test suites6940HashedStorage::ProjectMigrateWorker6941 #perform6942 skips when project no longer exists6943 skips when project is pending delete6944 skips when project is already migrated6945 with exclusive lease available6946 delegates migration to service class6947 delegates migration to service class with correct path in a partially migrated project6948 with exclusive lease taken6949 skips when it cant acquire the exclusive lease6950Gitlab::UsageData::Topology6951 #topology_usage_data6952 can reach a ready Prometheus client6953 behaves like query topology data from Prometheus6954 tracking node metrics6955 contains node level metrics for each instance6956 and some node memory metrics are missing6957 removes the respective entries and includes the failures6958 and services run on the same node but report different instance values6959 normalizes equivalent instance values and maps them to the same node6960 and node metrics are missing but service metrics exist6961 still reports service metrics6962 and unknown services are encountered6963 filters out unknown service data and reports the unknown services as a failure6964 and an error is raised when querying Prometheus6965 without timeout failures6966 returns empty result and executes subsequent queries as usual6967 with timeout failures6968 exception: Errno::ETIMEDOUT6969 returns empty result and cancelled subsequent queries6970 exception: Net::OpenTimeout6971 returns empty result and cancelled subsequent queries6972 exception: Net::ReadTimeout6973 returns empty result and cancelled subsequent queries6974 can not reach a ready Prometheus client6975 behaves like returns empty result with no failures6976 is expected to eq {:duration_s=>0, :failures=>[]}6977 when top-level function raises error6978 returns empty result with generic failure6979Gitlab::SQL::Except6980 behaves like SQL set operator6981 .operator_keyword6982 is expected to eq "EXCEPT"6983 #to_sql6984 returns a String joining relations together using a EXCEPT6985 skips Model.none segments6986 uses EXCEPT ALL when removing duplicates is disabled6987 returns `NULL` if all relations are empty6988 when uneven select values are used6989 raises error6990 remove_order parameter6991 when remove_order: true6992 removes the ORDER BY from the query6993 when remove_order: false6994 does not remove the ORDER BY from the query6995Gitlab::GithubImport::Stage::ImportIssueEventsWorker6996 #import6997 when stage is enabled6998 imports issue events6999 when stage is disabled7000 skips issue events import and calls next stage7001Gitlab::Email::Handler7002 .for7003 picks issue handler if there is no merge request prefix7004 picks merge request handler if there is merge request key7005 returns nil if no handler is found7006 returns nil if provided email is nil7007 key matches the reply_key of a notification7008 picks note handler7009 key matches the reply_key of a notification, along with an unsubscribe suffix7010 picks unsubscribe handler7011 new issue email7012 return new issue handler7013 a Service Desk email7014 uses the Service Desk handler7015 regexps are set properly7016 picks each handler at least once7017 can pick exactly one handler for each address7018Gitlab::ImportExport::SnippetsRepoSaver7019 bundle a project Git repo7020 creates the snippet bundles dir if not exists7021 when project does not have any snippet7022 does not perform any action7023 when project has snippets7024 calls the SnippetRepoSaver for each snippet7025 when one snippet cannot be saved7026 returns false and do not process other snippets7027Ci::CreatePipelineService7028 #execute7029 with deployment tier7030 creates the environment with the expected tier7031 when tier is testing7032 creates the environment with the expected tier7033 when branch pipeline creates a dynamic environment7034 does not associate merge request with the environment7035 when variables are dependent on stage name7036 creates the pipeline successfully7037projects/ci/jobs/_build7038 won't include a column with a link to its pipeline by default7039 can include a column with a link to its pipeline7040Issues::RelatedBranchesService7041 #execute7042 branches are available7043 excludes branches referenced in merge requests7044 when user has access to pipelines7045 selects relevant branches, along with pipeline status7046 when user does not have access to pipelines7047 returns branches without pipeline status7048 no branches are available7049 returns an empty array7050Gitlab::Analytics::CycleAnalytics::Aggregated::BaseQueryBuilder7051 scopes the query for the given project7052 author_username param7053 returns stage events associated with the given author7054 returns empty result when unknown author is given7055 milestone_title param7056 returns stage events associated with the milestone7057 returns empty result when unknown milestone is given7058 label_name param7059 returns stage events associated with multiple labels7060 does not include records with partial label match7061 assignee_username param7062 returns stage events associated assignee7063 timestamp filtering7064 filters by the end event time range7065 when in_progress items are requested7066 filters by the start event time range7067Ci::CreatePipelineService7068 custom config content7069 creates a pipeline using the content passed in as param7070 when bridge includes yaml from artifact7071 when referenced job exists7072 created a pipeline using the content passed in as param and download the artifact7073 when referenced job does not exist7074 creates an empty pipeline7075Gitlab::Cluster::RackTimeoutObserver7076 #callback7077 when request times out7078 increments counter7079 when request expires7080 increments counter7081 when request is being processed7082 does not increment counter7083 when request contains invalid string7084 sanitizes string7085Git::WikiPushService::Change7086 #page7087 the page does not exist7088 the operation is added7089 is expected to have attributes {:page => (be nil)}7090 the operation is deleted7091 is expected to have attributes {:page => (be nil)}7092 the operation is renamed7093 is expected to have attributes {:page => (be nil)}7094 the operation is modified7095 is expected to have attributes {:page => (be nil)}7096 the page can be found7097 is expected to have attributes {:page => #<Double "WikiPage">}7098 is expected to have attributes {:page => #<Double "WikiPage">}7099 is expected to have attributes {:page => #<Double "WikiPage">}7100 the page has been deleted7101 is expected to have attributes {:page => #<Double "WikiPage">}7102 #last_known_slug7103 the page has been created7104 is expected to have attributes {:last_known_slug => "Page_10"}7105 the operation is renamed7106 is expected to have attributes {:last_known_slug => "Page_12"}7107 the operation is modified7108 is expected to have attributes {:last_known_slug => "Page_13"}7109 the operation is deleted7110 is expected to have attributes {:last_known_slug => "Page_14"}7111 #event_action7112 the page is deleted7113 is expected to have attributes {:event_action => :destroyed}7114 the page is added7115 is expected to have attributes {:event_action => :created}7116 the page is renamed7117 is expected to have attributes {:event_action => :updated}7118 the page is modified7119 is expected to have attributes {:event_action => :updated}7120Packages::Npm7121 .scope_of7122 package_name: nil, expected_result: nil7123 is expected to eq nil7124 package_name: "test", expected_result: nil7125 is expected to eq nil7126 package_name: "@test", expected_result: nil7127 is expected to eq nil7128 package_name: "test/package", expected_result: nil7129 is expected to eq nil7130 package_name: "@/package", expected_result: nil7131 is expected to eq nil7132 package_name: "@test/package", expected_result: "test"7133 is expected to eq "test"7134 package_name: "@test/", expected_result: nil7135 is expected to eq nil7136Mutations::Ci::JobTokenScope::RemoveProject7137 #resolve7138 when user is not logged in7139 raises error7140 when user is logged in7141 when user does not have permissions to admin project7142 raises error7143 when user has permissions to admin project and read target project7144 with no direction specified7145 defaults to asking the RemoveProjectService to remove the outbound link7146 with direction specified7147 executes project removal for the correct direction7148 when the service returns an error7149 returns an error response7150Gitlab::Ci::YamlProcessor::Result7151 #builds7152 when a job has ID tokens7153 includes `id_tokens`7154 #config_metadata7155 returns expanded yaml config7156 returns includes7157 #yaml_variables_for7158 returns calculated variables with root and job variables7159 when an absent job is sent7160 is expected to eq []7161 #stage_for7162 is expected to eq "test"7163 when an absent job is sent7164 is expected to be nil7165ProjectCommitCount7166 #commit_count_for7167 handles exceptions by logging them with exception_details and returns the default_count7168 when a root_ref exists7169 returns commit count from GitlayClient7170 when a root_ref does not exist7171 returns the default_count7172Mutations::Todos::Restore7173 is expected to require graphql authorizations :update_todo7174 #resolve7175 restores a single todo7176 handles a todo which is already pending as expected7177 ignores requests for todos which do not belong to the current user7178Gitlab::JiraImport::IssuesImporter7179 #imported_items_cache_key7180 is expected to eq "jira-importer/already-imported/1031/issues"7181 behaves like raise exception if not implemented7182 is expected not to raise Exception7183 #execute7184 when no returned issues7185 does not schedule any import jobs7186 with results returned7187 when single page of results is returned7188 schedules 2 import jobs7189 when importing some issue raises an exception7190 schedules 2 import jobs7191 when duplicate results are returned7192 schedules 2 import jobs7193Gitlab::AlertManagement::AlertStatusCounts7194 #execute7195 for an unauthorized user7196 returns zero for all statuses7197 for an authorized user7198 returns the correct counts for each status7199 when filtering params are included7200 returns the correct counts for each status7201 when search param is included7202 returns the correct countss7203Gitlab::Ci::Badge::Pipeline::Template7204 behaves like a badge template7205 #key_text7206 says pipeline by default7207 when custom key_text is defined7208 returns custom value7209 when its size is larger than the max allowed value7210 returns default value7211 #key_width7212 is fixed by default7213 when custom key_width is defined7214 returns custom value7215 when it is larger than the max allowed value7216 returns default value7217 #value_text7218 is status value7219 widths and text anchors7220 has fixed width and text anchors7221 #key_color7222 is always the same7223 #value_color7224 when status is success7225 has expected color7226 when status is failed7227 has expected color7228 when status is running7229 has expected color7230 when status is preparing7231 has expected color7232 when status is unknown7233 has expected color7234 when status does not match any known statuses7235 has expected color7236Packages::Rubygems::MetadataExtractionService7237 #execute7238 creates the metadata7239 stores the metadata7240 with an existing metadatum7241 updates it7242Types::ErrorTracking::SentryErrorType7243 is expected to eq "SentryError"7244 exposes the expected fields7245MilestonesHelper7246 # order random7247 #milestone_header_class7248 primary: true, issuables: [nil], header_color: "gl-bg-blue-500 gl-text-white", header_border: ""7249 is expected to eq "gl-bg-blue-500 gl-text-white gl-display-flex"7250 primary: true, issuables: [], header_color: "gl-bg-blue-500 gl-text-white", header_border: "gl-border-bottom-0 gl-rounded-base"7251 is expected to eq "gl-bg-blue-500 gl-text-white gl-border-bottom-0 gl-rounded-base gl-display-flex"7252 primary: false, issuables: [], header_color: "", header_border: "gl-border-bottom-0 gl-rounded-base"7253 is expected to eq " gl-border-bottom-0 gl-rounded-base gl-display-flex"7254 primary: false, issuables: [nil], header_color: "", header_border: ""7255 is expected to eq " gl-display-flex"7256 #milestone_counter_class7257 when primary is set to true7258 is expected to eq "gl-text-white"7259 when primary is set to false7260 is expected to eq "gl-text-gray-500"7261Gitlab::Kubernetes::Deployment7262 #name7263 is expected to eq :selected7264 #labels7265 is expected to eq :selected7266 #outdated?7267 when outdated7268 is expected to be truthy7269 when up to date7270 is expected to be falsy7271 when ahead of latest7272 is expected to be falsy7273 #instances7274 when unnamed7275 returns all pods with generated names and pending7276 when number of pods is less than wanted replicas7277 returns not spawned pods as pending and unknown and running7278 when outdated7279 returns all instances as named and waiting7280 with pods of each type7281 returns all instances7282 with track label7283 when marked as stable7284 returns all instances7285 when marked as canary7286 returns all instances7287Gitlab::Utils::DelegatorOverride7288 # order random7289 .verify!7290 does not raise an error when an override is in allowlist7291 raises an error when there is an override7292 .delegator_override_with7293 adds the method names of the module to the allowlist7294 .delegator_override7295 adds the method name to the allowlist7296 .delegator_target7297 sets the delegator target to the validator7298 when the class does not inherit SimpleDelegator7299 raises an error7300Gitlab::Ci::SecureFiles::P127301 # order random7302 when the supplied certificate can be parsed7303 #certificate_data7304 returns an OpenSSL::X509::Certificate object7305 #metadata7306 returns a hash with the expected keys7307 #id7308 returns the certificate serial number7309 #expires_at7310 returns the certificate expiration timestamp7311 #issuer7312 calls parse on X509Name7313 #subject7314 calls parse on X509Name7315 when the supplied certificate can be parsed, but the password is invalid7316 #certificate_data7317 assigns the error message and returns nil7318 when the supplied certificate cannot be parsed7319 #certificate_data7320 assigns the error message and returns nil7321 #metadata7322 returns an empty hash7323 #expires_at7324 returns nil7325Sidebars::Concerns::SuperSidebarPanel7326 # order random7327 #pick_from_old_menus7328 removes items with #pick_into_super_sidebar? from a list and adds them to the panel menus7329 #transform_old_menus7330 converts "solo" top-level Menu entry to Menu Item7331 drops "solo" top-level Menu entries, if they serialize to nil7332 for Menus with Menu Items7333 adds Menu Items to defined super_sidebar_parent7334 replaces placeholder Menu Items in the defined super_sidebar_parent7335 adds Menu Items to defined super_sidebar_parent, before super_sidebar_before7336 considers Menu Items uncategorized if super_sidebar_parent is nil7337 considers Menu Items uncategorized if super_sidebar_parent cannot be found7338 considers Menu Items deleted if super_sidebar_parent is Sidebars::NilMenuItem7339Gitlab::Ci::Build::Prerequisite::Factory7340 .for_build7341 prerequisite is unmet7342 is expected to eq [#<InstanceDouble(Gitlab::Ci::Build::Prerequisite::KubernetesNamespace) (anonymous)>]7343 prerequisite is met7344 is expected to be empty7345Clusters::Cleanup::ServiceAccountService7346 #execute7347 deletes gitlab service account7348 logs all events7349 deletes cluster7350 when cluster.kubeclient is nil7351 deletes cluster7352 when there is a Kubeclient::HttpError7353 destroys cluster7354 destroys cluster7355 destroys cluster7356Gitlab::ImportExport::Project::ExportedRelationsMerger7357 # order random7358 #save7359 downloads, extracts, and merges all files into export_path7360 when exception occurs7361 registers the exception messages and returns false7362Gitlab::Diff::Formatters::ImageFormatter7363 behaves like position formatter7364 #key7365 is expected to eq [123, 456, 789, "8b5f87754bd090b9e0837feef68f1737103de62b", "5b972068ce0905d88056d0c4b788554d34949d27", 1, 2]7366 #complete?7367 when there are missing key attributes7368 is expected to be truthy7369 when old_line and new_line are nil7370 is expected to be falsy7371 #to_h7372 is expected to eq {:base_sha=>123, :head_sha=>789, :height=>100, :new_path=>"new_image.png", :old_path=>"old_image.png", :position_type=>"image", :start_sha=>456, :width=>100, :x=>1, :y=>2}7373 #==7374 is expected to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x00007f54d3389c38 @x=1, @y=2, @width=100, @height=100, @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>7375 #==7376 is expected to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x00007f54d472ce48 @x=1, @y=2, @width=100, @height=100, @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>7377 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x00007f54d5b99278 @x=1, @y=9, @width=100, @height=100, @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>7378 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x00007f54d71e3420 @x=1, @y=9, @width=100, @height=100, @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>7379 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x00007f54d0653e58 @x=1, @y=9, @width=100, @height=100, @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>7380 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x00007f54b4e42428 @x=1, @y=9, @width=100, @height=100, @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>7381BulkImports::Groups::Pipelines::NamespaceSettingsPipeline7382 #run7383 imports allowed namespace settings attributes7384 #transform7385 fetches only allowed attributes and symbolize keys7386 when there is no data to transform7387 is expected to eq nil7388 #after_run7389 calls extractor#remove_tmpdir7390ApplicationSetting::Term7391 is expected to validate that :terms cannot be empty/falsy7392 .latest7393 finds the latest terms7394 #accepted_by_user?7395 is true when the user accepted the terms7396 is true when user is a bot7397 is false when the user declined the terms7398 does not cause a query when the user accepted the current terms7399 returns false if the currently accepted terms are different7400Gitlab::QueryLimiting::Middleware7401 #call7402 runs the application with query limiting in place7403 #action_name7404 using a Rails request7405 returns the name of the controller and action7406 includes the content type if this is not text/html7407 using a Grape API request7408 returns the name of the request method and endpoint path7409 returns nil if the route can not be retrieved7410DeleteWithLimit7411 .delete_with_limit7412 deletes a limited amount of rows7413Gitlab::Ci::Reports::Security::FindingKey7414 #==7415 when the comparison is done between FindingKey instances7416 location_fp_1: nil, location_fp_2: "different location fp", identifier_fp_1: "identifier fp", identifier_fp_2: "different identifier fp", equals?: false7417 is expected to equal false7418 location_fp_1: "location fp", location_fp_2: nil, identifier_fp_1: "identifier fp", identifier_fp_2: "different identifier fp", equals?: false7419 is expected to equal false7420 location_fp_1: "location fp", location_fp_2: "different location fp", identifier_fp_1: nil, identifier_fp_2: "different identifier fp", equals?: false7421 is expected to equal false7422 location_fp_1: "location fp", location_fp_2: "different location fp", identifier_fp_1: "identifier fp", identifier_fp_2: nil, equals?: false7423 is expected to equal false7424 location_fp_1: nil, location_fp_2: nil, identifier_fp_1: "identifier fp", identifier_fp_2: "identifier fp", equals?: false7425 is expected to equal false7426 location_fp_1: "location fp", location_fp_2: "location fp", identifier_fp_1: nil, identifier_fp_2: nil, equals?: false7427 is expected to equal false7428 location_fp_1: nil, location_fp_2: nil, identifier_fp_1: nil, identifier_fp_2: nil, equals?: false7429 is expected to equal false7430 location_fp_1: "location fp", location_fp_2: "different location fp", identifier_fp_1: "identifier fp", identifier_fp_2: "different identifier fp", equals?: false7431 is expected to equal false7432 location_fp_1: "location fp", location_fp_2: "different location fp", identifier_fp_1: "identifier fp", identifier_fp_2: "identifier fp", equals?: false7433 is expected to equal false7434 location_fp_1: "location fp", location_fp_2: "location fp", identifier_fp_1: "identifier fp", identifier_fp_2: "different identifier fp", equals?: false7435 is expected to equal false7436 location_fp_1: "location fp", location_fp_2: "location fp", identifier_fp_1: "identifier fp", identifier_fp_2: "identifier fp", equals?: true7437 is expected to equal true7438 when the comparison is not done between FindingKey instances7439 is expected to be falsey7440Gitlab::LetsEncrypt::Order7441 #url7442 delegates to Acme::Client::Resources::Order7443 #status7444 delegates to Acme::Client::Resources::Order7445 #expires7446 delegates to Acme::Client::Resources::Order7447 #new_challenge7448 returns challenge7449 #request_certificate7450 generates csr and finalizes order7451 #challenge_error7452 returns error if challenge has errors7453Gitlab::Database::Migrations::TestBackgroundRunner7454 without jobs to run7455 returns immediately7456 with jobs to run7457 finding pending background jobs7458 finds all the migrations7459 running migrations7460 runs the migration class correctly7461 runs the migration for a uniform amount of time7462 with multiple migrations to run7463 splits the time between migrations when all migrations use all their time7464 does not give leftover time to extra migrations7465Types::Projects::Services::BaseServiceType7466 is expected to eq "BaseService"7467 has basic expected fields7468 is expected to require graphql authorizations :admin_project7469Gitlab::Kubernetes::Namespace7470 is expected to eq "a_namespace"7471 #exists?7472 when namespace do not exits7473 returns false7474 when namespace exits7475 returns true7476 when cluster cannot be reached7477 raises exception7478 #create!7479 creates a namespace7480 with labels7481 creates a namespace with labels7482 #ensure_exists!7483 checks for existing namespace before creating7484 do not re-create an existing namespace7485 when client errors7486 raises the exception7487 logs the error7488Users::GhostUserMigration7489 # order random7490 scopes7491 .consume_order7492 is expected to eq [#<Users::GhostUserMigration id: 2, user_id: 1722, initiator_user_id: 1723, created_at: "2023-03-30 1...1:58:33.756867011 +0000", hard_delete: false, consume_after: "2023-03-30 11:58:33.613364856 +0000">]7493 associations7494 is expected to belong to user required: false7495 is expected to belong to initiator_user required: false7496 validations7497 is expected to validate that :user_id cannot be empty/falsy7498Gitlab::GitalyClient::HealthCheckService7499 #check7500 successfully sends a health check request7501 receives an unsuccessful health check request7502 gracefully handles gRPC error7503Gitlab::Graphql::Lazy7504 #force7505 can extract the value7506 can derive new lazy values7507 only evaluates once7508 deals with nested laziness7509 .with_value7510 defers the application of a block to a value7511 evaluates to the application of the block to the value7512 .force7513 when given a plain value7514 unwraps the value7515 when given a wrapped lazy value7516 unwraps the value7517 when the value is from a batchloader7518 syncs the value7519 when the value is a GraphQL lazy7520 forces the evaluation7521 when the value is a promise7522 executes the promise and waits for the value7523Net::HTTP patch proxy user and password encoding7524 #proxy_user7525 is expected to eq nil7526 with http_proxy env7527 is expected to eq nil7528 and user:password authentication7529 when on multiuser safe platform7530 is expected to eq "Y\\X"7531 when not on multiuser safe platform7532 is expected to be nil7533 #proxy_pass7534 is expected to eq nil7535 with http_proxy env7536 is expected to eq nil7537 and user:password authentication7538 when on multiuser safe platform7539 is expected to eq "R%S] ?X"7540 when not on multiuser safe platform7541 is expected to be nil7542Gitlab::SubmoduleLinks7543 #for7544 when there is no .gitmodules file7545 returns no links7546 when the submodule is unknown7547 returns no links7548 when the submodule is known7549 returns links and caches the by ref7550 when ref name contains a dash7551 returns links7552 and the diff information is available7553 the returned links include the compare link7554 but the submodule url has changed7555 the returned links do not include the compare link7556Gitlab::PollingInterval7557 .set_header7558 when polling is disabled7559 sets value to -17560 when polling is enabled7561 applies modifier to base interval7562 .set_api_header7563 when polling is disabled7564 sets value to -17565 when polling is enabled7566 applies modifier to base interval7567PushEventPayload7568 behaves like having unique enum values7569 has unique values in "action"7570 has unique values in "ref_type"7571 saving payloads7572 does not allow commit messages longer than 70 characters7573MergeRequests::PipelineEntity7574 #as_json7575 contains required fields7576 returns presented coverage7577 excludes coverage data when disabled7578Gitlab::GithubImport::IssuableFinder7579 #database_id7580 returns nil when no cache is in place7581 returns the ID of an issuable when the cache is in place7582 raises TypeError when the object is not supported7583 when group is present7584 when settings single_endpoint_notes_import is enabled7585 reads cache value with longer timeout7586 when settings single_endpoint_notes_import is disabled7587 reads cache value with default timeout7588 #cache_database_id7589 caches the ID of a database row7590 when settings single_endpoint_notes_import is enabled7591 caches value with longer timeout7592 when settings single_endpoint_notes_import is disabled7593 caches value with default timeout7594LooseForeignKeys::ModificationTracker7595 #over_limit?7596 is true when deletion MAX_DELETES is exceeded7597 is false when MAX_DELETES is not exceeded7598 is true when deletion MAX_UPDATES is exceeded7599 is false when MAX_UPDATES is not exceeded7600 is true when max runtime is exceeded7601 is false when max runtime is not exceeded7602 #add_deletions7603 increments a Prometheus counter7604 #add_updates7605 increments a Prometheus counter7606 #stats7607 exposes stats7608Resolvers::Ci::TemplateResolver7609 #resolve7610 when template exists7611 returns the found template7612 when template does not exist7613 returns nil7614SystemCheck::App::AuthorizedKeysPermissionCheck7615 #skip?7616 authorized keys enabled7617 is expected to eq false7618 authorized keys not enabled7619 is expected to eq true7620 #check?7621 authorized keys is accessible7622 is expected to eq true7623 authorized keys is not accessible7624 is expected to eq false7625 #repair!7626 authorized_keys file created7627 is expected to eq true7628 authorized_keys file is not created7629 is expected to eq false7630Integrations::Irker7631 Validations7632 when integration is active7633 is expected to validate that :recipients cannot be empty/falsy7634 when integration is inactive7635 is expected not to validate that :recipients cannot be empty/falsy7636 Execute7637 sends valid JSON messages to an Irker listener7638Users::DismissCalloutService7639 #execute7640 behaves like dismissing user callout7641 creates a new user callout7642 returns a user callout7643 sets the dismissed_at attribute to current time7644 updates an existing callout dismissed_at time7645 does not update an invalid record with dismissed_at time7646Gitlab::Database::SchemaValidation::StructureSql7647 # order random7648 when having indexes7649 #index_exists?7650 when the index does not exist7651 returns false7652 when the index exists7653 returns true7654 #indexes7655 returns indexes7656 when having triggers7657 #trigger_exists?7658 when the trigger does not exist7659 returns false7660 when the trigger exists7661 returns true7662 #triggers7663 returns triggers7664Users::RespondToTermsService7665 #execute7666 creates a new agreement if it did not exist7667 updates an agreement if it existed7668 adds the accepted terms to the user7669 removes accepted terms when declining7670Gitlab::Ci::Status::Success7671 #text7672 is expected to eq "passed"7673 #label7674 is expected to eq "passed"7675 #icon7676 is expected to eq "status_success"7677 #favicon7678 is expected to eq "favicon_status_success"7679 #group7680 is expected to eq "success"7681 #details_path7682 is expected to be nil7683NoteSummary7684 #metadata?7685 returns true when metadata present7686 returns false when metadata not present7687 #note7688 returns note hash7689 when noteable is a commit7690 returns note hash specific to commit7691 #metadata7692 returns metadata hash7693 description action and noteable has saved_description_version7694 sets the description_version metadata7695Gitlab::GithubImport::PageCounter7696 #initialize7697 sets the initial page number to 1 when no value is cached7698 sets the initial page number to the cached value when one is present7699 when gists import7700 uses gists specific key7701 #set7702 overwrites the page number when the given number is greater than the current number7703 does not overwrite the page number when the given number is lower than the current number7704 #expire!7705 expires the current page counter7706ServiceDeskSettings::UpdateService7707 #execute7708 with valid params7709 updates service desk settings7710 when project_key is an empty string7711 sets nil project_key7712 with invalid params7713 does not update service desk settings7714Resolvers::ReleaseMilestonesResolver7715 #resolve7716 uses offset-pagination7717 includes the release's milestones in the returned OffsetActiveRecordRelationConnection7718Gitlab::Ci::Parsers7719 .fabricate!7720 when file_type is junit7721 fabricates the class7722 when file_type is cobertura7723 fabricates the class7724 when file_type is accessibility7725 fabricates the class7726 when file_type is codequality7727 fabricates the class7728 when file_type is terraform7729 fabricates the class7730 when file_type does not exist7731 raises an error7732 .instrument!7733 prepends the Instrumentation module into each parser7734Ci::DagStageEntity7735 #as_json7736 contains valid name7737 contains the job groups7738 matches schema7739Types::CommitSignatureInterface7740 # order random7741 exposes the expected fields7742 .resolve_type7743 resolves gpg signatures7744 resolves x509 signatures7745 resolves SSH signatures7746 raises an error when type is not known7747Gitlab::SidekiqSignals7748 .install7749 not a process group leader7750 does nothing7751 as a process group leader7752 installs its own signal handlers for TERM and INT only7753 installs a forwarding signal handler for INT7754 raises if sidekiq no longer traps SIGINT7755 installs a forwarding signal handler for TERM7756 raises if sidekiq no longer traps SIGTERM7757Gitlab::GithubGistsImport::Status7758 # order random7759 #started?7760 checks if status is started7761 #start!7762 expires the key7763 #fail!7764 sets failed status7765 #finish!7766 sets finished status7767Packages::Rubygems::Metadatum7768 relationships7769 is expected to belong to package required: false7770 validations7771 is expected to validate that :package cannot be empty/falsy7772 #rubygems_package_type7773 will not allow a package with a different package_type7774Gitlab::Ci::Config::Entry::Stages7775 validations7776 when entry config value is correct7777 #value7778 returns array of stages7779 #valid?7780 is valid7781 when entry value is not correct7782 #errors7783 saves errors7784 #valid?7785 is not valid7786 .default7787 returns default stages7788FaviconUploader7789 accept whitelist file content type7790 mime_type: "image/png"7791 behaves like accepted carrierwave upload7792 will accept upload7793 will cache uploaded file7794 mime_type: "image/vnd.microsoft.icon"7795 behaves like accepted carrierwave upload7796 will accept upload7797 will cache uploaded file7798 upload non-whitelisted file content type7799 behaves like denied carrierwave upload7800 will deny upload7801 upload misnamed non-whitelisted file content type7802 behaves like denied carrierwave upload7803 will deny upload7804Gitlab::MergeRequests::Mergeability::RedisInterface7805 #save_check7806 saves the hash7807 #retrieve_check7808 returns the hash7809Gitlab::Ci::Config::Entry::Release::Assets::Links7810 validation7811 when entry config value is correct7812 #value7813 returns links configuration7814 #valid?7815 is valid7816 when entry value is not correct7817 #errors7818 when value of link is invalid7819 reports error7820 when value of links link is empty7821 reports error7822 when there is an unknown key present7823 reports error7824Types::TimeTracking::TimelogSortEnum7825 # order random7826 is expected to eq "TimelogSort"7827 exposes all the contact sort values7828 behaves like common sort values7829 exposes all the existing common sort values7830Gitlab::Kubernetes::ServiceAccountToken7831 is expected to eq "token-name"7832 is expected to eq "a_service_account"7833 is expected to eq "a_namespace"7834 #generate7835 builds a Kubeclient Resource7836admin/application_settings/_eks7837 when eks_secret_access_key is not set7838 renders an empty password field7839 when eks_secret_access_key is set7840 renders an empty password field7841ResourceStateEventPolicy7842 # order random7843 #read_resource_state_event7844 with non-member user7845 does not allow to read event7846 with member user7847 allows to read event for a state change7848Admin::PlansFinder7849 #execute7850 with no params7851 returns all plans7852 with missing name in params7853 returns all plans7854 with existing name in params7855 returns the plan7856 with non-existing name in params7857 returns nil7858Gitlab::AssetProxy7859 when asset proxy is disabled7860 returns the original URL7861 when asset proxy is enabled7862 returns a proxied URL7863 returns original URL for invalid domains7864 whitelisted domain7865 returns original URL for single domain whitelist7866 returns original URL for wildcard subdomain whitelist7867CreatePipelineFailureIncident7868 # order random7869 #execute7870 when stable branch7871 behaves like creating an issue7872 successfully creates an issue7873 when other branch7874 when GitLab FOSS7875 behaves like creating an issue7876 successfully creates an issue7877 when GitLab EE7878 behaves like creating an issue7879 successfully creates an issue7880 when review-apps7881 behaves like creating an issue7882 successfully creates an issue7883Gitlab::Ci::Reports::Sbom::Report7884 #valid?7885 when there are no errors7886 is expected to be valid7887 when report contains errors7888 is expected not to be valid7889 #add_error7890 appends errors to a list7891 #set_source7892 stores the source7893 #add_component7894 appends components to a list7895Webauthn::RegisterService7896 #execute7897 returns a registration if challenge matches7898 returns an error if challenge does not match7899Members::CreatorService7900 #execute7901 raises error for new member on authorization check implementation7902 raises error for an existing member on authorization check implementation7903Gitlab::Pagination::Keyset::CursorBasedRequestContext7904 #per_page7905 is expected to eq 27906 #cursor7907 is expected to eq "eyJuYW1lIjoiR2l0TGFiIEluc3RhbmNlIiwiaWQiOiI1MiIsIl9rZCI6Im4ifQ=="7908 #order_by7909 is expected to eq {:name=>:asc}7910 #apply_headers7911 sets Link header with same host/path as the original request7912 sets Link header with a cursor to the next page7913API::Entities::BulkImports::EntityFailure7914 has the correct attributes7915 exception message7916 truncates exception message to 72 characters7917 removes paths from the message7918Gitlab::Config::Entry::Validatable7919 .validator7920 returns validator7921 returns only one validator to mitigate leaks7922 when validating entry instance7923 when attribute is valid7924 instance of validator is valid7925 when attribute is not valid7926 instance of validator is invalid7927Gitlab::GithubImport::Stage::ImportAttachmentsWorker7928 # order random7929 #import7930 imports attachments7931 when stage is disabled7932 skips release attachments import and calls next stage7933Types::Ci::RunnerPlatformType7934 is expected to eq "RunnerPlatform"7935 exposes the expected fields7936Gitlab::Graphql::Tracers::MetricsTracer7937 when used as tracer and query is executed7938 does not record apdex for failing queries7939 duration: 0.1, expected_success: true7940 increments apdex sli7941 duration: 1.1, expected_success: false7942 increments apdex sli7943Gitlab::Pagination::Keyset::InOperatorOptimization::ColumnData7944 accepts symbols for original_column_name and as7945 #array_aggregated_column_name7946 is expected to eq "issues_id_array"7947 #projection7948 returns the Arel projection for the column with a new alias7949Types::ReleaseAssetLinkInputType7950 is expected to eq "ReleaseAssetLinkInput"7951 has the correct arguments7952 sets the type of link_type argument to ReleaseAssetLinkTypeEnum7953API::Validations::Validators::GitSha7954 valid sha7955 does not raise a validation error7956 empty params7957 raises a validation error7958 invalid sha7959 raises a validation error7960Types::Clusters::AgentTokenStatusEnum7961 is expected to eq "AgentTokenStatus"7962 is expected to contain exactly "ACTIVE" and "REVOKED"7963API::Validations::Validators::ArrayNoneAny7964 valid parameters7965 does not raise a validation error7966 invalid parameters7967 raises a validation error7968Gitlab::ErrorTracking::Processor::SanitizeErrorMessageProcessor7969 .call7970 with Raven event7971 behaves like processes the exception7972 cleans the exception message7973 with Sentry event7974 behaves like processes the exception7975 cleans the exception message7976 with invalid event7977 does nothing7978Gitlab::QueryLimiting::ActiveSupportSubscriber7979 #sql7980 increments the number of executed SQL queries7981 when the query is actually a rails cache hit7982 does not increment the number of executed SQL queries7983Gitlab::Middleware::WebhookRecursionDetection7984 #call7985 when the recursion detection header is present7986 sets the request UUID from the header7987 when recursion headers are not present7988 works without errors7989Gitlab::Ci::Reports::Security::Scan7990 #initialize7991 when all params are given7992 initializes an instance7993 #to_hash7994 returns expected hash7995Forever7996 .date7997 returns Postgresql future date7998Types::Packages::Helm::MaintainerType7999 is expected to eq "PackageHelmMaintainerType"8000 includes helm maintainer fields8001Types::WorkItems::Widgets::LabelsUpdateInputType8002 # order random8003 is expected to contain exactly "addLabelIds" and "removeLabelIds"8004 is expected to eq "WorkItemWidgetLabelsUpdateInput"8005Gitlab::Usage::Metrics::NamesSuggestions::RelationParsers::WhereConstraints8006 # order random8007 #accept8008 builds correct constraints description8009Gitlab::UsageDataCounters::BaseCounter8010 .fetch_supported_event8011 returns the matching event8012 when event is unknown8013 is expected to be nil8014 when prefix does not match the event name8015 is expected to be nil8016Types::X509CertificateType8017 # order random8018 is expected to eq "X509Certificate"8019 contains attributes for X.509 certifcates8020Gitlab::Metrics::Dashboard::Defaults8021 is expected to be const defined :DEFAULT_PANEL_TYPE8022Ci::Runners::UnregisterRunnerService#execute8023 destroys runner8024Peek::Views::Memory8025 with process_action.action_controller notification8026 returns empty results when it has not yet fired8027 returns memory instrumentation data when it has fired8028Gitlab::Utils::ExecutionTracker8029 # order random8030 #over_limit?8031 is true when max runtime is exceeded8032 is false when max runtime is not exceeded8033API::Helpers::OpenApi8034 # order random8035 class methods8036 .add_open_api_documentation!8037 calls the add_swagger_documentation method8038errors/omniauth_error8039 renders template8040Types::Ci::AnalyticsType8041 exposes the expected fields8042Gitlab::Database::SchemaValidation::Validators::DifferentDefinitionIndexes8043 # order random8044 returns index inconsistencies8045Types::ContainerRepositoryCleanupStatusEnum8046 exposes all statuses8047MicrosoftTeams::Activity8048 #prepare8049 returns the correct JSON object8050UploaderHelper8051 #extension_match?8052 returns false if file does not exist8053BulkImports::Common::Extractors::GraphqlExtractor8054 #extract8055 returns ExtractedData8056Gitlab::Ci::Pipeline::Metrics8057 .pipeline_creation_step_duration_histogram8058 adds the step to the step duration histogram8059Types::Ci::PipelineStatusEnum8060 exposes all pipeline states8061Gitlab::GithubImport::ImportCollaboratorWorker8062 # order random8063 #import8064 imports a collaborator8065Types::WorkItems::Widgets::NotificationsType8066 # order random8067 exposes the expected fields8068Pending: (Failures listed here are expected and do not affect your suite's status)8069 1) DesignManagement::SaveDesignsService#execute when the feature is available scalability runs the same queries for all requests, regardless of number of files8071 # ./spec/services/design_management/save_designs_service_spec.rb:4088072 2) Ci::PipelineArtifactUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 8073 # No pattern provided, skipping.8074 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88075 3) Ci::PipelineArtifactUploader behaves like builds correct paths #relative_path is relative8076 # Path not set, skipping.8077 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408078 4) Ci::PipelineArtifactUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 8079 # No pattern provided, skipping.8080 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88081 5) Ci::PipelineArtifactUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 8082 # No pattern provided, skipping.8083 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88084 6) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 8085 # No pattern provided, skipping.8086 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88087 7) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 8088 # No pattern provided, skipping.8089 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88090 8) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 8091 # No pattern provided, skipping.8092 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88093 9) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths #relative_path is relative8094 # Path not set, skipping.8095 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:408096 10) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 8097 # No pattern provided, skipping.8098 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88099 11) Ci::PipelineArtifactUploader when object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 8100 # No pattern provided, skipping.8101 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88102 12) Ci::Sources::Pipeline partitioning assigns partition_id and source_partition_id from pipeline and source_job8103 # Skipping partitioning tests until `ci_builds` is partitioned8104 Failure/Error: skip 'Skipping partitioning tests until `ci_builds` is partitioned'8105 RSpec::Core::Pending::SkipDeclaredInExample8106 # ./spec/support/models/ci/partitioning_testing/rspec_hooks.rb:8:in `block (2 levels) in <top (required)>'8107 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <top (required)>'8108 # ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'8109 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <top (required)>'8110 13) MergeRequestUserEntity#as_json performance is linear in the number of merge requests8112 Failure/Error:8113 expect do8114 a = described_class.new(user_a, request: request, merge_request: merge_request_b)8115 b = described_class.new(user_b, request: request, merge_request: merge_request_b)8117 a.as_json8118 b.as_json8119 end.not_to exceed_query_limit(baseline)8120 Expected a maximum of 10 queries, got 20:8121 Query Diff:8122 -----------8123 SELECT "users".* FROM "users"...8124 -- (expected: 1, got: 0)8125 WHERE "users"."id" = 1618 LIMIT 18126 SELECT MAX("project_authorizations"."access_level") AS maximum_access_level, "project_authorizations"."user_id" AS project_authorizations_user_id FROM "project_authorizations"...8127 -- (expected: 4, got: 0)8128 WHERE "project_authorizations"."project_id" = 992 AND "project_authorizations"."user_id" = 1620 GROUP BY "project_authorizations"."user_id"8129 -- (expected: 3, got: 0)8130 WHERE "project_authorizations"."project_id" = 992 AND "project_authorizations"."user_id" = 1618 GROUP BY "project_authorizations"."user_id"8131 -- (expected: 0, got: 4)8132 WHERE "project_authorizations"."project_id" = 993 AND "project_authorizations"."user_id" = 1620 GROUP BY "project_authorizations"."user_id"8133 -- (expected: 0, got: 6)8134 WHERE "project_authorizations"."project_id" = 993 AND "project_authorizations"."user_id" = 1618 GROUP BY "project_authorizations"."user_id"8135 -- (expected: 0, got: 4)8136 WHERE "project_authorizations"."project_id" = 993 AND "project_authorizations"."user_id" = 1621 GROUP BY "project_authorizations"."user_id"8137 SELECT "merge_requests".* FROM "merge_requests"...8138 -- (expected: 1, got: 0)8139 WHERE "merge_requests"."source_project_id" = 992 AND ("merge_requests"."state_id" IN (1)) AND "merge_requests"."allow_maintainer_to_push" = TRUE AND "merge_requests"."source_branch" = 'feature'8140 -- (expected: 0, got: 2)8141 WHERE "merge_requests"."source_project_id" = 993 AND ("merge_requests"."state_id" IN (1)) AND "merge_requests"."allow_maintainer_to_push" = TRUE AND "merge_requests"."source_branch" = 'feature'8142 SELECT "merge_request_reviewers".* FROM "merge_request_reviewers"...8143 -- (expected: 1, got: 0)8144 WHERE "merge_request_reviewers"."merge_request_id" = 282 AND "merge_request_reviewers"."user_id" = 1620 LIMIT 18145 -- (expected: 0, got: 1)8146 WHERE "merge_request_reviewers"."merge_request_id" = 283 AND "merge_request_reviewers"."user_id" = 1620 LIMIT 18147 -- (expected: 0, got: 1)8148 WHERE "merge_request_reviewers"."merge_request_id" = 283 AND "merge_request_reviewers"."user_id" = 1621 LIMIT 18149 SELECT "protected_branches".* FROM ((SELECT "protected_branches".* FROM "protected_branches"...8150 -- (expected: 0, got: 1)8151 WHERE "protected_branches"."project_id" = 993)) protected_branches8152 SELECT "approvals".* FROM "approvals"...8153 -- (expected: 0, got: 1)8154 WHERE "approvals"."merge_request_id" = 2838155 # ./spec/serializers/merge_request_user_entity_spec.rb:71:in `block (4 levels) in <top (required)>'8156 # ./spec/spec_helper.rb:438:in `block (3 levels) in <top (required)>'8157 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'8158 # ./spec/spec_helper.rb:430:in `block (2 levels) in <top (required)>'8159 # ./spec/spec_helper.rb:426:in `block (3 levels) in <top (required)>'8160 # ./lib/gitlab/application_context.rb:61:in `with_raw_context'8161 # ./spec/spec_helper.rb:426:in `block (2 levels) in <top (required)>'8162 # ./spec/spec_helper.rb:240:in `block (2 levels) in <top (required)>'8163 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'8164 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <top (required)>'8165 # ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'8166 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <top (required)>'8167Finished in 18 minutes 32 seconds (files took 46.96 seconds to load)81683187 examples, 0 failures, 13 pending8169Randomized with seed 453538170[TEST PROF INFO] Time spent in factories: 10:41.595 (56.63% of total time)8171RSpec exited with 0.8172No examples to retry, congrats!8174Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8175Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8177Uploading artifacts...8178coverage/: found 5 matching artifact files and directories 8179crystalball/: found 2 matching artifact files and directories 8180WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8181knapsack/: found 3 matching artifact files and directories 8182WARNING: query_recorder/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8183rspec/: found 12 matching artifact files and directories 8184WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8185log/*.log: found 19 matching artifact files and directories 8186WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4031138972/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8187WARNING: Retrying... context=artifacts-uploader error=request redirected8188Uploading artifacts as "archive" to coordinator... 201 Created id=4031138972 responseStatus=201 Created token=64_YsYcr8189Uploading artifacts...8190rspec/junit_rspec.xml: found 1 matching artifact files and directories 8191WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4031138972/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8192WARNING: Retrying... context=artifacts-uploader error=request redirected8193Uploading artifacts as "junit" to coordinator... 201 Created id=4031138972 responseStatus=201 Created token=64_YsYcr8195Job succeeded