rspec unit pg13 16/28
Passed Started
by
@ohoral
Olena Horal-Koretska
1Running with gitlab-runner 15.9.0~beta.115.g598a7c91 (598a7c91)2 on green-1.shared-gitlab-org.runners-manager.gitlab.com/default Mf8beF5G, system ID: s_673deea48c2a3 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-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-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:b643610fd4d2fbdd55447ceb5a6cba0c3d1a26945817741d73e1b51a1ec07d01 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:dfccb5b5ddadf4f1a3b9cb72cf21f5b99a28a55c217de34d9fa6b7a45a910031 ...11Starting service redis:6.2-alpine ...12Pulling docker image redis:6.2-alpine ...13Using docker image sha256:a9a47a706682d445577bb5da7328f0faaa0863a5742a315c829faa461dfc23ae for redis:6.2-alpine with digest redis@sha256:317575f05099ea47b1f2855b1bb6e068b52847bfa19b87014d88d57f82d4b8f0 ...14Waiting for services to be up and running (timeout 30 seconds)...15Authenticating with credentials from job payload (GitLab Registry)16Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...17Using docker image sha256:552b81110cdd830e05d17c8e7365f72e1dd96842217d7225636cb55a75777ea7 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13@sha256:a386dd1acb1341f710f3c3c320984f70512694bcfec8cb1c771365058ac7c475 ...19Running on runner-mf8bef5g-project-278964-concurrent-0 via runner-mf8bef5g-shared-gitlab-org-1682501200-ec916c7f...21$ eval "$CI_PRE_CLONE_SCRIPT"22Fetching changes with git depth set to 20...23Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/24Created fresh repository.25remote: Enumerating objects: 165305, done. 26remote: Counting objects: 100% (165305/165305), done. 27remote: Compressing objects: 100% (99239/99239), done. 28remote: Total 165305 (delta 81744), reused 118324 (delta 59962), pack-reused 0 29Receiving objects: 100% (165305/165305), 131.92 MiB | 32.02 MiB/s, done.30Resolving deltas: 100% (81744/81744), done.32 * [new ref] refs/pipelines/849373675 -> refs/pipelines/84937367533 * [new branch] master -> origin/master34Checking out f463609d as detached HEAD (ref is master)...35Skipping Git submodules setup36$ git remote set-url origin "${CI_REPOSITORY_URL}"38Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...39Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 40Successfully extracted cache42Downloading artifacts for compile-test-assets (4181384009)...43Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4181384009 responseStatus=200 OK token=64_vfc1y44Downloading artifacts for retrieve-tests-metadata (4181384016)...45Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4181384016 responseStatus=200 OK token=64_vfc1y46Downloading artifacts for setup-test-env (4181384014)...47Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4181384014 responseStatus=200 OK token=64_vfc1y49Using docker image sha256:552b81110cdd830e05d17c8e7365f72e1dd96842217d7225636cb55a75777ea7 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13@sha256:a386dd1acb1341f710f3c3c320984f70512694bcfec8cb1c771365058ac7c475 ...50$ echo $FOSS_ONLY51$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb52$ export GOPATH=$CI_PROJECT_DIR/.go53$ mkdir -p $GOPATH54$ source scripts/utils.sh55$ source scripts/prepare_build.sh711Using decomposed database config (config/database.yml.decomposed-postgresql)712Geo DB won't be set up.713Embedding DB won't be set up.729$ source ./scripts/rspec_helpers.sh730$ run_timed_command "gem install knapsack --no-document"731$ gem install knapsack --no-document732Successfully installed knapsack-4.0.07331 gem installed734==> 'gem install knapsack --no-document' succeeded in 1 seconds.735$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"737$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"742$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"743$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"744SKIP_FLAKY_TESTS_AUTOMATICALLY: false745RETRY_FAILED_TESTS_IN_NEW_PROCESS: true746KNAPSACK_GENERATE_REPORT: true747FLAKY_RSPEC_GENERATE_REPORT: true748KNAPSACK_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.rb749KNAPSACK_LOG_LEVEL: debug750KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13_16_28_report.json751FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json752FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_16_28_report.json753NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_16_28_report.json754SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg13_16_28_report.txt755CRYSTALBALL: 756RSPEC_TESTS_MAPPING_ENABLED: 757RSPEC_TESTS_FILTER_FILE: 758Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format RspecJunitFormatter --out rspec/junit_rspec.xml --tag ~quarantine --tag ~level:background_migration -- spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb spec/models/packages/package_spec.rb spec/tasks/gitlab/storage_rake_spec.rb spec/lib/gitlab/database/load_balancing_spec.rb spec/lib/gitlab/background_migration/legacy_upload_mover_spec.rb spec/models/namespace/package_setting_spec.rb spec/policies/wiki_page_policy_spec.rb spec/lib/gitlab/ci/templates/Jobs/deploy_gitlab_ci_yaml_spec.rb spec/models/broadcast_message_spec.rb spec/lib/gitlab/ci/config/entry/job_spec.rb spec/lib/gitlab/background_migration/backfill_draft_status_on_merge_requests_spec.rb spec/tasks/gitlab/db_rake_spec.rb spec/lib/gitlab/background_migration/cleanup_orphaned_routes_spec.rb spec/lib/container_registry/gitlab_api_client_spec.rb spec/lib/banzai/filter/references/user_reference_filter_spec.rb spec/lib/gitlab/closing_issue_extractor_spec.rb spec/lib/gitlab/background_migration/encrypt_integration_properties_spec.rb spec/lib/gitlab/database/batch_count_spec.rb spec/graphql/resolvers/namespace_projects_resolver_spec.rb spec/models/packages/debian/file_metadatum_spec.rb spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb spec/lib/gitlab/background_migration/copy_column_using_background_migration_job_spec.rb spec/helpers/avatars_helper_spec.rb spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb spec/lib/gitlab/redis/repository_cache_spec.rb spec/lib/api/entities/snippet_spec.rb spec/lib/gitlab/process_supervisor_spec.rb spec/services/clusters/update_service_spec.rb spec/lib/gitlab/ci/status/factory_spec.rb spec/services/issues/set_crm_contacts_service_spec.rb spec/workers/issues/placement_worker_spec.rb spec/presenters/release_presenter_spec.rb spec/services/issuable/destroy_service_spec.rb spec/services/ci/delete_unit_tests_service_spec.rb spec/services/releases/update_service_spec.rb spec/lib/gitlab/changelog/config_spec.rb spec/serializers/commit_entity_spec.rb spec/services/projects/protect_default_branch_service_spec.rb spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb spec/lib/gitlab/checks/tag_check_spec.rb spec/lib/gitlab/ci/build/auto_retry_spec.rb spec/models/container_expiration_policy_spec.rb spec/services/projects/participants_service_spec.rb spec/lib/gitlab/ci/config/entry/default_spec.rb spec/workers/tasks_to_be_done/create_worker_spec.rb spec/views/groups/edit.html.haml_spec.rb spec/services/todos/destroy/unauthorized_features_service_spec.rb spec/lib/gitlab/middleware/read_only_spec.rb spec/lib/gitlab/import_export/group/relation_factory_spec.rb spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb spec/services/packages/update_package_file_service_spec.rb spec/lib/gitlab/metrics/dashboard/processor_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_last_build_finished_spec.rb spec/models/error_tracking/error_spec.rb spec/lib/gitlab/graphql/pagination/active_record_array_connection_spec.rb spec/lib/gitlab/metrics/methods_spec.rb spec/tasks/gitlab/service_desk_email_rake_spec.rb spec/lib/gitlab/ci/build/artifacts/metadata/entry_spec.rb spec/lib/gitlab/logger_spec.rb spec/models/integrations/emails_on_push_spec.rb spec/lib/gitlab/auth/ldap/config_spec.rb spec/lib/gitlab/data_builder/deployment_spec.rb spec/workers/merge_requests/update_head_pipeline_worker_spec.rb spec/models/wiki_page/slug_spec.rb spec/graphql/mutations/timelogs/delete_spec.rb spec/tasks/gitlab/external_diffs_rake_spec.rb spec/helpers/releases_helper_spec.rb spec/lib/banzai/pipeline/plain_markdown_pipeline_spec.rb spec/finders/feature_flags_finder_spec.rb spec/models/packages/cleanup/policy_spec.rb spec/lib/api/support/git_access_actor_spec.rb spec/models/concerns/ci/has_ref_spec.rb spec/workers/deployments/hooks_worker_spec.rb spec/lib/gitlab/database/load_balancing/rack_middleware_spec.rb spec/lib/gitlab/import_export/remote_stream_upload_spec.rb spec/models/concerns/access_requestable_spec.rb spec/policies/clusters/instance_policy_spec.rb spec/lib/banzai/filter/task_list_filter_spec.rb spec/finders/keys_finder_spec.rb spec/services/ci/test_failure_history_service_spec.rb spec/models/user_interacted_project_spec.rb spec/lib/gitlab/usage_data_counters/work_item_activity_unique_counter_spec.rb spec/lib/gitlab/git/push_spec.rb spec/lib/sidebars/user_profile/menus/groups_menu_spec.rb spec/services/packages/create_event_service_spec.rb spec/services/bulk_imports/uploads_export_service_spec.rb spec/rubocop/cop/gitlab/namespaced_class_spec.rb spec/lib/gitlab/database/loose_foreign_keys_spec.rb spec/lib/gitlab/ci/status/bridge/common_spec.rb spec/services/members/unassign_issuables_service_spec.rb spec/models/ci/unit_test_spec.rb spec/lib/gitlab/checks/push_file_count_check_spec.rb spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb spec/models/concerns/x509_serial_number_attribute_spec.rb spec/models/concerns/spammable_spec.rb spec/tooling/danger/feature_flag_spec.rb spec/helpers/keyset_helper_spec.rb spec/lib/gitlab/ci/config/external/rules_spec.rb spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb spec/models/concerns/legacy_bulk_insert_spec.rb spec/graphql/types/base_object_spec.rb spec/models/service_desk/custom_email_verification_spec.rb spec/services/concerns/audit_event_save_type_spec.rb spec/lib/banzai/filter/inline_metrics_filter_spec.rb spec/presenters/issue_email_participant_presenter_spec.rb spec/workers/ml/experiment_tracking/associate_ml_candidate_to_package_worker_spec.rb spec/components/pajamas/alert_component_spec.rb spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb spec/lib/gitlab/ci/config/entry/reports/coverage_report_spec.rb spec/lib/gitlab/ci/build/policy/variables_spec.rb spec/models/preloaders/users_max_access_level_by_project_preloader_spec.rb spec/services/jira_import/cloud_users_mapper_service_spec.rb spec/services/packages/go/sync_packages_service_spec.rb spec/models/guest_spec.rb spec/services/merge_requests/add_spent_time_service_spec.rb spec/helpers/import_helper_spec.rb spec/lib/sidebars/projects/menus/scope_menu_spec.rb spec/lib/gitlab/gitaly_client/praefect_info_service_spec.rb spec/scripts/generate_rspec_pipeline_spec.rb spec/workers/ci/delete_objects_worker_spec.rb spec/services/import/github/cancel_project_import_service_spec.rb spec/lib/gitlab/ci/status/success_warning_spec.rb spec/lib/gitlab/background_migration/backfill_project_feature_package_registry_access_level_spec.rb spec/lib/banzai/reference_parser/mentioned_project_parser_spec.rb spec/models/integrations/shimo_spec.rb spec/lib/gitlab/word_diff/segments/chunk_spec.rb spec/workers/releases/create_evidence_worker_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_first_mentioned_in_commit_spec.rb spec/workers/clusters/cleanup/service_account_worker_spec.rb spec/lib/bulk_imports/projects/graphql/get_snippet_repository_query_spec.rb spec/lib/gitlab/background_migration/update_delayed_project_removal_to_null_for_user_namespaces_spec.rb spec/lib/gitlab/cleanup/orphan_job_artifact_files_batch_spec.rb spec/lib/sidebars/user_settings/menus/emails_menu_spec.rb spec/services/packages/rpm/parse_package_service_spec.rb spec/lib/gitlab/search/params_spec.rb spec/graphql/types/users/email_type_spec.rb spec/support_specs/matchers/event_store_spec.rb spec/lib/gitlab/ci/config/entry/coverage_spec.rb spec/graphql/types/alert_management/status_enum_spec.rb spec/workers/jira_connect/sync_feature_flags_worker_spec.rb spec/workers/stage_update_worker_spec.rb spec/lib/gitlab/usage_data_counters/code_review_events_spec.rb spec/lib/gitlab/pagination/offset_header_builder_with_controller_spec.rb spec/lib/gitlab/kubernetes/ingress_spec.rb spec/lib/gitlab/email/attachment_uploader_spec.rb spec/lib/gitlab/config/entry/validatable_spec.rb spec/lib/gitlab/bullet/exclusions_spec.rb spec/lib/gitlab/alert_management/fingerprint_spec.rb spec/rubocop/cop/project_path_helper_spec.rb spec/workers/approve_blocked_pending_approval_users_worker_spec.rb spec/graphql/types/achievements/user_achievement_type_spec.rb spec/models/concerns/presentable_spec.rb spec/lib/banzai/filter/suggestion_filter_spec.rb spec/lib/initializer_connections_spec.rb spec/lib/gitlab/kubernetes/cluster_role_binding_spec.rb spec/tooling/lib/tooling/find_tests_spec.rb spec/lib/bulk_imports/groups/pipelines/group_pipeline_spec.rb spec/workers/ci/schedule_delete_objects_cron_worker_spec.rb spec/lib/gitlab/kubernetes/pod_cmd_spec.rb spec/services/packages/create_temporary_package_service_spec.rb spec/services/base_count_service_spec.rb spec/workers/design_management/copy_design_collection_worker_spec.rb spec/lib/gitlab/seeders/ci/daily_build_group_report_result_spec.rb spec/lib/banzai/filter/image_lazy_load_filter_spec.rb spec/lib/gitlab/config/entry/factory_spec.rb spec/lib/gitlab/background_migration_spec.rb spec/graphql/resolvers/achievements/achievements_resolver_spec.rb spec/services/customer_relations/contacts/create_service_spec.rb spec/helpers/storage_helper_spec.rb spec/workers/gitlab_shell_worker_spec.rb spec/helpers/issue_type_helper_spec.rb spec/presenters/ml/candidates_csv_presenter_spec.rb spec/services/users/validate_manual_otp_service_spec.rb spec/lib/sidebars/admin/menus/applications_menu_spec.rb spec/rubocop/cop/scalability/bulk_perform_with_context_spec.rb spec/lib/bulk_imports/common/rest/get_badges_query_spec.rb spec/lib/gitlab/color_schemes_spec.rb spec/lib/gitlab/ci/reports/coverage_report_spec.rb spec/graphql/mutations/achievements/award_spec.rb spec/models/issuable_severity_spec.rb spec/graphql/mutations/work_items/update_task_spec.rb spec/lib/gitlab/database/schema_validation/schema_objects/table_spec.rb spec/lib/gitlab/kubernetes/service_account_token_spec.rb spec/models/resource_events/issue_assignment_event_spec.rb spec/helpers/url_helper_spec.rb spec/services/groups/deploy_tokens/destroy_service_spec.rb spec/tooling/lib/tooling/crystalball/coverage_lines_execution_detector_spec.rb spec/models/design_user_mention_spec.rb spec/graphql/resolvers/concerns/resolves_ids_spec.rb spec/models/resource_events/merge_request_assignment_event_spec.rb spec/lib/gitlab/grape_logging/loggers/urgency_logger_spec.rb spec/lib/gitlab/string_range_marker_spec.rb spec/rubocop/cop/migration/background_migrations_spec.rb spec/services/analytics/cycle_analytics/stages/list_service_spec.rb spec/workers/member_invitation_reminder_emails_worker_spec.rb spec/lib/bulk_imports/groups/graphql/get_projects_query_spec.rb spec/lib/gitlab/email/message/in_product_marketing/create_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_boards_metric_spec.rb spec/rubocop/cop/gitlab/rspec/avoid_setup_spec.rb spec/lib/gitlab/data_builder/archive_trace_spec.rb spec/workers/users/create_statistics_worker_spec.rb spec/lib/gitlab/diff/suggestion_diff_spec.rb spec/lib/gitlab/usage_data_counters/redis_counter_spec.rb spec/services/ci/process_pipeline_service_spec.rb spec/lib/gitlab/process_memory_cache/helper_spec.rb spec/rubocop/cop/gemspec/avoid_executing_git_spec.rb spec/lib/gitlab/ci/build/hook_spec.rb spec/graphql/types/commit_signatures/gpg_signature_type_spec.rb spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb spec/lib/gitlab/memory/watchdog/monitor/unique_memory_growth_spec.rb spec/lib/gitlab/email/hook/disable_email_interceptor_spec.rb spec/serializers/move_to_project_entity_spec.rb spec/initializers/microsoft_graph_mailer_spec.rb spec/graphql/types/evidence_type_spec.rb spec/graphql/types/snippets/blob_action_input_type_spec.rb spec/graphql/types/time_tracking/timelog_sort_enum_spec.rb spec/models/groups/feature_setting_spec.rb spec/lib/gitlab/graphql/loaders/batch_root_storage_statistics_loader_spec.rb spec/services/packages/rpm/repository_metadata/build_filelist_xml_service_spec.rb spec/lib/banzai/filter/markdown_engines/base_spec.rb spec/graphql/types/projects/fork_details_type_spec.rb spec/graphql/types/permission_types/environment_spec.rb spec/rubocop/cop/gitlab/change_timezone_spec.rb spec/lib/gitlab/diff/file_collection_sorter_spec.rb spec/lib/gitlab/utils/merge_hash_spec.rb spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/none_spec.rb spec/helpers/projects/settings/branch_rules_helper_spec.rb spec/graphql/types/countable_connection_type_spec.rb spec/graphql/resolvers/metadata_resolver_spec.rb spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb spec/graphql/types/resolvable_interface_spec.rb spec/lib/gitlab/import_export/model_configuration_spec.rb spec/lib/gitlab/middleware/release_env_spec.rb spec/lib/microsoft_teams/activity_spec.rbKnapsack report generator started!759warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.761Run options: exclude {:quarantine=>true, :level=>"background_migration"}762Test environment set up in 0.811528344 seconds763Auto-DevOps.gitlab-ci.yml764 default_branch: "master"765 the created pipeline766 creates a build and a test job767 when the project is set for deployment to AWS768 creates an ECS deployment job for production only769 behaves like no Kubernetes deployment job770 does not create any Kubernetes deployment-related builds771 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present772 when AUTO_DEVOPS_PLATFORM_TARGET is nil773 does not trigger the job774 when AUTO_DEVOPS_PLATFORM_TARGET is empty775 does not trigger the job776 with FARGATE as a launch type777 creates a FARGATE deployment job for production only778 and we are not on the default branch779 creates an ECS deployment job for review only780 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present781 when AUTO_DEVOPS_PLATFORM_TARGET is nil782 does not trigger the job783 when AUTO_DEVOPS_PLATFORM_TARGET is empty784 does not trigger the job785 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present786 when AUTO_DEVOPS_PLATFORM_TARGET is nil787 does not trigger the job788 when AUTO_DEVOPS_PLATFORM_TARGET is empty789 does not trigger the job790 with FARGATE as a launch type791 creates an FARGATE deployment job for review only792 and when the project has an active cluster793 on default branch794 triggers the deployment to Kubernetes, not to ECS795 when the platform target is EC2796 contains the build_artifact job, not the build job797 when the project has no active cluster798 only creates a build and a test stage799 behaves like no Kubernetes deployment job800 does not create any Kubernetes deployment-related builds801 when a cluster is attached802 behaves like pipeline with Kubernetes jobs803 deployment-related builds804 on default branch805 does not include rollout jobs besides production806 when STAGING_ENABLED=1807 includes a staging job and a production_manual job808 when CANARY_ENABLED=1809 includes a canary job and a production_manual job810 when MIGRATE_HELM_2TO3=true811 includes a helm-2to3:migrate and a helm-2to3:cleanup job812 outside of default branch813 does not include rollout jobs besides review814 when MIGRATE_HELM_2TO3=true815 includes a helm-2to3:migrate and a helm-2to3:cleanup job816 when certificate_based_clusters FF is disabled817 does not include production job818 when project has an Agent819 behaves like pipeline with Kubernetes jobs820 deployment-related builds821 on default branch822 does not include rollout jobs besides production823 when STAGING_ENABLED=1824 includes a staging job and a production_manual job825 when CANARY_ENABLED=1826 includes a canary job and a production_manual job827 when MIGRATE_HELM_2TO3=true828 includes a helm-2to3:migrate and a helm-2to3:cleanup job829 outside of default branch830 does not include rollout jobs besides review831 when MIGRATE_HELM_2TO3=true832 includes a helm-2to3:migrate and a helm-2to3:cleanup job833 when certificate_based_clusters FF is disabled834 includes production job835 buildpack detection836 No match837 creates a pipeline with the expected jobs838 Buildpack839 creates a pipeline with the expected jobs840 Explicit set841 creates a pipeline with the expected jobs842 Explicit unset843 creates a pipeline with the expected jobs844 DOCKERFILE_PATH845 creates a pipeline with the expected jobs846 Dockerfile847 creates a pipeline with the expected jobs848 Clojure849 creates a pipeline with the expected jobs850 Go modules851 creates a pipeline with the expected jobs852 Go gb853 creates a pipeline with the expected jobs854 Gradle855 creates a pipeline with the expected jobs856 Java857 creates a pipeline with the expected jobs858 Multi-buildpack859 creates a pipeline with the expected jobs860 NodeJS861 creates a pipeline with the expected jobs862 PHP863 creates a pipeline with the expected jobs864 Play865 creates a pipeline with the expected jobs866 Python867 creates a pipeline with the expected jobs868 Ruby869 creates a pipeline with the expected jobs870 Scala871 creates a pipeline with the expected jobs872 Static873 creates a pipeline with the expected jobs874 default_branch: "main"875 the created pipeline876 creates a build and a test job877 when the project is set for deployment to AWS878 creates an ECS deployment job for production only879 behaves like no Kubernetes deployment job880 does not create any Kubernetes deployment-related builds881 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present882 when AUTO_DEVOPS_PLATFORM_TARGET is nil883 does not trigger the job884 when AUTO_DEVOPS_PLATFORM_TARGET is empty885 does not trigger the job886 with FARGATE as a launch type887 creates a FARGATE deployment job for production only888 and we are not on the default branch889 creates an ECS deployment job for review only890 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present891 when AUTO_DEVOPS_PLATFORM_TARGET is nil892 does not trigger the job893 when AUTO_DEVOPS_PLATFORM_TARGET is empty894 does not trigger the job895 behaves like no ECS job when AUTO_DEVOPS_PLATFORM_TARGET is not present896 when AUTO_DEVOPS_PLATFORM_TARGET is nil897 does not trigger the job898 when AUTO_DEVOPS_PLATFORM_TARGET is empty899 does not trigger the job900 with FARGATE as a launch type901 creates an FARGATE deployment job for review only902 and when the project has an active cluster903 on default branch904 triggers the deployment to Kubernetes, not to ECS905 when the platform target is EC2906 contains the build_artifact job, not the build job907 when the project has no active cluster908 only creates a build and a test stage909 behaves like no Kubernetes deployment job910 does not create any Kubernetes deployment-related builds911 when a cluster is attached912 behaves like pipeline with Kubernetes jobs913 deployment-related builds914 on default branch915 does not include rollout jobs besides production916 when STAGING_ENABLED=1917 includes a staging job and a production_manual job918 when CANARY_ENABLED=1919 includes a canary job and a production_manual job920 when MIGRATE_HELM_2TO3=true921 includes a helm-2to3:migrate and a helm-2to3:cleanup job922 outside of default branch923 does not include rollout jobs besides review924 when MIGRATE_HELM_2TO3=true925 includes a helm-2to3:migrate and a helm-2to3:cleanup job926 when certificate_based_clusters FF is disabled927 does not include production job928 when project has an Agent929 behaves like pipeline with Kubernetes jobs930 deployment-related builds931 on default branch932 does not include rollout jobs besides production933 when STAGING_ENABLED=1934 includes a staging job and a production_manual job935 when CANARY_ENABLED=1936 includes a canary job and a production_manual job937 when MIGRATE_HELM_2TO3=true938 includes a helm-2to3:migrate and a helm-2to3:cleanup job939 outside of default branch940 does not include rollout jobs besides review941 when MIGRATE_HELM_2TO3=true942 includes a helm-2to3:migrate and a helm-2to3:cleanup job943 when certificate_based_clusters FF is disabled944 includes production job945 buildpack detection946 No match947 creates a pipeline with the expected jobs948 Buildpack949 creates a pipeline with the expected jobs950 Explicit set951 creates a pipeline with the expected jobs952 Explicit unset953 creates a pipeline with the expected jobs954 DOCKERFILE_PATH955 creates a pipeline with the expected jobs956 Dockerfile957 creates a pipeline with the expected jobs958 Clojure959 creates a pipeline with the expected jobs960 Go modules961 creates a pipeline with the expected jobs962 Go gb963 creates a pipeline with the expected jobs964 Gradle965 creates a pipeline with the expected jobs966 Java967 creates a pipeline with the expected jobs968 Multi-buildpack969 creates a pipeline with the expected jobs970 NodeJS971 creates a pipeline with the expected jobs972 PHP973 creates a pipeline with the expected jobs974 Play975 creates a pipeline with the expected jobs976 Python977 creates a pipeline with the expected jobs978 Ruby979 creates a pipeline with the expected jobs980 Scala981 creates a pipeline with the expected jobs982 Static983 creates a pipeline with the expected jobs984Packages::Package985 behaves like having unique enum values986 has unique values in "package_type"987 has unique values in "status"988 relationships989 is expected to belong to project required: false990 is expected to belong to creator required: false991 is expected to have many package_files dependent => destroy992 is expected to have many dependency_links inverse_of => package993 is expected to have many tags inverse_of => package994 is expected to have many build_infos inverse_of => package995 is expected to have many installable_nuget_package_files inverse_of => package996 is expected to have one conan_metadatum inverse_of => package997 is expected to have one maven_metadatum inverse_of => package998 is expected to have one debian_publication class_name => Packages::Debian::Publication inverse_of => package999 is expected to have one debian_distribution class_name => Packages::Debian::ProjectDistribution through debian_publication source => distribution inverse_of => packages1000 is expected to have one nuget_metadatum inverse_of => package1001 is expected to have one rubygems_metadatum inverse_of => package1002 is expected to have one npm_metadatum inverse_of => package1003 is expected to have one rpm_metadatum inverse_of => package1004 .with_debian_codename1005 is expected to contain exactly #<Packages::Package id: 1, project_id: 159, created_at: "2023-04-26 10:31:20.058927173 +0000", update...rsion: "1.0-1", package_type: "debian", creator_id: 221, status: "default", last_downloaded_at: nil>1006 .with_debian_codename_or_suite1007 with a codename1008 is expected to contain exactly #<Packages::Package id: 2, project_id: 163, created_at: "2023-04-26 10:31:21.546574030 +0000", update...rsion: "1.0-2", package_type: "debian", creator_id: 225, status: "default", last_downloaded_at: nil>1009 with a suite1010 is expected to contain exactly #<Packages::Package id: 3, project_id: 164, created_at: "2023-04-26 10:31:21.997955530 +0000", update...rsion: "1.0-3", package_type: "debian", creator_id: 226, status: "default", last_downloaded_at: nil>1011 .with_composer_target1012 selects packages with the specified sha1013 .sort_by_attribute1014 behaves like package sorting by attribute1015 sorting by name1016 ascending order1017 is expected to eq [#<Packages::Package id: 7, project_id: 168, created_at: "2023-04-26 10:31:23.885081933 +0000", updat...rsion: "1.1.1", package_type: "maven", creator_id: 230, status: "default", last_downloaded_at: nil>]1018 descending order1019 is expected to eq [#<Packages::Package id: 14, project_id: 168, created_at: "2023-04-25 10:31:24.000000000 +0000", upda...version: "3.1.0", package_type: "npm", creator_id: 230, status: "default", last_downloaded_at: nil>]1020 behaves like package sorting by attribute1021 sorting by created_at1022 ascending order1023 is expected to eq [#<Packages::Package id: 18, project_id: 168, created_at: "2023-04-25 10:31:25.000000000 +0000", upda...rsion: "2.0.4", package_type: "nuget", creator_id: 230, status: "default", last_downloaded_at: nil>]1024 descending order1025 is expected to eq [#<Packages::Package id: 20, project_id: 168, created_at: "2023-04-26 10:31:25.636489060 +0000", upda...rsion: "1.1.1", package_type: "maven", creator_id: 230, status: "default", last_downloaded_at: nil>]1026 behaves like package sorting by attribute1027 sorting by version1028 ascending order1029 is expected to eq [#<Packages::Package id: 26, project_id: 168, created_at: "2023-04-25 10:31:26.000000000 +0000", upda...version: "3.1.0", package_type: "npm", creator_id: 230, status: "default", last_downloaded_at: nil>]1030 descending order1031 is expected to eq [#<Packages::Package id: 27, project_id: 168, created_at: "2023-04-26 10:31:26.889384532 +0000", upda...rsion: "1.1.1", package_type: "maven", creator_id: 230, status: "default", last_downloaded_at: nil>]1032 behaves like package sorting by attribute1033 sorting by type1034 ascending order1035 is expected to eq [#<Packages::Package id: 34, project_id: 168, created_at: "2023-04-25 10:31:27.000000000 +0000", upda...rsion: "2.0.4", package_type: "nuget", creator_id: 230, status: "default", last_downloaded_at: nil>]1036 descending order1037 is expected to eq [#<Packages::Package id: 36, project_id: 168, created_at: "2023-04-26 10:31:28.017287488 +0000", upda...rsion: "1.1.1", package_type: "maven", creator_id: 230, status: "default", last_downloaded_at: nil>]1038 behaves like package sorting by attribute1039 sorting by project_path1040 ascending order1041 is expected to eq [#<Packages::Package id: 39, project_id: 168, created_at: "2023-04-26 10:31:28.551886580 +0000", upda...version: "3.1.0", package_type: "npm", creator_id: 240, status: "default", last_downloaded_at: nil>]1042 descending order1043 is expected to eq [#<Packages::Package id: 48, project_id: 180, created_at: "2023-04-26 10:31:31.540183051 +0000", upda...version: "3.1.0", package_type: "npm", creator_id: 230, status: "default", last_downloaded_at: nil>]1044 .for_projects1045 returns package1 and package21046 validations1047 is expected to validate that :project cannot be empty/falsy1048 is expected to validate that :name is case-sensitively unique within the scope of :project_id, :version, and :package_type1049 #name1050 is expected to allow :name to be ‹"my/domain/com/my-app"›1051 is expected to allow :name to be ‹"my.app-11.07.2018"›1052 is expected not to allow :name to be ‹"my(dom$$$ain)com.my-app"›1053 conan package1054 is expected to allow :name to be ‹"foo+bar"›1055 is expected to allow :name to be ‹"foo_bar"›1056 is expected to allow :name to be ‹"foo.bar"›1057 is expected not to allow :name to be ‹"f_bf_bf_bf_bf_bf_bf_bf_bf_bf_bf_bf_bf_bf_bf_bf_bf_b"›1058 is expected not to allow :name to be ‹"+foobar"›1059 is expected not to allow :name to be ‹".foobar"›1060 is expected not to allow :name to be ‹"%foo%bar"›1061 debian package1062 is expected to allow :name to be ‹"0ad"›1063 is expected to allow :name to be ‹"g++"›1064 is expected not to allow :name to be ‹"a_b"›1065 debian incoming1066 is expected to allow :name to be ‹"incoming"›1067 is expected not to allow :name to be ‹"0ad"›1068 is expected not to allow :name to be ‹"g++"›1069 is expected not to allow :name to be ‹"a_b"›1070 generic package1071 is expected to allow :name to be ‹"123"›1072 is expected to allow :name to be ‹"foo"›1073 is expected to allow :name to be ‹"foo.bar.baz-2.0-20190901.47283-1"›1074 is expected not to allow :name to be ‹"../../foo"›1075 is expected not to allow :name to be ‹"..\\..\\foo"›1076 is expected not to allow :name to be ‹"%2f%2e%2e%2f%2essh%2fauthorized_keys"›1077 is expected not to allow :name to be ‹"$foo/bar"›1078 is expected not to allow :name to be ‹"my file name"›1079 is expected not to allow :name to be ‹"!!().for(:name)().for(:name)"›1080 helm package1081 is expected to allow :name to be ‹"prometheus"›1082 is expected to allow :name to be ‹"rook-ceph"›1083 is expected not to allow :name to be ‹"a+b"›1084 is expected not to allow :name to be ‹"Hé"›1085 nuget package1086 is expected to allow :name to be ‹"My.Package"›1087 is expected to allow :name to be ‹"My.Package.Mvc"›1088 is expected to allow :name to be ‹"MyPackage"›1089 is expected to allow :name to be ‹"My.23.Package"›1090 is expected to allow :name to be ‹"My23Package"›1091 is expected to allow :name to be ‹"runtime.my-test64.runtime.package.Mvc"›1092 is expected to allow :name to be ‹"my_package"›1093 is expected not to allow :name to be ‹"My/package"›1094 is expected not to allow :name to be ‹"../../../my_package"›1095 is expected not to allow :name to be ‹"%2e%2e%2fmy_package"›1096 npm package1097 is expected to allow :name to be ‹"@group-1/package"›1098 is expected to allow :name to be ‹"@any-scope/package"›1099 is expected to allow :name to be ‹"unscoped-package"›1100 is expected not to allow :name to be ‹"@inv@lid-scope/package"›1101 is expected not to allow :name to be ‹"@scope/../../package"›1102 is expected not to allow :name to be ‹"@scope%2e%2e%fpackage"›1103 is expected not to allow :name to be ‹"@scope/sub/package"›1104 terraform module package1105 is expected to allow :name to be ‹"my-module/my-system"›1106 is expected to allow :name to be ‹"my/module"›1107 is expected not to allow :name to be ‹"my-module"›1108 is expected not to allow :name to be ‹"My-Module"›1109 is expected not to allow :name to be ‹"my_module"›1110 is expected not to allow :name to be ‹"my.module"›1111 is expected not to allow :name to be ‹"../../../my-module"›1112 is expected not to allow :name to be ‹"%2e%2e%2fmy-module"›1113 #version1114 conan package1115 is expected to allow :version to be ‹"1.2"›1116 is expected to allow :version to be ‹"1.2.3-beta"›1117 is expected to allow :version to be ‹"1.2.3-pre1+build2"›1118 is expected not to allow :version to be ‹"1"›1119 is expected not to allow :version to be ‹"1.21.21.21.21.21.21.21.21.21.21.21.21.21.21.21.21.2"›1120 is expected not to allow :version to be ‹"1./2.3"›1121 is expected not to allow :version to be ‹".1.2.3"›1122 is expected not to allow :version to be ‹"+1.2.3"›1123 is expected not to allow :version to be ‹"%2e%2e%2f1.2.3"›1124 composer package1125 is expected to allow :version to be ‹"dev-master"›1126 is expected to allow :version to be ‹"2.x-dev"›1127 behaves like validating version to be SemVer compliant for1128 for composer_package1129 is expected to allow :version to be ‹"1.2.3"›1130 is expected to allow :version to be ‹"1.2.3-beta"›1131 is expected to allow :version to be ‹"1.2.3-alpha.3"›1132 is expected not to allow :version to be ‹"1"›1133 is expected not to allow :version to be ‹"1.2"›1134 is expected not to allow :version to be ‹"1./2.3"›1135 is expected not to allow :version to be ‹"../../../../../1.2.3"›1136 is expected not to allow :version to be ‹"%2e%2e%2f1.2.3"›1137 debian package1138 is expected to allow :version to be ‹"2:4.9.5+dfsg-5+deb10u1"›1139 is expected not to allow :version to be ‹"1_0"›1140 debian incoming1141 is expected to allow :version to be ‹nil›1142 is expected not to allow :version to be ‹"2:4.9.5+dfsg-5+deb10u1"›1143 is expected not to allow :version to be ‹"1_0"›1144 maven package1145 is expected to allow :version to be ‹"0"›1146 is expected to allow :version to be ‹"1"›1147 is expected to allow :version to be ‹"10"›1148 is expected to allow :version to be ‹"1.0"›1149 is expected to allow :version to be ‹"1.3.350.v20200505-1744"›1150 is expected to allow :version to be ‹"1.1-beta-2"›1151 is expected to allow :version to be ‹"1.2-SNAPSHOT"›1152 is expected to allow :version to be ‹"12.1.2-2-1"›1153 is expected to allow :version to be ‹"1.2.3-beta"›1154 is expected to allow :version to be ‹"10.2.3-beta"›1155 is expected to allow :version to be ‹"2.0.0.v200706041905-7C78EK9E_EkMNfNOd2d8qq"›1156 is expected to allow :version to be ‹"1.2-alpha-1-20050205.060708-1"›1157 is expected to allow :version to be ‹"703220b4e2cea9592caeb9f3013f6b1e5335c293"›1158 is expected to allow :version to be ‹"RELEASE"›1159 is expected not to allow :version to be ‹"..1.2.3"›1160 is expected not to allow :version to be ‹"1.2.3..beta"›1161 is expected not to allow :version to be ‹" 1.2.3"›1162 is expected not to allow :version to be ‹"1.2.3 \r\t"›1163 is expected not to allow :version to be ‹"\r\t 1.2.3"›1164 is expected not to allow :version to be ‹"1.2.3-4/../../"›1165 is expected not to allow :version to be ‹"1.2.3-4%2e%2e%"›1166 is expected not to allow :version to be ‹"../../../../../1.2.3"›1167 is expected not to allow :version to be ‹"%2e%2e%2f1.2.3"›1168 pypi package1169 is expected to allow :version to be ‹"0.1"›1170 is expected to allow :version to be ‹"2.0"›1171 is expected to allow :version to be ‹"1.2.0"›1172 is expected to allow :version to be ‹"0100!0.0"›1173 is expected to allow :version to be ‹"00!1.2"›1174 is expected to allow :version to be ‹"1.0a"›1175 is expected to allow :version to be ‹"1.0-a"›1176 is expected to allow :version to be ‹"1.0.a1"›1177 is expected to allow :version to be ‹"1.0a1"›1178 is expected to allow :version to be ‹"1.0-a1"›1179 is expected to allow :version to be ‹"1.0alpha1"›1180 is expected to allow :version to be ‹"1.0b1"›1181 is expected to allow :version to be ‹"1.0beta1"›1182 is expected to allow :version to be ‹"1.0rc1"›1183 is expected to allow :version to be ‹"1.0pre1"›1184 is expected to allow :version to be ‹"1.0preview1"›1185 is expected to allow :version to be ‹"1.0.dev1"›1186 is expected to allow :version to be ‹"1.0.DEV1"›1187 is expected to allow :version to be ‹"1.0.post1"›1188 is expected to allow :version to be ‹"1.0.rev1"›1189 is expected to allow :version to be ‹"1.0.r1"›1190 is expected to allow :version to be ‹"1.0c2"›1191 is expected to allow :version to be ‹"2012.15"›1192 is expected to allow :version to be ‹"1.0+5"›1193 is expected to allow :version to be ‹"1.0+abc.5"›1194 is expected to allow :version to be ‹"1!1.1"›1195 is expected to allow :version to be ‹"1.0c3"›1196 is expected to allow :version to be ‹"1.0rc2"›1197 is expected to allow :version to be ‹"1.0c1"›1198 is expected to allow :version to be ‹"1.0b2-346"›1199 is expected to allow :version to be ‹"1.0b2.post345"›1200 is expected to allow :version to be ‹"1.0b2.post345.dev456"›1201 is expected to allow :version to be ‹"1.2.rev33+123456"›1202 is expected to allow :version to be ‹"1.1.dev1"›1203 is expected to allow :version to be ‹"1.0b1.dev456"›1204 is expected to allow :version to be ‹"1.0a12.dev456"›1205 is expected to allow :version to be ‹"1.0b2"›1206 is expected to allow :version to be ‹"1.0.dev456"›1207 is expected to allow :version to be ‹"1.0c1.dev456"›1208 is expected to allow :version to be ‹"1.0.post456"›1209 is expected to allow :version to be ‹"1.0.post456.dev34"›1210 is expected to allow :version to be ‹"1.2+123abc"›1211 is expected to allow :version to be ‹"1.2+abc"›1212 is expected to allow :version to be ‹"1.2+abc123"›1213 is expected to allow :version to be ‹"1.2+abc123def"›1214 is expected to allow :version to be ‹"1.2+1234.abc"›1215 is expected to allow :version to be ‹"1.2+123456"›1216 is expected to allow :version to be ‹"1.2.r32+123456"›1217 is expected to allow :version to be ‹"1!1.2.rev33+123456"›1218 is expected to allow :version to be ‹"1.0a12"›1219 is expected to allow :version to be ‹"1.2.3-45+abcdefgh"›1220 is expected to allow :version to be ‹"v1.2.3"›1221 is expected not to allow :version to be ‹"1.2.3-45-abcdefgh"›1222 is expected not to allow :version to be ‹"..1.2.3"›1223 is expected not to allow :version to be ‹" 1.2.3"›1224 is expected not to allow :version to be ‹"1.2.3 \r\t"›1225 is expected not to allow :version to be ‹"\r\t 1.2.3"›1226 is expected not to allow :version to be ‹"1./2.3"›1227 is expected not to allow :version to be ‹"1.2.3-4/../../"›1228 is expected not to allow :version to be ‹"1.2.3-4%2e%2e%"›1229 is expected not to allow :version to be ‹"../../../../../1.2.3"›1230 is expected not to allow :version to be ‹"%2e%2e%2f1.2.3"›1231 generic package1232 is expected to validate that :version cannot be empty/falsy1233 is expected to allow :version to be ‹"1.2.3"›1234 is expected to allow :version to be ‹"1.3.350"›1235 is expected to allow :version to be ‹"1.3.350-20201230123456"›1236 is expected to allow :version to be ‹"1.2.3-rc1"›1237 is expected to allow :version to be ‹"1.2.3g"›1238 is expected to allow :version to be ‹"1.2"›1239 is expected to allow :version to be ‹"1.2.bananas"›1240 is expected to allow :version to be ‹"v1.2.4-build"›1241 is expected to allow :version to be ‹"d50d836eb3de6177ce6c7a5482f27f9c2c84b672"›1242 is expected to allow :version to be ‹"this_is_a_string_only"›1243 is expected not to allow :version to be ‹"..1.2.3"›1244 is expected not to allow :version to be ‹" 1.2.3"›1245 is expected not to allow :version to be ‹"1.2.3 \r\t"›1246 is expected not to allow :version to be ‹"\r\t 1.2.3"›1247 is expected not to allow :version to be ‹"1.2.3-4/../../"›1248 is expected not to allow :version to be ‹"1.2.3-4%2e%2e%"›1249 is expected not to allow :version to be ‹"../../../../../1.2.3"›1250 is expected not to allow :version to be ‹"%2e%2e%2f1.2.3"›1251 is expected not to allow :version to be ‹""›1252 is expected not to allow :version to be ‹nil›1253 helm package1254 is expected not to allow :version to be ‹nil›1255 is expected not to allow :version to be ‹""›1256 is expected to allow :version to be ‹"v1.2.3"›1257 is expected to allow :version to be ‹"1.2.3"›1258 is expected not to allow :version to be ‹"v1.2"›1259 behaves like validating version to be SemVer compliant for1260 for npm_package1261 is expected to allow :version to be ‹"1.2.3"›1262 is expected to allow :version to be ‹"1.2.3-beta"›1263 is expected to allow :version to be ‹"1.2.3-alpha.3"›1264 is expected not to allow :version to be ‹"1"›1265 is expected not to allow :version to be ‹"1.2"›1266 is expected not to allow :version to be ‹"1./2.3"›1267 is expected not to allow :version to be ‹"../../../../../1.2.3"›1268 is expected not to allow :version to be ‹"%2e%2e%2f1.2.3"›1269 behaves like validating version to be SemVer compliant for1270 for terraform_module_package1271 is expected to allow :version to be ‹"1.2.3"›1272 is expected to allow :version to be ‹"1.2.3-beta"›1273 is expected to allow :version to be ‹"1.2.3-alpha.3"›1274 is expected not to allow :version to be ‹"1"›1275 is expected not to allow :version to be ‹"1.2"›1276 is expected not to allow :version to be ‹"1./2.3"›1277 is expected not to allow :version to be ‹"../../../../../1.2.3"›1278 is expected not to allow :version to be ‹"%2e%2e%2f1.2.3"›1279 nuget package1280 is expected to allow :version to be ‹"1.2"›1281 is expected to allow :version to be ‹"1.2.3"›1282 is expected to allow :version to be ‹"1.2.3.4"›1283 is expected to allow :version to be ‹"1.2.3-beta"›1284 is expected to allow :version to be ‹"1.2.3-alpha.3"›1285 is expected not to allow :version to be ‹"1"›1286 is expected not to allow :version to be ‹"1./2.3"›1287 is expected not to allow :version to be ‹"../../../../../1.2.3"›1288 is expected not to allow :version to be ‹"%2e%2e%2f1.2.3"›1289 #npm_package_already_taken1290 maven package1291 will allow a package of the same name1292 npm package1293 following the naming convention1294 with the second package in the project of the first package1295 with no duplicated name1296 behaves like validating the first package1297 validates the first package1298 behaves like validating the second package1299 validates the second package1300 with duplicated name1301 behaves like validating the first package1302 validates the first package1303 behaves like validating the second package1304 validates the second package1305 with duplicate name and duplicated version1306 behaves like validating the first package1307 validates the first package1308 behaves like not validating the second package1309 does not validate the second package1310 behaves like validating both if the first package is pending destruction1311 behaves like validating the first package1312 validates the first package1313 behaves like validating the second package1314 validates the second package1315 with the second package in a different project than the first package1316 with no duplicated name1317 behaves like validating the first package1318 validates the first package1319 behaves like validating the second package1320 validates the second package1321 with duplicated name1322 behaves like validating the first package1323 validates the first package1324 behaves like validating the second package1325 validates the second package1326 with duplicate name and duplicated version1327 behaves like validating the first package1328 validates the first package1329 behaves like not validating the second package1330 does not validate the second package1331 behaves like validating both if the first package is pending destruction1332 behaves like validating the first package1333 validates the first package1334 behaves like validating the second package1335 validates the second package1336 not following the naming convention1337 with the second package in the project of the first package1338 with no duplicated name1339 behaves like validating the first package1340 validates the first package1341 behaves like validating the second package1342 validates the second package1343 with duplicated name1344 behaves like validating the first package1345 validates the first package1346 behaves like validating the second package1347 validates the second package1348 with duplicate name and duplicated version1349 behaves like validating the first package1350 validates the first package1351 behaves like not validating the second package1352 does not validate the second package1353 behaves like validating both if the first package is pending destruction1354 behaves like validating the first package1355 validates the first package1356 behaves like validating the second package1357 validates the second package1358 with the second package in a different project than the first package1359 with no duplicated name1360 behaves like validating the first package1361 validates the first package1362 behaves like validating the second package1363 validates the second package1364 with duplicated name1365 behaves like validating the first package1366 validates the first package1367 behaves like validating the second package1368 validates the second package1369 with duplicate name and duplicated version1370 behaves like validating the first package1371 validates the first package1372 behaves like validating the second package1373 validates the second package1374 behaves like validating both if the first package is pending destruction1375 behaves like validating the first package1376 validates the first package1377 behaves like validating the second package1378 validates the second package1379 recipe uniqueness for conan packages1380 will allow a conan package with same project, name, version and package_type1381 will not allow a conan package with same recipe (name, version, metadatum.package_channel, metadatum.package_username, and package_type)1382 with pending destruction package1383 will allow a conan package with same recipe (name, version, metadatum.package_channel, metadatum.package_username, and package_type)1384 #valid_composer_global_name1385 with different name and different project1386 is expected to be valid1387 with same name and different project1388 will not validate second package1389 with pending destruction package1390 is expected to be valid1391 uniqueness for package type debian1392 will not allow a Debian package with same project, name, version and distribution1393 will not allow a Debian package with same project, name, version, but no distribution1394 with pending_destruction package1395 will allow a Debian package with same project, name, version and distribution1396 project id, name, version and package type uniqueness for package type maven1397 will not allow a maven package with same project, name, version and package_type1398 with pending_destruction package1399 will allow a maven package with same project, name, version and package_type1400 project id, name, version and package type uniqueness for package type npm1401 will not allow a npm package with same project, name, version and package_type1402 with pending_destruction package1403 will allow a npm package with same project, name, version and package_type1404 project id, name, version and package type uniqueness for package type nuget1405 will not allow a nuget package with same project, name, version and package_type1406 with pending_destruction package1407 will allow a nuget package with same project, name, version and package_type1408 project id, name, version and package type uniqueness for package type pypi1409 will not allow a pypi package with same project, name, version and package_type1410 with pending_destruction package1411 will allow a pypi package with same project, name, version and package_type1412 project id, name, version and package type uniqueness for package type composer1413 will not allow a composer package with same project, name, version and package_type1414 with pending_destruction package1415 will allow a composer package with same project, name, version and package_type1416 project id, name, version and package type uniqueness for package type generic1417 will not allow a generic package with same project, name, version and package_type1418 with pending_destruction package1419 will allow a generic package with same project, name, version and package_type1420 project id, name, version and package type uniqueness for package type golang1421 will not allow a golang package with same project, name, version and package_type1422 with pending_destruction package1423 will allow a golang package with same project, name, version and package_type1424 project id, name, version and package type uniqueness for package type debian1425 will not allow a debian package with same project, name, version and package_type1426 with pending_destruction package1427 will allow a debian package with same project, name, version and package_type1428 project id, name, version and package type uniqueness for package type rubygems1429 will not allow a rubygems package with same project, name, version and package_type1430 with pending_destruction package1431 will allow a rubygems package with same project, name, version and package_type1432 project id, name, version and package type uniqueness for package type helm1433 will not allow a helm package with same project, name, version and package_type1434 with pending_destruction package1435 will allow a helm package with same project, name, version and package_type1436 project id, name, version and package type uniqueness for package type terraform_module1437 will not allow a terraform_module package with same project, name, version and package_type1438 with pending_destruction package1439 will allow a terraform_module package with same project, name, version and package_type1440 project id, name, version and package type uniqueness for package type rpm1441 will not allow a rpm package with same project, name, version and package_type1442 with pending_destruction package1443 will allow a rpm package with same project, name, version and package_type1444 #destroy1445 updates the project statistics1446 .by_name_and_file_name1447 finds a package with correct arguiments1448 will raise error if not found1449 .with_package_type1450 is expected to eq [#<Packages::Package id: 181, project_id: 299, created_at: "2023-04-26 10:32:44.364732673 +0000", upd....0", package_type: "terraform_module", creator_id: 361, status: "default", last_downloaded_at: nil>]1451 .without_package_type1452 is expected to eq [#<Packages::Package id: 183, project_id: 301, created_at: "2023-04-26 10:32:45.141902168 +0000", upd...ersion: "1.0.54", package_type: "npm", creator_id: 363, status: "default", last_downloaded_at: nil>]1453 version scopes1454 .last_of_each_version1455 includes only latest package per version1456 .has_version1457 includes only packages with version attribute1458 .with_version1459 includes only packages with specified version1460 .without_version_like1461 includes packages without the version pattern1462 conan scopes1463 .with_conan_channel1464 includes only packages with specified version1465 .with_conan_username1466 includes only packages with specified version1467 .without_nuget_temporary_name1468 does not include nuget temporary packages1469 .limit_recent1470 is expected to contain exactly #<Packages::Package id: 206, project_id: 324, created_at: "2023-04-26 10:32:55.271251617 +0000", upda...rsion: "1.0.26", package_type: "nuget", creator_id: 386, status: "default", last_downloaded_at: nil> and #<Packages::Package id: 205, project_id: 323, created_at: "2023-04-26 10:32:54.830480978 +0000", upda...rsion: "1.0.25", package_type: "nuget", creator_id: 385, status: "default", last_downloaded_at: nil>1471 with several packages1472 .pluck_names1473 is expected to contain exactly "FooBar", "foobar", "@namespace532/package-35", and "@namespace533/package-36"1474 .pluck_versions1475 is expected to contain exactly "1.0.27", "1.0.28", "1.0.55", and "1.0.56"1476 .with_name_like1477 with downcase name1478 is expected to contain exactly #<Packages::Package id: 207, project_id: 325, created_at: "2023-04-26 10:32:55.568434655 +0000", upda...rsion: "1.0.27", package_type: "nuget", creator_id: 387, status: "default", last_downloaded_at: nil> and #<Packages::Package id: 208, project_id: 326, created_at: "2023-04-26 10:32:55.825732307 +0000", upda...rsion: "1.0.28", package_type: "nuget", creator_id: 388, status: "default", last_downloaded_at: nil>1479 with prefix wildcard1480 is expected to contain exactly #<Packages::Package id: 207, project_id: 325, created_at: "2023-04-26 10:32:55.568434655 +0000", upda...rsion: "1.0.27", package_type: "nuget", creator_id: 387, status: "default", last_downloaded_at: nil> and #<Packages::Package id: 208, project_id: 326, created_at: "2023-04-26 10:32:55.825732307 +0000", upda...rsion: "1.0.28", package_type: "nuget", creator_id: 388, status: "default", last_downloaded_at: nil>1481 with suffix wildcard1482 is expected to contain exactly #<Packages::Package id: 207, project_id: 325, created_at: "2023-04-26 10:32:55.568434655 +0000", upda...rsion: "1.0.27", package_type: "nuget", creator_id: 387, status: "default", last_downloaded_at: nil> and #<Packages::Package id: 208, project_id: 326, created_at: "2023-04-26 10:32:55.825732307 +0000", upda...rsion: "1.0.28", package_type: "nuget", creator_id: 388, status: "default", last_downloaded_at: nil>1483 with surrounding wildcards1484 is expected to contain exactly #<Packages::Package id: 207, project_id: 325, created_at: "2023-04-26 10:32:55.568434655 +0000", upda...rsion: "1.0.27", package_type: "nuget", creator_id: 387, status: "default", last_downloaded_at: nil> and #<Packages::Package id: 208, project_id: 326, created_at: "2023-04-26 10:32:55.825732307 +0000", upda...rsion: "1.0.28", package_type: "nuget", creator_id: 388, status: "default", last_downloaded_at: nil>1485 .search_by_name1486 is expected to contain exactly #<Packages::Package id: 207, project_id: 325, created_at: "2023-04-26 10:32:55.568434655 +0000", upda...rsion: "1.0.27", package_type: "nuget", creator_id: 387, status: "default", last_downloaded_at: nil> and #<Packages::Package id: 208, project_id: 326, created_at: "2023-04-26 10:32:55.825732307 +0000", upda...rsion: "1.0.28", package_type: "nuget", creator_id: 388, status: "default", last_downloaded_at: nil>1487 .with_normalized_pypi_name1488 is expected to contain exactly #<Packages::Package id: 211, project_id: 329, created_at: "2023-04-26 10:32:57.186617157 +0000", upda...ersion: "1.0.65", package_type: "pypi", creator_id: 391, status: "default", last_downloaded_at: nil>1489 .with_case_insensitive_version1490 is expected to contain exactly #<Packages::Package id: 212, project_id: 330, created_at: "2023-04-26 10:32:57.543539517 +0000", upda...on: "1.0.0-ABC", package_type: "nuget", creator_id: 392, status: "default", last_downloaded_at: nil>1491 status scopes1492 .displayable1493 does not include non-displayable packages1494 .installable1495 does not include non-installable packages1496 includes installable packages1497 .with_status1498 returns packages with specified status1499 .select_distinct_name1500 returns only distinct names1501 sorting1502 orders packages by their projects name ascending1503 orders packages by their projects name descending1504 behaves like order_project_path scope1505 orders packages by their projects path asc, then package id asc1506 behaves like order_project_path_desc scope1507 orders packages by their projects path desc, then package id desc1508 .order_by_package_file1509 orders packages their associated package_file's created_at date1510 .keyset_pagination_order1511 is expected to raise NoMethodError1512 with valid params1513 ascending direction1514 is expected to eq "\"projects\".\"name\" ASC NULLS LAST, \"packages_packages\".\"id\" ASC"1515 descending direction1516 is expected to eq "\"projects\".\"name\" DESC NULLS FIRST, \"packages_packages\".\"id\" DESC"1517 #versions1518 returns other package versions of the same package name belonging to the project1519 does not return different packages1520 #pipeline1521 package without pipeline1522 returns nil if there is no pipeline1523 package with pipeline1524 returns the pipeline1525 #pipelines1526 package without pipeline1527 is expected to be empty1528 package with pipeline1529 is expected to contain exactly #<Ci::Pipeline id: 96, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: ni...a: nil, external_pull_request_id: nil, ci_ref_id: 96, locked: "artifacts_locked", partition_id: 100> and #<Ci::Pipeline id: 97, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: ni...a: nil, external_pull_request_id: nil, ci_ref_id: 97, locked: "artifacts_locked", partition_id: 100>1530 #tag_names1531 is expected to eq []1532 with tags1533 is expected to contain exactly "tag1", "tag2", and "tag3"1534 #debian_incoming?1535 is expected to eq false1536 with debian_incoming1537 is expected to eq true1538 with debian_package1539 is expected to eq false1540 #debian_package?1541 is expected to eq false1542 with debian_incoming1543 is expected to eq false1544 with debian_package1545 is expected to eq true1546 #infrastructure_package?1547 is expected to eq false1548 with generic package1549 is expected to eq false1550 with terraform module package1551 is expected to eq true1552 plan_limits1553 File size limits for maven1554 plan_limits includes column maven_max_file_size1555 File size limits for npm1556 plan_limits includes column npm_max_file_size1557 File size limits for conan1558 plan_limits includes column conan_max_file_size1559 File size limits for nuget1560 plan_limits includes column nuget_max_file_size1561 File size limits for pypi1562 plan_limits includes column pypi_max_file_size1563 File size limits for generic1564 plan_limits includes column generic_packages_max_file_size1565 File size limits for golang1566 plan_limits includes column golang_max_file_size1567 File size limits for debian1568 plan_limits includes column debian_max_file_size1569 File size limits for rubygems1570 plan_limits includes column rubygems_max_file_size1571 File size limits for helm1572 plan_limits includes column helm_max_file_size1573 File size limits for terraform_module1574 plan_limits includes column terraform_module_max_file_size1575 File size limits for rpm1576 plan_limits includes column rpm_max_file_size1577 #original_build_info1578 without build_infos1579 returns nil1580 with build_infos1581 returns the first build info1582 #package_settings1583 returns the namespace package_settings1584 #sync_maven_metadata1585 enqueues a sync worker job1586 with no user1587 behaves like not enqueuing a sync worker job1588 does not enqueue a sync worker job1589 with a versionless maven package1590 behaves like not enqueuing a sync worker job1591 does not enqueue a sync worker job1592 with a non maven package1593 behaves like not enqueuing a sync worker job1594 does not enqueue a sync worker job1595 #mark_package_files_for_destruction1596 enqueues a sync worker job1597 for a package non pending destruction1598 does not enqueues a sync worker job1599 #create_build_infos!1600 with a valid build1601 creates a build info1602 with an already existing build info1603 does not create a build info1604 with a nil build1605 does not create a build info1606 with a build without a pipeline1607 does not create a build info1608 with identical pending destruction package1609 for package format maven1610 is expected to be valid1611 for package format npm1612 is expected to be valid1613 for package format conan1614 is expected to be valid1615 for package format nuget1616 is expected to be valid1617 for package format pypi1618 is expected to be valid1619 for package format composer1620 is expected to be valid1621 for package format generic1622 is expected to be valid1623 for package format golang1624 is expected to be valid1625 for package format debian1626 is expected to be valid1627 for package format rubygems1628 is expected to be valid1629 for package format helm1630 is expected to be valid1631 for package format terraform_module1632 is expected to be valid1633 for package format rpm1634 is expected to be valid1635 #normalized_pypi_name1636 package_name: "ASDF", normalized_name: "asdf"1637 is expected to eq "asdf"1638 package_name: "a.B_c-d", normalized_name: "a-b-c-d"1639 is expected to eq "a-b-c-d"1640 package_name: "a-------b....c___d", normalized_name: "a-b-c-d"1641 is expected to eq "a-b-c-d"1642 #touch_last_downloaded_at1643 updates the downloaded_at1644 #publish_creation_event1645 when package is generic1646 publishes an event1647 when package is not generic1648 does not create event1649rake gitlab:storage:*1650 gitlab:storage:migrate_to_hashed1651 with rollback already scheduled1652 does nothing1653 with 0 legacy projects1654 does nothing1655 with 3 legacy projects1656 enqueues migrations and count projects correctly1657 behaves like handles custom BATCH env var1658 in batches of 11659 enqueues one HashedStorage::MigratorWorker per project1660 in batches of 21661 enqueues one HashedStorage::MigratorWorker per 2 projects1662 with same id in range1663 displays message when project cant be found1664 displays a message when project exists but its already migrated1665 enqueues migration when project can be found1666 gitlab:storage:rollback_to_legacy1667 behaves like make sure database is writable1668 read-only database1669 does nothing1670 with migration already scheduled1671 does nothing1672 with 0 hashed projects1673 does nothing1674 with 3 hashed projects1675 enqueues migrations and count projects correctly1676 behaves like handles custom BATCH env var1677 in batches of 11678 enqueues one HashedStorage::RollbackerWorker per project1679 in batches of 21680 enqueues one HashedStorage::RollbackerWorker per 2 projects1681 gitlab:storage:legacy_projects1682 behaves like rake entities summary1683 with existing 3 legacy projects1684 reports 3 legacy projects1685 without any legacy project1686 displays message for empty results1687 behaves like wait until database is ready1688 checks if the database is ready once1689 handles custom env vars1690 tries for 3 times, polling every 0.1 seconds1691 gitlab:storage:list_legacy_projects1692 behaves like rake listing entities1693 limiting to 21694 lists 2 out of 3 legacy projects1695 without any legacy project1696 displays message for empty results1697 gitlab:storage:hashed_projects1698 behaves like rake entities summary1699 with existing 3 hashed projects1700 reports 3 hashed projects1701 without any hashed project1702 displays message for empty results1703 gitlab:storage:list_hashed_projects1704 behaves like rake listing entities1705 limiting to 21706 lists 2 out of 3 hashed projects1707 without any hashed project1708 displays message for empty results1709 gitlab:storage:legacy_attachments1710 behaves like rake entities summary1711 with existing 3 legacy attachments1712 reports 3 legacy attachments1713 without any legacy attachment1714 displays message for empty results1715 behaves like wait until database is ready1716 checks if the database is ready once1717 handles custom env vars1718 tries for 3 times, polling every 0.1 seconds1719 gitlab:storage:list_legacy_attachments1720 behaves like rake listing entities1721 limiting to 21722 lists 2 out of 3 legacy attachments1723 without any legacy attachment1724 displays message for empty results1725 gitlab:storage:hashed_attachments1726 behaves like rake entities summary1727 with existing 3 hashed attachments1728 reports 3 hashed attachments1729 without any hashed attachment1730 displays message for empty results1731 gitlab:storage:list_hashed_attachments1732 behaves like rake listing entities1733 limiting to 21734 lists 2 out of 3 hashed attachments1735 without any hashed attachment1736 displays message for empty results1737Gitlab::Database::LoadBalancing1738 .base_models1739 returns the models to apply load balancing to1740 returns the models as a frozen array1741 .each_load_balancer1742 yields every load balancer to the supplied block1743 returns an Enumerator when no block is given1744 .primary_only?1745 returns true if all load balancers have no replicas1746 returns false if at least one has replicas1747 .release_hosts1748 releases the host of every load balancer1749 .db_role_for_connection1750 when the NullPool is used for connection1751 returns unknown1752 when the load balancing is configured1753 when a proxy connection is used1754 returns :unknown1755 when an invalid connection is used1756 returns :unknown1757 when a null connection is used1758 returns :unknown1759 when a read connection is used1760 returns :replica1761 when a read_write connection is used1762 returns :primary1763 LoadBalancing integration tests1764-- create_table(:_test_load_balancing_test, {:force=>true})1765 -> 0.0049s1766 queries: -> { model.first }, include_transaction: false, expected_results: [:replica]1767 redirects queries to the right roles1768 queries: -> { model.find_by(id: 123) }, include_transaction: false, expected_results: [:replica]1769 redirects queries to the right roles1770 queries: -> { model.where(name: 'hello').to_a }, include_transaction: false, expected_results: [:replica]1771 redirects queries to the right roles1772 queries: -> { model.create!(name: 'test1') }, include_transaction: false, expected_results: [:primary]1773 redirects queries to the right roles1774 queries: -> {1775 instance = model.create!(name: 'test1')1776 instance.update!(name: 'test2')1777 }, include_transaction: false, expected_results: [:primary, :primary]1778 redirects queries to the right roles1779 queries: -> { model.update_all(name: 'test2') }, include_transaction: false, expected_results: [:primary]1780 redirects queries to the right roles1781 queries: -> {1782 instance = model.create!(name: 'test1')1783 instance.destroy!1784 }, include_transaction: false, expected_results: [:primary, :primary]1785 redirects queries to the right roles1786 queries: -> { model.delete_all }, include_transaction: false, expected_results: [:primary]1787 redirects queries to the right roles1788 queries: -> { model.connection.exec_query('SELECT 1').to_a }, include_transaction: false, expected_results: [:primary]1789 redirects queries to the right roles1790 queries: -> {1791 model.first1792 model.create!(name: 'test1')1793 model.first1794 model.find_by(name: 'test1')1795 }, include_transaction: false, expected_results: [:replica, :primary, :primary, :primary]1796 redirects queries to the right roles1797 queries: -> {1798 model.transaction do1799 model.find_by(name: 'test1')1800 model.create!(name: 'test1')1801 instance = model.find_by(name: 'test1')1802 instance.update!(name: 'test2')1803 end1804 model.find_by(name: 'test1')1805 }, include_transaction: true, expected_results: [:primary, :primary, :primary, :primary, :primary, :primary, :primary]1806 redirects queries to the right roles1807 queries: -> {1808 model.transaction do1809 model.transaction do1810 model.create!(name: 'test1')1811 end1812 model.update_all(name: 'test2')1813 end1814 model.find_by(name: 'test1')1815 }, include_transaction: true, expected_results: [:primary, :primary, :primary, :primary, :primary]1816 redirects queries to the right roles1817 queries: -> {1818 model.transaction do1819 model.first1820 model.where(name: 'test1').to_a1821 end1822 }, include_transaction: true, expected_results: [:primary, :primary, :primary, :primary]1823 redirects queries to the right roles1824 queries: -> {1825 ::Gitlab::Database::LoadBalancing::Session.current.use_primary do1826 model.first1827 model.where(name: 'test1').to_a1828 end1829 model.first1830 }, include_transaction: false, expected_results: [:primary, :primary, :replica]1831 redirects queries to the right roles1832 queries: -> {1833 model.first1834 ::Gitlab::Database::LoadBalancing::Session.current.use_primary!1835 model.where(name: 'test1').to_a1836 }, include_transaction: false, expected_results: [:replica, :primary]1837 redirects queries to the right roles1838 queries: -> {1839 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1840 model.where(name: 'test1').to_a1841 end1842 }, include_transaction: false, expected_results: [:replica]1843 redirects queries to the right roles1844 queries: -> {1845 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1846 model.create!(name: 'test1')1847 end1848 }, include_transaction: false, expected_results: [:primary]1849 redirects queries to the right roles1850 queries: -> {1851 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1852 model.connection.exec_query("SELECT 1")1853 end1854 }, include_transaction: false, expected_results: [:primary]1855 redirects queries to the right roles1856 queries: -> {1857 ::Gitlab::Database::LoadBalancing::Session.current.use_primary!1858 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1859 model.where(name: 'test1').to_a1860 end1861 }, include_transaction: false, expected_results: [:replica]1862 redirects queries to the right roles1863 queries: -> {1864 ::Gitlab::Database::LoadBalancing::Session.current.use_primary!1865 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1866 model.create!(name: 'test1')1867 end1868 }, include_transaction: false, expected_results: [:primary]1869 redirects queries to the right roles1870 queries: -> {1871 ::Gitlab::Database::LoadBalancing::Session.current.use_primary!1872 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1873 model.connection.exec_query('SELECT 1')1874 end1875 }, include_transaction: false, expected_results: [:primary]1876 redirects queries to the right roles1877 queries: -> {1878 ::Gitlab::Database::LoadBalancing::Session.current.use_primary do1879 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1880 model.where(name: 'test1').to_a1881 end1882 end1883 }, include_transaction: false, expected_results: [:replica]1884 redirects queries to the right roles1885 queries: -> {1886 ::Gitlab::Database::LoadBalancing::Session.current.write!1887 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1888 model.where(name: 'test1').to_a1889 end1890 }, include_transaction: false, expected_results: [:replica]1891 redirects queries to the right roles1892 queries: -> {1893 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1894 model.first1895 model.where(name: 'test1').to_a1896 end1897 }, include_transaction: false, expected_results: [:replica, :replica]1898 redirects queries to the right roles1899 queries: -> {1900 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1901 model.transaction do1902 model.first1903 model.where(name: 'test1').to_a1904 end1905 end1906 }, include_transaction: false, expected_results: [:replica, :replica]1907 redirects queries to the right roles1908 queries: -> {1909 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1910 model.connection.exec_query("SELECT 1")1911 end1912 }, include_transaction: false, expected_results: [:replica]1913 redirects queries to the right roles1914 queries: -> {1915 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1916 model.transaction do1917 model.connection.exec_query("SET LOCAL statement_timeout = 5000")1918 model.count1919 end1920 end1921 }, include_transaction: true, expected_results: [:replica, :replica, :replica, :replica]1922 redirects queries to the right roles1923 queries: -> {1924 model.create!(name: 'Test1')1925 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1926 model.connection.exec_query("SELECT 1")1927 end1928 }, include_transaction: false, expected_results: [:primary, :primary]1929 redirects queries to the right roles1930 queries: -> {1931 ::Gitlab::Database::LoadBalancing::Session.current.use_primary!1932 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1933 model.connection.exec_query("SELECT 1")1934 end1935 }, include_transaction: false, expected_results: [:primary]1936 redirects queries to the right roles1937 queries: -> {1938 ::Gitlab::Database::LoadBalancing::Session.current.use_primary do1939 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1940 model.connection.exec_query("SELECT 1")1941 end1942 end1943 }, include_transaction: false, expected_results: [:primary]1944 redirects queries to the right roles1945 queries: -> {1946 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1947 ::Gitlab::Database::LoadBalancing::Session.current.use_primary do1948 model.connection.exec_query("SELECT 1")1949 end1950 end1951 }, include_transaction: false, expected_results: [:primary]1952 redirects queries to the right roles1953 queries: -> {1954 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1955 model.connection.exec_query("SELECT 1")1956 model.delete_all1957 model.connection.exec_query("SELECT 1")1958 end1959 }, include_transaction: false, expected_results: [:replica, :primary, :primary]1960 redirects queries to the right roles1961 queries: -> {1962 ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries do1963 ::Gitlab::Database::LoadBalancing::Session.current.fallback_to_replicas_for_ambiguous_queries do1964 model.connection.exec_query('SELECT 1')1965 model.where(name: 'test1').to_a1966 end1967 end1968 }, include_transaction: false, expected_results: [:replica, :replica]1969 redirects queries to the right roles1970 custom connection handling1971 queries: -> {1972 ::Gitlab::Database::LoadBalancing::Session.current.use_primary!1973 model.connection.clear_cache!1974 model.connection.schema_cache.add('users')1975 model.connection.pool.release_connection1976 }, expected_role: :replica1977 redirects queries to the right roles1978 queries: -> {1979 connection = model.connection1980 connection.select_one('SELECT 1')1981 connection.pool.release_connection1982 }, expected_role: :replica1983 redirects queries to the right roles1984 queries: -> {1985 connection = model.retrieve_connection1986 connection.select_one('SELECT 1')1987 connection.pool.release_connection1988 }, expected_role: :primary1989 redirects queries to the right roles1990 a write inside a transaction inside fallback_to_replicas_for_ambiguous_queries block1991 raises an exception1992-- drop_table(:_test_load_balancing_test, {:force=>true})1993 -> 0.0111s1994Namespace::PackageSetting1995 relationships1996 is expected to belong to namespace required: false1997 validations1998 is expected to validate that :namespace cannot be empty/falsy1999 #maven_duplicates_allowed2000 is expected to allow :maven_duplicates_allowed to be ‹true›2001 is expected to allow :maven_duplicates_allowed to be ‹false›2002 is expected not to allow :maven_duplicates_allowed to be ‹nil›2003 is expected to allow :generic_duplicates_allowed to be ‹true›2004 is expected to allow :generic_duplicates_allowed to be ‹false›2005 is expected not to allow :generic_duplicates_allowed to be ‹nil›2006 regex values2007 is expected to allow :maven_duplicate_exception_regex to be ‹"SNAPSHOT"›2008 is expected to allow :maven_duplicate_exception_regex to be ‹".*"›2009 is expected to allow :maven_duplicate_exception_regex to be ‹"v.+"›2010 is expected to allow :maven_duplicate_exception_regex to be ‹"v10.1.*"›2011 is expected to allow :maven_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP)"›2012 is expected not to allow :maven_duplicate_exception_regex to be ‹"["›2013 is expected not to allow :maven_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP"›2014 is expected to allow :generic_duplicate_exception_regex to be ‹"SNAPSHOT"›2015 is expected to allow :generic_duplicate_exception_regex to be ‹".*"›2016 is expected to allow :generic_duplicate_exception_regex to be ‹"v.+"›2017 is expected to allow :generic_duplicate_exception_regex to be ‹"v10.1.*"›2018 is expected to allow :generic_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP)"›2019 is expected not to allow :generic_duplicate_exception_regex to be ‹"["›2020 is expected not to allow :generic_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP"›2021 #duplicates_allowed?2022 package types with package_settings2023 duplicates_allowed: true, duplicate_exception_regex: "", result: true2024 for maven_package2025 is expected to equal true2026 duplicates_allowed: false, duplicate_exception_regex: "", result: false2027 for maven_package2028 is expected to equal false2029 duplicates_allowed: false, duplicate_exception_regex: ".*", result: true2030 for maven_package2031 is expected to equal true2032 duplicates_allowed: false, duplicate_exception_regex: "fo.*", result: true2033 for maven_package2034 is expected to equal true2035 duplicates_allowed: false, duplicate_exception_regex: "be.*", result: true2036 for maven_package2037 is expected to equal true2038 duplicates_allowed: true, duplicate_exception_regex: "", result: true2039 for generic_package2040 is expected to equal true2041 duplicates_allowed: false, duplicate_exception_regex: "", result: false2042 for generic_package2043 is expected to equal false2044 duplicates_allowed: false, duplicate_exception_regex: ".*", result: true2045 for generic_package2046 is expected to equal true2047 duplicates_allowed: false, duplicate_exception_regex: "fo.*", result: true2048 for generic_package2049 is expected to equal true2050 duplicates_allowed: false, duplicate_exception_regex: "be.*", result: true2051 for generic_package2052 is expected to equal true2053 package types without package_settings2054 raises an error2055 raises an error2056 raises an error2057 raises an error2058 raises an error2059 raises an error2060 raises an error2061 package forwarding attributes2062 behaves like a cascading namespace setting boolean attribute2063 #maven_package_requests_forwarding2064 when there is no parent2065 and the value is not nil2066 returns the local value2067 and the value is nil2068 returns the application settings value2069 when parent does not lock the attribute2070 and value is not nil2071 returns local setting when present2072 returns the parent value when local value is nil2073 returns the correct dirty value2074 does not return the application setting value when parent value is false2075 and the value is nil2076 cascades to the application settings value2077 when multiple ancestors set a value2078 returns the closest ancestor value2079 when parent locks the attribute2080 returns the parent value2081 does not allow the local value to be saved2082 when the application settings locks the attribute2083 returns the application setting value2084 does not allow the local value to be saved2085 when parent locked the attribute then the application settings locks it2086 returns the application setting value2087 #maven_package_requests_forwarding?2088 aliases the method when the attribute is a boolean2089 #maven_package_requests_forwarding=2090 parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil2091 validates starting values from before block2092 does not save the value locally when it matches cascaded value2093 when mass assigned2094 does not save the value locally when it matches cascaded value2095 parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil2096 validates starting values from before block2097 does not save the value locally when it matches cascaded value2098 when mass assigned2099 does not save the value locally when it matches cascaded value2100 parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true2101 validates starting values from before block2102 does not save the value locally when it matches cascaded value2103 when mass assigned2104 does not save the value locally when it matches cascaded value2105 parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true2106 validates starting values from before block2107 does not save the value locally when it matches cascaded value2108 when mass assigned2109 does not save the value locally when it matches cascaded value2110 parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false2111 validates starting values from before block2112 does not save the value locally when it matches cascaded value2113 when mass assigned2114 does not save the value locally when it matches cascaded value2115 parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false2116 validates starting values from before block2117 does not save the value locally when it matches cascaded value2118 when mass assigned2119 does not save the value locally when it matches cascaded value2120 parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil2121 validates starting values from before block2122 does not save the value locally when it matches cascaded value2123 when mass assigned2124 does not save the value locally when it matches cascaded value2125 parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true2126 validates starting values from before block2127 does not save the value locally when it matches cascaded value2128 when mass assigned2129 does not save the value locally when it matches cascaded value2130 parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false2131 validates starting values from before block2132 does not save the value locally when it matches cascaded value2133 when mass assigned2134 does not save the value locally when it matches cascaded value2135 parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true2136 validates starting values from before block2137 does not save the value locally when it matches cascaded value2138 when mass assigned2139 does not save the value locally when it matches cascaded value2140 #maven_package_requests_forwarding_locked?2141 when attribute is locked by self2142 is not locked by default2143 is locked when including self2144 when parent does not lock the attribute2145 behaves like not locked2146 is not locked by an ancestor2147 is not locked by application setting2148 does not return a locked namespace2149 when parent locks the attribute2150 is locked by an ancestor2151 is not locked by application setting2152 returns a locked namespace settings object2153 when not locked by application settings2154 behaves like not locked2155 is not locked by an ancestor2156 is not locked by application setting2157 does not return a locked namespace2158 when locked by application settings2159 is not locked by an ancestor2160 is locked by application setting2161 does not return a locked namespace2162 #lock_maven_package_requests_forwarding=2163 when parent locks the attribute2164 does not allow the attribute to be saved2165 when parent does not lock the attribute2166 allows the lock to be set when the attribute is not nil2167 does not allow the lock to be saved when the attribute is nil2168 copies the cascaded value when locking the attribute if the local value is nil2169 when application settings locks the attribute2170 does not allow the attribute to be saved2171 when application_settings does not lock the attribute2172 allows the attribute to be saved2173 after update callback2174 clears descendant locks2175 behaves like a cascading namespace setting boolean attribute2176 #pypi_package_requests_forwarding2177 when there is no parent2178 and the value is not nil2179 returns the local value2180 and the value is nil2181 returns the application settings value2182 when parent does not lock the attribute2183 and value is not nil2184 returns local setting when present2185 returns the parent value when local value is nil2186 returns the correct dirty value2187 does not return the application setting value when parent value is false2188 and the value is nil2189 cascades to the application settings value2190 when multiple ancestors set a value2191 returns the closest ancestor value2192 when parent locks the attribute2193 returns the parent value2194 does not allow the local value to be saved2195 when the application settings locks the attribute2196 returns the application setting value2197 does not allow the local value to be saved2198 when parent locked the attribute then the application settings locks it2199 returns the application setting value2200 #pypi_package_requests_forwarding?2201 aliases the method when the attribute is a boolean2202 #pypi_package_requests_forwarding=2203 parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil2204 validates starting values from before block2205 does not save the value locally when it matches cascaded value2206 when mass assigned2207 does not save the value locally when it matches cascaded value2208 parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil2209 validates starting values from before block2210 does not save the value locally when it matches cascaded value2211 when mass assigned2212 does not save the value locally when it matches cascaded value2213 parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true2214 validates starting values from before block2215 does not save the value locally when it matches cascaded value2216 when mass assigned2217 does not save the value locally when it matches cascaded value2218 parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true2219 validates starting values from before block2220 does not save the value locally when it matches cascaded value2221 when mass assigned2222 does not save the value locally when it matches cascaded value2223 parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false2224 validates starting values from before block2225 does not save the value locally when it matches cascaded value2226 when mass assigned2227 does not save the value locally when it matches cascaded value2228 parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false2229 validates starting values from before block2230 does not save the value locally when it matches cascaded value2231 when mass assigned2232 does not save the value locally when it matches cascaded value2233 parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil2234 validates starting values from before block2235 does not save the value locally when it matches cascaded value2236 when mass assigned2237 does not save the value locally when it matches cascaded value2238 parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true2239 validates starting values from before block2240 does not save the value locally when it matches cascaded value2241 when mass assigned2242 does not save the value locally when it matches cascaded value2243 parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false2244 validates starting values from before block2245 does not save the value locally when it matches cascaded value2246 when mass assigned2247 does not save the value locally when it matches cascaded value2248 parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true2249 validates starting values from before block2250 does not save the value locally when it matches cascaded value2251 when mass assigned2252 does not save the value locally when it matches cascaded value2253 #pypi_package_requests_forwarding_locked?2254 when attribute is locked by self2255 is not locked by default2256 is locked when including self2257 when parent does not lock the attribute2258 behaves like not locked2259 is not locked by an ancestor2260 is not locked by application setting2261 does not return a locked namespace2262 when parent locks the attribute2263 is locked by an ancestor2264 is not locked by application setting2265 returns a locked namespace settings object2266 when not locked by application settings2267 behaves like not locked2268 is not locked by an ancestor2269 is not locked by application setting2270 does not return a locked namespace2271 when locked by application settings2272 is not locked by an ancestor2273 is locked by application setting2274 does not return a locked namespace2275 #lock_pypi_package_requests_forwarding=2276 when parent locks the attribute2277 does not allow the attribute to be saved2278 when parent does not lock the attribute2279 allows the lock to be set when the attribute is not nil2280 does not allow the lock to be saved when the attribute is nil2281 copies the cascaded value when locking the attribute if the local value is nil2282 when application settings locks the attribute2283 does not allow the attribute to be saved2284 when application_settings does not lock the attribute2285 allows the attribute to be saved2286 after update callback2287 clears descendant locks2288 behaves like a cascading namespace setting boolean attribute2289 #npm_package_requests_forwarding2290 when there is no parent2291 and the value is not nil2292 returns the local value2293 and the value is nil2294 returns the application settings value2295 when parent does not lock the attribute2296 and value is not nil2297 returns local setting when present2298 returns the parent value when local value is nil2299 returns the correct dirty value2300 does not return the application setting value when parent value is false2301 and the value is nil2302 cascades to the application settings value2303 when multiple ancestors set a value2304 returns the closest ancestor value2305 when parent locks the attribute2306 returns the parent value2307 does not allow the local value to be saved2308 when the application settings locks the attribute2309 returns the application setting value2310 does not allow the local value to be saved2311 when parent locked the attribute then the application settings locks it2312 returns the application setting value2313 #npm_package_requests_forwarding?2314 aliases the method when the attribute is a boolean2315 #npm_package_requests_forwarding=2316 parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil2317 validates starting values from before block2318 does not save the value locally when it matches cascaded value2319 when mass assigned2320 does not save the value locally when it matches cascaded value2321 parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil2322 validates starting values from before block2323 does not save the value locally when it matches cascaded value2324 when mass assigned2325 does not save the value locally when it matches cascaded value2326 parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true2327 validates starting values from before block2328 does not save the value locally when it matches cascaded value2329 when mass assigned2330 does not save the value locally when it matches cascaded value2331 parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true2332 validates starting values from before block2333 does not save the value locally when it matches cascaded value2334 when mass assigned2335 does not save the value locally when it matches cascaded value2336 parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false2337 validates starting values from before block2338 does not save the value locally when it matches cascaded value2339 when mass assigned2340 does not save the value locally when it matches cascaded value2341 parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false2342 validates starting values from before block2343 does not save the value locally when it matches cascaded value2344 when mass assigned2345 does not save the value locally when it matches cascaded value2346 parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil2347 validates starting values from before block2348 does not save the value locally when it matches cascaded value2349 when mass assigned2350 does not save the value locally when it matches cascaded value2351 parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true2352 validates starting values from before block2353 does not save the value locally when it matches cascaded value2354 when mass assigned2355 does not save the value locally when it matches cascaded value2356 parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false2357 validates starting values from before block2358 does not save the value locally when it matches cascaded value2359 when mass assigned2360 does not save the value locally when it matches cascaded value2361 parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true2362 validates starting values from before block2363 does not save the value locally when it matches cascaded value2364 when mass assigned2365 does not save the value locally when it matches cascaded value2366 #npm_package_requests_forwarding_locked?2367 when attribute is locked by self2368 is not locked by default2369 is locked when including self2370 when parent does not lock the attribute2371 behaves like not locked2372 is not locked by an ancestor2373 is not locked by application setting2374 does not return a locked namespace2375 when parent locks the attribute2376 is locked by an ancestor2377 is not locked by application setting2378 returns a locked namespace settings object2379 when not locked by application settings2380 behaves like not locked2381 is not locked by an ancestor2382 is not locked by application setting2383 does not return a locked namespace2384 when locked by application settings2385 is not locked by an ancestor2386 is locked by application setting2387 does not return a locked namespace2388 #lock_npm_package_requests_forwarding=2389 when parent locks the attribute2390 does not allow the attribute to be saved2391 when parent does not lock the attribute2392 allows the lock to be set when the attribute is not nil2393 does not allow the lock to be saved when the attribute is nil2394 copies the cascaded value when locking the attribute if the local value is nil2395 when application settings locks the attribute2396 does not allow the attribute to be saved2397 when application_settings does not lock the attribute2398 allows the attribute to be saved2399 after update callback2400 clears descendant locks2401WikiPagePolicy2402 when user is a direct project member2403 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 12404 grants the expected permissions2405 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 12406 grants the expected permissions2407 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 12408 grants the expected permissions2409 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 12410 grants the expected permissions2411 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 12412 grants the expected permissions2413 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 12414 grants the expected permissions2415 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 12416 grants the expected permissions2417 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 02418 grants the expected permissions2419 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 12420 grants the expected permissions2421 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 12422 grants the expected permissions2423 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 02424 grants the expected permissions2425 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 02426 grants the expected permissions2427 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 02428 grants the expected permissions2429 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 02430 grants the expected permissions2431 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 02432 grants the expected permissions2433 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 02434 grants the expected permissions2435 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 12436 grants the expected permissions2437 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 12438 grants the expected permissions2439 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 12440 grants the expected permissions2441 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 12442 grants the expected permissions2443 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 12444 grants the expected permissions2445 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 02446 grants the expected permissions2447 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 12448 grants the expected permissions2449 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 02450 grants the expected permissions2451 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 12452 grants the expected permissions2453 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 12454 grants the expected permissions2455 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 02456 grants the expected permissions2457 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 02458 grants the expected permissions2459 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 02460 grants the expected permissions2461 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 02462 grants the expected permissions2463 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 02464 grants the expected permissions2465 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 02466 grants the expected permissions2467 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 12468 grants the expected permissions2469 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 02470 grants the expected permissions2471 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 12472 grants the expected permissions2473 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 12474 grants the expected permissions2475 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 02476 grants the expected permissions2477 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 02478 grants the expected permissions2479 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 02480 grants the expected permissions2481 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 02482 grants the expected permissions2483 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 02484 grants the expected permissions2485 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 02486 grants the expected permissions2487 when user is an inherited member from the group2488 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 12489 grants the expected permissions2490 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 12491 grants the expected permissions2492 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 12493 grants the expected permissions2494 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 12495 grants the expected permissions2496 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 12497 grants the expected permissions2498 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 12499 grants the expected permissions2500 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 12501 grants the expected permissions2502 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 02503 grants the expected permissions2504 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 12505 grants the expected permissions2506 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 12507 grants the expected permissions2508 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 02509 grants the expected permissions2510 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 02511 grants the expected permissions2512 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 02513 grants the expected permissions2514 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 02515 grants the expected permissions2516 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 02517 grants the expected permissions2518 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 02519 grants the expected permissions2520 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 12521 grants the expected permissions2522 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 12523 grants the expected permissions2524 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 12525 grants the expected permissions2526 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 12527 grants the expected permissions2528 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 12529 grants the expected permissions2530 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 02531 grants the expected permissions2532 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 12533 grants the expected permissions2534 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 02535 grants the expected permissions2536 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 12537 grants the expected permissions2538 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 12539 grants the expected permissions2540 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 02541 grants the expected permissions2542 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 02543 grants the expected permissions2544 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 02545 grants the expected permissions2546 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 02547 grants the expected permissions2548 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 02549 grants the expected permissions2550 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 02551 grants the expected permissions2552 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 12553 grants the expected permissions2554 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 02555 grants the expected permissions2556 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 12557 grants the expected permissions2558 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 12559 grants the expected permissions2560 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 02561 grants the expected permissions2562 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 02563 grants the expected permissions2564 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 02565 grants the expected permissions2566 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 02567 grants the expected permissions2568 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 02569 grants the expected permissions2570 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 02571 grants the expected permissions2572Jobs/Deploy.gitlab-ci.yml2573 AUTO_DEPLOY_IMAGE_VERSION2574 corresponds to a published image in the registry2575 the created pipeline2576 with no cluster or agent2577 does not create any kubernetes deployment jobs2578 with only a disabled cluster2579 does not create any kubernetes deployment jobs2580 with an agent2581 behaves like pipeline with deployment jobs2582 on master2583 by default2584 when CI_DEPLOY_FREEZE is present2585 when CANARY_ENABLED2586 when STAGING_ENABLED2587 when INCREMENTAL_ROLLOUT_MODE == timed2588 when INCREMENTAL_ROLLOUT_ENABLED2589 when INCREMENTAL_ROLLOUT_MODE == manual2590 on branch2591 behaves like review app deployment2592 creates the review and stop_review jobs but no production jobs2593 does not include review when REVIEW_DISABLED2594 when INCREMENTAL_ROLLOUT_ENABLED2595 behaves like review app deployment2596 creates the review and stop_review jobs but no production jobs2597 does not include review when REVIEW_DISABLED2598 when INCREMENTAL_ROLLOUT_MODE == "timed"2599 behaves like review app deployment2600 creates the review and stop_review jobs but no production jobs2601 does not include review when REVIEW_DISABLED2602 when INCREMENTAL_ROLLOUT_MODE == "manual"2603 behaves like review app deployment2604 creates the review and stop_review jobs but no production jobs2605 does not include review when REVIEW_DISABLED2606 on tag2607 behaves like review app deployment2608 creates the review and stop_review jobs but no production jobs2609 does not include review when REVIEW_DISABLED2610 on merge request2611 has no jobs2612 with a cluster2613 behaves like pipeline with deployment jobs2614 on master2615 by default2616 when CI_DEPLOY_FREEZE is present2617 when CANARY_ENABLED2618 when STAGING_ENABLED2619 when INCREMENTAL_ROLLOUT_MODE == timed2620 when INCREMENTAL_ROLLOUT_ENABLED2621 when INCREMENTAL_ROLLOUT_MODE == manual2622 on branch2623 behaves like review app deployment2624 creates the review and stop_review jobs but no production jobs2625 does not include review when REVIEW_DISABLED2626 when INCREMENTAL_ROLLOUT_ENABLED2627 behaves like review app deployment2628 creates the review and stop_review jobs but no production jobs2629 does not include review when REVIEW_DISABLED2630 when INCREMENTAL_ROLLOUT_MODE == "timed"2631 behaves like review app deployment2632 creates the review and stop_review jobs but no production jobs2633 does not include review when REVIEW_DISABLED2634 when INCREMENTAL_ROLLOUT_MODE == "manual"2635 behaves like review app deployment2636 creates the review and stop_review jobs but no production jobs2637 does not include review when REVIEW_DISABLED2638 on tag2639 behaves like review app deployment2640 creates the review and stop_review jobs but no production jobs2641 does not include review when REVIEW_DISABLED2642 on merge request2643 has no jobs2644BroadcastMessage2645 # order random2646 is expected to be valid2647 .current2648 returns both types2649 behaves like time constrainted2650 returns message if time match2651 returns multiple messages if time match2652 returns empty list if time not come2653 returns empty list if time has passed2654 behaves like message cache2655 caches the output of the query for two weeks2656 expires the value if a broadcast message has ended2657 does not create new records2658 includes messages that need to be displayed in the future2659 does not clear the cache if only a future message should be displayed2660 behaves like matches with current path2661 returns message if it matches the target path2662 returns message if part of the target path matches2663 returns message if provided a path without a preceding slash2664 returns the message for empty target path2665 returns the message if target path is nil2666 does not return message if target path does not match2667 does not return message if target path does not match when using wildcard2668 does not return message if target path has no wild card at the end2669 does not return message if target path has wild card at the end2670 does return message if target path has wild card at the beginning and the end2671 does not return message if the target path is set but no current path is provided2672 behaves like matches with user access level2673 when target_access_levels is empty2674 returns the message if user access level is not nil2675 returns the message if user access level is nil2676 when target_access_levels is not empty2677 does not return the message if user access level is nil2678 returns the message if user access level is in target_access_levels2679 does not return the message if user access level is not in target_access_levels2680 behaves like handles stale cache data gracefully2681 when cache returns stale data (e.g. nil target_access_levels)2682 does not raise error (e.g. NoMethodError from nil.empty?)2683 when message is from cache2684 behaves like matches with current path2685 returns message if it matches the target path2686 returns message if part of the target path matches2687 returns message if provided a path without a preceding slash2688 returns the message for empty target path2689 returns the message if target path is nil2690 does not return message if target path does not match2691 does not return message if target path does not match when using wildcard2692 does not return message if target path has no wild card at the end2693 does not return message if target path has wild card at the end2694 does return message if target path has wild card at the beginning and the end2695 does not return message if the target path is set but no current path is provided2696 behaves like matches with user access level2697 when target_access_levels is empty2698 returns the message if user access level is not nil2699 returns the message if user access level is nil2700 when target_access_levels is not empty2701 does not return the message if user access level is nil2702 returns the message if user access level is in target_access_levels2703 does not return the message if user access level is not in target_access_levels2704 behaves like matches with current path2705 returns message if it matches the target path2706 returns message if part of the target path matches2707 returns message if provided a path without a preceding slash2708 returns the message for empty target path2709 returns the message if target path is nil2710 does not return message if target path does not match2711 does not return message if target path does not match when using wildcard2712 does not return message if target path has no wild card at the end2713 does not return message if target path has wild card at the end2714 does return message if target path has wild card at the beginning and the end2715 does not return message if the target path is set but no current path is provided2716 behaves like matches with user access level2717 when target_access_levels is empty2718 returns the message if user access level is not nil2719 returns the message if user access level is nil2720 when target_access_levels is not empty2721 does not return the message if user access level is nil2722 returns the message if user access level is in target_access_levels2723 does not return the message if user access level is not in target_access_levels2724 #flush_redis_cache2725 flushes the Redis cache2726 default values2727 is expected to eq "#E75E40"2728 is expected to eq "#FFFFFF"2729 #ended?2730 is truthy when ends_at has passed2731 is falsey when ends_at is in the future2732 #active?2733 is truthy when started and not ended2734 is falsey when ended2735 is falsey when not started2736 .current_banner_messages2737 only returns banners2738 behaves like time constrainted2739 returns message if time match2740 returns multiple messages if time match2741 returns empty list if time not come2742 returns empty list if time has passed2743 behaves like message cache2744 caches the output of the query for two weeks2745 expires the value if a broadcast message has ended2746 does not create new records2747 includes messages that need to be displayed in the future2748 does not clear the cache if only a future message should be displayed2749 behaves like matches with current path2750 returns message if it matches the target path2751 returns message if part of the target path matches2752 returns message if provided a path without a preceding slash2753 returns the message for empty target path2754 returns the message if target path is nil2755 does not return message if target path does not match2756 does not return message if target path does not match when using wildcard2757 does not return message if target path has no wild card at the end2758 does not return message if target path has wild card at the end2759 does return message if target path has wild card at the beginning and the end2760 does not return message if the target path is set but no current path is provided2761 behaves like matches with user access level2762 when target_access_levels is empty2763 returns the message if user access level is not nil2764 returns the message if user access level is nil2765 when target_access_levels is not empty2766 does not return the message if user access level is nil2767 returns the message if user access level is in target_access_levels2768 does not return the message if user access level is not in target_access_levels2769 behaves like handles stale cache data gracefully2770 when cache returns stale data (e.g. nil target_access_levels)2771 does not raise error (e.g. NoMethodError from nil.empty?)2772 when message is from cache2773 behaves like matches with current path2774 returns message if it matches the target path2775 returns message if part of the target path matches2776 returns message if provided a path without a preceding slash2777 returns the message for empty target path2778 returns the message if target path is nil2779 does not return message if target path does not match2780 does not return message if target path does not match when using wildcard2781 does not return message if target path has no wild card at the end2782 does not return message if target path has wild card at the end2783 does return message if target path has wild card at the beginning and the end2784 does not return message if the target path is set but no current path is provided2785 behaves like matches with user access level2786 when target_access_levels is empty2787 returns the message if user access level is not nil2788 returns the message if user access level is nil2789 when target_access_levels is not empty2790 does not return the message if user access level is nil2791 returns the message if user access level is in target_access_levels2792 does not return the message if user access level is not in target_access_levels2793 #attributes2794 includes message_html field2795 #started?2796 is truthy when starts_at has passed2797 is falsey when starts_at is in the future2798 validations2799 is expected to allow :color to be ‹nil›2800 is expected to allow :color to be ‹"#000"›2801 is expected to allow :color to be ‹"#AABBCC"›2802 is expected not to allow :color to be ‹"000"›2803 is expected to allow :font to be ‹nil›2804 is expected to allow :font to be ‹"#000"›2805 is expected to allow :font to be ‹"#AABBCC"›2806 is expected not to allow :font to be ‹"000"›2807 is expected to allow :broadcast_type to be ‹1›2808 is expected not to allow :broadcast_type to be ‹nil›2809 is expected not to allow :target_access_levels to be ‹nil›2810 is expected to validate that :target_access_levels is either ‹10›, ‹20›, ‹30›, ‹40›, or ‹50›2811 .current_notification_messages2812 only returns notifications2813 behaves like time constrainted2814 returns message if time match2815 returns multiple messages if time match2816 returns empty list if time not come2817 returns empty list if time has passed2818 behaves like message cache2819 caches the output of the query for two weeks2820 expires the value if a broadcast message has ended2821 does not create new records2822 includes messages that need to be displayed in the future2823 does not clear the cache if only a future message should be displayed2824 behaves like matches with current path2825 returns message if it matches the target path2826 returns message if part of the target path matches2827 returns message if provided a path without a preceding slash2828 returns the message for empty target path2829 returns the message if target path is nil2830 does not return message if target path does not match2831 does not return message if target path does not match when using wildcard2832 does not return message if target path has no wild card at the end2833 does not return message if target path has wild card at the end2834 does return message if target path has wild card at the beginning and the end2835 does not return message if the target path is set but no current path is provided2836 behaves like matches with user access level2837 when target_access_levels is empty2838 returns the message if user access level is not nil2839 returns the message if user access level is nil2840 when target_access_levels is not empty2841 does not return the message if user access level is nil2842 returns the message if user access level is in target_access_levels2843 does not return the message if user access level is not in target_access_levels2844 behaves like handles stale cache data gracefully2845 when cache returns stale data (e.g. nil target_access_levels)2846 does not raise error (e.g. NoMethodError from nil.empty?)2847 when message is from cache2848 behaves like matches with current path2849 returns message if it matches the target path2850 returns message if part of the target path matches2851 returns message if provided a path without a preceding slash2852 returns the message for empty target path2853 returns the message if target path is nil2854 does not return message if target path does not match2855 does not return message if target path does not match when using wildcard2856 does not return message if target path has no wild card at the end2857 does not return message if target path has wild card at the end2858 does return message if target path has wild card at the beginning and the end2859 does not return message if the target path is set but no current path is provided2860 behaves like matches with user access level2861 when target_access_levels is empty2862 returns the message if user access level is not nil2863 returns the message if user access level is nil2864 when target_access_levels is not empty2865 does not return the message if user access level is nil2866 returns the message if user access level is in target_access_levels2867 does not return the message if user access level is not in target_access_levels2868Gitlab::Ci::Config::Entry::Job2869 behaves like with inheritable CI config2870 does prepend an Inheritable mixin2871 all inheritable entries are covered2872 all entries do have inherit flag2873 for non-inheritable entries2874 entry_key: :stage2875 inheritable_class does not define entry2876 entry_key: :only2877 inheritable_class does not define entry2878 entry_key: :except2879 inheritable_class does not define entry2880 entry_key: :rules2881 inheritable_class does not define entry2882 entry_key: :variables2883 inheritable_class does not define entry2884 entry_key: :inherit2885 inheritable_class does not define entry2886 entry_key: :script2887 inheritable_class does not define entry2888 entry_key: :needs2889 inheritable_class does not define entry2890 entry_key: :environment2891 inheritable_class does not define entry2892 entry_key: :coverage2893 inheritable_class does not define entry2894 entry_key: :release2895 inheritable_class does not define entry2896 entry_key: :parallel2897 inheritable_class does not define entry2898 entry_key: :allow_failure2899 inheritable_class does not define entry2900 entry_key: :id_tokens2901 inheritable_class does not define entry2902 entry_key: :publish2903 inheritable_class does not define entry2904 entry_key: :dast_configuration2905 inheritable_class does not define entry2906 entry_key: :secrets2907 inheritable_class does not define entry2908 for inheritable entries2909 entry_key: :before_script, entry_class: Gitlab::Ci::Config::Entry::Commands2910 inheritable_class does define entry2911 when is specified2912 does inherit value2913 when entry is specified2914 does not inherit value2915 when inheritable does not specify2916 does not inherit value2917 entry_key: :after_script, entry_class: Gitlab::Ci::Config::Entry::Commands2918 inheritable_class does define entry2919 when is specified2920 does inherit value2921 when entry is specified2922 does not inherit value2923 when inheritable does not specify2924 does not inherit value2925 entry_key: :hooks, entry_class: Gitlab::Ci::Config::Entry::Hooks2926 inheritable_class does define entry2927 when is specified2928 does inherit value2929 when entry is specified2930 does not inherit value2931 when inheritable does not specify2932 does not inherit value2933 entry_key: :cache, entry_class: Gitlab::Ci::Config::Entry::Caches2934 inheritable_class does define entry2935 when is specified2936 does inherit value2937 when entry is specified2938 does not inherit value2939 when inheritable does not specify2940 does not inherit value2941 entry_key: :image, entry_class: Gitlab::Ci::Config::Entry::Image2942 inheritable_class does define entry2943 when is specified2944 does inherit value2945 when entry is specified2946 does not inherit value2947 when inheritable does not specify2948 does not inherit value2949 entry_key: :services, entry_class: Gitlab::Ci::Config::Entry::Services2950 inheritable_class does define entry2951 when is specified2952 does inherit value2953 when entry is specified2954 does not inherit value2955 when inheritable does not specify2956 does not inherit value2957 entry_key: :interruptible, entry_class: Gitlab::Config::Entry::Boolean2958 inheritable_class does define entry2959 when is specified2960 does inherit value2961 when entry is specified2962 does not inherit value2963 when inheritable does not specify2964 does not inherit value2965 entry_key: :timeout, entry_class: Gitlab::Ci::Config::Entry::Timeout2966 inheritable_class does define entry2967 when is specified2968 does inherit value2969 when entry is specified2970 does not inherit value2971 when inheritable does not specify2972 does not inherit value2973 entry_key: :retry, entry_class: Gitlab::Ci::Config::Entry::Retry2974 inheritable_class does define entry2975 when is specified2976 does inherit value2977 when entry is specified2978 does not inherit value2979 when inheritable does not specify2980 does not inherit value2981 entry_key: :tags, entry_class: Gitlab::Ci::Config::Entry::Tags2982 inheritable_class does define entry2983 when is specified2984 does inherit value2985 when entry is specified2986 does not inherit value2987 when inheritable does not specify2988 does not inherit value2989 entry_key: :artifacts, entry_class: Gitlab::Ci::Config::Entry::Artifacts2990 inheritable_class does define entry2991 when is specified2992 does inherit value2993 when entry is specified2994 does not inherit value2995 when inheritable does not specify2996 does not inherit value2997 .nodes2998 when filtering all the entry/node names2999 is expected to include :before_script, :script, :after_script, :hooks, :stage, :cache, :image, :services, :only, :except, :rules, :needs, :variables, :artifacts, :environment, :coverage, :retry, :interruptible, :timeout, :release, :tags, :inherit, and :parallel3000 .matching?3001 when config is not a hash3002 is expected to be falsey3003 when config is a regular job3004 is expected to be truthy3005 when config is a bridge job3006 is expected to be falsey3007 when config is a hidden job3008 is expected to be falsey3009 when using the default job without script3010 is expected to be falsey3011 when using the default job with script3012 is expected to be truthy3013 validations3014 when entry config value is correct3015 #valid?3016 is valid3017 when job name is empty3018 reports error3019 when config uses both "when:" and "rules:"3020 is valid3021 when delayed job3022 when start_in is specified3023 is expected to be valid3024 when has needs3025 is expected to be valid3026 returns scheduling_type as :dag3027 when has dependencies3028 is expected to be valid3029 when it is a release3030 is expected to be valid3031 when rules are used3032 is expected to be valid3033 when entry value is not correct3034 incorrect config value type3035 #errors3036 reports error about a config type3037 when config is empty3038 #valid3039 is invalid3040 when unknown keys detected3041 #valid3042 is not valid3043 when script is not provided3044 returns error about missing script entry3045 when extends key is not a string3046 returns error about wrong value type3047 when parallel value is not correct3048 when it is not a numeric value3049 returns error about invalid type3050 when it is lower than two3051 returns error about value too low3052 when it is an empty hash3053 returns error about missing matrix3054 when delayed job3055 when start_in is specified3056 is expected to be valid3057 when start_in is empty3058 returns error about invalid type3059 when start_in is not formatted as a duration3060 returns error about invalid type3061 when start_in is longer than one week3062 returns error about exceeding the limit3063 when the `when` keyword is not a string3064 when it is an array3065 returns error3066 when it is a boolean3067 returns error3068 when start_in specified without delayed specification3069 returns error about invalid type3070 when it has dependencies3071 that are not a array of strings3072 returns error about invalid type3073 when the job has needs3074 and there are dependencies that are not included in needs3075 returns error about invalid data3076 and they are only cross pipeline needs3077 adds an error for dependency keyword usage3078 when timeout value is not correct3079 when it is higher than instance wide timeout3080 returns error about value too high3081 when it is not a duration3082 returns error about wrong value3083 when timeout value is correct3084 returns correct timeout3085 when it is a release3086 when `release:description` is missing3087 returns error3088 when invalid rules are used3089 with rules nested more than max allowed levels3090 is expected not to be valid3091 with rules with invalid keys3092 is expected not to be valid3093 when only: is used with rules:3094 returns error about mixing only: with rules:3095 and only: is blank3096 is valid:3097 and rules: is blank3098 is valid3099 when except: is used with rules:3100 returns error about mixing except: with rules:3101 and except: is blank3102 is valid3103 and rules: is blank3104 is valid3105 when only: and except: are both used with rules:3106 returns errors about mixing both only: and except: with rules:3107 when only: and except: as both blank3108 is valid3109 when rules: is blank3110 is valid3111 when job is not a pages job3112 if the config contains a publish entry3113 is invalid3114 when job is a pages job3115 when it does not have a publish entry3116 is valid3117 when it has a publish entry3118 is valid3119 #relevant?3120 is a relevant entry3121 #compose!3122 when job config overrides default config3123 overrides default config3124 when job config does not override default config3125 uses config from default entry3126 with workflow rules3127 name: "uses default only", has_workflow_rules?: false, only: nil, rules: nil, result: {:refs=>["branches", "tags"]}3128 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesDefaultOnlyHasWorkflowRulesFalseOnlyNilRulesNilResultRefsBranchesTags3129 name: "uses user only", has_workflow_rules?: false, only: ["branches"], rules: nil, result: {:refs=>["branches"]}3130 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesUserOnlyHasWorkflowRulesFalseOnlyBranchesRulesNilResultRefsBranches3131 name: "does not define only", has_workflow_rules?: false, only: nil, rules: [], result: nil3132 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesFalseOnlyNilRulesResultNil3133 name: "does not define only", has_workflow_rules?: true, only: nil, rules: nil, result: nil3134 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesTrueOnlyNilRulesNilResultNil3135 name: "uses user only", has_workflow_rules?: true, only: ["branches"], rules: nil, result: {:refs=>["branches"]}3136 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesUserOnlyHasWorkflowRulesTrueOnlyBranchesRulesNilResultRefsBranches3137 name: "does not define only", has_workflow_rules?: true, only: nil, rules: [], result: nil3138 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesTrueOnlyNilRulesResultNil3139 when workflow rules is used3140 when rules are used3141 does not define only3142 when rules are not used3143 does not define only3144 when composed3145 #value3146 when entry is correct3147 returns correct value3148 when job is using tags3149 when limit is reached3150 returns error3151 when limit is not reached3152 returns a valid entry3153 #manual_action?3154 when job is a manual action3155 is a manual action3156 when job is not a manual action3157 is not a manual action3158 #delayed?3159 when job is a delayed3160 is a delayed3161 when job is not a delayed3162 is not a delayed3163 #ignored?3164 when job is a manual action3165 when it is not specified if job is allowed to fail3166 is an ignored job3167 when job is allowed to fail3168 is an ignored job3169 when job is not allowed to fail3170 is not an ignored job3171 when job is dynamically allowed to fail3172 is not an ignored job3173 when job is not a manual action3174 when it is not specified if job is allowed to fail3175 is not an ignored job3176 does not return allow_failure3177 when job is allowed to fail3178 is an ignored job3179 does not return allow_failure_criteria3180 when job is not allowed to fail3181 is not an ignored job3182 does not return allow_failure_criteria3183 when job is dynamically allowed to fail3184 is not an ignored job3185 returns allow_failure_criteria3186gitlab:db namespace rake task3187 mark_migration_complete3188 with a single database3189 marks the migration complete on the given database (PENDING: Skipping because database ci exists)3190 with multiple databases3191 marks the migration complete on each database3192 when the single database task is used3193 marks the migration complete for the given database3194 with geo configured3195 does not create a task for the geo database (PENDING: Skipping because the geo database is not configured)3196 when the migration is already marked complete3197 prints a warning message3198 when an invalid version is given3199 prints an error and exits3200 configure3201 with a single database3202 when geo is not configured3203 when the schema is already loaded3204 migrates the database (PENDING: Skipping because database ci exists)3205 when the schema is not loaded3206 loads the schema and seeds the database (PENDING: Skipping because database ci exists)3207 when only a single table is present3208 loads the schema and seeds the database (PENDING: Skipping because database ci exists)3209 when loading the schema fails3210 does not seed the database (PENDING: Skipping because database ci exists)3211 SKIP_POST_DEPLOYMENT_MIGRATIONS environment variable set3212 when the schema is not loaded3213 adds the post deployment migration path before schema load (PENDING: Skipping because database ci exists)3214 when the schema is loaded3215 ignores post deployment migrations (PENDING: Skipping because database ci exists)3216 when geo is configured3217 when the main database is also configured3218 only configures the main database (PENDING: Skipping because database ci exists)3219 with multiple databases3220 when geo is not configured3221 when no database has the schema loaded3222 loads the schema and seeds all the databases3223 when both databases have the schema loaded3224 migrates the databases without seeding them3225 when only one database has the schema loaded3226 migrates and loads the schema correctly, without seeding the databases3227 when geo is configured3228 does not run tasks against geo (PENDING: Skipping because the geo database is not configured)3229 schema inconsistencies3230 prints the inconsistency message3231 dictionary generate3232 when the dictionary files do not exist3233 generate the dictionary files3234 do not generate the dictionary files for test tables3235 when a new model class is added to the codebase3236 appends new classes to the dictionary3237 when a model class is removed from the codebase3238 keeps the dictionary classes3239 unattended3240 schema_migration_table_exists: false, needs_migrations: false, rake_output: "unattended_migrations_completed"3241 outputs changed message for automation after operations happen3242 schema_migration_table_exists: false, needs_migrations: true, rake_output: "unattended_migrations_completed"3243 outputs changed message for automation after operations happen3244 schema_migration_table_exists: true, needs_migrations: false, rake_output: "unattended_migrations_static"3245 outputs changed message for automation after operations happen3246 schema_migration_table_exists: true, needs_migrations: true, rake_output: "unattended_migrations_completed"3247 outputs changed message for automation after operations happen3248 clean_structure_sql3249 can be executed multiple times within another rake task3250 drop_tables3251 with a single database3252 drops all objects for the database (PENDING: Skipping because some of the extra databases [:ci, :main_clusterwide] are setup)3253 with multiple databases3254 drops all objects for all databases3255 when the single database task is used3256 drops all objects for the given database3257 with geo configured3258 does not create a task for the geo database (PENDING: Skipping because the geo database is not configured)3259 create_dynamic_partitions3260 with a single database3261 delegates syncing of partitions without limiting databases (PENDING: Skipping because some of the extra databases [:ci, :main_clusterwide] are setup)3262 with multiple databases3263 when running the multi-database variant3264 delegates syncing of partitions without limiting databases3265 when running a single-database variant3266 delegates syncing of partitions for the chosen database3267 with geo configured3268 does not create a task for the geo database (PENDING: Skipping because the geo database is not configured)3269 reindex3270 with a single database3271 delegates to Gitlab::Database::Reindexing3272 when reindexing is not enabled3273 is a no-op3274 with multiple databases3275 delegates to Gitlab::Database::Reindexing without a specific database3276 when the single database task is used3277 delegates to Gitlab::Database::Reindexing with a specific database3278 when reindexing is not enabled3279 is a no-op3280 with geo configured3281 does not create a task for the geo database (PENDING: Skipping because the geo database is not configured)3282 enqueue_reindexing_action3283 creates an entry in the queue3284 defaults to main database3285 execute_async_index_operations3286 delegates ci task to Gitlab::Database::AsyncIndexes3287 delegates ci task to Gitlab::Database::AsyncIndexes with specified argument3288 delegates main task to Gitlab::Database::AsyncIndexes3289 delegates main task to Gitlab::Database::AsyncIndexes with specified argument3290 delegates all task to every database with higher default for dev3291 delegates all task to every database with lower default for prod3292 delegates all task to every database with specified argument3293 when feature is not enabled3294 is a no-op3295 with geo configured3296 does not create a task for the geo database (PENDING: Skipping because the geo database is not configured)3297 validate_async_constraints3298 delegates ci task to Gitlab::Database::AsyncConstraints3299 delegates ci task to Gitlab::Database::AsyncConstraints with specified argument3300 delegates main task to Gitlab::Database::AsyncConstraints3301 delegates main task to Gitlab::Database::AsyncConstraints with specified argument3302 delegates all task to every database with higher default for dev3303 delegates all task to every database with lower default for prod3304 delegates all task to every database with specified argument3305 when feature is not enabled3306 is a no-op3307 with geo configured3308 does not create a task for the geo database (PENDING: Skipping because the geo database is not configured)3309 active3310 needs_migration: true, self_monitoring_project: nil, project_count: nil, exit_status: 1, exit_code: false3311 exits 0 or 1 depending on user modifications to the database3312 needs_migration: false, self_monitoring_project: :self_monitoring, project_count: 1, exit_status: 1, exit_code: false3313 exits 0 or 1 depending on user modifications to the database3314 needs_migration: false, self_monitoring_project: nil, project_count: 0, exit_status: 1, exit_code: false3315 exits 0 or 1 depending on user modifications to the database3316 needs_migration: false, self_monitoring_project: :self_monitoring, project_count: 2, exit_status: 0, exit_code: true3317 exits 0 or 1 depending on user modifications to the database3318 #migrate_with_instrumentation3319 #up (legacy mode)3320 delegates to the migration runner in legacy mode3321 #sample_background_migrations3322 delegates to the migration runner with a default sample duration3323 delegates to the migration runner with a configured sample duration3324 db: :main3325 #up3326 delegates to the migration runner3327 #down3328 delegates to the migration runner3329 #sample_batched_background_migrations3330 delegates to the migration runner for a specified database with a default sample duration3331 delegates to the migration runner for a specified database and sample duration3332 db: :ci3333 #up3334 delegates to the migration runner3335 #down3336 delegates to the migration runner3337 #sample_batched_background_migrations3338 delegates to the migration runner for a specified database with a default sample duration3339 delegates to the migration runner for a specified database and sample duration3340 db: :main_clusterwide3341 #up3342 delegates to the migration runner3343 #down3344 delegates to the migration runner3345 #sample_batched_background_migrations3346 delegates to the migration runner for a specified database with a default sample duration3347 delegates to the migration runner for a specified database and sample duration3348 #execute_batched_migrations3349 executes all migrations3350 with multiple databases3351 db:schema:dump against a single database3352 invokes gitlab:db:clean_structure_sql3353 db:migrate against a single database3354 invokes gitlab:db:create_dynamic_partitions for the same database3355 db:migrate:geo3356 does not invoke gitlab:db:create_dynamic_partitions (PENDING: Skipping because the geo database is not configured)3357 gitlab:db:reset_as_non_superuser3358 migrate as nonsuperuser check with default username3359 migrate as nonsuperuser check with specified username3360ContainerRegistry::GitlabApiClient3361 #supports_gitlab_api?3362 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: false, expected_result: true3363 returns the expected result3364 registry_gitlab_api_enabled: true, is_on_dot_com: false, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: true, expected_result: true3365 returns the expected result3366 registry_gitlab_api_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true3367 returns the expected result3368 registry_gitlab_api_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true3369 returns the expected result3370 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: false, expected_result: true3371 returns the expected result3372 registry_gitlab_api_enabled: false, is_on_dot_com: false, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: true, expected_result: false3373 returns the expected result3374 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false3375 returns the expected result3376 registry_gitlab_api_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false3377 returns the expected result3378 with 401 response3379 is expected to be truthy3380 #pre_import_repository3381 status_code: 200, expected_result: :already_imported3382 is expected to eq :already_imported3383 status_code: 202, expected_result: :ok3384 is expected to eq :ok3385 status_code: 400, expected_result: :bad_request3386 is expected to eq :bad_request3387 status_code: 401, expected_result: :unauthorized3388 is expected to eq :unauthorized3389 status_code: 404, expected_result: :not_found3390 is expected to eq :not_found3391 status_code: 409, expected_result: :already_being_imported3392 is expected to eq :already_being_imported3393 status_code: 418, expected_result: :error3394 is expected to eq :error3395 status_code: 424, expected_result: :pre_import_failed3396 is expected to eq :pre_import_failed3397 status_code: 425, expected_result: :already_being_imported3398 is expected to eq :already_being_imported3399 status_code: 429, expected_result: :too_many_imports3400 is expected to eq :too_many_imports3401 #import_repository3402 status_code: 200, expected_result: :already_imported3403 is expected to eq :already_imported3404 status_code: 202, expected_result: :ok3405 is expected to eq :ok3406 status_code: 400, expected_result: :bad_request3407 is expected to eq :bad_request3408 status_code: 401, expected_result: :unauthorized3409 is expected to eq :unauthorized3410 status_code: 404, expected_result: :not_found3411 is expected to eq :not_found3412 status_code: 409, expected_result: :already_being_imported3413 is expected to eq :already_being_imported3414 status_code: 418, expected_result: :error3415 is expected to eq :error3416 status_code: 424, expected_result: :pre_import_failed3417 is expected to eq :pre_import_failed3418 status_code: 425, expected_result: :already_being_imported3419 is expected to eq :already_being_imported3420 status_code: 429, expected_result: :too_many_imports3421 is expected to eq :too_many_imports3422 #cancel_repository_import3423 status_code: 200, expected_result: :already_imported3424 is expected to eq {:migration_state=>nil, :status=>:already_imported}3425 status_code: 202, expected_result: :ok3426 is expected to eq {:migration_state=>nil, :status=>:ok}3427 status_code: 400, expected_result: :bad_request3428 is expected to eq {:migration_state=>nil, :status=>:bad_request}3429 status_code: 401, expected_result: :unauthorized3430 is expected to eq {:migration_state=>nil, :status=>:unauthorized}3431 status_code: 404, expected_result: :not_found3432 is expected to eq {:migration_state=>nil, :status=>:not_found}3433 status_code: 409, expected_result: :already_being_imported3434 is expected to eq {:migration_state=>nil, :status=>:already_being_imported}3435 status_code: 418, expected_result: :error3436 is expected to eq {:migration_state=>nil, :status=>:error}3437 status_code: 424, expected_result: :pre_import_failed3438 is expected to eq {:migration_state=>nil, :status=>:pre_import_failed}3439 status_code: 425, expected_result: :already_being_imported3440 is expected to eq {:migration_state=>nil, :status=>:already_being_imported}3441 status_code: 429, expected_result: :too_many_imports3442 is expected to eq {:migration_state=>nil, :status=>:too_many_imports}3443 bad request3444 is expected to eq {:migration_state=>"this_is_a_test", :status=>:bad_request}3445 force cancel3446 is expected to eq {:migration_state=>nil, :status=>:ok}3447 #import_status3448 with successful response3449 with a status3450 is expected to eq "this_is_a_test"3451 with no status3452 is expected to eq "error"3453 with non successful response3454 is expected to eq "pre_import_failed"3455 #repository_details3456 with sizing self3457 is expected to eq {"foo"=>"bar", "this"=>"is_a_test"}3458 with sizing self_with_descendants3459 is expected to eq {"foo"=>"bar", "this"=>"is_a_test"}3460 with sizing3461 is expected to eq {"foo"=>"bar", "this"=>"is_a_test"}3462 with non successful response3463 is expected to eq {}3464 #tags3465 with valid parameters3466 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2023-04-26T10:34:02.892Z", "digest"=>"sha256:12345...a_type"=>"application/vnd.oci.image.manifest.v1+json", "name"=>"latest", "size_bytes"=>1234567892}]}3467 with a response with a link header3468 is expected to eq {:pagination=>{:next=>{:uri=>#<URI::HTTP http://sandbox.org/test?last=b>}}, :response_body=>[{"create...a_type"=>"application/vnd.oci.image.manifest.v1+json", "name"=>"latest", "size_bytes"=>1234567892}]}3469 with a large page size set3470 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2023-04-26T10:34:02.990Z", "digest"=>"sha256:12345...a_type"=>"application/vnd.oci.image.manifest.v1+json", "name"=>"latest", "size_bytes"=>1234567892}]}3471 with a last parameter set3472 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2023-04-26T10:34:03.042Z", "digest"=>"sha256:12345...a_type"=>"application/vnd.oci.image.manifest.v1+json", "name"=>"latest", "size_bytes"=>1234567892}]}3473 with non successful response3474 logs an error and returns an empty hash3475 #sub_repositories_with_tag3476 with valid parameters3477 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2022-06-07T12:11:13.633+00:00", "name"=>"docker-al...git-base", "path"=>"gitlab-org/build/cng/git-base", "updated_at"=>"2022-06-07T14:37:49.251+00:00"}]}3478 with a response with a link header3479 is expected to eq {:pagination=>{:next=>{:uri=>#<URI::HTTP http://sandbox.org/test?last=c>}}, :response_body=>[{"create...git-base", "path"=>"gitlab-org/build/cng/git-base", "updated_at"=>"2022-06-07T14:37:49.251+00:00"}]}3480 with a large page size set3481 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2022-06-07T12:11:13.633+00:00", "name"=>"docker-al...git-base", "path"=>"gitlab-org/build/cng/git-base", "updated_at"=>"2022-06-07T14:37:49.251+00:00"}]}3482 with a last parameter set3483 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2022-06-07T12:11:13.633+00:00", "name"=>"docker-al...git-base", "path"=>"gitlab-org/build/cng/git-base", "updated_at"=>"2022-06-07T14:37:49.251+00:00"}]}3484 with non successful response3485 logs an error and returns an empty hash3486 .supports_gitlab_api?3487 registry_gitlab_api_enabled: true, is_on_dot_com: true, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: false, expected_result: true3488 returns the expected result3489 registry_gitlab_api_enabled: true, is_on_dot_com: false, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: true, expected_result: true3490 returns the expected result3491 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: false, expected_result: true3492 returns the expected result3493 registry_gitlab_api_enabled: false, is_on_dot_com: false, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: true, expected_result: false3494 returns the expected result3495 registry_gitlab_api_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true3496 returns the expected result3497 registry_gitlab_api_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true3498 returns the expected result3499 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false3500 returns the expected result3501 registry_gitlab_api_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false3502 returns the expected result3503 with the registry disabled3504 returns false3505 with a blank registry url3506 returns false3507 .deduplicated_size3508 with successful response3509 is expected to eq 5553510 with unsuccessful response3511 is expected to eq nil3512 with the registry disabled3513 is expected to eq nil3514 with a nil path3515 is expected to eq nil3516 with uppercase path3517 is expected to eq 5553518 .one_project_with_container_registry_tag3519 with successful response3520 behaves like fetching the project from container repository and path3521 fetches the project from the given path details3522 returns nil when path is invalid3523 returns nil when there is no container_repository matching the path3524 with unsuccessful response3525 is expected to eq nil3526 with uppercase path3527 behaves like fetching the project from container repository and path3528 fetches the project from the given path details3529 returns nil when path is invalid3530 returns nil when there is no container_repository matching the path3531Banzai::Filter::References::UserReferenceFilter3532 requires project context3533 ignores invalid users3534 ignores references with text before the @ sign3535 ignores valid references contained inside 'pre' element3536 ignores valid references contained inside 'code' element3537 ignores valid references contained inside 'a' element3538 ignores valid references contained inside 'style' element3539 links with adjacent text3540 includes default classes3541 behaves like user reference or project reference3542 supports an :only_path context3543 when mentioning a resource3544 links to a resource3545 links to a resource with a period3546 links to a resource with an underscore3547 links to a resource with different case-sensitivity3548 behaves like a reference containing an element node3549 does not escape inner html3550 behaves like it contains a data- attribute3551 includes a data- attribute3552 referencing a resource in a link href3553 links to the resource3554 links with adjacent text3555 behaves like it contains a data- attribute3556 includes a data- attribute3557 mentioning @all3558 supports a special @all mention3559 includes a data-author attribute when there is an author3560 does not include a data-author attribute when there is no author3561 ignores reference to all when the user is not a project member3562 behaves like a reference containing an element node3563 does not escape inner html3564 mentioning a group3565 links to the Group3566 includes a data-group attribute3567 behaves like a reference containing an element node3568 does not escape inner html3569 mentioning a nested group3570 links to the nested group3571 has the full group name as a title3572 behaves like a reference containing an element node3573 does not escape inner html3574 when a project is not specified3575 does not link a User3576 when skip_project_check set to true3577 links to a User3578 does not link users using @all reference3579 in group context3580 supports a special @all mention3581 supports mentioning a single user3582 supports mentioning a group3583 #namespaces3584 returns a Hash containing all Namespaces3585 #usernames3586 returns the usernames mentioned in a document3587 checking N+13588 does not have N+1 per multiple user references3589Gitlab::ClosingIssueExtractor3590 #closed_by_message3591 with a single reference3592 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3593 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3594 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3595 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3596 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3597 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3598 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3599 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3600 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3601 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3602 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3603 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3604 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3605 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3606 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3607 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3608 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3609 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3610 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3611 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3612 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3613 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3614 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3615 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3616 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3617 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3618 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3619 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3620 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3621 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3622 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3623 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3624 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3625 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3626 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3627 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3628 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3629 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3630 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3631 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3632 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3633 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3634 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3635 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3636 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3637 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3638 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3639 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3640 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3641 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3642 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3643 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3644 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3645 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3646 is expected to eq [#<Issue id:1 namespace800/project-804#1>]3647 with an external issue tracker reference3648 extracts the referenced issue3649 extracts the referenced issue even if GitLab issues are disabled for the project3650 with a cross-project reference3651 is expected to eq [#<Issue id:2 namespace801/project-805#1>]3652 with a cross-project URL3653 is expected to eq [#<Issue id:2 namespace801/project-805#1>]3654 with a cross-project fork reference3655 is expected to be empty3656 when target project has autoclose issues disabled3657 omits the issue reference3658 when target project has issues disabled3659 omits the issue reference3660 with an invalid URL3661 is expected to eq []3662 with an invalid keyword such as suffix insted of fix3663 is expected to eq []3664 with multiple references3665 fetches issues in single line message3666 fetches comma-separated issues references in single line message3667 fetches comma-separated issues numbers in single line message3668 allows oxford commas (comma before and) when referencing multiple issues3669 allows spaces before commas when referencing multiple issues3670 allows non-comma-separated issue numbers in single line message3671 allows mixed comma-separated and non-comma-separated issue numbers in single line message3672 fetches issues in multi-line message3673 fetches issues in hybrid message3674 fetches cross-project references3675 fetches cross-project URL references3676 ignores invalid cross-project URL references3677 with autoclose referenced issues disabled3678 excludes same project references3679 includes issues from other projects with autoclose enabled3680Gitlab::Database::BatchCount3681 #batch_count3682 counts table3683 counts with :id field3684 counts with "id" field3685 counts with table.id field3686 counts with Arel column3687 counts table with batch_size 50K3688 will not count table with a batch size less than allowed3689 produces the same result with different batch sizes3690 counts with a start and finish3691 stops counting when finish value is reached3692 defaults the batch size to 1000003693 does not use BETWEEN to define the range3694 behaves like when a transaction is open3695 raises an error3696 behaves like when batch fetch query is canceled3697 reduces batch size by half and retry fetch3698 when all retries fail3699 logs failing query3700 disallowed_configurations3701 returns fallback if start is bigger than finish3702 returns fallback if loops more than allowed3703 returns fallback if batch size is less than min required3704 raises an error if distinct count is requested3705 when a relation is grouped3706 count by default column3707 counts grouped records3708 #batch_count_with_timeout3709 counts table3710 counts with :id field3711 counts with "id" field3712 counts with table.id field3713 counts with Arel column3714 counts table with batch_size 50K3715 will not count table with a batch size less than allowed3716 produces the same result with different batch sizes3717 counts with a start and finish3718 stops counting when finish value is reached3719 returns a partial count when timeout elapses3720 starts counting from a given partial result3721 behaves like when a transaction is open3722 raises an error3723 behaves like when batch fetch query is canceled3724 reduces batch size by half and retry fetch3725 when all retries fail3726 logs failing query3727 disallowed_configurations3728 returns fallback if start is bigger than finish3729 returns fallback if loops more than allowed3730 returns fallback if batch size is less than min required3731 raises an error if distinct count is requested3732 when a relation is grouped3733 count by default column3734 counts grouped records3735 #batch_distinct_count3736 counts with column field3737 counts with "id" field3738 counts with table.column field3739 counts with Arel column3740 counts with :column field with batch_size of 50K3741 will not count table with a batch size less than allowed3742 produces the same result with different batch sizes3743 counts with a start and finish3744 stops counting when finish value is reached3745 counts with User min and max as start and finish3746 defaults the batch size to 100003747 behaves like when a transaction is open3748 raises an error3749 disallowed configurations3750 returns fallback if start is bigger than finish3751 returns fallback if loops more than allowed3752 returns fallback if batch size is less than min required3753 will raise an error if distinct count with the :id column is requested3754 when a relation is grouped3755 distinct count by non-unique column3756 counts grouped records3757 behaves like when batch fetch query is canceled3758 reduces batch size by half and retry fetch3759 when all retries fail3760 logs failing query3761 #batch_sum3762 returns the sum of values in the given column3763 works when given an Arel column3764 works with a batch size of 50K3765 works with start and finish provided3766 returns the same result regardless of batch size3767 defaults the batch size to 10003768 behaves like when a transaction is open3769 raises an error3770 behaves like disallowed configurations3771 returns fallback if start is bigger than finish3772 returns fallback if loops more than allowed3773 returns fallback if batch size is less than min required3774 behaves like when batch fetch query is canceled3775 reduces batch size by half and retry fetch3776 when all retries fail3777 logs failing query3778 #batch_average3779 calls BatchAverageCounter3780Resolvers::NamespaceProjectsResolver3781 has an high complexity regardless of arguments3782 with a group3783 #resolve3784 finds all projects3785 finds all projects including the subgroups3786 with an user namespace3787 finds all projects3788 finds all projects including the subgroups3789 search and similarity sorting3790 returns projects ordered by similarity to the search input3791 filters out result that do not match the search input3792 when `search` parameter is not given3793 returns projects not ordered by similarity3794 when only search term is given3795 filters out result that do not match the search input, but does not sort them3796 ids filtering3797 when ids is provided3798 returns matching project3799 when ids is nil3800 returns all projects3801 when passing a non existent, batch loaded namespace3802 returns nil without breaking3803Packages::Debian::FileMetadatum3804 package_file_trait: :unknown, has_component: false, has_architecture: false, has_fields: false3805 behaves like Test Debian file metadatum3806 relationships3807 is expected to belong to package_file required: false3808 validations3809 #package_file3810 is expected to validate that :package_file cannot be empty/falsy3811 #file_type3812 is expected to validate that :file_type cannot be empty/falsy3813 #component3814 has_component=false3815 #architecture3816 has_architecture=false3817 #fields3818 is expected to validate that :fields is empty/falsy3819 #debian_package_type3820 validates package of type debian3821 scopes3822 .with_file_type3823 returns the matching file metadatum3824 package_file_trait: :source, has_component: true, has_architecture: false, has_fields: false3825 behaves like Test Debian file metadatum3826 relationships3827 is expected to belong to package_file required: false3828 validations3829 #package_file3830 is expected to validate that :package_file cannot be empty/falsy3831 #file_type3832 is expected to validate that :file_type cannot be empty/falsy3833 #component3834 has_component=true3835 #architecture3836 has_architecture=false3837 #fields3838 is expected to validate that :fields is empty/falsy3839 #debian_package_type3840 validates package of type debian3841 scopes3842 .with_file_type3843 returns the matching file metadatum3844 package_file_trait: :dsc, has_component: true, has_architecture: false, has_fields: true3845 behaves like Test Debian file metadatum3846 relationships3847 is expected to belong to package_file required: false3848 validations3849 #package_file3850 is expected to validate that :package_file cannot be empty/falsy3851 #file_type3852 is expected to validate that :file_type cannot be empty/falsy3853 #component3854 has_component=true3855 #architecture3856 has_architecture=false3857 #fields3858 is expected to validate that :fields cannot be empty/falsy3859 is expected to allow :fields to be ‹{a: "b"}›3860 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›3861 #debian_package_type3862 validates package of type debian3863 scopes3864 .with_file_type3865 returns the matching file metadatum3866 package_file_trait: :deb, has_component: true, has_architecture: true, has_fields: true3867 behaves like Test Debian file metadatum3868 relationships3869 is expected to belong to package_file required: false3870 validations3871 #package_file3872 is expected to validate that :package_file cannot be empty/falsy3873 #file_type3874 is expected to validate that :file_type cannot be empty/falsy3875 #component3876 has_component=true3877 #architecture3878 has_architecture=true3879 #fields3880 is expected to validate that :fields cannot be empty/falsy3881 is expected to allow :fields to be ‹{a: "b"}›3882 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›3883 #debian_package_type3884 validates package of type debian3885 scopes3886 .with_file_type3887 returns the matching file metadatum3888 package_file_trait: :udeb, has_component: true, has_architecture: true, has_fields: true3889 behaves like Test Debian file metadatum3890 relationships3891 is expected to belong to package_file required: false3892 validations3893 #package_file3894 is expected to validate that :package_file cannot be empty/falsy3895 #file_type3896 is expected to validate that :file_type cannot be empty/falsy3897 #component3898 has_component=true3899 #architecture3900 has_architecture=true3901 #fields3902 is expected to validate that :fields cannot be empty/falsy3903 is expected to allow :fields to be ‹{a: "b"}›3904 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›3905 #debian_package_type3906 validates package of type debian3907 scopes3908 .with_file_type3909 returns the matching file metadatum3910 package_file_trait: :ddeb, has_component: true, has_architecture: true, has_fields: true3911 behaves like Test Debian file metadatum3912 relationships3913 is expected to belong to package_file required: false3914 validations3915 #package_file3916 is expected to validate that :package_file cannot be empty/falsy3917 #file_type3918 is expected to validate that :file_type cannot be empty/falsy3919 #component3920 has_component=true3921 #architecture3922 has_architecture=true3923 #fields3924 is expected to validate that :fields cannot be empty/falsy3925 is expected to allow :fields to be ‹{a: "b"}›3926 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›3927 #debian_package_type3928 validates package of type debian3929 scopes3930 .with_file_type3931 returns the matching file metadatum3932 package_file_trait: :buildinfo, has_component: true, has_architecture: false, has_fields: true3933 behaves like Test Debian file metadatum3934 relationships3935 is expected to belong to package_file required: false3936 validations3937 #package_file3938 is expected to validate that :package_file cannot be empty/falsy3939 #file_type3940 is expected to validate that :file_type cannot be empty/falsy3941 #component3942 has_component=true3943 #architecture3944 has_architecture=false3945 #fields3946 is expected to validate that :fields cannot be empty/falsy3947 is expected to allow :fields to be ‹{a: "b"}›3948 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›3949 #debian_package_type3950 validates package of type debian3951 scopes3952 .with_file_type3953 returns the matching file metadatum3954 package_file_trait: :changes, has_component: false, has_architecture: false, has_fields: true3955 behaves like Test Debian file metadatum3956 relationships3957 is expected to belong to package_file required: false3958 validations3959 #package_file3960 is expected to validate that :package_file cannot be empty/falsy3961 #file_type3962 is expected to validate that :file_type cannot be empty/falsy3963 #component3964 has_component=false3965 #architecture3966 has_architecture=false3967 #fields3968 is expected to validate that :fields cannot be empty/falsy3969 is expected to allow :fields to be ‹{a: "b"}›3970 is expected not to allow :fields to be ‹{a: {:b=>"c"}}›3971 #debian_package_type3972 validates package of type debian3973 scopes3974 .with_file_type3975 returns the matching file metadatum3976Gitlab::Diff::FileCollection::MergeRequestDiff3977 returns a valid instance of a DiffCollection3978 #diff_files3979 does not highlight binary files3980 does not highlight files marked as undiffable in .gitattributes3981 behaves like unfoldable diff3982 calls Gitlab::Diff::File#unfold_diff_lines with correct position3983 behaves like diff statistics3984 when include_stats is true3985 Repository#diff_stats is called3986 Gitlab::Diff::File is initialized with diff stats3987 when should not request diff stats3988 Repository#diff_stats is not called3989 behaves like cacheable diff collection3990 #write_cache3991 calls Gitlab::Diff::HighlightCache#write_if_empty3992 calls Gitlab::Diff::StatsCache#write_if_empty with diff stats3993 #clear_cache3994 calls Gitlab::Diff::HighlightCache#clear3995 calls Gitlab::Diff::StatsCache#clear3996 #diff_files3997 calls Gitlab::Diff::HighlightCache#decorate3998 when there are stats cached3999 does not make a diff stats rpc call4000 when there are no stats cached4001 makes a diff stats rpc call4002 behaves like unsortable diff files4003 #raw_diff_files4004 does not call Gitlab::Diff::FileCollectionSorter even when sorted is true4005AvatarsHelper4006 #project_icon, #group_icon, #topic_icon4007 when providing a project4008 behaves like resource with a default avatar4009 returns a default avatar div4010 behaves like resource with a custom avatar4011 returns a custom avatar image4012 when Gitaly is unavailable4013 handles Gitaly exception gracefully4014 behaves like resource with a default avatar4015 returns a default avatar div4016 when Gitaly request is taking too long4017 handles Gitaly exception gracefully4018 behaves like resource with a default avatar4019 returns a default avatar div4020 when providing a group4021 behaves like resource with a default avatar4022 returns a default avatar div4023 behaves like resource with a custom avatar4024 returns a custom avatar image4025 when providing a topic4026 behaves like resource with a default avatar4027 returns a default avatar div4028 behaves like resource with a custom avatar4029 returns a custom avatar image4030 #avatar_icon_for4031 prefers the user to retrieve the avatar_url4032 falls back to email lookup if no user given4033 #avatar_icon_for_email4034 caches the request4035 behaves like returns avatar for email4036 using an email4037 when there is a matching user4038 returns a relative URL for the avatar4039 when no user exists for the email4040 calls gravatar_icon4041 without an email passed4042 calls gravatar_icon4043 #avatar_icon_for_user4044 with a user object passed4045 returns a relative URL for the avatar4046 when the user is blocked4047 behaves like blocked or unconfirmed user with avatar4048 when the viewer is not an admin4049 returns the default avatar4050 when the viewer is an admin4051 returns the default avatar when the user is not passed4052 returns the user avatar when the user is passed4053 when the user is unconfirmed4054 behaves like blocked or unconfirmed user with avatar4055 when the viewer is not an admin4056 returns the default avatar4057 when the viewer is an admin4058 returns the default avatar when the user is not passed4059 returns the user avatar when the user is passed4060 without a user object passed4061 calls gravatar_icon4062 #gravatar_icon4063 with Gravatar disabled4064 returns a generic avatar4065 with Gravatar enabled4066 with FIPS not enabled4067 returns a generic avatar when email is blank4068 returns a valid Gravatar URL4069 uses HTTPs when configured4070 returns custom gravatar path when gravatar_url is set4071 accepts a custom size argument4072 defaults size to 40@2x when given an invalid size4073 accepts a scaling factor4074 ignores case and surrounding whitespace4075 with FIPS enabled4076 returns a generic avatar4077 #user_avatar4078 links to the user's profile4079 has the user's name as title4080 contains the user's avatar image4081 #user_avatar_without_link4082 displays user avatar4083 with css_class parameter4084 uses provided css_class4085 with size parameter4086 uses provided size4087 with url parameter4088 uses provided url4089 with lazy parameter4090 adds `lazy` class to class list, sets `data-src` with avatar URL and `src` with placeholder image4091 with has_tooltip parameter4092 with has_tooltip set to true4093 adds has-tooltip4094 with has_tooltip set to false4095 does not add has-tooltip or data container4096 with user_name parameter4097 uses user_name and user_email parameter if user is not present4098 with user parameter4099 prefers user parameter4100 with only_path parameter set to false4101 with user parameter4102 will return avatar with a full path4103 with user_name and user_email4104 will return avatar with a full path4105 with unregistered email address4106 will return default alt text for avatar4107 #avatar_without_link4108 with users4109 displays user avatar4110 with groups4111 displays group avatar4112Gitlab::ImportExport::AfterExportStrategies::BaseAfterExportStrategy4113 #execute4114 returns if project exported file is not found4115 creates a lock file in the export dir4116 when the method succeeds4117 removes the lock file4118 removes the archive path4119 when the method fails4120 when validation fails4121 does not create the lock file4122 does not execute main logic4123 logs validation errors in shared context4124 removes the archive path4125 when an exception is raised4126 removes the lock4127 #log_validation_errors4128 add the message to the shared context4129 #to_json4130 adds the current strategy class to the serialized attributes4131Gitlab::Redis::RepositoryCache4132 # order random4133 .config_file_name4134 and there is a global env override4135 is expected to eq "global override"4136 and Cache has a different config file4137 is expected to eq "fallback config file"4138 #fetch_config4139 when redis.yml exists4140 when the fallback has a redis.yml entry4141 is expected to eq {"fallback redis.yml"=>123}4142 and an instance config file exists4143 is expected to eq {"instance specific file"=>456}4144 and the instance has a redis.yml entry4145 is expected to eq {"instance redis.yml"=>789}4146 when no redis config file exsits4147 returns nil4148 when resque.yml exists4149 returns the config from resque.yml4150 #raw_config_hash4151 has a legacy default URL4152 .cache_store4153 has a default ttl of 8 hours4154 behaves like redis_shared_examples4155 .config_file_name4156 when there is no config file anywhere4157 is expected to be nil4158 and there is a global env override4159 is expected to eq "global override"4160 and there is an instance specific config file4161 is expected to eq "/tmp/d20230426-326-wav5wd/config/redis.repository_cache.yml"4162 returns a path that exists4163 and there is a specific env override4164 is expected to eq "instance specific override"4165 .store4166 with old format4167 behaves like redis store4168 instantiates Redis::Store4169 with the namespace4170 uses specified namespace4171 with new format4172 behaves like redis store4173 instantiates Redis::Store4174 with the namespace4175 uses specified namespace4176 .params4177 withstands mutation4178 when url contains unix socket reference4179 with old format4180 returns path key instead4181 with new format4182 returns path key instead4183 when url is host based4184 with old format4185 returns hash with host, port, db, and password4186 with new format4187 rails_env: "development", host: "development-host"4188 returns hash with host, port, db, and password4189 rails_env: "test", host: "test-host"4190 returns hash with host, port, db, and password4191 rails_env: "production", host: "production-host"4192 returns hash with host, port, db, and password4193 with redis cluster format4194 rails_env: "development", host: "development-master"4195 returns hash with cluster and password4196 rails_env: "test", host: "test-master"4197 returns hash with cluster and password4198 rails_env: "production", host: "production-master"4199 returns hash with cluster and password4200 .url4201 withstands mutation4202 when yml file with env variable4203 reads redis url from env variable4204 .version4205 returns a version4206 .with4207 when running on single-threaded runtime4208 instantiates a connection pool with size 54209 when running on multi-threaded runtime4210 instantiates a connection pool with a size based on the concurrency of the worker4211 when there is no config at all4212 can run an empty block4213 #db4214 with old format4215 returns the correct db4216 with new format4217 returns the correct db4218 with cluster-mode4219 returns the correct db4220 #sentinels4221 when sentinels are defined4222 rails_env: "development", hosts: ["development-replica1", "development-replica2"]4223 returns an array of hashes with host and port keys4224 rails_env: "test", hosts: ["test-replica1", "test-replica2"]4225 returns an array of hashes with host and port keys4226 rails_env: "production", hosts: ["production-replica1", "production-replica2"]4227 returns an array of hashes with host and port keys4228 when sentinels are not defined4229 returns nil4230 when cluster is defined4231 returns nil4232 #sentinels?4233 when sentinels are defined4234 returns true4235 when sentinels are not defined4236 is expected to eq nil4237 when cluster is defined4238 returns false4239 #raw_config_hash4240 returns old-style single url config in a hash4241 returns cluster config without url key in a hash4242 #fetch_config4243 raises an exception when the config file contains invalid yaml4244 has a value for the legacy default URL4245 when redis.yml exists4246 uses config/redis.yml4247 when no config file exsits4248 returns nil4249 when resque.yml exists4250 returns the config from resque.yml4251API::Entities::Snippet4252 with PersonalSnippet4253 returns snippet web_url attribute4254 returns snippet raw_url attribute4255 behaves like common attributes4256 is expected to eq 14257 is expected to eq "My title 36"4258 is expected to eq "My title 38"4259 is expected to eq 2023-04-26 10:41:08.527774495 +00004260 is expected to eq 2023-04-26 10:41:08.527774495 +00004261 is expected to eq nil4262 is expected to eq "private"4263 is expected to include :author4264 file_name4265 returns attribute from repository4266 when repository is empty4267 returns attribute from db4268 ssh_url_to_repo4269 returns attribute4270 when repository does not exist4271 does not include attribute4272 http_url_to_repo4273 returns attribute4274 when repository does not exist4275 does not include attribute4276 files4277 with PersonalSnippet4278 behaves like snippet files4279 returns all snippet files4280 has the file path4281 has the raw url4282 when repository does not exist4283 returns empty array4284 with ProjectSnippet4285 behaves like snippet files4286 returns all snippet files4287 has the file path4288 has the raw url4289 when repository does not exist4290 returns empty array4291 with ProjectSnippet4292 returns snippet web_url attribute4293 returns snippet raw_url attribute4294 behaves like common attributes4295 is expected to eq 24296 is expected to eq "My title 39"4297 is expected to eq "My title 41"4298 is expected to eq 2023-04-26 10:41:09.332443767 +00004299 is expected to eq 2023-04-26 10:41:09.332443767 +00004300 is expected to eq 6824301 is expected to eq "private"4302 is expected to include :author4303 file_name4304 returns attribute from repository4305 when repository is empty4306 returns attribute from db4307 ssh_url_to_repo4308 returns attribute4309 when repository does not exist4310 does not include attribute4311 http_url_to_repo4312 returns attribute4313 when repository does not exist4314 does not include attribute4315 files4316 with PersonalSnippet4317 behaves like snippet files4318 returns all snippet files4319 has the file path4320 has the raw url4321 when repository does not exist4322 returns empty array4323 with ProjectSnippet4324 behaves like snippet files4325 returns all snippet files4326 has the file path4327 has the raw url4328 when repository does not exist4329 returns empty array4330Gitlab::ProcessSupervisor4331 #supervise4332 while supervised processes are alive4333 does not invoke callback4334 when a supervised process dies4335 triggers callback with the dead PIDs and adds new PIDs to supervised PIDs4336 deduplicates PIDs returned from callback4337 accepts single PID returned from callback4338 but supervisor has entered shutdown4339 does not trigger callback again4340 signal handling4341 termination signals4342 when TERM results in timely shutdown of processes4343 forwards them to observed processes without waiting for grace period to expire4344 when TERM does not result in timely shutdown of processes4345 issues a KILL signal after the grace period expires4346 forwarded signals4347 forwards given signals to the observed processes4348 #shutdown4349 when supervisor is supervising processes4350 when supervisor is alive4351 signals TERM then KILL to all supervised processes4352 stops the supervisor4353 when supervisor has already shut down4354 does nothing4355 when supervisor never started4356 does nothing4357Clusters::UpdateService4358 #execute4359 when correct params4360 when enabled is true4361 enables cluster4362 when enabled is false4363 disables cluster4364 when namespace is specified4365 updates namespace4366 when service token is empty4367 does not update the token4368 when service token is not empty4369 updates the token4370 when invalid params4371 returns false4372 when cluster is provided by GCP4373 does not change cluster name4374 when cluster is being created4375 rejects changes4376 when params includes :management_project_id4377 management_project is non-existent4378 does not update management_project_id4379 project cluster4380 user is authorized to adminster manangement_project4381 updates management_project_id4382 user is not authorized to adminster manangement_project4383 does not update management_project_id4384 cluster already has a management project set4385 unsets management_project_id4386 manangement_project is outside of the namespace scope4387 does not update management_project_id4388 group cluster4389 user is authorized to adminster manangement_project4390 updates management_project_id4391 user is not authorized to adminster manangement_project4392 does not update management_project_id4393 cluster already has a management project set4394 unsets management_project_id4395 manangement_project is outside of the namespace scope4396 does not update management_project_id4397 instance cluster4398 user is authorized to adminster manangement_project4399 updates management_project_id4400 user is not authorized to adminster manangement_project4401 does not update management_project_id4402 cluster already has a management project set4403 unsets management_project_id4404Gitlab::Ci::Status::Factory4405 when object has a core status4406 when simple core status is created4407 fabricates a core status created4408 matches a valid core status for created4409 does not match any extended statuses for created4410 when simple core status is waiting_for_resource4411 fabricates a core status waiting_for_resource4412 matches a valid core status for waiting_for_resource4413 does not match any extended statuses for waiting_for_resource4414 when simple core status is preparing4415 fabricates a core status preparing4416 matches a valid core status for preparing4417 does not match any extended statuses for preparing4418 when simple core status is pending4419 fabricates a core status pending4420 matches a valid core status for pending4421 does not match any extended statuses for pending4422 when simple core status is running4423 fabricates a core status running4424 matches a valid core status for running4425 does not match any extended statuses for running4426 when simple core status is success4427 fabricates a core status success4428 matches a valid core status for success4429 does not match any extended statuses for success4430 when simple core status is failed4431 fabricates a core status failed4432 matches a valid core status for failed4433 does not match any extended statuses for failed4434 when simple core status is canceled4435 fabricates a core status canceled4436 matches a valid core status for canceled4437 does not match any extended statuses for canceled4438 when simple core status is skipped4439 fabricates a core status skipped4440 matches a valid core status for skipped4441 does not match any extended statuses for skipped4442 when simple core status is manual4443 fabricates a core status manual4444 matches a valid core status for manual4445 does not match any extended statuses for manual4446 when simple core status is scheduled4447 fabricates a core status scheduled4448 matches a valid core status for scheduled4449 does not match any extended statuses for scheduled4450 when resource supports multiple extended statuses4451 when exclusive statuses are matches4452 does not fabricate compound decorator4453 delegates to core status4454 matches correct core status4455 matches correct extended statuses4456 when exclusive statuses are not matched4457 behaves like compound decorator factory4458 fabricates compound decorator4459 delegates to core status4460 latest matches status becomes a status name4461 matches correct core status4462 matches correct extended statuses4463 when using simplified status grouping4464 behaves like compound decorator factory4465 fabricates compound decorator4466 delegates to core status4467 latest matches status becomes a status name4468 matches correct core status4469 matches correct extended statuses4470 behaviour of FactoryBot traits that create associations4471 creating a namespace with an associated aggregation_schedule record4472 creates only one Namespace record and one Namespace::AggregationSchedule record4473Issues::SetCrmContactsService4474 #execute4475 when the user has no permission4476 returns expected error response4477 when user has permission4478 but the crm setting is disabled4479 returns expected error response4480 when the contact does not exist4481 returns expected error response4482 when the contact belongs to a different group4483 returns expected error response4484 replace4485 behaves like setting contacts4486 updates the issue with correct contacts4487 behaves like adds system note4488 calls SystemNoteService.change_issuable_contacts with correct counts4489 add4490 behaves like setting contacts4491 updates the issue with correct contacts4492 behaves like adds system note4493 calls SystemNoteService.change_issuable_contacts with correct counts4494 add by email4495 with pure emails in params4496 behaves like setting contacts4497 updates the issue with correct contacts4498 behaves like adds system note4499 calls SystemNoteService.change_issuable_contacts with correct counts4500 with autocomplete prefix emails in params4501 behaves like setting contacts4502 updates the issue with correct contacts4503 behaves like adds system note4504 calls SystemNoteService.change_issuable_contacts with correct counts4505 remove4506 behaves like setting contacts4507 updates the issue with correct contacts4508 behaves like adds system note4509 calls SystemNoteService.change_issuable_contacts with correct counts4510 remove by email4511 with pure email in params4512 behaves like setting contacts4513 updates the issue with correct contacts4514 behaves like adds system note4515 calls SystemNoteService.change_issuable_contacts with correct counts4516 with autocomplete prefix and suffix email in params4517 behaves like setting contacts4518 updates the issue with correct contacts4519 behaves like adds system note4520 calls SystemNoteService.change_issuable_contacts with correct counts4521 when attempting to add more than 64522 returns expected error message4523 when trying to remove non-existent contact4524 returns expected error message4525 when combining params4526 add and remove4527 with contact ids4528 behaves like setting contacts4529 updates the issue with correct contacts4530 with contact emails4531 behaves like setting contacts4532 updates the issue with correct contacts4533 replace and remove4534 returns expected error response4535 replace and add4536 returns expected error response4537 when trying to add an existing issue contact4538 does not return an error4539 when trying to add the same contact twice4540 does not return an error4541 when trying to remove a contact not attached to the issue4542 does not return an error4543Issues::PlacementWorker4544 has the `until_executed` deduplicate strategy4545 #perform4546 passing an issue ID4547 behaves like running the issue placement worker4548 places all issues created at most 5 minutes before this one at the end, most recent last4549 schedules rebalancing if needed4550 anticipates the failure to place the issues, and schedules rebalancing4551 there are more than QUERY_LIMIT unplaced issues4552 limits the sweep to QUERY_LIMIT records, and reschedules placement4553 is eventually correct4554 we are passed bad IDs4555 does move any issues to the end4556 the project_id refers to an empty project4557 does move any issues to the end4558 when block_issue_repositioning is enabled4559 does not run repositioning tasks4560 passing a project ID4561 behaves like running the issue placement worker4562 places all issues created at most 5 minutes before this one at the end, most recent last4563 schedules rebalancing if needed4564 anticipates the failure to place the issues, and schedules rebalancing4565 there are more than QUERY_LIMIT unplaced issues4566 limits the sweep to QUERY_LIMIT records, and reschedules placement4567 is eventually correct4568 we are passed bad IDs4569 does move any issues to the end4570 the project_id refers to an empty project4571 does move any issues to the end4572ReleasePresenter4573 #commit_path4574 returns commit path4575 when commit is not found4576 is expected to be nil4577 when user is guest4578 is expected to be nil4579 #tag_path4580 returns tag path4581 when user is guest4582 is expected to be nil4583 #self_url4584 returns its own url4585 #opened_merge_requests_url4586 returns merge requests url with state=open4587 #merged_merge_requests_url4588 returns merge requests url with state=merged4589 #closed_merge_requests_url4590 returns merge requests url with state=closed4591 #opened_issues_url4592 returns issues url with state=open4593 #closed_issues_url4594 returns issues url with state=closed4595 #edit_url4596 returns release edit url4597 when a user is not allowed to update a release4598 is expected to be nil4599 #assets_count4600 returns the number of assets associated to the release4601 when a user is not allowed to download release sources4602 returns the number of all non-source assets associated to the release4603 #name4604 returns the release name4605Issuable::DestroyService4606 #execute4607 when issuable is an issue4608 destroys the issue4609 updates open issues count cache4610 invalidates the issues count cache for the assignees4611 behaves like service deleting todos4612 behaves like service scheduling async deletes4613 destroys associated todos asynchronously4614 works inside a transaction4615 behaves like service deleting label links4616 behaves like service scheduling async deletes4617 destroys associated todos asynchronously4618 works inside a transaction4619 when issuable is a merge request4620 destroys the merge request4621 updates open merge requests count cache4622 invalidates the merge request caches for the MR assignee4623 behaves like service deleting todos4624 behaves like service scheduling async deletes4625 destroys associated todos asynchronously4626 works inside a transaction4627 behaves like service deleting label links4628 behaves like service scheduling async deletes4629 destroys associated todos asynchronously4630 works inside a transaction4631Ci::DeleteUnitTestsService4632 #execute4633 does not delete unit test failures not older than 14 days4634 deletes unit test failures older than 14 days4635 deletes unit tests that have no more associated unit test failures4636Releases::UpdateService4637 #execute4638 successfully updates an existing release4639 executes hooks4640 when the tag does not exists4641 behaves like a failed update4642 raises an error4643 when the release does not exist4644 behaves like a failed update4645 raises an error4646 when a milestone is passed in4647 a different milestone4648 behaves like updates milestones4649 updates the related milestone accordingly4650 an identical milestone4651 raises an error4652 by ids4653 behaves like updates milestones4654 updates the related milestone accordingly4655 when an 'empty' milestone is passed in4656 by title4657 behaves like removes milestones4658 removes the old milestone and does not associate any new milestone4659 by id4660 behaves like removes milestones4661 removes the old milestone and does not associate any new milestone4662 when multiple new milestones are passed in4663 by title4664 behaves like updates multiple milestones4665 removes the old milestone and update the release with the new ones4666 by id4667 behaves like updates multiple milestones4668 removes the old milestone and update the release with the new ones4669Gitlab::Changelog::Config4670 .from_git4671 retrieves the configuration from Git4672 retrieves the specified configuration from git4673 returns the default configuration when no YAML file exists in Git4674 when changelog is empty4675 returns the default configuration4676 .from_hash4677 sets the configuration according to a Hash4678 raises Error when the categories are not a Hash4679 raises a Gitlab::Changelog::Error when the template is invalid4680 #contributor?4681 when user is a member of project4682 is expected to eq false4683 when user has at least one merge request merged into default_branch4684 is expected to eq true4685 is expected to eq false4686 #category4687 returns the name of a category4688 returns the raw category name when no alternative name is configured4689 #format_date4690 formats a date according to the configured date format4691 #always_credit_author?4692 when include_groups is defined4693 when user generating changelog has access to group4694 returns whether author should always be credited4695 when user generating changelog has no access to group4696 always returns false4697 when include_groups is not defined4698 always returns false4699CommitEntity4700 contains path to commit4701 contains URL to commit4702 needs to receive project in the request4703 exposes gravatar url that belongs to author4704 when commit author is a user4705 contains information about user4706 when commit author is not a user4707 does not contain author details4708 when type is not set4709 does not expose extra properties4710 when type is "full"4711 exposes extra properties4712 when commit has signature4713 exposes "signature_html"4714 when commit has pipeline4715 exposes "pipeline_status_path"4716 when commit_url_params is set4717 adds commit_url_params to url and path4718Projects::ProtectDefaultBranchService4719 #execute4720 without a default branch4721 does nothing4722 with a default branch4723 protects the default branch4724 #protect_default_branch4725 when branch protection is needed4726 changes the HEAD of the project4727 protects the default branch4728 when branch protection is not needed4729 changes the HEAD of the project4730 does not protect the default branch4731 when protected branch does not exist4732 changes the HEAD of the project4733 protects the default branch4734 when protected branch already exists4735 changes the HEAD of the project4736 does not protect the default branch4737 #create_protected_branch4738 creates the protected branch4739 #protect_branch?4740 when default branch protection is disabled4741 returns false4742 when default branch protection is enabled4743 returns false if the branch is already protected4744 returns true if the branch is not yet protected4745 #protected_branch_exists?4746 when feature flag `group_protected_branches` disabled4747 return false4748 when feature flag `group_protected_branches` enabled4749 return true4750 #default_branch4751 returns the default branch of the project4752 #push_access_level4753 when developers can push4754 returns the DEVELOPER access level4755 when developers can not push4756 returns the MAINTAINER access level4757 #merge_access_level4758 when developers can merge4759 returns the DEVELOPER access level4760 when developers can not merge4761 returns the MAINTAINER access level4762Gitlab::SidekiqMiddleware::DuplicateJobs::DuplicateJob4763 #schedule4764 behaves like scheduling with deduplication class4765 calls schedule on the strategy4766 when the deduplication depends on a FF4767 when the feature flag is enabled4768 behaves like scheduling with deduplication class4769DEPRECATION WARNING: Invalid Feature Flag my_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)4770 calls schedule on the strategy4771 when the feature flag is disabled4772 behaves like scheduling with deduplication class4773DEPRECATION WARNING: Invalid Feature Flag my_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)4774 calls schedule on the strategy4775 when deduplication strategy is provided in the job options4776 behaves like scheduling with deduplication class4777 calls schedule on the strategy4778 #perform4779 calls perform on the strategy4780 with Redis cookies4781 #check!4782 when there was no job in the queue yet4783 is expected to eq "123"4784 adds the idempotency key to the jobs payload4785 when TTL option is not set4786 behaves like sets Redis keys with correct TTL4787 adds an idempotency key with correct ttl4788 when TTL option is set4789 behaves like sets Redis keys with correct TTL4790 adds an idempotency key with correct ttl4791 when there was already a job with same arguments in the same queue4792 is expected to eq "existing-jid"4793 does not change the existing key's TTL4794 sets the existing jid4795 #update_latest_wal_location!4796 stores a wal location to redis with an offset relative to existing wal location4797 UPDATE_WAL_COOKIE_SCRIPT4798 does not create the key4799 when the key exists4800 updates all connections4801 preserves the ttl4802 and low offsets4803 updates only some connections4804 #latest_wal_locations4805 when job was deduplicated and wal locations were already persisted4806 is expected to eq {"ci"=>"def", "main"=>"abc"}4807 when job is not deduplication and wal locations were not persisted4808 is expected to be empty4809 #delete!4810 when we didn't track the definition4811 is expected not to raise Exception4812 when the key exists in redis4813 when the idempotency key is not part of the job4814 recalculates the idempotency hash4815 behaves like deleting the duplicate job4816 behaves like deleting keys from redis4817 removes the cookie key from redis4818 when the idempotency key is part of the job4819 does not recalculate the idempotency hash4820 behaves like deleting the duplicate job4821 behaves like deleting keys from redis4822 removes the cookie key from redis4823 #set_deduplicated_flag!4824 when the job is reschedulable4825 sets the key in Redis4826 sets, gets and cleans up the deduplicated flag4827 when the job is not reschedulable4828 does not set the key in Redis4829 does not set the deduplicated flag4830 #duplicate?4831 raises an error if the check wasn't performed4832 returns false if the existing jid equals the job jid4833 returns true if the existing jid is different from the job jid4834 #scheduled?4835 returns false for non-scheduled jobs4836 scheduled jobs4837 returns true4838 #reschedule4839 reschedules the current job4840 #should_reschedule?4841 when the job is reschedulable4842 is expected to eq false4843 with deduplicated flag4844 is expected to eq true4845 when the job is not reschedulable4846 is expected to eq false4847 with deduplicated flag4848 is expected to eq false4849 #scheduled_at4850 returns when the job is scheduled at4851 #options4852 returns worker options4853 when deduplication options are provided in the job options4854 returns the job's deduplication options4855 #idempotent?4856 when worker class does not exist4857 returns false4858 when worker class does not respond to #idempotent?4859 returns false4860 when worker class is not idempotent4861 returns false4862 when worker class is idempotent4863 returns true4864 when worker class is utilizing load balancing capabilities4865 returns true4866Gitlab::Checks::TagCheck4867 #validate!4868 raises an error when user does not have access4869 with protected tag4870 as maintainer4871 deletion4872 via web interface4873 is allowed4874 via SSH4875 is prevented4876 update4877 is prevented4878 as developer4879 deletion4880 is prevented4881 creation4882 prevents creation below access level4883 when user has access4884 allows tag creation4885 when tag name is the same as default branch4886 is prevented4887Gitlab::Ci::Build::AutoRetry4888 #allowed?4889 description: "retries are disabled", retry_count: 0, options: {:max=>0}, failure_reason: nil, result: false4890 is expected to eq false4891 description: "max equals count", retry_count: 2, options: {:max=>2}, failure_reason: nil, result: false4892 is expected to eq false4893 description: "max is higher than count", retry_count: 1, options: {:max=>2}, failure_reason: nil, result: true4894 is expected to eq true4895 description: "max is a string", retry_count: 1, options: {:max=>"2"}, failure_reason: nil, result: true4896 is expected to eq true4897 description: "matching failure reason", retry_count: 0, options: {:when=>["api_failure"], :max=>2}, failure_reason: :api_failure, result: true4898 is expected to eq true4899 description: "not matching with always", retry_count: 0, options: {:when=>["always"], :max=>2}, failure_reason: :api_failure, result: true4900 is expected to eq true4901 description: "not matching reason", retry_count: 0, options: {:when=>["script_error"], :max=>2}, failure_reason: :api_failure, result: false4902 is expected to eq false4903 description: "scheduler failure override", retry_count: 1, options: {:when=>["scheduler_failure"], :max=>1}, failure_reason: :scheduler_failure, result: false4904 is expected to eq false4905 description: "default for scheduler failure", retry_count: 1, options: {}, failure_reason: :scheduler_failure, result: true4906 is expected to eq true4907 description: "quota is exceeded", retry_count: 0, options: {:max=>2}, failure_reason: :ci_quota_exceeded, result: false4908 is expected to eq false4909 description: "no matching runner", retry_count: 0, options: {:max=>2}, failure_reason: :no_matching_runner, result: false4910 is expected to eq false4911 description: "missing dependencies", retry_count: 0, options: {:max=>2}, failure_reason: :missing_dependency_failure, result: false4912 is expected to eq false4913 description: "forward deployment failure", retry_count: 0, options: {:max=>2}, failure_reason: :forward_deployment_failure, result: false4914 is expected to eq false4915 description: "environment creation failure", retry_count: 0, options: {:max=>2}, failure_reason: :environment_creation_failure, result: false4916 is expected to eq false4917 when build is not retryable4918 is expected to eq false4919 #options_retry_max4920 with retries max config option4921 returns the number of configured max retries4922 without retries max config option4923 returns nil4924 when build is degenerated4925 returns nil4926 with integer only config option4927 returns the number of configured max retries4928 #options_retry_when4929 with retries when config option4930 returns the configured when4931 without retries when config option4932 returns always array4933 with integer only config option4934 returns always array4935 with retry[:when] set to nil4936 returns always array4937ContainerExpirationPolicy4938 relationships4939 is expected to belong to project required: false4940 validations4941 is expected to validate that :project cannot be empty/falsy4942 #enabled4943 is expected to allow :enabled to be ‹true›4944 is expected to allow :enabled to be ‹false›4945 is expected not to allow :enabled to be ‹nil›4946 #cadence4947 is expected to validate that :cadence cannot be empty/falsy4948 is expected to allow :cadence to be ‹"1d"›4949 is expected to allow :cadence to be ‹"1month"›4950 is expected not to allow :cadence to be ‹"123asdf"›4951 is expected not to allow :cadence to be ‹nil›4952 #older_than4953 is expected to allow :older_than to be ‹"7d"›4954 is expected to allow :older_than to be ‹"14d"›4955 is expected to allow :older_than to be ‹nil›4956 is expected not to allow :older_than to be ‹"123asdf"›4957 #keep_n4958 is expected to allow :keep_n to be ‹10›4959 is expected to allow :keep_n to be ‹nil›4960 is expected not to allow :keep_n to be ‹"foo"›4961 #disable!4962 disables the container expiration policy4963 #policy_params4964 is expected to eq {"keep_n"=>10, "name_regex"=>".*", "name_regex_keep"=>nil, "older_than"=>"90d"}4965 with a set of regexps4966 is expected to validate that :name_regex cannot be empty/falsy4967 is expected to allow :name_regex to be ‹"master"›4968 is expected to allow :name_regex_keep to be ‹"master"›4969 is expected to allow :name_regex to be ‹".*"›4970 is expected to allow :name_regex_keep to be ‹".*"›4971 is expected to allow :name_regex to be ‹"v.+"›4972 is expected to allow :name_regex_keep to be ‹"v.+"›4973 is expected to allow :name_regex to be ‹"v10.1.*"›4974 is expected to allow :name_regex_keep to be ‹"v10.1.*"›4975 is expected to allow :name_regex to be ‹"(?:v.+|master|release)"›4976 is expected to allow :name_regex_keep to be ‹"(?:v.+|master|release)"›4977 is expected not to allow :name_regex to be ‹"["›4978 is expected not to allow :name_regex_keep to be ‹"["›4979 is expected not to allow :name_regex to be ‹"(?:v.+|master|release"›4980 is expected not to allow :name_regex_keep to be ‹"(?:v.+|master|release"›4981 with a disabled container expiration policy4982 is expected not to validate that :name_regex cannot be empty/falsy4983 is expected to allow :name_regex to be ‹"master"›4984 is expected to allow :name_regex_keep to be ‹"master"›4985 is expected to allow :name_regex to be ‹".*"›4986 is expected to allow :name_regex_keep to be ‹".*"›4987 is expected to allow :name_regex to be ‹"v.+"›4988 is expected to allow :name_regex_keep to be ‹"v.+"›4989 is expected to allow :name_regex to be ‹"v10.1.*"›4990 is expected to allow :name_regex_keep to be ‹"v10.1.*"›4991 is expected to allow :name_regex to be ‹"(?:v.+|master|release)"›4992 is expected to allow :name_regex_keep to be ‹"(?:v.+|master|release)"›4993 is expected to allow :name_regex to be ‹"["›4994 is expected to allow :name_regex_keep to be ‹"["›4995 is expected to allow :name_regex to be ‹"(?:v.+|master|release"›4996 is expected to allow :name_regex_keep to be ‹"(?:v.+|master|release"›4997 .preloaded4998 preloads the associations4999 .runnable_schedules5000 returns the runnable schedule5001 when there are no runnable schedules5002 returns an empty array5003 policies with container repositories5004 .with_container_repositories5005 is expected to contain exactly #<ContainerExpirationPolicy project_id: 825, created_at: "2023-04-26 10:43:57.101742643 +0000", updat...name_regex: ".*", cadence: "1d", older_than: "90d", keep_n: 10, enabled: true, name_regex_keep: nil> and #<ContainerExpirationPolicy project_id: 826, created_at: "2023-04-26 10:43:57.278510702 +0000", updat...name_regex: ".*", cadence: "1d", older_than: "90d", keep_n: 10, enabled: true, name_regex_keep: nil>5006 .without_container_repositories5007 is expected to contain exactly #<ContainerExpirationPolicy project_id: 827, created_at: "2023-04-26 10:43:57.428293513 +0000", updat...name_regex: ".*", cadence: "1d", older_than: "90d", keep_n: 10, enabled: true, name_regex_keep: nil>5008Projects::ParticipantsService5009 #execute5010 does not return duplicate author5011 N+1 checks5012 avoids N+1 UserDetail queries5013 avoids N+1 groups queries5014 group items5015 group user counts5016 returns correct user counts for groups5017 avatar_url5018 returns an url for the avatar5019 returns an url for the avatar with relative url5020 #project_members5021 behaves like return project members5022 when there is a project in group namespace5023 returns members of a group5024 when there is a private group and a public project5025 when the private group is invited to the public project5026 when a user who is outside the public project and the private group is signed in5027 does not return the private group5028 does not return private group members5029 returns the project maintainer5030 returns project members from an invited public group5031 does not return ancestors of the private group5032 when private group owner is signed in5033 returns private group members5034 returns ancestors of the the private group5035 when the namespace owner of the public project is signed in5036 returns private group members5037 does not return members of the ancestral groups of the private group5038Gitlab::Ci::Config::Entry::Default5039 behaves like with inheritable CI config5040 does prepend an Inheritable mixin5041 all inheritable entries are covered5042 all entries do have inherit flag5043 for non-inheritable entries5044 entry_key: :hooks5045 inheritable_class does not define entry5046 entry_key: :interruptible5047 inheritable_class does not define entry5048 entry_key: :timeout5049 inheritable_class does not define entry5050 entry_key: :retry5051 inheritable_class does not define entry5052 entry_key: :tags5053 inheritable_class does not define entry5054 entry_key: :artifacts5055 inheritable_class does not define entry5056 for inheritable entries5057 entry_key: :before_script, entry_class: Gitlab::Ci::Config::Entry::Commands5058 inheritable_class does define entry5059 when is specified5060 does inherit value5061 when entry is specified5062 does not inherit value5063 when inheritable does not specify5064 does not inherit value5065 entry_key: :after_script, entry_class: Gitlab::Ci::Config::Entry::Commands5066 inheritable_class does define entry5067 when is specified5068 does inherit value5069 when entry is specified5070 does not inherit value5071 when inheritable does not specify5072 does not inherit value5073 entry_key: :cache, entry_class: Gitlab::Ci::Config::Entry::Caches5074 inheritable_class does define entry5075 when is specified5076 does inherit value5077 when entry is specified5078 does not inherit value5079 when inheritable does not specify5080 does not inherit value5081 entry_key: :image, entry_class: Gitlab::Ci::Config::Entry::Image5082 inheritable_class does define entry5083 when is specified5084 does inherit value5085 when entry is specified5086 does not inherit value5087 when inheritable does not specify5088 does not inherit value5089 entry_key: :services, entry_class: Gitlab::Ci::Config::Entry::Services5090 inheritable_class does define entry5091 when is specified5092 does inherit value5093 when entry is specified5094 does not inherit value5095 when inheritable does not specify5096 does not inherit value5097 .nodes5098 returns a hash5099 when filtering all the entry/node names5100 contains the expected node names5101 validations5102 when default entry value is correct5103 #valid?5104 is valid5105 when default entry is empty5106 #valid5107 is valid5108 when default entry is not correct5109 incorrect config value type5110 #errors5111 reports error about a config type5112 when unknown keys detected5113 #valid5114 is not valid5115 #compose!5116 when default entry inherits configuration from root5117 raises error5118 when default entry inherits a non-defined configuration from root5119 inherits non-defined configuration entries5120TasksToBeDone::CreateWorker5121 is labeled as idempotent5122 performs multiple times sequentially without raising an exception5123 creates 3 task issues5124 .perform5125 executes the task services for all tasks to be done5126groups/edit.html.haml5127 "Share with group lock" setting5128 for a root group5129 behaves like "Share with group lock" setting5130 has the correct label, help text, and checkbox options5131 for a subgroup5132 when the root_group has "Share with group lock" disabled5133 when the subgroup has "Share with group lock" disabled5134 as the root_owner5135 behaves like "Share with group lock" setting5136 has the correct label, help text, and checkbox options5137 as the sub_owner5138 behaves like "Share with group lock" setting5139 has the correct label, help text, and checkbox options5140 when the subgroup has "Share with group lock" enabled5141 as the root_owner5142 behaves like "Share with group lock" setting5143 has the correct label, help text, and checkbox options5144 as the sub_owner5145 behaves like "Share with group lock" setting5146 has the correct label, help text, and checkbox options5147 when the root_group has "Share with group lock" enabled5148 when the subgroup has "Share with group lock" disabled (parent overridden)5149 as the root_owner5150 behaves like "Share with group lock" setting5151 has the correct label, help text, and checkbox options5152 as the sub_owner5153 behaves like "Share with group lock" setting5154 has the correct label, help text, and checkbox options5155 when the subgroup has "Share with group lock" enabled (same as parent)5156 as the root_owner5157 behaves like "Share with group lock" setting5158 has the correct label, help text, and checkbox options5159 as the sub_owner5160 behaves like "Share with group lock" setting5161 has the correct label, help text, and checkbox options5162 ip_restriction5163 prompt user about registration features5164 with service ping disabled5165 renders a placeholder input with registration features message5166 with service ping enabled5167 does not render a placeholder input with registration features message5168Todos::Destroy::UnauthorizedFeaturesService5169 when user_id is provided5170 when all features have same visibility as the project5171 removes only user issue todos5172 when issues are visible only to project members but the user is a member5173 does not remove any todos5174 when issues are visible only to project members5175 removes only user issue todos5176 when mrs, builds and repository are visible only to project members5177 removes only user mr and commit todos5178 when mrs are visible only to project members5179 removes only user merge request todo5180 when mrs and issues are visible only to project members5181 removes only user merge request and issue todos5182 when user_id is not provided5183 when all features have same visibility as the project5184 does not remove any todos5185 when issues are visible only to project members5186 removes only non members issue todos5187 when mrs, builds and repository are visible only to project members5188 removes only non members mr and commit todos5189 when mrs are visible only to project members5190 removes only non members merge request todos5191 when mrs and issues are visible only to project members5192 removes only non members merge request and issue todos5193Gitlab::Middleware::ReadOnly5194 when database is read-only5195 behaves like write access for a read-only GitLab instance5196 normal requests to a read-only GitLab instance5197 expects PATCH requests to be disallowed5198 expects PUT requests to be disallowed5199 expects POST requests to be disallowed5200 expects a internal POST request to be allowed after a disallowed request5201 expects DELETE requests to be disallowed5202 expects POST of new file that looks like an LFS batch url to be disallowed5203 returns last_vistited_url for disallowed request5204 allowlisted requests5205 expects a POST internal request to be allowed5206 expects a POST internal request with trailing slash to be allowed5207 expects a graphql request to be allowed5208 expects a graphql request with trailing slash to be allowed5209 relative URL is configured5210 expects a graphql request to be allowed5211 expects a graphql request with trailing slash to be allowed5212 sidekiq admin requests5213 mounted_at: ""5214 allows requests5215 allows requests with trailing slash5216 mounted_at: "/"5217 allows requests5218 allows requests with trailing slash5219 mounted_at: "/gitlab"5220 allows requests5221 allows requests with trailing slash5222 mounted_at: "/gitlab/"5223 allows requests5224 allows requests with trailing slash5225 mounted_at: "/gitlab/gitlab"5226 allows requests5227 allows requests with trailing slash5228 mounted_at: "/gitlab/gitlab/"5229 allows requests5230 allows requests with trailing slash5231 description: "LFS request to batch", path: "/root/rouge.git/info/lfs/objects/batch"5232 expects a POST description: "LFS request to batch", path: "/root/rouge.git/info/lfs/objects/batch" URL to be allowed5233 expects a POST description: "LFS request to batch", path: "/root/rouge.git/info/lfs/objects/batch" URL with trailing slash to be allowed5234 description: "request to git-upload-pack", path: "/root/rouge.git/git-upload-pack"5235 expects a POST description: "request to git-upload-pack", path: "/root/rouge.git/git-upload-pack" URL to be allowed5236 expects a POST description: "request to git-upload-pack", path: "/root/rouge.git/git-upload-pack" URL with trailing slash to be allowed5237 description: "user sign out", path: "/users/sign_out"5238 expects a POST description: "user sign out", path: "/users/sign_out" URL to be allowed5239 expects a POST description: "user sign out", path: "/users/sign_out" URL with trailing slash to be allowed5240 description: "admin session", path: "/admin/session"5241 expects a POST description: "admin session", path: "/admin/session" URL to be allowed5242 expects a POST description: "admin session", path: "/admin/session" URL with trailing slash to be allowed5243 description: "admin session destroy", path: "/admin/session/destroy"5244 expects a POST description: "admin session destroy", path: "/admin/session/destroy" URL to be allowed5245 expects a POST description: "admin session destroy", path: "/admin/session/destroy" URL with trailing slash to be allowed5246 description: "LFS request to locks verify", path: "/root/rouge.git/info/lfs/locks/verify"5247 expects a POST description: "LFS request to locks verify", path: "/root/rouge.git/info/lfs/locks/verify" URL not to be allowed5248 expects a POST description: "LFS request to locks verify", path: "/root/rouge.git/info/lfs/locks/verify" URL with trailing slash not to be allowed5249 description: "LFS request to locks create", path: "/root/rouge.git/info/lfs/locks"5250 expects a POST description: "LFS request to locks create", path: "/root/rouge.git/info/lfs/locks" URL not to be allowed5251 expects a POST description: "LFS request to locks create", path: "/root/rouge.git/info/lfs/locks" URL with trailing slash not to be allowed5252 description: "LFS request to locks unlock", path: "/root/rouge.git/info/lfs/locks/1/unlock"5253 expects a POST description: "LFS request to locks unlock", path: "/root/rouge.git/info/lfs/locks/1/unlock" URL not to be allowed5254 expects a POST description: "LFS request to locks unlock", path: "/root/rouge.git/info/lfs/locks/1/unlock" URL with trailing slash not to be allowed5255 JSON requests to a read-only GitLab instance5256 expects PATCH requests to be disallowed5257 expects PUT requests to be disallowed5258 expects POST requests to be disallowed5259 expects DELETE requests to be disallowed5260Gitlab::ImportExport::Group::RelationFactory5261 label object5262 does not have the original ID5263 does not have the original group_id5264 has the new group_id5265 excluded attributes5266 are removed from the imported object5267 behaves like Notes user references5268 when the importer is admin5269 and the note author is not mapped5270 is expected to eq #<User id:1438 @user771>5271 is expected to include "*By Administrator"5272 and the note author is the importer user5273 is expected to eq #<User id:1440 @user773>5274 is expected not to include "*By Administrator"5275 and the note author exists in the target instance5276 is expected to eq #<User id:1442 @user775>5277 is expected not to include "*By Administrator"5278 when the importer is not admin5279 and the note author is not mapped5280 is expected to eq #<User id:1446 @user779>5281 is expected to include "*By Administrator"5282 and the note author is the importer user5283 is expected to eq #<User id:1448 @user781>5284 is expected to include "*By Administrator"5285 and the note author exists in the target instance5286 is expected to eq #<User id:1451 @user784>5287 is expected to include "*By Administrator"5288 when relation is namespace_settings5289 is expected to eq nil5290Gitlab::ErrorTracking::Processor::SidekiqProcessor5291 .filter_arguments5292 returns a lazy enumerator5293 arguments filtering5294 klass: "UnknownWorker", expected: [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]5295 is expected to eq [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]5296 klass: "NoPermittedArguments", expected: [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]5297 is expected to eq [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]5298 klass: "OnePermittedArgument", expected: [1, "string", "[FILTERED]", "[FILTERED]"]5299 is expected to eq [1, "string", "[FILTERED]", "[FILTERED]"]5300 klass: "AllPermittedArguments", expected: [1, "string", [1, 2], {:a=>1}]5301 is expected to eq [1, "string", [1, 2], {:a=>1}]5302 .permitted_arguments_for_worker5303 returns the loggable_arguments for a worker class as a set5304 returns an empty set when the worker class does not exist5305 returns an empty set when the worker class does not respond to loggable_arguments5306 returns an empty set when loggable_arguments cannot be converted to a set5307 memoizes the results5308 .loggable_arguments5309 filters and limits the arguments, then converts to strings5310 .call5311 when there is Sidekiq data5312 when processing via the default error handler5313 with Raven events5314 for an unknown worker5315 only allows numeric arguments for an unknown worker5316 for a permitted worker5317 allows all argument types for a permitted worker5318 with Sentry events5319 for an unknown worker5320 only allows numeric arguments for an unknown worker5321 for a permitted worker5322 allows all argument types for a permitted worker5323 when processing via Gitlab::ErrorTracking5324 with Raven events5325 for an unknown worker5326 only allows numeric arguments for an unknown worker5327 for a permitted worker5328 allows all argument types for a permitted worker5329 with Sentry events5330 for an unknown worker5331 only allows numeric arguments for an unknown worker5332 for a permitted worker5333 allows all argument types for a permitted worker5334 with Raven events5335 behaves like handles jobstr fields5336 when a jobstr field is present5337 removes the jobstr5338 when no jobstr value is present5339 does nothing5340 with Sentry events5341 behaves like handles jobstr fields5342 when a jobstr field is present5343 removes the jobstr5344 when no jobstr value is present5345 does nothing5346 when there is no Sidekiq data5347 with Raven events5348 behaves like does nothing5349 does nothing5350 with Sentry events5351 behaves like does nothing5352 does nothing5353 when there is Sidekiq data but no job5354 with Raven events5355 behaves like does nothing5356 does nothing5357 with Sentry events5358 behaves like does nothing5359 does nothing5360Packages::UpdatePackageFileService5361 #execute5362 with object storage disabled5363 behaves like updating package file with valid parameters5364 with both parameters set5365 updates the package file accordingly5366 with only file_name set5367 updates the package file accordingly5368 with only package_id set5369 updates the package file accordingly5370 behaves like not updating package with invalid parameters5371 with blank parameters5372 raise an argument error5373 with non persisted package file5374 raise an argument error5375 with object storage enabled5376 behaves like updating package file with valid parameters5377 with both parameters set5378 updates the package file accordingly5379 with only file_name set5380 updates the package file accordingly5381 with only package_id set5382 updates the package file accordingly5383 behaves like not updating package with invalid parameters5384 with blank parameters5385 raise an argument error5386 with non persisted package file5387 raise an argument error5388Gitlab::Metrics::Dashboard::Processor5389 process5390 includes an id for each dashboard panel5391 includes boolean to indicate if panel group has custom metrics5392 when the dashboard is not present5393 returns nil5394 when dashboard config corresponds to common metrics5395 inserts metric ids into the config5396 when the project has associated metrics5397 includes project-specific metrics5398 display groups and panels in the order they are defined5399 when the project has multiple metrics in the same group5400 includes multiple metrics5401 when the dashboard should not include project metrics5402 includes only dashboard metrics5403 when sample_metrics are requested5404 includes a sample metrics path for the prometheus endpoint with each metric5405 when there are no alerts5406 does not insert an alert_path5407 when the dashboard is missing panel_groups5408 behaves like errors with message5409 raises a DashboardLayoutError5410 when the dashboard contains a panel_group which is missing panels5411 behaves like errors with message5412 raises a DashboardLayoutError5413 when the dashboard contains a panel which is missing metrics5414 behaves like errors with message5415 raises a DashboardLayoutError5416 when the dashboard contains a metric which is missing a query5417 behaves like errors with message5418 raises a DashboardLayoutError5419Gitlab::Analytics::CycleAnalytics::StageEvents::MergeRequestLastBuildFinished5420 behaves like value stream analytics event5421 is expected to be a kind of String5422 is expected to be a kind of Symbol5423 is expected to include ApplicationRecord(abstract)5424 is expected to respond to #timestamp_projection5425 is expected to respond to #html_description5426 is expected to be a kind of Array5427 #apply_query_customization5428 expects an ActiveRecord::Relation object as argument and returns a modified version of it5429 #hash_code5430 returns a hash that uniquely identifies an event5431 does not differ when the same object is built with the same params5432 behaves like LEFT JOIN-able value stream analytics event5433 can use the event as LEFT JOIN5434 when looking at the record with data5435 contains the timestamp expression5436 when looking at the record without data5437 returns nil for the timestamp expression5438ErrorTracking::Error5439 relationships5440 is expected to belong to project required: false5441 is expected to have many events5442 validations5443 is expected to validate that :name cannot be empty/falsy5444 is expected to validate that the length of :name is at most 2555445 is expected to validate that :description cannot be empty/falsy5446 is expected to validate that the length of :description is at most 10245447 is expected to validate that :actor cannot be empty/falsy5448 is expected to validate that the length of :actor is at most 2555449 is expected to validate that the length of :platform is at most 2555450 .report_error5451 updates existing record with a new timestamp5452 .sort_by_attribute5453 id desc by default5454 is expected to eq [#<ErrorTracking::Error id: 3, project_id: 860, name: "ActionView::MissingTemplate", description: [FI...5 +0000", updated_at: "2023-04-26 10:44:54.835204785 +0000", events_count: 0, status: "unresolved">]5455 first_seen5456 is expected to eq [#<ErrorTracking::Error id: 1, project_id: 858, name: "ActionView::MissingTemplate", description: [FI...2 +0000", updated_at: "2023-04-26 10:44:56.724993642 +0000", events_count: 0, status: "unresolved">]5457 last_seen5458 is expected to eq [#<ErrorTracking::Error id: 1, project_id: 858, name: "ActionView::MissingTemplate", description: [FI...9 +0000", updated_at: "2023-04-26 10:44:57.072499769 +0000", events_count: 0, status: "unresolved">]5459 frequency5460 is expected to eq [#<ErrorTracking::Error id: 8, project_id: 865, name: "ActionView::MissingTemplate", description: [FI...5 +0000", updated_at: "2023-04-26 10:44:54.835204785 +0000", events_count: 0, status: "unresolved">]5461 #title5462 is expected to eq "ActionView::MissingTemplate Missing template posts/edit"5463 #to_sentry_error5464 is expected to be a kind of Gitlab::ErrorTracking::Error5465 #to_sentry_detailed_error5466 is expected to be a kind of Gitlab::ErrorTracking::DetailedError5467 is expected to be truthy5468 is expected to eq "db853d7"5469 is expected to eq "db853d7"5470Gitlab::Graphql::Pagination::ActiveRecordArrayConnection5471 behaves like a connection with collection methods5472 responds to to_a5473 responds to size5474 responds to map5475 responds to include?5476 responds to empty?5477 behaves like a redactable connection5478 no redactor set5479 contains the unwanted item5480 does not redact more than once5481 redactor is set5482 does not contain the unwanted item5483 does not redact more than once5484 #nodes5485 is expected to contain exactly #<Packages::BuildInfo id: 8, package_id: 335, pipeline_id: nil>, #<Packages::BuildInfo id: 9, package_id: 336, pipeline_id: nil>, and #<Packages::BuildInfo id: 10, package_id: 337, pipeline_id: nil>5486 with first set5487 is expected to contain exactly #<Packages::BuildInfo id: 8, package_id: 335, pipeline_id: nil> and #<Packages::BuildInfo id: 9, package_id: 336, pipeline_id: nil>5488 with last set5489 is expected to contain exactly #<Packages::BuildInfo id: 9, package_id: 336, pipeline_id: nil> and #<Packages::BuildInfo id: 10, package_id: 337, pipeline_id: nil>5490 #next_page?5491 before: nil, first: nil, max_page_size: nil, result: false5492 is expected to eq false5493 before: 1, first: nil, max_page_size: nil, result: true5494 is expected to eq true5495 before: nil, first: 1, max_page_size: nil, result: true5496 is expected to eq true5497 before: nil, first: 10, max_page_size: nil, result: false5498 is expected to eq false5499 before: nil, first: 1, max_page_size: 1, result: true5500 is expected to eq true5501 before: nil, first: 1, max_page_size: 10, result: true5502 is expected to eq true5503 before: nil, first: 10, max_page_size: 10, result: false5504 is expected to eq false5505 #previous_page?5506 after: nil, last: nil, max_page_size: nil, result: false5507 is expected to eq false5508 after: 1, last: nil, max_page_size: nil, result: true5509 is expected to eq true5510 after: nil, last: 1, max_page_size: nil, result: true5511 is expected to eq true5512 after: nil, last: 10, max_page_size: nil, result: false5513 is expected to eq false5514 after: nil, last: 1, max_page_size: 1, result: true5515 is expected to eq true5516 after: nil, last: 1, max_page_size: 10, result: true5517 is expected to eq true5518 after: nil, last: 10, max_page_size: 10, result: false5519 is expected to eq false5520 #cursor_for5521 is expected to eq "eyJpZCI6IjgifQ"5522 with a BatchLoader::GraphQL item5523 is expected to eq "eyJpZCI6IjE0OTIifQ"5524 #dup5525 properly handles items duplication5526Gitlab::Metrics::Methods5527 #define_metrics5528 metrics access method not defined5529 defines metrics accessing method5530 metrics access method defined5531 raises error when trying to redefine method5532 metric is not cached5533 calls fetch_metric5534 metric is cached5535 returns cached metric5536 #fetch_metric5537 when counter is not cached5538 initializes counter metric5539 when counter is cached5540 uses class metric cache5541 when metric is reloaded5542 initializes counter metric5543 when metric is configured with feature5544 when feature is enabled5545DEPRECATION WARNING: Invalid Feature Flag some_metric_feature stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)5546 initializes counter metric5547 when feature is disabled5548DEPRECATION WARNING: Invalid Feature Flag some_metric_feature stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)5549 returns NullMetric5550 #define_metrics5551 metrics access method not defined5552 defines metrics accessing method5553 metrics access method defined5554 raises error when trying to redefine method5555 metric is not cached5556 calls fetch_metric5557 metric is cached5558 returns cached metric5559 #fetch_metric5560 when gauge is not cached5561 initializes counter metric5562 when gauge is cached5563 uses class metric cache5564 when metric is reloaded5565 initializes gauge metric5566 when metric is configured with feature5567 when feature is enabled5568DEPRECATION WARNING: Invalid Feature Flag some_metric_feature stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)5569 initializes gauge metric5570 when feature is disabled5571DEPRECATION WARNING: Invalid Feature Flag some_metric_feature stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)5572 returns NullMetric5573 #define_metrics5574 metrics access method not defined5575 defines metrics accessing method5576 metrics access method defined5577 raises error when trying to redefine method5578 metric is not cached5579 calls fetch_metric5580 metric is cached5581 returns cached metric5582 #fetch_metric5583 when histogram is not cached5584 initializes counter metric5585 when histogram is cached5586 uses class metric cache5587 when metric is reloaded5588 initializes histogram metric5589 when metric is configured with feature5590 when feature is enabled5591DEPRECATION WARNING: Invalid Feature Flag some_metric_feature stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)5592 initializes histogram metric5593 when feature is disabled5594DEPRECATION WARNING: Invalid Feature Flag some_metric_feature stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)5595 returns NullMetric5596gitlab:service_desk_email:secret rake tasks5597 # order random5598 edit5599# password: '123'5600# user: 'gitlab-incoming@gmail.com'5601 creates encrypted file5602 displays error when key does not exist5603 displays error when key is changed5604 displays error when write directory does not exist5605somevalue shows a warning when content is invalid5606 displays error when $EDITOR is not set5607 write5608 creates encrypted file from stdin5609 displays error when key does not exist5610 displays error when write directory does not exist5611somevalue shows a warning when content is invalid5612 :show5613 displays error when file does not exist5614 displays error when key does not exist5615 displays error when key is changed5616 outputs the unencrypted content when present5617Gitlab::Ci::Build::Artifacts::Metadata::Entry5618 /file/with/absolute_path5619 is expected to be file5620 is expected to have parent5621 #basename5622 is expected to eq "absolute_path"5623 path/dir_1/5624 is expected to have parent5625 is expected to be directory5626 #basename5627 is expected to eq "dir_1/"5628 #name5629 is expected to eq "dir_1"5630 #parent5631 is expected to eq Gitlab::Ci::Build::Artifacts::Metadata::Entry: path/5632 #children5633 is expected to all be an instance of Gitlab::Ci::Build::Artifacts::Metadata::Entry5634 is expected to contain exactly Gitlab::Ci::Build::Artifacts::Metadata::Entry: path/dir_1/file_1, Gitlab::Ci::Build::Artifacts::Metadata::Entry: path/dir_1/file_b, and Gitlab::Ci::Build::Artifacts::Metadata::Entry: path/dir_1/subdir/5635 #files5636 is expected to all be file5637 is expected to all be an instance of Gitlab::Ci::Build::Artifacts::Metadata::Entry5638 is expected to contain exactly Gitlab::Ci::Build::Artifacts::Metadata::Entry: path/dir_1/file_1 and Gitlab::Ci::Build::Artifacts::Metadata::Entry: path/dir_1/file_b5639 #directories5640 without options5641 is expected to all be directory5642 is expected to all be an instance of Gitlab::Ci::Build::Artifacts::Metadata::Entry5643 is expected to contain exactly Gitlab::Ci::Build::Artifacts::Metadata::Entry: path/dir_1/subdir/5644 with option parent: true5645 is expected to all be directory5646 is expected to all be an instance of Gitlab::Ci::Build::Artifacts::Metadata::Entry5647 is expected to contain exactly Gitlab::Ci::Build::Artifacts::Metadata::Entry: path/dir_1/subdir/ and Gitlab::Ci::Build::Artifacts::Metadata::Entry: path/5648 #nodes5649 is expected to eq 25650 #exists?5651 is expected to equal true5652 #empty?5653 is expected to equal false5654 #total_size5655 is expected to eq 305656 empty path5657 is expected not to have parent5658 #children5659 is expected to eq 35660 path/dir_1/subdir/subfile5661 #nodes5662 is expected to eq 45663 #blob5664 returns a blob representing the entry data5665 non-existent/5666 #empty?5667 is expected to equal true5668 #exists?5669 is expected to equal false5670 another_directory/5671 #empty?5672 is expected to equal true5673 #metadata5674 is expected to eq "/path/file1"5675Gitlab::Logger5676 .build5677 builds logger using Gitlab::Logger.log_level5678 raises ArgumentError if invalid log level5679 env_value: "debug", resulting_level: 05680 builds logger if valid log level is provided5681 env_value: "DEBUG", resulting_level: 05682 builds logger if valid log level is provided5683 env_value: "DeBuG", resulting_level: 05684 builds logger if valid log level is provided5685 env_value: "info", resulting_level: 15686 builds logger if valid log level is provided5687 env_value: "INFO", resulting_level: 15688 builds logger if valid log level is provided5689 env_value: "InFo", resulting_level: 15690 builds logger if valid log level is provided5691 env_value: "warn", resulting_level: 25692 builds logger if valid log level is provided5693 env_value: "WARN", resulting_level: 25694 builds logger if valid log level is provided5695 env_value: "WaRn", resulting_level: 25696 builds logger if valid log level is provided5697 env_value: "error", resulting_level: 35698 builds logger if valid log level is provided5699 env_value: "ERROR", resulting_level: 35700 builds logger if valid log level is provided5701 env_value: "ErRoR", resulting_level: 35702 builds logger if valid log level is provided5703 env_value: "fatal", resulting_level: 45704 builds logger if valid log level is provided5705 env_value: "FATAL", resulting_level: 45706 builds logger if valid log level is provided5707 env_value: "FaTaL", resulting_level: 45708 builds logger if valid log level is provided5709 env_value: "unknown", resulting_level: 55710 builds logger if valid log level is provided5711 env_value: "UNKNOWN", resulting_level: 55712 builds logger if valid log level is provided5713 env_value: "UnKnOwN", resulting_level: 55714 builds logger if valid log level is provided5715 .log_level5716 if GITLAB_LOG_LEVEL is set5717 returns value defined by GITLAB_LOG_LEVEL5718 ignores fallback5719 if GITLAB_LOG_LEVEL is not set5720 returns default fallback DEBUG5721 returns passed fallback5722Integrations::EmailsOnPush5723 Validations5724 when integration is active5725 is expected to validate that :recipients cannot be empty/falsy5726 when integration is inactive5727 is expected not to validate that :recipients cannot be empty/falsy5728 validates number of recipients5729 valid number of recipients5730 does not count duplicates and invalid emails5731 invalid number of recipients5732 is expected not to be valid5733 adds an error message5734 when integration is not active5735 is expected to be valid5736 .new5737 when properties is missing branches_to_be_notified5738 sets the default value to all5739 when branches_to_be_notified is already set5740 does not overwrite it with the default value5741 .valid_recipients5742 removes invalid email addresses and removes duplicates by keeping the original capitalization5743 #execute5744 when emails are disabled on the project5745 does not send emails5746 when emails are enabled on the project5747 pushing to a random branch and notification configured for all branches5748 sends email5749 pushing to the default branch and notification configured for all branches5750 sends email5751 pushing to a protected branch and notification configured for all branches5752 sends email5753 pushing to a random branch and notification configured for default branch only5754 does not send email5755 pushing to the default branch and notification configured for default branch only5756 sends email5757 pushing to a protected branch and notification configured for default branch only5758 does not send email5759 pushing to a random branch and notification configured for protected branches only5760 does not send email5761 pushing to the default branch and notification configured for protected branches only5762 does not send email5763 pushing to a protected branch and notification configured for protected branches only5764 sends email5765 pushing to a random branch and notification configured for default and protected branches only5766 does not send email5767 pushing to the default branch and notification configured for default and protected branches only5768 sends email5769 pushing to a protected branch and notification configured for default and protected branches only5770 sends email5771Gitlab::Auth::Ldap::Config5772 .servers5773 returns empty array if no server information is available5774 .available_providers5775 returns one provider5776 #initialize5777 requires a provider5778 returns an instance of Gitlab::Auth::Ldap::Config5779 raises an error if a unknown provider is used5780 #adapter_options5781 constructs basic options5782 includes failover hosts when set5783 includes authentication options when auth is configured5784 sets encryption method to simple_tls when configured as simple_tls5785 sets encryption method to start_tls when configured as start_tls5786 transforms SSL cert and key to OpenSSL objects5787 logs an error when an invalid key or cert are configured5788 when verify_certificates is enabled5789 sets tls_options to OpenSSL defaults5790 when verify_certificates is disabled5791 sets verify_mode to OpenSSL VERIFY_NONE5792 when ca_file is specified5793 passes it through in tls_options5794 when ca_file is a blank string5795 does not add the ca_file key to tls_options5796 when ssl_version is specified5797 passes it through in tls_options5798 when ssl_version is a blank string5799 does not add the ssl_version key to tls_options5800 #omniauth_options5801 constructs basic options5802 includes authentication options when auth is configured5803 transforms SSL cert and key to OpenSSL objects5804 when verify_certificates is enabled5805 specifies disable_verify_certificates as false5806 when verify_certificates is disabled5807 specifies disable_verify_certificates as true5808 when ca_file is present5809 passes it through5810 when ca_file is blank5811 does not include the ca_file option5812 when ssl_version is present5813 passes it through5814 when ssl_version is blank5815 does not include the ssl_version option5816 #has_auth?5817 is true when password is set5818 is true when bind_dn is set and password is empty5819 is false when password and bind_dn are not set5820 #attributes5821 uses default attributes when no custom attributes are configured5822 merges the configuration attributes with default attributes5823 #default_attributes5824 includes the configured uid attribute in the username attributes5825 only includes unique values for username attributes5826 #base5827 when the configured base is not normalized5828 returns the normalized base5829 when the configured base is normalized5830 returns the base unaltered5831 when the configured base is malformed5832 returns the base unaltered5833 when the configured base is blank5834 returns the base unaltered5835 sign_in_enabled?5836 enabled: true, prevent_ldap_sign_in: false, result: true5837 is expected to eq true5838 enabled: "true", prevent_ldap_sign_in: false, result: true5839 is expected to eq true5840 enabled: true, prevent_ldap_sign_in: true, result: false5841 is expected to eq false5842 enabled: false, prevent_ldap_sign_in: nil, result: false5843 is expected to eq false5844Gitlab::DataBuilder::Deployment5845 .build5846 returns the object kind for a deployment5847 returns data for the given build5848 does not include the deployable URL when there is no deployable5849 when commit does not exist in the repository5850 returns nil for commit_url5851 returns nil for commit_title5852 when deployed_by is nil5853 returns nil for user5854 returns nil for user_url5855MergeRequests::UpdateHeadPipelineWorker5856 behaves like subscribes to event5857 consumes the published event5858 behaves like an idempotent worker5859 is labeled as idempotent5860 performs multiple times sequentially without raising an exception5861 when merge requests already exist for this source branch5862 when the head pipeline sha equals merge request sha5863 updates head pipeline of each merge request5864 when the merge request is not open5865 only updates the open merge requests5866 when the head pipeline sha does not equal merge request sha5867 does not update the head piepeline of MRs5868 when there is no pipeline for source branch5869 does not update merge request head pipeline5870 when merge request target project is different from source project5871 updates head pipeline for merge request5872 when the pipeline is not the latest for the branch5873 does not update merge request head pipeline5874 when pipeline has errors5875 updates merge request head pipeline reference5876WikiPage::Slug5877 Associations5878 is expected to belong to wiki_page_meta required: false5879 refers correctly to the wiki_page_meta5880 scopes5881 canonical5882 there are no slugs5883 is expected to be empty5884 there are some non-canonical slugs5885 is expected to be empty5886 there is at least one canonical slugs5887 is expected not to be empty5888 Validations5889 is expected to validate that :slug is case-sensitively unique within the scope of :wiki_page_meta_id5890 is expected to validate that the length of :slug is at most 20485891 is expected not to allow :slug to be ‹nil›5892 only_one_slug_can_be_canonical_per_meta_record5893 there are no other slugs5894 is expected to be valid5895 the current slug is canonical5896 is expected to be valid5897 there are other slugs, but they are not canonical5898 is expected to be valid5899 the current slug is canonical5900 is expected to be valid5901 there is already a canonical slug5902 is expected to be valid5903 the current slug is canonical5904 is expected not to be valid5905Mutations::Timelogs::Delete5906 #resolve5907 when the timelog id is not valid5908 raises Gitlab::Graphql::Errors::ResourceNotAvailable5909 when the current user is not the timelog's author, not a maintainer and not an admin5910 raises Gitlab::Graphql::Errors::ResourceNotAvailable5911 when the current user is the timelog's author5912 deletes the timelog5913 returns the deleted timelog5914 returns no errors5915 when the current user is not the timelog's author but a maintainer of the project5916 deletes the timelog5917 returns the deleted timelog5918 returns no errors5919 when the current user is not the timelog's author, not a maintainer but an admin5920 deletes the timelog5921 returns the deleted timelog5922 returns no errors5923gitlab:external_diffs rake tasks5924 force_object_storage task5925 forces externally stored merge request diffs to object storage5926 limits batches according to BATCH_SIZE, START_ID, and END_ID5927ReleasesHelper5928 #illustration5929 returns the correct image path5930 #releases_help_page_path5931 returns the correct link to the help page5932 url helpers5933 #data_for_releases_page5934 includes the required data for displaying release blocks5935 when the user is allowed to create a new release5936 includes new_release_path5937 points new_release_path to the "New Release" page5938 new releases redirect new milestone creation5939 redirects new_milestone_path back to the release page5940 #data_for_edit_release_page5941 has the needed data to display the "edit release" page5942 #data_for_new_release_page5943 has the needed data to display the "new release" page5944 #data_for_show_page5945 has the needed data to display the individual "release" page5946 startup queries5947 use_startup_query_for_index_page?5948 allows startup queries for non-paginated requests5949 disallows startup queries for requests paginated with a "before" cursor5950 disallows startup queries for requests paginated with an "after" cursor5951 #index_page_startup_query_variables5952 returns the correct GraphQL variables for the startup query5953Banzai::Pipeline::PlainMarkdownPipeline5954 backslash escapes5955 converts all escapable punctuation to literals5956 ensure we handle all the GitLab reference characters5957 does not convert non-reference/latex punctuation to spans5958 does not convert other characters to literals5959 backslash escapes are untouched in code blocks, code spans, autolinks, or raw HTML5960 markdown: "`` \\@\\! ``", expected: "<code>\\@\\!</code>"5961 is expected to include "<code>\\@\\!</code>"5962 markdown: " \\@\\!", expected: "<code>\\@\\!\n</code>"5963 is expected to include "<code>\\@\\!\n</code>"5964 markdown: "~~~\n\\@\\!\n~~~", expected: "<code>\\@\\!\n</code>"5965 is expected to include "<code>\\@\\!\n</code>"5966 markdown: "$1+\\$2$", expected: "<code data-math-style=\"inline\">1+\\$2</code>"5967 is expected to include "<code data-math-style=\"inline\">1+\\$2</code>"5968 markdown: "<http://example.com?find=\\@>", expected: "<a href=\"http://example.com?find=%5C@\">http://example.com?find=\\@</a>"5969 is expected to include "<a href=\"http://example.com?find=%5C@\">http://example.com?find=\\@</a>"5970 markdown: "<a href=\"/bar\\@)\">", expected: "<a href=\"/bar%5C@)\">"5971 is expected to include "<a href=\"/bar%5C@)\">"5972 work in all other contexts, including URLs and link titles, link references, and info strings in fenced code blocks5973 renders correct html5974 markdown: "[foo](/bar\\@ \"\\@title\")", expected: "<a href=\"/bar@\" title=\"@title\">foo</a>"5975 is expected to include "<a href=\"/bar@\" title=\"@title\">foo</a>"5976 markdown: "[foo]\n\n[foo]: /bar\\@ \"\\@title\"", expected: "<a href=\"/bar@\" title=\"@title\">foo</a>"5977 is expected to include "<a href=\"/bar@\" title=\"@title\">foo</a>"5978FeatureFlagsFinder5979 #execute5980 returns feature flags ordered by name5981 preloads relations by default5982 when user is a reporter5983 returns an empty list5984 when scope is given5985 when scope is enabled5986 returns active feature flag5987 when scope is disabled5988 returns inactive feature flag5989 when preload option is false5990 does not preload relations5991Packages::Cleanup::Policy5992 relationships5993 is expected to belong to project required: false5994 validations5995 is expected to validate that :project cannot be empty/falsy5996 is expected to validate that :keep_n_duplicated_package_files is either ‹"all"›, ‹"1"›, ‹"10"›, ‹"20"›, ‹"30"›, ‹"40"›, or ‹"50"›, producing a custom validation error on failure5997 .active5998 is expected to contain exactly #<Packages::Cleanup::Policy created_at: "2023-04-26 10:45:53.554134735 +0000", updated_at: "2023-04-2..._id: 904, next_run_at: "2023-04-26 22:45:53.553973645 +0000", keep_n_duplicated_package_files: "10">5999 .with_packages6000 is expected to contain exactly #<Packages::Cleanup::Policy created_at: "2023-04-26 10:45:54.120201525 +0000", updated_at: "2023-04-2..._id: 906, next_run_at: "2023-04-26 22:45:54.120036536 +0000", keep_n_duplicated_package_files: "10">6001 .runnable6002 is expected to contain exactly #<Packages::Cleanup::Policy created_at: "2023-04-26 10:45:54.711802753 +0000", updated_at: "2023-04-2..._id: 908, next_run_at: "2023-04-25 10:45:54.714835553 +0000", keep_n_duplicated_package_files: "10">6003 #keep_n_duplicated_package_files_disabled?6004 with value set to all6005 is expected to eq true6006 with value set to 16007 is expected to eq false6008API::Support::GitAccessActor6009 .from_params6010 with params that are valid6011 returns an instance of API::Support::GitAccessActor6012 with params that are invalid6013 returns an instance of API::Support::GitAccessActor6014 when passing an identifier used gitaly6015 finds the user based on an identifier6016 when passing a signing key6017 does not identify the user6018 does not identify the key6019 when passing an auth-only key6020 identifies the user6021 identifies the key6022 attributes6023 #user6024 when initialized with a User6025 returns the User6026 when initialized with a Key6027 returns the User associated to the Key6028 #key_or_user6029 when params contains a :key_id6030 is an instance of Key6031 when params contains a :user_id6032 is an instance of User6033 when params contains a :username6034 is an instance of User (via UserFinder)6035 #deploy_key_or_user6036 returns a deploy key when the params contains deploy key6037 returns a user when the params contains personal key6038 returns a user when the params contains user id6039 returns a user when the params contains user name6040 #username6041 when initialized with a User6042 returns the username6043 when initialized with a Key6044 that has no User associated6045 returns nil6046 that has a User associated6047 returns the username of the User associated to the Key6048 #key_details6049 when initialized with a User6050 returns an empty Hash6051 when initialized with a Key6052 that has no User associated6053 returns a Hash6054 that has a User associated6055 returns a Hash6056 when initialized with a DeployKey6057 returns a Hash6058 #update_last_used_at!6059 when initialized with a User6060 does nothing6061 when initialized with a Key6062 updates update_last_used_at6063 does not update `last_used_at` when the functionality is disabled6064Ci::HasRef6065 #branch?6066 is not a tag6067 return true when tag is set to false6068 when it was triggered by merge request6069 returns false6070 is not a tag6071 return false when tag is set to true6072 #git_ref6073 when tag is true6074 returns a tag ref6075 when tag is false6076 returns a branch ref6077 when tag is nil6078 returns a branch ref6079 when it is triggered by a merge request6080 returns nil6081Deployments::HooksWorker6082 #perform6083 logs deployment and project IDs as metadata6084 executes project services for deployment_hooks6085 does not execute an inactive service6086 does not execute if a deployment does not exist6087 execute webhooks6088 behaves like worker with data consistency6089 .get_data_consistency_feature_flag_enabled?6090 returns true6091 .get_data_consistency6092 returns correct data consistency6093Gitlab::Database::LoadBalancing::RackMiddleware6094 #call6095 handles a request6096 #unstick_or_continue_sticking6097 does not stick if no namespace and identifier could be found6098 sticks to the primary if a warden user is found6099 sticks to the primary if a sticking namespace and identifier is found6100 sticks to the primary if multiple sticking namespaces and identifiers were found6101 #stick_if_necessary6102 does not stick to the primary if not necessary6103 sticks to the primary if a warden user is found6104 sticks to the primary if a a single sticking object is found6105 sticks to the primary if multiple sticking namespaces and identifiers were found6106 #clear6107 clears the currently used host and session6108 #sticking_namespaces6109 using a Warden request6110 returns the warden user if present6111 returns an empty Array if no user was present6112 using a request with a manually set sticking object6113 returns the sticking object6114 using a regular request6115 returns an empty Array6116Gitlab::ImportExport::RemoteStreamUpload6117 #execute6118 when download request and upload request return 2006119 uploads the downloaded content6120 when upload method is put6121 uploads using the put method6122 when download request does not return 2006123 is expected to raise Gitlab::ImportExport::RemoteStreamUpload::StreamError with "Invalid response code while downloading file. Code: 404"6124 when upload request does not returns 2006125 is expected to raise Gitlab::ImportExport::RemoteStreamUpload::StreamError with "Invalid response code while uploading file. Code: 403"6126 when download URL is a local address6127 raises error6128 when local requests are allowed6129 raises does not error6130 when download URL is a local network6131 raises error6132 when local network requests are allowed6133 raises does not error6134 when upload URL is a local address6135 raises error6136 when local requests are allowed6137 raises does not error6138 when upload URL it is a request to local network6139 raises error6140 when local network requests are allowed6141 raises does not error6142 when upload URL resolves to a local address6143 raises error6144 Gitlab::ImportExport::RemoteStreamUpload::ChunkStream6145 StringIO#copy_stream compatibility6146 copies all chunks6147 with chunks smaller and bigger than buffer size6148 copies all chunks6149AccessRequestable6150 Group6151 #request_access6152 is expected to be a kind of GroupMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: int...tate: integer, invite_email_success: boolean, member_namespace_id: integer, member_role_id: integer)6153 is expected to eq #<User id:1588 @user842>6154 #access_requested?6155 is expected to be truthy6156 Project6157 #request_access6158 is expected to be a kind of ProjectMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: i...tate: integer, invite_email_success: boolean, member_namespace_id: integer, member_role_id: integer)6159 #access_requested?6160 is expected to be truthy6161Clusters::InstancePolicy6162 rules6163 when user6164 is expected to be disallowed :read_cluster6165 is expected to be disallowed :add_cluster6166 is expected to be disallowed :create_cluster6167 is expected to be disallowed :update_cluster6168 is expected to be disallowed :admin_cluster6169 when admin6170 when admin mode is enabled6171 is expected to be allowed :read_cluster6172 is expected to be allowed :add_cluster6173 is expected to be allowed :create_cluster6174 is expected to be allowed :update_cluster6175 is expected to be allowed :admin_cluster6176 when admin mode is disabled6177 is expected to be disallowed :read_cluster6178 is expected to be disallowed :add_cluster6179 is expected to be disallowed :create_cluster6180 is expected to be disallowed :update_cluster6181 is expected to be disallowed :admin_cluster6182Banzai::Filter::TaskListFilter6183 adds `<task-button></task-button>` to every list item6184 inapplicable list items6185 does not wrap a sublist with <s>6186 behaves like a valid inapplicable task list item6187 behaves correctly for `[~] foobar`6188 behaves like a valid inapplicable task list item6189 behaves correctly for `[~] foo <em>bar</em>`6190 behaves like an invalid inapplicable task list item6191 does nothing for `[ ] foobar`6192 behaves like an invalid inapplicable task list item6193 does nothing for `[x] foobar`6194 behaves like an invalid inapplicable task list item6195 does nothing for `foo [~] bar`6196KeysFinder6197 key_type6198 when `key_type` is `ssh`6199 returns only SSH keys6200 when `key_type` is not specified6201 returns all types of keys6202 fingerprint6203 with invalid fingerprint6204 with invalid MD5 fingerprint6205 raises InvalidFingerprint6206 with invalid SHA fingerprint6207 raises InvalidFingerprint6208 with valid fingerprints6209 personal key with valid MD5 params6210 with an existent fingerprint6211 returns the key6212 with FIPS mode6213 raises InvalidFingerprint6214 deploy key with an existent fingerprint6215 returns the key6216 with FIPS mode6217 raises InvalidFingerprint6218 with a non-existent fingerprint6219 returns nil6220 with FIPS mode6221 raises InvalidFingerprint6222 personal key with valid SHA256 params6223 with an existent fingerprint6224 returns key6225 deploy key with an existent fingerprint6226 returns key6227 with a non-existent fingerprint6228 returns nil6229 user6230 without user6231 contains ssh_keys of all users in the system6232 with user6233 contains ssh_keys of only the specified users6234 sort order6235 sorts in last_used_at_desc order6236Ci::TestFailureHistoryService6237 #execute6238 when pipeline has failed builds with test reports6239 creates unit test failures records6240 assigns partition_id to Ci::UnitTestFailure6241 when pipeline is not for the default branch6242 does not persist data6243 when test failure data have already been persisted with the same exact attributes6244 does not fail but does not persist new data6245 when number of failed unit tests exceed the limit6246 does not persist data6247 when number of failed unit tests across multiple builds exceed the limit6248 does not persist data6249 when test failure data have duplicates within the same payload (happens when the JUnit report has duplicate unit test names but have different failures)6250 does not fail but does not persist duplicate data6251 when pipeline has no failed builds with test reports6252 does not persist data6253 #should_track_failures?6254 when feature flag is enabled and pipeline ref is the default branch6255 is expected to eq true6256 when pipeline is not equal to the project default branch6257 is expected to eq false6258 when total number of builds with failed tests exceeds the max number of trackable failures6259 is expected to eq false6260 #async6261 when service should track failures6262 enqueues the worker when #perform_if_needed is called6263 when service should not track failures6264 does not enqueue the worker when #perform_if_needed is called6265UserInteractedProject6266 is expected to validate that :project_id cannot be empty/falsy6267 is expected to validate that :user_id cannot be empty/falsy6268 .track6269 sets project accordingly6270 sets user accordingly6271 only creates a record once per user/project6272 for all actions (event types)6273 creates a record6274 for all actions (event types)6275 creates a record6276 for all actions (event types)6277 creates a record6278 for all actions (event types)6279 creates a record6280 for all actions (event types)6281 creates a record6282 for all actions (event types)6283 creates a record6284 for all actions (event types)6285 creates a record6286 for all actions (event types)6287 creates a record6288 for all actions (event types)6289 creates a record6290 for all actions (event types)6291 creates a record6292 for all actions (event types)6293 creates a record6294 for all actions (event types)6295 creates a record6296 with an event without a project6297 ignores the event6298Gitlab::UsageDataCounters::WorkItemActivityUniqueCounter6299 .track_work_item_created_action6300 behaves like work item unique counter6301 when track_work_items_activity FF is enabled6302 tracks a unique event only once6303 when author is nil6304 behaves like counter that does not track the event6305 does not track the event6306 when track_work_items_activity FF is disabled6307 behaves like counter that does not track the event6308 does not track the event6309 .track_work_item_title_changed_action6310 behaves like work item unique counter6311 when track_work_items_activity FF is enabled6312 tracks a unique event only once6313 when author is nil6314 behaves like counter that does not track the event6315 does not track the event6316 when track_work_items_activity FF is disabled6317 behaves like counter that does not track the event6318 does not track the event6319 .track_work_item_date_changed_action6320 behaves like work item unique counter6321 when track_work_items_activity FF is enabled6322 tracks a unique event only once6323 when author is nil6324 behaves like counter that does not track the event6325 does not track the event6326 when track_work_items_activity FF is disabled6327 behaves like counter that does not track the event6328 does not track the event6329 .track_work_item_labels_changed_action6330 behaves like work item unique counter6331 when track_work_items_activity FF is enabled6332 tracks a unique event only once6333 when author is nil6334 behaves like counter that does not track the event6335 does not track the event6336 when track_work_items_activity FF is disabled6337 behaves like counter that does not track the event6338 does not track the event6339 .track_work_item_milestone_changed_action6340 behaves like work item unique counter6341 when track_work_items_activity FF is enabled6342 tracks a unique event only once6343 when author is nil6344 behaves like counter that does not track the event6345 does not track the event6346 when track_work_items_activity FF is disabled6347 behaves like counter that does not track the event6348 does not track the event6349Gitlab::Git::Push6350 #branch_name6351 when it is a branch push6352 returns branch name6353 when it is a tag push6354 returns nil6355 #branch_push?6356 when pushing a branch ref6357 is expected to be branch push6358 when it is a tag push6359 is expected not to be branch push6360 #branch_updated?6361 when it is a branch push with correct old and new revisions6362 is expected to be branch updated6363 when it is not a branch push6364 is expected not to be branch updated6365 when old revision is blank6366 is expected not to be branch updated6367 when it is not a branch push6368 is expected not to be branch updated6369 when oldrev is nil6370 is expected not to be branch updated6371 #force_push?6372 when old revision is an ancestor of the new revision6373 is expected not to be force push6374 when old revision is not an ancestor of the new revision6375 is expected to be force push6376 when called mulitiple times6377 does not make make multiple calls to the force push check6378 #branch_added?6379 when old revision is defined6380 is expected not to be branch added6381 when old revision is not defined6382 is expected to be branch added6383 #branch_removed?6384 when new revision is defined6385 is expected not to be branch removed6386 when new revision is not defined6387 is expected to be branch removed6388 #modified_paths6389 when a push is a branch update6390 returns modified paths6391 when a push is not a branch update6392 raises an error6393 #oldrev6394 when a valid oldrev is provided6395 returns oldrev6396 when a nil valud is provided6397 returns blank SHA6398 #newrev6399 when valid newrev is provided6400 returns newrev6401 when a nil valud is provided6402 returns blank SHA6403Sidebars::UserProfile::Menus::GroupsMenu6404 # order random6405 behaves like User profile menu6406 does not contain any sub menu6407 renders the correct link6408 renders the correct title6409 defines correct active route6410 renders if user is logged in6411 when viewed user is blocked6412 when user is not logged in6413 is not allowed to view the menu item6414 when current user has permission6415 is allowed to view the menu item6416 when current user does not have permission6417 is not allowed to view the menu item6418 when viewed user is banned6419 when user is not logged in6420 is not allowed to view the menu item6421 when current user has permission6422 is allowed to view the menu item6423 when current user does not have permission6424 is not allowed to view the menu item6425Packages::CreateEventService6426 #execute6427 with a user6428 behaves like redis package unique event creation6429 tracks the event6430 behaves like redis package count event creation6431 tracks the event6432 with a deploy token6433 behaves like redis package unique event creation6434 tracks the event6435 behaves like redis package count event creation6436 tracks the event6437 with no user6438 behaves like redis package count event creation6439 tracks the event6440 with a package as scope6441 as guest6442 behaves like redis package count event creation6443 tracks the event6444 with user6445 behaves like redis package unique event creation6446 tracks the event6447 behaves like redis package count event creation6448 tracks the event6449BulkImports::UploadsExportService6450 #execute6451 exports project uploads and avatar6452 when export is batched6453 exports only specified uploads6454 when upload has underlying file missing6455 with an upload missing its file6456 does not cause errors6457 when upload is in object storage6458 when filename is too long6459 ignores problematic upload and logs exception6460 when network exception occurs6461 ignores problematic upload and logs exception6462 #exported_objects_count6463 return the number of exported uploads6464RuboCop::Cop::Gitlab::NamespacedClass6465 # order random6466 without top-level namespace6467 behaves like enforces namespaced classes6468 flags a class definition without additional namespace6469 flags a compact class definition without additional namespace6470 flags a class definition with inheritance without additional namespace6471 does not flag the class definition with namespace in separate lines6472 does not flag the class definition with nested namespace in separate lines6473 does not flag the class definition nested inside namespaced class6474 does not flag the class definition nested inside compact namespace6475 does not flag a compact namespaced class definition6476 does not flag a truly compact namespaced class definition6477 with ::Gitlab namespace6478 behaves like enforces namespaced classes6479 flags a class definition without additional namespace6480 flags a compact class definition without additional namespace6481 flags a class definition with inheritance without additional namespace6482 does not flag the class definition with namespace in separate lines6483 does not flag the class definition with nested namespace in separate lines6484 does not flag the class definition nested inside namespaced class6485 does not flag the class definition nested inside compact namespace6486 does not flag a compact namespaced class definition6487 does not flag a truly compact namespaced class definition6488 with Gitlab namespace6489 behaves like enforces namespaced classes6490 flags a class definition without additional namespace6491 flags a compact class definition without additional namespace6492 flags a class definition with inheritance without additional namespace6493 does not flag the class definition with namespace in separate lines6494 does not flag the class definition with nested namespace in separate lines6495 does not flag the class definition nested inside namespaced class6496 does not flag the class definition nested inside compact namespace6497 does not flag a compact namespaced class definition6498 does not flag a truly compact namespaced class definition6499Gitlab::Database::LooseForeignKeys6500 verify all definitions6501 all definitions have assigned a known gitlab_schema and on_delete6502 ensure keys are sorted6503 does not have any keys that are out of order6504 ensure no duplicates are found6505 does not have duplicate tables defined6506 does not have duplicate column definitions6507 ensuring database integrity6508 all `to_table` tables are present6509 all `from_table` tables are present6510 all tables have correct triggers installed6511 all YAML tables do have `track_record_deletions` installed6512 no extra tables have `track_record_deletions` installed6513 .build_definition6514 when child table schema is not defined6515 raises Gitlab::Database::GitlabSchema::UnknownSchemaError error6516Gitlab::Ci::Status::Bridge::Common6517 #details_path6518 when user has access to read downstream pipeline6519 is expected to have details6520 is expected to include "pipelines/186"6521 when user does not have access to read downstream pipeline6522 is expected not to have details6523 is expected to be nil6524 #label6525 returns description6526 when description is nil6527 returns core status label6528 when description is empty string6529 returns core status label6530Members::UnassignIssuablesService6531 #execute6532 when a user leaves a project6533 behaves like un-assigning issuables6534 removes issuable assignments6535 invalidates user cache6536 when a user leaves a group6537 behaves like un-assigning issuables6538 removes issuable assignments6539 invalidates user cache6540Ci::UnitTest6541 behaves like cleanup by a loose foreign key6542 cleans up (delete or nullify) the model (FAILED - 1)65441st Try error in ./spec/support/shared_examples/loose_foreign_keys/have_loose_foreign_key.rb:73:6545Could not find gitlab schema for table ci_unknown_table: Any new tables must be added to the database dictionary6547RSpec::Retry: 2nd try ./spec/support/shared_examples/loose_foreign_keys/have_loose_foreign_key.rb:736548 relationships6549 is expected to belong to project required: false6550 is expected to have many unit_test_failures6551 validations6552 is expected to validate that :project cannot be empty/falsy6553 is expected to validate that :key_hash cannot be empty/falsy6554 is expected to validate that :name cannot be empty/falsy6555 is expected to validate that :suite_name cannot be empty/falsy6556 .find_or_create_by_batch6557 finds or creates records for the given unit test keys6558 when a given name or suite_name exceeds the string size limit6559 truncates the values before storing the information6560Gitlab::Checks::PushFileCountCheck6561 #validate!6562 initial creation6563 allows creation6564 old: "single-file", new: "edit-file", valid: true, message: nil6565 verifies6566 old: "single-file", new: "multiple-files", valid: false, message: "The repository can contain at most 2 file(s)."6567 verifies6568 old: "single-file", new: "no-files", valid: false, message: "The repository must contain at least 1 file."6569 verifies6570 old: "edit-file", new: "rename-and-edit-file", valid: true, message: nil6571 verifies6572Projects::InactiveProjectsDeletionCronWorker6573 #perform6574 when delete inactive projects feature is disabled6575 does not invoke Projects::InactiveProjectsDeletionNotificationWorker6576 does not delete the inactive projects6577 when delete inactive projects feature is enabled6578 invokes Projects::InactiveProjectsDeletionNotificationWorker for inactive projects6579 does not invoke InactiveProjectsDeletionNotificationWorker for already notified inactive projects6580 invokes Projects::DestroyService for projects that are inactive even after being notified6581 behaves like worker is running for more than 4 minutes6582 stores the last processed inactive project_id in redis cache6583 behaves like worker finishes processing in less than 4 minutes6584 clears the last processed inactive project_id from redis cache6585 behaves like an idempotent worker6586 is labeled as idempotent6587 performs multiple times sequentially without raising an exception6588X509SerialNumberAttribute6589 #x509_serial_number_attribute6590 when in non-production6591 when the table exists6592 defines a x509 serial number attribute for a binary column6593 raises ArgumentError when the column type is not :binary6594 when the table does not exist6595 allows the attribute to be added and issues a warning6596 when the column does not exist6597 allows the attribute to be added and issues a warning6598 when other execeptions are raised6599 logs and re-rasises the error6600 when in production6601 defines a x509 serial number attribute6602Spammable6603 Associations6604 is expected to have one user_agent_detail dependent => destroy6605 ClassMethods6606 returns correct attr_spammable6607 InstanceMethods6608 is invalid if spam6609 #check_for_spam?6610 returns true for public project6611 returns false for other visibility levels6612 #invalidate_if_spam6613 when the model is spam6614 has an error related to spam on the model6615 when the model needs recaptcha6616 has an error related to spam on the model6617 if the model is spam and also needs recaptcha6618 has an error related to spam on the model6619 when the model is not spam nor needs recaptcha6620 returns no error6621 if recaptcha is not enabled and the model needs recaptcha6622 has no errors6623 spam flags6624 #spam!6625 adds only `spam` flag6626 #needs_recaptcha!6627 adds `needs_recaptcha` flag6628 #render_recaptcha?6629 when recaptcha is not enabled6630 returns false6631 when recaptcha is enabled6632 when there are two or more errors6633 returns false6634 when there are less than two errors6635 when spammable does not need recaptcha6636 returns false6637 when spammable needs recaptcha6638 returns false6639 #clear_spam_flags!6640 clears spam and recaptcha flags6641 #submittable_as_spam_by?6642 tests if the user can submit spam6643 #allow_possible_spam?6644 when the `allow_possible_spam` application setting is turned off6645 is expected to eq false6646 when the `allow_possible_spam` application setting is turned on6647 is expected to eq true6648Tooling::Danger::FeatureFlag6649 #feature_flag_files6650 retrieves added feature flag files6651 with added added feature flag files6652 returns an array of Found objects6653 without added added feature flag files6654 returns an array of Found objects6655 retrieves modified feature flag files6656 with modified modified feature flag files6657 returns an array of Found objects6658 without modified modified feature flag files6659 returns an array of Found objects6660 retrieves deleted feature flag files6661 with deleted deleted feature flag files6662 returns an array of Found objects6663 without deleted deleted feature flag files6664 returns an array of Found objects6665 #stage_label6666 when there is no stage label6667 returns nil6668 when there is a stage label6669 returns the stage label6670 Tooling::Danger::FeatureFlag::Found6671 #name6672 returns value from the YAML6673 #introduced_by_url6674 returns value from the YAML6675 #rollout_issue_url6676 returns value from the YAML6677 #milestone6678 returns value from the YAML6679 #type6680 returns value from the YAML6681 #group6682 returns value from the YAML6683 #default_enabled6684 returns value from the YAML6685 #raw6686 returns the raw YAML6687 #group_match_mr_label?6688 when group is nil6689 is true only if MR has no group label6690 when group is not nil6691 is true only if MR has the same group label6692KeysetHelper6693 with admin mode6694 when no users are present6695 does not render pagination links6696 when one user is present6697 does not render pagination links6698 when more users are present6699 when on the first page6700 renders the next and last links6701 when at the last page6702 renders the prev and first links6703 when at the second page6704 renders all links6705Gitlab::Ci::Config::External::Rules6706 #evaluate6707 when there is no rule6708 is expected to eq true6709 when there is a rule with if6710 when the rule matches6711 is expected to eq true6712 when the rule does not match6713 is expected to eq false6714 when there is a rule with exists6715 when the file does not exist6716 is expected to eq false6717 when the file exists6718 is expected to eq true6719 when there is a rule with if and when6720 raises an error6721 when there is a rule with changes6722 raises an error6723Gitlab::Metrics::Subscribers::RailsCache6724 #cache_read6725 increments the cache_read duration6726 with a transaction6727 with hit event6728 when super operation is fetch6729 does not increment cache read miss total6730 with miss event6731 increments the cache_read_miss total6732 when super operation is fetch6733 does not increment cache read miss total6734 #cache_read_multi6735 observes read_multi duration6736 with a transaction6737 observes multi-key count6738 with no transaction6739 does not observes multi-key count6740 #cache_write6741 observes write duration6742 #cache_delete6743 observes delete duration6744 #cache_exist?6745 observes the exists duration6746 #cache_fetch_hit6747 without a transaction6748 returns6749 with a transaction6750 increments the cache_read_hit count6751 #cache_generate6752 without a transaction6753 returns6754 with a transaction6755 increments the cache_fetch_miss count and cache_read_miss total6756 #observe6757 without a transaction6758 returns6759 with a transaction6760 observes cache metric6761 increments the operations total6762LegacyBulkInsert6763 #bulk_insert6764 does nothing with empty rows6765 uses the ordering from the first row6766 quotes column names6767 quotes values6768 does not quote values of a column in the disable_quote option6769 does not quote values of columns in the disable_quote option6770 handles non-UTF-8 data6771 when using PostgreSQL6772 allows the returning of the IDs of the inserted rows6773 allows setting the upsert to do nothing6774Types::BaseObject6775 scoping items6776 paginates arrays correctly6777 filters connections correctly6778 filters polymorphic connections6779 filters interface connections6780 redacts polymorphic objects6781 paginates before scoping6782 a lazy list6783 behaves like array member redaction6784 redacts the unauthorized array member6785 a list of lazy items6786 behaves like array member redaction6787 redacts the unauthorized array member6788 an array connection of items6789 behaves like array member redaction6790 redacts the unauthorized array member6791 an array connection of items, selecting edges6792 behaves like array member redaction6793 redacts the unauthorized array member6794 .authorize6795 keeps track of the specified value6796 can not redefine the authorize value6797ServiceDesk::CustomEmailVerification6798 # order random6799 .generate_token6800 matches expected output6801 encrypted #token6802 saves and retrieves the encrypted token and iv correctly6803 #accepted_until6804 when no custom email is set up6805 returns nil6806 when custom email is set up6807 is expected to be nil6808 when verification process started6809 is expected to eq 2023-04-26 11:15:03.449937837 +00006810 #in_timeframe?6811 when no custom email is set up6812 returns false6813 when custom email is set up6814 is expected not to be in timeframe6815 when verification process started6816 is expected to be in timeframe6817 and timeframe was missed6818 is expected not to be in timeframe6819 validations6820 is expected to validate that :project cannot be empty/falsy6821 is expected to validate that :state cannot be empty/falsy6822 associations6823 is expected to belong to project required: false6824 is expected to belong to triggerer required: false6825 can access service desk setting from project6826AuditEventSaveType6827 #should_save_database? and #should_save_stream?6828 query_method: :should_save_stream?, query_param: :stream, result: true6829 returns corresponding results according to the query_method and query_param6830 query_method: :should_save_stream?, query_param: :database_and_stream, result: true6831 returns corresponding results according to the query_method and query_param6832 query_method: :should_save_database?, query_param: :database, result: true6833 returns corresponding results according to the query_method and query_param6834 query_method: :should_save_database?, query_param: :database_and_stream, result: true6835 returns corresponding results according to the query_method and query_param6836 query_method: :should_save_stream?, query_param: :database, result: false6837 returns corresponding results according to the query_method and query_param6838 query_method: :should_save_stream?, query_param: nil, result: false6839 returns corresponding results according to the query_method and query_param6840 query_method: :should_save_database?, query_param: :stream, result: false6841 returns corresponding results according to the query_method and query_param6842 query_method: :should_save_database?, query_param: nil, result: false6843 returns corresponding results according to the query_method and query_param6844Banzai::Filter::InlineMetricsFilter6845 leaves links to other dashboards unchanged6846 with /-/environments/:environment_id/metrics URL6847 with no query params6848 behaves like a metrics embed filter6849 when the document has an external link6850 leaves regular non-metrics links unchanged6851 when the document contains an embeddable link6852 leaves the original link unchanged6853 appends a metrics charts placeholder6854 in a paragraph6855 appends a metrics charts placeholder after the enclosing paragraph6856 with query params6857 behaves like a metrics embed filter6858 when the document has an external link6859 leaves regular non-metrics links unchanged6860 when the document contains an embeddable link6861 leaves the original link unchanged6862 appends a metrics charts placeholder6863 in a paragraph6864 appends a metrics charts placeholder after the enclosing paragraph6865 with /-/metrics?environment=:environment_id URL6866 with query params6867 behaves like a metrics embed filter6868 when the document has an external link6869 leaves regular non-metrics links unchanged6870 when the document contains an embeddable link6871 leaves the original link unchanged6872 appends a metrics charts placeholder6873 in a paragraph6874 appends a metrics charts placeholder after the enclosing paragraph6875 with only environment in query params6876 behaves like a metrics embed filter6877 when the document has an external link6878 leaves regular non-metrics links unchanged6879 when the document contains an embeddable link6880 leaves the original link unchanged6881 appends a metrics charts placeholder6882 in a paragraph6883 appends a metrics charts placeholder after the enclosing paragraph6884 with no query params6885 ignores metrics URL without environment parameter6886IssueEmailParticipantPresenter6887 # order random6888 #email6889 when anonymous6890 is expected to eq "an*****@e*****.c**"6891 with signed in user6892 when user has no role in project6893 is expected to eq "an*****@e*****.c**"6894 when user has guest role in project6895 is expected to eq "an*****@e*****.c**"6896 when user has reporter role in project6897 is expected to eq "any@example.com"6898 when user has developer role in project6899 is expected to eq "any@example.com"6900Ml::ExperimentTracking::AssociateMlCandidateToPackageWorker6901 # order random6902 #handles_event?6903 package_name: "ml_experiment_1234", package_type: "generic", handles_event: true6904 is expected to eq true6905 package_name: "ml_experiment_1234", package_type: "maven", handles_event: false6906 is expected to eq false6907 package_name: "1234", package_type: "generic", handles_event: false6908 is expected to eq false6909 package_name: "ml_experiment_", package_type: "generic", handles_event: false6910 is expected to eq false6911 package_name: "blah", package_type: "generic", handles_event: false6912 is expected to eq false6913 .handle_event6914 behaves like subscribes to event6915 consumes the published event6916 behaves like an idempotent worker6917 is labeled as idempotent6918 performs multiple times sequentially without raising an exception6919 when package name matches ml_experiment_{id}6920 when candidate with iid exists6921 associates candidate to package6922 when no candidate with iid exists6923 does not associate candidate6924 when candidate with iid exists but in a different project6925 does not associate candidate6926 when package is deleted before event is called6927 does not associate candidate6928Pajamas::AlertComponent6929 slots6930 renders alert body6931 renders actions6932 with defaults6933 does not set a title6934 renders the default variant6935 renders a dismiss button6936 title6937 with non-empty string6938 sets the title6939 with nil, empty or blank string6940 title: nil6941 does not set a title6942 title: ""6943 does not set a title6944 title: " "6945 does not set a title6946 with custom options6947 with simple options6948 sets the alert_class6949 sets the alert_data6950 with dismissible disabled6951 has the "not dismissible" class6952 does not render the dismiss button6953 with the icon hidden6954 has the hidden icon class6955 does not render the icon6956 with dismissible content6957 does not have "not dismissible" class6958 renders a dismiss button and data6959 with setting variant type6960 variant: :warning6961 renders the variant6962 variant: "success"6963 renders the variant6964 variant: :danger6965 renders the variant6966 variant: "tip"6967 renders the variant6968 with unknown or nil variant6969 variant: :foo6970 adds the default variant class6971 variant: nil6972 adds the default variant class6973RuboCop::Cop::UsageData::DistinctCountByLargeForeignKey6974 # order random6975 when counting by disallowed key6976 registers an offense6977 does not register an offense when batch is false6978 registers an offense when batch is true6979 when calling by allowed key6980 does not register an offense with symbol6981 does not register an offense with string6982Gitlab::Ci::Config::Entry::Reports::CoverageReport6983 validations6984 when it is valid6985 is expected to be valid6986 is expected to eq {:coverage_format=>"cobertura", :path=>"cobertura-coverage.xml"}6987 when it is not a hash6988 config: "string"6989 is expected not to be valid6990 is expected to include /should be a hash/6991 config: true6992 is expected not to be valid6993 is expected to include /should be a hash/6994 config: []6995 is expected not to be valid6996 is expected to include /should be a hash/6997 with unsupported coverage format6998 is expected not to be valid6999 is expected to include /format must be one of supported formats/7000 without coverage format7001 is expected not to be valid7002 is expected to include /format can't be blank/7003 without path7004 is expected not to be valid7005 is expected to include /path can't be blank/7006 with invalid path7007 is expected not to be valid7008 is expected to include /path should be a string/7009 with unknown keys7010 is expected not to be valid7011 is expected to include /contains unknown keys/7012Gitlab::Ci::Build::Policy::Variables7013 #satisfied_by?7014 is satisfied by at least one matching statement7015 is satisfied by a matching pipeline variable7016 is not satisfied by an overridden empty variable7017 is satisfied by a truthy pipeline expression7018 is not satisfied by a falsy pipeline expression7019 is satisfied by a truthy expression using undefined variable7020 is not satisfied by a falsy expression using undefined variable7021 allows to evaluate regular CI variables7022 does not persist neither pipeline nor build7023 when a bridge job is used7024 is satisfied by a matching expression for a bridge job7025 when using project ci variables in environment scope7026 is satisfied by scoped variable match7027 is not satisfied when matching against overridden variable7028Preloaders::UsersMaxAccessLevelByProjectPreloader7029 # order random7030 #execute7031 avoids N+1 queries7032 preloads the max access level used by project policies7033JiraImport::CloudUsersMapperService7034 #execute7035 behaves like mapping jira users7036 jira_users is nil7037 returns an empty array7038 when jira_users is present7039 returns users mapped to Gitlab7040 runs only 4 queries7041Packages::Go::SyncPackagesService7042 #execute_async7043 schedules a package refresh7044 #initialize7045 without a project7046 raises an error7047 without a ref7048 raises an error7049 with an invalid ref7050 raises an error7051Guest7052 .can_pull?7053 when project is private7054 does not allow to pull the repo7055 when project is internal7056 does not allow to pull the repo7057 when project is public7058 when repository is disabled7059 does not allow to pull the repo7060 when repository is accessible only by team members7061 does not allow to pull the repo7062 when repository is enabled7063 allows to pull the repo7064MergeRequests::AddSpentTimeService7065 #execute7066 creates a new timelog with the specified duration and summary7067 creates a system note with the time added7068 saves usage data7069 is more efficient than using the full update-service7070 when duration is nil7071 does not create a timelog with the specified duration7072ImportHelper7073 #sanitize_project_name7074 removes leading tildes7075 removes whitespace7076 removes disallowed characters7077 #import_project_target7078 when current user can create namespaces7079 returns project namespace7080 when current user can not create namespaces7081 takes the current user's namespace7082 #provider_project_link_url7083 appends repo full path to provider host url7084 #import_configure_github_admin_message7085 returns note for admin7086 returns note for other user7087Sidebars::Projects::Menus::ScopeMenu7088 behaves like serializable as super_sidebar_menu_args7089 returns hash with provided attributes7090 returns hash with an item_id7091 #container_html_options7092 is expected to match #<RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher:0x00007f36627485c0 @expected={:class=>"shortcuts-project rspec-project-link"}>7093 #extra_nav_link_html_options7094 is expected to match #<RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher:0x00007f3662d64508 @expected={:class=>"context-header has-tooltip", :title=>"Project-1245 Name"}>7095Gitlab::GitalyClient::PraefectInfoService7096 #repository_replicas7097 sends an RPC request7098GenerateRspecPipeline7099 # order random7100 #generate!7101 when rspec_files and pipeline_template_path exists7102 generates the pipeline config with default parallelization7103 when parallelization > 07104 generates the pipeline config7105 when parallelization > MAX_NODES_COUNT7106 generates the pipeline config with max parallelization of 507107 when knapsack_report_path is given7108 generates the pipeline config with parallelization based on Knapsack7109 and Knapsack report does not contain valid JSON7110 generates the pipeline config with default parallelization7111 when test_suite_prefix is given7112 generates the pipeline config based on the test_suite_prefix7113 when generated_pipeline_path is given7114 writes the pipeline config in the given generated_pipeline_path7115 when rspec_files does not exist7116 generates the pipeline config using the no-op template7117 when pipeline_template_path does not exist7118 generates the pipeline config using the no-op template7119Ci::DeleteObjectsWorker7120 is expected to be truthy7121 is expected to respond to #max_running_jobs7122 is expected to respond to #remaining_work_count7123 is expected to respond to #perform_work7124 #perform7125 executes a service7126Import::Github::CancelProjectImportService7127 # order random7128 .execute7129 when user is an owner7130 when import is in progress7131 update import state to be canceled7132 tracks canceled imports7133 when import is finished7134 returns error7135 when user is not allowed to read project7136 returns 4047137 when user is not allowed to cancel project7138 returns 4037139Gitlab::Ci::Status::SuccessWarning7140 #test7141 is expected to eq "passed"7142 #label7143 is expected to eq "passed with warnings"7144 #icon7145 is expected to eq "status_warning"7146 #group7147 is expected to eq "success-with-warnings"7148 .matches?7149 when matchable subject is successful7150 when matchable subject has warnings7151 is a correct match7152 when matchable subject does not have warnings7153 does not match7154 when matchable subject is not successful7155 when matchable subject has warnings7156 does not match7157 when matchable subject does not have warnings7158 does not match7159Banzai::ReferenceParser::MentionedProjectParser7160 #gather_references7161 when the link has a data-project attribute7162 using an existing project ID where user does not have access7163 returns empty Array7164 using an existing project ID7165 returns an Array of referenced projects7166 using a non-existing project ID7167 returns an empty Array7168Integrations::Shimo7169 #fields7170 returns custom fields7171 #create7172 with valid params7173 creates the Shimo integration7174 with invalid params7175 cannot create the Shimo integration without external_wiki_url7176 cannot create the Shimo integration with invalid external_wiki_url7177 Caching has_shimo on project_settings7178 sets the property to true when integration is active7179 sets the property to false when integration is not active7180 creates a project_setting record if one was not already created7181Gitlab::WordDiff::Segments::Chunk7182 #removed?7183 is expected to be falsey7184 when line starts with "-"7185 is expected to be truthy7186 #added?7187 is expected to be falsey7188 when line starts with "+"7189 is expected to be truthy7190 #to_s7191 removes lead string modifier7192 when chunk is empty7193 is expected to eq ""7194 #length7195 is expected to eq 57196Releases::CreateEvidenceWorker7197 creates a new Evidence record7198 creates a new Evidence record with pipeline7199Gitlab::Analytics::CycleAnalytics::StageEvents::IssueFirstMentionedInCommit7200 behaves like value stream analytics event7201 is expected to be a kind of String7202 is expected to be a kind of Symbol7203 is expected to include ApplicationRecord(abstract)7204 is expected to respond to #timestamp_projection7205 is expected to respond to #html_description7206 is expected to be a kind of Array7207 #apply_query_customization7208 expects an ActiveRecord::Relation object as argument and returns a modified version of it7209 #hash_code7210 returns a hash that uniquely identifies an event7211 does not differ when the same object is built with the same params7212 behaves like LEFT JOIN-able value stream analytics event7213 can use the event as LEFT JOIN7214 when looking at the record with data7215 contains the timestamp expression7216 when looking at the record without data7217 returns nil for the timestamp expression7218Clusters::Cleanup::ServiceAccountWorker7219 #perform7220 when cluster.cleanup_status is cleanup_removing_service_account7221 calls Clusters::Cleanup::ServiceAccountService7222 when cluster.cleanup_status is not cleanup_removing_service_account7223 does not call Clusters::Cleanup::ServiceAccountService7224BulkImports::Projects::Graphql::GetSnippetRepositoryQuery7225 has a valid query7226 returns snippet httpUrlToRepo7227 returns snippet createdAt7228 returns snippet title7229 .variables7230 queries project based on source_full_path and pagination7231 .data_path7232 .data_path returns data path7233 .page_info_path7234 .page_info_path returns pagination information path7235Gitlab::Cleanup::OrphanJobArtifactFilesBatch7236 no dry run7237 deletes only orphan job artifacts from disk7238 does not mix up job ID and artifact ID7239 with dry run7240 does not remove files7241Sidebars::UserSettings::Menus::EmailsMenu7242 # order random7243 behaves like User settings menu7244 does not contain any sub menu7245 renders the correct link7246 renders the correct title7247 renders the correct icon7248 defines correct active route7249 behaves like User settings menu #render? method7250 #render?7251 when user is logged in7252 renders7253 when user is not logged in7254 does not render7255Packages::Rpm::ParsePackageService7256 # order random7257 #execute7258 when wrong format file received7259 raise error7260 when valid file uploaded7261 when .rpm file uploaded7262 behaves like valid package parsing7263 return hash7264 has all static attribute keys7265 includes epoch attribute7266 has all built attributes with array values7267 when .src.rpm file uploaded7268 behaves like valid package parsing7269 return hash7270 has all static attribute keys7271 includes epoch attribute7272 has all built attributes with array values7273 dynamic private methods7274 define dynamic build attribute method7275 define dynamic build attribute method7276 define dynamic build attribute method7277Gitlab::Search::Params7278 detect_abuse conditional7279 does not call AbuseDetection7280 uses AbuseDetection by default7281 #[]7282 feels like regular params7283 has indifferent access7284 also works on attr_reader attributes7285 #query_string7286 uses 'search' parameter7287 uses 'term' parameter7288 prioritizes 'search' over 'term'7289 strips surrounding whitespace from query string7290 #validate7291 validates AbuseDetector on validation7292 when detect_abuse is disabled7293 does NOT validate AbuseDetector7294 #valid?7295 validates AbuseDetector on validation7296 when detect_abuse is disabled7297 does NOT validate AbuseDetector7298 abuse detection7299 when there are abuse validation errors7300 is considered abusive7301 when there are NOT any abuse validation errors7302 and there are other validation errors7303 is NOT considered abusive7304 and there are NO other validation errors7305 is NOT considered abusive7306 #email_lookup?7307 is true if at least 1 word in search is an email7308Types::Users::EmailType7309 # order random7310 is expected to require graphql authorizations :read_user_email_address7311 has the correct fields7312event store matchers7313 # order random7314 not_publish_event7315 requires a block matcher7316 does not permit .with7317 validates the event type7318 publish_event7319 requires a block matcher7320 validates the event type7321 validates the event data7322Gitlab::Ci::Config::Entry::Coverage7323 validations7324 when entry config value doesn't have the surrounding '/'7325 #errors7326 is expected to include /coverage config must be a regular expression/7327 #valid?7328 is expected not to be valid7329 when entry config value has the surrounding '/'7330 #value7331 is expected to eq "Code coverage: \\d+\\.\\d+"7332 #errors7333 is expected to be empty7334 #valid?7335 is expected to be valid7336 when entry value is not valid7337 #errors7338 is expected to include /coverage config must be a regular expression/7339 #valid?7340 is expected not to be valid7341Types::AlertManagement::StatusEnum7342 is expected to eq "AlertManagementStatus"7343 statuses7344 status_name: "TRIGGERED", status_value: :triggered7345 exposes a status with the correct value7346 status_name: "ACKNOWLEDGED", status_value: :acknowledged7347 exposes a status with the correct value7348 status_name: "RESOLVED", status_value: :resolved7349 exposes a status with the correct value7350 status_name: "IGNORED", status_value: :ignored7351 exposes a status with the correct value7352JiraConnect::SyncFeatureFlagsWorker7353 behaves like worker with data consistency7354 .get_data_consistency_feature_flag_enabled?7355 returns true7356 .get_data_consistency7357 returns correct data consistency7358 #perform7359 when object exists7360 calls the Jira sync service7361 when object does not exist7362 does not call the sync service7363StageUpdateWorker7364 #perform7365 when stage exists7366 updates stage status7367 behaves like an idempotent worker7368 is labeled as idempotent7369 performs multiple times sequentially without raising an exception7370 results in the stage getting the skipped status7371 when stage does not exist7372 does not raise exception7373Code review events7374 the aggregated metrics contain all the code review metrics7375Gitlab::Pagination::OffsetHeaderBuilder7376 pagination7377 returns correct result for the first page7378 returns correct result for the second page7379 pagination heders7380 adds next page header7381 adds only the specified params to the lnk7382Gitlab::Kubernetes::Ingress7383 #canary?7384 with canary ingress parameters7385 is expected to be truthy7386 with stable ingress parameters7387 is expected to be falsey7388 #canary_weight7389 with canary ingress parameters7390 is expected to eq 507391 with stable ingress parameters7392 is expected to be nil7393 #name7394 is expected to eq "production-auto-deploy"7395Gitlab::Email::AttachmentUploader7396 #execute7397 uploads all attachments and returns their links7398 with a signed message7399 uploads all attachments except the signature7400 with a signed message with mixed protocol prefix7401 uploads all attachments except the signature7402 with a message with no content type7403 uploads all attachments except the signature7404Gitlab::Config::Entry::Validatable7405 .validator7406 returns validator7407 returns only one validator to mitigate leaks7408 when validating entry instance7409 when attribute is valid7410 instance of validator is valid7411 when attribute is not valid7412 instance of validator is invalid7413Gitlab::Bullet::Exclusions7414 #execute7415 with preferred method of path and method name7416 behaves like loads exclusion results7417 is expected to match [["_path_", "_method_"]]7418 with file pattern7419 behaves like loads exclusion results7420 is expected to match [["_file_pattern_"]]7421 with file name and line range7422 behaves like loads exclusion results7423 is expected to match [["file_name.rb", 5..10]]7424 without exclusions7425 behaves like loads exclusion results7426 is expected to match [[]]7427 without exclusions key in config7428 behaves like loads exclusion results7429 is expected to match []7430 when config file does not exist7431 provides an empty array for exclusions7432 with a Symbol7433 raises an exception7434 #validate_paths!7435 when validating scenarios7436 when using paths with method name7437 when source file for exclusion exists7438 is expected not to raise Exception7439 when source file for exclusion does not exist7440 is expected to raise RuntimeError7441 when using path only7442 when source file for exclusion exists7443 is expected not to raise Exception7444 when source file for exclusion does not exist7445 is expected to raise RuntimeError7446 when path_with_method is false for a file pattern7447 is expected not to raise Exception7448Gitlab::AlertManagement::Fingerprint7449 .generate7450 when data is an array7451 returns the hashed fingerprint7452 with a variety of data7453 data: 1117454 performs like a hashed fingerprint7455 data: "fingerprint"7456 performs like a hashed fingerprint7457 data: :fingerprint7458 performs like a hashed fingerprint7459 data: true7460 performs like a hashed fingerprint7461 when data is a hash7462 behaves like fingerprinted Hash7463 performs like a hashed fingerprint7464 hashes with different order7465 calculates the same result7466 hash is too large7467 raises an error7468RuboCop::Cop::ProjectPathHelper7469 # order random7470 when using namespace_project with the project's namespace7471 registers an offense and corrects7472 when using namespace_project with a different namespace7473 registers no offense7474ApproveBlockedPendingApprovalUsersWorker7475 #perform7476 calls ApproveService for users in blocked_pending_approval state7477 does not call ApproveService for active users7478Types::Achievements::UserAchievementType7479 # order random7480 is expected to eq "UserAchievement"7481 is expected to require graphql authorizations :read_user_achievement7482 is expected to have graphql fields "id", "achievement", "user", "awarded_by_user", "revoked_by_user", "created_at", "updated_at", and "revoked_at"7483Presentable7484 #present7485 returns a presenter7486 takes optional attributes7487Banzai::Filter::SuggestionFilter7488 includes `js-render-suggestion` class7489 includes no `js-render-suggestion` when filter is disabled7490 multi-line suggestions7491 element has correct data-lang-params7492InitializerConnections7493 .raise_if_new_database_connection7494 prevents any database connection within the block7495 prevents any database connection re-use within the block7496 does not prevent database connection if SKIP_RAISE_ON_INITIALIZE_CONNECTIONS is set7497 prevents any database connection if SKIP_RAISE_ON_INITIALIZE_CONNECTIONS is false7498 restores original connection handler7499 restores original connection handler even there is an error7500 does not raise if connection_pool is retrieved in the block7501Gitlab::Kubernetes::ClusterRoleBinding7502 #generate7503 builds a Kubeclient Resource7504Tooling::FindTests7505 # order random7506 #execute7507 does not modify the content of the input file7508 does not overwrite the output file7509 loads the tests.yml file with a pattern matching mapping7510 when the predictive_tests_pathname file does not exist7511 creates the file7512 when the predictive_tests_pathname file already exists7513 does not create an empty file7514 when RSPEC_TESTS_MAPPING_ENABLED env variable is set7515 loads the direct matching pattern file7516 when RSPEC_TESTS_MAPPING_ENABLED env variable is not set7517 when RSPEC_TESTS_MAPPING_PATH is set7518 does not load the direct matching pattern file7519 when RSPEC_TESTS_MAPPING_PATH is not set7520 does not load the direct matching pattern file7521 when the same spec is matching multiple times7522 writes uniquely matching specs to the output7523BulkImports::Groups::Pipelines::GroupPipeline7524 #run7525 imports new group into destination group7526 pipeline parts7527 is expected to includes the BulkImports::Pipeline module7528 is expected to includes the BulkImports::Pipeline::Runner module7529 has extractors7530 has transformers7531 has loaders7532Ci::ScheduleDeleteObjectsCronWorker7533 #perform7534 enqueues DeleteObjectsWorker jobs7535Gitlab::Kubernetes::PodCmd7536 .retry_command7537 constructs string properly7538Packages::CreateTemporaryPackageService7539 #execute7540 creates the package7541 can create two packages in a row7542 behaves like assigns the package creator7543 assigns the package creator7544 behaves like assigns build to package7545 with build info7546 assigns the pipeline to the package7547BaseCountService7548 #relation_for_count7549 raises NotImplementedError7550 #count7551 returns the number of values7552 #uncached_count7553 returns the uncached number of values7554 #refresh_cache7555 refreshes the cache7556 #delete_cache7557 deletes the cache7558 #raw?7559 returns false7560 #cache_key7561 raises NotImplementedError7562 #cache_options7563 returns the default in options7564DesignManagement::CopyDesignCollectionWorker7565 #perform7566 calls DesignManagement::CopyDesignCollection::CopyService7567 logs if there was an error calling the service7568 behaves like an idempotent worker7569 is labeled as idempotent7570 performs multiple times sequentially without raising an exception7571 is expected to receive perform(*(any args)) 2 times7572Gitlab::Seeders::Ci::DailyBuildGroupReportResult7573 #seed7574 creates daily build results for the project7575 matches project data with last report7576 does not raise error on RecordNotUnique7577Banzai::Filter::ImageLazyLoadFilter7578 adds a class attribute7579 appends to the current class attribute7580 adds a async decoding attribute7581 transforms the image src to a data-src7582 works with external images7583Gitlab::Config::Entry::Factory7584 #create!7585 when setting a concrete value7586 creates entry with valid value7587 when setting description7588 configures description7589 creates entry with description7590 when setting inherit7591 makes object inheritable7592 when setting key7593 creates entry with custom key7594 when setting a parent7595 creates entry with valid parent7596 when not setting a value7597 raises error7598 when creating entry with nil value7599 creates an unspecified entry7600 when passing metadata7601 passes metadata as a parameter7602 when setting deprecation information7603 passes deprecation as a parameter7604Gitlab::BackgroundMigration7605 .queue7606 returns background migration worker queue7607 .steal7608 when the queue contains unprocessed jobs7609 uses the coordinator to steal jobs7610 when a custom predicate is given7611 steals jobs that match the predicate7612 does not steal jobs that do not match the predicate7613 when retry_dead_jobs is true7614 steals from the dead and retry queue7615 .perform7616 uses the coordinator to perform a background migration7617 .exists?7618 uses the coordinator to find if a job exists7619 uses the coordinator to find a job does not exist7620 .remaining7621 uses the coordinator to find the number of remaining jobs7622Resolvers::Achievements::AchievementsResolver7623 # order random7624 is expected to have nullable GraphQL type AchievementConnection7625 #resolve7626 returns all achievements7627 with ids argument7628 returns the specified achievement7629 when `achievements` feature flag is diabled7630 is empty7631CustomerRelations::Contacts::CreateService7632 #execute7633 when user does not have permission7634 returns an error7635 when user has permission7636 creates a contact7637 returns an error when the contact is not persisted7638 returns an error when the organization_id is invalid7639 returns an error when the organization belongs to a different group7640StorageHelper7641 #storage_counter7642 formats bytes to one decimal place7643 does not add decimals for sizes < 1 MB7644 does not add decimals for zeroes7645 uses commas as thousands separator7646 #storage_counters_details7647 works on ProjectStatistics7648 works on Namespace.with_statistics7649GitlabShellWorker7650 #perform7651 with the mv_repository action7652 forwards the message to Gitlab::Shell7653 with the remove_repository action7654 forwards the message to Gitlab::Shell7655 with the add_namespace action7656 forwards the message to Gitlab::Shell7657 with the rm_namespace action7658 forwards the message to Gitlab::Shell7659 with the mv_namespace action7660 forwards the message to Gitlab::Shell7661 with the repository_exists? action7662 forwards the message to Gitlab::Shell7663 all other commands7664 raises ArgumentError7665IssueTypeHelper7666 # order random7667 .issue_type_for7668 when issue is nil7669 is expected to be nil7670 when issue_type_uses_work_item_types_table feature flag is enabled7671 gets type from the work_item_types table7672 when issue_type_uses_work_item_types_table feature flag is disabled7673 gets type from the issue_type column7674Ml::CandidatesCsvPresenter7675 # order random7676 .present7677 generates header row correctly7678 generates the first row correctly7679 generates the second row correctly7680Users::ValidateManualOtpService7681 Devise7682 calls Devise strategy7683 FortiAuthenticator7684 calls ManualOtp strategy7685 handles unexpected error7686 FortiTokenCloud7687 calls FortiTokenCloud strategy7688 DuoAuth7689 calls DuoAuth strategy7690 handles unexpected error7691Sidebars::Admin::Menus::ApplicationsMenu7692 # order random7693 behaves like Admin menu7694 renders the correct link7695 renders the correct title7696 renders the correct icon7697 #render?7698 when user is admin7699 renders7700 when user is not admin7701 does not render7702 when user is not logged in7703 does not render7704 behaves like Admin menu without sub menus7705 does not contain any sub menu(s)7706 defines correct active route7707RuboCop::Cop::Scalability::BulkPerformWithContext7708 # order random7709 does not add an offense for scheduling on the BackgroundMigrationWorker7710 does not add an offense for migrations7711 does not add an offence for specs7712 adds an offense when calling bulk_perform_async7713 does not add an offense for scheduling on the CiDatabaseWorker7714 adds an offense when calling bulk_perform_in7715BulkImports::Common::Rest::GetBadgesQuery7716 .to_h7717 when entity is group7718 when source id is present7719 returns correct query using source id and page info7720 when source id is missing7721 returns correct query using source full path7722 when entity is project7723 when source id is present7724 returns correct query using source id and page info7725 when source id is missing7726 returns correct query using source full path7727Gitlab::ColorSchemes7728 .body_classes7729 returns a space-separated list of class names7730 .by_id7731 returns a scheme by its ID7732 .default7733 use config default7734 .each7735 passes the block to the SCHEMES Array7736 .for_user7737 returns default when user is nil7738 returns user's preferred color scheme7739Gitlab::Ci::Reports::CoverageReport7740 is expected to eq {}7741 #empty?7742 when no file has been added7743 is expected to equal true7744 when file has been added7745 is expected to equal false7746 #pick7747 returns only picked files while ignoring nonexistent ones7748 #add_file7749 when providing two individual files7750 initializes a new test suite and returns it7751 when providing the same files twice7752 with different line coverage7753 initializes a new test suite and returns it7754 with identical line coverage7755 initializes a new test suite and returns it7756Mutations::Achievements::Award7757 # order random7758 is expected to require graphql authorizations :award_achievement7759 #resolve7760 when the user does not have permission7761 raises an error7762 when the user has permission7763 creates user_achievement with correct values7764 when the params are invalid7765 returns the validation error7766IssuableSeverity7767 associations7768 is expected to belong to issue required: false7769 validations7770 is expected to validate that :severity cannot be empty/falsy7771 is expected to validate that :issue cannot be empty/falsy7772 is expected to validate that :issue is case-sensitively unique7773 enums7774 is expected to define :severity as an enum backed by an integer with values ‹{unknown: 0, low: 1, medium: 2, high: 3, critical: 4}›7775Mutations::WorkItems::UpdateTask7776 #resolve7777 when user has sufficient permissions7778 expires etag cache for parent work item7779Gitlab::Database::SchemaValidation::SchemaObjects::Table7780 # order random7781 #fetch_column_by_name7782 is expected not to be nil7783 is expected to be nil7784 #name7785 is expected to eq "my_table"7786 #table_name7787 is expected to eq "my_table"7788 #statement7789 is expected to eq "CREATE TABLE my_table (id bigint NOT NULL, col text)"7790 #column_exists?7791 is expected to eq true7792 is expected to eq false7793Gitlab::Kubernetes::ServiceAccountToken7794 is expected to eq "token-name"7795 is expected to eq "a_service_account"7796 is expected to eq "a_namespace"7797 #generate7798 builds a Kubeclient Resource7799ResourceEvents::IssueAssignmentEvent7800 # order random7801 associations7802 is expected to belong to user required: false7803 is expected to belong to issue required: false7804 validations7805 is expected to be valid7806 is expected to validate that :issue cannot be empty/falsy7807UrlHelper7808 # order random7809 #escaped_url7810 escapes url7811 escapes XSS injection7812 returns nil if url is nil7813 returns nil when url is invalid7814Groups::DeployTokens::DestroyService7815 behaves like a deploy token deletion service7816 #execute7817 destroys a token record and it's associated DeployToken7818 with invalid token id7819 raises an error7820Tooling::Crystalball::CoverageLinesExecutionDetector7821 #detect7822 is expected to eq ["file.rb"]7823 with no changes7824 is expected to eq []7825 with previously uncovered file7826 is expected to eq ["file.rb"]7827 with path outside of root7828 is expected to eq []7829 with path in excluded prefix7830 is expected to eq []7831DesignUserMention7832 associations7833 is expected to belong to design required: false7834 is expected to belong to note required: false7835 behaves like has user mentions7836 #has_mentions?7837 when no mentions7838 returns false7839 when mentioned_users_ids not null7840 returns true7841 when mentioned projects7842 returns true7843 when mentioned groups7844 returns true7845ResolvesIds7846 with a single project7847 returns the correct array7848 with a single issue7849 returns the correct array7850 with multiple users7851 returns the correct array7852ResourceEvents::MergeRequestAssignmentEvent7853 # order random7854 validations7855 is expected to be valid7856 is expected to validate that :merge_request cannot be empty/falsy7857 associations7858 is expected to belong to user required: false7859 is expected to belong to merge_request required: false7860Gitlab::GrapeLogging::Loggers::UrgencyLogger7861 .parameters7862 request_env: {}, expected_parameters: {}7863 is expected to eq {}7864 request_env: {"api.endpoint"=>#<struct options={}, namespace="">}, expected_parameters: {}7865 is expected to eq {}7866 request_env: {"api.endpoint"=>#<struct options={:for=>"something weird"}, namespace="">}, expected_parameters: {}7867 is expected to eq {}7868 request_env: {"api.endpoint"=>#<struct options={:for=>#<Class:0x00007f3674a29d18>, :path=>[]}, namespace="">}, expected_parameters: {:request_urgency=>:default, :target_duration_s=>1}7869 is expected to eq {:request_urgency=>:default, :target_duration_s=>1}7870 request_env: {"api.endpoint"=>#<struct options={:for=>#<Class:0x00007f3674a03028>, :path=>["test"]}, namespace="/testing">}, expected_parameters: {:request_urgency=>:high, :target_duration_s=>0.25}7871 is expected to eq {:request_urgency=>:high, :target_duration_s=>0.25}7872Gitlab::StringRangeMarker7873 #mark7874 when the rich text is html safe7875 marks the inline diffs7876 when the rich text is not html safe7877 when rich text equals raw text7878 marks the inline diffs7879 when rich text doeas not equal raw text7880 marks the inline diffs7881RuboCop::Cop::Migration::BackgroundMigrations7882 # order random7883 when requeue_background_migration_jobs_by_range_at_intervals is used7884 registers an offense7885 when migrate_in is used7886 registers an offense7887 when queue_background_migration_jobs_by_range_at_intervals is used7888 registers an offense7889Analytics::CycleAnalytics::Stages::ListService7890 returns only the default stages7891 provides the default stages as non-persisted objects7892MemberInvitationReminderEmailsWorker7893 #perform7894 executes the invitation reminder email service7895BulkImports::Groups::Graphql::GetProjectsQuery7896 has a valid query7897 with invalid variables7898 raises an error7899 #data_path7900 returns data path7901 #page_info_path7902 returns pagination information path7903Gitlab::Email::Message::InProductMarketing::Create7904 public methods7905 series: 07906 returns value for series7907 series: 17908 returns value for series7909 series: 27910 returns value for series7911Gitlab::Usage::Metrics::Instrumentations::CountBoardsMetric7912 behaves like a correct instrumented metric value and query7913 behaves like a correct instrumented metric value7914 has correct value7915 behaves like a correct instrumented metric query7916 has correct generate query7917RuboCop::Cop::Gitlab::RSpec::AvoidSetup7918 # order random7919 when calling let_it_be7920 registers an offense7921 without readability issues7922 does not register an offense7923Gitlab::DataBuilder::ArchiveTrace7924 .build7925 has correct attributes7926Users::CreateStatisticsWorker7927 #perform7928 when successful7929 create an users statistics entry7930 when unsuccessful7931 logs an error7932Gitlab::Diff::SuggestionDiff7933 #diff_lines7934 returns diff lines with correct line numbers7935 when the suggestion is for the last line of a file7936 returns a correct value if there is no newline at the end of the file7937Gitlab::UsageDataCounters::RedisCounter7938 .increment7939 when usage_ping is disabled7940 counter is not increased7941 when usage_ping is enabled7942 counter is increased7943 .increment_by7944 when usage_ping is disabled7945 counter is not increased7946 when usage_ping is enabled7947 counter is increased7948Ci::ProcessPipelineService7949 processing events counter7950 increments processing events counter7951Gitlab::ProcessMemoryCache::Helper7952 .fetch_memory_cache7953 memoizes the result7954 resets the cache when the shared key is missing7955 does not set the shared timestamp if it is already present7956 .invalidate_memory_cache7957 invalidates the cache7958RuboCop::Cop::Gemspec::AvoidExecutingGit7959 # order random7960 does not flag violation for using a glob7961 flags violation for executing git7962Gitlab::Ci::Build::Hook7963 # order random7964 .from_hooks7965 initializes and returns hooks7966Types::CommitSignatures::GpgSignatureType7967 # order random7968 is expected to include Types::CommitSignatureInterface7969 is expected to eq "GpgSignature"7970 contains attributes related to GPG signatures7971 is expected to require graphql authorizations :download_code7972Gitlab::Graphql::Tracers::MetricsTracer7973 when used as tracer and query is executed7974 does not record apdex for failing queries7975 duration: 0.1, expected_success: true7976 increments apdex sli7977 duration: 1.1, expected_success: false7978 increments apdex sli7979Gitlab::Memory::Watchdog::Monitor::UniqueMemoryGrowth7980 # order random7981 #call7982 gets memory_usage_uss_pss7983 when monitor is called twice7984 reference memory is calculated only once7985 when process exceeds threshold7986 returns if threshold is violated and payload7987 when process does not exceed threshold7988 returns if threshold is violated and payload7989Gitlab::Email::Hook::DisableEmailInterceptor7990 does not send emails7991MoveToProjectEntity7992 #as_json7993 includes the project ID7994 includes the human-readable full path7995 includes the full path7996microsoft_graph_mailer initializer for GitLab7997 # order random7998 when microsoft_graph_mailer is disabled7999 does not configure ActionMailer8000 when microsoft_graph_mailer is enabled8001 configures ActionMailer8002Types::EvidenceType8003 is expected to require graphql authorizations :read_release_evidence8004 has the expected fields8005Types::Snippets::BlobActionInputType8006 is expected to eq "SnippetBlobActionInputType"8007 has the correct arguments8008 sets the type of action argument to BlobActionEnum8009Types::TimeTracking::TimelogSortEnum8010 # order random8011 is expected to eq "TimelogSort"8012 exposes all the contact sort values8013 behaves like common sort values8014 exposes all the existing common sort values8015Groups::FeatureSetting8016 associations8017 is expected to belong to group required: false8018 validations8019 is expected to validate that :group cannot be empty/falsy8020Gitlab::Graphql::Loaders::BatchRootStorageStatisticsLoader8021 #find8022 only queries once for project statistics8023Packages::Rpm::RepositoryMetadata::BuildFilelistXmlService8024 # order random8025 #execute8026 adds all file nodes8027 setting type attribute8028 when all files are directories8029 set dir type attribute for directories only8030Banzai::Filter::MarkdownEngines::Base8031 # order random8032 raise error if render not implemented8033 turns off sourcepos8034Types::Projects::ForkDetailsType8035 # order random8036 is expected to eq "ForkDetails"8037 has specific fields8038Types::PermissionTypes::Environment8039 # order random8040 is expected to have graphql field :stop_environment8041RuboCop::Cop::Gitlab::ChangeTimezone8042 # order random8043 Time.zone=8044 registers an offense with no 2nd argument8045Gitlab::Diff::FileCollectionSorter8046 #sort8047 returns list sorted directory first8048Gitlab::Utils::MergeHash8049 # order random8050 .crush8051 can flatten a hash to each element8052 .elements8053 deep merges an array of elements8054Gitlab::SidekiqMiddleware::DuplicateJobs::Strategies::None8055 #schedule8056 yields without checking for duplicates8057 #perform8058 does not delete any locks before executing8059Projects::Settings::BranchRulesHelper8060 # order random8061 #branch_rules_data8062 returns branch rules data8063#<Class:0x00007f3683807df0>8064 has the expected fields8065Resolvers::MetadataResolver8066 #resolve8067 returns version and revision8068Gitlab::Database::ObsoleteIgnoredColumns8069 #execute8070 returns a list of class names and columns pairs8071Types::ResolvableInterface8072 exposes the expected fields8073Import/Export model configuration8074 has no new models8075Gitlab::Middleware::ReleaseEnv8076 #call8077 calls the app and clears the env8078MicrosoftTeams::Activity8079 #prepare8080 returns the correct JSON object8081Knapsack report was generated. Preview:8082{8083 "spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb": 314.92264879100003,8084 "spec/models/packages/package_spec.rb": 134.30473544999995,8085 "spec/tasks/gitlab/storage_rake_spec.rb": 98.62381544999971,8086 "spec/lib/gitlab/database/load_balancing_spec.rb": 83.6096206709999,8087 "spec/models/namespace/package_setting_spec.rb": 18.283267662999606,8088 "spec/policies/wiki_page_policy_spec.rb": 45.75670193099995,8089 "spec/lib/gitlab/ci/templates/Jobs/deploy_gitlab_ci_yaml_spec.rb": 47.46043769500011,8090 "spec/models/broadcast_message_spec.rb": 11.648011758999928,8091 "spec/lib/gitlab/ci/config/entry/job_spec.rb": 7.545552100999885,8092 "spec/tasks/gitlab/db_rake_spec.rb": 14.611289772999953,8093 "spec/lib/container_registry/gitlab_api_client_spec.rb": 4.945384485999966,8094 "spec/lib/banzai/filter/references/user_reference_filter_spec.rb": 20.998130751000645,8095 "spec/lib/gitlab/closing_issue_extractor_spec.rb": 14.132171397000093,8096 "spec/lib/gitlab/database/batch_count_spec.rb": 10.96620358400014,8097 "spec/graphql/resolvers/namespace_projects_resolver_spec.rb": 23.595840066000164,8098 "spec/models/packages/debian/file_metadatum_spec.rb": 7.546227290000388,8099 "spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb": 18.9451124469997,8100 "spec/helpers/avatars_helper_spec.rb": 12.256678351999653,8101 "spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_spec.rb": 11.797437852999792,8102 "spec/lib/gitlab/redis/repository_cache_spec.rb": 2.806640330999471,8103 "spec/lib/api/entities/snippet_spec.rb": 5.593505355000161,8104 "spec/lib/gitlab/process_supervisor_spec.rb": 9.698560573000577,8105 "spec/services/clusters/update_service_spec.rb": 18.793342623999706,8106 "spec/lib/gitlab/ci/status/factory_spec.rb": 8.007829259999198,8107 "spec/services/issues/set_crm_contacts_service_spec.rb": 10.382650737999938,8108 "spec/workers/issues/placement_worker_spec.rb": 14.25034552299985,8109 "spec/presenters/release_presenter_spec.rb": 11.526346223000473,8110 "spec/services/issuable/destroy_service_spec.rb": 13.286239082000066,8111 "spec/services/ci/delete_unit_tests_service_spec.rb": 12.203965661999973,8112 "spec/services/releases/update_service_spec.rb": 14.318223151999518,8113 "spec/lib/gitlab/changelog/config_spec.rb": 8.491591548000542,8114 "spec/serializers/commit_entity_spec.rb": 11.32309732900012,8115 "spec/services/projects/protect_default_branch_service_spec.rb": 9.265523562999988,8116 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb": 2.296214707999752,8117 "spec/lib/gitlab/checks/tag_check_spec.rb": 9.71898010699988,8118 "spec/lib/gitlab/ci/build/auto_retry_spec.rb": 5.44945313000062,8119 "spec/models/container_expiration_policy_spec.rb": 4.920710544999565,8120 "spec/services/projects/participants_service_spec.rb": 8.1813645860002,8121 "spec/lib/gitlab/ci/config/entry/default_spec.rb": 1.8951668869995046,8122 "spec/workers/tasks_to_be_done/create_worker_spec.rb": 7.936741426000481,8123 "spec/views/groups/edit.html.haml_spec.rb": 6.85942268800045,8124 "spec/services/todos/destroy/unauthorized_features_service_spec.rb": 9.771152260000235,8125 "spec/lib/gitlab/middleware/read_only_spec.rb": 2.429418661999989,8126 "spec/lib/gitlab/import_export/group/relation_factory_spec.rb": 5.7311176070006695,8127 "spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb": 1.463173168999674,8128 "spec/services/packages/update_package_file_service_spec.rb": 4.1929766869998275,8129 "spec/lib/gitlab/metrics/dashboard/processor_spec.rb": 5.229156539000542,8130 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_last_build_finished_spec.rb": 2.8993271709996407,8131 "spec/models/error_tracking/error_spec.rb": 4.313655031000053,8132 "spec/lib/gitlab/graphql/pagination/active_record_array_connection_spec.rb": 2.7883154879991707,8133 "spec/lib/gitlab/metrics/methods_spec.rb": 1.6289294700000028,8134 "spec/tasks/gitlab/service_desk_email_rake_spec.rb": 3.832490009999674,8135 "spec/lib/gitlab/ci/build/artifacts/metadata/entry_spec.rb": 1.7282919369999945,8136 "spec/lib/gitlab/logger_spec.rb": 1.553717099000096,8137 "spec/models/integrations/emails_on_push_spec.rb": 2.643399886000225,8138 "spec/lib/gitlab/auth/ldap/config_spec.rb": 2.1645792340004846,8139 "spec/lib/gitlab/data_builder/deployment_spec.rb": 7.637318832999881,8140 "spec/workers/merge_requests/update_head_pipeline_worker_spec.rb": 6.300311836999754,8141 "spec/models/wiki_page/slug_spec.rb": 1.9448126609995597,8142 "spec/graphql/mutations/timelogs/delete_spec.rb": 2.4387993709997318,8143 "spec/tasks/gitlab/external_diffs_rake_spec.rb": 7.349358818000837,8144 "spec/helpers/releases_helper_spec.rb": 4.890432270000019,8145 "spec/lib/banzai/pipeline/plain_markdown_pipeline_spec.rb": 1.985572546000185,8146 "spec/finders/feature_flags_finder_spec.rb": 5.416246265000154,8147 "spec/models/packages/cleanup/policy_spec.rb": 2.903260243000659,8148 "spec/lib/api/support/git_access_actor_spec.rb": 2.7382115339996744,8149 "spec/models/concerns/ci/has_ref_spec.rb": 5.083798216000105,8150 "spec/workers/deployments/hooks_worker_spec.rb": 4.761094254999989,8151 "spec/lib/gitlab/database/load_balancing/rack_middleware_spec.rb": 0.9390951750001477,8152 "spec/lib/gitlab/import_export/remote_stream_upload_spec.rb": 2.025567431000127,8153 "spec/models/concerns/access_requestable_spec.rb": 2.71344108699941,8154 "spec/policies/clusters/instance_policy_spec.rb": 2.5125122620002003,8155 "spec/lib/banzai/filter/task_list_filter_spec.rb": 0.6115302940006586,8156 "spec/finders/keys_finder_spec.rb": 1.8535383429998546,8157 "spec/services/ci/test_failure_history_service_spec.rb": 2.5005764340003225,8158 "spec/models/user_interacted_project_spec.rb": 1.5095831049993649,8159 "spec/lib/gitlab/usage_data_counters/work_item_activity_unique_counter_spec.rb": 1.2207636200000707,8160 "spec/lib/gitlab/git/push_spec.rb": 1.9318801330000497,8161 "spec/lib/sidebars/user_profile/menus/groups_menu_spec.rb": 1.0855790469995554,8162 "spec/services/packages/create_event_service_spec.rb": 2.414493673999459,8163 "spec/services/bulk_imports/uploads_export_service_spec.rb": 2.8649261480004498,8164 "spec/rubocop/cop/gitlab/namespaced_class_spec.rb": 1.7873163800004477,8165 "spec/lib/gitlab/database/loose_foreign_keys_spec.rb": 2.5979480209998655,8166 "spec/lib/gitlab/ci/status/bridge/common_spec.rb": 3.00220070100022,8167 "spec/services/members/unassign_issuables_service_spec.rb": 3.8870172529996125,8168 "spec/models/ci/unit_test_spec.rb": 2.4177188730000125,8169 "spec/lib/gitlab/checks/push_file_count_check_spec.rb": 3.393728959999862,8170 "spec/workers/projects/inactive_projects_deletion_cron_worker_spec.rb": 2.3433562000000165,8171 "spec/models/concerns/x509_serial_number_attribute_spec.rb": 0.6350797159993817,8172 "spec/models/concerns/spammable_spec.rb": 2.069380583000566,8173 "spec/tooling/danger/feature_flag_spec.rb": 0.8814709889993537,8174 "spec/helpers/keyset_helper_spec.rb": 1.9731993529994725,8175 "spec/lib/gitlab/ci/config/external/rules_spec.rb": 2.083817280999938,8176 "spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb": 0.9757263270003023,8177 "spec/models/concerns/legacy_bulk_insert_spec.rb": 0.7033046389997253,8178 "spec/graphql/types/base_object_spec.rb": 1.6084677649996593,8179 "spec/models/service_desk/custom_email_verification_spec.rb": 0.8798856189996513,8180 "spec/services/concerns/audit_event_save_type_spec.rb": 0.7919272089993683,8181 "spec/lib/banzai/filter/inline_metrics_filter_spec.rb": 0.8949533670001983,8182 "spec/presenters/issue_email_participant_presenter_spec.rb": 0.7186588170006871,8183 "spec/workers/ml/experiment_tracking/associate_ml_candidate_to_package_worker_spec.rb": 1.457631002999733,8184 "spec/components/pajamas/alert_component_spec.rb": 1.203473801000655,8185 "spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb": 0.6376583569999639,8186 "spec/lib/gitlab/ci/config/entry/reports/coverage_report_spec.rb": 1.030440321000242,8187 "spec/lib/gitlab/ci/build/policy/variables_spec.rb": 2.1927154180002617,8188 "spec/models/preloaders/users_max_access_level_by_project_preloader_spec.rb": 2.423998281000422,8189 "spec/services/jira_import/cloud_users_mapper_service_spec.rb": 3.2461243560001094,8190 "spec/services/packages/go/sync_packages_service_spec.rb": 1.4978879979998965,8191 "spec/models/guest_spec.rb": 1.3039183099999718,8192 "spec/services/merge_requests/add_spent_time_service_spec.rb": 3.0751774659993316,8193 "spec/helpers/import_helper_spec.rb": 0.9141594949996943,8194 "spec/lib/sidebars/projects/menus/scope_menu_spec.rb": 0.7153866079997897,8195 "spec/lib/gitlab/gitaly_client/praefect_info_service_spec.rb": 1.2063071010006752,8196 "spec/scripts/generate_rspec_pipeline_spec.rb": 0.5932549219996872,8197 "spec/workers/ci/delete_objects_worker_spec.rb": 0.4589830269997037,8198 "spec/services/import/github/cancel_project_import_service_spec.rb": 1.250184165999599,8199 "spec/lib/gitlab/ci/status/success_warning_spec.rb": 0.792225690000123,8200 "spec/lib/banzai/reference_parser/mentioned_project_parser_spec.rb": 2.4209200919995055,8201 "spec/models/integrations/shimo_spec.rb": 2.1480405330003123,8202 "spec/lib/gitlab/word_diff/segments/chunk_spec.rb": 0.5713914339994517,8203 "spec/workers/releases/create_evidence_worker_spec.rb": 2.396700575000068,8204 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_first_mentioned_in_commit_spec.rb": 1.6111566549998315,8205 "spec/workers/clusters/cleanup/service_account_worker_spec.rb": 1.1610450769994713,8206 "spec/lib/bulk_imports/projects/graphql/get_snippet_repository_query_spec.rb": 0.8121310160004214,8207 "spec/lib/gitlab/cleanup/orphan_job_artifact_files_batch_spec.rb": 2.9127622149999297,8208 "spec/lib/sidebars/user_settings/menus/emails_menu_spec.rb": 0.640968996999618,8209 "spec/services/packages/rpm/parse_package_service_spec.rb": 0.8797685690005892,8210 "spec/lib/gitlab/search/params_spec.rb": 0.9790926280002168,8211 "spec/graphql/types/users/email_type_spec.rb": 0.47005007499956264,8212 "spec/support_specs/matchers/event_store_spec.rb": 0.5250220500001888,8213 "spec/lib/gitlab/ci/config/entry/coverage_spec.rb": 0.604908890999468,8214 "spec/graphql/types/alert_management/status_enum_spec.rb": 0.562689104999663,8215 "spec/workers/jira_connect/sync_feature_flags_worker_spec.rb": 0.6788865720000103,8216 "spec/workers/stage_update_worker_spec.rb": 1.7680330260000119,8217 "spec/lib/gitlab/usage_data_counters/code_review_events_spec.rb": 1.8455360779998955,8218 "spec/lib/gitlab/pagination/offset_header_builder_with_controller_spec.rb": 1.8281321699996624,8219 "spec/lib/gitlab/kubernetes/ingress_spec.rb": 0.6236817479993988,8220 "spec/lib/gitlab/email/attachment_uploader_spec.rb": 2.123197216000335,8221 "spec/lib/gitlab/config/entry/validatable_spec.rb": 0.5073007520004467,8222 "spec/lib/gitlab/bullet/exclusions_spec.rb": 1.1250983200006885,8223 "spec/lib/gitlab/alert_management/fingerprint_spec.rb": 0.9741267680001329,8224 "spec/rubocop/cop/project_path_helper_spec.rb": 0.4681455560003087,8225 "spec/workers/approve_blocked_pending_approval_users_worker_spec.rb": 0.6223299290004434,8226 "spec/graphql/types/achievements/user_achievement_type_spec.rb": 0.5289866390003226,8227 "spec/models/concerns/presentable_spec.rb": 0.5108134210004209,8228 "spec/lib/banzai/filter/suggestion_filter_spec.rb": 0.4574929179998435,8229 "spec/lib/initializer_connections_spec.rb": 0.9686562290007714,8230 "spec/lib/gitlab/kubernetes/cluster_role_binding_spec.rb": 0.6850834110000505,8231 "spec/tooling/lib/tooling/find_tests_spec.rb": 0.789558518999911,8232 "spec/lib/bulk_imports/groups/pipelines/group_pipeline_spec.rb": 1.238143797999328,8233 "spec/workers/ci/schedule_delete_objects_cron_worker_spec.rb": 0.45838429699961125,8234 "spec/lib/gitlab/kubernetes/pod_cmd_spec.rb": 0.3765696669997851,8235 "spec/services/packages/create_temporary_package_service_spec.rb": 1.4950259879997247,8236 "spec/services/base_count_service_spec.rb": 0.7252510969992727,8237 "spec/workers/design_management/copy_design_collection_worker_spec.rb": 1.502792206999402,8238 "spec/lib/gitlab/seeders/ci/daily_build_group_report_result_spec.rb": 3.1672081659999094,8239 "spec/lib/banzai/filter/image_lazy_load_filter_spec.rb": 0.5766722540001865,8240 "spec/lib/gitlab/config/entry/factory_spec.rb": 0.7609646529999736,8241 "spec/lib/gitlab/background_migration_spec.rb": 0.8384660740002801,8242 "spec/graphql/resolvers/achievements/achievements_resolver_spec.rb": 0.7050215790004586,8243 "spec/services/customer_relations/contacts/create_service_spec.rb": 1.1144873419998476,8244 "spec/helpers/storage_helper_spec.rb": 0.8466509919999226,8245 "spec/workers/gitlab_shell_worker_spec.rb": 0.6888928700000179,8246 "spec/helpers/issue_type_helper_spec.rb": 0.4906650640004955,8247 "spec/presenters/ml/candidates_csv_presenter_spec.rb": 1.218806838999626,8248 "spec/services/users/validate_manual_otp_service_spec.rb": 0.6469622650001838,8249 "spec/lib/sidebars/admin/menus/applications_menu_spec.rb": 0.7867979789998572,8250 "spec/rubocop/cop/scalability/bulk_perform_with_context_spec.rb": 0.5270067089995791,8251 "spec/lib/bulk_imports/common/rest/get_badges_query_spec.rb": 1.0275315620001493,8252 "spec/lib/gitlab/color_schemes_spec.rb": 0.773029081000459,8253 "spec/lib/gitlab/ci/reports/coverage_report_spec.rb": 0.5975547010002629,8254 "spec/graphql/mutations/achievements/award_spec.rb": 1.0751995669997996,8255 "spec/models/issuable_severity_spec.rb": 0.7646283610001774,8256 "spec/graphql/mutations/work_items/update_task_spec.rb": 1.435954555000535,8257 "spec/lib/gitlab/database/schema_validation/schema_objects/table_spec.rb": 0.6176773399993181,8258 "spec/lib/gitlab/kubernetes/service_account_token_spec.rb": 0.587631462999525,8259 "spec/models/resource_events/issue_assignment_event_spec.rb": 0.7656733119993078,8260 "spec/helpers/url_helper_spec.rb": 0.6230235080001876,8261 "spec/services/groups/deploy_tokens/destroy_service_spec.rb": 0.8439565329999823,8262 "spec/tooling/lib/tooling/crystalball/coverage_lines_execution_detector_spec.rb": 0.5854111129992816,8263 "spec/models/design_user_mention_spec.rb": 0.6187282079999932,8264 "spec/graphql/resolvers/concerns/resolves_ids_spec.rb": 0.49008725399926334,8265 "spec/models/resource_events/merge_request_assignment_event_spec.rb": 0.6327177370003483,8266 "spec/lib/gitlab/grape_logging/loggers/urgency_logger_spec.rb": 0.6287166479996813,8267 "spec/lib/gitlab/string_range_marker_spec.rb": 0.4605193369998233,8268 "spec/rubocop/cop/migration/background_migrations_spec.rb": 0.3724677669997618,8269 "spec/services/analytics/cycle_analytics/stages/list_service_spec.rb": 0.9540679000001546,8270 "spec/workers/member_invitation_reminder_emails_worker_spec.rb": 0.6930308510000032,8271 "spec/lib/bulk_imports/groups/graphql/get_projects_query_spec.rb": 0.5338339289992291,8272 "spec/lib/gitlab/email/message/in_product_marketing/create_spec.rb": 0.5847842330003914,8273 "spec/lib/gitlab/usage/metrics/instrumentations/count_boards_metric_spec.rb": 0.8618686610006989,8274 "spec/rubocop/cop/gitlab/rspec/avoid_setup_spec.rb": 0.3748569959998349,8275 "spec/lib/gitlab/data_builder/archive_trace_spec.rb": 0.9701318090001223,8276 "spec/workers/users/create_statistics_worker_spec.rb": 0.6056294710006114,8277 "spec/lib/gitlab/diff/suggestion_diff_spec.rb": 0.38844675600012124,8278 "spec/lib/gitlab/usage_data_counters/redis_counter_spec.rb": 0.5597947449996354,8279 "spec/services/ci/process_pipeline_service_spec.rb": 1.1711779659999593,8280 "spec/lib/gitlab/process_memory_cache/helper_spec.rb": 0.7942351479996432,8281 "spec/rubocop/cop/gemspec/avoid_executing_git_spec.rb": 0.7522249139992709,8282 "spec/lib/gitlab/ci/build/hook_spec.rb": 0.6624271739992764,8283 "spec/graphql/types/commit_signatures/gpg_signature_type_spec.rb": 0.4928012439995655,8284 "spec/lib/gitlab/graphql/tracers/metrics_tracer_spec.rb": 0.5526484560004974,8285 "spec/lib/gitlab/memory/watchdog/monitor/unique_memory_growth_spec.rb": 0.4468367190002027,8286 "spec/lib/gitlab/email/hook/disable_email_interceptor_spec.rb": 0.5067261519998283,8287 "spec/serializers/move_to_project_entity_spec.rb": 0.6572326640007304,8288 "spec/initializers/microsoft_graph_mailer_spec.rb": 0.41033403299934434,8289 "spec/graphql/types/evidence_type_spec.rb": 0.4346382210005686,8290 "spec/graphql/types/snippets/blob_action_input_type_spec.rb": 0.41165077300047415,8291 "spec/graphql/types/time_tracking/timelog_sort_enum_spec.rb": 0.42615121099970565,8292 "spec/models/groups/feature_setting_spec.rb": 0.5098717219998434,8293 "spec/lib/gitlab/graphql/loaders/batch_root_storage_statistics_loader_spec.rb": 0.8035468670004775,8294 "spec/services/packages/rpm/repository_metadata/build_filelist_xml_service_spec.rb": 0.40421082400007435,8295 "spec/lib/banzai/filter/markdown_engines/base_spec.rb": 0.32907802299996547,8296 "spec/graphql/types/projects/fork_details_type_spec.rb": 0.6816024310001012,8297 "spec/graphql/types/permission_types/environment_spec.rb": 0.5260273600006258,8298 "spec/rubocop/cop/gitlab/change_timezone_spec.rb": 0.3853776949999883,8299 "spec/lib/gitlab/diff/file_collection_sorter_spec.rb": 0.43242177100000845,8300 "spec/lib/gitlab/utils/merge_hash_spec.rb": 0.5675512139996499,8301 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/none_spec.rb": 0.39830753400019603,8302 "spec/helpers/projects/settings/branch_rules_helper_spec.rb": 0.40341912300027616,8303 "spec/graphql/types/countable_connection_type_spec.rb": 0.3921206449995225,8304 "spec/graphql/resolvers/metadata_resolver_spec.rb": 0.4165187219996369,8305 "spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb": 0.5870355429997289,8306 "spec/graphql/types/resolvable_interface_spec.rb": 0.40045595499941555,8307 "spec/lib/gitlab/import_export/model_configuration_spec.rb": 0.4600474570006554,8308 "spec/lib/gitlab/middleware/release_env_spec.rb": 0.43924809000054665,8309 "spec/lib/microsoft_teams/activity_spec.rb": 0.391461694999634358310}8311Knapsack global time execution for tests: 22m 55s8312Pending: (Failures listed here are expected and do not affect your suite's status)8313 1) gitlab:db namespace rake task mark_migration_complete with a single database marks the migration complete on the given database8314 # Skipping because database ci exists8315 # ./spec/tasks/gitlab/db_rake_spec.rb:318316 2) gitlab:db namespace rake task mark_migration_complete with multiple databases with geo configured does not create a task for the geo database8317 # Skipping because the geo database is not configured8318 # ./spec/tasks/gitlab/db_rake_spec.rb:818319 3) gitlab:db namespace rake task configure with a single database when geo is not configured when the schema is already loaded migrates the database8320 # Skipping because database ci exists8321 # ./spec/tasks/gitlab/db_rake_spec.rb:1438322 4) gitlab:db namespace rake task configure with a single database when geo is not configured when the schema is not loaded loads the schema and seeds the database8323 # Skipping because database ci exists8324 # ./spec/tasks/gitlab/db_rake_spec.rb:1558325 5) gitlab:db namespace rake task configure with a single database when geo is not configured when only a single table is present loads the schema and seeds the database8326 # Skipping because database ci exists8327 # ./spec/tasks/gitlab/db_rake_spec.rb:1678328 6) gitlab:db namespace rake task configure with a single database when geo is not configured when loading the schema fails does not seed the database8329 # Skipping because database ci exists8330 # ./spec/tasks/gitlab/db_rake_spec.rb:1798331 7) gitlab:db namespace rake task configure with a single database when geo is not configured SKIP_POST_DEPLOYMENT_MIGRATIONS environment variable set when the schema is not loaded adds the post deployment migration path before schema load8332 # Skipping because database ci exists8333 # ./spec/tasks/gitlab/db_rake_spec.rb:2028334 8) gitlab:db namespace rake task configure with a single database when geo is not configured SKIP_POST_DEPLOYMENT_MIGRATIONS environment variable set when the schema is loaded ignores post deployment migrations8335 # Skipping because database ci exists8336 # ./spec/tasks/gitlab/db_rake_spec.rb:2178337 9) gitlab:db namespace rake task configure with a single database when geo is configured when the main database is also configured only configures the main database8338 # Skipping because database ci exists8339 # ./spec/tasks/gitlab/db_rake_spec.rb:2398340 10) gitlab:db namespace rake task configure with multiple databases when geo is configured does not run tasks against geo8341 # Skipping because the geo database is not configured8342 # ./spec/tasks/gitlab/db_rake_spec.rb:3418343 11) gitlab:db namespace rake task drop_tables with a single database drops all objects for the database8344 # Skipping because some of the extra databases [:ci, :main_clusterwide] are setup8345 # ./spec/tasks/gitlab/db_rake_spec.rb:6068346 12) gitlab:db namespace rake task drop_tables with multiple databases with geo configured does not create a task for the geo database8347 # Skipping because the geo database is not configured8348 # ./spec/tasks/gitlab/db_rake_spec.rb:6548349 13) gitlab:db namespace rake task create_dynamic_partitions with a single database delegates syncing of partitions without limiting databases8350 # Skipping because some of the extra databases [:ci, :main_clusterwide] are setup8351 # ./spec/tasks/gitlab/db_rake_spec.rb:6828352 14) gitlab:db namespace rake task create_dynamic_partitions with geo configured does not create a task for the geo database8353 # Skipping because the geo database is not configured8354 # ./spec/tasks/gitlab/db_rake_spec.rb:7168355 15) gitlab:db namespace rake task reindex with multiple databases with geo configured does not create a task for the geo database8356 # Skipping because the geo database is not configured8357 # ./spec/tasks/gitlab/db_rake_spec.rb:7868358 16) gitlab:db namespace rake task execute_async_index_operations with geo configured does not create a task for the geo database8359 # Skipping because the geo database is not configured8360 # ./spec/tasks/gitlab/db_rake_spec.rb:8798361 17) gitlab:db namespace rake task validate_async_constraints with geo configured does not create a task for the geo database8362 # Skipping because the geo database is not configured8363 # ./spec/tasks/gitlab/db_rake_spec.rb:9538364 18) gitlab:db namespace rake task with multiple databases db:migrate:geo does not invoke gitlab:db:create_dynamic_partitions8365 # Skipping because the geo database is not configured8366 # ./spec/tasks/gitlab/db_rake_spec.rb:11518367Failures:8368 1) Ci::UnitTest behaves like cleanup by a loose foreign key cleans up (delete or nullify) the model8369 Failure/Error:8370 self.table_schema(name, undefined: false) || raise(8371 UnknownSchemaError,8372 "Could not find gitlab schema for table #{name}: Any new tables must be added to the database dictionary"8373 )8374 Gitlab::Database::GitlabSchema::UnknownSchemaError:8375 Could not find gitlab schema for table ci_unknown_table: Any new tables must be added to the database dictionary8376 Shared Example Group: "cleanup by a loose foreign key" called from ./spec/models/ci/unit_test_spec.rb:68377 # ./lib/gitlab/database/gitlab_schema.rb:97:in `table_schema!'8378 # ./lib/gitlab/database/loose_foreign_keys.rb:25:in `build_definition'8379 # ./lib/gitlab/database/loose_foreign_keys.rb:12:in `block (2 levels) in definitions'8380 # ./lib/gitlab/database/loose_foreign_keys.rb:12:in `map'8381 # ./lib/gitlab/database/loose_foreign_keys.rb:12:in `block in definitions'8382 # ./lib/gitlab/database/loose_foreign_keys.rb:11:in `each'8383 # ./lib/gitlab/database/loose_foreign_keys.rb:11:in `flat_map'8384 # ./lib/gitlab/database/loose_foreign_keys.rb:11:in `definitions'8385 # ./lib/gitlab/database/loose_foreign_keys.rb:7:in `definitions_by_table'8386 # ./app/services/loose_foreign_keys/process_deleted_records_service.rb:73:in `tracked_tables'8387 # ./app/services/loose_foreign_keys/process_deleted_records_service.rb:14:in `execute'8388 # ./spec/support/shared_examples/loose_foreign_keys/have_loose_foreign_key.rb:79:in `block (3 levels) in <top (required)>'8389 # ./lib/gitlab/database/shared_model.rb:34:in `using_connection'8390 # ./spec/support/shared_examples/loose_foreign_keys/have_loose_foreign_key.rb:78:in `block (2 levels) in <top (required)>'8391 # ./spec/spec_helper.rb:423:in `block (3 levels) in <top (required)>'8392 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'8393 # ./spec/spec_helper.rb:415:in `block (2 levels) in <top (required)>'8394 # ./spec/spec_helper.rb:411:in `block (3 levels) in <top (required)>'8395 # ./lib/gitlab/application_context.rb:61:in `with_raw_context'8396 # ./spec/spec_helper.rb:411:in `block (2 levels) in <top (required)>'8397 # ./spec/spec_helper.rb:242:in `block (2 levels) in <top (required)>'8398 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'8399 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <top (required)>'8400 # ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'8401 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <top (required)>'8402Finished in 23 minutes 0 seconds (files took 50.86 seconds to load)84033703 examples, 1 failure, 18 pending8404Failed examples:8405rspec ./spec/models/ci/unit_test_spec.rb:6 # Ci::UnitTest behaves like cleanup by a loose foreign key cleans up (delete or nullify) the model8406Randomized with seed 61798407[TEST PROF INFO] Time spent in factories: 08:51.558 (38.29% of total time)8408Stopped processing SimpleCov as a previous error not related to SimpleCov has been detected8409RSpec exited with 1.8410RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_unit_pg13_16_28_report.txt8411Retrying the failing examples in a new RSpec process...8412$ gem install junit_merge --no-document --version 0.1.28413Successfully installed nokogiri-1.14.3-x86_64-linux8414Successfully installed junit_merge-0.1.284152 gems installed8416==> 'gem install junit_merge --no-document --version 0.1.2' succeeded in 1 seconds.8417Running RSpec command: bin/rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format RspecJunitFormatter --out rspec/junit_rspec-retry.xml --only-failures --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.rb"8418warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.8420Run options: include {:last_run_status=>"failed"}8421Test environment set up in 0.455400587 seconds8422Ci::UnitTest8423 behaves like cleanup by a loose foreign key8424 cleans up (delete or nullify) the model8425Finished in 6.73 seconds (files took 47.21 seconds to load)84261 example, 0 failures8427[TEST PROF INFO] Time spent in factories: 00:01.360 (15.52% of total time)8428A test was flaky and succeeded after being retried. Checking to see if flaky test is part of this MR...8429Flaky test was not part of this MR.8431Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8433Uploading artifacts...8434coverage/: found 4 matching artifact files and directories 8435WARNING: crystalball/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8436deprecations/: found 8 matching artifact files and directories 8437knapsack/: found 4 matching artifact files and directories 8438query_recorder/: found 2 matching artifact files and directories 8439rspec/: found 10 matching artifact files and directories 8440WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8441log/*.log: found 17 matching artifact files and directories 8442WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4181384133/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8443WARNING: Retrying... context=artifacts-uploader error=request redirected8444Uploading artifacts as "archive" to coordinator... 201 Created id=4181384133 responseStatus=201 Created token=64_vfc1y8445Uploading artifacts...8446rspec/junit_rspec.xml: found 1 matching artifact files and directories 8447WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4181384133/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8448WARNING: Retrying... context=artifacts-uploader error=request redirected8449Uploading artifacts as "junit" to coordinator... 201 Created id=4181384133 responseStatus=201 Created token=64_vfc1y8451Job succeeded