rspec unit pg13 single-db 1/28
Passed Started
by
@fabiopitino
Fabio Pitino
1Running with gitlab-runner 16.1.0~beta.5.gf131a6a2 (f131a6a2)2 on blue-3.shared-gitlab-org.runners-manager.gitlab.com/default sUrYYgEG, system ID: s_35f98e2af4653 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...10Using docker image sha256:73740c557807c4bc5d692f263c0e35454270600da4b22bbe952331411426c8b5 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:3174001f839c42e299ac06a42f8ded446edfcb33b0eb820874749a3f53eb799c ...11WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.12WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.13Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...16Using docker image sha256:a9a90ece30d9630d694ab1997cd103ea8ec729789451b983a75c7b58b0062d45 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7ef36177d5d0bc554fbb63d8210ae751bcc538bea7905b51d078d9ab90a755fa ...17Starting service redis:6.2-alpine ...18Pulling docker image redis:6.2-alpine ...19Using docker image sha256:85fd7bd884b6493c8eb6f4dffbe5406d97cce56aff84f1580a5eb5b9d841f158 for redis:6.2-alpine with digest redis@sha256:87c44d5d9f472e767c8737f4130c765d77bdc95c7472d6427cfc9d4632f12da6 ...20Waiting for services to be up and running (timeout 30 seconds)...21Authenticating with credentials from job payload (GitLab Registry)22Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...23Using docker image sha256:61b59025d0d646cd177f654d8f81df859675be528f37dcc2ce6f39a49c7a5dd9 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:25367d41b1034f1ecacfc9cb8eebc70cb30c6fdade3781cf295488255bf61614 ...25Running on runner-suryygeg-project-278964-concurrent-0 via runner-suryygeg-shared-gitlab-org-1685669343-85437ce2...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/29Created fresh repository.30remote: Enumerating objects: 139970, done. 31remote: Counting objects: 100% (139970/139970), done. 32remote: Compressing objects: 100% (94736/94736), done. 33remote: Total 139970 (delta 61223), reused 92025 (delta 39894), pack-reused 0 34Receiving objects: 100% (139970/139970), 123.36 MiB | 29.25 MiB/s, done.35Resolving deltas: 100% (61223/61223), done.37 * [new ref] refs/pipelines/887306308 -> refs/pipelines/88730630838Checking out 95754c79 as detached HEAD (ref is refs/merge-requests/122015/merge)...39Skipping Git submodules setup40$ git remote set-url origin "${CI_REPOSITORY_URL}"42Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...43Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 44Successfully extracted cache46Downloading artifacts for compile-test-assets (4400964016)...47Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964016 responseStatus=200 OK token=64_krhby48Downloading artifacts for detect-tests (4400964025)...49Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964025 responseStatus=200 OK token=64_krhby50Downloading artifacts for retrieve-tests-metadata (4400964028)...51Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964028 responseStatus=200 OK token=64_krhby52Downloading artifacts for setup-test-env (4400964019)...53Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964019 responseStatus=200 OK token=64_krhby55Using docker image sha256:61b59025d0d646cd177f654d8f81df859675be528f37dcc2ce6f39a49c7a5dd9 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:25367d41b1034f1ecacfc9cb8eebc70cb30c6fdade3781cf295488255bf61614 ...56$ echo $FOSS_ONLY57$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb58$ export GOPATH=$CI_PROJECT_DIR/.go59$ mkdir -p $GOPATH60$ source scripts/utils.sh61$ source scripts/prepare_build.sh716Using decomposed database config (config/database.yml.postgresql)717Disabling ci connection in config/database.yml718Geo DB won't be set up.719Embedding DB won't be set up.731$ source ./scripts/rspec_helpers.sh732$ run_timed_command "gem install knapsack --no-document"733$ gem install knapsack --no-document734Successfully installed knapsack-4.0.07351 gem installed736==> 'gem install knapsack --no-document' succeeded in 0 seconds.737$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"739$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"744$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"745$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"746SKIP_FLAKY_TESTS_AUTOMATICALLY: 747RETRY_FAILED_TESTS_IN_NEW_PROCESS: true748KNAPSACK_GENERATE_REPORT: true749FLAKY_RSPEC_GENERATE_REPORT: true750KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb751KNAPSACK_LOG_LEVEL: debug752KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13_single-db_1_28_report.json753FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json754FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_single-db_1_28_report.json755NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_single-db_1_28_report.json756SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests_rspec_unit_pg13_single-db_1_28.txt757CRYSTALBALL: 758RSPEC_TESTS_MAPPING_ENABLED: 759RSPEC_TESTS_FILTER_FILE: 760Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-4400964259.json --format RspecJunitFormatter --out rspec/rspec-4400964259.xml --tag ~quarantine --tag ~level:background_migration -- spec/services/notification_service_spec.rb spec/lib/gitlab/background_migration/reset_duplicate_ci_runners_token_values_on_projects_spec.rb spec/models/gpg_key_spec.rb spec/services/ci/update_build_queue_service_spec.rb spec/lib/gitlab/ci/status/bridge/factory_spec.rb spec/models/project_statistics_spec.rb spec/models/members/group_member_spec.rb spec/lib/gitlab/database/tables_truncate_spec.rb spec/metrics_server/metrics_server_spec.rb spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb spec/graphql/mutations/merge_requests/set_milestone_spec.rb spec/lib/gitlab/database/batch_average_counter_spec.rb spec/models/resource_state_event_spec.rb spec/lib/gitlab/database/batch_count_spec.rb spec/services/bulk_imports/create_service_spec.rb spec/lib/gitlab/database/migration_helpers/v2_spec.rb spec/lib/gitlab/data_builder/issuable_spec.rb spec/services/design_management/save_designs_service_spec.rb spec/lib/gitlab/git/diff_spec.rb spec/models/concerns/project_api_compatibility_spec.rb spec/workers/merge_request_cleanup_refs_worker_spec.rb spec/models/personal_access_token_spec.rb spec/lib/gitlab/ci/config/external/mapper/verifier_spec.rb spec/models/service_desk_setting_spec.rb spec/services/notification_recipients/build_service_spec.rb spec/lib/gitlab/utils/sanitize_node_link_spec.rb spec/lib/gitlab/email/receiver_spec.rb spec/lib/gitlab/redis/trace_chunks_spec.rb spec/lib/gitlab/i18n/po_linter_spec.rb spec/lib/gitlab/template/merge_request_template_spec.rb spec/lib/gitlab/ci/config/entry/default_spec.rb spec/lib/gitlab/auth/ldap/user_spec.rb spec/models/external_pull_request_spec.rb spec/services/container_expiration_policies/update_service_spec.rb spec/services/groups/update_shared_runners_service_spec.rb spec/lib/banzai/filter/references/alert_reference_filter_spec.rb spec/services/packages/maven/metadata/sync_service_spec.rb spec/lib/gitlab/template/issue_template_spec.rb spec/lib/gitlab/tracking_spec.rb spec/helpers/projects/pages_helper_spec.rb spec/models/ci/build_trace_chunks/redis_spec.rb spec/services/metrics/dashboard/clone_dashboard_service_spec.rb spec/models/issue/metrics_spec.rb spec/lib/banzai/filter/autolink_filter_spec.rb spec/lib/gitlab/ci/trace/chunked_io_spec.rb spec/graphql/resolvers/group_packages_resolver_spec.rb spec/graphql/mutations/issues/set_escalation_status_spec.rb spec/services/merge_requests/merge_orchestration_service_spec.rb spec/initializers/enumerator_next_patch_spec.rb spec/services/ci/create_pipeline_service/logger_spec.rb spec/finders/ci/jobs_finder_spec.rb spec/models/service_desk/custom_email_credential_spec.rb spec/lib/gitlab/analytics/cycle_analytics/request_params_spec.rb spec/policies/award_emoji_policy_spec.rb spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb spec/lib/bulk_imports/projects/transformers/project_attributes_transformer_spec.rb spec/graphql/resolvers/projects_resolver_spec.rb spec/graphql/resolvers/crm/organizations_resolver_spec.rb spec/presenters/snippet_blob_presenter_spec.rb spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb spec/services/packages/debian/process_changes_service_spec.rb spec/models/concerns/ci/partitionable/switch_spec.rb spec/policies/protected_branch_policy_spec.rb spec/workers/delete_diff_files_worker_spec.rb spec/components/pajamas/alert_component_spec.rb spec/lib/gitlab/ci/config/entry/prefix_spec.rb spec/lib/gitlab/tracking/incident_management_spec.rb spec/lib/gitlab/encrypted_configuration_spec.rb spec/services/ci/expire_pipeline_cache_service_spec.rb spec/lib/gitlab/database/query_analyzer_spec.rb spec/serializers/fork_namespace_entity_spec.rb spec/services/markup/rendering_service_spec.rb spec/lib/gitlab/ci/config/entry/product/parallel_spec.rb spec/lib/gitlab/ci/trace/backoff_spec.rb spec/models/clusters/agents/activity_event_spec.rb spec/services/design_management/design_user_notes_count_service_spec.rb spec/lib/gitlab/legacy_github_import/client_spec.rb spec/scripts/changed-feature-flags_spec.rb spec/lib/gitlab/inactive_projects_deletion_warning_tracker_spec.rb spec/models/spam_log_spec.rb spec/lib/gitlab/pages/deployment_update_spec.rb spec/lib/banzai/pipeline/plain_markdown_pipeline_spec.rb spec/lib/gitlab/metrics/system_spec.rb spec/lib/bulk_imports/groups/pipelines/subgroup_entities_pipeline_spec.rb spec/lib/gitlab/rack_attack_spec.rb spec/services/ci/build_cancel_service_spec.rb spec/lib/gitlab/database/similarity_score_spec.rb spec/services/metrics/dashboard/update_dashboard_service_spec.rb spec/services/web_hooks/log_execution_service_spec.rb spec/services/ci/compare_test_reports_service_spec.rb spec/lib/gitlab/github_import/importer/notes_importer_spec.rb spec/lib/gitlab/health_checks/db_check_spec.rb spec/graphql/mutations/security/ci_configuration/configure_secret_detection_spec.rb spec/lib/gitlab/untrusted_regexp_spec.rb spec/lib/gitlab/ci/config/normalizer/number_strategy_spec.rb spec/services/access_token_validation_service_spec.rb spec/models/ci/catalog/resource_spec.rb spec/models/lfs_objects_project_spec.rb spec/lib/gitlab/import_export/uploads_saver_spec.rb spec/helpers/stat_anchors_helper_spec.rb spec/lib/banzai/pipeline_spec.rb spec/services/update_merge_request_metrics_service_spec.rb spec/workers/gitlab/github_import/advance_stage_worker_spec.rb spec/graphql/resolvers/environments/last_deployment_resolver_spec.rb spec/workers/projects/delete_branch_worker_spec.rb spec/lib/gitlab/database/load_balancing/host_list_spec.rb spec/lib/gitlab/metrics/dashboard/importers/prometheus_metrics_spec.rb spec/services/incident_management/pager_duty/process_webhook_service_spec.rb spec/graphql/types/alert_management/prometheus_integration_type_spec.rb spec/services/environments/create_service_spec.rb spec/graphql/resolvers/environments/nested_environments_resolver_spec.rb spec/lib/gitlab/health_checks/gitaly_check_spec.rb spec/services/ci/append_build_trace_service_spec.rb spec/services/boards/issues/create_service_spec.rb spec/models/preloaders/merge_request_diff_preloader_spec.rb spec/services/x509_certificate_revoke_service_spec.rb spec/rubocop/cop/gitlab/doc_url_spec.rb spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb spec/lib/gitlab/database/schema_validation/adapters/column_database_adapter_spec.rb spec/lib/peek/views/redis_detailed_spec.rb spec/workers/gitlab/jira_import/import_issue_worker_spec.rb spec/rubocop/cop/migration/schedule_async_spec.rb spec/lib/gitlab/template_parser/parser_spec.rb spec/lib/gitlab/background_migration/update_ci_pipeline_artifacts_unknown_locked_status_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/redis_metric_spec.rb spec/lib/gitlab/usage_data_queries_spec.rb spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb spec/lib/gitlab/import_formatter_spec.rb spec/lib/banzai/filter/footnote_filter_spec.rb spec/rubocop/cop/migration/prevent_strings_spec.rb spec/models/packages/composer/cache_file_spec.rb spec/views/projects/empty.html.haml_spec.rb spec/workers/bulk_imports/relation_batch_export_worker_spec.rb spec/rubocop/cop/migration/background_migration_missing_active_concern_spec.rb spec/lib/gitlab/uploads_transfer_spec.rb spec/lib/sidebars/groups/menus/group_information_menu_spec.rb spec/presenters/ci/group_variable_presenter_spec.rb spec/models/exported_protected_branch_spec.rb spec/models/concerns/batch_destroy_dependent_associations_spec.rb spec/workers/concerns/worker_context_spec.rb spec/lib/gitlab/database/postgresql_adapter/type_map_cache_spec.rb spec/services/packages/rubygems/process_gem_service_spec.rb spec/workers/gitlab/jira_import/stage/import_labels_worker_spec.rb spec/lib/api/helpers/pagination_strategies_spec.rb spec/graphql/types/packages/package_details_type_spec.rb spec/services/design_management/copy_design_collection/queue_service_spec.rb spec/services/dependency_proxy/find_cached_manifest_service_spec.rb spec/lib/gitlab/import_export/json/ndjson_reader_spec.rb spec/graphql/types/ci/job_need_union_spec.rb spec/services/users/last_push_event_service_spec.rb spec/lib/gitlab/pagination/keyset/in_operator_optimization/order_by_columns_spec.rb spec/lib/system_check/orphans/repository_check_spec.rb spec/models/preloaders/group_policy_preloader_spec.rb spec/services/base_count_service_spec.rb spec/rubocop/cop/database/rescue_query_canceled_spec.rb spec/lib/gitlab/github_import/representation/collaborator_spec.rb spec/lib/sidebars/user_settings/menus/access_tokens_menu_spec.rb spec/views/projects/branches/index.html.haml_spec.rb spec/workers/google_cloud/fetch_google_ip_list_worker_spec.rb spec/presenters/packages/composer/packages_presenter_spec.rb spec/rubocop/cop/migration/prevent_index_creation_spec.rb spec/lib/bulk_imports/common/pipelines/boards_pipeline_spec.rb spec/tooling/rspec_flaky/listener_spec.rb spec/helpers/admin/background_migrations_helper_spec.rb spec/initializers/global_id_spec.rb spec/helpers/time_helper_spec.rb spec/graphql/mutations/customer_relations/organizations/update_spec.rb spec/lib/quality/seeders/issues_spec.rb spec/services/packages/nuget/create_dependency_service_spec.rb spec/models/clusters/agents/authorizations/ci_access/implicit_authorization_spec.rb spec/services/onboarding/progress_service_spec.rb spec/services/google_cloud/create_service_accounts_service_spec.rb spec/services/feature_flags/hook_service_spec.rb spec/rubocop/cop/performance/active_record_subtransactions_spec.rb spec/workers/ci/runners/stale_machines_cleanup_cron_worker_spec.rb spec/serializers/project_access_token_entity_spec.rb spec/serializers/evidences/release_entity_spec.rb spec/serializers/feature_flag_summary_entity_spec.rb spec/graphql/types/incident_management/escalation_status_enum_spec.rb spec/models/concerns/safely_change_column_default_spec.rb spec/services/export_csv/base_service_spec.rb spec/lib/gitlab/composer/version_index_spec.rb spec/lib/gitlab/config_checker/external_database_checker_spec.rb spec/lib/sidebars/projects/menus/security_compliance_menu_spec.rb spec/lib/gitlab/ci/build/rules/rule/clause_spec.rb spec/lib/gitlab/ci/interpolation/block_spec.rb spec/lib/gitlab/ci/pipeline/chain/metrics_spec.rb spec/views/profiles/notifications/show.html.haml_spec.rb spec/initializers/action_mailer_hooks_spec.rb spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb spec/lib/gitlab/view/presenter/simple_spec.rb spec/workers/gitlab/github_import/pull_requests/import_review_worker_spec.rb spec/lib/bulk_imports/projects/stage_spec.rb spec/rubocop/cop/graphql/enum_values_spec.rb spec/lib/gitlab/github_gists_import/importer/gists_importer_spec.rb spec/lib/json_web_token/token_spec.rb spec/rubocop/cop/migration/prevent_global_enable_lock_retries_with_disable_ddl_transaction_spec.rb spec/graphql/types/work_items/widgets/hierarchy_update_input_type_spec.rb spec/tooling/lib/tooling/helpers/predictive_tests_helper_spec.rb spec/graphql/types/description_version_type_spec.rb spec/lib/gitlab/import_export/hash_util_spec.rb spec/graphql/types/container_expiration_policy_cadence_enum_spec.rb spec/models/concerns/presentable_spec.rb spec/graphql/types/achievements/user_achievement_type_spec.rb spec/lib/gitlab/pagination/offset_header_builder_spec.rb spec/lib/gitlab/database/gitlab_schema_info_spec.rb spec/db/production/import_common_metrics_spec.rb spec/lib/bulk_imports/projects/graphql/get_project_query_spec.rb spec/routing/web_ide_routing_spec.rb spec/lib/service_ping/permit_data_categories_spec.rb spec/serializers/remote_mirror_entity_spec.rb spec/lib/system_check_spec.rb spec/lib/gitlab/sidekiq_status/client_middleware_spec.rb spec/lib/api/entities/ci/job_request/service_spec.rb spec/graphql/types/issue_type_enum_spec.rb spec/lib/gitlab/database/background_migration/batch_metrics_spec.rb spec/graphql/types/ci/config/group_type_spec.rb spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb spec/models/acts_as_taggable_on/tagging_spec.rb spec/views/notify/new_achievement_email.html.haml_spec.rb spec/graphql/types/packages/package_dependency_link_type_spec.rb spec/models/concerns/taggable_queries_spec.rb spec/lib/gitlab/diff/inline_diff_markdown_marker_spec.rb spec/lib/api/entities/project_import_failed_relation_spec.rb spec/routing/projects/security/configuration_controller_routing_spec.rb spec/models/discussion_note_spec.rb spec/graphql/types/permission_types/deployment_spec.rb spec/workers/gitlab_performance_bar_stats_worker_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/collected_data_categories_metric_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb spec/finders/projects_finder_spec.rbKnapsack report generator started!761warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.763Run options: exclude {:quarantine=>true, :level=>"background_migration"}764Test environment set up in 1.222800285 seconds765NotificationService766 .permitted_actions767 includes public methods768 excludes EXCLUDED_ACTIONS769 excludes protected and private methods770 #async771 returns an Async object with the correct parent772 when receiving a public method773 schedules a MailScheduler::NotificationServiceWorker774 when receiving a private method775 raises NoMethodError776 when receiving a non-existent method777 raises NoMethodError778 Keys779 #new_key780 sends email to key owner781 never emails the ghost user782 does not send email to key owner783 GpgKeys784 #new_gpg_key785 sends email to key owner786 never emails the ghost user787 does not send email to key owner788 AccessToken789 #access_token_created790 sends email to the token owner791 when user is not allowed to receive notifications792 does not send email to the token owner793 #access_token_about_to_expire794 sends email to the token owner795 #access_token_expired796 sends email to the token owner797 when user is not allowed to receive notifications798 does not send email to the token owner799 #access_token_revoked800 sends email to the token owner without source801 sends email to the token owner with source802 when user is not allowed to receive notifications803 does not send email to the token owner804 SSH Keys805 #ssh_key_expired806 sends email to the token owner807 when user is not allowed to receive notifications808 does not send email to the token owner809 #ssh_key_expiring_soon810 sends email to the token owner811 when user is not allowed to receive notifications812 does not send email to the token owner813 #unknown_sign_in814 sends email to the user815 #disabled_two_factor816 sends email to the user817 #new_email_address_added818 sends email to the user819 Notes820 issue note821 issue_email_participants822 behaves like no participants are notified823 does not send the email824 behaves like notification with exact metric events825 adds metric event826 do exist and note not confidential827 sends the email828 behaves like notification with exact metric events829 adds metric event830 do exist and note is confidential831 behaves like no participants are notified832 does not send the email833 behaves like notification with exact metric events834 adds metric event835 #new_note836 filters out "mentioned in" notes837 with users838 sends emails to recipients839 emails the note author if they've opted into notifications about their activity840 behaves like project emails are disabled841 sends no emails with project emails disabled842 sends emails to someone843 participating844 by note845 is expected not to have enqueued job846 in project that belongs to a group847 which is a top-level group848 behaves like new note notifications849 sends notifications850 behaves like project emails are disabled851 sends no emails with project emails disabled852 sends emails to someone853 which is a subgroup854 overrides child objects with global level855 behaves like new note notifications856 sends notifications857 confidential issue note858 filters out users that can not read the issue859 on project that belongs to subgroup860 when user is group guest member861 does not email guest user862 issue note mention863 #new_note864 notifies the team members865 notifies parent group members with mention level866 filters out "mentioned in" notes867 behaves like project emails are disabled868 sends no emails with project emails disabled869 sends emails to someone870 when note is confidential871 does not notify users that cannot read note872 project snippet note873 #new_note874 notifies the team members875 personal snippet note876 #new_note877 notifies the participants878 commit note879 #new_note, #perform_enqueued_jobs880 is expected to eq 0881 is expected to eq 0882 is expected to eq 0883 behaves like project emails are disabled884 sends no emails with project emails disabled885 sends emails to someone886 merge request diff note887 #new_note888 records sent notifications889 behaves like project emails are disabled890 sends no emails with project emails disabled891 sends emails to someone892 design diff note893 design management is enabled894 sends new note notifications895 design management is disabled896 does not notify anyone897 #send_new_release_notifications898 when release author is blocked899 does not send any notification900 when release author is a ghost901 does not send any notification902 when recipients for a new release exist903 notifies the expected users904 Participating project notification settings have priority over group and global settings if available905 custom on group906 does not send an email to user1 when a new issue is created and new_issue is set to nil907 does not send an email to user1 when a new issue is created and new_issue is set to true908 watch on group909 does not send an email910 custom on global, global on group911 does not send an email912 watch on global, global on group913 does not send an email914 Issues915 #new_issue916 notifies the expected users917 properly prioritizes notification reason918 adds "assigned" reason for assignees if any919 emails any mentioned users with the mention level920 emails the author if they've opted into notifications about their activity921 doesn't email the author if they haven't opted into notifications about their activity922 emails subscribers of the issue's labels and adds `subscribed` reason923 when user has an only mention notification setting924 does not send assignee notifications925 behaves like project emails are disabled926 sends no emails with project emails disabled927 sends emails to someone928 confidential issues929 emails subscribers of the issue's labels that can read the issue930 when the author is not allowed to trigger notifications931 because they are blocked932 does not send any notification933 because they are a ghost934 does not send any notification935 #new_mentions_in_issue936 sends no emails when no new mentions are present937 emails new mentions with a watch level higher than mention938 does not email new mentions with a watch level equal to or less than mention939 emails new mentions despite being unsubscribed940 sends the proper notification reason header941 behaves like project emails are disabled942 sends no emails with project emails disabled943 sends emails to someone944 where current_user is blocked945 does not send any notification946 where current_user is a ghost947 does not send any notification948 #reassigned_issue949 emails new assignee950 adds "assigned" reason for new assignee951 emails previous assignee even if they have the "on mention" notif level952 emails new assignee even if they have the "on mention" notif level953 does not email new assignee if they are the current user954 behaves like participating notifications955 behaves like participating by note notification956 emails the participant957 for subgroups958 emails the participant959 behaves like participating by author notification960 emails the participant961 behaves like participating by assignee notification962 emails the participant963 behaves like participating by confidential note notification964 when user is mentioned on confidential note965 only emails authorized users966 behaves like project emails are disabled967 sends no emails with project emails disabled968 sends emails to someone969 #relabeled_issue970 emails the current user if they've opted into notifications about their activity971 doesn't email the current user if they haven't opted into notifications about their activity972 doesn't send email to anyone but subscribers of the given labels973 doesn't send multiple email when a user is subscribed to multiple given labels974 behaves like project emails are disabled975 sends no emails with project emails disabled976 sends emails to someone977 confidential issues978 emails subscribers of the issue's labels that can read the issue979 #removed_milestone on Issue981 behaves like altered milestone notification on issue982 sends the email to the correct people983 behaves like project emails are disabled984 sends no emails with project emails disabled985 sends emails to someone986 behaves like participating by confidential note notification987 when user is mentioned on confidential note988 only emails authorized users989 confidential issues990 emails subscribers of the issue's milestone that can read the issue991 #changed_milestone on Issue993 behaves like altered milestone notification on issue994 sends the email to the correct people995 behaves like project emails are disabled996 sends no emails with project emails disabled997 sends emails to someone998 confidential issues999 emails subscribers of the issue's milestone that can read the issue1000 #close_issue1001 sends email to issue assignee and issue author1002 adds "subscribed" reason to subscriber emails1003 behaves like participating notifications1004 behaves like participating by note notification1005 emails the participant1006 for subgroups1007 emails the participant1008 behaves like participating by author notification1009 emails the participant1010 behaves like participating by assignee notification1011 emails the participant1012 behaves like project emails are disabled1013 sends no emails with project emails disabled1014 sends emails to someone1015 behaves like participating by confidential note notification1016 when user is mentioned on confidential note1017 only emails authorized users1018 #reopen_issue1019 sends email to issue notification recipients1020 behaves like participating notifications1021 behaves like participating by note notification1022 emails the participant1023 for subgroups1024 emails the participant1025 behaves like participating by author notification1026 emails the participant1027 behaves like participating by assignee notification1028 emails the participant1029 behaves like participating by confidential note notification1030 when user is mentioned on confidential note1031 only emails authorized users1032 behaves like project emails are disabled1033 sends no emails with project emails disabled1034 sends emails to someone1035 #issue_moved1036 sends email to issue notification recipients1037 behaves like participating notifications1038 behaves like participating by note notification1039 emails the participant1040 for subgroups1041 emails the participant1042 behaves like participating by author notification1043 emails the participant1044 behaves like participating by assignee notification1045 emails the participant1046 behaves like participating by confidential note notification1047 when user is mentioned on confidential note1048 only emails authorized users1049 behaves like project emails are disabled1050 sends no emails with project emails disabled1051 sends emails to someone1052 #issue_cloned1053 sends email to issue notification recipients1054 behaves like participating notifications1055 behaves like participating by note notification1056 emails the participant1057 for subgroups1058 emails the participant1059 behaves like participating by author notification1060 emails the participant1061 behaves like participating by assignee notification1062 emails the participant1063 behaves like participating by confidential note notification1064 when user is mentioned on confidential note1065 only emails authorized users1066 behaves like project emails are disabled1067 sends no emails with project emails disabled1068 sends emails to someone1069 #issue_due1070 sends email to issue notification recipients, excluding watchers1071 sends the email from the author1072 behaves like participating notifications1073 behaves like participating by note notification1074 emails the participant1075 for subgroups1076 emails the participant1077 behaves like participating by author notification1078 emails the participant1079 behaves like participating by assignee notification1080 emails the participant1081 behaves like participating by confidential note notification1082 when user is mentioned on confidential note1083 only emails authorized users1084 behaves like project emails are disabled1085 sends no emails with project emails disabled1086 sends emails to someone1087 Merge Requests1088 #new_merge_request1089 is expected to eq 01090 adds "assigned" reason for assignee, if any1091 emails any mentioned users with the mention level1092 emails the author if they've opted into notifications about their activity1093 doesn't email the author if they haven't opted into notifications about their activity1094 emails subscribers of the merge request's labels1095 behaves like project emails are disabled1096 sends no emails with project emails disabled1097 sends emails to someone1098 Approvals1099 #approve_mr1100 will notify the author, subscribers, and assigned users1101 #unapprove_mr1102 will notify the author, subscribers, and assigned users1103 participating1104 behaves like participating by assignee notification1105 emails the participant1106 behaves like participating by note notification1107 emails the participant1108 for subgroups1109 emails the participant1110 by author1111 is expected to eq 01112 when the author is not allowed to trigger notifications1113 because they are blocked1114 behaves like is not able to send notifications1115 does not send any notification1116 because they are a ghost1117 behaves like is not able to send notifications1118 does not send any notification1119 #new_mentions_in_merge_request1120 sends no emails when no new mentions are present1121 emails new mentions with a watch level higher than mention1122 does not email new mentions with a watch level equal to or less than mention1123 emails new mentions despite being unsubscribed1124 sends the proper notification reason header1125 behaves like project emails are disabled1126 sends no emails with project emails disabled1127 sends emails to someone1128 where current_user is blocked1129 does not send any notification1130 where current_user is a ghost1131 does not send any notification1132 #reassigned_merge_request1133 is expected to eq 01134 adds "assigned" reason for new assignee1135 behaves like participating notifications1136 behaves like participating by note notification1137 emails the participant1138 for subgroups1139 emails the participant1140 behaves like participating by author notification1141 emails the participant1142 behaves like participating by assignee notification1143 emails the participant1144 behaves like project emails are disabled1145 sends no emails with project emails disabled1146 sends emails to someone1147 #changed_reviewer_of_merge_request1148 sends emails to relevant users only1149 adds "review requested" reason for new reviewer1150 participating notifications with reviewers1151 behaves like participating notifications1152 behaves like participating by note notification1153 emails the participant1154 for subgroups1155 emails the participant1156 behaves like participating by author notification1157 emails the participant1158 behaves like participating by assignee notification1159 emails the participant1160 behaves like participating by reviewer notification1161 emails the participant1162 behaves like project emails are disabled1163 sends no emails with project emails disabled1164 sends emails to someone1165 #change_in_merge_request_draft_status1166 sends emails to relevant users only1167 behaves like participating notifications1168 behaves like participating by note notification1169 emails the participant1170 for subgroups1171 emails the participant1172 behaves like participating by author notification1173 emails the participant1174 behaves like participating by assignee notification1175 emails the participant1176 behaves like project emails are disabled1177 sends no emails with project emails disabled1178 sends emails to someone1179 #push_to_merge_request1180 is expected to eq 01181 triggers push_to_merge_request_email with corresponding email1182 number_of_new_commits: 0, number_of_new_commits_displayed: 01183 triggers the corresponding mailer method with list of stripped commits1184 number_of_new_commits: 18, number_of_new_commits_displayed: 181185 triggers the corresponding mailer method with list of stripped commits1186 number_of_new_commits: 19, number_of_new_commits_displayed: 191187 triggers the corresponding mailer method with list of stripped commits1188 number_of_new_commits: 20, number_of_new_commits_displayed: 201189 triggers the corresponding mailer method with list of stripped commits1190 number_of_new_commits: 21, number_of_new_commits_displayed: 201191 triggers the corresponding mailer method with list of stripped commits1192 number_of_new_commits: 22, number_of_new_commits_displayed: 201193 triggers the corresponding mailer method with list of stripped commits1194 there is only one existing commit1195 triggers corresponding mailer method with only one existing commit1196 behaves like participating notifications1197 behaves like participating by note notification1198 emails the participant1199 for subgroups1200 emails the participant1201 behaves like participating by author notification1202 emails the participant1203 behaves like participating by assignee notification1204 emails the participant1205 behaves like project emails are disabled1206 sends no emails with project emails disabled1207 sends emails to someone1208 #relabel_merge_request1209 doesn't send email to anyone but subscribers of the given labels1210 behaves like project emails are disabled1211 sends no emails with project emails disabled1212 sends emails to someone1213 #removed_milestone on MergeRequest1214 behaves like altered milestone notification on merge request1215 sends the email to the correct people1216 behaves like project emails are disabled1217 sends no emails with project emails disabled1218 sends emails to someone1219 #changed_milestone on MergeRequest1220 behaves like altered milestone notification on merge request1221 sends the email to the correct people1222 behaves like project emails are disabled1223 sends no emails with project emails disabled1224 sends emails to someone1225 #merge_request_unmergeable1226 sends email to merge request author1227 behaves like project emails are disabled1228 sends no emails with project emails disabled1229 sends emails to someone1230 when merge_when_pipeline_succeeds is true1231 sends email to merge request author and merge_user1232 #closed_merge_request1233 is expected to eq 01234 behaves like participating notifications1235 behaves like participating by note notification1236 emails the participant1237 for subgroups1238 emails the participant1239 behaves like participating by author notification1240 emails the participant1241 behaves like participating by assignee notification1242 emails the participant1243 behaves like project emails are disabled1244 sends no emails with project emails disabled1245 sends emails to someone1246 #merged_merge_request1247 is expected to eq 01248 notifies the merger when the pipeline succeeds is true1249 does not notify the merger when the pipeline succeeds is false1250 notifies the merger when the pipeline succeeds is false but they've opted into notifications about their activity1251 behaves like participating notifications1252 behaves like participating by note notification1253 emails the participant1254 for subgroups1255 emails the participant1256 behaves like participating by author notification1257 emails the participant1258 behaves like participating by assignee notification1259 emails the participant1260 behaves like project emails are disabled1261 sends no emails with project emails disabled1262 sends emails to someone1263 #reopen_merge_request1264 is expected to eq 01265 behaves like participating notifications1266 behaves like participating by note notification1267 emails the participant1268 for subgroups1269 emails the participant1270 behaves like participating by author notification1271 emails the participant1272 behaves like participating by assignee notification1273 emails the participant1274 behaves like project emails are disabled1275 sends no emails with project emails disabled1276 sends emails to someone1277 #resolve_all_discussions1278 is expected to eq 01279 behaves like participating notifications1280 behaves like participating by note notification1281 emails the participant1282 for subgroups1283 emails the participant1284 behaves like participating by author notification1285 emails the participant1286 behaves like participating by assignee notification1287 emails the participant1288 behaves like project emails are disabled1289 sends no emails with project emails disabled1290 sends emails to someone1291 #merge_when_pipeline_succeeds1292 send notification that merge will happen when pipeline succeeds1293 does not send notification if the custom event is disabled1294 sends notification to participants even if the custom event is disabled1295 behaves like participating notifications1296 behaves like participating by note notification1297 emails the participant1298 for subgroups1299 emails the participant1300 behaves like participating by author notification1301 emails the participant1302 behaves like participating by assignee notification1303 emails the participant1304 behaves like project emails are disabled1305 sends no emails with project emails disabled1306 sends emails to someone1307 #review_requested_of_merge_request1308 sends email to reviewer1309 adds "review requested" reason for new reviewer1310 behaves like project emails are disabled1311 sends no emails with project emails disabled1312 sends emails to someone1313 Projects1314 #project_was_moved1315 when notifications are disabled1316 does not send a notification1317 with users at both project and group level1318 notifies the expected users1319 behaves like project emails are disabled1320 sends no emails with project emails disabled1321 sends emails to someone1322 users not having access to the new location1323 does not send email1324 user with notifications disabled1325 #project_exported1326 is expected to be empty1327 #project_not_exported1328 is expected to be empty1329 user with notifications enabled1330 #project_exported1331 is expected to eq 11332 behaves like project emails are disabled1333 sends no emails with project emails disabled1334 sends emails to someone1335 #project_not_exported1336 is expected to eq 11337 behaves like project emails are disabled1338 sends no emails with project emails disabled1339 sends emails to someone1340 #invite_member_reminder1341 calls the Notify.invite_member_reminder method with the right params1342 sends exactly one email1343 #new_instance_access_request1344 sends notification only to a maximum of ten most recently active instance admins1345 #user_admin_rejection1346 sends the user a rejection email1347 #user_deactivated1348 sends the user an email1349 GroupMember1350 #new_access_request1351 recipients1352 sends notification only to group owners1353 behaves like group emails are disabled1354 sends no emails with group emails disabled1355 sends emails to someone1356 behaves like sends notification only to a maximum of ten, most recently active group owners1357 limit notification emails1358 sends notification only to a maximum of ten, most recently active group owners1359 #decline_invite1360 behaves like declines the invite1361 is expected to change `ActionMailer::Base.deliveries.size` by 11362 #new_group_member1363 sends a notification1364 when notifications are disabled1365 does not send a notification1366 behaves like group emails are disabled1367 sends no emails with group emails disabled1368 sends emails to someone1369 #updated_group_member_expiration1370 emails the user that their group membership expiry has changed1371 ProjectMember1372 #new_access_request1373 for a project in a user namespace1374 recipients1375 sends notification only to project maintainers1376 behaves like project emails are disabled1377 sends no emails with project emails disabled1378 sends emails to someone1379 behaves like sends notification only to a maximum of ten, most recently active project maintainers1380 limit notification emails1381 sends notification only to a maximum of ten, most recently active project maintainers1382 for a project in a group1383 when the project has no maintainers1384 when the group has at least one owner1385 recipients1386 sends notifications to the group owners1387 behaves like sends notification only to a maximum of ten, most recently active group owners1388 limit notification emails1389 sends notification only to a maximum of ten, most recently active group owners1390 when the group does not have any owners1391 recipients1392 does not send any notifications1393 when the project has maintainers1394 recipients1395 sends notifications only to project maintainers1396 behaves like sends notification only to a maximum of ten, most recently active project maintainers1397 limit notification emails1398 sends notification only to a maximum of ten, most recently active project maintainers1399 #decline_invite1400 behaves like declines the invite1401 is expected to change `ActionMailer::Base.deliveries.size` by 11402 #new_project_member1403 is expected to eq 11404 behaves like project emails are disabled1405 sends no emails with project emails disabled1406 sends emails to someone1407 when notifications are disabled1408 is expected to be empty1409 guest user in private project1410 filters out guests when new note is created1411 filters out guests when new merge request is created1412 filters out guests when merge request is closed1413 filters out guests when merge request is reopened1414 filters out guests when merge request is merged1415 Pipelines1416 #pipeline_finished1417 with a successful pipeline1418 when the creator has default settings1419 notifies nobody1420 when the creator has watch set1421 notifies nobody1422 when the creator has custom notifications, but without any set1423 notifies nobody1424 when the creator has custom notifications disabled1425 notifies nobody1426 when the creator has custom notifications enabled1427 emails only the creator1428 behaves like project emails are disabled1429 sends no emails with project emails disabled1430 sends emails to someone1431 when the creator has group notification email set1432 sends to group notification email1433 with a failed pipeline1434 when the creator has no custom notification set1435 emails only the creator1436 behaves like project emails are disabled1437 sends no emails with project emails disabled1438 sends emails to someone1439 when the creator has group notification email set1440 sends to group notification email1441 when the creator has watch set1442 emails only the creator1443 when the creator has custom notifications, but without any set1444 emails only the creator1445 when the creator has custom notifications disabled1446 notifies nobody1447 when the creator has custom notifications set1448 emails only the creator1449 when the creator has no read_build access1450 does not send emails1451 with a fixed pipeline1452 when the creator has no custom notification set1453 emails only the creator1454 behaves like project emails are disabled1455 sends no emails with project emails disabled1456 sends emails to someone1457 when the creator has group notification email set1458 sends to group notification email1459 when the creator has watch set1460 emails only the creator1461 when the creator has custom notifications, but without any set1462 emails only the creator1463 when the creator has custom notifications disabled1464 notifies nobody1465 when the creator has custom notifications set1466 emails only the creator1467 Pages domains1468 #pages_domain_enabled1469 emails current watching maintainers and owners1470 emails nobody if the project is missing1471 behaves like project emails are disabled1472 sends no emails with project emails disabled1473 sends emails to someone1474 #pages_domain_disabled1475 emails current watching maintainers and owners1476 emails nobody if the project is missing1477 behaves like project emails are disabled1478 sends no emails with project emails disabled1479 sends emails to someone1480 #pages_domain_verification_succeeded1481 emails current watching maintainers and owners1482 emails nobody if the project is missing1483 behaves like project emails are disabled1484 sends no emails with project emails disabled1485 sends emails to someone1486 #pages_domain_verification_failed1487 emails current watching maintainers and owners1488 emails nobody if the project is missing1489 behaves like project emails are disabled1490 sends no emails with project emails disabled1491 sends emails to someone1492 #pages_domain_auto_ssl_failed1493 emails current watching maintainers and owners1494 emails nobody if the project is missing1495 behaves like project emails are disabled1496 sends no emails with project emails disabled1497 sends emails to someone1498 Auto DevOps notifications1499 #autodevops_disabled1500 emails project owner and user that triggered the pipeline1501 behaves like project emails are disabled1502 sends no emails with project emails disabled1503 sends emails to someone1504 Repository cleanup1505 #repository_cleanup_success1506 emails the specified user only1507 behaves like project emails are disabled1508 sends no emails with project emails disabled1509 sends emails to someone1510 #repository_cleanup_failure1511 emails the specified user only1512 behaves like project emails are disabled1513 sends no emails with project emails disabled1514 sends emails to someone1515 Remote mirror notifications1516 #remote_mirror_update_failed1517 emails current watching maintainers and owners1518 behaves like project emails are disabled1519 sends no emails with project emails disabled1520 sends emails to someone1521 with external authorization service1522 sends email when the service is not enabled1523 when the service is enabled1524 does not send an email1525 with admin user1526 when admin mode is enabled1527 still delivers email to admins1528 when admin mode is disabled1529 does not send an email1530 #prometheus_alerts_fired1531 sends the email to owners and masters1532 behaves like project emails are disabled1533 sends no emails with project emails disabled1534 sends emails to someone1535 #new_review1536 sends emails1537 behaves like project emails are disabled1538 sends no emails with project emails disabled1539 sends emails to someone1540 #inactive_project_deletion_warning1541 sends email to project owners and maintainers1542GpgKey1543 associations1544 is expected to belong to user required: false1545 is expected to have many subkeys1546 validation1547 is expected to validate that :user cannot be empty/falsy1548 is expected to validate that :key cannot be empty/falsy1549 is expected to validate that :key is case-sensitively unique1550 is expected to allow :key to be ‹"-----BEGIN PGP PUBLIC KEY BLOCK-----\nkey\n-----END PGP PUBLIC KEY BLOCK-----"›1551 is expected not to allow :key to be ‹"-----BEGIN PGP PUBLIC KEY BLOCK-----\nkey"›1552 is expected not to allow :key to be ‹"-----BEGIN PGP PUBLIC KEY BLOCK-----\nkey\n-----BEGIN PGP PUBLIC KEY BLOCK-----"›1553 is expected not to allow :key to be ‹"-----BEGIN PGP PUBLIC KEY BLOCK----------END PGP PUBLIC KEY BLOCK-----"›1554 is expected not to allow :key to be ‹"-----BEGIN PGP PUBLIC KEY BLOCK-----"›1555 is expected not to allow :key to be ‹"-----END PGP PUBLIC KEY BLOCK-----"›1556 is expected not to allow :key to be ‹"key\n-----END PGP PUBLIC KEY BLOCK-----"›1557 is expected not to allow :key to be ‹"BEGIN PGP"›1558 callbacks1559 extract_fingerprint1560 extracts the fingerprint from the gpg key1561 extract_primary_keyid1562 extracts the primary keyid from the gpg key1563 generate_subkeys1564 extracts the subkeys from the gpg key1565 #key=1566 strips white spaces1567 does not strip when the key is nil1568 #user_infos1569 returns the user infos from the gpg key1570 #verified_user_infos1571 returns the user infos if it is verified1572 returns an empty array if the user info is not verified1573 #emails_with_verified_status1574 email is verified if the user has the matching email1575 #verified?1576 returns true if one of the email addresses in the key belongs to the user1577 returns false if none of the email addresses in the key does not belong to the user1578 verified_and_belongs_to_email?1579 returns false if none of the email addresses in the key does not belong to the user1580 returns false if one of the email addresses in the key belongs to the user and does not match the provided email1581 returns true if one of the email addresses in the key belongs to the user and matches the provided email1582 returns true if one of the email addresses in the key belongs to the user and case-insensitively matches the provided email1583 #revoke1584 invalidates all associated gpg signatures and destroys the key1585 deletes all the associated subkeys1586 invalidates all signatures associated to the subkeys1587Ci::UpdateBuildQueueService1588 pending builds queue push / pop1589 #push1590 when pending build can be created1591 creates a new pending build in transaction1592 increments queue push metric1593 when invalid transition is detected1594 raises an error1595 when duplicate entry exists1596 does nothing and returns build id1597 #pop1598 when pending build exists1599 removes pending build in a transaction1600 increments queue pop metric1601 when pending build does not exist1602 does nothing if there is no pending build to remove1603 when invalid transition is detected1604 raises an error1605 #remove!1606 when pending build exists1607 removes pending build in a transaction1608 when pending build does not exist1609 does nothing if there is no pending build to remove1610 shared runner builds tracking1611 #track1612 when a shared runner build can be tracked1613 creates a new shared runner build tracking entry1614 increments new shared runner build metric1615 when invalid transition is detected1616 raises an error1617 when duplicate entry exists1618 does nothing and returns build id1619 #untrack1620 when shared runner build tracking entry exists1621 removes shared runner build1622 increments shared runner build done metric1623 when tracking entry does not exist1624 does nothing if there is no tracking entry to remove1625 when invalid transition is detected1626 raises an error1627 #tick1628 when updating project runners1629 behaves like matching build1630 when there is a online runner that can pick build1631 avoids running redundant queries1632 behaves like refreshes runner1633 ticks runner queue value1634 behaves like mismatching tags1635 when there is no runner that can pick build due to tag mismatch1636 behaves like does not refresh runner1637 ticks runner queue value1638 behaves like recent runner queue1639 when there is runner with expired cache1640 behaves like does not refresh runner1641 ticks runner queue value1642 when the runner is assigned to another project1643 behaves like does not refresh runner1644 ticks runner queue value1645 when updating shared runners1646 behaves like matching build1647 when there is a online runner that can pick build1648 avoids running redundant queries1649 behaves like refreshes runner1650 ticks runner queue value1651 behaves like mismatching tags1652 when there is no runner that can pick build due to tag mismatch1653 behaves like does not refresh runner1654 ticks runner queue value1655 behaves like recent runner queue1656 when there is runner with expired cache1657 behaves like does not refresh runner1658 ticks runner queue value1659 when there is no runner that can pick build due to being disabled on project1660 behaves like does not refresh runner1661 ticks runner queue value1662 when updating group runners1663 behaves like matching build1664 when there is a online runner that can pick build1665 avoids running redundant queries1666 behaves like refreshes runner1667 ticks runner queue value1668 behaves like mismatching tags1669 when there is no runner that can pick build due to tag mismatch1670 behaves like does not refresh runner1671 ticks runner queue value1672 behaves like recent runner queue1673 when there is runner with expired cache1674 behaves like does not refresh runner1675 ticks runner queue value1676 when there is no runner that can pick build due to being disabled on project1677 behaves like does not refresh runner1678 ticks runner queue value1679 avoids N+1 queries1680 does execute the same amount of queries regardless of number of runners1681Gitlab::Ci::Status::Bridge::Factory1682 when bridge is created1683 matches correct core status1684 fabricates status with correct details1685 when bridge is failed1686 matches correct core status1687 matches correct extended statuses1688 fabricates a failed bridge status1689 fabricates status with correct details1690 failed with downstream_pipeline_creation_failed1691 fabricates correct status_tooltip1692 when bridge is a manual action1693 matches correct core status1694 matches correct extended statuses1695 fabricates action detailed status1696 fabricates status with correct details1697 when user has ability to play action1698 fabricates status that has action1699 when user does not have ability to play action1700 fabricates status that has no action1701 when bridge is waiting for resource1702 matches correct core status1703 fabricates status with correct details1704 when the bridge is successful and therefore retryable1705 matches correct core status1706 matches correct extended statuses1707 fabricates a retryable build status1708 fabricates status with correct details1709ProjectStatistics1710 associations1711 is expected to belong to project required: false1712 is expected to belong to namespace required: false1713 scopes1714 .for_project_ids1715 returns only requested projects1716 statistics columns1717 supports bigint values1718 namespace relatable columns1719 treats the correct columns as namespace relatable1720 #total_repository_size1721 sums repository and LFS object size1722 #wiki_size1723 is initialized with not null value1724 coerces any nil value to 01725 #snippets_size1726 is initialized with not null value1727 coerces any nil value to 01728 #refresh!1729 without arguments1730 sums all counters1731 when passing an only: argument1732 only updates the given columns1733 without repositories1734 does not crash1735 with deleted repositories1736 does not crash1737 when the column is namespace relatable1738 when arguments are passed1739 schedules the aggregation worker1740 when no argument is passed1741 schedules the aggregation worker1742 when the column is not namespace relatable1743 does not schedules an aggregation worker1744 when the database is read-only1745 does nothing1746 behaves like obtaining lease to update database1747 when it is unable to obtain lock1748 logs a warning1749 #update_commit_count1750 stores the number of commits in the repository1751 #update_repository_size1752 stores the size of the repository1753 #update_wiki_size1754 stores the size of the wiki1755 #update_snippets_size1756 stores the size of snippets1757 when not all snippets has statistics1758 stores the size of snippets with statistics1759 #update_lfs_objects_size1760 stores the size of related LFS objects1761 #update_uploads_size1762 stores the size of related uploaded files1763 #update_container_registry_size1764 stores the project container registry repositories size1765 handles nil values for the repositories size1766 #update_storage_size1767 sums the relevant storage counters1768 excludes the container_registry_size1769 works during wiki_size backfill1770 when nullable columns are nil1771 does not raise any error1772 #refresh_storage_size!1773 recalculates storage size from its components and save it1774 when nullable columns are nil1775 does not raise any error1776 recalculates storage size from its components1777 behaves like obtaining lease to update database1778 when it is unable to obtain lock1779 logs a warning1780 .increment_statistic1781 when adjusting :build_artifacts_size1782 behaves like a statistic that increases storage_size asynchronously1783 stores the increment temporarily in Redis1784 schedules a worker to update the statistic and storage_size async1785 when the project is pending delete1786 does not change the statistics1787 when adjusting :pipeline_artifacts_size1788 behaves like a statistic that increases storage_size synchronously1789 increases the statistic by that amount1790 increases also storage size by that amount1791 schedules a namespace aggregation worker1792 when the project is pending delete1793 does not change the statistics1794 when adjusting :packages_size1795 behaves like a statistic that increases storage_size asynchronously1796 stores the increment temporarily in Redis1797 schedules a worker to update the statistic and storage_size async1798 when the project is pending delete1799 does not change the statistics1800 when the amount is 01801 does not execute a query1802 when using an invalid column1803 raises an error1804 .bulk_increment_statistic1805 when adjusting :build_artifacts_size1806 behaves like a statistic that increases storage_size asynchronously1807 stores the increment temporarily in Redis1808 schedules a worker to update the statistic and storage_size async1809 when the project is pending delete1810 does not change the statistics1811 when :project_statistics_bulk_increment flag is disabled1812 calls increment_statistic on once with the sum of the increments1813 behaves like a statistic that increases storage_size asynchronously1814 stores the increment temporarily in Redis1815 schedules a worker to update the statistic and storage_size async1816 when the project is pending delete1817 does not change the statistics1818 when adjusting :pipeline_artifacts_size1819 behaves like a statistic that increases storage_size synchronously1820 increases the statistic by that amount1821 increases also storage size by that amount1822 schedules a namespace aggregation worker1823 when the project is pending delete1824 does not change the statistics1825 when adjusting :packages_size1826 behaves like a statistic that increases storage_size asynchronously1827 stores the increment temporarily in Redis1828 schedules a worker to update the statistic and storage_size async1829 when the project is pending delete1830 does not change the statistics1831 when using an invalid column1832 raises an error1833GroupMember1834 default values1835 is expected to eq "Namespace"1836 scopes1837 counts users by group ID1838 .of_ldap_type1839 returns ldap type users1840 .with_user1841 returns requested user1842 delegations1843 is expected to delegate #update_two_factor_requirement to the #user object, allowing #user to return nil1844 .access_level_roles1845 returns Gitlab::Access.options_with_owner1846 #permissible_access_level_roles1847 returns Gitlab::Access.options_with_owner1848 behaves like members notifications1849 #after_create1850 sends email to user1851 #after_update1852 calls NotificationService.update_group_member1853 does not send an email when the access level has not changed1854 #after_commit1855 on creation of a member requesting access1856 calls NotificationService.new_access_request1857 #accept_request1858 calls NotificationService.new_group_member1859 #accept_invite!1860 calls NotificationService.accept_group_invite1861 #decline_invite!1862 calls NotificationService.decline_group_invite1863 #namespace_id1864 is expected to eq 11865 #real_source_type1866 is expected to eq "Group"1867 #update_two_factor_requirement1868 is called after creation and deletion1869 #destroy1870 for an orphaned member1871 does not raise an error1872 #after_accept_invite1873 calls #update_two_factor_requirement1874 #last_owner_of_the_group?1875 when member is an owner1876 member_last_owner?: false, member_last_blocked_owner?: false, expected: false1877 returns expected1878 member_last_owner?: true, member_last_blocked_owner?: false, expected: true1879 returns expected1880 member_last_owner?: false, member_last_blocked_owner?: true, expected: true1881 returns expected1882 member_last_owner?: true, member_last_blocked_owner?: true, expected: true1883 returns expected1884 when member is not an owner1885 is expected to equal false1886 access levels1887 with parent group1888 behaves like inherited access level as a member of entity1889 with root parent_entity developer member1890 is allowed to be a maintainer of the entity1891 is not allowed to be a reporter of the entity1892 is allowed to change to be a developer of the entity1893 is not allowed to change to be a guest of the entity1894 shows an error if the member can't be updated1895 allows changing the level from a non existing member1896 with parent group and a sub subgroup1897 behaves like inherited access level as a member of entity1898 with root parent_entity developer member1899 is allowed to be a maintainer of the entity1900 is not allowed to be a reporter of the entity1901 is allowed to change to be a developer of the entity1902 is not allowed to change to be a guest of the entity1903 shows an error if the member can't be updated1904 allows changing the level from a non existing member1905 when only the subgroup has the member1906 behaves like inherited access level as a member of entity1907 with root parent_entity developer member1908 is allowed to be a maintainer of the entity1909 is not allowed to be a reporter of the entity1910 is allowed to change to be a developer of the entity1911 is not allowed to change to be a guest of the entity1912 shows an error if the member can't be updated1913 allows changing the level from a non existing member1914 when group member expiration date is updated1915 emails the user that their group membership expiry has changed1916 refresh_member_authorized_projects1917 when importing1918 does not refresh1919 authorization refresh on addition/updation/deletion1920 on create1921 changes access level1922 behaves like calls AuthorizedProjectsWorker inline to recalculate authorizations1923 calls AuthorizedProjectsWorker inline to recalculate authorizations1924 on update1925 changes access level1926 behaves like calls AuthorizedProjectsWorker inline to recalculate authorizations1927 calls AuthorizedProjectsWorker inline to recalculate authorizations1928 on destroy1929 changes access level1930 behaves like calls AuthorizedProjectsWorker inline to recalculate authorizations1931 calls AuthorizedProjectsWorker inline to recalculate authorizations1932Gitlab::Database::TablesTruncate1933 # order random1934 when truncating gitlab_main tables on the ci database1935 behaves like truncating legacy tables on a database1936 when the truncated tables are not locked for writes1937 raises an error that the tables are not locked for writes (PENDING: Skipping because ci is shared or doesn't not exist)1938 when the truncated tables are locked for writes1939 truncates the legacy tables (PENDING: Skipping because ci is shared or doesn't not exist)1940 does not affect the other tables (PENDING: Skipping because ci is shared or doesn't not exist)1941 logs the sql statements to the logger (PENDING: Skipping because ci is shared or doesn't not exist)1942 when running in dry_run mode1943 does not truncate the legacy tables if running in dry run mode (PENDING: Skipping because ci is shared or doesn't not exist)1944 when passing until_table parameter1945 with a table that exists1946 only truncates until the table specified (PENDING: Skipping because ci is shared or doesn't not exist)1947 with a table that does not exist1948 raises an error if the specified table does not exist (PENDING: Skipping because ci is shared or doesn't not exist)1949 when one of the attached partitions happened to be locked for writes1950 truncates the locked partition successfully (PENDING: Skipping because ci is shared or doesn't not exist)1951 with geo configured1952 does not truncate gitlab_geo tables (PENDING: Skipping because ci is shared or doesn't not exist)1953 when truncating gitlab_ci tables on the main database1954 behaves like truncating legacy tables on a database1955 when the truncated tables are not locked for writes1956 raises an error that the tables are not locked for writes (PENDING: Skipping because ci is shared or doesn't not exist)1957 when the truncated tables are locked for writes1958 truncates the legacy tables (PENDING: Skipping because ci is shared or doesn't not exist)1959 does not affect the other tables (PENDING: Skipping because ci is shared or doesn't not exist)1960 logs the sql statements to the logger (PENDING: Skipping because ci is shared or doesn't not exist)1961 when running in dry_run mode1962 does not truncate the legacy tables if running in dry run mode (PENDING: Skipping because ci is shared or doesn't not exist)1963 when passing until_table parameter1964 with a table that exists1965 only truncates until the table specified (PENDING: Skipping because ci is shared or doesn't not exist)1966 with a table that does not exist1967 raises an error if the specified table does not exist (PENDING: Skipping because ci is shared or doesn't not exist)1968 when one of the attached partitions happened to be locked for writes1969 truncates the locked partition successfully (PENDING: Skipping because ci is shared or doesn't not exist)1970 with geo configured1971 does not truncate gitlab_geo tables (PENDING: Skipping because ci is shared or doesn't not exist)1972 when running with multiple shared databases1973 raises an error when truncating the main database that it is a single database setup (PENDING: Skipping because none of the extra databases [:ci] are setup)1974 raises an error when truncating the ci database that it is a single database setup (PENDING: Skipping because none of the extra databases [:ci] are setup)1975 when running in a single database mode1976 raises an error when truncating the main database that it is a single database setup1977 raises an error when truncating the ci database that it is a single database setup1978MetricsServer1979 when targeting puma1980 .fork1981 when in parent process1982 forks into a new process and detaches it1983 when in child process1984 starts the metrics server with the given arguments1985 resets signal handlers from parent process1986 .spawn1987 for legacy Ruby server1988 spawns a new server process and returns its PID1989 for Golang server1990 spawns a new server process and returns its PID1991 can launch from explicit path instead of PATH1992 when logs are enabled1993 sets log related environment variables1994 when TLS settings are present1995 sets the correct environment variables1996 when targeting sidekiq1997 .fork1998 when in parent process1999 forks into a new process and detaches it2000 when in child process2001 starts the metrics server with the given arguments2002 resets signal handlers from parent process2003 .spawn2004 for legacy Ruby server2005 spawns a new server process and returns its PID2006 for Golang server2007 spawns a new server process and returns its PID2008 can launch from explicit path instead of PATH2009 when logs are enabled2010 sets log related environment variables2011 when TLS settings are present2012 sets the correct environment variables2013 when targeting invalid target2014 .fork2015 raises an error2016 .spawn2017 for legacy Ruby server2018 raises an error2019 for Golang server2020 raises an error2021 for puma2022 behaves like a metrics exporter2023 #start2024 configures ::Prometheus::Client2025 ensures that metrics directory exists in correct mode (0700)2026 starts a metrics server2027 starts a RubySampler instance2028 when wipe_metrics_dir is true2029 removes any old metrics files2030 when wipe_metrics_dir is false2031 does not remove any old metrics files2032 #name2033 is expected to eq "web_exporter"2034 for sidekiq2035 behaves like a metrics exporter2036 #start2037 configures ::Prometheus::Client2038 ensures that metrics directory exists in correct mode (0700)2039 starts a metrics server2040 starts a RubySampler instance2041 when wipe_metrics_dir is true2042 removes any old metrics files2043 when wipe_metrics_dir is false2044 does not remove any old metrics files2045 #name2046 is expected to eq "sidekiq_exporter"2047 .start_for_puma2048 spawns a server process and supervises it2049 when the supervisor callback is invoked2050 restarts the metrics server2051 .start_for_sidekiq2052 for legacy Ruby server2053 forks the parent process2054 for Golang server2055 spawns the server process2056 .name2057 for puma2058 is expected to eq "web_exporter"2059 for sidekiq2060 is expected to eq "sidekiq_exporter"2061 for invalid target2062 raises error2063Gitlab::UsageDataCounters::IssueActivityUniqueCounter2064 can return the count of actions per user deduplicated2065 for Issue title edit actions2066 behaves like tracked issuable snowplow and service ping events with project2067 behaves like tracked issuable snowplow and service ping events for given event params2068 is expected to eq 22069 does not track edit actions if author is not present2070 emits snowplow event2071 for Issue description edit actions2072 behaves like tracked issuable snowplow and service ping events with project2073 behaves like tracked issuable snowplow and service ping events for given event params2074 is expected to eq 22075 does not track edit actions if author is not present2076 emits snowplow event2077 for Issue assignee edit actions2078 behaves like tracked issuable snowplow and service ping events with project2079 behaves like tracked issuable snowplow and service ping events for given event params2080 is expected to eq 22081 does not track edit actions if author is not present2082 emits snowplow event2083 for Issue make confidential actions2084 behaves like tracked issuable snowplow and service ping events with project2085 behaves like tracked issuable snowplow and service ping events for given event params2086 is expected to eq 22087 does not track edit actions if author is not present2088 emits snowplow event2089 for Issue make visible actions2090 behaves like tracked issuable snowplow and service ping events with project2091 behaves like tracked issuable snowplow and service ping events for given event params2092 is expected to eq 22093 does not track edit actions if author is not present2094 emits snowplow event2095 for Issue created actions2096 behaves like tracked issuable snowplow and service ping events with project2097 behaves like tracked issuable snowplow and service ping events for given event params2098 is expected to eq 22099 does not track edit actions if author is not present2100 emits snowplow event2101 for Issue closed actions2102 behaves like tracked issuable snowplow and service ping events with project2103 behaves like tracked issuable snowplow and service ping events for given event params2104 is expected to eq 22105 does not track edit actions if author is not present2106 emits snowplow event2107 for Issue reopened actions2108 behaves like tracked issuable snowplow and service ping events with project2109 behaves like tracked issuable snowplow and service ping events for given event params2110 is expected to eq 22111 does not track edit actions if author is not present2112 emits snowplow event2113 for Issue label changed actions2114 behaves like tracked issuable snowplow and service ping events with project2115 behaves like tracked issuable snowplow and service ping events for given event params2116 is expected to eq 22117 does not track edit actions if author is not present2118 emits snowplow event2119 for Issue label milestone actions2120 behaves like tracked issuable snowplow and service ping events with project2121 behaves like tracked issuable snowplow and service ping events for given event params2122 is expected to eq 22123 does not track edit actions if author is not present2124 emits snowplow event2125 for Issue cross-referenced actions2126 behaves like tracked issuable snowplow and service ping events with project2127 behaves like tracked issuable snowplow and service ping events for given event params2128 is expected to eq 22129 does not track edit actions if author is not present2130 emits snowplow event2131 for Issue moved actions2132 behaves like tracked issuable snowplow and service ping events with project2133 behaves like tracked issuable snowplow and service ping events for given event params2134 is expected to eq 22135 does not track edit actions if author is not present2136 emits snowplow event2137 for Issue cloned actions2138 behaves like tracked issuable snowplow and service ping events with project2139 behaves like tracked issuable snowplow and service ping events for given event params2140 is expected to eq 22141 does not track edit actions if author is not present2142 emits snowplow event2143 for Issue relate actions2144 behaves like tracked issuable snowplow and service ping events with project2145 behaves like tracked issuable snowplow and service ping events for given event params2146 is expected to eq 22147 does not track edit actions if author is not present2148 emits snowplow event2149 for Issue unrelate actions2150 behaves like tracked issuable snowplow and service ping events with project2151 behaves like tracked issuable snowplow and service ping events for given event params2152 is expected to eq 22153 does not track edit actions if author is not present2154 emits snowplow event2155 for Issue marked as duplicate actions2156 behaves like tracked issuable snowplow and service ping events with project2157 behaves like tracked issuable snowplow and service ping events for given event params2158 is expected to eq 22159 does not track edit actions if author is not present2160 emits snowplow event2161 for Issue locked actions2162 behaves like tracked issuable snowplow and service ping events with project2163 behaves like tracked issuable snowplow and service ping events for given event params2164 is expected to eq 22165 does not track edit actions if author is not present2166 emits snowplow event2167 for Issue unlocked actions2168 behaves like tracked issuable snowplow and service ping events with project2169 behaves like tracked issuable snowplow and service ping events for given event params2170 is expected to eq 22171 does not track edit actions if author is not present2172 emits snowplow event2173 for Issue designs added actions2174 behaves like tracked issuable snowplow and service ping events with project2175 behaves like tracked issuable snowplow and service ping events for given event params2176 is expected to eq 22177 does not track edit actions if author is not present2178 emits snowplow event2179 for Issue designs modified actions2180 behaves like tracked issuable snowplow and service ping events with project2181 behaves like tracked issuable snowplow and service ping events for given event params2182 is expected to eq 22183 does not track edit actions if author is not present2184 emits snowplow event2185 for Issue designs removed actions2186 behaves like tracked issuable snowplow and service ping events with project2187 behaves like tracked issuable snowplow and service ping events for given event params2188 is expected to eq 22189 does not track edit actions if author is not present2190 emits snowplow event2191 for Issue due date changed actions2192 behaves like tracked issuable snowplow and service ping events with project2193 behaves like tracked issuable snowplow and service ping events for given event params2194 is expected to eq 22195 does not track edit actions if author is not present2196 emits snowplow event2197 for Issue time estimate changed actions2198 behaves like tracked issuable snowplow and service ping events with project2199 behaves like tracked issuable snowplow and service ping events for given event params2200 is expected to eq 22201 does not track edit actions if author is not present2202 emits snowplow event2203 for Issue time spent changed actions2204 behaves like tracked issuable snowplow and service ping events with project2205 behaves like tracked issuable snowplow and service ping events for given event params2206 is expected to eq 22207 does not track edit actions if author is not present2208 emits snowplow event2209 for Issue comment added actions2210 behaves like tracked issuable snowplow and service ping events with project2211 behaves like tracked issuable snowplow and service ping events for given event params2212 is expected to eq 22213 does not track edit actions if author is not present2214 emits snowplow event2215 for Issue comment edited actions2216 behaves like tracked issuable snowplow and service ping events with project2217 behaves like tracked issuable snowplow and service ping events for given event params2218 is expected to eq 22219 does not track edit actions if author is not present2220 emits snowplow event2221 for Issue comment removed actions2222 behaves like tracked issuable snowplow and service ping events with project2223 behaves like tracked issuable snowplow and service ping events for given event params2224 is expected to eq 22225 does not track edit actions if author is not present2226 emits snowplow event2227 for Issue design comment removed actions2228 behaves like tracked issuable snowplow and service ping events with project2229 behaves like tracked issuable snowplow and service ping events for given event params2230 is expected to eq 22231 does not track edit actions if author is not present2232 emits snowplow event2233Gitlab::Database::Migrations::TestBatchedBackgroundRunner2234 main database2235 running a real background migration2236 runs sampled jobs from the batched background migration2237 uses the correct params to instrument the background migration2238 uses the filtering clause from the migration2239 exports migration details to a file2240 with jobs to run2241 samples jobs2242 samples 1 job with a batch size higher than the table size2243 with multiple jobs to run2244 runs all pending jobs based on the last migration id2245 choosing uniform batches to run2246 #uniform_fractions2247 generates evenly distributed sequences of fractions2248 ci database2249 running a real background migration2250 runs sampled jobs from the batched background migration2251 uses the correct params to instrument the background migration2252 uses the filtering clause from the migration2253 exports migration details to a file2254 with jobs to run2255 samples jobs2256 samples 1 job with a batch size higher than the table size2257 with multiple jobs to run2258 runs all pending jobs based on the last migration id2259 choosing uniform batches to run2260 #uniform_fractions2261 generates evenly distributed sequences of fractions2262Mutations::MergeRequests::SetMilestone2263 is expected to require graphql authorizations :update_merge_request2264 #resolve2265 raises an error if the resource is not accessible to the user2266 behaves like permission level for merge request mutation is correctly verified2267 when the user is not a project member2268 behaves like when the user does not have access to the resource2269 raises an error2270 even if assigned to the merge request2271 does not modify merge request2272 even if reviewer of the merge request2273 raises an error2274 even if author of the merge request2275 raises an error2276 when the user is a project member2277 with guest role2278 behaves like when the user does not have access to the resource2279 raises an error2280 even if assigned to the merge request2281 does not modify merge request2282 even if reviewer of the merge request2283 raises an error2284 even if author of the merge request2285 raises an error2286 with reporter role2287 behaves like when the user does not have access to the resource2288 raises an error2289 even if assigned to the merge request2290 does not modify merge request2291 even if reviewer of the merge request2292 raises an error2293 even if author of the merge request2294 raises an error2295 when the user can update the merge request2296 returns the merge request with the milestone2297 returns errors merge request could not be updated2298 when passing milestone_id as nil2299 removes the milestone2300 does not do anything if the MR already does not have a milestone2301 when issue assignee is a guest2302 does not update the milestone2303 when passing milestone_id as nil2304 does not remove the milestone2305Gitlab::Database::BatchAverageCounter2306 # order random2307 #count2308 returns correct average of weights2309 does no raise an exception if transaction is not open2310 when transaction is open2311 raises an error2312 when batch size is small2313 returns correct average of weights2314 when column passed is an Arel attribute2315 returns correct average of weights2316 when column has total count of zero2317 returns the fallback value2318 when one batch has nil weights (no average)2319 calculates average of weights with no errors2320 when batch fetch query is cancelled2321 when all retries fail2322 logs failing query2323ResourceStateEvent2324 behaves like a resource event2325 importable2326 is expected to respond to #importing?2327 is expected to respond to #imported?2328 validations2329 is expected not to allow :user to be ‹nil›2330 when importing2331 is expected to allow :user to be ‹nil›2332 associations2333 is expected to belong to user required: false2334 .created_after2335 returns the expected events2336 returns no events if time is after last record time2337 behaves like a resource event for issues2338 associations2339 is expected to belong to issue required: false2340 .by_issue2341 returns the expected records for an issue with events2342 returns the expected records for an issue with no events2343 .by_issue_ids2344 returns the expected events2345 .by_created_at_earlier_or_equal_to2346 returns the expected events2347 returns the expected events2348 #issuable2349 returns the expected issuable2350 behaves like a resource event for merge requests2351 associations2352 is expected to belong to merge_request required: false2353 .by_merge_request2354 returns the expected records for an issue with events2355 returns the expected records for an issue with no events2356 #issuable2357 returns the expected issuable2358 on callbacks2359 does not trigger note created subscription2360 behaves like a note for work item resource event2361 builds synthetic note with correct synthetic_note_class2362 on callbacks2363 triggers note created subscription2364 validations2365 Issuable validation2366 is valid if an issue is set2367 is valid if a merge request is set2368 is invalid if both issue and merge request are set2369 is invalid if there is no issuable set2370 callbacks2371 #issue_usage_metrics2372 does not track merge requests2373 when an issue is closed2374 tracks closed issues2375 behaves like issue_edit snowplow tracking2376 behaves like Snowplow event tracking with RedisHLL context2377 behaves like Snowplow event tracking2378 is emitted2379 when an issue is reopened2380 tracks reopened issues2381 behaves like issue_edit snowplow tracking2382 behaves like Snowplow event tracking with RedisHLL context2383 behaves like Snowplow event tracking2384 is emitted2385Gitlab::Database::BatchCount2386 #batch_count2387 counts table2388 counts with :id field2389 counts with "id" field2390 counts with table.id field2391 counts with Arel column2392 counts table with batch_size 50K2393 will not count table with a batch size less than allowed2394 produces the same result with different batch sizes2395 counts with a start and finish2396 stops counting when finish value is reached2397 defaults the batch size to 1000002398 does not use BETWEEN to define the range2399 behaves like when a transaction is open2400 raises an error2401 behaves like when batch fetch query is canceled2402 reduces batch size by half and retry fetch2403 when all retries fail2404 logs failing query2405 disallowed_configurations2406 returns fallback if start is bigger than finish2407 returns fallback if loops more than allowed2408 returns fallback if batch size is less than min required2409 raises an error if distinct count is requested2410 when a relation is grouped2411 count by default column2412 counts grouped records2413 #batch_count_with_timeout2414 counts table2415 counts with :id field2416 counts with "id" field2417 counts with table.id field2418 counts with Arel column2419 counts table with batch_size 50K2420 will not count table with a batch size less than allowed2421 produces the same result with different batch sizes2422 counts with a start and finish2423 stops counting when finish value is reached2424 returns a partial count when timeout elapses2425 starts counting from a given partial result2426 behaves like when a transaction is open2427 raises an error2428 behaves like when batch fetch query is canceled2429 reduces batch size by half and retry fetch2430 when all retries fail2431 logs failing query2432 disallowed_configurations2433 returns fallback if start is bigger than finish2434 returns fallback if loops more than allowed2435 returns fallback if batch size is less than min required2436 raises an error if distinct count is requested2437 when a relation is grouped2438 count by default column2439 counts grouped records2440 #batch_distinct_count2441 counts with column field2442 counts with "id" field2443 counts with table.column field2444 counts with Arel column2445 counts with :column field with batch_size of 50K2446 will not count table with a batch size less than allowed2447 produces the same result with different batch sizes2448 counts with a start and finish2449 stops counting when finish value is reached2450 counts with User min and max as start and finish2451 defaults the batch size to 100002452 behaves like when a transaction is open2453 raises an error2454 disallowed configurations2455 returns fallback if start is bigger than finish2456 returns fallback if loops more than allowed2457 returns fallback if batch size is less than min required2458 will raise an error if distinct count with the :id column is requested2459 when a relation is grouped2460 distinct count by non-unique column2461 counts grouped records2462 behaves like when batch fetch query is canceled2463 reduces batch size by half and retry fetch2464 when all retries fail2465 logs failing query2466 #batch_sum2467 returns the sum of values in the given column2468 works when given an Arel column2469 works with a batch size of 50K2470 works with start and finish provided2471 returns the same result regardless of batch size2472 defaults the batch size to 10002473 behaves like when a transaction is open2474 raises an error2475 behaves like disallowed configurations2476 returns fallback if start is bigger than finish2477 returns fallback if loops more than allowed2478 returns fallback if batch size is less than min required2479 behaves like when batch fetch query is canceled2480 reduces batch size by half and retry fetch2481 when all retries fail2482 logs failing query2483 #batch_average2484 calls BatchAverageCounter2485BulkImports::CreateService2486 #execute2487 when gitlab version is 15.5 or higher2488 when a BulkImports::Error is raised while validating the instance version2489 rescues the error and raises a ServiceResponse::Error2490 when direct transfer setting query returns a 4042491 raises a ServiceResponse::Error2492 when required scopes are not present2493 returns ServiceResponse with error if token does not have api scope2494 when token validation succeeds2495 creates bulk import2496 on the same instance2497 tracks the same instance migration2498 projects migration flag2499 when false2500 sets false2501 when true2502 sets true2503 when nil2504 sets true2505 when gitlab version is lower than 15.52506 creates bulk import2507 creates bulk import entities2508 creates bulk import configuration2509 enqueues BulkImportWorker2510 returns success ServiceResponse2511 returns ServiceResponse with error if validation fails2512 on the same instance2513 tracks the same instance migration2514 #user-role2515 defines access_level as not a member2516 when there is a parent_namespace and the user is a member2517 defines access_level from parent namespace membership2518 when there is a destination_namespace but no parent_namespace2519 defines access_level from destination_namespace2520 when there is no destination_namespace or parent_namespace2521 defines access_level as owner2522 #validate_setting_enabled!2523 when the source_type is a group2524 when the source_full_path contains only integer characters2525 makes a graphql request using the group full path and an http request with the correct id2526 when the source_type is a project2527 when the source_full_path contains only integer characters2528 makes a graphql request using the group full path and an http request with the correct id2529 #validate_destination_namespace2530 when the destination_namespace does not exist2531 returns ServiceResponse with an error message2532 when the user does not have permission to create subgroups2533 returns ServiceResponse with an error message2534 when the user does not have permission to create projects2535 returns ServiceResponse with an error message2536 #validate_destination_slug2537 when the destination_slug is invalid2538 returns ServiceResponse with an error message2539 #validate_destination_full_path2540 when the source_type is a group2541 when the provided destination_slug already exists in the destination_namespace2542 returns ServiceResponse with an error message2543 when the destination_slug conflicts with an existing top-level namespace2544 returns ServiceResponse with an error message2545 when the destination_slug does not conflict with an existing top-level namespace2546 returns success ServiceResponse2547 when the source_type is a project2548 when the provided destination_slug already exists in the destination_namespace2549 returns ServiceResponse with an error message2550 when the destination_slug does not conflict with an existing project2551 returns success ServiceResponse2552Gitlab::Database::MigrationHelpers::V22553 #rename_column_concurrently2554 behaves like Setting up to rename a column2555 creates the renamed column, syncing existing data2556 installs triggers to sync new data2557 requires the helper to run in ddl mode2558 when called inside a transaction block2559 raises an error2560 when the existing column has a default function2561 raises an error2562 when passing a batch column2563 when the batch column does not exist2564 raises an error2565 when the batch column does exist2566 passes it when creating the column2567 when the existing column has a default value2568 creates the renamed column, syncing existing data2569 installs triggers to sync new data2570 when the existing column has a default value that evaluates to NULL2571 creates the renamed column, syncing existing data2572 installs triggers to sync new data2573 when the column to rename does not exist2574 raises an error2575 #undo_cleanup_concurrent_column_rename2576 behaves like Setting up to rename a column2577 creates the renamed column, syncing existing data2578 installs triggers to sync new data2579 requires the helper to run in ddl mode2580 when called inside a transaction block2581 raises an error2582 when the existing column has a default function2583 raises an error2584 when passing a batch column2585 when the batch column does not exist2586 raises an error2587 when the batch column does exist2588 passes it when creating the column2589 when the existing column has a default value2590 creates the renamed column, syncing existing data2591 installs triggers to sync new data2592 when the existing column has a default value that evaluates to NULL2593 creates the renamed column, syncing existing data2594 installs triggers to sync new data2595 when the renamed column does not exist2596 raises an error2597 #undo_rename_column_concurrently2598 behaves like Cleaning up from renaming a column2599 when the helper is called repeatedly2600 does not make repeated attempts to cleanup2601 when the renamed column exists2602 removes the sync triggers and renamed columns2603 #cleanup_concurrent_column_rename2604 behaves like Cleaning up from renaming a column2605 when the helper is called repeatedly2606 does not make repeated attempts to cleanup2607 when the renamed column exists2608 removes the sync triggers and renamed columns2609 #create_table2610 using a limit: attribute on .text2611 creates the table as expected2612 #with_lock_retries2613-- transaction_open?()2614 -> 0.0002s2615 sets the migration class name in the logs2616-- transaction_open?()2617 -> 0.0002s2618 does not raise on exhaustion by default2619-- transaction_open?()2620 -> 0.0002s2621 defaults to disallowing subtransactions2622 raise_on_exhaustion: true2623-- transaction_open?()2624 -> 0.0002s2625 sets raise_on_exhaustion as requested2626 raise_on_exhaustion: false2627-- transaction_open?()2628 -> 0.0003s2629 sets raise_on_exhaustion as requested2630 when in transaction2631 when lock retries are enabled2632 does not use Gitlab::Database::WithLockRetries and executes the provided block directly2633 when lock retries are not enabled2634 raises an error2635 #truncate_tables!2636 truncates the table2637 truncates multiple tables2638 raises an ArgumentError if truncating multiple gitlab_schema2639 with multiple databases2640 for ci database2641 skips the TRUNCATE statement tables not in schema for connection (PENDING: Skipping because ci is shared or doesn't not exist)2642 for main database2643 executes a TRUNCATE statement (PENDING: Skipping because ci is shared or doesn't not exist)2644 with single database2645 executes a TRUNCATE statement2646Gitlab::DataBuilder::Issuable2647 #build2648 behaves like issuable hook data2649 contains project data2650 contains deprecated repository data2651 with a issue2652 contains issuable data2653 does not contain certain keys2654 changes are given2655 populates the :changes hash2656 does not contain certain keys2657 behaves like issuable hook data2658 contains project data2659 contains deprecated repository data2660 with a merge_request2661 contains issuable data2662 does not contain certain keys2663 changes are given2664 populates the :changes hash2665 does not contain certain keys2666 issue is assigned2667 returns correct hook data2668 merge_request is assigned2669 returns correct hook data2670 merge_request is assigned reviewers2671 returns correct hook data2672 when merge_request does not have reviewers and assignees2673 returns correct hook data2674DesignManagement::SaveDesignsService2675 #execute2676 when the feature is not available2677 does not create an event in the activity stream2678 behaves like a service error2679 returns an error2680 when the feature is available2681 creates a commit, an event in the activity stream and updates the creation count2682 can run the same command in parallel2683 repository existence2684 is ensured when the service runs2685 behaves like issue_edit snowplow tracking2686 behaves like Snowplow event tracking with RedisHLL context2687 behaves like Snowplow event tracking2688 is emitted2689 when the design collection is in the process of being copied2690 behaves like a service error2691 returns an error2692 when the design collection has a copy error2693 resets the copy state2694 the response2695 includes designs with the expected properties2696 saving the file to LFS2697 saves the design to LFS and saves the repository_type of the LfsObjectsProject as design2698 when HEAD branch is different from master2699 does not raise an exception during update2700 when a design is being updated2701 creates a new version for the existing design and updates the file2702 updates UsageData for changed designs2703 records the correct events2704 behaves like issue_edit snowplow tracking2705 behaves like Snowplow event tracking with RedisHLL context2706 behaves like Snowplow event tracking2707 is emitted2708 when uploading a new design2709 does not link the new version to the existing design2710 when detecting content type2711 detects content type when feature flag is enabled2712 skips content type detection when feature flag is disabled2713 when a design has not changed since its previous version2714 does not create a new version, and returns the design in `skipped_designs`2715 when doing a mixture of updates and creations2716 has the correct side-effects2717 when uploading multiple files2718 returns information about both designs in the response2719 has the correct side-effects2720 when uploading too many files2721 returns the correct error2722 when uploading duplicate files2723 returns the correct error2724 when the user is not allowed to upload designs2725 behaves like a service error2726 returns an error2727 failure modes2728 when creating the commit fails2729 behaves like an execution error2730 returns an error2731 when creating the versions fails2732 behaves like a service error2733 returns an error2734 when a design already existed in the repo but we didn't know about it in the database2735 creates the design and a new version for it2736 scalability2737 runs the same queries for all requests, regardless of number of files (PENDING: See: https://gitlab.com/gitlab-org/gitlab/-/issues/213169)2738Gitlab::Git::Diff2739 .new2740 using a Hash2741 with a small diff2742 initializes the diff2743 does not prune the diff2744 using a diff that is too large2745 prunes the diff2746 using a GitalyClient::Diff2747 with a small diff2748 initializes the diff2749 does not prune the diff2750 using a diff that is too large2751 prunes the diff2752 logs the event2753 using a collapsable diff that is too large2754 prunes the diff as a large diff instead of as a collapsed diff2755 when the patch passed is not UTF-8-encoded2756 encodes diff patch to UTF-82757 using a Gitaly::CommitDelta2758 initializes the diff2759 is not too large2760 has an empty diff2761 is not a binary2762 when diff contains invalid characters2763 when replace_invalid_utf8_chars is true2764 will convert invalid characters and not cause an encoding error2765 when the diff is binary2766 will not try to replace characters2767 when replace_invalid_utf8_chars is false2768 will not try to convert invalid characters2769 straight diffs2770 has the correct size2771 diff2772 is an instance of Diff2773 has the correct new_path2774 has the correct diff2775 .between2776 is expected to be a kind of Gitlab::Git::DiffCollection2777 #size2778 is expected to eq 12779 diff2780 is expected to be a kind of Gitlab::Git::Diff2781 #new_path2782 is expected to eq "files/ruby/feature.rb"2783 #diff2784 is expected to include "+class Feature"2785 .filter_diff_options2786 without default options2787 filters invalid options2788 with default options2789 filters invalid options2790 merges with default options2791 overrides default options2792 #json_safe_diff2793 fake binary message when it detects binary2794 leave non-binary diffs as-is2795 #submodule?2796 is expected to eq false2797 is expected to eq true2798 #line_count2799 returns the correct number of lines2800 #diff_bytesize2801 returns the size of the diff in bytes2802 #too_large?2803 returns true for a diff that is too large2804 returns false for a diff that is small enough2805 returns true for a diff that was explicitly marked as being too large2806 #collapsed?2807 returns false by default even on quite big diff2808 returns false by default for a diff that is small enough2809 returns true for a diff that was explicitly marked as being collapsed2810 #collapsed?2811 returns true for a diff that is quite large2812 returns false for a diff that is small enough2813 #collapse!2814 prunes the diff2815ProjectAPICompatibility2816 converts build_git_strategy=fetch to build_allow_git_fetch=true2817 converts build_git_strategy=clone to build_allow_git_fetch=false2818 #auto_devops_enabled2819 initial: :missing, final: nil2820 sets the correct value2821 initial: :missing, final: false2822 sets the correct value2823 initial: :missing, final: true2824 sets the correct value2825 initial: nil, final: nil2826 sets the correct value2827 initial: nil, final: false2828 sets the correct value2829 initial: nil, final: true2830 sets the correct value2831 initial: false, final: nil2832 sets the correct value2833 initial: false, final: false2834 sets the correct value2835 initial: false, final: true2836 sets the correct value2837 initial: true, final: nil2838 sets the correct value2839 initial: true, final: false2840 sets the correct value2841 initial: true, final: true2842 sets the correct value2843 #auto_devops_deploy_strategy2844 initial: :missing, final: "continuous"2845 sets the correct value2846 initial: :missing, final: "manual"2847 sets the correct value2848 initial: :missing, final: "timed_incremental"2849 sets the correct value2850 initial: "continuous", final: "continuous"2851 sets the correct value2852 initial: "continuous", final: "manual"2853 sets the correct value2854 initial: "continuous", final: "timed_incremental"2855 sets the correct value2856 initial: "manual", final: "continuous"2857 sets the correct value2858 initial: "manual", final: "manual"2859 sets the correct value2860 initial: "manual", final: "timed_incremental"2861 sets the correct value2862 initial: "timed_incremental", final: "continuous"2863 sets the correct value2864 initial: "timed_incremental", final: "manual"2865 sets the correct value2866 initial: "timed_incremental", final: "timed_incremental"2867 sets the correct value2868MergeRequestCleanupRefsWorker2869 #perform_work2870 when next cleanup schedule is found2871 marks the cleanup schedule as completed on success2872 when service fails2873 marks the cleanup schedule as unstarted and track the failure2874 and cleanup schedule has already failed 3 times2875 marks the cleanup schedule as failed and track the failure2876 when merge_request_refs_cleanup flag is disabled2877 does nothing2878 when there is no next cleanup schedule found2879 does nothing2880 #remaining_work_count2881 returns number of scheduled and unstarted cleanup schedule records2882 when count exceeds max_running_jobs2883 gets capped at max_running_jobs2884 #max_running_jobs2885 returns the value of MAX_RUNNING_JOBS2886PersonalAccessToken2887 .build2888 is a valid personal access token2889 ensures that the token is generated2890 scopes2891 .project_access_tokens2892 is expected to contain exactly #<PersonalAccessToken id: 6, user_id: 1269, name: "PAT 7", revoked: false, expires_at: "2023-06-07", ...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2893 .owner_is_human2894 is expected to contain exactly #<PersonalAccessToken id: 7, user_id: 1273, name: "PAT 8", revoked: false, expires_at: "2023-06-07", ...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2895 .for_user2896 returns personal access tokens of specified user only2897 .for_users2898 returns personal access tokens for the specified users only2899 .created_before2900 is expected to contain exactly #<PersonalAccessToken id: 18, user_id: 1283, name: "PAT 19", revoked: false, expires_at: "2023-06-07"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>, #<PersonalAccessToken id: 19, user_id: 1284, name: "PAT 20", revoked: false, expires_at: "2023-06-07"...se, last_used_at: "2023-05-02 05:59:00.000000000 +0000", after_expiry_notification_delivered: false>, and #<PersonalAccessToken id: 20, user_id: 1285, name: "PAT 21", revoked: false, expires_at: "2023-06-07"...se, last_used_at: "2023-06-02 06:42:18.976939928 +0000", after_expiry_notification_delivered: false>2901 .last_used_before2902 last_used_*2903 does not return token that is last_used_at after given date2904 .last_used_before2905 returns personal access tokens used before the specified date only2906 .last_used_after2907 returns personal access tokens used after the specified date only2908 .last_used_before_or_unused2909 is expected to contain exactly #<PersonalAccessToken id: 25, user_id: 1290, name: "PAT 26", revoked: false, expires_at: "2023-06-07"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false> and #<PersonalAccessToken id: 26, user_id: 1291, name: "PAT 27", revoked: false, expires_at: "2023-06-07"...se, last_used_at: "2023-05-02 05:59:00.000000000 +0000", after_expiry_notification_delivered: false>2910 .active?2911 returns false if the personal_access_token is revoked2912 returns false if the personal_access_token is expired2913 returns true if the personal_access_token is not revoked and not expired2914 revoke!2915 revokes the token2916 validations2917 requires at least one scope2918 allows creating a token with API scopes2919 allows creating a token with `admin_mode` scope2920 rejects creating a token with unavailable scopes2921 when registry is disabled2922 rejects creating a token with read_registry scope2923 allows revoking a token with read_registry scope2924 when registry is enabled2925 allows creating a token with read_registry scope2926 validates expires_at2927 when expires_in is less than MAX_PERSONAL_ACCESS_TOKEN_LIFETIME_IN_DAYS days2928 is valid2929 when expires_in is more than MAX_PERSONAL_ACCESS_TOKEN_LIFETIME_IN_DAYS days2930 is invalid2931 scopes2932 .active2933 includes non-revoked and non-expired tokens2934 .expiring_and_not_notified2935 in one day2936 doesn't have any tokens2937 in three days2938 only includes a valid token2939 .expired_today_and_not_notified2940 returns tokens that have expired today2941 .without_impersonation2942 returns only non-impersonation tokens2943 revoke scopes2944 .revoked2945 is expected to contain exactly #<PersonalAccessToken id: 48, user_id: 1313, name: "PAT 60", revoked: true, expires_at: "2023-06-07",...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2946 .not_revoked2947 is expected to contain exactly #<PersonalAccessToken id: 49, user_id: 1314, name: "PAT 61", revoked: false, expires_at: "2023-06-07"...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false> and #<PersonalAccessToken id: 50, user_id: 1315, name: "PAT 62", revoked: nil, expires_at: "2023-06-07", ...expire_notification_delivered: false, last_used_at: nil, after_expiry_notification_delivered: false>2948 .simple_sorts2949 includes overridden keys2950 ordering by expires_at2951 .order_expires_at_asc_id_desc2952 returns ordered list in combination of expires_at ascending and id descending2953 `admin_mode scope2954 with feature flag enabled2955 with administrator user2956 does not add `admin_mode` scope before created2957 with normal user2958 does not add `admin_mode` scope before created2959 token format2960 generates a token2961 when there is an existing token2962 does not change the existing token2963 #expires_at=2964 expires_at set to empty value2965 defaults to PersonalAccessToken::MAX_PERSONAL_ACCESS_TOKEN_LIFETIME_IN_DAYS2966 defaults to PersonalAccessToken::MAX_PERSONAL_ACCESS_TOKEN_LIFETIME_IN_DAYS2967Gitlab::Ci::Config::External::Mapper::Verifier2968 # order random2969 #process2970 when files are local2971 returns an array of file objects2972 adds files to the expandset2973 calls Gitaly only once for all files2974 when files are project files2975 returns an array of valid file objects2976 adds files to the expandset2977 calls Gitaly only once for all files2978 queries with batch2979 when a project is missing2980 returns an array of file objects2981 when a file includes other files2982 returns an array of file objects with combined hash2983 when there is an invalid file2984 adds an error to the file2985 max includes detection2986 when files are nested2987 behaves like verifies max includes2988 when total file count is equal to max_includes2989 adds the expected number of files to expandset2990 when total file count exceeds max_includes2991 raises error2992 when duplicate files are included2993 behaves like verifies max includes2994 when total file count is equal to max_includes2995 adds the expected number of files to expandset2996 when total file count exceeds max_includes2997 raises error2998 when files are not nested2999 behaves like verifies max includes3000 when total file count is equal to max_includes3001 adds the expected number of files to expandset3002 when total file count exceeds max_includes3003 raises error3004 when duplicate files are included3005 behaves like verifies max includes3006 when total file count is equal to max_includes3007 adds the expected number of files to expandset3008 when total file count exceeds max_includes3009 raises error3010 when there is a circular include3011 raises error3012 when a file is an internal include3013 when total file count excluding internal include is equal to max_includes3014 does not add the internal include to expandset3015 when total file count excluding internal include exceeds max_includes3016 raises error3017ServiceDeskSetting3018 validations3019 is expected to validate that :project_id cannot be empty/falsy3020 is expected to validate that the length of :outgoing_name is at most 2553021 is expected to validate that the length of :project_key is at most 2553022 is expected to allow :project_key to be ‹"abc123_"›3023 is expected not to allow :project_key to be ‹"abc 12"›, producing a custom validation error on failure3024 is expected not to allow :project_key to be ‹"Big val"›3025 is expected to validate that the length of :custom_email is at most 2553026 #custom_email_enabled3027 is expected to be falsey3028 is expected to be truthy3029 when custom_email_enabled is true3030 is expected to validate that :custom_email cannot be empty/falsy3031 is expected to validate that :custom_email is case-sensitively unique as long as it is not nil3032 is expected to allow :custom_email to be ‹"support@example.com"›3033 is expected to allow :custom_email to be ‹"support@xn--brggen-4ya.de"›3034 is expected to allow :custom_email to be ‹"support1@shop.example.com"›3035 is expected to allow :custom_email to be ‹"support-shop_with.crazy-address@shop.example.com"›3036 is expected not to allow :custom_email to be ‹"support@example@example.com"›3037 is expected not to allow :custom_email to be ‹"support.example.com"›3038 is expected not to allow :custom_email to be ‹"example.com"›3039 is expected not to allow :custom_email to be ‹"example"›3040 is expected not to allow :custom_email to be ‹"\" \"@example.org"›3041 is expected not to allow :custom_email to be ‹"support+12@example.com"›3042 is expected not to allow :custom_email to be ‹"user@[IPv6:2001:db8::1]"›3043 is expected not to allow :custom_email to be ‹"\"><script>alert(1);</script>\"@example.org"›3044 is expected not to allow :custom_email to be ‹"file://example"›3045 is expected not to allow :custom_email to be ‹"no email at all"›3046 #valid_issue_template3047 is not valid if template does not exist3048 is valid if template exists3049 #custom_email_address_for_verification3050 returns nil3051 when custom_email exists3052 returns correct verification address3053 #valid_project_key3054 when project_key exists3055 is valid3056 when project_key is unique for every project slug3057 does not add error3058 when project with same slug and settings project_key exists3059 adds error3060 associations3061 is expected to belong to project required: false3062 can access custom email verification from project3063NotificationRecipients::BuildService3064 #build_new_note_recipients3065 when there are multiple watchers3066 avoids N+1 queries3067 when there are multiple subscribers3068 avoids N+1 queries3069 when the project is private3070 avoids N+1 queries3071 #build_new_review_recipients3072 when there are multiple watchers3073 avoids N+1 queries3074 when there are multiple subscribers3075 avoids N+1 queries3076 when the project is private3077 avoids N+1 queries3078Gitlab::Utils::SanitizeNodeLink3079 # order random3080 #safe_protocol?3081 with the scheme: javascript:3082 returns false3083 with the scheme: JaVaScRiPt:3084 returns false3085 with the scheme: javascript:3086 returns false3087 with the scheme: javascript :3088 returns false3089 with the scheme: javascript:3090 returns false3091 with the scheme: javascript :3092 returns false3093 with the scheme: :javascript:3094 returns false3095 with the scheme: javascript:3096 returns false3097 with the scheme: javascript:3098 returns false3099 with the scheme:  javascript:3100 returns false3101 #remove_unsafe_links3102 with the scheme: javascript:3103 <a> tags3104 removes the unsafe link3105 <img> tags3106 removes the unsafe link3107 <video> tags3108 removes the unsafe link3109 <audio> tags3110 removes the unsafe link3111 with the scheme: JaVaScRiPt:3112 <a> tags3113 removes the unsafe link3114 <img> tags3115 removes the unsafe link3116 <video> tags3117 removes the unsafe link3118 <audio> tags3119 removes the unsafe link3120 with the scheme: javascript:3121 <a> tags3122 removes the unsafe link3123 <img> tags3124 removes the unsafe link3125 <video> tags3126 removes the unsafe link3127 <audio> tags3128 removes the unsafe link3129 with the scheme: javascript :3130 <a> tags3131 removes the unsafe link3132 <img> tags3133 removes the unsafe link3134 <video> tags3135 removes the unsafe link3136 <audio> tags3137 removes the unsafe link3138 with the scheme: javascript:3139 <a> tags3140 removes the unsafe link3141 <img> tags3142 removes the unsafe link3143 <video> tags3144 removes the unsafe link3145 <audio> tags3146 removes the unsafe link3147 with the scheme: javascript :3148 <a> tags3149 removes the unsafe link3150 <img> tags3151 removes the unsafe link3152 <video> tags3153 removes the unsafe link3154 <audio> tags3155 removes the unsafe link3156 with the scheme: :javascript:3157 <a> tags3158 removes the unsafe link3159 <img> tags3160 removes the unsafe link3161 <video> tags3162 removes the unsafe link3163 <audio> tags3164 removes the unsafe link3165 with the scheme: javascript:3166 <a> tags3167 removes the unsafe link3168 <img> tags3169 removes the unsafe link3170 <video> tags3171 removes the unsafe link3172 <audio> tags3173 removes the unsafe link3174 with the scheme: javascript:3175 <a> tags3176 removes the unsafe link3177 <img> tags3178 removes the unsafe link3179 <video> tags3180 removes the unsafe link3181 <audio> tags3182 removes the unsafe link3183 with the scheme:  javascript:3184 <a> tags3185 removes the unsafe link3186 <img> tags3187 removes the unsafe link3188 <video> tags3189 removes the unsafe link3190 <audio> tags3191 removes the unsafe link3192 when URI is valid3193 does not remove it3194 when URI is invalid3195 removes the link3196 when URI is encoded but still invalid3197 removes the link3198 when feature flag "normalize_links_for_sanitizing" is disabled3199 does not remove it3200 #sanitize_unsafe_links3201 makes a call to #remove_unsafe_links_method3202Gitlab::Email::Receiver3203 requires all handlers to have a unique metric_event3204 requires all handlers to respond to #project3205 when the email contains a valid email address in a header3206 when in a Delivered-To header3207 behaves like successful receive3208 correctly finds the mail key3209 adds metric event3210 returns valid metadata3211 when in an Envelope-To header3212 behaves like successful receive3213 correctly finds the mail key3214 adds metric event3215 returns valid metadata3216 when in an X-Envelope-To header3217 behaves like successful receive3218 correctly finds the mail key3219 adds metric event3220 returns valid metadata3221 when enclosed with angle brackets in an Envelope-To header3222 behaves like successful receive3223 correctly finds the mail key3224 adds metric event3225 returns valid metadata3226 when mail key is in the references header with a comma3227 behaves like successful receive3228 correctly finds the mail key3229 adds metric event3230 returns valid metadata3231 when all other headers are missing3232 it uses receive headers to find the key3233 behaves like successful receive3234 correctly finds the mail key3235 adds metric event3236 returns valid metadata3237 when we cannot find a capable handler3238 behaves like failed receive with event3239 adds metric event3240 when the email is blank3241 behaves like failed receive without event3242 adds metric event3243 when the email was auto generated with Auto-Submitted header3244 behaves like failed receive without event3245 adds metric event3246 when the email's To field is blank3247 behaves like successful receive3248 correctly finds the mail key3249 adds metric event3250 returns valid metadata3251 when the email's From field is blank3252 behaves like successful receive3253 correctly finds the mail key3254 adds metric event3255 returns valid metadata3256 when the email was auto generated with X-Autoreply header3257 behaves like failed receive without event3258 adds metric event3259 event raising via errors3260 handling errors which do not raise events3261 expected_error: Gitlab::Email::AutoGeneratedEmailError3262 behaves like failed receive without event3263 adds metric event3264 expected_error: Gitlab::Email::ProjectNotFound3265 behaves like failed receive without event3266 adds metric event3267 expected_error: Gitlab::Email::EmptyEmailError3268 behaves like failed receive without event3269 adds metric event3270 expected_error: Gitlab::Email::UserNotFoundError3271 behaves like failed receive without event3272 adds metric event3273 expected_error: Gitlab::Email::UserBlockedError3274 behaves like failed receive without event3275 adds metric event3276 expected_error: Gitlab::Email::UserNotAuthorizedError3277 behaves like failed receive without event3278 adds metric event3279 expected_error: Gitlab::Email::NoteableNotFoundError3280 behaves like failed receive without event3281 adds metric event3282 expected_error: Gitlab::Email::InvalidAttachment3283 behaves like failed receive without event3284 adds metric event3285 expected_error: Gitlab::Email::InvalidRecordError3286 behaves like failed receive without event3287 adds metric event3288 expected_error: Gitlab::Email::EmailTooLarge3289 behaves like failed receive without event3290 adds metric event3291 handling errors which do raise events3292 expected_error: Gitlab::Email::EmailUnparsableError3293 behaves like failed receive with event3294 adds metric event3295 expected_error: Gitlab::Email::UnknownIncomingEmail3296 behaves like failed receive with event3297 adds metric event3298 expected_error: ArgumentError3299 behaves like failed receive with event3300 adds metric event3301 expected_error: StandardError3302 behaves like failed receive with event3303 adds metric event3304Gitlab::Redis::TraceChunks3305 behaves like redis_shared_examples3306 .config_file_name3307 when there is no config file anywhere3308 is expected to be nil3309 .store3310 with old format3311 behaves like redis store3312 instantiates Redis::Store3313 with the namespace3314 uses specified namespace3315 with new format3316 behaves like redis store3317 instantiates Redis::Store3318 with the namespace3319 uses specified namespace3320 .params3321 withstands mutation3322 when url contains unix socket reference3323 with old format3324 returns path key instead3325 with new format3326 returns path key instead3327 when url is host based3328 with old format3329 returns hash with host, port, db, and password3330 with new format3331 rails_env: "development", host: "development-host"3332 returns hash with host, port, db, and password3333 rails_env: "test", host: "test-host"3334 returns hash with host, port, db, and password3335 rails_env: "production", host: "production-host"3336 returns hash with host, port, db, and password3337 with redis cluster format3338 rails_env: "development", host: "development-master"3339 returns hash with cluster and password3340 rails_env: "test", host: "test-master"3341 returns hash with cluster and password3342 rails_env: "production", host: "production-master"3343 returns hash with cluster and password3344 .url3345 withstands mutation3346 when yml file with env variable3347 reads redis url from env variable3348 .version3349 returns a version3350 .with3351 when running on single-threaded runtime3352 instantiates a connection pool with size 53353 when running on multi-threaded runtime3354 instantiates a connection pool with a size based on the concurrency of the worker3355 when there is no config at all3356 can run an empty block3357 #db3358 with old format3359 returns the correct db3360 with new format3361 returns the correct db3362 with cluster-mode3363 returns the correct db3364 #sentinels3365 when sentinels are defined3366 rails_env: "development", hosts: ["development-replica1", "development-replica2"]3367 returns an array of hashes with host and port keys3368 rails_env: "test", hosts: ["test-replica1", "test-replica2"]3369 returns an array of hashes with host and port keys3370 rails_env: "production", hosts: ["production-replica1", "production-replica2"]3371 returns an array of hashes with host and port keys3372 when sentinels are not defined3373 returns nil3374 when cluster is defined3375 returns nil3376 #sentinels?3377 when sentinels are defined3378 returns true3379 when sentinels are not defined3380 is expected to eq nil3381 when cluster is defined3382 returns false3383 #raw_config_hash3384 returns old-style single url config in a hash3385 returns cluster config without url key in a hash3386 #fetch_config3387 raises an exception when the config file contains invalid yaml3388 when redis.yml exists3389 uses config/redis.yml3390 when no config file exsits3391 returns nil3392 when resque.yml exists3393 returns the config from resque.yml3394 #fetch_config3395 when redis.yml exists3396 when the fallback has a redis.yml entry3397 is expected to eq {"fallback redis.yml"=>123}3398 and an instance config file exists3399 is expected to eq {"instance specific file"=>456}3400 and the instance has a redis.yml entry3401 is expected to eq {"instance redis.yml"=>789}3402 when no redis config file exsits3403 returns nil3404 when resque.yml exists3405 returns the config from resque.yml3406Gitlab::I18n::PoLinter3407 #errors3408 only calls validation once3409 #validate_po3410 for a fuzzy message3411 has an error3412 for a translations with newlines3413 has an error for a normal string3414 has an error when a translation is defined over multiple lines3415 raises an error when a plural translation is defined over multiple lines3416 raises an error when the plural id is defined over multiple lines3417 with an invalid po3418 returns the error3419 does not validate entries3420 with missing metadata3421 returns the an error3422 with a valid po3423 parses the file3424 validates the entries3425 has no errors3426 with missing plurals3427 has errors3428 with multiple plurals3429 has errors3430 with unescaped chars3431 contains an error3432 when an entry contains html3433 presents an error for each component containing angle brackets3434 #parse_po3435 with a valid po3436 fills in the entries3437 does not have errors3438 with an invalid po3439 contains an error3440 sets the entries to an empty array3441 #validate_entries3442 keeps track of errors for entries3443 #validate_entry3444 validates the flags, variable usage, newlines, and unescaped chars3445 #validate_number_of_plurals3446 validates when there are an incorrect number of translations3447 #validate_variables3448 validates both singular and plural in a pluralized string when the entry has a singular3449 only validates plural when there is no separate singular3450 validates the message variables3451 validates variable usage in message ids3452 #validate_variables_in_message3453 detects when a variables are used incorrectly3454 does not allow combining 1 `%d` unnamed variable with named variables3455 #validate_translation3456 succeeds with valid variables3457 adds an error message when translating fails3458 adds an error message when translating fails when translating with context3459 adds an error when trying to translate with incorrect variables when using unnamed variables3460 adds an error when trying to translate with named variables when unnamed variables are expected3461 tests translation for all given forms3462 #numbers_covering_all_plurals3463 can correctly find all required numbers to translate to Polish3464 #fill_in_variables3465 builds an array for %d translations3466 builds an array for %s translations3467 builds a hash for named variables3468Gitlab::Template::MergeRequestTemplate3469 .all3470 strips the md suffix3471 combines the globals and rest3472 .find3473 returns nil if the file does not exist3474 returns the merge request object of a valid file3475 .by_category3476 return array of templates3477 when repo is bare or empty3478 returns empty array3479 #content3480 loads the full file3481 raises error when file is not found3482 when repo is empty3483 raises file not found3484Gitlab::Ci::Config::Entry::Default3485 behaves like with inheritable CI config3486 does prepend an Inheritable mixin3487 all inheritable entries are covered3488 all entries do have inherit flag3489 for non-inheritable entries3490 entry_key: :hooks3491 inheritable_class does not define entry3492 entry_key: :interruptible3493 inheritable_class does not define entry3494 entry_key: :timeout3495 inheritable_class does not define entry3496 entry_key: :retry3497 inheritable_class does not define entry3498 entry_key: :tags3499 inheritable_class does not define entry3500 entry_key: :artifacts3501 inheritable_class does not define entry3502 for inheritable entries3503 entry_key: :before_script, entry_class: Gitlab::Ci::Config::Entry::Commands3504 inheritable_class does define entry3505 when is specified3506 does inherit value3507 when entry is specified3508 does not inherit value3509 when inheritable does not specify3510 does not inherit value3511 entry_key: :after_script, entry_class: Gitlab::Ci::Config::Entry::Commands3512 inheritable_class does define entry3513 when is specified3514 does inherit value3515 when entry is specified3516 does not inherit value3517 when inheritable does not specify3518 does not inherit value3519 entry_key: :cache, entry_class: Gitlab::Ci::Config::Entry::Caches3520 inheritable_class does define entry3521 when is specified3522 does inherit value3523 when entry is specified3524 does not inherit value3525 when inheritable does not specify3526 does not inherit value3527 entry_key: :image, entry_class: Gitlab::Ci::Config::Entry::Image3528 inheritable_class does define entry3529 when is specified3530 does inherit value3531 when entry is specified3532 does not inherit value3533 when inheritable does not specify3534 does not inherit value3535 entry_key: :services, entry_class: Gitlab::Ci::Config::Entry::Services3536 inheritable_class does define entry3537 when is specified3538 does inherit value3539 when entry is specified3540 does not inherit value3541 when inheritable does not specify3542 does not inherit value3543 .nodes3544 returns a hash3545 when filtering all the entry/node names3546 contains the expected node names3547 validations3548 when default entry value is correct3549 #valid?3550 is valid3551 when default entry is empty3552 #valid3553 is valid3554 when default entry is not correct3555 incorrect config value type3556 #errors3557 reports error about a config type3558 when unknown keys detected3559 #valid3560 is not valid3561 #compose!3562 when default entry inherits configuration from root3563 raises error3564 when default entry inherits a non-defined configuration from root3565 inherits non-defined configuration entries3566Gitlab::Auth::Ldap::User3567 #should_save?3568 marks existing ldap user as changed3569 marks existing non-ldap user if the email matches as changed3570 does not mark existing ldap user as changed3571 #valid_sign_in?3572 returns true3573 returns false if the GitLab user is not valid3574 find or create3575 finds the user if already existing3576 connects to existing non-ldap user if the email matches3577 connects to existing ldap user if the extern_uid changes3578 connects to existing ldap user if the extern_uid changes and email address has upper case characters3579 maintains an identity per provider3580 creates a new user if not found3581 when signup is disabled3582 creates the user3583 when user confirmation email is enabled3584 creates and confirms the user anyway3585 when the current minimum password length is different from the default minimum password length3586 creates the user3587 updating email3588 when LDAP sets an email3589 has a real email3590 has email set as synced3591 has email set as read-only3592 has synced attributes provider set to ldapmain3593 when LDAP doesn't set an email3594 has a temp email3595 has email set as not synced3596 does not have email set as read-only3597 blocking3598 signup3599 dont block on create3600 is expected not to be blocked3601 block on create3602 is expected to be blocked3603 sign-in3604 dont block on create3605 is expected not to be blocked3606 block on create3607 is expected not to be blocked3608ExternalPullRequest3609 is expected to belong to project required: false3610 validations3611 when source branch not present3612 behaves like has errors on3613 has errors for source_branch3614 when status not present3615 behaves like has errors on3616 has errors for status3617 when pull request is from a fork3618 behaves like has errors on3619 has errors for base3620 create_or_update_from_params3621 when pull request does not exist3622 when params are correct3623 saves the model successfully and returns it3624 yields the model3625 when params are not correct3626 returns an invalid model3627 when pull request exists3628 when params are correct3629 updates the model successfully and returns it3630 when params are not correct3631 returns an invalid model3632 #open?3633 returns true if status is open3634 returns false if status is not open3635 #closed?3636 returns true if status is closed3637 returns false if status is not closed3638 #actual_branch_head?3639 when source sha matches the head of the branch3640 returns true3641 when source sha does not match the head of the branch3642 returns true3643 #from_fork?3644 returns true if source_repository differs from target_repository3645 returns false if source_repository is the same as target_repository3646 #modified_paths3647 returns modified paths3648 loose foreign key on external_pull_requests.project_id3649 behaves like cleanup by a loose foreign key3650 cleans up (delete or nullify) the model3651ContainerExpirationPolicies::UpdateService3652 #execute3653 with existing container expiration policy3654 user_role: :maintainer, shared_examples_name: "updating the container expiration policy"3655 behaves like updating the container expiration policy3656 behaves like updating the container expiration policy attributes3657 updates the container expiration policy3658 behaves like not creating the container expiration policy3659 doesn't create the container expiration policy3660 behaves like returning a success3661 returns a success3662 with invalid params3663 doesn't update the cadence3664 behaves like not creating the container expiration policy3665 doesn't create the container expiration policy3666 behaves like returning an error3667 returns an error3668 user_role: :developer, shared_examples_name: "denying access to container expiration policy"3669 behaves like denying access to container expiration policy3670 with existing container expiration policy3671 behaves like not creating the container expiration policy3672 doesn't create the container expiration policy3673 behaves like returning an error3674 returns an error3675 user_role: :reporter, shared_examples_name: "denying access to container expiration policy"3676 behaves like denying access to container expiration policy3677 with existing container expiration policy3678 behaves like not creating the container expiration policy3679 doesn't create the container expiration policy3680 behaves like returning an error3681 returns an error3682 user_role: :guest, shared_examples_name: "denying access to container expiration policy"3683 behaves like denying access to container expiration policy3684 with existing container expiration policy3685 behaves like not creating the container expiration policy3686 doesn't create the container expiration policy3687 behaves like returning an error3688 returns an error3689 user_role: :anonymous, shared_examples_name: "denying access to container expiration policy"3690 behaves like denying access to container expiration policy3691 with existing container expiration policy3692 behaves like not creating the container expiration policy3693 doesn't create the container expiration policy3694 behaves like returning an error3695 returns an error3696 without existing container expiration policy3697 user_role: :maintainer, shared_examples_name: "creating the container expiration policy"3698 behaves like creating the container expiration policy3699 behaves like updating the container expiration policy attributes3700 creates a new container expiration policy3701 updates the container expiration policy3702 behaves like returning a success3703 returns a success3704 user_role: :developer, shared_examples_name: "denying access to container expiration policy"3705 behaves like denying access to container expiration policy3706 with existing container expiration policy3707 behaves like not creating the container expiration policy3708 doesn't create the container expiration policy3709 behaves like returning an error3710 returns an error3711 user_role: :reporter, shared_examples_name: "denying access to container expiration policy"3712 behaves like denying access to container expiration policy3713 with existing container expiration policy3714 behaves like not creating the container expiration policy3715 doesn't create the container expiration policy3716 behaves like returning an error3717 returns an error3718 user_role: :guest, shared_examples_name: "denying access to container expiration policy"3719 behaves like denying access to container expiration policy3720 with existing container expiration policy3721 behaves like not creating the container expiration policy3722 doesn't create the container expiration policy3723 behaves like returning an error3724 returns an error3725 user_role: :anonymous, shared_examples_name: "denying access to container expiration policy"3726 behaves like denying access to container expiration policy3727 with existing container expiration policy3728 behaves like not creating the container expiration policy3729 doesn't create the container expiration policy3730 behaves like returning an error3731 returns an error3732Groups::UpdateSharedRunnersService3733 #execute3734 when current_user is not the group owner3735 results error and does not call any method3736 when current_user is the group owner3737 enable shared Runners3738 group that its ancestors have shared runners disabled3739 results error3740 root group with shared runners disabled3741 receives correct method and succeeds3742 when group has pending builds3743 updates pending builds for the group3744 when shared runners is not toggled3745 does not update pending builds for the group3746 disable shared Runners3747 receives correct method and succeeds3748 when group has pending builds3749 updates pending builds for the group3750 allow descendants to override3751 top level group3752 receives correct method and succeeds3753 when parent does not allow3754 results error3755 when using DISABLED_WITH_OVERRIDE (deprecated)3756 top level group3757 receives correct method and succeeds3758 when parent does not allow3759 results error3760Banzai::Filter::References::AlertReferenceFilter3761 requires project context3762 ignores valid references contained inside 'pre' element3763 ignores valid references contained inside 'code' element3764 ignores valid references contained inside 'a' element3765 ignores valid references contained inside 'style' element3766 internal reference3767 links to a valid reference3768 links with adjacent text3769 ignores invalid alert IDs3770 includes a title attribute3771 escapes the title attribute3772 includes default classes3773 includes a data-project attribute3774 includes a data-alert attribute3775 supports an :only_path context3776 cross-project / cross-namespace complete reference3777 links to a valid reference3778 link has valid text3779 has valid text3780 ignores invalid alert IDs on the referenced project3781 cross-project / same-namespace complete reference3782 links to a valid reference3783 link has valid text3784 has valid text3785 ignores invalid alert IDs on the referenced project3786 cross-project shorthand reference3787 links to a valid reference3788 link has valid text3789 has valid text3790 ignores invalid alert IDs on the referenced project3791 cross-project URL reference3792 links to a valid reference3793 links with adjacent text3794 ignores invalid alert IDs on the referenced project3795 group context3796 links to a valid reference3797 ignores internal references3798 checking N+13799 does not have N+1 per multiple references per project3800Packages::Maven::Metadata::SyncService3801 #execute3802 permissions3803 role: :anonymous, expected_result: :rejected3804 behaves like returning an error service response3805 returns an error service response3806 role: :developer, expected_result: :rejected3807 behaves like returning an error service response3808 returns an error service response3809 role: :maintainer, expected_result: :accepted3810 behaves like returning a success service response3811 returns a success service response3812 with a maintainer3813 with a jar package3814 with no changes3815 behaves like returning a success service response3816 returns a success service response3817 with changes3818 behaves like returning a success service response3819 returns a success service response3820 with empty versions3821 behaves like returning a success service response3822 returns a success service response3823 with a too big maven metadata file for versions3824 behaves like returning an error service response3825 returns an error service response3826 an error from the create versions xml service3827 behaves like returning an error service response3828 returns an error service response3829 an error from the append package file service3830 behaves like returning an error service response3831 returns an error service response3832 without a package name3833 behaves like returning an error service response3834 returns an error service response3835 without a versionless package for version3836 behaves like returning a success service response3837 returns a success service response3838 without a metadata package file for versions3839 behaves like returning a success service response3840 returns a success service response3841 without a project3842 behaves like returning an error service response3843 returns an error service response3844 with a maven plugin package3845 with no changes3846 behaves like returning a success service response3847 returns a success service response3848 with changes in the versions xml3849 behaves like returning a success service response3850 returns a success service response3851 with changes in the plugin xml3852 behaves like returning a success service response3853 returns a success service response3854 with empty versions3855 behaves like returning a success service response3856 returns a success service response3857 with a too big maven metadata file for plugins3858 behaves like returning an error service response3859 returns an error service response3860 an error from the create versions xml service3861 behaves like returning an error service response3862 returns an error service response3863 an error from the append package file service3864 behaves like returning an error service response3865 returns an error service response3866 without a versionless package for plugins3867 behaves like returning a success service response3868 returns a success service response3869 without a versionless package for versions3870 behaves like returning a success service response3871 returns a success service response3872 without a metadata package file for plugins3873 behaves like returning a success service response3874 returns a success service response3875Gitlab::Template::IssueTemplate3876 .all3877 strips the md suffix3878 combines the globals and rest3879 .find3880 returns nil if the file does not exist3881 returns the issue object of a valid file3882 .by_category3883 return array of templates3884 when repo is bare or empty3885 returns empty array3886 #content3887 loads the full file3888 raises error when file is not found3889 when repo is empty3890 raises file not found3891Gitlab::Tracking3892 .options3893 when feature flag is disabled3894 when destination is Snowplow3895 returns useful client options3896 behaves like delegates to destination3897 delegates to Gitlab::Tracking::Destinations::Snowplow destination3898 when destination is SnowplowMicro3899 enabled with yml config3900 behaves like delegates to SnowplowMicro destination with proper options3901 returns useful client options3902 behaves like delegates to destination3903 delegates to Gitlab::Tracking::Destinations::SnowplowMicro destination3904 event tracking3905 .database_event3906 when the action is not passed in as a string3907 allows symbols3908 allows nil3909 allows integers3910 behaves like rescued error raised by destination class3911 rescues error3912 behaves like delegates to destination3913 delegates to Gitlab::Tracking::Destinations::DatabaseEventsSnowplow destination3914 .event3915 when the action is not passed in as a string3916 allows symbols3917 allows nil3918 allows integers3919 when destination is Snowplow3920 behaves like rescued error raised by destination class3921 rescues error3922 behaves like delegates to destination3923 delegates to Gitlab::Tracking::Destinations::Snowplow destination3924 when destination is SnowplowMicro3925 behaves like rescued error raised by destination class3926 rescues error3927 behaves like delegates to destination3928 delegates to Gitlab::Tracking::Destinations::SnowplowMicro destination3929 .definition3930 dispatches the data to .event3931 snowplow_micro_enabled?3932 returns true when snowplow_micro is enabled3933 returns false when snowplow_micro is disabled3934 returns false when snowplow_micro is not configured3935 tracker3936 returns a SnowPlowMicro instance in development3937 returns a SnowPlow instance when not in development3938Projects::PagesHelper3939 # order random3940 when the user have permission3941 on custom domain3942 external_http: false, external_https: false, can_create: false3943 is expected to equal false3944 external_http: false, external_https: true, can_create: true3945 is expected to equal true3946 external_http: true, external_https: false, can_create: true3947 is expected to equal true3948 external_http: true, external_https: true, can_create: true3949 is expected to equal true3950 on domain limit3951 can create new domains when the limit is 03952 validates custom domain creation is only allowed upto max value3953 when the user does not have permission3954 validates user cannot create domain3955Ci::BuildTraceChunks::Redis3956 #data3957 when data exists3958 returns the data3959 when data does not exist3960 returns nil3961 #set_data3962 when data exists3963 overwrites data3964 when data does not exist3965 sets new data3966 #append_data3967 when valid offset is used with existing data3968 appends data3969 when data does not exist yet3970 sets new data3971 when data needs to be truncated3972 appends data and truncates stored value3973 when invalid offset is provided3974 raises an exception3975 when trace contains multi-byte UTF8 characters3976 appends data3977 when trace contains non-UTF8 characters3978 appends data3979 #delete_data3980 when data exists3981 deletes data3982 when data does not exist3983 does nothing3984 #size3985 when data exists3986 returns data bytesize correctly3987 when data does not exist3988 returns zero3989 #keys3990 returns keys3991 #delete_keys3992 deletes multiple data3993Metrics::Dashboard::CloneDashboardService3994 #execute3995 user does not have push right to repository3996 behaves like misconfigured dashboard service response with stepable3997 returns an appropriate message and status code3998 with rights to push to the repository3999 wrong target file extension4000 behaves like misconfigured dashboard service response with stepable4001 returns an appropriate message and status code4002 wrong source dashboard file4003 behaves like misconfigured dashboard service response with stepable4004 returns an appropriate message and status code4005 path traversal attack attempt4006 behaves like misconfigured dashboard service response with stepable4007 returns an appropriate message and status code4008 path traversal attack attempt on target file4009 strips target file name to safe value4010 valid parameters4011 extends dashboard template path to absolute url4012 behaves like valid dashboard cloning process4013 dashboard template: config/prometheus/common_metrics.yml4014 delegates commit creation to Files::CreateService4015 user has defined custom metrics4016 uses external service to includes them into new file content4017 behaves like valid dashboard cloning process4018 dashboard template: config/prometheus/cluster_metrics.yml4019 delegates commit creation to Files::CreateService4020 user has defined custom metrics4021 uses external service to includes them into new file content4022 selected branch already exists4023 behaves like misconfigured dashboard service response with stepable4024 returns an appropriate message and status code4025 blank branch name4026 behaves like misconfigured dashboard service response with stepable4027 returns an appropriate message and status code4028 dashboard file already exists4029 behaves like misconfigured dashboard service response with stepable4030 returns an appropriate message and status code4031 Files::CreateService success4032 clears dashboards cache4033 returns success4034 Files::CreateService fails4035 does NOT clear dashboards cache4036 returns error4037Issue::Metrics4038 .for_issues4039 returns metrics associated with given issues4040 .with_first_mention_not_earlier_than4041 returns metrics without mentioning in commit or with mentioning after given timestamp4042 when recording the default set of issue metrics on issue save4043 milestones4044 records the first time an issue is associated with a milestone4045 does not record the second time an issue is associated with a milestone4046 list labels4047 records the first time an issue is associated with a list label4048 does not record the second time an issue is associated with a list label4049Banzai::Filter::AutolinkFilter4050 does nothing when :autolink is false4051 does nothing with non-link text4052 Various schemes4053 autolinks http4054 autolinks https4055 autolinks ftp4056 autolinks short URLs4057 autolinks multiple URLs4058 accepts link_attr options4059 autolinks smb4060 autolinks multiple occurrences of smb4061 autolinks irc4062 autolinks rdar4063 does not autolink javascript4064 does not autolink bad URLs4065 does not autolink bad URLs after we remove trailing punctuation4066 does not include trailing punctuation4067 includes trailing punctuation when part of a balanced pair4068 removes trailing quotes4069 removes one closing punctuation mark when the punctuation in the link is unbalanced4070 does not double-encode HTML entities4071 does not include trailing HTML entities4072 escapes RTLO and other characters4073 encodes international domains4074 ignores valid links contained inside 'a' element4075 ignores valid links contained inside 'code' element4076 ignores valid links contained inside 'kbd' element4077 ignores valid links contained inside 'pre' element4078 ignores valid links contained inside 'script' element4079 ignores valid links contained inside 'style' element4080 when the link is inside a tag4081 renders text after the link correctly for http4082 renders text after the link correctly for rdar4083Gitlab::Ci::Trace::ChunkedIO4084 #initialize4085 when a chunk exists4086 is expected to eq 34087 when two chunks exist4088 is expected to eq 64089 when no chunks exists4090 is expected to eq 04091 #seek4092 when moves pos to end of the file4093 is expected to eq 1924414094 when moves pos to middle of the file4095 is expected to eq 962204096 when moves pos around4097 matches the result4098 #eof?4099 when current pos is at end of the file4100 is expected to be truthy4101 when current pos is not at end of the file4102 is expected to be falsey4103 #each_line4104 when buffer size is smaller than file size4105 yields lines4106 when buffer size is larger than file size4107 calls get_chunk only once4108 when buffer consist of many empty lines4109 yields lines4110 #read4111 when read the whole size4112 when buffer size is smaller than file size4113 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4114 when buffer size is larger than file size4115 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4116 when chunk is missing data4117 raises an error4118 when read only first 100 bytes4119 when buffer size is smaller than file size4120 reads a trace4121 when buffer size is larger than file size4122 reads a trace4123 when tries to read oversize4124 when buffer size is smaller than file size4125 reads a trace4126 when buffer size is larger than file size4127 reads a trace4128 when tries to read 0 bytes4129 when buffer size is smaller than file size4130 reads a trace4131 when buffer size is larger than file size4132 reads a trace4133 #readline4134 when buffer size is smaller than file size4135 behaves like all line matching4136 is expected to eq "\e[0;m\n"4137 when buffer size is larger than file size4138 behaves like all line matching4139 is expected to eq "\e[0;m\n"4140 when pos is at middle of the file4141 reads from pos4142 when chunk is missing data4143 raises an error4144 when utf-8 is being used4145 has known length4146 behaves like all line matching4147 is expected to eq "\xF0\x9F\x98\xBA"4148 #write4149 when data does not exist4150 when buffer size is smaller than file size4151 behaves like writes a trace4152 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4153 when buffer size is larger than file size4154 behaves like writes a trace4155 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4156 when data already exists4157 when buffer size is smaller than file size4158 behaves like appends a trace4159 is expected to eq "exist data\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 3...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4160 when buffer size is larger than file size4161 behaves like appends a trace4162 is expected to eq "exist data\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 3...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"4163 #truncate4164 when data does not exist4165 when buffer size is smaller than file size4166 behaves like truncates a trace4167 is expected to eq "\e[0KRunnin"4168 when buffer size is larger than file size4169 behaves like truncates a trace4170 is expected to eq "\e[0KRunnin"4171 #destroy!4172 deletes4173Resolvers::GroupPackagesResolver4174 #resolve4175 behaves like group and projects packages resolver4176 without sort4177 returns the proper packages4178 with sorting and filtering4179 CREATED_DESC4180 is expected to eq [#<Packages::Package id: 9, project_id: 535, created_at: "2023-06-02 05:45:26.948938673 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1513, status: "default", last_downloaded_at: nil>]4181 NAME_DESC4182 is expected to eq [#<Packages::Package id: 9, project_id: 535, created_at: "2023-06-02 05:45:26.948938673 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1513, status: "default", last_downloaded_at: nil>]4183 VERSION_DESC4184 is expected to eq [#<Packages::Package id: 9, project_id: 535, created_at: "2023-06-02 05:45:26.948938673 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1513, status: "default", last_downloaded_at: nil>]4185 TYPE_ASC4186 is expected to eq [#<Packages::Package id: 9, project_id: 535, created_at: "2023-06-02 05:45:26.948938673 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1513, status: "default", last_downloaded_at: nil>]4187 CREATED_ASC4188 is expected to eq [#<Packages::Package id: 7, project_id: 535, created_at: "2023-06-01 06:45:26.534631389 +0000", updat...ersion: "2.0.0", package_type: "maven", creator_id: 1513, status: "error", last_downloaded_at: nil>]4189 NAME_ASC4190 is expected to eq [#<Packages::Package id: 7, project_id: 535, created_at: "2023-06-01 06:45:26.534631389 +0000", updat...ersion: "2.0.0", package_type: "maven", creator_id: 1513, status: "error", last_downloaded_at: nil>]4191 VERSION_ASC4192 is expected to eq [#<Packages::Package id: 7, project_id: 535, created_at: "2023-06-01 06:45:26.534631389 +0000", updat...ersion: "2.0.0", package_type: "maven", creator_id: 1513, status: "error", last_downloaded_at: nil>]4193 TYPE_DESC4194 is expected to eq [#<Packages::Package id: 7, project_id: 535, created_at: "2023-06-01 06:45:26.534631389 +0000", updat...ersion: "2.0.0", package_type: "maven", creator_id: 1513, status: "error", last_downloaded_at: nil>]4195 filter by package_name4196 is expected to eq [#<Packages::Package id: 7, project_id: 535, created_at: "2023-06-01 06:45:26.534631389 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1513, status: "default", last_downloaded_at: nil>]4197 filter by package_type4198 is expected to eq [#<Packages::Package id: 7, project_id: 535, created_at: "2023-06-01 06:45:26.534631389 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1513, status: "default", last_downloaded_at: nil>]4199 filter by status4200 is expected to eq [#<Packages::Package id: 9, project_id: 535, created_at: "2023-06-02 05:45:26.948938673 +0000", updat...ersion: "2.0.0", package_type: "maven", creator_id: 1513, status: "error", last_downloaded_at: nil>]4201 include_versionless4202 is expected to include #<Packages::Package id: 11, project_id: 535, created_at: "2023-06-02 06:44:27.235347869 +0000", updat..., version: nil, package_type: "maven", creator_id: 1513, status: "default", last_downloaded_at: nil>4203 project_path sorting4204 filter by package_name4205 is expected to eq [#<Packages::Package id: 15, project_id: 539, created_at: "2023-06-02 06:45:28.708894088 +0000", upda...1.6-SNAPSHOT", package_type: "maven", creator_id: 1513, status: "default", last_downloaded_at: nil>]4206 filter by package_type4207 is expected to eq [#<Packages::Package id: 12, project_id: 535, created_at: "2023-06-02 06:45:28.691364118 +0000", upda...1.9-SNAPSHOT", package_type: "maven", creator_id: 1518, status: "default", last_downloaded_at: nil>]4208Mutations::Issues::SetEscalationStatus4209 #resolve4210 behaves like permission level for issue mutation is correctly verified4211 when the user is not a project member4212 behaves like when the user does not have access to the resource4213 raises an error4214 even if assigned to the issue4215 does not modify issue4216 even if author of the issue4217 does not modify issue4218 when the user is a project member4219 with guest role4220 behaves like when the user does not have access to the resource4221 raises an error4222 even if assigned to the issue4223 does not modify issue4224 even if author of the issue4225 does not modify issue4226 when the user can update the issue4227 behaves like permission level for issue mutation is correctly verified4228 when the user is not a project member4229 behaves like when the user does not have access to the resource4230 raises an error4231 even if assigned to the issue4232 does not modify issue4233 even if author of the issue4234 does not modify issue4235 when the user is a project member4236 with guest role4237 behaves like when the user does not have access to the resource4238 raises an error4239 even if assigned to the issue4240 does not modify issue4241 even if author of the issue4242 does not modify issue4243 when the user can update the escalation status4244 returns the issue with the escalation policy4245 returns errors when issue update fails4246 with non-incident issue is provided4247 raises an error4248MergeRequests::MergeOrchestrationService4249 #execute4250 when merge request is mergeable4251 when merge request can be merged automatically4252 schedules auto merge4253 when merge request cannot be merged automatically4254 merges immediately4255 when merge request is not mergeable4256 does nothing4257 #can_merge?4258 when merge request is mergeable4259 is expected to eq true4260 when merge request is not mergeable4261 is expected to eq false4262 #preferred_auto_merge_strategy4263 when merge request can be merged automatically4264 fetches perferred auto merge strategy4265 when merge request cannot be merged automatically4266 is expected to be nil4267Enumerator#next patch fix4268 Enumerator4269 #next4270 normal yield4271 returns yielded value4272 end of iteration4273 does not fix up StopIteration4274 nested enum object4275 fixes up StopIteration thrown by another instance of #next4276 arguments error4277 does not fix up ArgumentError4278 error4279 fixes up StopIteration4280 fixes up ArgumentError4281 adds backtrace from other errors4282 #next_values4283 normal yield4284 returns yielded value4285 end of iteration4286 does not fix up StopIteration4287 nested enum object4288 fixes up StopIteration thrown by another instance of #next4289 arguments error4290 does not fix up ArgumentError4291 error4292 fixes up StopIteration4293 fixes up ArgumentError4294 adds backtrace from other errors4295 #peek4296 normal yield4297 returns yielded value4298 end of iteration4299 does not fix up StopIteration4300 nested enum object4301 fixes up StopIteration thrown by another instance of #next4302 arguments error4303 does not fix up ArgumentError4304 error4305 fixes up StopIteration4306 fixes up ArgumentError4307 adds backtrace from other errors4308 #peek_values4309 normal yield4310 returns yielded value4311 end of iteration4312 does not fix up StopIteration4313 nested enum object4314 fixes up StopIteration thrown by another instance of #next4315 arguments error4316 does not fix up ArgumentError4317 error4318 fixes up StopIteration4319 fixes up ArgumentError4320 adds backtrace from other errors4321Ci::CreatePipelineService4322 pipeline logger4323 when the duration is under the threshold4324 does not create a log entry but it collects the data4325 when the durations exceeds the threshold4326 creates a log entry4327 when the pipeline is not persisted4328 creates a log entry4329 when the feature flag is disabled4330 does not create a log entry4331 when the size exceeds the threshold4332 creates a log entry4333 pipeline includes count4334 when the includes count exceeds the maximum4335 creates a log entry4336 when the includes count does not exceed the maximum4337 does not create a log entry but it collects the data4338 when the includes data is nil4339 does not create a log entry4340 when the pipeline config_metadata is nil4341 does not create a log entry but it collects the data4342Ci::JobsFinder#execute4343 no project4344 with admin4345 when admin mode setting is disabled4346 is expected to contain exactly #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...processed: false, scheduling_type: "stage", id: 115, stage_id: 99, partition_id: 100, tag_list: nil>, #<Ci::Build status: "running", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 116, stage_id: 100, partition_id: 100, tag_list: nil>, and #<Ci::Build status: "success", finished_at: "2023-06-02 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 117, stage_id: 101, partition_id: 100, tag_list: nil>4347 when admin mode setting is enabled4348 when in admin mode4349 is expected to contain exactly #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...processed: false, scheduling_type: "stage", id: 115, stage_id: 99, partition_id: 100, tag_list: nil>, #<Ci::Build status: "running", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 116, stage_id: 100, partition_id: 100, tag_list: nil>, and #<Ci::Build status: "success", finished_at: "2023-06-02 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 117, stage_id: 101, partition_id: 100, tag_list: nil>4350 when not in admin mode4351 is expected to be empty4352 with normal user4353 is expected to be empty4354 without user4355 is expected to be empty4356 with scope4357 scope: "pending", expected_jobs: lazy { [pending_job] }4358 is expected to contain exactly #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...processed: false, scheduling_type: "stage", id: 115, stage_id: 99, partition_id: 100, tag_list: nil>4359 scope: "running", expected_jobs: lazy { [running_job] }4360 is expected to contain exactly #<Ci::Build status: "running", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 116, stage_id: 100, partition_id: 100, tag_list: nil>4361 scope: "finished", expected_jobs: lazy { [successful_job] }4362 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2023-06-02 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 117, stage_id: 101, partition_id: 100, tag_list: nil>4363 scope: ["running", "success"], expected_jobs: lazy { [running_job, successful_job] }4364 is expected to contain exactly #<Ci::Build status: "running", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 116, stage_id: 100, partition_id: 100, tag_list: nil> and #<Ci::Build status: "success", finished_at: "2023-06-02 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 117, stage_id: 101, partition_id: 100, tag_list: nil>4365 a project is present4366 user has access to the project4367 returns jobs for the specified project4368 user has no access to project builds4369 returns no jobs4370 without user4371 returns no jobs4372 when artifacts are present for some jobs4373 when with_artifacts is true4374 returns only jobs with artifacts4375 when with_artifacts is false4376 returns all jobs4377 when pipeline is present4378 does not return retried jobs by default4379 when include_retried is false4380 does not return retried jobs4381 when include_retried is true4382 returns retried jobs4383 a runner is present4384 user has access to the runner4385 returns jobs for the specified project4386 user has no access to project builds4387 returns no jobs4388 without user4389 returns no jobs4390ServiceDesk::CustomEmailCredential4391 # order random4392 validations4393 is expected to validate that :project cannot be empty/falsy4394 is expected to validate that :smtp_address cannot be empty/falsy4395 is expected to validate that the length of :smtp_address is at most 2554396 is expected to allow :smtp_address to be ‹"smtp.gmail.com"›4397 is expected to allow :smtp_address to be ‹"1.1.1.1"›4398 is expected to allow :smtp_address to be ‹"199.1.1.1"›4399 is expected not to allow :smtp_address to be ‹"https://example.com"›4400 is expected not to allow :smtp_address to be ‹"file://example"›4401 is expected not to allow :smtp_address to be ‹"/example"›4402 is expected not to allow :smtp_address to be ‹"localhost"›4403 is expected not to allow :smtp_address to be ‹"127.0.0.1"›4404 is expected not to allow :smtp_address to be ‹"192.168.12.12"›4405 is expected to validate that :smtp_port cannot be empty/falsy4406 is expected to validate that :smtp_port looks like an integer greater than 04407 is expected to validate that :smtp_username cannot be empty/falsy4408 is expected to validate that the length of :smtp_username is at most 2554409 is expected to validate that :smtp_password cannot be empty/falsy4410 is expected to validate that the length of :smtp_password is between 8 and 1284411 encrypted #smtp_username4412 saves and retrieves the encrypted smtp username and iv correctly4413 associations4414 is expected to belong to project required: false4415 can access service desk setting from project4416 encrypted #smtp_password4417 saves and retrieves the encrypted smtp password and iv correctly4418Gitlab::Analytics::CycleAnalytics::RequestParams4419 # order random4420 behaves like unlicensed cycle analytics request params4421 casts `created_after` to `Time`4422 casts `created_before` to `Time`4423 validations4424 is valid4425 when `created_before` is missing4426 is valid4427 when `created_before` is earlier than `created_after`4428 is invalid4429 when the date range exceeds 180 days4430 is invalid4431 optional `value_stream`4432 when `value_stream` is not empty4433 is expected to eq #<InstanceDouble(Analytics::CycleAnalytics::ValueStream) (anonymous)>4434 when `value_stream` is nil4435 is expected to eq nil4436 sorting params4437 converts sorting params to symbol when passing it to data collector4438 adds sorting params to data attributes4439 aggregation params4440 when not licensed4441 returns nil4442 use_aggregated_data_collector param4443 is expected to eq false4444 feature availablity data attributes4445 disables all paid features4446 project-level data attributes4447 includes the namespace attribute4448 with a subgroup project4449 includes the correct group_path4450AwardEmojiPolicy4451 when the awardable is an issue4453 is expected to be allowed :read_emoji4455 is expected not to be allowed :read_emoji4456 when the awardable is a merge request4458 is expected to be allowed :read_emoji4460 is expected not to be allowed :read_emoji4461 when the awardable is a note4463 is expected to be allowed :read_emoji4465 is expected not to be allowed :read_emoji4466 when the awardable is a snippet4468 is expected to be allowed :read_emoji4470 is expected not to be allowed :read_emoji4471gitlab:db:truncate_legacy_tables4472 # order random4473 when truncating main tables on the ci database4474 behaves like truncating legacy tables4475 when tables are not locked for writes4476 raises an error when trying to truncate the tables (PENDING: Skipping because ci is shared or doesn't not exist)4477 when tables are locked for writes4478 calls TablesTruncate with the correct parameters and default minimum batch size (PENDING: Skipping because ci is shared or doesn't not exist)4479 truncates the legacy table (PENDING: Skipping because ci is shared or doesn't not exist)4480 does not truncate the table that belongs to the connection schema (PENDING: Skipping because ci is shared or doesn't not exist)4481 when running in dry_run mode4482 does not truncate any tables (PENDING: Skipping because ci is shared or doesn't not exist)4483 prints the truncation sql statement to the output (PENDING: Skipping because ci is shared or doesn't not exist)4484 when passing until_table parameter via environment variable4485 sends the table name to TablesTruncate (PENDING: Skipping because ci is shared or doesn't not exist)4486 when truncating ci tables on the main database4487 behaves like truncating legacy tables4488 when tables are not locked for writes4489 raises an error when trying to truncate the tables (PENDING: Skipping because ci is shared or doesn't not exist)4490 when tables are locked for writes4491 calls TablesTruncate with the correct parameters and default minimum batch size (PENDING: Skipping because ci is shared or doesn't not exist)4492 truncates the legacy table (PENDING: Skipping because ci is shared or doesn't not exist)4493 does not truncate the table that belongs to the connection schema (PENDING: Skipping because ci is shared or doesn't not exist)4494 when running in dry_run mode4495 does not truncate any tables (PENDING: Skipping because ci is shared or doesn't not exist)4496 prints the truncation sql statement to the output (PENDING: Skipping because ci is shared or doesn't not exist)4497 when passing until_table parameter via environment variable4498 sends the table name to TablesTruncate (PENDING: Skipping because ci is shared or doesn't not exist)4499BulkImports::Projects::Transformers::ProjectAttributesTransformer4500 #transform4501 uniquifies project name4502 adds path as normalized name4503 adds import type4504 namespace_id4505 adds namespace_id4506 when data has extra keys4507 returns a fixed number of keys4508 when destination_slug has invalid characters4509 parameterizes the path4510 when destination namespace already has a group or project with the same name4511 makes the name unique by appending a counter4512 when destination namespace already has a project with the same path4513 makes the path unique by appending a counter4514 visibility level4515 when public4516 when destination is a public group4517 sets visibility level to public4518 when destination is a internal group4519 sets visibility level to internal4520 when destination is a private group4521 sets visibility level to private4522 when internal4523 when destination is a public group4524 sets visibility level to internal4525 when destination is a internal group4526 sets visibility level to internal4527 when destination is a private group4528 sets visibility level to private4529 when private4530 when destination is a public group4531 sets visibility level to private4532 when destination is a internal group4533 sets visibility level to private4534 when destination is a private group4535 sets visibility level to private4536Resolvers::ProjectsResolver4537 #resolve4538 when user is not logged in4539 when no filters are applied4540 returns all public projects4541 when search filter is provided4542 returns matching project4543 when membership filter is provided4544 returns empty list4545 when searchNamespaces filter is provided4546 returns projects in a matching namespace4547 when searchNamespaces filter false4548 returns ignores namespace matches4549 when topics filter is provided4550 returns matching project4551 when user is logged in4552 when no filters are applied4553 returns all visible projects for the user4554 when search filter is provided4555 returns matching project4556 when membership filter is provided4557 returns projects that user is member of4558 when searchNamespaces filter is provided4559 returns projects from matching group4560 when searchNamespaces filter false4561 returns ignores namespace matches4562 when ids filter is provided4563 returns matching project4564 when sorting4565 when sorting by similarity4566 returns projects in order of similarity to search4567 when no sort is provided4568 returns projects in descending order by id4569 when topics filter is provided4570 returns matching project4571Resolvers::Crm::OrganizationsResolver4572 #resolve4573 with unauthorized user4574 does not rise an error and returns no crm_organizations4575 with authorized user4576 does not rise an error and returns all crm_organizations in the correct order4577 without parent4578 returns no crm_organizations4579 with a group parent4580 when no filter is provided4581 returns all the crm_organizations in the default order4582 when a sort is provided4583 returns all the crm_organizations in the correct order4584 when filtering for all states4585 returns all the crm_organizations4586 when search term is provided4587 returns the correct crm_organizations4588 when state is provided4589 returns the correct crm_organizations4590 when ids are provided4591 returns the correct crm_organizations4592SnippetBlobPresenter4593 #rich_data4594 with PersonalSnippet4595 when blob is binary4596 returns the HTML associated with the binary4597 with markdown format4598 returns rich markdown content4599 with notebook format4600 returns rich notebook content4601 with openapi format4602 returns rich openapi content4603 with svg format4604 returns rich svg content4605 with other format4606 does not return no rich content4607 route helpers4608 #raw_path4609 behaves like snippet blob raw path4610 for PersonalSnippets4611 returns the raw personal snippet blob path4612 for ProjectSnippets4613 returns the raw project snippet blob path4614 with a snippet without a repository4615 with ProjectSnippet4616 returns the raw project snippet path4617 with PersonalSnippet4618 returns the raw personal snippet path4619 #raw_plain_data4620 with a plain file4621 shows raw data for non binary files4622 with a binary file4623 returns nil4624 #raw_url4625 behaves like snippet blob raw url4626 for PersonalSnippets4627 returns the raw personal snippet blob url4628 for ProjectSnippets4629 returns the raw project snippet blob url4630 with a snippet without a repository4631 with ProjectSnippet4632 returns the raw project snippet url4633 with PersonalSnippet4634 returns the raw personal snippet url4635Gitlab::Auth::OAuth::AuthHash4636 defaults4637 is expected to eq "ldap"4638 is expected to eql "CN=Onur Küçük,OU=Test,DC=example,DC=net"4639 is expected to eql "onur.küçük_ABC-123@example.net"4640 is expected to eql "oküçük"4641 is expected to eql "Onur Küçük"4642 is expected not to be empty4643 is expected to eq "some locality, some country"4644 email not provided4645 generates a temp email4646 username not provided4647 takes the first part of the email as username4648 name not provided4649 concats first and lastname as the name4650 custom username field provided4651 uses the custom field for the username within info4652 uses the custom field for the username within extra.raw_info4653 uses the default claim for the username when the custom claim is not found4654 uses the default claim for the username when the custom claim is empty4655 uses the default claim for the username when the custom claim is nil4656 auth_hash constructed with ASCII-8BIT encoding4657 forces utf8 encoding on uid4658 forces utf8 encoding on provider4659 forces utf8 encoding on name4660 forces utf8 encoding on username4661 forces utf8 encoding on email4662 forces utf8 encoding on password4663 #get_from_auth_hash_or_info4664 for a key not within auth_hash4665 provides username from info_hash4666 for a key within auth_hash4667 provides username from auth_hash4668 for a key within auth_hash extra4669 provides username from auth_hash extra4670Packages::Debian::ProcessChangesService4671 #execute4672 with valid package file4673 updates package and package file4674 with non-matching distribution4675 is expected to raise ActiveRecord::RecordNotFound4676 with missing field in .changes file4677 behaves like raises error with missing field4678 is expected to raise ArgumentError with "missing Source field"4679 behaves like raises error with missing field4680 is expected to raise ArgumentError with "missing Version field"4681 behaves like raises error with missing field4682 is expected to raise ArgumentError with "missing Distribution field"4683 with existing package in the same distribution4684 does not create a package and assigns the package_file to the existing package4685 and marked as pending_destruction4686 does not re-use the existing package4687 with existing package in another distribution4688 raise ExtractionError4689 and marked as pending_destruction4690 does not re-use the existing package4691 with invalid package file4692 raise ExtractionError4693 when creating package fails4694 re-raise error4695Ci::Partitionable::Switch4696 # order random4697 is expected not to be routing class4698 is expected to eq "_test_ci_jobs_metadata_id_seq"4699 is expected to eq "_test_p_ci_jobs_metadata"4700 is expected to eq "_test_p_ci_jobs_metadata"4701 is expected to be routing class4702 is expected to eq "\"_test_p_ci_jobs_metadata\""4703 with safe request store4704 changing the flag to true does not affect the current request4705 changing the flag to false does not affect the current request4706 when switching the tables4707 switches table_name to routing table and rollbacks4708 switches quoted_table_name to routing table and rollbacks4709 switches arel_table to routing table and rollbacks4710 switches predicate_builder to routing table and rollbacks4711 can switch aggregate methods4712 can switch reads4713 can switch inserts4714 can switch deletes4715 with associations4716 reads4717 writes4718 deletes4719 can switch joins from jobs4720 can switch joins from metadata4721 preloads4722 with nested attributes4723 writes4724ProtectedBranchPolicy4725 as maintainers4726 can be read4727 can be created4728 can be updated4729 can be destroyed4730 as guests4731 can be read4732 can be created4733 can be updated4734 cannot be destroyed4735DeleteDiffFilesWorker4736 #perform4737 deletes all merge request diff files4738 updates state to without_files4739 resets the files_count of the diff4740 does nothing if diff was already marked as "without_files"4741 rollsback if something goes wrong4742Pajamas::AlertComponent4743 slots4744 renders alert body4745 renders actions4746 with defaults4747 does not set a title4748 renders the default variant4749 renders a dismiss button4750 title4751 with non-empty string4752 sets the title4753 with nil, empty or blank string4754 title: nil4755 does not set a title4756 title: ""4757 does not set a title4758 title: " "4759 does not set a title4760 with custom options4761 with simple options4762 sets the alert_class4763 sets the alert_data4764 with dismissible disabled4765 has the "not dismissible" class4766 does not render the dismiss button4767 with the icon hidden4768 has the hidden icon class4769 does not render the icon4770 with dismissible content4771 with no custom options4772 does not have "not dismissible" class4773 renders a dismiss button and data4774 with custom options4775 renders a dismiss button and data4776 with setting variant type4777 variant: :warning4778 renders the variant4779 variant: "success"4780 renders the variant4781 variant: :danger4782 renders the variant4783 variant: "tip"4784 renders the variant4785 with unknown or nil variant4786 variant: :foo4787 adds the default variant class4788 variant: nil4789 adds the default variant class4790Gitlab::Ci::Config::Entry::Prefix4791 validations4792 behaves like key entry validations4793 when entry value contains slash4794 behaves like key with slash4795 is invalid4796 reports errors with config value4797 when entry value contains URI encoded slash (%2F)4798 behaves like key with slash4799 is invalid4800 reports errors with config value4801 when entry value is a dot4802 behaves like key with only dots4803 is invalid4804 reports errors with config value4805 when entry value is two dots4806 behaves like key with only dots4807 is invalid4808 reports errors with config value4809 when entry value is a URI encoded dot (%2E)4810 behaves like key with only dots4811 is invalid4812 reports errors with config value4813 when entry value is two URI encoded dots (%2E)4814 behaves like key with only dots4815 is invalid4816 reports errors with config value4817 when entry value is one dot and one URI encoded dot4818 behaves like key with only dots4819 is invalid4820 reports errors with config value4821 when key is a string4822 #value4823 returns key value4824 #valid?4825 is valid4826 when entry value is not correct4827 #errors4828 saves errors4829 .default4830 returns default key4831Gitlab::Tracking::IncidentManagement4832 # order random4833 .track_from_params4834 known params4835 param create_issue4836 behaves like a tracked event4837 creates the tracking event with the correct details4838 param issue_template_key4839 behaves like a tracked event4840 creates the tracking event with the correct details4841 param send_email4842 behaves like a tracked event4843 creates the tracking event with the correct details4844 param pagerduty_active4845 behaves like a tracked event4846 creates the tracking event with the correct details4847 param auto_close_incident4848 behaves like a tracked event4849 creates the tracking event with the correct details4850 different input values4851 behaves like the correct prefixed event name4852 matches4853 behaves like the correct prefixed event name4854 matches4855 behaves like the correct prefixed event name4856 matches4857 behaves like the correct prefixed event name4858 matches4859 behaves like the correct prefixed event name4860 matches4861 param with label4862 behaves like a tracked event4863 creates the tracking event with the correct details4864 param without label4865 behaves like a tracked event4866 creates the tracking event with the correct details4867 unknown params4868 does not create the tracking event4869Gitlab::EncryptedConfiguration4870 #initialize4871 accepts all args as optional fields4872 generates 32 byte key when provided a larger base key4873 generates 32 byte key when provided a smaller base key4874 throws an error when the base key is too small4875 when provided a config file but no key4876 throws an error when writing without a key4877 throws an error when reading without a key4878 when provided key and config file4879 #write4880 encrypts the file using the provided key4881 #read4882 reads yaml configuration4883 allows referencing top level keys via dot syntax4884 throws a custom error when referencing an invalid key map config4885 #change4886 changes yaml configuration4887 when provided previous_keys for rotation4888 #write4889 rotates the key when provided a new key4890 #read4891 supports reading using rotated config4892Ci::ExpirePipelineCacheService4893 #execute4894 invalidates Etag caching for project pipelines path4895 invalidates Etag caching for merge request pipelines if pipeline runs on any commit of that source branch4896 updates the cached status for a project4897 does not do N+1 queries4898 destroyed pipeline4899 clears the cache4900 when the pipeline is triggered by another pipeline4901 updates the cache of dependent pipeline4902 when the pipeline triggered another pipeline4903 updates the cache of dependent pipeline4904Gitlab::Database::QueryAnalyzer4905 the hook is enabled by default in specs4906 does process queries and gets normalized SQL4907 does prevent recursive execution4908 #within4909 when it is already initialized4910 does initialize analyzer only once4911 does initialize user analyzer when enabled4912 does initialize user analyzer only once4913 does not initializer user analyzer when disabled4914 when initializer is enabled4915 calls begin! and end!4916 when begin! raises the end! is not called4917 when user analyzers are used4918 calls begin! and end!4919 #process_sql4920 does not analyze query if not enabled4921 does analyze query if enabled4922 does track exception if query cannot be parsed4923 does track exception if analyzer raises exception on enabled?4924 does track exception if analyzer raises exception on analyze4925 does call analyze only on enabled initializers4926 does not call analyze on suppressed analyzers4927 does call analyze on suppressed analyzers if some queries require tracking4928ForkNamespaceEntity4929 renders json4930 includes id4931 includes name4932 includes description4933 includes markdown_description4934 includes visibility4935 includes full_name4936 includes created_at4937 includes updated_at4938 includes avatar_url4939 exposes path for forking project to the namespace4940 exposes forked_project_path when fork exists in namespace4941 exposes relative path to the namespace4942 exposes human readable permission level4943Markup::RenderingService4944 # order random4945 #execute4946 when text is missing4947 returns an empty string4948 when file_name is missing4949 returns html (rendered by Banzai)4950 when postprocess_context is missing4951 returns html (rendered by Banzai)4952 when rendered context is present4953 returns an empty string4954 when file is a markdown file4955 returns html (rendered by Banzai)4956 when file is asciidoc file4957 returns html (rendered by Gitlab::Asciidoc)4958 when file is a regular text file4959 returns html (rendered by ActionView::TagHelper)4960 when file has an unknown type4961 returns html (rendered by Gitlab::OtherMarkup)4962 with reStructuredText4963 returns rendered html4964 when input has an invalid syntax4965 uses a simple formatter for html4966Gitlab::Ci::Config::Entry::Product::Parallel4967 with invalid config4968 when it is not a numeric value4969 behaves like invalid config4970 #valid?4971 is expected not to be valid4972 #errors4973 returns error about invalid type4974 when it is lower than one4975 behaves like invalid config4976 #valid?4977 is expected not to be valid4978 #errors4979 returns error about invalid type4980 when it is bigger than 2004981 behaves like invalid config4982 #valid?4983 is expected not to be valid4984 #errors4985 returns error about invalid type4986 when it is not an integer4987 behaves like invalid config4988 #valid?4989 is expected not to be valid4990 #errors4991 returns error about invalid type4992 with empty hash config4993 behaves like invalid config4994 #valid?4995 is expected not to be valid4996 #errors4997 returns error about invalid type4998 with numeric config4999 when job is specified5000 #valid?5001 is expected to be valid5002 #value5003 returns job needs configuration5004 when :numeric is not allowed5005 behaves like invalid config5006 #valid?5007 is expected not to be valid5008 #errors5009 returns error about invalid type5010 with matrix builds config5011 when matrix is specified5012 #valid?5013 is expected to be valid5014 #value5015 returns job needs configuration5016 when :matrix is not allowed5017 behaves like invalid config5018 #valid?5019 is expected not to be valid5020 #errors5021 returns error about invalid type5022Gitlab::Ci::Trace::Backoff5023 keeps the MAX_ATTEMPTS limit in sync5024 keeps the Redis TTL limit in sync5025 all retries are happening under the 7 days limit5026 #value5027 archival_attempts: 1, result: 9.65028 is expected to eq 9.6 hours5029 archival_attempts: 2, result: 19.25030 is expected to eq 19.2 hours5031 archival_attempts: 3, result: 28.85032 is expected to eq 28.8 hours5033 archival_attempts: 4, result: 38.45034 is expected to eq 38.4 hours5035 archival_attempts: 5, result: 48.05036 is expected to eq 48.0 hours5037 #value_with_jitter5038 archival_attempts: 1, min_value: 9.6, max_value: 13.65039 is expected to be in 9.6 hours..13.6 hours5040 archival_attempts: 2, min_value: 19.2, max_value: 23.25041 is expected to be in 19.2 hours..23.2 hours5042 archival_attempts: 3, min_value: 28.8, max_value: 32.85043 is expected to be in 28.8 hours..32.8 hours5044 archival_attempts: 4, min_value: 38.4, max_value: 42.45045 is expected to be in 38.4 hours..42.4 hours5046 archival_attempts: 5, min_value: 48.0, max_value: 52.05047 is expected to be in 48.0 hours..52.0 hours5048Clusters::Agents::ActivityEvent5049 is expected to belong to agent class_name => Clusters::Agent required: true5050 is expected to belong to user optional: true5051 is expected to belong to agent_token class_name => Clusters::AgentToken optional: true5052 is expected to validate that :kind cannot be empty/falsy5053 is expected to validate that :level cannot be empty/falsy5054 is expected to validate that :recorded_at cannot be empty/falsy5055 is expected to nullify if blank :detail5056 scopes5057 .in_timeline_order5058 sorts by recorded_at: :desc, id: :desc5059 .recorded_before5060 returns only events recorded before the cutoff5061DesignManagement::DesignUserNotesCountService5062 behaves like a counter caching service5063 #count5064 caches the count5065 #refresh_cache5066 refreshes the cache5067 #delete_cache5068 removes the cache5069 #uncached_count5070 does not cache the count5071 #count5072 returns the count of notes5073 #cache_key5074 contains the `VERSION` and `design.id`5075 cache invalidation5076 changes when a new note is created5077 changes when a note is destroyed5078Gitlab::LegacyGithubImport::Client5079 convert OAuth2 client options to symbols5080 does not crash (e.g. GitlabSettings::MissingSetting) when verify_ssl config is not present5081 when config is missing5082 is still possible to get an Octokit client5083 is not be possible to get an OAuth2 client5084 allow SSL verification to be configurable on API5085 uses supplied value5086 #api_endpoint5087 when provider does not specity an API endpoint5088 uses GitHub root API endpoint5089 when provider specify a custom API endpoint5090 uses the custom API endpoint5091 when given a host5092 builds a endpoint with the given host and the default API version5093 when given an API version5094 does not use the API version without a host5095 when given a host and version5096 builds a endpoint with the given options5097 and hostname5098 builds a endpoint with the given options5099 #repository5100 returns repository data as a hash5101 #repos5102 returns the user's repositories as a hash5103 github rate limit5104 does not raise error when rate limit is disabled5105 when wait for rate limit is disabled5106 raises the error limit error when requested5107scripts/changed-feature-flags5108 # order random5109 GetFeatureFlagsFromFiles5110 .extracted_flags5111 with definition files in the development directory5112 behaves like extract feature flags5113 returns feature flags on their own5114 returns feature flags and their state as enabled5115 returns feature flags and their state as disabled5116 does not return feature flags when there are mixed deleted and non-deleted definition files5117 with definition files in the ops directory5118 behaves like extract feature flags5119 returns feature flags on their own5120 returns feature flags and their state as enabled5121 returns feature flags and their state as disabled5122 does not return feature flags when there are mixed deleted and non-deleted definition files5123 with definition files in the experiment directory5124 ignores the files5125 with only deleted definition files5126 returns feature flags and their state as deleted5127 does not return feature flags when the desired state is enabled5128 does not return feature flags when the desired state is disabled5129Gitlab::InactiveProjectsDeletionWarningTracker5130 .notified_projects5131 returns the list of projects for which deletion warning email has been sent5132 .reset_all5133 deletes all the projects for which deletion warning email was sent5134 #notified?5135 returns true if the project has already been notified5136 returns false if the project has not been notified5137 #mark_notified5138 marks the project as being notified5139 #notification_date5140 returns the date if a deletion warning email has been sent for a given project5141 returns nil if a deletion warning email has not been sent for a given project5142 #scheduled_deletion_date5143 without a stored deletion email date5144 behaves like returns the expected deletion date5145 is expected to eq "2023-07-02"5146 with a stored deletion email date5147 behaves like returns the expected deletion date5148 is expected to eq "2023-07-02"5149 #reset5150 resets the project as not being notified5151SpamLog5152 associations5153 is expected to belong to user required: false5154 validations5155 is expected to validate that :user cannot be empty/falsy5156 #remove_user5157 blocks the user5158 when admin mode is enabled5159 initiates user removal5160 when admin mode is disabled5161 does not allow to remove the user5162 .verify_recaptcha!5163 the record cannot be found5164 updates nothing5165 does not error despite not finding a record5166 the record exists5167 updates recaptcha_verified5168Gitlab::Pages::DeploymentUpdate5169 for new artifacts5170 is invalid for invalid archive5171 for a valid job5172 is valid5173 when missing artifacts metadata5174 is invalid5175 maximum pages artifacts size5176 when maximum pages size is set to zero5177 when size is above the limit5178 is valid5179 when size is limited on the instance level5180 when size is below the limit5181 is valid5182 when size is above the limit5183 is invalid5184 when retrying the job5185 marks older pages:deploy jobs retried5186Banzai::Pipeline::PlainMarkdownPipeline5187 backslash escapes5188 converts all escapable punctuation to literals5189 ensure we handle all the GitLab reference characters5190 does not convert non-reference/latex punctuation to spans5191 does not convert other characters to literals5192 backslash escapes are untouched in code blocks, code spans, autolinks, or raw HTML5193 markdown: "`` \\@\\! ``", expected: "<code>\\@\\!</code>"5194 is expected to include "<code>\\@\\!</code>"5195 markdown: " \\@\\!", expected: "<code>\\@\\!\n</code>"5196 is expected to include "<code>\\@\\!\n</code>"5197 markdown: "~~~\n\\@\\!\n~~~", expected: "<code>\\@\\!\n</code>"5198 is expected to include "<code>\\@\\!\n</code>"5199 markdown: "$1+\\$2$", expected: "<code data-math-style=\"inline\">1+\\$2</code>"5200 is expected to include "<code data-math-style=\"inline\">1+\\$2</code>"5201 markdown: "<http://example.com?find=\\@>", expected: "<a href=\"http://example.com?find=%5C@\">http://example.com?find=\\@</a>"5202 is expected to include "<a href=\"http://example.com?find=%5C@\">http://example.com?find=\\@</a>"5203 markdown: "<a href=\"/bar\\@)\">", expected: "<a href=\"/bar\\@)\">"5204 is expected to include "<a href=\"/bar\\@)\">"5205 work in all other contexts, including URLs and link titles, link references, and info strings in fenced code blocks5206 renders correct html5207 markdown: "[foo](/bar\\@ \"\\@title\")", expected: "<a href=\"/bar@\" title=\"@title\">foo</a>"5208 is expected to include "<a href=\"/bar@\" title=\"@title\">foo</a>"5209 markdown: "[foo]\n\n[foo]: /bar\\@ \"\\@title\"", expected: "<a href=\"/bar@\" title=\"@title\">foo</a>"5210 is expected to include "<a href=\"/bar@\" title=\"@title\">foo</a>"5211Gitlab::Metrics::System5212 when /proc files exist5213 .memory_usage_rss5214 without PID5215 returns a hash containing RSS metrics in bytes for current process5216 with PID5217 returns a hash containing RSS metrics in bytes for given process5218 .file_descriptor_count5219 returns the amount of open file descriptors5220 .max_open_file_descriptors5221 returns the max allowed open file descriptors5222 .memory_usage_uss_pss5223 without PID5224 returns the current process' unique and porportional set size (USS/PSS) in bytes5225 with PID5226 returns the given process' unique and porportional set size (USS/PSS) in bytes5227 .memory_total5228 returns the current process' resident set size (RSS) in bytes5229 .process_runtime_elapsed_seconds5230 returns the seconds elapsed since the process was started5231 when inputs are not available5232 returns 05233 .summary5234 contains a selection of the available fields5235 when /proc files do not exist5236 .memory_usage_rss5237 returns 0 for all components5238 .memory_usage_uss_pss5239 returns 0 for all components5240 .file_descriptor_count5241 returns 05242 .max_open_file_descriptors5243 returns 05244 .summary5245 returns only available fields5246 .cpu_time5247 returns a Float5248 .real_time5249 returns a Float5250 .monotonic_time5251 returns a Float5252 .thread_cpu_time5253 returns cpu_time on supported platform5254 returns nil on unsupported platform5255 .thread_cpu_duration5256 returns difference between start and current time5257 returns nil on unsupported platform5258BulkImports::Groups::Pipelines::SubgroupEntitiesPipeline5259 #run5260 creates entities for the subgroups5261 #load5262 creates entities for the given data5263 pipeline parts5264 is expected to includes the BulkImports::Pipeline module5265 is expected to includes the BulkImports::Pipeline::Runner module5266 has extractors5267 has transformers5268Gitlab::RackAttack5269 .configure5270 extends the request class5271 configures the throttle response5272 configures the safelist5273 configures throttles if no dry-run was configured5274 configures tracks if dry-run was configured for all throttles5275 configures tracks and throttles with a selected set of dry-runs5276 enables dry-runs for `throttle_unauthenticated_api` and `throttle_unauthenticated_web` when selecting `throttle_unauthenticated`5277 user allowlist5278 is empty5279 reflects GITLAB_THROTTLE_USER_ALLOWLIST5280 .throttled_response_headers5281 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"}5282 generates accurate throttled headers5283 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"}5284 generates accurate throttled headers5285 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"}5286 generates accurate throttled headers5287 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"}5288 generates accurate throttled headers5289 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"}5290 generates accurate throttled headers5291 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"}5292 generates accurate throttled headers5293 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"}5294 generates accurate throttled headers5295 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"}5296 generates accurate throttled headers5297 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"}5298 generates accurate throttled headers5299 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"}5300 generates accurate throttled headers5301Ci::BuildCancelService5302 #execute5303 when user is authorized to cancel the build5304 when build is cancelable5305 transits build to canceled5306 when build is not cancelable5307 responds with unprocessable entity5308 when user is not authorized to cancel the build5309 responds with forbidden5310Gitlab::Database::SimilarityScore5311 when passing empty values5312 when search is nil5313 orders by a constant 0 value5314 when rules are empty5315 orders by a constant 0 value5316 when similarity scoring based on the path5317 when searching for `git`5318 is expected to eq ["git", "gitlab", "gitaly"]5319 when searching for `gitlab`5320 is expected to eq ["gitlab", "gitlab-styles", "gitlab-danger"]5321 when searching for something unrelated5322 results have 0 similarity score5323 score multiplier5324 ranks `path` matches higher5325 annotation5326 annotates the generated SQL expression5327Metrics::Dashboard::UpdateDashboardService5328 #execute5329 user does not have push right to repository5330 behaves like misconfigured dashboard service response with stepable5331 returns an appropriate message and status code5332 with rights to push to the repository5333 path traversal attack attempt5334 with a yml extension5335 behaves like misconfigured dashboard service response with stepable5336 returns an appropriate message and status code5337 without a yml extension5338 behaves like misconfigured dashboard service response with stepable5339 returns an appropriate message and status code5340 valid parameters5341 behaves like valid dashboard update process5342 delegates commit creation to Files::UpdateService5343 selected branch already exists5344 behaves like misconfigured dashboard service response with stepable5345 returns an appropriate message and status code5346 Files::UpdateService success5347 returns success5348 when the merge request does not succeed5349 returns an appropriate message and status code5350 with escaped characters in file name5351 escapes the special characters5352 when pushing to the default branch5353 does not create a merge request5354 Files::UpdateService fails5355 returns error5356WebHooks::LogExecutionService5357 #execute5358 logs the data5359 updates the last failure5360 obtaining an exclusive lease5361 updates failure state using a lease that ensures fresh state is written5362 when a lease cannot be obtained5363 response_category: :ok, executable: true, needs_updating: false5364 raises an error if the hook needs to be updated5365 response_category: :ok, executable: false, needs_updating: true5366 raises an error if the hook needs to be updated5367 response_category: :failed, executable: true, needs_updating: true5368 raises an error if the hook needs to be updated5369 response_category: :failed, executable: false, needs_updating: false5370 raises an error if the hook needs to be updated5371 response_category: :error, executable: true, needs_updating: true5372 raises an error if the hook needs to be updated5373 response_category: :error, executable: false, needs_updating: false5374 raises an error if the hook needs to be updated5375 when response_category is :ok5376 does not increment the failure count5377 does not change the disabled_until attribute5378 when the hook had previously failed5379 resets the failure count5380 when response_category is :failed5381 increments the failure count5382 does not change the disabled_until attribute5383 does not allow the failure count to overflow5384 when response_category is :error5385 backs off5386 with url_variables5387 logs the data and masks response headers5388 with X-Gitlab-Token5389 redacts the token5390Ci::CompareTestReportsService5391 #execute5392 when head pipeline has test reports5393 returns status and data5394 when base and head pipelines have test reports5395 returns status and data5396 when head pipeline has corrupted test reports5397 returns a parsed TestReports success status and failure on the individual suite5398 test failure history5399 loads recent failures on limited test cases to avoid building up a huge DB query5400Gitlab::GithubImport::Importer::NotesImporter5401 #parallel?5402 returns true when running in parallel mode5403 returns false when running in sequential mode5404 #execute5405 when running in parallel mode5406 imports notes in parallel5407 when running in sequential mode5408 imports notes in sequence5409 #sequential_import5410 imports each note in sequence5411 #parallel_import5412 imports each note in parallel5413 #id_for_already_imported_cache5414 returns the ID of the given note5415 #collection_options5416 returns an empty Hash5417Gitlab::HealthChecks::DbCheck5418 #metrics5419 Check is passing5420 is expected to include (have attributes {:name => "db_ping_success", :value => 1})5421 is expected to include (have attributes {:name => "db_ping_timeout", :value => 0})5422 is expected to include (have attributes {:name => "db_ping_latency_seconds", :value => (be >= 0)})5423 Check is misbehaving5424 is expected to include (have attributes {:name => "db_ping_success", :value => 0})5425 is expected to include (have attributes {:name => "db_ping_timeout", :value => 0})5426 is expected to include (have attributes {:name => "db_ping_latency_seconds", :value => (be >= 0)})5427 Check is timeouting5428 is expected to include (have attributes {:name => "db_ping_success", :value => 0})5429 is expected to include (have attributes {:name => "db_ping_timeout", :value => 1})5430 is expected to include (have attributes {:name => "db_ping_latency_seconds", :value => (be >= 0)})5431 #readiness5432 Check returns ok5433 is expected to have attributes {:success => true}5434 Check is misbehaving5435 is expected to have attributes {:message => "unexpected Db check result: error!", :success => false}5436 Check is timeouting5437 is expected to have attributes {:message => "Db check timed out", :success => false}5438 Check is raising an unhandled exception5439 is expected to have attributes {:message => "unexpected Db check result: unexpected error", :success => false}5440 with multiple databases5441 checks multiple databases5442Mutations::Security::CiConfiguration::ConfigureSecretDetection5443 is expected to require graphql authorizations :push_code5444 #resolve5445 generates an error if the resource is not accessible to the user5446 when user does not have enough permissions5447 generates an error5448 when user is a maintainer of a different project5449 generates an error5450 when the user does not have permission to create a new branch5451 returns an array of errors5452 when the user can create a merge request5453 when service successfully generates a path to create a new merge request5454 returns a success path5455 when service can not generate any path to create a new merge request5456 returns an array of errors5457Gitlab::UntrustedRegexp5458 #initialize5459 invalid regexp5460 is expected to raise RegexpError5461 #replace_all5462 replaces all instances of the match in a string5463 #replace_gsub5464 replaces all instances of the match in a string5465 replaces nothing when no match5466 handles empty text5467 #replace5468 replaces the first instance of the match in a string5469 #===5470 returns true for a match5471 returns false for no match5472 can handle regular expressions in multiline mode5473 #match?5474 malicious regexp5475 takes under a second5476 matching regexp5477 returns an array of nil matches5478 non-matching regexp5479 returns an array of nil matches5480 #scan5481 malicious regexp5482 takes under a second5483 empty regexp5484 returns an array of nil matches5485 empty capture group regexp5486 returns an array of nil matches in an array5487 no capture group5488 returns the whole match5489 one capture group5490 returns the captured part5491 two capture groups5492 returns the captured parts5493 #extract_named_group5494 returns values for both named groups5495 returns nil if there was no match for group5496 returns nil if match is nil5497 raises if name is not a capture group5498 #match5499 when there are matches5500 returns a match object5501 when there are no matches5502 returns nil5503Gitlab::Ci::Config::Normalizer::NumberStrategy5504 .applies_to?5505 with numbers5506 is expected to be truthy5507 with hash that has :number key5508 is expected to be truthy5509 with a float number5510 is expected to be falsey5511 with hash that does not have :number key5512 is expected to be falsey5513 .build_from5514 with numbers5515 behaves like parallelized job5516 is expected to eq 35517 has attributes5518 has parallelized name5519 with hash that has :number key5520 behaves like parallelized job5521 is expected to eq 35522 has attributes5523 has parallelized name5524 with one5525 behaves like single parallelized job5526 is expected to eq 15527 has attributes5528 has parallelized name5529AccessTokenValidationService5530 .include_any_scope?5531 returns true if the required scope is present in the token's scopes5532 returns true if more than one of the required scopes is present in the token's scopes5533 returns true if the list of required scopes is an exact match for the token's scopes5534 returns true if the list of required scopes contains all of the token's scopes, in addition to others5535 returns true if the list of required scopes is blank5536 returns false if there are no scopes in common between the required scopes and the token scopes5537 conditions5538 ignores any scopes whose `if` condition returns false5539 does not ignore scopes whose `if` condition is not set5540 does not ignore scopes whose `if` condition returns true5541Ci::Catalog::Resource5542 # order random5543 is expected to delegate #name to the #project object5544 is expected to delegate #description to the #project object5545 is expected to delegate #avatar_path to the #project object5546 is expected to delegate #star_count to the #project object5547 is expected to delegate #forks_count to the #project object5548 is expected to belong to project required: false5549 .order_by_name_asc5550 returns catalog resources sorted by ascending name5551 .for_projects5552 returns catalog resources for the given project IDs5553 #latest_version5554 returns the latest release5555 .order_by_created_at_desc5556 returns catalog resources sorted by descending created at5557 #versions5558 returns releases ordered by released date descending5559 .order_by_name_desc5560 returns catalog resources sorted by descending name5561LfsObjectsProject5562 associations5563 is expected to belong to project required: false5564 is expected to belong to lfs_object required: false5565 validation5566 is expected to validate that :lfs_object_id cannot be empty/falsy5567 is expected to validate that :project_id cannot be empty/falsy5568 validates object id5569 #link_to_project!5570 does not throw error when duplicate exists5571 upserts a new entry and updates the project cache5572 #update_project_statistics5573 updates project statistics when the object is added5574 updates project statistics when the object is removed5575Gitlab::ImportExport::UploadsSaver5576 bundle a project Git repo5577 legacy storage5578 saves the uploads successfully5579 copies the uploads to the export path5580 hashed storage5581 saves the uploads successfully5582 copies the uploads to the export path5583StatAnchorsHelper5584 #stat_anchor_attrs5585 when anchor is a link5586 returns the proper attributes5587 when anchor is not a link5588 when class_modifier is set5589 returns the proper attributes5590 when class_modifier is not set5591 returns the proper attributes5592 when itemprop is not set5593 returns the itemprop attributes5594 when itemprop is set set5595 returns the itemprop attributes5596 when data is not set5597 returns the data attributes5598 when itemprop is set5599 returns the data attributes5600Banzai::Pipeline5601 .[]5602 for nil5603 is expected to eq Banzai::Pipeline::FullPipeline5604 for symbols5605 when known5606 is expected to eq Banzai::Pipeline::FullPipeline5607 when unknown5608 behaves like error5609 is expected to raise NameError with "uninitialized constant Banzai::Pipeline::UnknownPipeline"5610 for classes5611 subclassing Banzai::Pipeline::BasePipeline5612 is expected to eq #<Class:0x00007f0366a80690>5613 subclassing other types5614 behaves like error5615 is expected to raise ArgumentError with "unsupported pipeline name Foo (Class)"5616 for other types5617 behaves like error5618 is expected to raise ArgumentError with "unsupported pipeline name \"label\" (String)"5619MergeRequestMetricsService5620 #merge5621 updates metrics5622 #close5623 updates metrics5624 #reopen5625 updates metrics5626Gitlab::GithubImport::AdvanceStageWorker5627 #perform5628 when the project no longer exists5629 does not perform any work5630 when there are remaining jobs5631 reschedules itself5632 when there are no remaining jobs5633 schedules the next stage5634 raises KeyError when the stage name is invalid5635 #wait_for_jobs5636 waits for jobs to complete and returns a new pair of keys to wait for5637 #find_import_state5638 returns a ProjectImportState5639 returns nil if the project import is not running5640Resolvers::Environments::LastDeploymentResolver5641 # order random5642 #resolve5643 finds the deployment when status matches5644 does not find the deployment when status does not match5645 raises an error when status is not specified5646 raises an error when status is not supported5647Projects::DeleteBranchWorker5648 # order random5649 #perform5650 when the branch does not exist5651 does nothing5652 with a non-existing project5653 does nothing5654 with a non-existing user5655 does nothing5656 with existing user and project5657 calls service to delete source branch5658 when delete service returns an error5659 when the status code is 4005660 tracks and raises the exception5661 when the status code is not 4005662 does not track the exception5663 behaves like an idempotent worker5664 is labeled as idempotent5665 performs multiple times sequentially without raising an exception5666Gitlab::Database::LoadBalancing::HostList5667 #initialize5668 sets metrics for current number of hosts and current index5669 #length5670 returns the number of hosts in the list5671 #host_names_and_ports5672 with ports5673 returns the host names of all hosts5674 without ports5675 returns the host names of all hosts5676 #hosts5677 returns a copy of the host5678 #hosts=5679 updates the list of hosts to use5680 #next5681 returns a host5682 cycles through all available hosts5683 skips hosts that are offline5684 returns nil if no hosts are online5685 returns nil if no hosts are available5686 #shuffle5687 randomizes the list5688Gitlab::Metrics::Dashboard::Importers::PrometheusMetrics5689 #execute5690 valid dashboard5691 with all new metrics5692 creates PrometheusMetrics5693 with existing metrics5694 updates existing PrometheusMetrics5695 creates new PrometheusMetrics5696 with stale metrics5697 updates existing PrometheusMetrics5698 deletes stale metrics5699 invalid dashboard5700 returns false5701IncidentManagement::PagerDuty::ProcessWebhookService5702 # order random5703 #execute5704 when PagerDuty webhook setting is active5705 when token is valid5706 when webhook payload has acceptable size5707 responds with Accepted5708 processes issues5709 when webhook payload is too big5710 responds with Bad Request5711 behaves like does not process incidents5712 does not process incidents5713 when webhook payload is blank5714 responds with Accepted5715 behaves like does not process incidents5716 does not process incidents5717 when token is invalid5718 responds with Unauthorized5719 behaves like does not process incidents5720 does not process incidents5721 when both tokens are nil5722 responds with Unauthorized5723 behaves like does not process incidents5724 does not process incidents5725 when PagerDuty webhook setting is not active5726 responds with Forbidden5727 behaves like does not process incidents5728 does not process incidents5729Types::AlertManagement::PrometheusIntegrationType5730 is expected to eq "AlertManagementPrometheusIntegration"5731 is expected to require graphql authorizations :admin_project5732 resolvers5733 behaves like has field with value5734 correctly renders the field5735 behaves like has field with value5736 correctly renders the field5737 behaves like has field with value5738 correctly renders the field5739 behaves like has field with value5740 correctly renders the field5741 behaves like has field with value5742 correctly renders the field5743 with alerting setting5744 behaves like has field with value5745 correctly renders the field5746 a group integration5747 field: id5748 is redacted5749 field: type5750 is redacted5751 field: name5752 is redacted5753 field: active5754 is redacted5755 field: token5756 is redacted5757 field: url5758 is redacted5759 field: apiUrl5760 is redacted5761Environments::CreateService5762 # order random5763 #execute5764 creates an environment5765 returns successful response5766 with a cluster agent5767 returns successful response5768 when user does not have permission to read the agent5769 returns an error5770 when params contain invalid value5771 does not create an environment5772 returns an error5773 when disallowed parameter is passed5774 ignores the parameter5775 when user is reporter5776 does not create an environment5777 returns an error5778Resolvers::Environments::NestedEnvironmentsResolver5779 # order random5780 #resolve5781 finds the nested environments when status matches5782 finds the nested environments when searching by name5783 finds the nested environments when name matches exactly5784Gitlab::HealthChecks::GitalyCheck5785 #readiness5786 Gitaly server is up5787 is expected to eq [#<struct Gitlab::HealthChecks::Result name="gitaly_check", success=true, message=nil, labels={:shard=>"default"}>]5788 Gitaly server is down5789 is expected to eq [#<struct Gitlab::HealthChecks::Result name="gitaly_check", success=false, message="Connection refused", labels={:shard=>"default"}>]5790 #metrics5791 Gitaly server is up5792 provides metrics5793 Gitaly server is down5794 provides metrics5795Ci::AppendBuildTraceService5796 build trace append is successful5797 returns a correct stream size and status code5798 when could not correctly append to a trace5799 responds with content range violation and data stored5800 logs exception if build has live trace5801 when the trace size is exceeded5802 returns 403 status code5803 when debug_trace param is provided5804 when sending the first trace5805 updates build metadata debug_trace_enabled5806 when sending the second trace5807 does not update build metadata debug_trace_enabled5808Boards::Issues::CreateService5809 #execute5810 delegates the create proceedings to Issues::CreateService5811 creates a new issue5812 adds the label of the list to the issue5813Preloaders::MergeRequestDiffPreloader5814 does not trigger N+1 queries5815X509CertificateRevokeService5816 #execute5817 for revoked certificates5818 update all commit signatures5819 for good certificates5820 do not update any commit signature5821RuboCop::Cop::Gitlab::DocUrl5822 # order random5823 when string literal is added without docs url prefix5824 when inlined5825 does not register an offense5826 when multilined5827 does not register an offense5828 with heredoc5829 does not register an offense5830 when string literal is added with docs url prefix5831 when inlined5832 registers an offense5833 when multilined5834 registers an offense5835 with heredoc5836 registers an offense5837Gitlab::Pagination::Keyset::SimpleOrderBuilder5838 when no order present5839 orders by primary key5840 sets the column definition distinct and not nullable5841 when the order scope's model uses default_scope5842 orders by primary key5843 when primary key order present5844 orders by primary key without altering the direction5845 when ordered by other column5846 adds extra primary key order as tie-breaker5847 sets the column definition for created_at non-distinct and nullable5848 when ordered by two columns where the last one is the tie breaker5849 preserves the order5850 when non-nullable column is given5851 sets the column definition for namespace_id non-distinct and non-nullable5852 when ordering by a column with the lower named function5853 sets the column definition for name5854 adds extra primary key order as tie-breaker5855 NULLS order given as as an Arel node5856 when NULLS LAST order is given without a tie-breaker5857 sets the column definition for created_at appropriately5858 orders by primary key5859 when NULLS FIRST order is given with a tie-breaker5860 sets the column definition for created_at appropriately5861 orders by the given primary key5862 return :unable_to_order symbol when order cannot be built5863 when raw SQL order is given5864 is expected to eq false5865 when an invalid NULLS order is given5866 scope: lazy { Project.order(Arel.sql('projects.updated_at created_at Asc Nulls Last')) }5867 is expected to eq false5868 scope: lazy { Project.order(Arel.sql('projects.created_at ZZZ NULLS FIRST')) }5869 is expected to eq false5870 scope: lazy { Project.order(Arel.sql('projects.relative_position ASC NULLS LAST')) }5871 is expected to eq false5872 when more than 2 columns are given for the order5873 is expected to eq false5874Gitlab::Database::SchemaValidation::Adapters::ColumnDatabaseAdapter5875 # order random5876 #default5877 is expected to eq "DEFAULT 'no-reply@gitlab.com'::character varying"5878 when there's no default value in the column5879 is expected to be nil5880 when the column name is id5881 is expected to be nil5882 when the column default includes nextval5883 is expected to be nil5884 #name5885 is expected to eq "email"5886 #data_type5887 is expected to eq "character varying"5888 #table_name5889 is expected to eq "projects"5890 #partition_key?5891 is expected to equal false5892 #nullable5893 when column is not null5894 is expected to eq "NOT NULL"5895 when column is nullable5896 is expected to be nil5897Peek::Views::RedisDetailed5898 returns aggregated results5899 commands: [[:auth, "test"]], expected: "auth <redacted>"5900 scrubs Redis commands5901 commands: [[:set, "key", "value"]], expected: "set key <redacted>"5902 scrubs Redis commands5903 commands: [[:set, "bad"]], expected: "set bad"5904 scrubs Redis commands5905 commands: [[:hmset, "key1", "value1", "key2", "value2"]], expected: "hmset key1 <redacted>"5906 scrubs Redis commands5907 commands: [[:get, "key"]], expected: "get key"5908 scrubs Redis commands5909 commands: [[:get, "key1"], [:get, "key2"]], expected: "get key1, get key2"5910 scrubs Redis commands5911 commands: [[:set, "key1", "value"], [:set, "key2", "value"]], expected: "set key1 <redacted>, set key2 <redacted>"5912 scrubs Redis commands5913Gitlab::JiraImport::ImportIssueWorker5914 modules5915 is expected to includes the ApplicationWorker module5916 is expected to includes the Gitlab::NotifyUponDeath module5917 is expected to includes the Gitlab::JiraImport::QueueOptions module5918 is expected to includes the Gitlab::Import::DatabaseHelpers module5919 #perform5920 when any exception raised while inserting to DB5921 record a failed to import issue5922 when record is successfully inserted5923 when import label does not exist5924 does not record import failure5925 when import label exists5926 does not record import failure5927 creates an issue with the correct attributes5928 when assignee_ids is nil5929 creates an issue without assignee5930 when assignee_ids is an empty array5931 creates an issue without assignee5932RuboCop::Cop::Migration::ScheduleAsync5933 # order random5934 in a migration5935 in an old migration5936 behaves like a disabled cop5937 does not register any offenses5938 that is recent5939 BackgroundMigrationWorker.perform_async5940 adds an offense when calling `BackgroundMigrationWorker.peform_async`5941 CiDatabaseWorker.perform_async5942 adds an offense when calling `CiDatabaseWorker.peform_async`5943 BackgroundMigrationWorker.perform_in5944 adds an offense5945 CiDatabaseWorker.perform_in5946 adds an offense5947 BackgroundMigrationWorker.bulk_perform_async5948 adds an offense5949 CiDatabaseWorker.bulk_perform_async5950 adds an offense5951 BackgroundMigrationWorker.bulk_perform_in5952 adds an offense5953 CiDatabaseWorker.bulk_perform_in5954 adds an offense5955 outside of a migration5956 behaves like a disabled cop5957 does not register any offenses5958Gitlab::TemplateParser::Parser5959 #root5960 parses an empty template5961 parses a variable with a single identifier step5962 parses a variable with a single integer step5963 parses a variable with multiple selector steps5964 parses a variable with an integer selector step5965 parses the special "it" variable5966 parses a text node5967 parses an if expression5968 parses an if-else expression5969 parses an each expression5970 parses an escaped newline5971 parses a regular newline5972 parses the default changelog template5973 raises an error when parsing an integer selector that is too large5974 #parse_and_transform5975 parses and transforms a template5976 raises parsing errors using a custom error class5977Gitlab::Usage::Metrics::Instrumentations::RedisMetric5978 raises an exception if event option is not present5979 raises an exception if prefix option is not present5980 behaves like a correct instrumented metric value5981 has correct value5982 children classes5983 availability not defined5984 returns default availability5985 availability defined5986 returns defined availability5987 with usage prefix disabled5988 behaves like a correct instrumented metric value5989 has correct value5990 with prefix disabled5991 behaves like a correct instrumented metric value5992 has correct value5993Gitlab::UsageDataQueries5994 #add_metric5995 builds the query for given metric5996 .with_metadata5997 yields passed block5998 .count5999 returns the raw SQL6000 does not mix a nil column with keyword arguments6001 .distinct_count6002 returns the raw SQL6003 does not mix a nil column with keyword arguments6004 .redis_usage_data6005 returns a stringified class for redis_usage_data with a counter call6006 returns a placeholder string for redis_usage_data with a block6007 .alt_usage_data6008 returns value when used with value6009 returns a placeholder string for alt_usage_data with a block6010 .sum6011 returns the raw SQL6012 .add6013 returns the combined raw SQL with an inner query6014 .histogram6015 returns the histogram sql6016 min/max methods6017 returns nil6018 sent_in_product_marketing_email_count6019 returns sql query that returns correct value6020 clicked_in_product_marketing_email_count6021 returns sql query that returns correct value6022API::Helpers::PackagesManagerClientsHelpers6023 #find_job_from_http_basic_auth6024 behaves like valid auth header6025 with a valid Authorization header6026 is expected to eq #<Ci::Build status: "running", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 144, stage_id: 120, partition_id: 100, tag_list: nil>6027 with an unknown password6028 is expected to equal nil6029 behaves like invalid auth header6030 with an invalid Authorization header6031 is expected to equal nil6032 when the job is not running6033 behaves like valid auth header6034 with a valid Authorization header6035 is expected to eq nil6036 with an unknown password6037 is expected to equal nil6038 #find_deploy_token_from_http_basic_auth6039 behaves like valid auth header6040 with a valid Authorization header6041 is expected to eq #<DeployToken id: 27, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-0...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>6042 with an unknown password6043 is expected to equal nil6044 behaves like invalid auth header6045 with an invalid Authorization header6046 is expected to equal nil6047Gitlab::ImportFormatter6048 #comment6049 creates the correct string6050 #author_line6051 returns the correct string with provided author name6052 returns the correct string with Anonymous name if author not provided6053 #assignee_line6054 returns the correct string with provided author name6055 returns the correct string with Anonymous name if author not provided6056Banzai::Filter::FootnoteFilter6057 when footnotes exist6058 properly adds the necessary ids and classes6059 when GITLAB_TEST_FOOTNOTE_ID is set6060 uses the test footnote ID instead of a random number6061 when detecting footnotes6062 valid: true, markdown: "1. one[^1]\n[^1]: AbC"6063 detects valid footnotes6064 valid: true, markdown: "1. one[^abc]\n[^abc]: AbC"6065 detects valid footnotes6066 valid: false, markdown: "1. [one](#fnref-abc)"6067 detects valid footnotes6068 valid: false, markdown: "1. one[^1]\n[^abc]: AbC"6069 detects valid footnotes6070RuboCop::Cop::Migration::PreventStrings6071 # order random6072 when outside of migration6073 registers no offense6074 when in migration6075 when the string data type is used6076 registers an offense6077 when the string data type is not used6078 registers no offense6079 when the text data type is used6080 registers no offense6081 when the string data type is used for arrays6082 registers no offense6083 when using down method6084 registers no offense6085Packages::Composer::CacheFile6086 relationships6087 is expected to belong to group required: false6088 is expected to belong to namespace required: false6089 validations6090 is expected to validate that :namespace cannot be empty/falsy6091 scopes6092 .with_namespace6093 is expected to eq [#<Packages::Composer::CacheFile id: 1, created_at: "2023-06-02 06:48:15.229442983 +0000", updated_at...00", delete_at: nil, namespace_id: 2604, file_store: 1, file: "123456.json", file_sha256: "123456">]6094 .with_sha6095 is expected to eq [#<Packages::Composer::CacheFile id: 1, created_at: "2023-06-02 06:48:15.229442983 +0000", updated_at...00", delete_at: nil, namespace_id: 2604, file_store: 1, file: "123456.json", file_sha256: "123456">]6096projects/empty6097 when user can push code on the project6098 displays "git clone" instructions6099 when default branch name contains special shell characters6100 escapes the default branch name6101 when user can not push code on the project6102 does not display "git clone" instructions6103 project is archived6104 shows archived notice6105 with invite button on empty projects6106 shows invite members info6107 when user does not have permissions to invite members6108 does not show invite member info6109BulkImports::RelationBatchExportWorker6110 # order random6111 #perform6112 is labeled as idempotent6113 performs multiple times sequentially without raising an exception6114 executes RelationBatchExportService6115RuboCop::Cop::Migration::BackgroundMigrationMissingActiveConcern6116 # order random6117 in ee background migration6118 when scope_to is not used inside prepended block6119 does not register any offenses6120 when scope_to is used inside prepended block6121 does not register any offenses if the module does extend ActiveSupport::Concern6122 registers an offense if the module does not extend ActiveSupport::Concern6123 in non-ee background migration6124 behaves like offense is not registered6125 does not register any offenses6126 when outside of a migration6127 behaves like offense is not registered6128 does not register any offenses6129Gitlab::UploadsTransfer6130 leaves avatar uploads where they are6131Sidebars::Groups::Menus::GroupInformationMenu6132 behaves like not serializable as super_sidebar_menu_args6133 returns nil6134 #title6135 when group is a root group6136 is expected to eq "Group information"6137 when group is a child group6138 is expected to eq "Subgroup information"6139 #sprite_icon6140 when group is a root group6141 is expected to eq "group"6142 when group is a child group6143 is expected to eq "subgroup"6144 Menu Items6145 Activity6146 is expected not to be nil6147 behaves like menu access rights6148 is expected not to be nil6149 when the user does not have access6150 is expected to be nil6151 Labels6152 behaves like menu access rights6153 is expected not to be nil6154 when the user does not have access6155 is expected to be nil6156 Members6157 behaves like menu access rights6158 is expected not to be nil6159 when the user does not have access6160 is expected to be nil6161Ci::GroupVariablePresenter6162 inherits from Gitlab::View::Presenter::Delegated6163 #initialize6164 takes a variable and optional params6165 exposes variable6166 forwards missing methods to variable6167 #placeholder6168 is expected to eq "GROUP_VARIABLE"6169 #form_path6170 is expected to eq "/groups/group216/-/settings/ci_cd"6171 #edit_path6172 is expected to eq "/groups/group217/-/variables"6173 #delete_path6174 is expected to eq "/groups/group218/-/variables"6175ExportedProtectedBranch6176 Associations6177 is expected to have many push_access_levels6178 .push_access_levels6179 returns the correct push access levels6180BatchDestroyDependentAssociations6181 #dependent_associations_to_destroy6182 returns the right associations6183 #destroy_dependent_associations_in_batches6184 destroys multiple notes6185 destroys note in batches6186 excludes associations6187WorkerContext6188 .worker_context6189 allows modifying the context for the entire worker6190 allows fetches the context from a superclass if none was defined6191 .bulk_perform_async_with_contexts6192 calls bulk_perform_async with the arguments6193 behaves like tracking bulk scheduling contexts6194 clears the contexts6195 context contents6196 keeps track of the context per key to schedule6197 does not share contexts across threads6198 .bulk_perform_in_with_contexts6199 calls bulk_perform_in with the arguments and delay6200 behaves like tracking bulk scheduling contexts6201 clears the contexts6202 context contents6203 keeps track of the context per key to schedule6204 does not share contexts across threads6205 #with_context6206 allows modifying context when the job is running6207 yields the arguments to the block6208Gitlab::Database::PostgresqlAdapter::TypeMapCache6209 #initialize_type_map6210 caches loading of types in memory6211 only reuses the cache if the connection parameters are exactly the same6212 #reload_type_map6213 clears the cache and executes the type map query again6214Packages::Rubygems::ProcessGemService6215 #execute6216 no gem file6217 returns an error6218 success6219 returns successfully6220 updates the package name and version6221 updates the package file name6222 when the package already exists6223 assigns the package_file to the existing package and deletes the temporary package6224 when the package already exists marked as pending_destruction6225 reuses the processing package6226 sub-service failure6227 returns an error6228 bad gem file6229 returns an error6230 without obtaining an exclusive lease6231 does not perform the services6232Gitlab::JiraImport::Stage::ImportLabelsWorker6233 modules6234 behaves like include import workers modules6235 is expected to includes the ApplicationWorker module6236 is expected to includes the Gitlab::JiraImport::QueueOptions module6237 is expected to includes the Gitlab::JiraImport::ImportWorker module6238 #perform6239 when import did not start6240 behaves like cannot do Jira import6241 does not advance to next stage6242 behaves like does not advance to next stage6243 does not advance to next stage6244 when import started6245 executes labels importer6246 behaves like advance to next stage6247 advances to issues stage6248API::Helpers::PaginationStrategies6249 #paginate_with_strategies6250 yields paginated relation6251 calls #finalize with first value returned from block6252 returns whatever the block returns6253 with paginator_params6254 correctly passes multiple parameters6255 #paginator6256 offset pagination6257 when keyset pagination is available and enforced for the relation6258 when a request scope is given6259 when the scope limit is exceeded6260 renders a 405 error6261 when keyset pagination is not enforced6262 returns no errors6263 when the scope limit is not exceeded6264 delegates to OffsetPagination6265 when a request scope is not given6266 when the default limits are exceeded6267 renders a 405 error6268 when the default limits are not exceeded6269 delegates to OffsetPagination6270 when keyset pagination is not available for the relation6271 delegates to OffsetPagination6272 for keyset pagination6273 when keyset pagination is available6274 delegates to Pager6275 when keyset pagination is not available6276 renders a 501 error6277Types::Packages::PackageDetailsType6278 is expected to eq "Represents a package details in the Package Registry"6279 is expected to require graphql authorizations :read_package6280 includes all the package fields6281DesignManagement::CopyDesignCollection::QueueService6282 returns an error if user does not have permission6283 when user has permission6284 returns an error if design collection copy_state is not queuable6285 sets the design collection copy state6286 queues a DesignManagement::CopyDesignCollectionWorker6287 returns success6288DependencyProxy::FindCachedManifestService6289 #execute6290 when no manifest exists6291 successful head request6292 behaves like returning no manifest6293 returns a nil manifest6294 failed head request6295 behaves like returning no manifest6296 returns a nil manifest6297 when manifest exists6298 behaves like using the cached manifest6299 uses cached manifest instead of downloading one6300 when digest is stale6301 behaves like returning no manifest6302 returns a nil manifest6303 when the cached manifest is pending destruction6304 behaves like returning no manifest6305 returns a nil manifest6306 when the connection fails6307 behaves like using the cached manifest6308 uses cached manifest instead of downloading one6309 and no manifest is cached6310 behaves like returning an error6311 returns an error6312 when the connection is successful but with error in result6313 behaves like using the cached manifest6314 uses cached manifest instead of downloading one6315 and no manifest is cached6316 behaves like returning no manifest6317 returns a nil manifest6318Gitlab::ImportExport::Json::NdjsonReader6319 #exist?6320 given valid dir_path6321 is expected to equal true6322 given invalid dir_path6323 is expected to equal false6324 #consume_attributes6325 returns the whole root tree from parsed JSON6326 when project.json is symlink6327 raises error an error6328 #consume_relation6329 given any key6330 returns an Enumerator6331 key has been consumed6332 yields nothing to the Enumerator6333 with mark_as_consumed: false6334 yields every relation value to the Enumerator6335 key has not been consumed6336 relation file does not exist6337 yields nothing to the Enumerator6338 when relation file is a symlink6339 yields nothing to the Enumerator6340 relation file is empty6341 yields nothing to the Enumerator6342 relation file contains multiple lines6343 yields every relation value to the Enumerator6344Types::Ci::JobNeedUnion6345 .resolve_type6346 when resolving a build need6347 resolves to a BuildNeedType6348 when resolving a build6349 resolves to a JobType6350 when resolving an unrelated object6351 raises a TypeNotSupportedError for string object6352 raises a TypeNotSupportedError for nil object6353 raises a TypeNotSupportedError for other CI object6354Users::LastPushEventService6355 #cache_last_push_event6356 caches the event for the event's project and current user6357 caches the event for the origin project when pushing to a fork6358 #last_event_for_user6359 returns the last push event for the current user6360 returns nil when no push event could be found6361 #last_event_for_project6362 returns the last push event for the given project6363 returns nil when no push event could be found6364 #find_cached_event6365 with a non-existing cache key6366 returns nil6367 with an existing cache key6368 returns a PushEvent when no merge requests exist for the event6369 removes the cache key when no event could be found and returns nil6370Gitlab::Pagination::Keyset::InOperatorOptimization::OrderByColumns6371 #array_aggregated_column_names6372 is expected to eq ["issues_relative_position_array", "issues_id_array"]6373 #original_column_names6374 is expected to eq ["relative_position", "id"]6375 #cursor_values6376 returns the keyset pagination cursor values from the column arrays as SQL expression6377SystemCheck::Orphans::RepositoryCheck6378 #multi_check6379 all orphans6380 prints list of all orphaned namespaces except @hashed6381 few orphans with existing namespace6382 prints list of orphaned namespaces6383 few orphans with existing namespace and parents with same name as orphans6384 prints list of orphaned namespaces ignoring parents with same namespace as orphans6385 no orphans6386 prints an empty list ignoring @hashed6387Preloaders::GroupPolicyPreloader6388 avoids N+1 queries when authorizing a list of groups6389BaseCountService6390 #relation_for_count6391 raises NotImplementedError6392 #count6393 returns the number of values6394 #uncached_count6395 returns the uncached number of values6396 #refresh_cache6397 refreshes the cache6398 #delete_cache6399 deletes the cache6400 #raw?6401 returns false6402 #cache_key6403 raises NotImplementedError6404 #cache_options6405 returns the default in options6406RuboCop::Cop::Database::RescueQueryCanceled6407 # order random6408 does not flag a different exception6409 flags the use of ActiveRecord::QueryCanceled6410Gitlab::GithubImport::Representation::Collaborator6411 # order random6412 .from_json_hash6413 behaves like a Collaborator6414 returns an instance of Collaborator6415 with Collaborator6416 includes the user ID6417 includes the username6418 includes the role6419 #github_identifiers6420 returns a hash with needed identifiers6421 .from_api_response6422 behaves like a Collaborator6423 returns an instance of Collaborator6424 with Collaborator6425 includes the user ID6426 includes the username6427 includes the role6428 #github_identifiers6429 returns a hash with needed identifiers6430Sidebars::UserSettings::Menus::AccessTokensMenu6431 # order random6432 #render?6433 when personal access tokens are disabled6434 when user is logged in6435 does not render6436 when user is not logged in6437 does not render6438 when personal access tokens are enabled6439 when user is logged in6440 renders6441 when user is not logged in6442 does not render6443 behaves like User settings menu6444 does not contain any sub menu6445 renders the correct link6446 renders the correct title6447 renders the correct icon6448 defines correct active route6449projects/branches/index.html.haml6450 renders list of active and stale branches6451 when Gitaly is unavailable6452 renders an error6453GoogleCloud::FetchGoogleIpListWorker6454 # order random6455 #perform6456 returns success6457Packages::Composer::PackagesPresenter6458 #package_versions6459 returns the packages json6460 #provider6461 returns the provider json6462 #root6463 returns the provider json6464 with a client version 26465 returns the provider json6466RuboCop::Cop::Migration::PreventIndexCreation6467 # order random6468 when outside of migration6469 does not register an offense6470 when in migration6471 when adding an index to a forbidden table6472 when table_name is a symbol6473 registers an offense when add_index is used6474 registers an offense when add_concurrent_index is used6475 when table_name is a string6476 registers an offense when add_index is used6477 registers an offense when add_concurrent_index is used6478 when table_name is a constant6479 registers an offense when add_concurrent_index is used6480 when adding an index to a regular table6481 does not register an offense6482 when using a constant6483 does not register an offense6484BulkImports::Common::Pipelines::BoardsPipeline6485 when issue board belongs to a project6486 #run6487 imports issue boards into destination project6488 when issue board belongs to a group6489 #run6490 imports issue boards into destination group6491RspecFlaky::Listener6492 #initialize6493 when no report file exists6494 behaves like a valid Listener instance6495 returns a valid Listener instance6496 when FLAKY_RSPEC_SUITE_REPORT_PATH is set6497 and report file exists6498 delegates the load to RspecFlaky::Report6499 and report file does not exist6500 return an empty hash6501 #example_passed6502 when the RSpec example does not respond to attempts6503 behaves like a non-flaky example6504 does not change the flaky examples hash6505 when the RSpec example has 1 attempt6506 behaves like a non-flaky example6507 does not change the flaky examples hash6508 when the RSpec example has 2 attempts6509 behaves like a new flaky example6510 changes the all flaky examples hash6511 with an existing flaky example6512 behaves like an existing flaky example6513 changes the flaky examples hash6514 #dump_summary6515 when a report file path is set by FLAKY_RSPEC_REPORT_PATH6516 delegates the writes to RspecFlaky::Report6517Admin::BackgroundMigrationsHelper6518 #batched_migration_status_badge_variant6519 status_name: :active, variant: :info6520 is expected to eq :info6521 status_name: :paused, variant: :warning6522 is expected to eq :warning6523 status_name: :failed, variant: :danger6524 is expected to eq :danger6525 status_name: :finished, variant: :success6526 is expected to eq :success6527 #batched_migration_progress6528 returns completion percentage6529 when migration is finished6530 returns 100 percent6531 when total_tuple_count is nil6532 returns nil6533 when there are no completed rows6534 returns 0 percent6535 when completed rows are greater than total count6536 returns 99 percent6537global_id6538 prepends `Gitlab::Patch::GlobalId`6539 patches GlobalID to find aliased models when a deprecation exists6540 works as normal when no deprecation exists6541TimeHelper6542 #time_interval_in_words6543 returns minutes and seconds6544 #duration_in_numbers6545 duration: 0, formatted_string: "00:00"6546 is expected to eq "00:00"6547 duration: 1 second, formatted_string: "00:01"6548 is expected to eq "00:01"6549 duration: 42 seconds, formatted_string: "00:42"6550 is expected to eq "00:42"6551 duration: 2 minutes and 1 second, formatted_string: "02:01"6552 is expected to eq "02:01"6553 duration: 3 hours, 2 minutes, and 1 second, formatted_string: "03:02:01"6554 is expected to eq "03:02:01"6555 duration: 30 hours, formatted_string: "30:00:00"6556 is expected to eq "30:00:00"6557 #time_in_milliseconds6558 returns the time in milliseconds6559Mutations::CustomerRelations::Organizations::Update6560 is expected to require graphql authorizations :admin_crm_organization6561 #resolve6562 when the user does not have permission to update an crm_organization6563 raises an error6564 when the crm_organization does not exist6565 raises an error6566 when the user has permission to update an crm_organization6567 updates the crm_organization with correct values6568 when the feature is disabled6569 raises an error6570Quality::Seeders::Issues6571 #seed6572. seeds issues6573Packages::Nuget::CreateDependencyService6574 #execute6575 behaves like creating dependencies, links and nuget metadata for6576 creates dependencies, links and nuget metadata6577 with existing dependencies6578 behaves like creating dependencies, links and nuget metadata for6579 creates dependencies, links and nuget metadata6580 with dependencies with no target framework6581 behaves like creating dependencies, links and nuget metadata for6582 creates dependencies, links and nuget metadata6583 with empty dependencies6584 is a no op6585Clusters::Agents::Authorizations::CiAccess::ImplicitAuthorization6586 # order random6587 is expected to eq #<Project id:689 namespace699/project-713>>6588 is expected to eq #<Clusters::Agent id: 9, created_at: "2023-06-02 06:48:51.789878301 +0000", updated_at: "2023-06-02 0...8301 +0000", project_id: 689, name: "agent-9", created_by_user_id: 1780, has_vulnerabilities: false>6589 is expected to eq {}6590 is expected to eq 96591Onboarding::ProgressService6592 # order random6593 .async6594 when not onboarded6595 does not schedule a worker6596 when onboarded6597 when action is already completed6598 does not schedule a worker6599 when action is not yet completed6600 schedules a worker6601 #execute6602 when the namespace is a root6603 registers a namespace onboarding progress action for the given namespace6604 when the namespace is not the root6605 does not register a namespace onboarding progress action6606 when no namespace is passed6607 does not register a namespace onboarding progress action6608GoogleCloud::CreateServiceAccountsService6609 #execute6610 creates unprotected vars6611 creates protected vars6612FeatureFlags::HookService6613 #execute_hooks6614 calls feature_flag.project.execute_hooks6615 HOOK_NAME6616 is expected to eq :feature_flag_hooks6617RuboCop::Cop::Performance::ActiveRecordSubtransactions6618 # order random6619 when calling #transaction with only requires_new: true6620 registers an offense6621 when calling #transaction with no arguments6622 does not register an offense6623 when passing multiple arguments to #transaction, including requires_new: true6624 registers an offense6625 when calling #transaction with other options6626 does not register an offense6627 when calling #transaction with requires_new: false6628 does not register an offense6629Ci::Runners::StaleMachinesCleanupCronWorker6630 # order random6631 #perform6632 behaves like an idempotent worker6633 is labeled as idempotent6634 performs multiple times sequentially without raising an exception6635 delegates to Ci::Runners::StaleMachinesCleanupService6636 cleans up stale runner managers6637ProjectAccessTokenEntity6638 when bot is a member of the project6639 has the correct attributes6640 when bot is unrelated to the project6641 has the correct attributes6642Evidences::ReleaseEntity6643 exposes the expected fields6644 when the release has milestones6645 exposes these milestones6646 when the release has no milestone6647 exposes an empty array for milestones6648FeatureFlagSummaryEntity6649 has summary information6650Types::IncidentManagement::EscalationStatusEnum6651 # order random6652 is expected to eq "IssueEscalationStatus"6653 statuses6654 status_name: "TRIGGERED", status_value: :triggered6655 exposes a status with the correct value6656 status_name: "ACKNOWLEDGED", status_value: :acknowledged6657 exposes a status with the correct value6658 status_name: "RESOLVED", status_value: :resolved6659 exposes a status with the correct value6660 status_name: "IGNORED", status_value: :ignored6661 exposes a status with the correct value6662 status_name: "INVALID", status_value: nil6663 exposes a status with the correct value6664SafelyChangeColumnDefault6665 # order random6666 forces the column to be written on a change6667 prevents writing new default in place of the old default6668 does not write the column without a change6669 does not send the old column value if the default has changed6670ExportCsv::BaseService6671 # order random6672 #associations_to_preload6673 return []6674 #email6675 raises NotImplementedError6676 #header_to_value_hash6677 raises NotImplementedError6678Gitlab::Composer::VersionIndex6679 #as_json6680 returns the packages json6681 with an unordered list of packages6682 returns the packages sorted by version6683 #sha6684 returns the json SHA6685Gitlab::ConfigChecker::ExternalDatabaseChecker6686 #check6687 with a single database6688 when database meets minimum supported version6689 is expected to be empty6690 when database does not meet minimum supported version6691 reports deprecated database notice6692 with a multiple database6693 when both databases meets minimum supported version6694 example at ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:55 (PENDING: Skipping because none of the extra databases [:ci] are setup)6695 when the one of the databases does not meet minimum supported version6696 reports deprecated database notice if the main database is using an old version (PENDING: Skipping because none of the extra databases [:ci] are setup)6697 reports deprecated database notice if the ci database is using an old version (PENDING: Skipping because none of the extra databases [:ci] are setup)6698 when both databases do not meet minimum supported version6699 reports deprecated database notice (PENDING: Skipping because none of the extra databases [:ci] are setup)6700Sidebars::Projects::Menus::SecurityComplianceMenu6701 render?6702 when user is not authenticated6703 is expected to be falsey6704 when user is authenticated6705 when the Security and Compliance is disabled6706 is expected to be falsey6707 when the Security and Compliance is not disabled6708 is expected to be truthy6709Gitlab::Ci::Build::Rules::Rule::Clause6710 .fabricate6711 when type is valid6712 type: "changes", result: Gitlab::Ci::Build::Rules::Rule::Clause::Changes6713 is expected to be an instance of Gitlab::Ci::Build::Rules::Rule::Clause::Changes6714 type: "exists", result: Gitlab::Ci::Build::Rules::Rule::Clause::Exists6715 is expected to be an instance of Gitlab::Ci::Build::Rules::Rule::Clause::Exists6716 type: "if", result: Gitlab::Ci::Build::Rules::Rule::Clause::If6717 is expected to be an instance of Gitlab::Ci::Build::Rules::Rule::Clause::If6718 when type is invalid6719 is expected to be nil6720 when type is 'variables'6721 is expected to be nil6722Gitlab::Ci::Interpolation::Block6723 # order random6724 knows its content6725 properly evaluates the access pattern6726 .match6727 matches each block in a string6728 matches an empty block6729Gitlab::Ci::Pipeline::Chain::Metrics6730 # order random6731 does not break the chain6732 without pipeline name6733 does not create snowplow event6734 with pipeline name6735 creates snowplow event6736profiles/notifications/show6737 when there is no database value for User#notification_email6738 displays the correct elements6739 when there is a database value for User#notification_email6740 displays the correct elements6741ActionMailer hooks6742 smime signature interceptor6743 is disabled by default6744 interceptor testbed6745 email_enabled: false, email_smime_enabled: false, smime_interceptor_enabled: false6746 is enabled depending on settings6747 email_enabled: false, email_smime_enabled: true, smime_interceptor_enabled: false6748 is enabled depending on settings6749 email_enabled: true, email_smime_enabled: false, smime_interceptor_enabled: false6750 is enabled depending on settings6751 email_enabled: true, email_smime_enabled: true, smime_interceptor_enabled: true6752 is enabled depending on settings6753Gitlab::Email::Message::InProductMarketing::Helper6754 unsubscribe_message6755 for SaaS6756 format is HTML6757 returns the correct HTML6758 format is text6759 returns the correct string6760 self-managed6761 format is HTML6762 returns the correct HTML6763 format is text6764 returns the correct string6765Gitlab::View::Presenter::Simple6766 includes Gitlab::View::Presenter::Base6767 #initialize6768 takes arbitrary key/values and exposes them6769 override the presentee attributes6770 delegation6771 does not forward missing methods to subject6772Gitlab::GithubImport::PullRequests::ImportReviewWorker6773 # order random6774 is expected to includes the Gitlab::GithubImport::ObjectImporter module6775 #representation_class6776 is expected to eq Gitlab::GithubImport::Representation::PullRequestReview6777 #importer_class6778 is expected to eq Gitlab::GithubImport::Importer::PullRequests::ReviewImporter6779 #object_type6780 is expected to eq :pull_request_review6781BulkImports::Projects::Stage6782 #pipelines6783 list all the pipelines6784 only have pipelines with valid keys6785 only has pipelines with valid versions6786 when stages are out of order in the config hash6787 list all the pipelines ordered by stage6788RuboCop::Cop::Graphql::EnumValues6789 # order random6790 adds an offense when enum value is not uppercase6791 when values are set dynamically6792 adds an offense when enum value is set without `:upcase`6793 adds no offense when enum value is deprecated6794 adds no offense when enum value is uppercased literally6795 adds no offense when enum value is calling upcased6796Gitlab::GithubGistsImport::Importer::GistsImporter6797 # order random6798 #execute6799 when success6800 spread parallel import6801 when failure6802 returns an error6803 when rate limit reached6804 returns an error6805JSONWebToken::Token6806 custom parameters6807 is expected to eq "value"6808 is expected to include {:key => "value"}6809 embeds default payload6810 is expected to include {:jti => "14c4ddf2-c0fa-4676-8b9c-726bcb801ef1", :iat => 1685688547, :nbf => 1685688542, :exp => 1685688607}6811RuboCop::Cop::Migration::PreventGlobalEnableLockRetriesWithDisableDdlTransaction6812 # order random6813 when outside of migration6814 registers no offense6815 when in migration6816 registers an offense when `enable_lock_retries` and `disable_ddl_transaction` is used together6817 registers no offense when `enable_lock_retries!` is used6818 registers no offense when `disable_ddl_transaction!` is used6819Types::WorkItems::Widgets::HierarchyUpdateInputType6820 is expected to eq "WorkItemWidgetHierarchyUpdateInput"6821 accepts documented arguments6822 sets the type of relative_position argument to RelativePositionTypeEnum6823Tooling::Helpers::PredictiveTestsHelper6824 # order random6825 #folders_for_available_editions6826 when FOSS6827 returns the correct paths6828 when EE6829 returns the correct paths6830 when JiHu6831 returns the correct paths6832Types::DescriptionVersionType6833 # order random6834 is expected to have graphql field :id6835 is expected to require graphql authorizations :read_issuable6836 is expected to have graphql field :description6837Gitlab::ImportExport::HashUtil6838 .deep_symbolize_array!6839 symbolizes keys6840 .deep_symbolize_array_with_date!6841 symbolizes keys6842 transforms date strings into Time objects6843Types::ContainerExpirationPolicyCadenceEnum6844 behaves like exposing container expiration policy option6845 exposes all options6846 uses all possible options from model6847Presentable6848 #present6849 returns a presenter6850 takes optional attributes6851Types::Achievements::UserAchievementType6852 # order random6853 is expected to require graphql authorizations :read_user_achievement6854 is expected to have graphql fields "id", "achievement", "user", "awarded_by_user", "revoked_by_user", "created_at", "updated_at", and "revoked_at"6855 is expected to eq "UserAchievement"6856Gitlab::Pagination::OffsetHeaderBuilder6857 #execute6858 sets headers to request context6859 exclude total headers6860 does not set total headers to request context6861 pass data without counts6862 does not set total headers to request context6863Gitlab::Database::GitlabSchemaInfo6864 # order random6865 .load_file6866 does load YAML file and has file_path specified6867 .new6868 does ensure that name is always symbol6869 does raise error when using invalid argument6870Import metrics on production seed6871 imports all prometheus metrics6872BulkImports::Projects::Graphql::GetProjectQuery6873 has a valid query6874 queries project based on source_full_path6875Web IDE routing6876 # order random6877 remote6878 routes to #index, without remote_path6879 routes to #index, with remote_path6880ServicePing::PermitDataCategories6881 #execute6882 when usage ping setting is set to true6883 returns all categories6884 when usage ping setting is set to false6885 returns all categories6886RemoteMirrorEntity6887 exposes remote-mirror-specific elements6888 does not expose password information6889SystemCheck6890 .run6891 detects execution of SimpleCheck6892 detects exclusion of OtherCheck in execution6893Gitlab::SidekiqStatus::ClientMiddleware6894 #call6895 when the job has status_expiration set6896 tracks the job in Redis6897 when the job does not have status_expiration set6898 does not track the job in Redis6899API::Entities::Ci::JobRequest::Service6900 exposes attributes6901 when the ports param is nil6902 does not return the ports6903Types::IssueTypeEnum6904 is expected to eq "IssueType"6905 exposes all the existing issue type values except key_result6906Gitlab::Database::BackgroundMigration::BatchMetrics6907 #time_operation6908 tracks the duration of the operation using monotonic time6909 #instrument_operation6910 tracks duration and affected rows6911Types::Ci::Config::GroupType6912 is expected to eq "CiConfigGroup"6913 exposes the expected fields6914Gitlab::GrapeLogging::Loggers::QueueDurationLogger6915 .parameters6916 when no proxy duration is available6917 returns an empty hash6918 when a proxy duration is available6919 adds the duration to log parameters6920ActsAsTaggableOn::Tagging6921 has the same connection as Ci::ApplicationRecord6922 has the same sticking as Ci::ApplicationRecord6923notify/new_achievement_email.html.haml6924 # order random6925 contains achievement information6926Types::Packages::PackageDependencyLinkType6927 includes package file fields6928TaggableQueries6929 keeps MAX_TAGS_IDS in sync with TAGS_LIMIT6930Gitlab::Diff::InlineDiffMarkdownMarker6931 #mark6932 does not escape html etities and marks the range6933API::Entities::ProjectImportFailedRelation6934 #as_json6935 includes basic fields6936Projects::Security::ConfigurationController routing6937 routes to #show6938DiscussionNote6939 #to_ability_name6940 is expected to eq "note"6941Types::PermissionTypes::Deployment6942 # order random6943 is expected to include graphql fields :update_deployment and :destroy_deployment6944GitlabPerformanceBarStatsWorker6945 #perform6946 fetches list of request ids and processes them6947Gitlab::Usage::Metrics::Instrumentations::CollectedDataCategoriesMetric6948 behaves like a correct instrumented metric value6949 has correct value6950Gitlab::Usage::Metrics::Instrumentations::ServiceDeskEmailEncryptedSecretsEnabledMetric6951 # order random6952 behaves like a correct instrumented metric value6953 has correct value6954Knapsack report was generated. Preview:6955{6956 "spec/services/notification_service_spec.rb": 758.278925699,6957 "spec/models/gpg_key_spec.rb": 19.92800010999781,6958 "spec/services/ci/update_build_queue_service_spec.rb": 32.21990036900024,6959 "spec/lib/gitlab/ci/status/bridge/factory_spec.rb": 31.727841646999877,6960 "spec/models/project_statistics_spec.rb": 26.08831967900187,6961 "spec/models/members/group_member_spec.rb": 24.720969984002295,6962 "spec/lib/gitlab/database/tables_truncate_spec.rb": 1.4050037839988363,6963 "spec/metrics_server/metrics_server_spec.rb": 12.504527555000095,6964 "spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb": 5.171787437000603,6965 "spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb": 19.70676395600094,6966 "spec/graphql/mutations/merge_requests/set_milestone_spec.rb": 18.809514155000215,6967 "spec/lib/gitlab/database/batch_average_counter_spec.rb": 20.932192101998226,6968 "spec/models/resource_state_event_spec.rb": 15.992382931002794,6969 "spec/lib/gitlab/database/batch_count_spec.rb": 9.081810446001327,6970 "spec/services/bulk_imports/create_service_spec.rb": 15.80338616500012,6971 "spec/lib/gitlab/database/migration_helpers/v2_spec.rb": 5.4076075720004155,6972 "spec/lib/gitlab/data_builder/issuable_spec.rb": 13.524018775999139,6973 "spec/services/design_management/save_designs_service_spec.rb": 12.120130962000985,6974 "spec/lib/gitlab/git/diff_spec.rb": 3.9247188299996196,6975 "spec/models/concerns/project_api_compatibility_spec.rb": 10.46093331099837,6976 "spec/workers/merge_request_cleanup_refs_worker_spec.rb": 14.644549086002371,6977 "spec/models/personal_access_token_spec.rb": 7.822596067999257,6978 "spec/lib/gitlab/ci/config/external/mapper/verifier_spec.rb": 12.64940770099929,6979 "spec/models/service_desk_setting_spec.rb": 10.795133995001379,6980 "spec/services/notification_recipients/build_service_spec.rb": 10.201244296000368,6981 "spec/lib/gitlab/utils/sanitize_node_link_spec.rb": 2.561231924002641,6982 "spec/lib/gitlab/email/receiver_spec.rb": 2.3493229580017214,6983 "spec/lib/gitlab/redis/trace_chunks_spec.rb": 1.9452778349987057,6984 "spec/lib/gitlab/i18n/po_linter_spec.rb": 1.8513760770001682,6985 "spec/lib/gitlab/template/merge_request_template_spec.rb": 7.892681356999674,6986 "spec/lib/gitlab/ci/config/entry/default_spec.rb": 1.7881489680003142,6987 "spec/lib/gitlab/auth/ldap/user_spec.rb": 4.2350796239988995,6988 "spec/models/external_pull_request_spec.rb": 6.067179320001742,6989 "spec/services/container_expiration_policies/update_service_spec.rb": 4.688881905000017,6990 "spec/services/groups/update_shared_runners_service_spec.rb": 6.23187551799856,6991 "spec/lib/banzai/filter/references/alert_reference_filter_spec.rb": 4.096210796000378,6992 "spec/services/packages/maven/metadata/sync_service_spec.rb": 4.986388200002693,6993 "spec/lib/gitlab/template/issue_template_spec.rb": 7.692337772998144,6994 "spec/lib/gitlab/tracking_spec.rb": 2.4960487030002696,6995 "spec/helpers/projects/pages_helper_spec.rb": 4.695163732001674,6996 "spec/models/ci/build_trace_chunks/redis_spec.rb": 7.015396848000819,6997 "spec/services/metrics/dashboard/clone_dashboard_service_spec.rb": 3.759569655001542,6998 "spec/models/issue/metrics_spec.rb": 6.7450756520011055,6999 "spec/lib/banzai/filter/autolink_filter_spec.rb": 1.4300331490012468,7000 "spec/lib/gitlab/ci/trace/chunked_io_spec.rb": 5.37350558199978,7001 "spec/graphql/resolvers/group_packages_resolver_spec.rb": 3.1123227850002877,7002 "spec/graphql/mutations/issues/set_escalation_status_spec.rb": 4.255359288999898,7003 "spec/services/merge_requests/merge_orchestration_service_spec.rb": 5.5309731400011515,7004 "spec/initializers/enumerator_next_patch_spec.rb": 1.2856569809991925,7005 "spec/services/ci/create_pipeline_service/logger_spec.rb": 4.529914923998149,7006 "spec/finders/ci/jobs_finder_spec.rb": 3.2030668429979414,7007 "spec/models/service_desk/custom_email_credential_spec.rb": 1.5404195180017268,7008 "spec/lib/gitlab/analytics/cycle_analytics/request_params_spec.rb": 3.78784819500288,7009 "spec/policies/award_emoji_policy_spec.rb": 6.506457445000706,7010 "spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb": 1.6310673260013573,7011 "spec/lib/bulk_imports/projects/transformers/project_attributes_transformer_spec.rb": 4.562853063998773,7012 "spec/graphql/resolvers/projects_resolver_spec.rb": 3.677876675999869,7013 "spec/graphql/resolvers/crm/organizations_resolver_spec.rb": 1.874229273002129,7014 "spec/presenters/snippet_blob_presenter_spec.rb": 4.201876888997504,7015 "spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb": 1.1730489729998226,7016 "spec/services/packages/debian/process_changes_service_spec.rb": 5.57163891899836,7017 "spec/models/concerns/ci/partitionable/switch_spec.rb": 2.014478211000096,7018 "spec/policies/protected_branch_policy_spec.rb": 4.981993346998934,7019 "spec/workers/delete_diff_files_worker_spec.rb": 5.78952205600217,7020 "spec/components/pajamas/alert_component_spec.rb": 1.2670504820016504,7021 "spec/lib/gitlab/ci/config/entry/prefix_spec.rb": 0.9481329660011397,7022 "spec/lib/gitlab/tracking/incident_management_spec.rb": 0.5598019319986633,7023 "spec/lib/gitlab/encrypted_configuration_spec.rb": 1.423270508999849,7024 "spec/services/ci/expire_pipeline_cache_service_spec.rb": 4.615565602998686,7025 "spec/lib/gitlab/database/query_analyzer_spec.rb": 0.8249260180018609,7026 "spec/serializers/fork_namespace_entity_spec.rb": 4.183660619000875,7027 "spec/services/markup/rendering_service_spec.rb": 4.3553702469980635,7028 "spec/lib/gitlab/ci/config/entry/product/parallel_spec.rb": 0.9508766559993092,7029 "spec/lib/gitlab/ci/trace/backoff_spec.rb": 0.7278731289989082,7030 "spec/models/clusters/agents/activity_event_spec.rb": 3.9695511829995667,7031 "spec/services/design_management/design_user_notes_count_service_spec.rb": 2.7861111289967084,7032 "spec/lib/gitlab/legacy_github_import/client_spec.rb": 1.0473530439994647,7033 "spec/scripts/changed-feature-flags_spec.rb": 0.6860268700002052,7034 "spec/lib/gitlab/inactive_projects_deletion_warning_tracker_spec.rb": 0.6353022399998736,7035 "spec/models/spam_log_spec.rb": 1.1754152630019234,7036 "spec/lib/gitlab/pages/deployment_update_spec.rb": 2.144120009001199,7037 "spec/lib/banzai/pipeline/plain_markdown_pipeline_spec.rb": 1.5661336170014692,7038 "spec/lib/gitlab/metrics/system_spec.rb": 0.9318838270010019,7039 "spec/lib/bulk_imports/groups/pipelines/subgroup_entities_pipeline_spec.rb": 1.0866115140015609,7040 "spec/lib/gitlab/rack_attack_spec.rb": 0.9237957160003134,7041 "spec/services/ci/build_cancel_service_spec.rb": 1.2256706219995976,7042 "spec/lib/gitlab/database/similarity_score_spec.rb": 0.4834973530014395,7043 "spec/services/metrics/dashboard/update_dashboard_service_spec.rb": 3.092591464999714,7044 "spec/services/web_hooks/log_execution_service_spec.rb": 1.7094563259997813,7045 "spec/services/ci/compare_test_reports_service_spec.rb": 5.213755763001245,7046 "spec/lib/gitlab/github_import/importer/notes_importer_spec.rb": 0.5331636829978379,7047 "spec/lib/gitlab/health_checks/db_check_spec.rb": 0.6897202990003279,7048 "spec/graphql/mutations/security/ci_configuration/configure_secret_detection_spec.rb": 2.287766936002299,7049 "spec/lib/gitlab/untrusted_regexp_spec.rb": 1.1636730729987903,7050 "spec/lib/gitlab/ci/config/normalizer/number_strategy_spec.rb": 0.6880169300020498,7051 "spec/services/access_token_validation_service_spec.rb": 0.5611803619976854,7052 "spec/models/ci/catalog/resource_spec.rb": 1.6324107559994445,7053 "spec/models/lfs_objects_project_spec.rb": 1.4812507389979146,7054 "spec/lib/gitlab/import_export/uploads_saver_spec.rb": 3.8480350940008066,7055 "spec/helpers/stat_anchors_helper_spec.rb": 0.5976952309974877,7056 "spec/lib/banzai/pipeline_spec.rb": 0.4480894740008807,7057 "spec/services/update_merge_request_metrics_service_spec.rb": 3.4151053099994897,7058 "spec/workers/gitlab/github_import/advance_stage_worker_spec.rb": 1.978561741001613,7059 "spec/graphql/resolvers/environments/last_deployment_resolver_spec.rb": 1.4800913479994051,7060 "spec/workers/projects/delete_branch_worker_spec.rb": 1.293398140998761,7061 "spec/lib/gitlab/database/load_balancing/host_list_spec.rb": 0.6287862919998588,7062 "spec/lib/gitlab/metrics/dashboard/importers/prometheus_metrics_spec.rb": 3.1437219550025475,7063 "spec/services/incident_management/pager_duty/process_webhook_service_spec.rb": 1.6384863660023257,7064 "spec/graphql/types/alert_management/prometheus_integration_type_spec.rb": 1.3672909699998854,7065 "spec/services/environments/create_service_spec.rb": 2.0144258409964095,7066 "spec/graphql/resolvers/environments/nested_environments_resolver_spec.rb": 1.2072809630008123,7067 "spec/lib/gitlab/health_checks/gitaly_check_spec.rb": 0.39762118399812607,7068 "spec/services/ci/append_build_trace_service_spec.rb": 1.3024461810018693,7069 "spec/services/boards/issues/create_service_spec.rb": 2.6395864719997917,7070 "spec/models/preloaders/merge_request_diff_preloader_spec.rb": 3.130891844000871,7071 "spec/services/x509_certificate_revoke_service_spec.rb": 1.7963194740004838,7072 "spec/rubocop/cop/gitlab/doc_url_spec.rb": 0.5714056520009763,7073 "spec/lib/gitlab/pagination/keyset/simple_order_builder_spec.rb": 0.8835301469989645,7074 "spec/lib/gitlab/database/schema_validation/adapters/column_database_adapter_spec.rb": 0.5964716510025028,7075 "spec/lib/peek/views/redis_detailed_spec.rb": 0.5033267030012212,7076 "spec/workers/gitlab/jira_import/import_issue_worker_spec.rb": 1.2259482019981078,7077 "spec/rubocop/cop/migration/schedule_async_spec.rb": 0.659103320002032,7078 "spec/lib/gitlab/template_parser/parser_spec.rb": 0.783436719000747,7079 "spec/lib/gitlab/usage/metrics/instrumentations/redis_metric_spec.rb": 0.5587993420012936,7080 "spec/lib/gitlab/usage_data_queries_spec.rb": 0.7752265480012284,7081 "spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb": 1.9304482219995407,7082 "spec/lib/gitlab/import_formatter_spec.rb": 0.39765680500204326,7083 "spec/lib/banzai/filter/footnote_filter_spec.rb": 0.4580724539991934,7084 "spec/rubocop/cop/migration/prevent_strings_spec.rb": 0.4583675829999265,7085 "spec/models/packages/composer/cache_file_spec.rb": 0.5602386720020149,7086 "spec/views/projects/empty.html.haml_spec.rb": 2.2722195470014412,7087 "spec/workers/bulk_imports/relation_batch_export_worker_spec.rb": 0.8808399369991093,7088 "spec/rubocop/cop/migration/background_migration_missing_active_concern_spec.rb": 0.4738234630021907,7089 "spec/lib/gitlab/uploads_transfer_spec.rb": 0.6481060309997702,7090 "spec/lib/sidebars/groups/menus/group_information_menu_spec.rb": 1.3982221000005666,7091 "spec/presenters/ci/group_variable_presenter_spec.rb": 1.3124806599989824,7092 "spec/models/exported_protected_branch_spec.rb": 0.8255416480023996,7093 "spec/models/concerns/batch_destroy_dependent_associations_spec.rb": 2.388820576001308,7094 "spec/workers/concerns/worker_context_spec.rb": 0.790456949001964,7095 "spec/lib/gitlab/database/postgresql_adapter/type_map_cache_spec.rb": 0.4653309130007983,7096 "spec/services/packages/rubygems/process_gem_service_spec.rb": 1.3212018910016923,7097 "spec/workers/gitlab/jira_import/stage/import_labels_worker_spec.rb": 1.4755769980001787,7098 "spec/lib/api/helpers/pagination_strategies_spec.rb": 0.9981939659992349,7099 "spec/graphql/types/packages/package_details_type_spec.rb": 0.35215006499856827,7100 "spec/services/design_management/copy_design_collection/queue_service_spec.rb": 1.3695602600018901,7101 "spec/services/dependency_proxy/find_cached_manifest_service_spec.rb": 1.0592958540000836,7102 "spec/lib/gitlab/import_export/json/ndjson_reader_spec.rb": 0.6533383109999704,7103 "spec/graphql/types/ci/job_need_union_spec.rb": 1.3269071299982897,7104 "spec/services/users/last_push_event_service_spec.rb": 0.6574979409997468,7105 "spec/lib/gitlab/pagination/keyset/in_operator_optimization/order_by_columns_spec.rb": 0.3121500659981393,7106 "spec/lib/system_check/orphans/repository_check_spec.rb": 1.1258940540028561,7107 "spec/models/preloaders/group_policy_preloader_spec.rb": 1.6392845860027592,7108 "spec/services/base_count_service_spec.rb": 0.560533812000358,7109 "spec/rubocop/cop/database/rescue_query_canceled_spec.rb": 0.3366659150015039,7110 "spec/lib/gitlab/github_import/representation/collaborator_spec.rb": 0.5689215219972539,7111 "spec/lib/sidebars/user_settings/menus/access_tokens_menu_spec.rb": 0.6079834910015052,7112 "spec/views/projects/branches/index.html.haml_spec.rb": 1.4416816089978965,7113 "spec/workers/google_cloud/fetch_google_ip_list_worker_spec.rb": 0.2839337159966817,7114 "spec/presenters/packages/composer/packages_presenter_spec.rb": 1.0181518649987993,7115 "spec/rubocop/cop/migration/prevent_index_creation_spec.rb": 0.55608833199949,7116 "spec/lib/bulk_imports/common/pipelines/boards_pipeline_spec.rb": 1.4295068889987306,7117 "spec/tooling/rspec_flaky/listener_spec.rb": 0.5042815429987968,7118 "spec/helpers/admin/background_migrations_helper_spec.rb": 0.6087479210000311,7119 "spec/initializers/global_id_spec.rb": 1.0092346150013327,7120 "spec/helpers/time_helper_spec.rb": 0.5028820629995607,7121 "spec/graphql/mutations/customer_relations/organizations/update_spec.rb": 0.9157798560008814,7122 "spec/lib/quality/seeders/issues_spec.rb": 0.9879181859978416,7123 "spec/services/packages/nuget/create_dependency_service_spec.rb": 0.837915037998755,7124 "spec/models/clusters/agents/authorizations/ci_access/implicit_authorization_spec.rb": 0.6738208700007817,7125 "spec/services/onboarding/progress_service_spec.rb": 0.9494595960022707,7126 "spec/services/google_cloud/create_service_accounts_service_spec.rb": 1.0571738250000635,7127 "spec/services/feature_flags/hook_service_spec.rb": 1.194857291997323,7128 "spec/rubocop/cop/performance/active_record_subtransactions_spec.rb": 0.4285719439976674,7129 "spec/workers/ci/runners/stale_machines_cleanup_cron_worker_spec.rb": 0.816177698001411,7130 "spec/serializers/project_access_token_entity_spec.rb": 0.9586127059992577,7131 "spec/serializers/evidences/release_entity_spec.rb": 0.6898878399988462,7132 "spec/serializers/feature_flag_summary_entity_spec.rb": 0.7912844090024009,7133 "spec/graphql/types/incident_management/escalation_status_enum_spec.rb": 0.4426053729985142,7134 "spec/models/concerns/safely_change_column_default_spec.rb": 0.4604975940019358,7135 "spec/services/export_csv/base_service_spec.rb": 0.7844011289998889,7136 "spec/lib/gitlab/composer/version_index_spec.rb": 0.870806947001256,7137 "spec/lib/gitlab/config_checker/external_database_checker_spec.rb": 0.46202603400161024,7138 "spec/lib/sidebars/projects/menus/security_compliance_menu_spec.rb": 0.6488169000003836,7139 "spec/lib/gitlab/ci/build/rules/rule/clause_spec.rb": 0.3972965649991238,7140 "spec/lib/gitlab/ci/interpolation/block_spec.rb": 0.3838106149996747,7141 "spec/lib/gitlab/ci/pipeline/chain/metrics_spec.rb": 0.7373183390009217,7142 "spec/views/profiles/notifications/show.html.haml_spec.rb": 0.586869012000534,7143 "spec/initializers/action_mailer_hooks_spec.rb": 0.41940130299917655,7144 "spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb": 0.36938344500231324,7145 "spec/lib/gitlab/view/presenter/simple_spec.rb": 0.3801635849995364,7146 "spec/workers/gitlab/github_import/pull_requests/import_review_worker_spec.rb": 0.3687791539996397,7147 "spec/lib/bulk_imports/projects/stage_spec.rb": 0.431828423999832,7148 "spec/rubocop/cop/graphql/enum_values_spec.rb": 0.4374624629999744,7149 "spec/lib/gitlab/github_gists_import/importer/gists_importer_spec.rb": 0.4190432939976745,7150 "spec/lib/json_web_token/token_spec.rb": 0.32823565500075347,7151 "spec/rubocop/cop/migration/prevent_global_enable_lock_retries_with_disable_ddl_transaction_spec.rb": 0.3859411049998016,7152 "spec/graphql/types/work_items/widgets/hierarchy_update_input_type_spec.rb": 0.335983724999096,7153 "spec/tooling/lib/tooling/helpers/predictive_tests_helper_spec.rb": 0.34221476500169956,7154 "spec/graphql/types/description_version_type_spec.rb": 0.33873954500086256,7155 "spec/lib/gitlab/import_export/hash_util_spec.rb": 0.3392394750007952,7156 "spec/graphql/types/container_expiration_policy_cadence_enum_spec.rb": 0.3164840160025051,7157 "spec/models/concerns/presentable_spec.rb": 0.3953702250000788,7158 "spec/graphql/types/achievements/user_achievement_type_spec.rb": 0.34105757499855827,7159 "spec/lib/gitlab/pagination/offset_header_builder_spec.rb": 0.34226824500001385,7160 "spec/lib/gitlab/database/gitlab_schema_info_spec.rb": 0.33211318499888876,7161 "spec/db/production/import_common_metrics_spec.rb": 0.477306762997614,7162 "spec/lib/bulk_imports/projects/graphql/get_project_query_spec.rb": 0.4145996839979489,7163 "spec/routing/web_ide_routing_spec.rb": 0.31714360499972827,7164 "spec/lib/service_ping/permit_data_categories_spec.rb": 0.32461917500040727,7165 "spec/serializers/remote_mirror_entity_spec.rb": 0.3494499350017577,7166 "spec/lib/system_check_spec.rb": 0.31709307500204886,7167 "spec/lib/gitlab/sidekiq_status/client_middleware_spec.rb": 0.31427879499824485,7168 "spec/lib/api/entities/ci/job_request/service_spec.rb": 0.29574186600075336,7169 "spec/graphql/types/issue_type_enum_spec.rb": 0.31119674499859684,7170 "spec/lib/gitlab/database/background_migration/batch_metrics_spec.rb": 0.3032198660002905,7171 "spec/graphql/types/ci/config/group_type_spec.rb": 0.2984125660004793,7172 "spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb": 0.2981056749995332,7173 "spec/models/acts_as_taggable_on/tagging_spec.rb": 0.2983371749978687,7174 "spec/views/notify/new_achievement_email.html.haml_spec.rb": 0.372029604997806,7175 "spec/graphql/types/packages/package_dependency_link_type_spec.rb": 0.2672520460000669,7176 "spec/models/concerns/taggable_queries_spec.rb": 0.26904596600070363,7177 "spec/lib/gitlab/diff/inline_diff_markdown_marker_spec.rb": 0.27524874600203475,7178 "spec/lib/api/entities/project_import_failed_relation_spec.rb": 0.32038621500032605,7179 "spec/routing/projects/security/configuration_controller_routing_spec.rb": 0.28485324600114836,7180 "spec/models/discussion_note_spec.rb": 0.2726084860005358,7181 "spec/graphql/types/permission_types/deployment_spec.rb": 0.26835037599812495,7182 "spec/workers/gitlab_performance_bar_stats_worker_spec.rb": 0.2860040060004394,7183 "spec/lib/gitlab/usage/metrics/instrumentations/collected_data_categories_metric_spec.rb": 0.3206235450015811,7184 "spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb": 0.268665865998627857185}7186Knapsack global time execution for tests: 23m 54s7187Pending: (Failures listed here are expected and do not affect your suite's status)7188 1) Gitlab::Database::TablesTruncate when truncating gitlab_main tables on the ci database behaves like truncating legacy tables on a database when the truncated tables are not locked for writes raises an error that the tables are not locked for writes7189 # Skipping because ci is shared or doesn't not exist7190 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:1667191 2) Gitlab::Database::TablesTruncate when truncating gitlab_main tables on the ci database behaves like truncating legacy tables on a database when the truncated tables are locked for writes truncates the legacy tables7192 # Skipping because ci is shared or doesn't not exist7193 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:1847194 3) Gitlab::Database::TablesTruncate when truncating gitlab_main tables on the ci database behaves like truncating legacy tables on a database when the truncated tables are locked for writes does not affect the other tables7195 # Skipping because ci is shared or doesn't not exist7196 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:1917197 4) Gitlab::Database::TablesTruncate when truncating gitlab_main tables on the ci database behaves like truncating legacy tables on a database when the truncated tables are locked for writes logs the sql statements to the logger7198 # Skipping because ci is shared or doesn't not exist7199 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:1977200 5) Gitlab::Database::TablesTruncate when truncating gitlab_main tables on the ci database behaves like truncating legacy tables on a database when the truncated tables are locked for writes when running in dry_run mode does not truncate the legacy tables if running in dry run mode7201 # Skipping because ci is shared or doesn't not exist7202 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2087203 6) Gitlab::Database::TablesTruncate when truncating gitlab_main tables on the ci database behaves like truncating legacy tables on a database when the truncated tables are locked for writes when passing until_table parameter with a table that exists only truncates until the table specified7204 # Skipping because ci is shared or doesn't not exist7205 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2207206 7) Gitlab::Database::TablesTruncate when truncating gitlab_main tables on the ci database behaves like truncating legacy tables on a database when the truncated tables are locked for writes when passing until_table parameter with a table that does not exist raises an error if the specified table does not exist7207 # Skipping because ci is shared or doesn't not exist7208 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2317209 8) Gitlab::Database::TablesTruncate when truncating gitlab_main tables on the ci database behaves like truncating legacy tables on a database when the truncated tables are locked for writes when one of the attached partitions happened to be locked for writes truncates the locked partition successfully7210 # Skipping because ci is shared or doesn't not exist7211 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2517212 9) Gitlab::Database::TablesTruncate when truncating gitlab_main tables on the ci database behaves like truncating legacy tables on a database when the truncated tables are locked for writes with geo configured does not truncate gitlab_geo tables7213 # Skipping because ci is shared or doesn't not exist7214 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2677215 10) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are not locked for writes raises an error that the tables are not locked for writes7216 # Skipping because ci is shared or doesn't not exist7217 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:1667218 11) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are locked for writes truncates the legacy tables7219 # Skipping because ci is shared or doesn't not exist7220 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:1847221 12) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are locked for writes does not affect the other tables7222 # Skipping because ci is shared or doesn't not exist7223 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:1917224 13) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are locked for writes logs the sql statements to the logger7225 # Skipping because ci is shared or doesn't not exist7226 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:1977227 14) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are locked for writes when running in dry_run mode does not truncate the legacy tables if running in dry run mode7228 # Skipping because ci is shared or doesn't not exist7229 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2087230 15) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are locked for writes when passing until_table parameter with a table that exists only truncates until the table specified7231 # Skipping because ci is shared or doesn't not exist7232 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2207233 16) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are locked for writes when passing until_table parameter with a table that does not exist raises an error if the specified table does not exist7234 # Skipping because ci is shared or doesn't not exist7235 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2317236 17) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are locked for writes when one of the attached partitions happened to be locked for writes truncates the locked partition successfully7237 # Skipping because ci is shared or doesn't not exist7238 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2517239 18) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are locked for writes with geo configured does not truncate gitlab_geo tables7240 # Skipping because ci is shared or doesn't not exist7241 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2677242 19) Gitlab::Database::TablesTruncate when running with multiple shared databases raises an error when truncating the main database that it is a single database setup7243 # Skipping because none of the extra databases [:ci] are setup7244 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:3197245 20) Gitlab::Database::TablesTruncate when running with multiple shared databases raises an error when truncating the ci database that it is a single database setup7246 # Skipping because none of the extra databases [:ci] are setup7247 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:3257248 21) Gitlab::Database::MigrationHelpers::V2#truncate_tables! with multiple databases for ci database skips the TRUNCATE statement tables not in schema for connection7249 # Skipping because ci is shared or doesn't not exist7250 # ./spec/lib/gitlab/database/migration_helpers/v2_spec.rb:4667251 22) Gitlab::Database::MigrationHelpers::V2#truncate_tables! with multiple databases for main database executes a TRUNCATE statement7252 # Skipping because ci is shared or doesn't not exist7253 # ./spec/lib/gitlab/database/migration_helpers/v2_spec.rb:4787254 23) DesignManagement::SaveDesignsService#execute when the feature is available scalability runs the same queries for all requests, regardless of number of files7256 # ./spec/services/design_management/save_designs_service_spec.rb:4117257 24) gitlab:db:truncate_legacy_tables when truncating main tables on the ci database behaves like truncating legacy tables when tables are not locked for writes raises an error when trying to truncate the tables7258 # Skipping because ci is shared or doesn't not exist7259 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:447260 25) gitlab:db:truncate_legacy_tables when truncating main tables on the ci database behaves like truncating legacy tables when tables are locked for writes calls TablesTruncate with the correct parameters and default minimum batch size7261 # Skipping because ci is shared or doesn't not exist7262 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:697263 26) gitlab:db:truncate_legacy_tables when truncating main tables on the ci database behaves like truncating legacy tables when tables are locked for writes truncates the legacy table7264 # Skipping because ci is shared or doesn't not exist7265 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:817266 27) gitlab:db:truncate_legacy_tables when truncating main tables on the ci database behaves like truncating legacy tables when tables are locked for writes does not truncate the table that belongs to the connection schema7267 # Skipping because ci is shared or doesn't not exist7268 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:877269 28) gitlab:db:truncate_legacy_tables when truncating main tables on the ci database behaves like truncating legacy tables when tables are locked for writes when running in dry_run mode does not truncate any tables7270 # Skipping because ci is shared or doesn't not exist7271 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:987272 29) gitlab:db:truncate_legacy_tables when truncating main tables on the ci database behaves like truncating legacy tables when tables are locked for writes when running in dry_run mode prints the truncation sql statement to the output7273 # Skipping because ci is shared or doesn't not exist7274 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:1047275 30) gitlab:db:truncate_legacy_tables when truncating main tables on the ci database behaves like truncating legacy tables when tables are locked for writes when passing until_table parameter via environment variable sends the table name to TablesTruncate7276 # Skipping because ci is shared or doesn't not exist7277 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:1167278 31) gitlab:db:truncate_legacy_tables when truncating ci tables on the main database behaves like truncating legacy tables when tables are not locked for writes raises an error when trying to truncate the tables7279 # Skipping because ci is shared or doesn't not exist7280 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:447281 32) gitlab:db:truncate_legacy_tables when truncating ci tables on the main database behaves like truncating legacy tables when tables are locked for writes calls TablesTruncate with the correct parameters and default minimum batch size7282 # Skipping because ci is shared or doesn't not exist7283 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:697284 33) gitlab:db:truncate_legacy_tables when truncating ci tables on the main database behaves like truncating legacy tables when tables are locked for writes truncates the legacy table7285 # Skipping because ci is shared or doesn't not exist7286 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:817287 34) gitlab:db:truncate_legacy_tables when truncating ci tables on the main database behaves like truncating legacy tables when tables are locked for writes does not truncate the table that belongs to the connection schema7288 # Skipping because ci is shared or doesn't not exist7289 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:877290 35) gitlab:db:truncate_legacy_tables when truncating ci tables on the main database behaves like truncating legacy tables when tables are locked for writes when running in dry_run mode does not truncate any tables7291 # Skipping because ci is shared or doesn't not exist7292 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:987293 36) gitlab:db:truncate_legacy_tables when truncating ci tables on the main database behaves like truncating legacy tables when tables are locked for writes when running in dry_run mode prints the truncation sql statement to the output7294 # Skipping because ci is shared or doesn't not exist7295 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:1047296 37) gitlab:db:truncate_legacy_tables when truncating ci tables on the main database behaves like truncating legacy tables when tables are locked for writes when passing until_table parameter via environment variable sends the table name to TablesTruncate7297 # Skipping because ci is shared or doesn't not exist7298 # ./spec/tasks/gitlab/db/truncate_legacy_tables_rake_spec.rb:1167299 38) Gitlab::ConfigChecker::ExternalDatabaseChecker#check with a multiple database when both databases meets minimum supported version 7300 # Skipping because none of the extra databases [:ci] are setup7301 # ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:557302 39) Gitlab::ConfigChecker::ExternalDatabaseChecker#check with a multiple database when the one of the databases does not meet minimum supported version reports deprecated database notice if the main database is using an old version7303 # Skipping because none of the extra databases [:ci] are setup7304 # ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:597305 40) Gitlab::ConfigChecker::ExternalDatabaseChecker#check with a multiple database when the one of the databases does not meet minimum supported version reports deprecated database notice if the ci database is using an old version7306 # Skipping because none of the extra databases [:ci] are setup7307 # ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:657308 41) Gitlab::ConfigChecker::ExternalDatabaseChecker#check with a multiple database when both databases do not meet minimum supported version reports deprecated database notice7309 # Skipping because none of the extra databases [:ci] are setup7310 # ./spec/lib/gitlab/config_checker/external_database_checker_spec.rb:787311Finished in 23 minutes 57 seconds (files took 46.9 seconds to load)73123009 examples, 0 failures, 41 pending7313Randomized with seed 355937314[TEST PROF INFO] Time spent in factories: 08:53.128 (36.94% of total time)7315RSpec exited with 0.7316No examples to retry, congrats!7318Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy7320Uploading artifacts...7321coverage/: found 5 matching artifact files and directories 7322crystalball/: found 2 matching artifact files and directories 7323WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 7324knapsack/: found 4 matching artifact files and directories 7325WARNING: query_recorder/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 7326rspec/: found 16 matching artifact files and directories 7327WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 7328log/*.log: found 17 matching artifact files and directories 7329WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964259/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com7330WARNING: Retrying... context=artifacts-uploader error=request redirected7331Uploading artifacts as "archive" to coordinator... 201 Created id=4400964259 responseStatus=201 Created token=64_krhby7332Uploading artifacts...7333rspec/rspec-*.xml: found 1 matching artifact files and directories 7334WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964259/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com7335WARNING: Retrying... context=artifacts-uploader error=request redirected7336Uploading artifacts as "junit" to coordinator... 201 Created id=4400964259 responseStatus=201 Created token=64_krhby7338Job succeeded