rspec unit pg13 single-db 27/28
Passed Started
by
@fabiopitino
Fabio Pitino
1Running with gitlab-runner 16.1.0~beta.5.gf131a6a2 (f131a6a2)2 on blue-3.shared-gitlab-org.runners-manager.gitlab.com/default sUrYYgEG, system ID: s_35f98e2af4653 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...10Using docker image sha256:73740c557807c4bc5d692f263c0e35454270600da4b22bbe952331411426c8b5 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:3174001f839c42e299ac06a42f8ded446edfcb33b0eb820874749a3f53eb799c ...11WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.12WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.13Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...16Using docker image sha256:a9a90ece30d9630d694ab1997cd103ea8ec729789451b983a75c7b58b0062d45 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7ef36177d5d0bc554fbb63d8210ae751bcc538bea7905b51d078d9ab90a755fa ...17Starting service redis:6.2-alpine ...18Pulling docker image redis:6.2-alpine ...19Using docker image sha256:85fd7bd884b6493c8eb6f4dffbe5406d97cce56aff84f1580a5eb5b9d841f158 for redis:6.2-alpine with digest redis@sha256:87c44d5d9f472e767c8737f4130c765d77bdc95c7472d6427cfc9d4632f12da6 ...20Waiting for services to be up and running (timeout 30 seconds)...21Authenticating with credentials from job payload (GitLab Registry)22Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...23Using docker image sha256:61b59025d0d646cd177f654d8f81df859675be528f37dcc2ce6f39a49c7a5dd9 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:25367d41b1034f1ecacfc9cb8eebc70cb30c6fdade3781cf295488255bf61614 ...25Running on runner-suryygeg-project-278964-concurrent-0 via runner-suryygeg-shared-gitlab-org-1685686913-6e71b504...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/29Created fresh repository.30remote: Enumerating objects: 139970, done. 31remote: Counting objects: 100% (139970/139970), done. 32remote: Compressing objects: 100% (94736/94736), done. 33remote: Total 139970 (delta 61223), reused 92035 (delta 39894), pack-reused 0 34Receiving objects: 100% (139970/139970), 123.36 MiB | 29.17 MiB/s, done.35Resolving deltas: 100% (61223/61223), done.37 * [new ref] refs/pipelines/887306308 -> refs/pipelines/88730630838Checking out 95754c79 as detached HEAD (ref is refs/merge-requests/122015/merge)...39Skipping Git submodules setup40$ git remote set-url origin "${CI_REPOSITORY_URL}"42Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...43Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 44Successfully extracted cache46Downloading artifacts for compile-test-assets (4400964016)...47Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964016 responseStatus=200 OK token=64_z1mJi48Downloading artifacts for detect-tests (4400964025)...49Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964025 responseStatus=200 OK token=64_z1mJi50Downloading artifacts for retrieve-tests-metadata (4400964028)...51Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964028 responseStatus=200 OK token=64_z1mJi52Downloading artifacts for setup-test-env (4400964019)...53Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964019 responseStatus=200 OK token=64_z1mJi55Using docker image sha256:61b59025d0d646cd177f654d8f81df859675be528f37dcc2ce6f39a49c7a5dd9 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:25367d41b1034f1ecacfc9cb8eebc70cb30c6fdade3781cf295488255bf61614 ...56$ echo $FOSS_ONLY57$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb58$ export GOPATH=$CI_PROJECT_DIR/.go59$ mkdir -p $GOPATH60$ source scripts/utils.sh61$ source scripts/prepare_build.sh716Using decomposed database config (config/database.yml.postgresql)717Disabling ci connection in config/database.yml718Geo DB won't be set up.719Embedding DB won't be set up.731$ source ./scripts/rspec_helpers.sh732$ run_timed_command "gem install knapsack --no-document"733$ gem install knapsack --no-document734Successfully installed knapsack-4.0.07351 gem installed736$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"737==> 'gem install knapsack --no-document' succeeded in 0 seconds.739$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"744$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"745$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"746SKIP_FLAKY_TESTS_AUTOMATICALLY: 747RETRY_FAILED_TESTS_IN_NEW_PROCESS: true748KNAPSACK_GENERATE_REPORT: true749FLAKY_RSPEC_GENERATE_REPORT: true750KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb751KNAPSACK_LOG_LEVEL: debug752KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13_single-db_27_28_report.json753FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json754FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_single-db_27_28_report.json755NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_single-db_27_28_report.json756SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests_rspec_unit_pg13_single-db_27_28.txt757CRYSTALBALL: 758RSPEC_TESTS_MAPPING_ENABLED: 759RSPEC_TESTS_FILTER_FILE: 760Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-4400964306.json --format RspecJunitFormatter --out rspec/rspec-4400964306.xml --tag ~quarantine --tag ~level:background_migration -- spec/services/ci/pipeline_processing/atomic_processing_service_spec.rb spec/models/ci/build_spec.rb spec/lib/gitlab/diff/file_spec.rb spec/tasks/gitlab/storage_rake_spec.rb spec/services/ci/register_job_service_spec.rb spec/lib/gitlab/background_migration/job_coordinator_spec.rb spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb spec/lib/gitlab/project_authorizations_spec.rb spec/services/projects/prometheus/alerts/notify_service_spec.rb spec/services/groups/update_service_spec.rb spec/services/ci/retry_pipeline_service_spec.rb spec/models/snippet_spec.rb spec/services/git/process_ref_changes_service_spec.rb spec/models/project_feature_spec.rb spec/services/merge_requests/rebase_service_spec.rb spec/models/key_spec.rb spec/models/merge_request_diff_commit_spec.rb spec/services/snippets/destroy_service_spec.rb spec/lib/gitlab/import_export/project/sample/relation_tree_restorer_spec.rb spec/lib/gitlab/reference_extractor_spec.rb spec/finders/template_finder_spec.rb spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb spec/workers/packages/debian/process_changes_worker_spec.rb spec/services/resource_access_tokens/revoke_service_spec.rb spec/lib/gitlab/repository_cache_adapter_spec.rb spec/lib/gitlab/counters/buffered_counter_spec.rb spec/serializers/ci/pipeline_entity_spec.rb spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb spec/finders/environments/environments_by_deployments_finder_spec.rb spec/lib/gitlab/ci/trace/stream_spec.rb spec/services/search/group_service_spec.rb spec/bin/audit_event_type_spec.rb spec/models/list_spec.rb spec/lib/gitlab/ci/ansi2json/style_spec.rb spec/services/ci/pipeline_artifacts/create_code_quality_mr_diff_report_service_spec.rb spec/graphql/resolvers/group_labels_resolver_spec.rb spec/helpers/auth_helper_spec.rb spec/lib/gitlab/background_migration/remove_invalid_deploy_access_level_groups_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/jira_active_integrations_metric_spec.rb spec/lib/container_registry/blob_spec.rb spec/services/groups/autocomplete_service_spec.rb spec/serializers/analytics_build_entity_spec.rb spec/lib/gitlab/ci/lint_spec.rb spec/models/analytics/cycle_analytics/stage_spec.rb spec/lib/gitlab/error_tracking_spec.rb spec/services/projects/container_repository/third_party/cleanup_tags_service_spec.rb spec/lib/gitlab/ci/pipeline/duration_spec.rb spec/lib/gitlab/ci/config/external/mapper_spec.rb spec/views/projects/commit/show.html.haml_spec.rb spec/services/work_items/widgets/hierarchy_service/update_service_spec.rb spec/lib/gitlab/redis/cache_spec.rb spec/models/integrations/base_chat_notification_spec.rb spec/lib/gitlab/database/schema_validation/track_inconsistency_spec.rb spec/lib/gitlab/suggestions/file_suggestion_spec.rb spec/lib/gitlab/git/keep_around_spec.rb spec/services/ci/delete_objects_service_spec.rb spec/lib/banzai/reference_redactor_spec.rb spec/views/layouts/fullscreen.html.haml_spec.rb spec/lib/gitlab/metrics/dashboard/url_spec.rb spec/models/concerns/atomic_internal_id_spec.rb spec/workers/users/deactivate_dormant_users_worker_spec.rb spec/models/ml/experiment_spec.rb spec/finders/packages/debian/distributions_finder_spec.rb spec/lib/gitlab/ci/pipeline/expression/lexeme/or_spec.rb spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb spec/lib/gitlab/database/query_analyzers/restrict_allowed_schemas_spec.rb spec/lib/gitlab/ci/config/entry/port_spec.rb spec/workers/environments/auto_stop_worker_spec.rb spec/workers/ci/ref_delete_unlock_artifacts_worker_spec.rb spec/services/ci/create_pipeline_service/environment_spec.rb spec/helpers/safe_format_helper_spec.rb spec/lib/gitlab/etag_caching/router/rails_spec.rb spec/models/members/member_task_spec.rb spec/lib/sidebars/panel_spec.rb spec/models/protected_tag_spec.rb spec/lib/gitlab/ci/variables/builder/group_spec.rb spec/services/metrics/dashboard/default_embed_service_spec.rb spec/services/ci/update_instance_variables_service_spec.rb spec/services/system_notes/alert_management_service_spec.rb spec/services/notes/destroy_service_spec.rb spec/policies/clusters/agent_policy_spec.rb spec/models/work_items/type_spec.rb spec/services/work_items/widgets/current_user_todos_service/update_service_spec.rb spec/finders/ci/commit_statuses_finder_spec.rb spec/components/pajamas/progress_component_spec.rb spec/rubocop/cop/rspec/expect_gitlab_tracking_spec.rb spec/views/layouts/simple_registration.html.haml_spec.rb spec/lib/gitlab/process_management_spec.rb spec/lib/gitlab/sanitizers/svg_spec.rb spec/services/work_items/callbacks/award_emoji_spec.rb spec/graphql/mutations/ci/job_token_scope/add_project_spec.rb spec/lib/gitlab/i18n/pluralization_spec.rb spec/finders/environments/environments_finder_spec.rb spec/workers/ci/cancel_redundant_pipelines_worker_spec.rb spec/uploaders/gitlab_uploader_spec.rb spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb spec/serializers/container_repositories_serializer_spec.rb spec/services/milestones/closed_issues_count_service_spec.rb spec/lib/gitlab/ci/parsers/codequality/code_climate_spec.rb spec/helpers/ci/status_helper_spec.rb spec/lib/gitlab/ci/input/arguments/required_spec.rb spec/finders/projects/prometheus/alerts_finder_spec.rb spec/services/users/dismiss_group_callout_service_spec.rb spec/lib/banzai/reference_parser/alert_parser_spec.rb spec/finders/boards/visits_finder_spec.rb spec/helpers/sourcegraph_helper_spec.rb spec/lib/gitlab/mail_room/authenticator_spec.rb spec/graphql/mutations/todos/create_spec.rb spec/lib/gitlab/query_limiting_spec.rb spec/models/alert_management/alert_assignee_spec.rb spec/rubocop/cop/api/base_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_deployed_to_production_spec.rb spec/finders/abuse_reports_finder_spec.rb spec/lib/gitlab/hook_data/project_builder_spec.rb spec/services/markdown_content_rewriter_service_spec.rb spec/components/pajamas/toggle_component_spec.rb spec/lib/sidebars/projects/menus/project_information_menu_spec.rb spec/config/smime_signature_settings_spec.rb spec/lib/gitlab/ci/pipeline/preloader_spec.rb spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb spec/lib/constraints/admin_constrainer_spec.rb spec/tooling/danger/specs_spec.rb spec/lib/api/entities/draft_note_spec.rb spec/models/gpg_key_subkey_spec.rb spec/services/ci/create_pipeline_service/artifacts_spec.rb spec/models/concerns/ignorable_columns_spec.rb spec/services/error_tracking/base_service_spec.rb spec/services/topics/merge_service_spec.rb spec/initializers/safe_session_store_patch_spec.rb spec/finders/groups/projects_requiring_authorizations_refresh/on_transfer_finder_spec.rb spec/lib/sidebars/groups/menus/merge_requests_menu_spec.rb spec/config/application_spec.rb spec/models/packages/debian/group_architecture_spec.rb spec/lib/gitlab/ci/status/waiting_for_resource_spec.rb spec/lib/gitlab/ci/matching/build_matcher_spec.rb spec/lib/gitlab/metrics/samplers/threads_sampler_spec.rb spec/tooling/lib/tooling/mappings/view_to_system_specs_mappings_spec.rb spec/graphql/mutations/todos/restore_spec.rb spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb spec/presenters/blobs/notebook_presenter_spec.rb spec/lib/gitlab/ci/status/stage/common_spec.rb spec/finders/autocomplete/acts_as_taggable_on/tags_finder_spec.rb spec/lib/gitlab/database/query_analyzers/ci/partitioning_routing_analyzer_spec.rb spec/services/projects/deploy_tokens/destroy_service_spec.rb spec/lib/gitlab/graphql_logger_spec.rb spec/serializers/ci/job_serializer_spec.rb spec/workers/loose_foreign_keys/cleanup_worker_spec.rb spec/lib/gitlab/database/load_balancing/configuration_spec.rb spec/lib/api/validations/validators/git_sha_spec.rb spec/helpers/projects/terraform_helper_spec.rb spec/lib/gitlab/ci/reports/test_reports_comparer_spec.rb spec/lib/gitlab/verify/lfs_objects_spec.rb spec/models/clusters/project_spec.rb spec/support_specs/database/multiple_databases_helpers_spec.rb spec/lib/gitlab/render_timeout_spec.rb spec/db/development/add_security_training_providers_spec.rb spec/routing/directs/milestone_spec.rb spec/presenters/project_clusterable_presenter_spec.rb spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb spec/rubocop/cop/rspec/httparty_basic_auth_spec.rb spec/lib/gitlab/memory/watchdog/configuration_spec.rb spec/views/profiles/preferences/show.html.haml_spec.rb spec/lib/gitlab/pagination/cursor_based_keyset_spec.rb spec/services/ide/base_config_service_spec.rb spec/services/alert_management/metric_images/upload_service_spec.rb spec/lib/gitlab/ci/build/prerequisite/factory_spec.rb spec/services/projects/container_repository/third_party/delete_tags_service_spec.rb spec/components/pajamas/radio_component_spec.rb spec/models/plan_spec.rb spec/lib/gitlab/sql/union_spec.rb spec/graphql/mutations/achievements/create_spec.rb spec/lib/gitlab/ci/reports/codequality_reports_spec.rb spec/support_specs/ability_check_spec.rb spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb spec/rubocop/cop/graphql/json_type_spec.rb spec/workers/pages_domain_ssl_renewal_worker_spec.rb spec/lib/gitlab/ci/input/arguments/default_spec.rb spec/lib/bitbucket_server/representation/repo_spec.rb spec/lib/gitlab/usage_data_counters/snippet_counter_spec.rb spec/routing/openid_connect_spec.rb spec/views/devise/shared/_signup_box.html.haml_spec.rb spec/lib/gitlab/database/partitioning/replace_table_spec.rb spec/graphql/types/member_interface_spec.rb spec/lib/gitlab/lets_encrypt/challenge_spec.rb spec/services/users/email_verification/generate_token_service_spec.rb spec/lib/gitlab/graphql/authorize/object_authorization_spec.rb spec/models/projects/wiki_repository_spec.rb spec/lib/gitlab/chat/responder/base_spec.rb spec/lib/gitlab/metrics/dashboard/stages/panel_ids_inserter_spec.rb spec/lib/gitlab/manifest_import/metadata_spec.rb spec/lib/gitlab/bitbucket_server_import/importers/notes_importer_spec.rb spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb spec/graphql/types/work_items/widgets/assignees_input_type_spec.rb spec/lib/gitlab/snippet_search_results_spec.rb spec/helpers/rss_helper_spec.rb spec/rubocop/cop/migration/remove_column_spec.rb spec/services/work_items/parent_links/base_service_spec.rb spec/lib/gitlab/utils/inline_hash_spec.rb spec/graphql/types/metrics/dashboard_type_spec.rb spec/graphql/types/project_member_type_spec.rb spec/lib/bulk_imports/projects/pipelines/protected_branches_pipeline_spec.rb spec/lib/gitlab/config/entry/unspecified_spec.rb spec/lib/gitlab/kubernetes/service_account_token_spec.rb spec/graphql/types/commit_signatures/ssh_signature_type_spec.rb spec/graphql/types/range_input_type_spec.rb spec/graphql/types/event_type_spec.rb spec/lib/gitlab/ci/config/external/mapper/variables_expander_spec.rb spec/rubocop/cop/gitlab/json_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric_spec.rb spec/views/groups/show.html.haml_spec.rb spec/lib/gitlab/quick_actions/substitution_definition_spec.rb spec/lib/api/entities/design_management/design_spec.rb spec/views/dashboard/projects/_nav.html.haml_spec.rb spec/rubocop/cop/qa/ambiguous_page_object_name_spec.rb spec/lib/gitlab/ci/config/external/mapper/base_spec.rb spec/models/concerns/transactions_spec.rb spec/models/concerns/vulnerability_finding_helpers_spec.rb spec/lib/api/entities/ssh_key_spec.rb spec/graphql/types/ci/runner_web_url_edge_spec.rb spec/graphql/types/group_member_relation_enum_spec.rb spec/graphql/types/ci/test_suite_summary_type_spec.rb spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb spec/graphql/types/design_management/design_collection_type_spec.rb spec/models/concerns/blocks_unsafe_serialization_spec.rb spec/models/issues/csv_import_spec.rb spec/graphql/types/ci_configuration/sast/options_entity_spec.rb spec/models/concerns/runners_token_prefixable_spec.rb spec/lib/gitlab/git/gitmodules_parser_spec.rb spec/lib/gitlab/log_timestamp_formatter_spec.rb spec/lib/gitlab/ci/status/build/waiting_for_resource_spec.rb spec/graphql/types/packages/pypi/metadatum_type_spec.rb spec/lib/gitlab/patch/draw_route_spec.rb spec/graphql/types/packages/package_file_type_spec.rb spec/lib/gitlab/ci/config/normalizer/factory_spec.rb spec/presenters/deploy_key_presenter_spec.rb spec/graphql/types/work_items/widgets/assignees_type_spec.rb spec/dependencies/omniauth_saml_spec.rbKnapsack report generator started!761warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.763Run options: exclude {:quarantine=>true, :level=>"background_migration"}764Test environment set up in 0.82356772 seconds765Ci::PipelineProcessing::AtomicProcessingService766 Pipeline Processing Service Tests With Yaml767 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build2_build1_rules_out_test_needs_build1_with_optional.yml"768 follows transitions769 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails.yml"770 follows transitions771 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_deploy_is_delayed_and_needs_test.yml"772 follows transitions773 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_deploy_is_manual_and_needs_test.yml"774 follows transitions775 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_deploy_needs_test.yml"776 follows transitions777 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_deploy_needs_test_when_always.yml"778 follows transitions779 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_other_build_succeeds_deploy_needs_one_build_and_test.yml"780 follows transitions781 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_other_build_succeeds_deploy_needs_one_build_and_test_when_always.yml"782 follows transitions783 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_test_always.yml"784 follows transitions785 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_test_fails_with_allow_failure.yml"786 follows transitions787 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_test_on_failure.yml"788 follows transitions789 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_test_on_failure_deploy_needs_test.yml"790 follows transitions791 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_with_allow_failure_test_on_failure.yml"792 follows transitions793 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_rules_out_test_needs_build_with_optional.yml"794 follows transitions795 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_succeds_test_manual_allow_failure_true_deploy_needs_both.yml"796 follows transitions797 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_succeds_test_manual_allow_failure_true_deploy_needs_test.yml"798 follows transitions799 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_succeeds_test_on_failure.yml"800 follows transitions801 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_succeeds_test_on_failure_deploy_needs_test.yml"802 follows transitions803 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_test_manual_review_deploy.yml"804 follows transitions805 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_test_two_manual_review_test_staging_production.yml"806 follows transitions807 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_builds_succeed_test_on_failure_deploy_needs_one_build_and_test.yml"808 follows transitions809 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_builds_succeed_test_on_failure_deploy_needs_one_build_and_test_when_always.yml"810 follows transitions811 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_deploy_needs_empty.yml"812 follows transitions813 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_same_stage_with_fail_and_retry_1.yml"814 follows transitions815 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_same_stage_with_fail_and_retry_2.yml"816 follows transitions817 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_same_stage_with_subsequent_manual_jobs.yml"818 follows transitions819 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_same_stages.yml"820 follows transitions821 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_fails_with_allow_failure.yml"822 follows transitions823 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_false.yml"824 follows transitions825 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_false_deploy_always.yml"826 follows transitions827 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_false_deploy_on_failure.yml"828 follows transitions829 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_false_other_test_succeeds_deploy_needs_both.yml"830 follows transitions831 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_deploy_always.yml"832 follows transitions833 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_deploy_on_failure.yml"834 follows transitions835 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_fails.yml"836 follows transitions837 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_other_test_succeeds_deploy_needs_both.yml"838 follows transitions839 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_succeeds.yml"840 follows transitions841 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_post_test_needs_deploy_is_stage.yml"842 follows transitions843 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_same_and_different_stage_needs.yml"844 follows transitions845 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_same_stage_needs.yml"846 follows transitions847 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_on_failure_no_needs.yml"848 follows transitions849 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_cancels_test1_and_test2_have_when.yml"850 follows transitions851 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_cancels_with_allow_failure_test1_and_test2_have_when.yml"852 follows transitions853 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_fails.yml"854 follows transitions855 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_fails_test_on_failure.yml"856 follows transitions857 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_fails_with_allow_failure_test_on_failure.yml"858 follows transitions859 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_succeeds_test_manual_allow_failure_true.yml"860 follows transitions861 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_succeeds_test_on_failure.yml"862 follows transitions863 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_test_manual_review_deploy.yml"864 follows transitions865 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_one_test_succeeds_one_manual_test_fails_and_retry_manual_build.yml"866 follows transitions867 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_one_test_succeeds_one_manual_test_fails_and_retry_pipeline.yml"868 follows transitions869 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_test_manual_allow_failure_false.yml"870 follows transitions871 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_test_manual_allow_failure_true.yml"872 follows transitions873 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_test_manual_allow_failure_true_deploy_always.yml"874 follows transitions875 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_test_manual_allow_failure_true_deploy_on_failure.yml"876 follows transitions877 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_test_on_failure_no_prev_stage.yml"878 follows transitions879 Pipeline Processing Service880 when simple pipeline is defined881 processes a pipeline882 does not process pipeline if existing stage is running883 custom stage with first job allowed to fail884 automatically triggers a next stage when build finishes885 when optional manual actions are defined886 when builds are successful887 properly processes the pipeline888 when test job fails889 properly processes the pipeline890 when test and test_failure jobs fail891 properly processes the pipeline892 when deploy job fails893 properly processes the pipeline894 when build is canceled in the second stage895 does not schedule builds after build has been canceled896 when listing optional manual actions897 returns only for skipped builds898 when delayed jobs are defined899 when the scene is timed incremental rollout900 when builds are successful901 properly processes the pipeline902 when build job fails903 properly processes the pipeline904 when rollout 10% is unscheduled905 properly processes the pipeline906 when user plays rollout 10%907 schedules rollout100%908 when rollout 10% fails909 properly processes the pipeline910 when user retries rollout 10%911 does not schedule rollout10% again912 when rollout 10% is played immidiately913 properly processes the pipeline914 when only one scheduled job exists in a pipeline915 properly processes the pipeline916 when there are two delayed jobs in a stage917 blocks the stage until all scheduled jobs finished918 when a delayed job is allowed to fail919 blocks the stage and continues after it failed920 when an exception is raised during a persistent ref creation921 process the pipeline922 when there are manual action in earlier stages923 when first stage has only optional manual actions924 starts from the second stage925 when second stage has only optional manual actions926 skips second stage and continues on third stage927 when there are only manual actions in stages928 processes all jobs until blocking actions encountered929 when there is only one manual action930 skips the pipeline931 when the action was played932 queues the action and pipeline933 when blocking manual actions are defined934 when first stage succeeds935 blocks pipeline on stage with first manual action936 when first stage fails937 does not take blocking action into account938 when pipeline is promoted sequentially up to the end939 properly processes entire pipeline940 when second stage has only on_failure jobs941 skips second stage and continues on third stage942 when failed build in the middle stage is retried943 when failed build is the only unsuccessful build in the stage944 does trigger builds in the next stage945 when builds with auto-retries are configured946 automatically retries builds in a valid order947 when pipeline with needs is created948 when linux:* finishes first it runs it out of order949 when one of the jobs is run on a failure950 when another job in build phase fails first951 does skip linux:notify952 when linux:build job fails first953 does run linux:notify954 when there is a job scheduled with dag but no need (needs: [])955 runs deploy_pages without waiting prior stages956 when a needed job is skipped957 skips the jobs depending on it958 when a needed job is manual959 makes deploy DAG to be skipped960 when a bridge job has parallel:matrix config961 creates pipeline with bridges, then passes the matrix variables to downstream jobs962 when a bridge job has invalid downstream project963 creates a pipeline, then fails the bridge job964 when the dependency is stage-independent965 processes subsequent jobs in the correct order when playing first job966Ci::Build967 is expected to belong to runner required: false968 is expected to belong to trigger_request required: false969 is expected to belong to erased_by required: false970 is expected to belong to pipeline required: false inverse_of => builds971 is expected to have many needs972 is expected to have many sourced_pipelines class_name => Ci::Sources::Pipeline inverse_of => build973 is expected to have many job_variables974 is expected to have many report_results975 is expected to have many pages_deployments976 is expected to have one deployment977 is expected to have one runner_manager through runner_manager_build978 is expected to have one runner_session979 is expected to have one trace_metadata980 is expected to have one runtime_metadata981 is expected to have one pending_state inverse_of => build982 is expected to have one queuing_entry class_name => Ci::PendingBuild inverse_of => build983 is expected to have one runtime_metadata class_name => Ci::RunningBuild inverse_of => build984 is expected to have many terraform_state_versions inverse_of => build985 is expected to validate that :ref cannot be empty/falsy986 is expected to respond to #has_trace?987 is expected to respond to #trace988 is expected to respond to #set_cancel_gracefully989 is expected to respond to #cancel_gracefully?990 is expected to delegate #merge_request? to the #pipeline object991 is expected to delegate #merge_request_ref? to the #pipeline object992 is expected to delegate #legacy_detached_merge_request_pipeline? to the #pipeline object993 does not generate cross DB queries when a record is created via FactoryBot994 associations995 has a bidirectional relationship with projects996 callbacks997 when running after_create callback998 executes hooks999 status1000 when transitioning to any state from running1001 removes runner_session1002 behaves like has ID tokens1003 delegations1004 is expected to delegate #id_tokens to the #metadata object, allowing #metadata to return nil1005 #id_tokens?1006 without metadata1007 is expected to be falsy1008 with metadata1009 when ID tokens exist1010 is expected to be truthy1011 when ID tokens do not exist1012 is expected to be falsy1013 #id_tokens=1014 assigns the ID tokens to the CI job1015 behaves like a retryable job1016 #enqueue_immediately?1017 defaults to false1018 #set_enqueue_immediately!1019 changes #enqueue_immediately? to true1020 .manual_actions1021 is expected to include #<Ci::Build status: "manual", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", up...rocessed: false, scheduling_type: "stage", id: 359, stage_id: 271, partition_id: 100, tag_list: nil>1022 is expected to include #<Ci::Build status: "success", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 361, stage_id: 271, partition_id: 100, tag_list: nil>1023 is expected not to include #<Ci::Build status: "created", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 363, stage_id: 271, partition_id: 100, tag_list: nil>1024 .ref_protected1025 when protected is true1026 is expected to include #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 366, stage_id: 271, partition_id: 100, tag_list: nil>1027 when protected is false1028 is expected not to include #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 367, stage_id: 271, partition_id: 100, tag_list: nil>1029 when protected is nil1030 is expected not to include #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 368, stage_id: 271, partition_id: 100, tag_list: nil>1031 .with_downloadable_artifacts1032 when job does not have a downloadable artifact1033 does not return the job1034 when job has a accessibility artifact1035 returns the job1036 when job has a api_fuzzing artifact1037 returns the job1038 when job has a archive artifact1039 returns the job1040 when job has a cobertura artifact1041 returns the job1042 when job has a codequality artifact1043 returns the job1044 when job has a container_scanning artifact1045 returns the job1046 when job has a dast artifact1047 returns the job1048 when job has a dependency_scanning artifact1049 returns the job1050 when job has a dotenv artifact1051 returns the job1052 when job has a junit artifact1053 returns the job1054 when job has a license_scanning artifact1055 returns the job1056 when job has a lsif artifact1057 returns the job1058 when job has a metrics artifact1059 returns the job1060 when job has a performance artifact1061 returns the job1062 when job has a browser_performance artifact1063 returns the job1064 when job has a load_performance artifact1065 returns the job1066 when job has a sast artifact1067 returns the job1068 when job has a secret_detection artifact1069 returns the job1070 when job has a requirements artifact1071 returns the job1072 when job has a requirements_v2 artifact1073 returns the job1074 when job has a cluster_image_scanning artifact1075 returns the job1076 when job has a cyclonedx artifact1077 returns the job1078 when job has a non-downloadable artifact1079 does not return the job1080 .with_erasable_artifacts1081 when job does not have any artifacts1082 does not return the job1083 when job has a archive artifact1084 returns the job1085 when job has a metadata artifact1086 returns the job1087 when job has a junit artifact1088 returns the job1089 when job has a sast artifact1090 returns the job1091 when job has a dependency_scanning artifact1092 returns the job1093 when job has a container_scanning artifact1094 returns the job1095 when job has a dast artifact1096 returns the job1097 when job has a codequality artifact1098 returns the job1099 when job has a license_scanning artifact1100 returns the job1101 when job has a performance artifact1102 returns the job1103 when job has a metrics artifact1104 returns the job1105 when job has a metrics_referee artifact1106 returns the job1107 when job has a network_referee artifact1108 returns the job1109 when job has a lsif artifact1110 returns the job1111 when job has a dotenv artifact1112 returns the job1113 when job has a cobertura artifact1114 returns the job1115 when job has a terraform artifact1116 returns the job1117 when job has a accessibility artifact1118 returns the job1119 when job has a cluster_applications artifact1120 returns the job1121 when job has a secret_detection artifact1122 returns the job1123 when job has a requirements artifact1124 returns the job1125 when job has a coverage_fuzzing artifact1126 returns the job1127 when job has a browser_performance artifact1128 returns the job1129 when job has a load_performance artifact1130 returns the job1131 when job has a api_fuzzing artifact1132 returns the job1133 when job has a cluster_image_scanning artifact1134 returns the job1135 when job has a cyclonedx artifact1136 returns the job1137 when job has a requirements_v2 artifact1138 returns the job1139 when job has a non-erasable artifact1140 does not return the job1141 .with_any_artifacts1142 when job does not have any artifacts1143 does not return the job1144 when job has a archive artifact1145 returns the job1146 when job has a metadata artifact1147 returns the job1148 when job has a trace artifact1149 returns the job1150 when job has a junit artifact1151 returns the job1152 when job has a sast artifact1153 returns the job1154 when job has a dependency_scanning artifact1155 returns the job1156 when job has a container_scanning artifact1157 returns the job1158 when job has a dast artifact1159 returns the job1160 when job has a codequality artifact1161 returns the job1162 when job has a license_scanning artifact1163 returns the job1164 when job has a performance artifact1165 returns the job1166 when job has a metrics artifact1167 returns the job1168 when job has a metrics_referee artifact1169 returns the job1170 when job has a network_referee artifact1171 returns the job1172 when job has a lsif artifact1173 returns the job1174 when job has a dotenv artifact1175 returns the job1176 when job has a cobertura artifact1177 returns the job1178 when job has a terraform artifact1179 returns the job1180 when job has a accessibility artifact1181 returns the job1182 when job has a cluster_applications artifact1183 returns the job1184 when job has a secret_detection artifact1185 returns the job1186 when job has a requirements artifact1187 returns the job1188 when job has a coverage_fuzzing artifact1189 returns the job1190 when job has a browser_performance artifact1191 returns the job1192 when job has a load_performance artifact1193 returns the job1194 when job has a api_fuzzing artifact1195 returns the job1196 when job has a cluster_image_scanning artifact1197 returns the job1198 when job has a cyclonedx artifact1199 returns the job1200 when job has a requirements_v2 artifact1201 returns the job1202 .with_live_trace1203 when build has live trace1204 selects the build1205 when build does not have live trace1206 does not select the build1207 .with_stale_live_trace1208 when build has a stale live trace1209 selects the build1210 when build does not have a stale live trace1211 does not select the build1212 .license_management_jobs1213 returns license_scanning jobs1214 returns license_management jobs1215 doesnt return filtered out jobs1216 .finished_before1217 when build has finished one day ago1218 selects the build1219 when build has finished 30 minutes ago1220 returns an empty array1221 when build is still running1222 returns an empty array1223 .with_exposed_artifacts1224 when some jobs have exposed artifacs and some not1225 selects only the jobs with exposed artifacts1226 when job does not expose artifacts1227 returns an empty array1228 .with_artifacts1229 returns artifacts matching the given scope1230 when there are multiple builds containing artifacts1231 does not execute a query for selecting job artifact one by one1232 .with_needs1233 when passing build name1234 is expected to contain exactly #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 488, stage_id: 271, partition_id: 100, tag_list: nil>1235 when not passing any build name1236 is expected to contain exactly #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 490, stage_id: 271, partition_id: 100, tag_list: nil> and #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 491, stage_id: 271, partition_id: 100, tag_list: nil>1237 when not matching build name1238 is expected to be empty1239 .without_needs1240 when no build_need is created1241 is expected to contain exactly #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 351, stage_id: 271, partition_id: 100, tag_list: nil>1242 when a build_need is created1243 is expected to be empty1244 #stick_build_if_status_changed1245 sticks the build if the status changed1246 #enqueue1247 build has unmet prerequisites1248 transitions to preparing1249 does not push build to the queue1250 build has no prerequisites1251 transitions to pending1252 pushes build to a queue1253 when build status transition fails1254 does not push build to a queue1255 when there is a queuing entry already present1256 does not raise an error1257 when both failure scenario happen at the same time1258 raises stale object error exception1259 #enqueue_preparing1260 build completed prerequisites1261 transitions to pending1262 build did not complete prerequisites1263 remains in preparing1264 #actionize1265 when build is a created1266 makes build a manual action1267 when build is not created1268 does not change build status1269 #run1270 when build has been just created1271 creates queuing entry and then removes it1272 when build status transition fails1273 does not remove build from a queue1274 when build has been picked by a shared runner1275 creates runtime metadata entry1276 #drop1277 when has a runtime tracking entry1278 removes runtime tracking entry1279 when a failure reason is provided1280 when a failure reason is a symbol1281 correctly sets a failure reason1282 when a failure reason is an object1283 correctly sets a failure reason1284 #outdated_deployment?1285 when build has no environment1286 is expected to be falsey1287 when project has forward deployment disabled1288 is expected to be falsey1289 when build is not an outdated deployment1290 is expected to be falsey1291 when build is older than the latest deployment and still pending status1292 is expected to be truthy1293 when build is older than the latest deployment but succeeded once1294 returns false for allowing rollback1295 #schedulable?1296 when build is schedulable1297 is expected to be truthy1298 when build is not schedulable1299 is expected to be falsy1300 #schedule1301 transits to scheduled1302 updates scheduled_at column1303 schedules BuildScheduleWorker at the right time1304 #unschedule1305 when build is scheduled1306 cleans scheduled_at column1307 transits to manual1308 when build is not scheduled1309 does not transit status1310 #options_scheduled_at1311 when start_in is 1 day1312 returns date after 1 day1313 when start_in is 1 week1314 returns date after 1 week1315 #enqueue_scheduled1316 when build is scheduled and the right time has not come yet1317 does not transits the status1318 when build is scheduled and the right time has already come1319 cleans scheduled_at column1320 transits to pending1321 build has unmet prerequisites1322 transits to preparing1323 #any_runners_online?1324 caches the result in Redis1325 when no runners1326 is expected to be falsey1327 when there is a runner1328 is expected to be truthy1329 that is inactive1330 is expected to be falsey1331 that is not online1332 is expected to be falsey1333 that cannot handle build1334 is expected to be falsey1335 #any_runners_available?1336 caches the result in Redis1337 when no runners1338 is expected to be falsey1339 when there are runners1340 is expected to be truthy1341 #artifacts?1342 when new artifacts are used1343 artifacts archive does not exist1344 is expected to be falsy1345 artifacts archive exists1346 is expected to be truthy1347 is expired1348 is expected to be falsy1349 #locked_artifacts?1350 when pipeline is artifacts_locked1351 artifacts archive does not exist1352 is expected to be falsy1353 artifacts archive exists1354 is expected to be truthy1355 when pipeline is unlocked1356 artifacts archive does not exist1357 is expected to be falsy1358 artifacts archive exists1359 is expected to be falsy1360 #available_artifacts?1361 when artifacts are not expired1362 when artifacts exist1363 is expected to be truthy1364 when artifacts do not exist1365 is expected to be falsey1366 when artifacts are expired1367 when artifacts are not locked1368 is expected to be falsey1369 when artifacts are locked1370 when artifacts exist1371 is expected to be truthy1372 when artifacts do not exist1373 is expected to be falsey1374 #browsable_artifacts?1375 artifacts metadata does exists1376 is expected to be truthy1377 #artifacts_public?1378 artifacts with defaults1379 is expected to be truthy1380 non public artifacts1381 is expected to be falsey1382 #artifacts_expired?1383 is expired1384 is expected to be truthy1385 is not expired1386 is expected to be falsey1387 #artifacts_metadata?1388 artifacts metadata does not exist1389 is expected to be falsy1390 artifacts archive is a zip file and metadata exists1391 is expected to be truthy1392 #artifacts_expire_in1393 is expected to be nil1394 when artifacts_expire_at is specified1395 is expected to be within 5 of 604799.999597331396 #artifacts_expire_in=1397 when assigning valid duration1398 when assigning invalid duration1399 when resetting value1400 when setting to 01401 #commit1402 returns commit pipeline has been created for1403 #cache1404 when build has cache1405 when build has multiple caches1406 is expected to match [(a hash including {:key => "key-1-non_protected"}), (a hash including {:key => "key2-1-non_protected"})]1407 when pipeline is on a protected ref1408 without the `unprotect` option1409 is expected to all a hash including {:key => (a string matching /-protected$/)}1410 and the caches have fallback keys1411 is expected to all a hash including {:key => (a string matching /-protected$/), :fallback_keys => #<RSpec::Mocks::Argume...otected$/, @expected_captures=nil, @actual="key5-1-protected", @matcher_name=:a_string_matching>>]>}1412 and the cache has the `unprotect` option1413 is expected to all a hash including {:key => (a string matching /-non_protected$/)}1414 and the caches have fallback keys1415 is expected to all a hash including {:key => (a string matching /-non_protected$/), :fallback_keys => #<RSpec::Mocks::Ar...ted$/, @expected_captures=nil, @actual="key5-1-non_protected", @matcher_name=:a_string_matching>>]>}1416 when pipeline is not on a protected ref1417 is expected to all a hash including {:key => (a string matching /-non_protected$/)}1418 and the caches have fallback keys1419 is expected to all a hash including {:key => (a string matching /-non_protected$/), :fallback_keys => #<RSpec::Mocks::Ar...ted$/, @expected_captures=nil, @actual="key5-1-non_protected", @matcher_name=:a_string_matching>>]>}1420 when separated caches are disabled1421 running on protected ref1422 is expected to have no type suffix1423 and the caches have fallback keys1424 is expected to match [(a hash including {:key => "key-1", :fallback_keys => ["key3-1", "key4-1"]}), (a hash including {:key => "key2-1", :fallback_keys => ["key5-1", "key6-1"]})]1425 running on not protected ref1426 is expected to have no type suffix1427 and the caches have fallback keys1428 is expected to match [(a hash including {:key => "key-1", :fallback_keys => ["key3-1", "key4-1"]}), (a hash including {:key => "key2-1", :fallback_keys => ["key5-1", "key6-1"]})]1429 when project has jobs_cache_index1430 is expected to be a kind of Array and all include {:key => (a string matching /^key-1-(?>protected|non_protected)/)}1431 and the cache have fallback keys1432 is expected to be a kind of Array and all include {:key => (a string matching /^key-1-(?>protected|non_protected)/), :fallback_keys => #<RSpec:...ted)/, @expected_captures=nil, @actual="key1-1-non_protected", @matcher_name=:a_string_matching>>]>}1433 when project does not have jobs_cache_index1434 is expected to eq [{:fallback_keys=>[], :key=>"key-non_protected", :paths=>["public"], :policy=>"pull-push"}]1435 and the cache have fallback keys1436 is expected to eq [{:fallback_keys=>["key1-non_protected", "key2-non_protected"], :key=>"key-non_protected", :paths=>["public"], :policy=>"pull-push"}]1437 when build does not have cache1438 is expected to be empty1439 #fallback_cache_keys_defined?1440 returns false when fallback keys are not defined1441 with fallbacks keys1442 returns true when fallback keys are defined1443 #triggered_by?1444 when user is owner1445 is expected to be truthy1446 when user is not owner1447 is expected to be falsy1448 #detailed_status1449 returns a detailed status1450 #update_coverage1451 regarding coverage_regex's value,1452 saves the correct extracted coverage value1453 #trace1454 is expected to be a kind of Gitlab::Ci::Trace1455 #has_trace?1456 expect to call exist? method1457 #has_live_trace?1458 is expected to be truthy1459 when build does not have live trace1460 is expected to be falsy1461 #has_archived_trace?1462 is expected to be truthy1463 when build does not have archived trace1464 is expected to be falsy1465 #has_job_artifacts?1466 when build has a job artifact1467 is expected to be truthy1468 #has_test_reports?1469 when build has a test report1470 is expected to be truthy1471 when build does not have a test report1472 is expected to be falsey1473 #hide_secrets1474 hide runners token1475 is expected to match /^new x+ data$/1476 increments trace mutation metric1477 hide build token1478 is expected to match /^new x+ data$/1479 increments trace mutation metric1480 when build does not include secrets1481 does not mutate trace1482 does not increment trace mutation metric1483 state transition metrics1484 state: :success!, report_count: 1, trait: :sast1485 when transitioning to success!1486 increments build_completed_report_type metric1487 state: :cancel!, report_count: 1, trait: :sast1488 when transitioning to cancel!1489 increments build_completed_report_type metric1490 state: :drop!, report_count: 2, trait: :multiple_report_artifacts1491 when transitioning to drop!1492 increments build_completed_report_type metric1493 state: :success!, report_count: 0, trait: :allowed_to_fail1494 when transitioning to success!1495 increments build_completed_report_type metric1496 state: :skip!, report_count: 0, trait: :pending1497 when transitioning to skip!1498 increments build_completed_report_type metric1499 state transition as a deployable1500 has deployments record with created status1501 when transits to running1502 transits deployment status to running1503 behaves like avoid deadlock1504 executes UPDATE in the right order1505 when deployment is already running state1506 does not change deployment status and tracks an error1507 when transits to success1508 transits deployment status to success1509 behaves like avoid deadlock1510 executes UPDATE in the right order1511 behaves like calling proper BuildFinishedWorker1512 calls Ci::BuildFinishedWorker1513 when transits to failed1514 transits deployment status to failed1515 behaves like avoid deadlock1516 executes UPDATE in the right order1517 behaves like calling proper BuildFinishedWorker1518 calls Ci::BuildFinishedWorker1519 when transits to skipped1520 transits deployment status to skipped1521 behaves like avoid deadlock1522 executes UPDATE in the right order1523 when transits to canceled1524 transits deployment status to canceled1525 behaves like avoid deadlock1526 executes UPDATE in the right order1527 behaves like calling proper BuildFinishedWorker1528 calls Ci::BuildFinishedWorker1529 when transits from skipped to created to running1530 during skipped to created1531 transitions to created1532 during created to running1533 transitions to running and calls webhook1534 #on_stop1535 when a job has a specification that it can be stopped from the other job1536 returns the other job name1537 when a job does not have environment information1538 returns nil1539 #environment_tier_from_options1540 is expected to eq "production"1541 when options does not include deployment_tier1542 is expected to be nil1543 #environment_tier1544 is expected to eq "production"1545 when options does not include deployment_tier1546 uses tier from environment1547 when persisted environment is absent1548 is expected to be nil1549 environment1550 #has_environment_keyword?1551 when environment is defined1552 is expected to be truthy1553 when environment is not defined1554 is expected to be falsey1555 #expanded_environment_name1556 when environment uses $CI_COMMIT_REF_NAME1557 is expected to eq "review/master"1558 when environment uses yaml_variables containing symbol keys1559 returns an expanded environment name with a list of variables1560 when build metadata has already persisted the expanded environment name1561 returns a persisted expanded environment name without a list of variables1562 when using persisted variables1563 is expected to eq "review/x"1564 when environment name uses a nested variable1565 is expected to eq "review/master"1566 #expanded_kubernetes_namespace1567 environment and namespace are not set1568 is expected to be nil1569 environment is specified1570 namespace is not set1571 is expected to be nil1572 namespace is provided1573 with a static value1574 is expected to eq "production"1575 with a dynamic value1576 is expected to eq "deploy-master"1577 #deployment_job?1578 when environment is defined1579 no action is defined1580 is expected to be truthy1581 and start action is defined1582 is expected to be truthy1583 when environment is not defined1584 is expected to be falsey1585 #stops_environment?1586 when environment is defined1587 no action is defined1588 is expected to be falsey1589 and stop action is defined1590 is expected to be truthy1591 when environment is not defined1592 is expected to be falsey1593 erasable build1594 build is not erasable1595 #erasable?1596 is expected to eq false1597 build is erasable1598 new artifacts1599 #erasable?1600 is expected to be truthy1601 #erased?1602 job has not been erased1603 is expected to be falsey1604 job has been erased1605 is expected to be truthy1606 flags1607 #cancelable?1608 when build is cancelable1609 when build is pending1610 is expected to be cancelable1611 when build is running1612 is expected to be cancelable1613 when build is created1614 is expected to be cancelable1615 when build is waiting for resource1616 is expected to be cancelable1617 when build is not cancelable1618 when build is successful1619 is expected not to be cancelable1620 when build is failed1621 is expected not to be cancelable1622 #action?1623 when is set to manual1624 is expected to be truthy1625 when is set to delayed1626 is expected to be truthy1627 when set to something else1628 is expected to be falsey1629 #runner_manager1630 is expected to eq #<Ci::RunnerManager id: 1, runner_id: 8, executor_type: nil, created_at: "2023-06-02 06:30:51.6612466...ion: nil, platform: nil, architecture: nil, ip_address: nil, config: {}, system_xid: "r_e177d684c1">1631 #tag_list1632 when tags are preloaded1633 does not trigger queries1634 when tags are not preloaded1635 is expected to eq ["tag"]1636 #save_tags1637 saves tags1638 strips tags1639 with BulkInsertableTags.with_bulk_insert_tags1640 does not save_tags1641 #has_tags?1642 when build has tags1643 is expected to have tags1644 when build does not have tags1645 is expected not to have tags1646 build auto retry feature1647 with deployment job1648 creates a deployment when a build is dropped1649 #retries_count1650 when build has been retried several times1651 reports a correct retry count value1652 when build has not been retried1653 returns zero1654 .keep_artifacts!1655 resets expire_at1656 does not reset expire_at for other builds1657 when having artifacts files1658 resets dependent objects1659 does not reset dependent object for other builds1660 #keep_artifacts!1661 to reset expire_at1662 when having artifacts files1663 to reset dependent objects1664 #auto_retry_expected?1665 when build is failed and auto retry is configured1666 expects auto-retry to happen1667 when build failed by auto retry is not configured1668 does not expect auto-retry to happen1669 #artifact_for_type1670 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "archive", size: 107464, created_at: "2023-06-02 06:30:5...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>1671 #merge_request1672 on a branch pipeline1673 with no merge request1674 is expected to be nil1675 with an open merge request from the same ref name1676 without a merge request diff containing the pipeline commit1677 is expected to be nil1678 with a merge request diff containing the pipeline commit1679 is expected to eq #<MergeRequest id:3 group1/project-42!2>1680 with multiple open merge requests1681 returns the first merge request1682 on a detached merged request pipeline1683 is expected to eq #<MergeRequest id:1 group1/project-42!1>1684 on a legacy detached merged request pipeline1685 is expected to eq #<MergeRequest id:1 group1/project-42!1>1686 on a pipeline for merged results1687 is expected to eq #<MergeRequest id:1 group1/project-42!1>1688 #options1689 contains options1690 allows to access with symbolized keys1691 rejects access with string keys1692 persist data in build metadata1693 does not persist data in build1694 when options include artifacts:expose_as1695 saves the presence of expose_as into build metadata1696 #other_manual_actions1697 returns other actions1698 when build is retried1699 does not return any of them1700 #other_scheduled_actions1701 when other build's status is success1702 returns other actions1703 when other build's status is failed1704 returns other actions1705 when other build's status is running1706 does not return other actions1707 when other build's status is scheduled1708 does not return other actions1709 #persisted_environment1710 when referenced literally1711 is expected to eq #<Environment id: 25, project_id: 42, name: "foo-master", created_at: "2023-06-02 06:30:59.299160578 ...auto_stop_at: nil, auto_delete_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil>1712 when referenced with a variable1713 is expected to eq #<Environment id: 26, project_id: 42, name: "foo-master", created_at: "2023-06-02 06:30:59.403239388 ...auto_stop_at: nil, auto_delete_at: nil, tier: "other", merge_request_id: nil, cluster_agent_id: nil>1714 when there is no environment1715 is expected to be nil1716 when build has a stop environment1717 expands environment name1718 #play1719 enqueues the build1720 #playable?1721 when build is a manual action1722 when build has been skipped1723 is expected not to be playable1724 when build has been canceled1725 is expected to be playable1726 when build is successful1727 is expected to be playable1728 when build has failed1729 is expected to be playable1730 when build is a manual untriggered action1731 is expected to be playable1732 when build is a manual and degenerated1733 is expected not to be playable1734 when build is scheduled1735 is expected to be playable1736 when build is not a manual action1737 is expected not to be playable1738 project settings1739 #allow_git_fetch1740 return project allow_git_fetch configuration1741 #project1742 is expected to eq #<Project id:42 group1/project-42>>1743 #project_id1744 is expected to eq 421745 #project_name1746 is expected to eq "Project-42 Name"1747 #ref_slug1748 ref: "master", slug: "master"1749 transforms ref to slug1750 ref: "1-foo", slug: "1-foo"1751 transforms ref to slug1752 ref: "fix/1-foo", slug: "fix-1-foo"1753 transforms ref to slug1754 ref: "fix-1-foo", slug: "fix-1-foo"1755 transforms ref to slug1756 ref: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", slug: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"1757 transforms ref to slug1758 ref: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", slug: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"1759 transforms ref to slug1760 ref: "FOO", slug: "foo"1761 transforms ref to slug1762 ref: "-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-", slug: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"1763 transforms ref to slug1764 ref: "-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-", slug: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"1765 transforms ref to slug1766 ref: "-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-", slug: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"1767 transforms ref to slug1768 ref: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ", slug: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"1769 transforms ref to slug1770 #repo_url1771 when token is set1772 is expected to be a kind of String1773 is expected to end with ".git"1774 is expected to start with "http://"1775 is expected to include "64_otFuzXFd5rR9-tQAeo1n"1776 is expected to include "gitlab-ci-token"1777 is expected to include "localhost/group1/project-42"1778 when token is empty1779 is expected to be nil1780 #stuck?1781 when commit_status.status is pending1782 is expected to be truthy1783 and there is a project runner1784 is expected to be falsey1785 when commit_status.status is success1786 is expected to be falsey1787 when commit_status.status is failed1788 is expected to be falsey1789 when commit_status.status is canceled1790 is expected to be falsey1791 when commit_status.status is running1792 is expected to be falsey1793 #has_expired_locked_archive_artifacts?1794 when build does not have artifacts1795 is expected to eq nil1796 when build has artifacts1797 when artifacts are unlocked1798 is expected to eq false1799 when artifacts are locked1800 when artifacts do not expire1801 is expected to eq false1802 when artifacts expire in the future1803 is expected to eq false1804 when artifacts expired in the past1805 is expected to eq true1806 #has_expiring_archive_artifacts?1807 when artifacts have expiration date set1808 and job artifacts archive record exists1809 has expiring artifacts1810 and job artifacts archive record does not exist1811 does not have expiring artifacts1812 when artifacts do not have expiration date set1813 does not have expiring artifacts1814 #variables1815 returns variables1816 is expected to be an instance of Gitlab::Ci::Variables::Collection1817 is expected to eq [{:key=>"CI_PIPELINE_ID", :masked=>false, :public=>true, :value=>"99"}, {:key=>"CI_PIPELINE_URL", :ma...y=>"CI_COMMIT_AUTHOR", :masked=>false, :public=>true, :value=>"Job van der Voort <job@gitlab.com>"}]1818 excludes variables that require an environment or user1819 when CI_JOB_JWT generation fails1820 CI_JOB_JWT is not included1821 CI_JOB_JWT is not included1822 variables ordering1823 when variables hierarchy is stubbed1824 returns variables in order depending on resource hierarchy1825 when build has environment and user-provided variables1826 matches explicit variables ordering1827 CI_ENVIRONMENT_ACTION1828 behaves like defaults value1829 value matches start1830 when options is set1831 when options is empty1832 behaves like defaults value1833 value matches start1834 when options is nil1835 behaves like defaults value1836 value matches start1837 when options environment is specified1838 behaves like defaults value1839 value matches start1840 when options environment action specified1841 matches the specified action1842 when the build has ID tokens1843 includes the tokens and excludes the predefined JWT variables1844 when build has user1845 is expected to include {:key => "GITLAB_USER_NAME", :value => "Sidney Jones43", :public => true, :masked => false}1846 when build belongs to a pipeline for merge request1847 returns values based on source ref1848 when build has an environment1849 when no URL was set1850 does not have CI_ENVIRONMENT_URL1851 behaves like containing environment variables1852 is expected to include {:key => "CI_ENVIRONMENT_TIER", :value => "production", :public => true, :masked => false}1853 when an URL was set1854 when the URL was set from the job1855 behaves like containing environment variables1856 is expected to include {:key => "CI_ENVIRONMENT_URL", :value => "http://host/test", :public => true, :masked => false}1857 when variables are used in the URL, it does not expand1858 puts $CI_ENVIRONMENT_URL in the last so all other variables are available to be used when runners are trying to expand it1859 behaves like containing environment variables1860 is expected to include {:key => "CI_ENVIRONMENT_URL", :value => "http://$CI_PROJECT_NAME-$CI_ENVIRONMENT_SLUG", :public => true, :masked => false}1861 when the URL was not set from the job, but environment1862 behaves like containing environment variables1863 is expected to include {:key => "CI_ENVIRONMENT_URL", :value => "http://host/test", :public => true, :masked => false}1864 when environment_tier is updated in options1865 uses tier from options1866 when project has an environment specific variable1867 behaves like containing environment variables1868 is expected to include {:key => "CI_ENVIRONMENT_TIER", :value => "production", :public => true, :masked => false}1869 when environment scope does not match build environment1870 is expected not to include {:key => "MY_STAGING_ONLY_VARIABLE", :value => "environment_specific_variable", :public => false, :masked => false}1871 when environment scope matches build environment1872 is expected to include {:key => "MY_STAGING_ONLY_VARIABLE", :value => "environment_specific_variable", :public => false, :masked => false}1873 when build started manually1874 is expected to include {:key => "CI_JOB_MANUAL", :value => "true", :public => true, :masked => false}1875 when job variable is defined1876 is expected to include {:key => "first", :value => "first", :public => false, :masked => false}1877 when build is for branch1878 is expected to include {:key => "CI_COMMIT_BRANCH", :value => "master", :public => true, :masked => false}1879 when build is for tag1880 is expected to include {:key => "CI_COMMIT_TAG_MESSAGE", :value => "Release", :public => true, :masked => false}1881 when CI variable is defined1882 is expected to include {:key => "SECRET_KEY", :value => "secret_value", :public => false, :masked => false}1883 when protected variable is defined1884 when the branch is protected1885 is expected to include {:key => "PROTECTED_KEY", :value => "protected_value", :public => false, :masked => false}1886 when the tag is protected1887 is expected to include {:key => "PROTECTED_KEY", :value => "protected_value", :public => false, :masked => false}1888 when the ref is not protected1889 is expected not to include {:key => "PROTECTED_KEY", :value => "protected_value", :public => false, :masked => false}1890 when group CI variable is defined1891 is expected to include {:key => "SECRET_KEY", :value => "secret_value", :public => false, :masked => false}1892 when group protected variable is defined1893 when the branch is protected1894 is expected to include {:key => "PROTECTED_KEY", :value => "protected_value", :public => false, :masked => false}1895 when the tag is protected1896 is expected to include {:key => "PROTECTED_KEY", :value => "protected_value", :public => false, :masked => false}1897 when the ref is not protected1898 is expected not to include {:key => "PROTECTED_KEY", :value => "protected_value", :public => false, :masked => false}1899 when build is for triggers1900 is expected to include {:key => "CI_PIPELINE_TRIGGERED", :value => "true", :public => true, :masked => false}1901 when pipeline has a variable1902 is expected to include {:key => "VARIABLE_1", :value => "VARIABLE_VALUE", :public => false, :masked => false}1903 when a job was triggered by a pipeline schedule1904 is expected to include {:key => "SCHEDULE_VARIABLE_KEY", :value => "VARIABLE_VALUE", :public => false, :masked => false}1905 when container registry is enabled1906 and is disabled for project1907 is expected to include {:key => "CI_REGISTRY", :value => "registry.example.com", :public => true, :masked => false}1908 is expected not to include {:key => "CI_REGISTRY_IMAGE", :value => "registry.example.com/group1/project-43", :public => true, :masked => false}1909 and is enabled for project1910 is expected to include {:key => "CI_REGISTRY", :value => "registry.example.com", :public => true, :masked => false}1911 is expected to include {:key => "CI_REGISTRY_IMAGE", :value => "registry.example.com/group1/project-43", :public => true, :masked => false}1912 and is private for project1913 is expected to include {:key => "CI_REGISTRY", :value => "registry.example.com", :public => true, :masked => false}1914 is expected to include {:key => "CI_REGISTRY_IMAGE", :value => "registry.example.com/group1/project-43", :public => true, :masked => false}1915 when runner is assigned to build1916 is expected to include {:key => "CI_RUNNER_ID", :value => "10", :public => true, :masked => false}1917 is expected to include {:key => "CI_RUNNER_DESCRIPTION", :value => "description", :public => true, :masked => false}1918 is expected to include {:key => "CI_RUNNER_TAGS", :value => "docker, linux", :public => true, :masked => false}1919 when build is for a deployment1920 is expected to include {:key => "KUBERNETES_TOKEN", :value => "TOKEN", :public => false, :masked => false}1921 when project has default CI config path1922 is expected to include {:key => "CI_CONFIG_PATH", :value => ".gitlab-ci.yml", :public => true, :masked => false}1923 when project has custom CI config path1924 is expected to include {:key => "CI_CONFIG_PATH", :value => "custom", :public => true, :masked => false}1925 when pipeline variable overrides build variable1926 overrides YAML variable using a pipeline variable1927 when build is parallelized1928 when parallel is a number1929 behaves like parallelized jobs config1930 includes CI_NODE_INDEX1931 includes correct CI_NODE_TOTAL1932 when parallel is hash with the total key1933 behaves like parallelized jobs config1934 includes CI_NODE_INDEX1935 includes correct CI_NODE_TOTAL1936 when parallel is nil1937 behaves like parallelized jobs config1938 includes CI_NODE_INDEX1939 includes correct CI_NODE_TOTAL1940 when build has not been persisted yet1941 returns static predefined variables1942 for deploy tokens1943 when gitlab-deploy-token exists for project1944 includes deploy token variables1945 when gitlab-deploy-token does not exist for project1946 does not include deploy token variables1947 when gitlab-deploy-token exists for group1948 includes deploy token variables1949 for harbor integration1950 when harbor_integration exists1951 includes harbor variables1952 when harbor_integration does not exist1953 does not include harbor variables1954 for the apple_app_store integration1955 when an Apple App Store integration exists1956 when app_store_protected_refs is true1957 when a build is protected1958 is expected to include {:key => "APP_STORE_CONNECT_API_KEY_IS_KEY_CONTENT_BASE64", :value => "true", :masked => false, :public => false}1959 when a build is not protected1960 is expected to be nil1961 when app_store_protected_refs is false1962 when a build is protected1963 is expected to include {:key => "APP_STORE_CONNECT_API_KEY_IS_KEY_CONTENT_BASE64", :value => "true", :masked => false, :public => false}1964 when a build is not protected1965 is expected to include {:key => "APP_STORE_CONNECT_API_KEY_IS_KEY_CONTENT_BASE64", :value => "true", :masked => false, :public => false}1966 when an Apple App Store integration does not exist1967 when a build is protected1968 is expected to be nil1969 when a build is not protected1970 is expected to be nil1971 for the google_play integration1972 when the google_play integration exists1973 when a build is protected1974 includes google_play variables1975 when a build is not protected1976 does not include the google_play variable1977 when the googel_play integration does not exist1978 does not include google_play variable1979 when build has dependency which has dotenv variable1980 is expected to include {:key => "VARIABLE_1", :value => "VARIABLE_VALUE", :public => false, :masked => false}1981 when ID tokens are defined on the build1982 includes the ID token variables1983 when a NoSigningKeyError is raised1984 does not include the ID token variables1985 when a RSAError is raised1986 does not include the ID token variables1987 #scoped_variables1988 records a prometheus metric1989 delegates to the variable builders1990 behaves like calculates scoped_variables1991 when build has not been persisted yet1992 does not persist the build1993 returns static predefined variables1994 does not return prohibited variables1995 with dependency variables1996 inherits dependent variables1997 #simple_variables_without_dependencies1998 does not load dependencies1999 #any_unmet_prerequisites?2000 build has prerequisites2001 is expected to be truthy2002 build does not have prerequisites2003 is expected to be falsey2004 #yaml_variables2005 persist data in build metadata2006 does not persist data in build2007 behaves like having consistent representation2008 allows to access using symbols2009 #dependency_variables2010 when using dependencies2011 inherits only dependent variables2012 when using needs2013 inherits only needs with artifacts variables2014 state transition: any => [:preparing]2015 queues BuildPrepareWorker2016 state transition: any => [:pending]2017 queues BuildQueueWorker2018 executes hooks2019 assigns the token2020 state transition: pending: :running2021 for pipeline ref existence2022 ensures pipeline ref creation2023 ensures that it is not run in database transaction2024 when runner timeout overrides project timeout2025 behaves like saves data on transition2026 saves timeout2027 saves timeout_source2028 when Ci::BuildMetadata#update_timeout_state fails update2029 doesn't save timeout2030 doesn't save timeout_source2031 when runner timeout doesn't override project timeout2032 behaves like saves data on transition2033 saves timeout2034 saves timeout_source2035 when Ci::BuildMetadata#update_timeout_state fails update2036 doesn't save timeout2037 doesn't save timeout_source2038 #has_valid_build_dependencies?2039 when "dependencies" keyword is not defined2040 is expected to have valid build dependencies2041 when "dependencies" keyword is empty2042 is expected to have valid build dependencies2043 when "dependencies" keyword is specified2044 behaves like validation is active2045 when depended job has not been completed yet2046 is expected to have valid build dependencies2047 when artifacts of depended job has been expired2048 when pipeline is not locked2049 is expected not to have valid build dependencies2050 when pipeline is locked2051 is expected to have valid build dependencies2052 when artifacts of depended job has been erased2053 is expected not to have valid build dependencies2054 state transition when build fails2055 when build is configured to be retried2056 retries build and assigns the same user to it2057 does not try to create a todo2058 when retry service raises Gitlab::Access::AccessDeniedError exception2059 handles raised exception2060 logs the error2061 fails the job2062 when build is not configured to be retried2063 does not retry build2064 does not count retries when not necessary2065 creates a todo async2066 when associated deployment failed to update its status2067 can drop the build2068 .matches_tag_ids2069 when have different tags2070 does not match a build2071 when have a subset of tags2072 does match a build2073 when build does not have tags2074 does match a build2075 when does not have a subset of tags2076 does not match a build2077 .matches_tags2078 when does have tags2079 does match a build2080 when does not have tags2081 does not match a build2082 pages deployments2083 when job is "pages"2084 when pages are enabled2085 is marked as pages generator2086 job succeeds2087 calls pages worker2088 job fails2089 does not call pages worker2090 when pages are disabled2091 is not marked as pages generator2092 job succeeds2093 does not call pages worker2094 when job is not "pages"2095 is not marked as pages generator2096 job succeeds2097 does not call pages worker2098 #has_terminal?2099 returns true if the build is running and it has a runner_session_url2100 returns false2101 when runner_session_url is empty2102 unless the build is running2103 is expected to be falsey2104 #collect_test_reports!2105 is expected to eq 02106 when build has a test report2107 when there is a JUnit test report from rspec test suite2108 parses blobs and add the results to the test suite2109 when there is a JUnit test report from java ant test suite2110 parses blobs and add the results to the test suite2111 when there is a corrupted JUnit test report2112 returns no test data and includes a suite_error message2113 #collect_accessibility_reports!2114 is expected to eq {}2115 when build has an accessibility report2116 when there is an accessibility report with errors2117 parses blobs and add the results to the accessibility report2118 when there is an accessibility report without errors2119 parses blobs and add the results to the accessibility report2120 when there is an accessibility report with an invalid url2121 parses blobs and add the results to the accessibility report2122 #collect_codequality_reports!2123 is expected to eq {}2124 when build has a codequality report2125 when there is a codequality report2126 parses blobs and add the results to the codequality report2127 when there is an codequality report without errors2128 parses blobs and add the results to the codequality report2129 #collect_terraform_reports!2130 returns an empty hash2131 when build has a terraform report2132 when there is a valid tfplan.json2133 parses blobs and add the results to the terraform report2134 when there is an invalid tfplan.json2135 adds invalid plan report2136 #each_report2137 yields job artifact blob that matches the type2138 #report_artifacts2139 when the build has reports2140 returns the artifacts with reports2141 #artifacts_metadata_entry2142 when using local storage2143 for existing file2144 does exist2145 for non-existing file2146 does not exist2147 when using remote storage2148 for existing file2149 does exist2150 for non-existing file2151 does not exist2152 #publishes_artifacts_reports?2153 when artifacts reports are defined2154 is expected to be truthy2155 when artifacts reports missing defined2156 is expected to be falsey2157 when options are missing2158 is expected to be falsey2159 #runner_required_feature_names2160 when artifacts reports are defined2161 is expected to include :upload_multiple_artifacts2162 when artifacts exclude is defined2163 is expected to include :artifacts_exclude2164 #supported_runner?2165 when `upload_multiple_artifacts` feature is required by build2166 when runner provides given feature2167 is expected to be truthy2168 when runner does not provide given feature2169 is expected to be falsey2170 when `refspecs` feature is required by build2171 when runner provides given feature2172 is expected to be truthy2173 when runner does not provide given feature2174 is expected to be falsey2175 when `multi_build_steps` feature is required by build2176 when runner provides given feature2177 is expected to be truthy2178 when runner does not provide given feature2179 is expected to be falsey2180 when `return_exit_code` feature is required by build2181 when runner provides given feature2182 is expected to be truthy2183 when runner does not provide given feature2184 is expected to be falsey2185 when the runner does not provide all of the required features2186 requires `upload_multiple_artifacts` too2187 #deployment_status2188 when build is a last deployment2189 is expected to eq :last2190 when there is a newer build with deployment2191 is expected to eq :out_of_date2192 when build with deployment has failed2193 is expected to eq :failed2194 when build with deployment is running2195 is expected to eq :creating2196 #degenerated?2197 when build is degenerated2198 is expected to be degenerated2199 when build is valid2200 is expected not to be degenerated2201 and becomes degenerated2202 is expected to be degenerated2203 degenerate!2204 drops metadata2205 #archived?2206 when build is degenerated2207 is expected to be archived2208 for old build2209 when archive_builds_in is set2210 is expected to be archived2211 when archive_builds_in is not set2212 is expected not to be archived2213 #read_metadata_attribute2214 when build and metadata options is set2215 prefers build options2216 when only metadata options is set2217 returns metadata options2218 when none is set2219 returns default value2220 #write_metadata_attribute2221 when data in build is already set2222 does set metadata options2223 does reset build options2224 #invalid_dependencies2225 when pipeline is locked2226 returns invalid dependencies when expired2227 when pipeline is not locked2228 returns no invalid dependencies when expired2229 #execute_hooks2230 with project hooks2231 calls project.execute_hooks(build_data, :job_hooks)2232 with blocked users2233 does not call project.execute_hooks2234 without project hooks2235 does not call project.execute_hooks2236 with project services2237 executes services2238 without relevant project services2239 does not execute services2240 #environment_auto_stop_in2241 when build option has environment auto_stop_in2242 is expected to eq "1 day"2243 when build option does not have environment auto_stop_in2244 is expected to be nil2245 #degradation_threshold2246 when threshold variable is defined2247 is expected to eq 52248 when threshold variable is not defined2249 is expected to be nil2250 #run_on_status_commit2251 runs provided hook after status commit2252 does not run hooks when status has not changed2253 #debug_mode?2254 when CI_DEBUG_TRACE=true is in variables2255 reflects instance variables2256 reflects group variables2257 reflects pipeline variables2258 reflects project variables2259 reflects job variables2260 when in yaml variables2261 reflects instance variables2262 reflects group variables2263 reflects pipeline variables2264 reflects project variables2265 reflects job variables2266 when in yaml variables2267 reflects instance variables2268 reflects group variables2269 reflects pipeline variables2270 reflects project variables2271 reflects job variables2272 when in yaml variables2273 when CI_DEBUG_TRACE is not in variables2274 is expected to eq false2275 when CI_DEBUG_SERVICES=true is in variables2276 reflects instance variables2277 reflects group variables2278 reflects pipeline variables2279 reflects project variables2280 reflects job variables2281 when in yaml variables2282 reflects instance variables2283 reflects group variables2284 reflects pipeline variables2285 reflects project variables2286 reflects job variables2287 when in yaml variables2288 reflects instance variables2289 reflects group variables2290 reflects pipeline variables2291 reflects project variables2292 reflects job variables2293 when in yaml variables2294 when CI_DEBUG_SERVICES is not in variables2295 is expected to eq false2296 when metadata has debug_trace_enabled true2297 is expected to eq true2298 when metadata has debug_trace_enabled false2299 is expected to eq false2300 #drop_with_exit_code!2301 when exit_codes are not defined2302 behaves like drops the build without changing allow_failure2303 does not change allow_failure2304 drops the build2305 when allow_failure_criteria is nil2306 behaves like drops the build without changing allow_failure2307 does not change allow_failure2308 drops the build2309 when exit_codes is nil2310 behaves like drops the build without changing allow_failure2311 does not change allow_failure2312 drops the build2313 when exit_codes do not match2314 behaves like drops the build without changing allow_failure2315 does not change allow_failure2316 drops the build2317 with matching exit codes2318 changes allow_failure2319 drops the build2320 when exit_code is nil2321 behaves like drops the build without changing allow_failure2322 does not change allow_failure2323 drops the build2324 when build is configured to be retried2325 when there is an MR attached to the pipeline and a failed job todo for that MR2326 resolves the todo for the old failed build2327 #exit_codes_defined?2328 without allow_failure_criteria2329 is expected to be falsey2330 when exit_codes is nil2331 is expected to be falsey2332 when exit_codes is an empty array2333 is expected to be falsey2334 when exit_codes are defined2335 is expected to be truthy2336 .build_matchers2337 when the pipeline is empty2338 does not throw errors2339 when the pipeline has builds2340 is expected to eq 22341 groups build ids2342 is expected to contain exactly [] and ["tag1", "tag2"]2343 is expected to all be falsey2344 when the builds are protected2345 is expected to all be protected2346 #build_matcher2347 is expected to eq [1014]2348 is expected to contain exactly "tag1" and "tag2"2349 is expected to eq false2350 is expected to eq #<Project id:42 group1/project-42>>2351 #shared_runner_build?2352 when build does not have a runner assigned2353 is not a shared runner build2354 when build has a project runner assigned2355 is not a shared runner build2356 when build has an instance runner assigned2357 is a shared runner build2358 .with_project_and_metadata2359 does not join across databases2360 .without_coverage2361 returns builds without coverage values2362 .with_coverage_regex2363 returns builds with coverage regex values2364 #ensure_trace_metadata!2365 delegates to Ci::BuildTraceMetadata2366 #doom!2367 updates status and failure_reason2368 logs a message2369 with deployment2370 updates the deployment status2371 with queued builds2372 drops associated pending build2373 with running builds2374 drops associated runtime metadata2375 #runtime_runner_features2376 cannot cancel gracefully2377 can cancel gracefully2378 behaves like it has loose foreign keys2379 has at least one loose foreign key definition2380 has the deletion trigger present2381 records record deletions2382 cleans up record deletions2383 behaves like cleanup by a loose foreign key2384 cleans up (delete or nullify) the model2385 #clone2386 when given new job variables2387 when the cloned build has an action2388 applies the new job variables2389 when the cloned build does not have an action2390 applies the old job variables2391 when not given new job variables2392 applies the old job variables2393 #test_suite_name2394 uses the group name for test suite name2395 when build is part of parallel build2396 uses the group name for test suite name2397 when build is part of matrix build2398 uses the job name for the test suite2399 #runtime_hooks2400 returns an array of hook objects2401 partitioning2402 assigns partition_id to job variables successfully (PENDING: Skipping partitioning tests until `ci_builds` is partitioned)2403 assigning token2404 includes partition_id as a token prefix (PENDING: Skipping partitioning tests until `ci_builds` is partitioned)2405 #remove_token!2406 removes the token2407 metadata partitioning2408 creates the metadata record and assigns its partition (PENDING: Skipping partitioning tests until `ci_builds` is partitioned)2409 secrets management id_tokens usage data2410 when ID tokens are defined2411 on create2412 tracks RedisHLL event with user_id2413 tracks Snowplow event with RedisHLL context2414 on update2415 does not track RedisHLL event2416 does not track Snowplow event2417 when ID tokens are not defined2418 on create2419 does not track RedisHLL event2420 does not track Snowplow event2421 job artifact associations2422 #job_artifacts_archive2423 when job has an artifact of type archive2424 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "archive", size: nil, created_at: "2023-06-02 06:31:52.1...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2425 when job has no artifact of type archive2426 is expected to be nil2427 #job_artifacts_metadata2428 when job has an artifact of type metadata2429 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "metadata", size: nil, created_at: "2023-06-02 06:31:52....nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2430 when job has no artifact of type metadata2431 is expected to be nil2432 #job_artifacts_trace2433 when job has an artifact of type trace2434 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "trace", size: nil, created_at: "2023-06-02 06:31:52.360...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2435 when job has no artifact of type trace2436 is expected to be nil2437 #job_artifacts_junit2438 when job has an artifact of type junit2439 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "junit", size: nil, created_at: "2023-06-02 06:31:52.466...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2440 when job has no artifact of type junit2441 is expected to be nil2442 #job_artifacts_sast2443 when job has an artifact of type sast2444 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "sast", size: nil, created_at: "2023-06-02 06:31:52.5754...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2445 when job has no artifact of type sast2446 is expected to be nil2447 #job_artifacts_dependency_scanning2448 when job has an artifact of type dependency_scanning2449 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "dependency_scanning", size: nil, created_at: "2023-06-0...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2450 when job has no artifact of type dependency_scanning2451 is expected to be nil2452 #job_artifacts_container_scanning2453 when job has an artifact of type container_scanning2454 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "container_scanning", size: nil, created_at: "2023-06-02...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2455 when job has no artifact of type container_scanning2456 is expected to be nil2457 #job_artifacts_dast2458 when job has an artifact of type dast2459 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "dast", size: nil, created_at: "2023-06-02 06:31:52.9198...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2460 when job has no artifact of type dast2461 is expected to be nil2462 #job_artifacts_codequality2463 when job has an artifact of type codequality2464 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "codequality", size: nil, created_at: "2023-06-02 06:31:...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2465 when job has no artifact of type codequality2466 is expected to be nil2467 #job_artifacts_license_scanning2468 when job has an artifact of type license_scanning2469 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "license_scanning", size: nil, created_at: "2023-06-02 0...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2470 when job has no artifact of type license_scanning2471 is expected to be nil2472 #job_artifacts_performance2473 when job has an artifact of type performance2474 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "performance", size: nil, created_at: "2023-06-02 06:31:...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2475 when job has no artifact of type performance2476 is expected to be nil2477 #job_artifacts_metrics2478 when job has an artifact of type metrics2479 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "metrics", size: nil, created_at: "2023-06-02 06:31:53.3...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2480 when job has no artifact of type metrics2481 is expected to be nil2482 #job_artifacts_metrics_referee2483 when job has an artifact of type metrics_referee2484 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "metrics_referee", size: nil, created_at: "2023-06-02 06...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2485 when job has no artifact of type metrics_referee2486 is expected to be nil2487 #job_artifacts_network_referee2488 when job has an artifact of type network_referee2489 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "network_referee", size: nil, created_at: "2023-06-02 06...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2490 when job has no artifact of type network_referee2491 is expected to be nil2492 #job_artifacts_lsif2493 when job has an artifact of type lsif2494 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "lsif", size: nil, created_at: "2023-06-02 06:31:53.7406...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2495 when job has no artifact of type lsif2496 is expected to be nil2497 #job_artifacts_dotenv2498 when job has an artifact of type dotenv2499 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "dotenv", size: nil, created_at: "2023-06-02 06:31:53.85...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2500 when job has no artifact of type dotenv2501 is expected to be nil2502 #job_artifacts_cobertura2503 when job has an artifact of type cobertura2504 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "cobertura", size: nil, created_at: "2023-06-02 06:31:53...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2505 when job has no artifact of type cobertura2506 is expected to be nil2507 #job_artifacts_terraform2508 when job has an artifact of type terraform2509 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "terraform", size: nil, created_at: "2023-06-02 06:31:54...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2510 when job has no artifact of type terraform2511 is expected to be nil2512 #job_artifacts_accessibility2513 when job has an artifact of type accessibility2514 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "accessibility", size: nil, created_at: "2023-06-02 06:3...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2515 when job has no artifact of type accessibility2516 is expected to be nil2517 #job_artifacts_cluster_applications2518 when job has an artifact of type cluster_applications2519 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "cluster_applications", size: nil, created_at: "2023-06-...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2520 when job has no artifact of type cluster_applications2521 is expected to be nil2522 #job_artifacts_secret_detection2523 when job has an artifact of type secret_detection2524 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "secret_detection", size: nil, created_at: "2023-06-02 0...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2525 when job has no artifact of type secret_detection2526 is expected to be nil2527 #job_artifacts_requirements2528 when job has an artifact of type requirements2529 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "requirements", size: nil, created_at: "2023-06-02 06:31...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2530 when job has no artifact of type requirements2531 is expected to be nil2532 #job_artifacts_coverage_fuzzing2533 when job has an artifact of type coverage_fuzzing2534 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "coverage_fuzzing", size: nil, created_at: "2023-06-02 0...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2535 when job has no artifact of type coverage_fuzzing2536 is expected to be nil2537 #job_artifacts_browser_performance2538 when job has an artifact of type browser_performance2539 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "browser_performance", size: nil, created_at: "2023-06-0...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2540 when job has no artifact of type browser_performance2541 is expected to be nil2542 #job_artifacts_load_performance2543 when job has an artifact of type load_performance2544 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "load_performance", size: nil, created_at: "2023-06-02 0...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2545 when job has no artifact of type load_performance2546 is expected to be nil2547 #job_artifacts_api_fuzzing2548 when job has an artifact of type api_fuzzing2549 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "api_fuzzing", size: nil, created_at: "2023-06-02 06:31:...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2550 when job has no artifact of type api_fuzzing2551 is expected to be nil2552 #job_artifacts_cluster_image_scanning2553 when job has an artifact of type cluster_image_scanning2554 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "cluster_image_scanning", size: nil, created_at: "2023-0...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2555 when job has no artifact of type cluster_image_scanning2556 is expected to be nil2557 #job_artifacts_cyclonedx2558 when job has an artifact of type cyclonedx2559 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "cyclonedx", size: nil, created_at: "2023-06-02 06:31:55...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2560 when job has no artifact of type cyclonedx2561 is expected to be nil2562 #job_artifacts_requirements_v22563 when job has an artifact of type requirements_v22564 is expected to eq #<Ci::JobArtifact project_id: 42, file_type: "requirements_v2", size: nil, created_at: "2023-06-02 06...nown", partition_id: 100, accessibility: "public", file_final_path: nil, verification_checksum: nil>2565 when job has no artifact of type requirements_v22566 is expected to be nil2567 token format for builds transiting into pending2568 when build is initialized without a token and transits to pending2569 generates a token2570 when build is initialized with a token and transits to pending2571 does not change the existing token2572Gitlab::Diff::File2573 #initialize2574 when file is ipynb2575 creates a rendered diff file2576 #ipynb?2577 is ipynb2578 is true2579 is not ipynb2580 is false2581 #has_renderable?2582 file is ipynb2583 has renderable viewer2584 file is not ipynb2585 does not have renderable viewer2586 does not create a Notebook DiffFile2587 #rendered2588 when not ipynb2589 is nil2590 when ipynb2591 creates a NotebookDiffFile for rendering2592 when collapsed2593 is nil2594 when too large2595 is nil2596 when not modified2597 is nil2598 #diff_lines2599 is expected to eq 302600 is expected to be a kind of Gitlab::Diff::Line2601 #highlighted_diff_lines2602 highlights the diff and memoises the result2603 #diff_lines_for_serializer2604 includes bottom match line if not in the end2605 when called multiple times2606 only adds bottom match line once2607 when deleted2608 does not include bottom match line2609 #unfold_diff_lines2610 when unfold required2611 changes @unfolded to true2612 updates @diff_lines2613 when unfold not required2614 keeps @unfolded false2615 does not update @diff_lines2616 #mode_changed?2617 is expected to be falsey2618 #too_large?2619 returns true for a file that is too large2620 returns false for a file that is small enough2621 #collapsed?2622 returns true for a file that is quite big2623 returns false for a file that is small enough2624 #old_blob and #new_blob2625 returns blob of base commit and the new commit2626 #diffable?2627 when attributes exist2628 returns true for files that do not have attributes2629 returns false for files that have been marked as not being diffable in attributes2630 when the text has binary notice2631 returns false2632 when the content is binary2633 returns true2634 #content_changed?2635 when created2636 returns false2637 when deleted2638 returns false2639 when renamed2640 returns false2641 when content changed2642 when binary2643 when the blobs are different2644 returns true2645 when there are no diff refs2646 returns false2647 when not binary2648 when the blobs are different2649 returns true2650 when there are no diff refs2651 returns true2652 #file_hash2653 returns a hash of file_path2654 #file_identifier_hash2655 returns a hash of file_identifier2656 diff file stats2657 #added_lines2658 when stats argument given2659 returns added lines from stats2660 when stats argument not given2661 returns added lines by parsing raw diff2662 #removed_lines2663 when stats argument given2664 returns removed lines from stats2665 when stats argument not given2666 returns removed lines by parsing raw diff2667 #simple_viewer2668 when the file is collapsed2669 returns a Collapsed viewer2670 when the file is not diffable2671 returns a Not Diffable viewer2672 when the content changed2673 when the file represented by the diff file is binary2674 returns a No Preview viewer2675 when the diff file old and new blob types are different2676 returns a No Preview viewer2677 when the file represented by the diff file is text-based2678 returns a text viewer2679 when created2680 when the file represented by the diff file is binary2681 returns an Added viewer2682 when the diff file old and new blob types are different2683 returns an Added viewer2684 when the file represented by the diff file is text-based2685 returns a text viewer2686 when deleted2687 when the file represented by the diff file is binary2688 returns a Deleted viewer2689 when the diff file old and new blob types are different2690 returns a Deleted viewer2691 when the file represented by the diff file is text-based2692 returns a text viewer2693 when renamed2694 returns a Renamed viewer2695 when mode changed2696 returns a Mode Changed viewer2697 when no other conditions apply2698 returns a No Preview viewer2699 #rich_viewer2700 when the diff file has a matching viewer2701 when the diff file content did not change2702 returns nil2703 when the diff file is not diffable2704 returns nil2705 when the diff file old and new blob types are different2706 returns nil2707 when the diff file has an external storage error2708 returns nil2709 when everything is right2710 returns the viewer2711 when the diff file does not have a matching viewer2712 returns nil2713 #alternate_viewer2714 viewer_class: DiffViewer::Image2715 is expected to be nil2716 viewer_class: DiffViewer::Collapsed2717 is expected to be nil2718 viewer_class: DiffViewer::NotDiffable2719 is expected to be nil2720 viewer_class: DiffViewer::Text2721 is expected to be nil2722 viewer_class: DiffViewer::NoPreview2723 is expected to be nil2724 viewer_class: DiffViewer::Added2725 is expected to be nil2726 viewer_class: DiffViewer::Deleted2727 is expected to be nil2728 viewer_class: DiffViewer::ModeChanged2729 is expected to be nil2730 viewer_class: DiffViewer::ModeChanged2731 is expected to be nil2732 viewer_class: DiffViewer::NoPreview2733 is expected to be nil2734 when viewer is DiffViewer::Renamed2735 when it can be rendered as text2736 is expected to be a kind of DiffViewer::Text2737 when it can be rendered as image2738 is expected to be a kind of DiffViewer::Image2739 when it is something else2740 is expected to be nil2741 #rendered_as_text?2742 when the simple viewer is text-based2743 when ignoring errors2744 when the viewer has render errors2745 returns true2746 when the viewer doesn't have render errors2747 returns true2748 when not ignoring errors2749 when the viewer has render errors2750 returns false2751 when the viewer doesn't have render errors2752 returns true2753 when the simple viewer is binary2754 returns false2755 when neither blob exists2756 #blob2757 returns a concrete nil so it can be used in boolean expressions2758 #binary?2759 returns false2760 #size2761 returns zero2762 #empty?2763 returns true2764 #different_type?2765 returns false2766 #content_changed?2767 returns false2768 when the the encoding of the file is unsupported2769 returns a Not Diffable viewer2770 is expected to eq []2771 is expected to eq []2772 #diff_hunk2773 when first line is a match2774 returns raw diff up to given line index2775 when first line is not a match2776 returns raw diff up to given line index2777 #empty?2778 when empty file is created2779 returns true2780 when empty file is deleted2781 returns true2782 when file with content is truncated2783 returns false2784 when empty file has content added2785 returns false2786 #fully_expanded?2787 when empty file is created2788 returns true2789 when empty file is deleted2790 returns true2791 when short file with last line removed2792 returns true2793 when a single line is added to empty file2794 returns true2795 when single line file is changed2796 returns true2797 when long file is changed2798 when first line is removed2799 returns true2800 when last line is removed2801 returns true2802 when first and last lines are removed2803 returns false2804 when first and last lines are changed2805 returns false2806 when every line are changed2807 returns true2808 when all contents are cleared2809 returns true2810 when file is binary2811 returns true2812rake gitlab:storage:*2813 gitlab:storage:migrate_to_hashed2814 with rollback already scheduled2815 does nothing2816 with 0 legacy projects2817 does nothing2818 with 3 legacy projects2819 enqueues migrations and count projects correctly2820 behaves like handles custom BATCH env var2821 in batches of 12822 enqueues one HashedStorage::MigratorWorker per project2823 in batches of 22824 enqueues one HashedStorage::MigratorWorker per 2 projects2825 with same id in range2826 displays message when project cant be found2827 displays a message when project exists but its already migrated2828 enqueues migration when project can be found2829 gitlab:storage:rollback_to_legacy2830 behaves like make sure database is writable2831 read-only database2832 does nothing2833 with migration already scheduled2834 does nothing2835 with 0 hashed projects2836 does nothing2837 with 3 hashed projects2838 enqueues migrations and count projects correctly2839 behaves like handles custom BATCH env var2840 in batches of 12841 enqueues one HashedStorage::RollbackerWorker per project2842 in batches of 22843 enqueues one HashedStorage::RollbackerWorker per 2 projects2844 gitlab:storage:legacy_projects2845 behaves like rake entities summary2846 with existing 3 legacy projects2847 reports 3 legacy projects2848 without any legacy project2849 displays message for empty results2850 behaves like wait until database is ready2851 checks if the database is ready once2852 handles custom env vars2853 tries for 3 times, polling every 0.1 seconds2854 gitlab:storage:list_legacy_projects2855 behaves like rake listing entities2856 limiting to 22857 lists 2 out of 3 legacy projects2858 without any legacy project2859 displays message for empty results2860 gitlab:storage:hashed_projects2861 behaves like rake entities summary2862 with existing 3 hashed projects2863 reports 3 hashed projects2864 without any hashed project2865 displays message for empty results2866 gitlab:storage:list_hashed_projects2867 behaves like rake listing entities2868 limiting to 22869 lists 2 out of 3 hashed projects2870 without any hashed project2871 displays message for empty results2872 gitlab:storage:legacy_attachments2873 behaves like rake entities summary2874 with existing 3 legacy attachments2875 reports 3 legacy attachments2876 without any legacy attachment2877 displays message for empty results2878 behaves like wait until database is ready2879 checks if the database is ready once2880 handles custom env vars2881 tries for 3 times, polling every 0.1 seconds2882 gitlab:storage:list_legacy_attachments2883 behaves like rake listing entities2884 limiting to 22885 lists 2 out of 3 legacy attachments2886 without any legacy attachment2887 displays message for empty results2888 gitlab:storage:hashed_attachments2889 behaves like rake entities summary2890 with existing 3 hashed attachments2891 reports 3 hashed attachments2892 without any hashed attachment2893 displays message for empty results2894 gitlab:storage:list_hashed_attachments2895 behaves like rake listing entities2896 limiting to 22897 lists 2 out of 3 hashed attachments2898 without any hashed attachment2899 displays message for empty results2900Ci::RegisterJobService2901 #execute2902 checks database loadbalancing stickiness2903 result is valid if replica did caught-up2904 result is invalid if replica did not caught-up2905 when using pending builds table2906 runner follows tag list2907 when job has tag2908 does not pick build with different tag2909 does not pick build with tag2910 and runner has matching tag2911 with no runner manager specified2912 picks build2913 with runner manager specified2914 picks build and assigns runner manager2915 when job has no tag2916 picks build2917 when runner has tag2918 picks build2919 deleted projects2920 for shared runners2921 does not pick a build2922 for project runner2923 with no runner manager specified2924 does not pick a build2925 with runner manager specified2926 does not pick a build2927 allow shared runners2928 when build owner has been blocked2929 with no runner manager specified2930 does not pick the build and drops the build2931 with runner manager specified2932 does not pick the build and does not create join record2933 for multiple builds2934 picks builds one-by-one2935 when using fair scheduling2936 when all builds are pending2937 prefers projects without builds first2938 when some builds transition to success2939 equalises number of running builds2940 when using DEFCON mode that disables fair scheduling2941 when all builds are pending2942 returns builds in order of creation (FIFO)2943 when some builds transition to success2944 returns builds in order of creation (FIFO)2945 shared runner2946 is expected to be a kind of Ci::Build(status: string, finished_at: datetime, created_at: datetime, updated_at: datetime, started_...oolean, scheduling_type: integer, id: integer, stage_id: integer, partition_id: integer, tag_list: )2947 is expected to be valid2948 is expected to be running2949 is expected to eq #<Ci::Runner id: 17, token: nil, created_at: "2023-06-02 06:35:00.103201212 +0000", updated_at: "2023...at: nil, allowed_plans: [], registration_type: "registration_token", creator_id: nil, tag_list: nil>2950 is expected to eq 8152951 project runner2952 is expected to be a kind of Ci::Build(status: string, finished_at: datetime, created_at: datetime, updated_at: datetime, started_...oolean, scheduling_type: integer, id: integer, stage_id: integer, partition_id: integer, tag_list: )2953 is expected to be valid2954 is expected to be running2955 is expected to eq #<Ci::Runner id: 94, token: nil, created_at: "2023-06-02 06:35:25.168732636 +0000", updated_at: "2023...at: nil, allowed_plans: [], registration_type: "registration_token", creator_id: nil, tag_list: nil>2956 disallow shared runners2957 shared runner2958 is expected to be nil2959 project runner2960 is expected to be a kind of Ci::Build(status: string, finished_at: datetime, created_at: datetime, updated_at: datetime, started_...oolean, scheduling_type: integer, id: integer, stage_id: integer, partition_id: integer, tag_list: )2961 is expected to be valid2962 is expected to be running2963 is expected to eq #<Ci::Runner id: 109, token: nil, created_at: "2023-06-02 06:35:28.323532411 +0000", updated_at: "202...at: nil, allowed_plans: [], registration_type: "registration_token", creator_id: nil, tag_list: nil>2964 disallow when builds are disabled2965 and uses shared runner2966 is expected to be nil2967 and uses group runner2968 is expected to be nil2969 and uses project runner2970 does not pick a build2971 allow group runners2972 for multiple builds2973 does not consider builds from other group runners2974 group runner2975 is expected to be a kind of Ci::Build(status: string, finished_at: datetime, created_at: datetime, updated_at: datetime, started_...oolean, scheduling_type: integer, id: integer, stage_id: integer, partition_id: integer, tag_list: )2976 is expected to be valid2977 is expected to be running2978 is expected to eq #<Ci::Runner id: 135, token: nil, created_at: "2023-06-02 06:35:36.633283457 +0000", updated_at: "202...at: nil, allowed_plans: [], registration_type: "registration_token", creator_id: nil, tag_list: nil>2979 disallow group runners2980 group runner2981 is expected to be nil2982 when first build is stalled2983 with multiple builds are in queue2984 receives second build from the queue2985 when single build is in queue2986 does not receive any valid result2987 when there is no build in queue2988 does not receive builds but result is valid2989 when access_level of runner is not_protected2990 when a job is protected2991 picks the job2992 when a job is unprotected2993 picks the job2994 when protected attribute of a job is nil2995 picks the job2996 when access_level of runner is ref_protected2997 when a job is protected2998 picks the job2999 when a job is unprotected3000 does not pick the job3001 when protected attribute of a job is nil3002 does not pick the job3003 runner feature set is verified3004 when feature is missing by runner3005 does not pick the build and drops the build3006 when feature is supported by runner3007 does pick job3008 when "dependencies" keyword is specified3009 picks a build with a dependency3010 when there are multiple dependencies with artifacts3011 logs build artifacts size3012 behaves like validation is active3013 when depended job has not been completed yet3014 is expected to eq #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 857, stage_id: 367, partition_id: 100, tag_list: nil>3015 when artifacts of depended job has been expired3016 when the pipeline is locked3017 is expected to eq #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-02 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 859, stage_id: 368, partition_id: 100, tag_list: nil>3018 when the pipeline is unlocked3019 behaves like not pick3020 does not pick the build and drops the build3021 when artifacts of depended job has been erased3022 behaves like not pick3023 does not pick the build and drops the build3024 when job object is staled3025 does not drop nor pick3026 when build is degenerated3027 does not pick the build and drops the build3028 when build has data integrity problem3029 does drop the build and logs both failures3030 when build fails to be run!3031 does drop the build and logs failure3032 when an exception is raised during a persistent ref creation3033 picks the build3034 when only some builds can be matched by runner3035 observes queue size of only matching jobs3036 observes queue processing time by the runner type3037 when ci_register_job_temporary_lock is enabled3038 when a build is temporarily locked3039 skips this build and marks queue as invalid3040 when there is another build in queue3041 skips this build and picks another build3042 when a conflicting data is stored in denormalized table3043 removes queuing entry upon build assignment attempt3044 #register_success3045 when shared runner is used3046 behaves like metrics collector3047 behaves like attempt counter collector3048 increments attempt counter3049 behaves like jobs queueing time histogram collector3050 counts job queuing time histogram with expected labels3051 when project already has running jobs3052 counts job queuing time histogram with expected labels3053 when metrics_shard tag is defined3054 behaves like metrics collector3055 behaves like attempt counter collector3056 increments attempt counter3057 behaves like jobs queueing time histogram collector3058 counts job queuing time histogram with expected labels3059 when project already has running jobs3060 counts job queuing time histogram with expected labels3061 when multiple metrics_shard tag is defined3062 behaves like metrics collector3063 behaves like attempt counter collector3064 increments attempt counter3065 behaves like jobs queueing time histogram collector3066 counts job queuing time histogram with expected labels3067 when project already has running jobs3068 counts job queuing time histogram with expected labels3069 when max running jobs bucket size is exceeded3070 behaves like metrics collector3071 behaves like attempt counter collector3072 increments attempt counter3073 behaves like jobs queueing time histogram collector3074 counts job queuing time histogram with expected labels3075 when project already has running jobs3076 counts job queuing time histogram with expected labels3077 when pending job with queued_at=nil is used3078 doesn't count job queuing time histogram3079 behaves like attempt counter collector3080 increments attempt counter3081 when project runner is used3082 behaves like metrics collector3083 behaves like attempt counter collector3084 increments attempt counter3085 behaves like jobs queueing time histogram collector3086 counts job queuing time histogram with expected labels3087 when project already has running jobs3088 counts job queuing time histogram with expected labels3089 when runner_session params are3090 present sets runner session configuration in the build3091 not present it does not configure the runner session3092 when max queue depth is reached3093 returns 409 conflict3094Gitlab::Database::RenameReservedPathsMigration::V1::RenameNamespaces3095 #namespaces_for_paths3096 nested namespaces3097 includes the namespace3098 for child namespaces3099 only returns child namespaces with the correct path3100 has no namespaces that look the same3101 for top levelnamespaces3102 only returns child namespaces with the correct path3103 has no namespaces that just look the same3104 #move_repositories3105 moves a project for a namespace3106 moves a namespace in a subdirectory correctly3107 moves a parent namespace with subdirectories3108 #child_ids_for_parent3109 collects child ids for all levels3110 #rename_namespace3111 renames paths & routes for the namespace3112 tracks the rename3113 renames things related to the namespace3114 #rename_namespace_dependencies3115 moves the repository for a project in the namespace3116 moves the uploads for the namespace3117 moves the pages for the namespace3118 invalidates the markdown cache of related projects3119 doesn't rename users for other namespaces3120 renames the username of a namespace for a user3121 #rename_user3122 renames a username3123 #rename_namespaces3124 renames top level namespaces the namespace3125 renames child namespaces3126 #revert_renames3127 renames the routes back to the previous values3128 moves the repositories back to their original place3129 doesn't break when the namespace was renamed3130Gitlab::ProjectAuthorizations3131 when feature_flag linear_project_authorization_is disabled3132 behaves like project authorizations3133 user added to group and project3134 returns the correct number of authorizations3135 includes the correct projects3136 includes the correct access levels3137 unapproved access request3138 group membership3139 does not create authorization3140 inherited group membership3141 does not create authorization3142 project membership3143 does not create authorization3144 shared group3145 does not create authorization3146 shared project3147 does not create authorization3148 user with minimal access to group3149 group membership3150 does not create authorization3151 inherited group membership3152 does not create authorization3153 shared group3154 does not create authorization3155 shared project3156 does not create authorization3157 with nested groups3158 includes nested groups3159 inherits access levels when the user is not a member of a nested group3160 uses the greatest access level when a user is a member of a nested group3161 with shared projects3162 creates proper authorizations3163 even when the `lock_memberships_to_ldap` setting has been turned ON3164 creates proper authorizations3165 when the group containing the project has forbidden group shares for any of its projects3166 does not create authorizations3167 with shared groups3168 group user3169 creates proper authorizations3170 with lower group access level than max access level for share3171 creates proper authorizations3172 parent group user3173 creates proper authorizations3174 child group user3175 creates proper authorizations3176 user without accepted access request3177 does not have access to group and its projects3178 unrelated project owner3179 does not have access to group and its projects3180 with pending memberships3181 group membership3182 does not create authorization3183 inherited group membership3184 does not create authorization3185 project membership3186 does not create authorization3187 shared group3188 does not create authorization3189 shared project3190 does not create authorization3191 behaves like project authorizations3192 user added to group and project3193 returns the correct number of authorizations3194 includes the correct projects3195 includes the correct access levels3196 unapproved access request3197 group membership3198 does not create authorization3199 inherited group membership3200 does not create authorization3201 project membership3202 does not create authorization3203 shared group3204 does not create authorization3205 shared project3206 does not create authorization3207 user with minimal access to group3208 group membership3209 does not create authorization3210 inherited group membership3211 does not create authorization3212 shared group3213 does not create authorization3214 shared project3215 does not create authorization3216 with nested groups3217 includes nested groups3218 inherits access levels when the user is not a member of a nested group3219 uses the greatest access level when a user is a member of a nested group3220 with shared projects3221 creates proper authorizations3222 even when the `lock_memberships_to_ldap` setting has been turned ON3223 creates proper authorizations3224 when the group containing the project has forbidden group shares for any of its projects3225 does not create authorizations3226 with shared groups3227 group user3228 creates proper authorizations3229 with lower group access level than max access level for share3230 creates proper authorizations3231 parent group user3232 creates proper authorizations3233 child group user3234 creates proper authorizations3235 user without accepted access request3236 does not have access to group and its projects3237 unrelated project owner3238 does not have access to group and its projects3239 with pending memberships3240 group membership3241 does not create authorization3242 inherited group membership3243 does not create authorization3244 project membership3245 does not create authorization3246 shared group3247 does not create authorization3248 shared project3249 does not create authorization3250Projects::Prometheus::Alerts::NotifyService3251 with valid payload3252 with environment specific clusters3253 without token3254 creates alerts and returns them in the payload3255 behaves like processes incident issues3256 is expected to be success3257 behaves like sends alert notification emails3258 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3259 with token3260 behaves like alerts service responds with an error and takes no actions3261 is expected to eq :unauthorized3262 behaves like does not create an alert management alert3263 is expected not to change `AlertManagement::Alert.count`3264 behaves like does not create a system note for alert3265 is expected not to change `Note.count`3266 behaves like does not process incident issues3267 is expected not to receive perform_async(*(any args)) 0 times3268 behaves like does not send alert notification emails3269 is expected not to receive new(*(any args)) 0 times3270 with project specific cluster using prometheus integration3271 cluster_enabled: true, integration_enabled: true, configured_token: "token", token_input: "token", result: :success3272 creates alerts and returns them in the payload3273 behaves like processes incident issues3274 is expected to be success3275 behaves like sends alert notification emails3276 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3277 cluster_enabled: true, integration_enabled: true, configured_token: nil, token_input: nil, result: :success3278 creates alerts and returns them in the payload3279 behaves like processes incident issues3280 is expected to be success3281 behaves like sends alert notification emails3282 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3283 cluster_enabled: true, integration_enabled: true, configured_token: "token", token_input: "x", result: :failure3284 behaves like alerts service responds with an error and takes no actions3285 is expected to eq :unauthorized3286 behaves like does not create an alert management alert3287 is expected not to change `AlertManagement::Alert.count`3288 behaves like does not create a system note for alert3289 is expected not to change `Note.count`3290 behaves like does not process incident issues3291 is expected not to receive perform_async(*(any args)) 0 times3292 behaves like does not send alert notification emails3293 is expected not to receive new(*(any args)) 0 times3294 cluster_enabled: true, integration_enabled: true, configured_token: "token", token_input: nil, result: :failure3295 behaves like alerts service responds with an error and takes no actions3296 is expected to eq :unauthorized3297 behaves like does not create an alert management alert3298 is expected not to change `AlertManagement::Alert.count`3299 behaves like does not create a system note for alert3300 is expected not to change `Note.count`3301 behaves like does not process incident issues3302 is expected not to receive perform_async(*(any args)) 0 times3303 behaves like does not send alert notification emails3304 is expected not to receive new(*(any args)) 0 times3305 cluster_enabled: true, integration_enabled: false, configured_token: "token", token_input: "token", result: :failure3306 behaves like alerts service responds with an error and takes no actions3307 is expected to eq :unauthorized3308 behaves like does not create an alert management alert3309 is expected not to change `AlertManagement::Alert.count`3310 behaves like does not create a system note for alert3311 is expected not to change `Note.count`3312 behaves like does not process incident issues3313 is expected not to receive perform_async(*(any args)) 0 times3314 behaves like does not send alert notification emails3315 is expected not to receive new(*(any args)) 0 times3316 cluster_enabled: false, integration_enabled: true, configured_token: "token", token_input: "token", result: :failure3317 behaves like alerts service responds with an error and takes no actions3318 is expected to eq :unauthorized3319 behaves like does not create an alert management alert3320 is expected not to change `AlertManagement::Alert.count`3321 behaves like does not create a system note for alert3322 is expected not to change `Note.count`3323 behaves like does not process incident issues3324 is expected not to receive perform_async(*(any args)) 0 times3325 behaves like does not send alert notification emails3326 is expected not to receive new(*(any args)) 0 times3327 cluster_enabled: false, integration_enabled: nil, configured_token: nil, token_input: "token", result: :failure3328 behaves like alerts service responds with an error and takes no actions3329 is expected to eq :unauthorized3330 behaves like does not create an alert management alert3331 is expected not to change `AlertManagement::Alert.count`3332 behaves like does not create a system note for alert3333 is expected not to change `Note.count`3334 behaves like does not process incident issues3335 is expected not to receive perform_async(*(any args)) 0 times3336 behaves like does not send alert notification emails3337 is expected not to receive new(*(any args)) 0 times3338 without project specific cluster3339 behaves like alerts service responds with an error and takes no actions3340 is expected to eq :unauthorized3341 behaves like does not create an alert management alert3342 is expected not to change `AlertManagement::Alert.count`3343 behaves like does not create a system note for alert3344 is expected not to change `Note.count`3345 behaves like does not process incident issues3346 is expected not to receive perform_async(*(any args)) 0 times3347 behaves like does not send alert notification emails3348 is expected not to receive new(*(any args)) 0 times3349 with manual prometheus installation3350 alerting_setting: true, configured_token: "token", token_input: "token", result: :success3351 behaves like processes one firing and one resolved prometheus alerts3352 creates alerts and returns them in the payload3353 behaves like processes incident issues3354 is expected to be success3355 behaves like sends alert notification emails3356 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3357 alerting_setting: true, configured_token: "token", token_input: "x", result: :failure3358 behaves like alerts service responds with an error and takes no actions3359 is expected to eq :unauthorized3360 behaves like does not create an alert management alert3361 is expected not to change `AlertManagement::Alert.count`3362 behaves like does not create a system note for alert3363 is expected not to change `Note.count`3364 behaves like does not process incident issues3365 is expected not to receive perform_async(*(any args)) 0 times3366 behaves like does not send alert notification emails3367 is expected not to receive new(*(any args)) 0 times3368 alerting_setting: true, configured_token: "token", token_input: nil, result: :failure3369 behaves like alerts service responds with an error and takes no actions3370 is expected to eq :unauthorized3371 behaves like does not create an alert management alert3372 is expected not to change `AlertManagement::Alert.count`3373 behaves like does not create a system note for alert3374 is expected not to change `Note.count`3375 behaves like does not process incident issues3376 is expected not to receive perform_async(*(any args)) 0 times3377 behaves like does not send alert notification emails3378 is expected not to receive new(*(any args)) 0 times3379 alerting_setting: false, configured_token: nil, token_input: nil, result: :success3380 behaves like processes one firing and one resolved prometheus alerts3381 creates alerts and returns them in the payload3382 behaves like processes incident issues3383 is expected to be success3384 behaves like sends alert notification emails3385 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3386 alerting_setting: false, configured_token: nil, token_input: "token", result: :failure3387 behaves like alerts service responds with an error and takes no actions3388 is expected to eq :unauthorized3389 behaves like does not create an alert management alert3390 is expected not to change `AlertManagement::Alert.count`3391 behaves like does not create a system note for alert3392 is expected not to change `Note.count`3393 behaves like does not process incident issues3394 is expected not to receive perform_async(*(any args)) 0 times3395 behaves like does not send alert notification emails3396 is expected not to receive new(*(any args)) 0 times3397 with HTTP integration3398 active: :active, token: :valid, result: :success3399 behaves like processes one firing and one resolved prometheus alerts3400 creates alerts and returns them in the payload3401 behaves like processes incident issues3402 is expected to be success3403 behaves like sends alert notification emails3404 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3405 active: :active, token: :invalid, result: :failure3406 behaves like alerts service responds with an error and takes no actions3407 is expected to eq :unauthorized3408 behaves like does not create an alert management alert3409 is expected not to change `AlertManagement::Alert.count`3410 behaves like does not create a system note for alert3411 is expected not to change `Note.count`3412 behaves like does not process incident issues3413 is expected not to receive perform_async(*(any args)) 0 times3414 behaves like does not send alert notification emails3415 is expected not to receive new(*(any args)) 0 times3416 active: :active, token: nil, result: :failure3417 behaves like alerts service responds with an error and takes no actions3418 is expected to eq :unauthorized3419 behaves like does not create an alert management alert3420 is expected not to change `AlertManagement::Alert.count`3421 behaves like does not create a system note for alert3422 is expected not to change `Note.count`3423 behaves like does not process incident issues3424 is expected not to receive perform_async(*(any args)) 0 times3425 behaves like does not send alert notification emails3426 is expected not to receive new(*(any args)) 0 times3427 active: :inactive, token: :valid, result: :failure3428 behaves like alerts service responds with an error and takes no actions3429 is expected to eq :unauthorized3430 behaves like does not create an alert management alert3431 is expected not to change `AlertManagement::Alert.count`3432 behaves like does not create a system note for alert3433 is expected not to change `Note.count`3434 behaves like does not process incident issues3435 is expected not to receive perform_async(*(any args)) 0 times3436 behaves like does not send alert notification emails3437 is expected not to receive new(*(any args)) 0 times3438 active: nil, token: nil, result: :failure3439 behaves like alerts service responds with an error and takes no actions3440 is expected to eq :unauthorized3441 behaves like does not create an alert management alert3442 is expected not to change `AlertManagement::Alert.count`3443 behaves like does not create a system note for alert3444 is expected not to change `Note.count`3445 behaves like does not process incident issues3446 is expected not to receive perform_async(*(any args)) 0 times3447 behaves like does not send alert notification emails3448 is expected not to receive new(*(any args)) 0 times3449 with simultaneous manual configuration3450 behaves like processes one firing and one resolved prometheus alerts3451 creates alerts and returns them in the payload3452 behaves like processes incident issues3453 is expected to be success3454 behaves like sends alert notification emails3455 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3456 when HTTP integration is inactive3457 behaves like alerts service responds with an error and takes no actions3458 is expected to eq :unauthorized3459 behaves like does not create an alert management alert3460 is expected not to change `AlertManagement::Alert.count`3461 behaves like does not create a system note for alert3462 is expected not to change `Note.count`3463 behaves like does not process incident issues3464 is expected not to receive perform_async(*(any args)) 0 times3465 behaves like does not send alert notification emails3466 is expected not to receive new(*(any args)) 0 times3467 incident settings3468 behaves like processes one firing and one resolved prometheus alerts3469 creates alerts and returns them in the payload3470 behaves like processes incident issues3471 is expected to be success3472 behaves like sends alert notification emails3473 is expected to receive prometheus_alerts_fired(*(any args)) 1 time3474 when incident_management_setting does not exist3475 is expected to be success3476 is expected not to receive new(*(any args)) 0 times3477 is expected not to receive perform_async(*(any args)) 0 times3478 incident_management_setting.send_email is false3479 is expected to be success3480 is expected not to receive new(*(any args)) 0 times3481 incident_management_setting.create_issue is false3482 is expected to be success3483 is expected not to receive perform_async(*(any args)) 0 times3484 process Alert Management alerts3485 with multiple firing alerts and resolving alerts3486 processes Prometheus alerts3487 when payload exceeds max amount of processable alerts3488 with feature flag globally enabled3489 returns 201 but skips processing and logs a warning3490 with feature flag enabled on project3491 returns 201 but skips processing and logs a warning3492 with feature flag enabled on unrelated project3493 returns 201 and process alerts without warnings3494 with feature flag disabled3495 returns 201 and process alerts without warnings3496 with invalid payload3497 when payload is not processable3498 behaves like alerts service responds with an error and takes no actions3499 is expected to eq :unprocessable_entity3500 behaves like does not create an alert management alert3501 is expected not to change `AlertManagement::Alert.count`3502 behaves like does not create a system note for alert3503 is expected not to change `Note.count`3504 behaves like does not process incident issues3505 is expected not to receive perform_async(*(any args)) 0 times3506 behaves like does not send alert notification emails3507 is expected not to receive new(*(any args)) 0 times3508 when the payload is too big3509 behaves like alerts service responds with an error and takes no actions3510 is expected to eq :bad_request3511 behaves like does not create an alert management alert3512 is expected not to change `AlertManagement::Alert.count`3513 behaves like does not create a system note for alert3514 is expected not to change `Note.count`3515 behaves like does not process incident issues3516 is expected not to receive perform_async(*(any args)) 0 times3517 behaves like does not send alert notification emails3518 is expected not to receive new(*(any args)) 0 times3519 .processable?3520 with valid payload3521 is expected to eq true3522 containing unrelated keys3523 is expected to eq true3524 with invalid payload3525 missing_key: "version"3526 is expected to eq false3527 missing_key: "groupKey"3528 is expected to eq false3529 missing_key: "status"3530 is expected to eq false3531 missing_key: "receiver"3532 is expected to eq false3533 missing_key: "groupLabels"3534 is expected to eq false3535 missing_key: "commonLabels"3536 is expected to eq false3537 missing_key: "commonAnnotations"3538 is expected to eq false3539 missing_key: "externalURL"3540 is expected to eq false3541 missing_key: "alerts"3542 is expected to eq false3543 with unsupported version3544 is expected to eq false3545Groups::UpdateService3546 #execute3547 with project3548 behaves like with packages3549 with npm packages3550 does not allow a path update3551 allows name update3552 located in a subgroup3553 does allow a path update if there is not a root namespace change3554 behaves like with packages3555 with npm packages3556 does not allow a path update3557 allows name update3558 project visibility_level validation3559 public group with public projects3560 does not change permission level3561 returns false if save failed3562 when a project has container images3563 within group3564 with path updates3565 does not allow the update3566 with name updates3567 allows the update3568 when the path does not change3569 allows the update3570 within subgroup3571 does not allow path updates3572 internal group with internal project3573 does not change permission level3574 internal group with private project3575 changes permission level to private3576 with parent_id user doesn't have permissions for3577 does not update parent_id3578 crm_enabled param3579 when no existing crm_settings3580 when param not present, leave crm disabled3581 when param set true, enables crm3582 with existing crm_settings3583 when param set true, enables crm3584 when param set false, disables crm3585 when param not present, crm remains disabled3586 when param not present, crm remains enabled3587 unauthorized visibility_level validation3588 does not change permission level3589 when user is not group owner3590 when group is private3591 does not update the group to public3592 does not update the group to public with tricky value3593 when group is public3594 does not update the group to private3595 does not update the group to private with invalid string value3596 does not update the group to private with valid string value3597 does not update the group to private because of Active Record typecasting3598 when updating #emails_disabled3599 updates the attribute3600 does not update when not group owner3601 updating default_branch_protection3602 for users who have the ability to update default_branch_protection3603 updates the attribute3604 for users who do not have the ability to update default_branch_protection3605 does not update the attribute3606 EventStore3607 when changing a group path3608 publishes a GroupPathChangedEvent3609 when not changing a group path3610 does not publish a GroupPathChangedEvent3611 rename group3612 returns true3613 error moving group3614 does not raise an error3615 returns false3616 has the right error3617 hasn't changed the path3618 for a subgroup3619 when the parent group share_with_group_lock is enabled3620 for the parent group owner3621 allows disabling share_with_group_lock3622 for a subgroup owner (who does not own the parent)3623 does not allow disabling share_with_group_lock3624 change shared Runners config3625 calls the shared runners update service3626 handles errors in the shared runners update service3627 changes allowing subgroups to establish own 2FA3628 changes settings3629 enqueues update subgroups and its members3630Ci::RetryPipelineService#execute3631 when user has full ability to modify pipeline3632 closes all todos about failed jobs for pipeline3633 reprocesses the pipeline3634 when there are already retried jobs present3635 does not retry jobs that has already been retried3636 when there are failed builds in the last stage3637 enqueues all builds in the last stage3638 when there are failed or canceled builds in the first stage3639 retries builds failed builds and marks subsequent for processing3640 changes ownership of subsequent builds3641 when there is failed build present which was run on failure3642 retries builds only in the first stage3643 creates a new job for report job in this case3644 when there is a failed test in a DAG3645 retries the test3646 when there is a failed DAG test without needs3647 retries the test3648 when the last stage was skipped3649 retries builds only in the first stage3650 when pipeline contains manual actions3651 when there are optional manual actions only3652 when there is a canceled manual action in first stage3653 retries failed builds and marks subsequent for processing3654 changes ownership of subsequent builds3655 when pipeline has blocking manual actions defined3656 when pipeline retry should enqueue builds3657 retries failed builds3658 when pipeline retry should block pipeline immediately3659 reprocesses blocking manual action and blocks pipeline3660 when there is a skipped manual action in last stage3661 retries canceled job and reprocesses manual actions3662 when there is a created manual action in the last stage3663 retries canceled job and does not update the manual action3664 when there is a created manual action in the first stage3665 retries canceled job and processes the manual action3666 when there is a failed manual action3667 processes the manual action3668 when pipeline has processables with nil scheduling_type3669 populates scheduling_type of processables3670 when the pipeline is a downstream pipeline and the bridge is depended3671 without permission3672 does nothing to the bridge3673 with permission3674 marks source bridge as pending3675 assigns the current user to the source bridge3676 when there are skipped jobs in later stages3677 retries failed jobs and processes skipped jobs3678 when user is not allowed to retry build3679 returns an error3680 when user is not allowed to retry pipeline3681 returns an error3682 when user is not allowed to trigger manual action3683 when there is a failed manual action present3684 returns an error3685 when there is a failed manual action in later stage3686 returns an error3687 when maintainer is allowed to push to forked project3688 allows to retry failed pipeline3689Snippet3690 modules3691 is expected to includes the Gitlab::VisibilityLevel module3692 is expected to includes the Participable module3693 is expected to includes the Referable module3694 is expected to includes the Sortable module3695 is expected to includes the Awardable module3696 associations3697 is expected to belong to author class_name => User required: false3698 is expected to belong to project required: false3699 is expected to have many notes dependent => destroy3700 is expected to have many award_emoji dependent => destroy3701 is expected to have many user_mentions class_name => SnippetUserMention3702 is expected to have one snippet_repository3703 is expected to have one statistics class_name => SnippetStatistics dependent => destroy3704 is expected to have many repository_storage_moves class_name => Snippets::RepositoryStorageMove inverse_of => container3705 validation3706 is expected to validate that :author cannot be empty/falsy3707 is expected to validate that :title cannot be empty/falsy3708 is expected to validate that the length of :title is at most 2553709 is expected to validate that the length of :file_name is at most 2553710 is expected to validate that :content cannot be empty/falsy3711 is expected to validate that the length of :content is at most 1, producing a custom validation error on failure3712 content validations3713 with existing snippets3714 does not raise a validation error if the content is not changed3715 raises and error if the content is changed and the size is bigger than limit3716 with new snippets3717 is valid when content is smaller than the limit3718 raises error when content is bigger than setting limit3719 description validations3720 with existing snippets3721 does not raise a validation error if the description is not changed3722 raises and error if the description is changed and the size is bigger than limit3723 with new snippets3724 is valid when description is smaller than the limit3725 raises error when description is bigger than setting limit3726 callbacks3727 creates snippet statistics when the snippet is created3728 #to_reference3729 when snippet belongs to a project3730 returns a String reference to the object3731 supports a cross-project reference3732 when snippet does not belong to a project3733 returns a String reference to the object3734 still returns shortest reference when project arg present3735 #file_name3736 file_name is nil3737 returns an empty string3738 file_name is not nil3739 returns the file_name3740 #content_html_invalidated?3741 invalidates the HTML cache of content when the filename changes3742 .search3743 returns snippets with a matching title3744 returns snippets with a partially matching title3745 returns snippets with a matching title regardless of the casing3746 returns snippets with a matching file name3747 returns snippets with a partially matching file name3748 returns snippets with a matching file name regardless of the casing3749 returns snippets with a matching description3750 when default snippet visibility set to internal3751 attribute_name: :visibility, value: "private"3752 sets the visibility level3753 attribute_name: :visibility_level, value: 03754 sets the visibility level3755 attribute_name: "visibility", value: "private"3756 sets the visibility level3757 attribute_name: "visibility_level", value: 03758 sets the visibility level3759 .with_optional_visibility3760 when a visibility level is provided3761 returns snippets with the given visibility3762 when a visibility level is not provided3763 returns all snippets3764 .only_personal_snippets3765 returns snippets not associated with any projects3766 .only_include_projects_visible_to3767 when a user is provided3768 returns snippets visible to the user3769 when a user is not provided3770 returns snippets visible to anonymous users3771 only_include_projects_with_snippets_enabled3772 includes snippets for projects with snippets enabled3773 when snippet_access_level is private3774 when the include_private option is enabled3775 includes snippets for projects with snippets set to private3776 when the include_private option is not enabled3777 does not include snippets for projects that have snippets set to private3778 .only_include_authorized_projects3779 only includes snippets for projects the user is authorized to see3780 .for_project_with_user3781 when a user is provided3782 returns an empty collection if the user can not view the snippets3783 returns the snippets if the user is a member of the project3784 returns public snippets for a public project the user is not a member of3785 when a user is not provided3786 returns an empty collection for a private project3787 returns public snippets for a public project3788 .visible_to_or_authored_by3789 returns snippets visible to the user3790 .find_by_project_title_trunc_created_at3791 returns a record if arguments match3792 returns nil if project does not match3793 returns nil if title does not match3794 returns nil if created_at does not match3795 #participants3796 includes the snippet author and note authors3797 #check_for_spam3798 when public and spammable attributes changed3799 returns true3800 when private3801 returns false3802 returns true when switching to public3803 when spammable attributes have not changed3804 returns false3805 #blob3806 returns a blob representing the snippet data3807 #all_files3808 lists files from the repository with the default branch3809 #blobs3810 when repository does not exist3811 returns empty array3812 when repository exists3813 returns array of blobs3814 when file does not exist3815 removes nil values from the blobs array3816 when some blobs are not retrievable from repository3817 does not include unretrievable blobs3818 #to_json3819 excludes secret_token from generated json3820 does not override existing exclude option value3821 #storage3822 stores snippet in @snippets dir3823 #track_snippet_repository3824 when a snippet repository entry does not exist3825 creates a new entry3826 tracks the snippet storage location3827 when a tracking entry exists3828 does not create a new entry in the database3829 updates the snippet storage location3830 #create_repository3831 creates the repository3832 sets the default branch3833 tracks snippet repository3834 sets same shard in snippet repository as in the repository storage3835 when repository exists3836 does not try to create repository3837 when snippet_repository exists3838 does not create a new snippet repository3839 when snippet_repository does not exist3840 creates a snippet_repository3841 #repository_storage3842 returns repository storage from ApplicationSetting3843 when snippet_project is already created3844 returns repository_storage from snippet_project3845 #repository_size_checker3846 sets up size checker3847 #can_cache_field?3848 field: :title, file_name: nil, result: true3849 is expected to eq true3850 field: :title, file_name: "foo.bar", result: true3851 is expected to eq true3852 field: :description, file_name: nil, result: true3853 is expected to eq true3854 field: :description, file_name: "foo.bar", result: true3855 is expected to eq true3856 field: :content, file_name: nil, result: false3857 is expected to eq false3858 field: :content, file_name: "bar.foo", result: false3859 is expected to eq false3860 field: :content, file_name: "markdown.md", result: true3861 is expected to eq true3862 #url_to_repo3863 with personal snippet3864 is expected to eq "git@localhost:snippets/59.git"3865 with project snippet3866 is expected to eq "git@localhost:namespace263/project-313/snippets/60.git"3867 .max_file_limit3868 returns 103869 #list_files3870 when snippet has a repository3871 lists files from the repository with the ref3872 when ref is nil3873 lists files from the repository from the deafult_branch3874 when snippet does not have a repository3875 returns an empty array3876 #multiple_files?3877 when snippet has multiple files3878 is expected to be truthy3879 when snippet does not have multiple files3880 is expected to be falsey3881 when the snippet does not have a repository3882 is expected to be falsey3883 #git_transfer_in_progress?3884 returns true when there are git transfers3885 returns false when there are not git transfers3886 behaves like can move repository storage3887 #set_repository_read_only!3888 makes the repository read-only3889 raises an error if the project is already read-only3890 raises an error when there is an existing git transfer in progress3891 skip_git_transfer_check is true3892 makes the project read-only when git transfers are in progress3893 #set_repository_writable!3894 sets repository_read_only to false3895 #reference_counter3896 returns a Gitlab::ReferenceCounter object3897Git::ProcessRefChangesService3898 branch changes3899 behaves like service for processing ref changes3900 calls Git::BranchPushService3901 changes exceed push_event_hooks_limit3902 calls Git::BranchPushService with execute_project_hooks set to false3903 changes exceed push_event_activities_limit per action3904 calls Git::BranchPushService with create_push_event set to false3905 creates events per action3906 pipeline creation3907 with valid .gitlab-ci.yml3908 when git_push_create_all_pipelines is disabled3909 creates pipeline for branches and tags3910 creates exactly 4 pipelines3911 when git_push_create_all_pipelines is enabled3912 creates all pipelines3913 with invalid .gitlab-ci.yml3914 does not create a pipeline3915 housekeeping3916 does not perform housekeeping when not needed3917 increments the push counter3918 when housekeeping is needed3919 performs housekeeping3920 does not raise an exception3921 when there are merge requests associated with branches3922 schedules job for existing merge requests3923 tag changes3924 behaves like service for processing ref changes3925 calls Git::TagPushService3926 changes exceed push_event_hooks_limit3927 calls Git::TagPushService with execute_project_hooks set to false3928 changes exceed push_event_activities_limit per action3929 calls Git::TagPushService with create_push_event set to false3930 creates events per action3931 pipeline creation3932 with valid .gitlab-ci.yml3933 when git_push_create_all_pipelines is disabled3934 creates pipeline for branches and tags3935 creates exactly 4 pipelines3936 when git_push_create_all_pipelines is enabled3937 creates all pipelines3938 with invalid .gitlab-ci.yml3939 does not create a pipeline3940 housekeeping3941 does not perform housekeeping when not needed3942 increments the push counter3943 when housekeeping is needed3944 performs housekeeping3945 does not raise an exception3946ProjectFeature3947 is expected to belong to project required: false3948 allows public access level for :pages feature3949 default values3950 is expected to eq 203951 is expected to eq 203952 is expected to eq 203953 is expected to eq 203954 is expected to eq 203955 is expected to eq 203956 is expected to eq 203957 is expected to eq 103958 is expected to eq 203959 is expected to eq 103960 is expected to eq 203961 is expected to eq 203962 is expected to eq 203963 is expected to eq 203964 is expected to eq 203965 is expected to eq 203966 is expected to eq 203967 is expected to eq 203968 PRIVATE_FEATURES_MIN_ACCESS_LEVEL_FOR_PRIVATE_PROJECT3969 has higher level than that of PRIVATE_FEATURES_MIN_ACCESS_LEVEL3970 repository related features3971 does not allow repository related features have higher level3972 behaves like access level validation3973 does not allow public access level for issues3974 does not allow public access level for forking3975 does not allow public access level for merge_requests3976 does not allow public access level for wiki3977 does not allow public access level for snippets3978 does not allow public access level for builds3979 does not allow public access level for repository3980 does not allow public access level for metrics_dashboard3981 does not allow public access level for analytics3982 does not allow public access level for monitor3983 does not allow public access level for operations3984 does not allow public access level for security_and_compliance3985 does not allow public access level for container_registry3986 does not allow public access level for environments3987 does not allow public access level for feature_flags3988 does not allow public access level for releases3989 does not allow public access level for infrastructure3990 does not allow public access level for model_experiments3991 default pages access level3992 when new project is private3993 is expected to eq 103994 when new project is internal3995 is expected to eq 103996 when new project is public3997 is expected to eq 203998 when access control is forced on the admin level3999 is expected to eq 104000 #public_pages?4001 returns true if Pages access control is not enabled4002 when Pages access control is enabled4003 project_visibility: :private, pages_access_level: 30, result: true4004 properly handles project and Pages visibility settings4005 returns false if access_control is forced on the admin level4006 project_visibility: :internal, pages_access_level: 30, result: true4007 properly handles project and Pages visibility settings4008 returns false if access_control is forced on the admin level4009 project_visibility: :internal, pages_access_level: 20, result: false4010 properly handles project and Pages visibility settings4011 returns false if access_control is forced on the admin level4012 project_visibility: :public, pages_access_level: 20, result: true4013 properly handles project and Pages visibility settings4014 returns false if access_control is forced on the admin level4015 project_visibility: :private, pages_access_level: 10, result: false4016 properly handles project and Pages visibility settings4017 returns false if access_control is forced on the admin level4018 project_visibility: :public, pages_access_level: 10, result: false4019 properly handles project and Pages visibility settings4020 returns false if access_control is forced on the admin level4021 #private_pages?4022 returns false if public_pages? is true4023 returns true if public_pages? is false4024 .required_minimum_access_level4025 handles reporter level4026 handles guest level4027 accepts ActiveModel4028 accepts string4029 handles repository4030 handles package registry4031 raises error if feature is invalid4032 .required_minimum_access_level_for_private_project4033 returns higher permission for repository4034 returns normal permission for issues4035 container_registry_access_level4036 with default value4037 when the default is false4038 creates project_feature with `disabled` container_registry_access_level4039 when the default is true4040 creates project_feature with `enabled` container_registry_access_level4041 when the default is nil4042 creates project_feature with `disabled` container_registry_access_level4043 test build factory4044 private4045 is expected to eq 104046 enabled4047 is expected to eq 204048 disabled4049 is expected to eq 04050 package_registry_access_level4051 with default value4052 config_packages_enabled: false, expected_result: 04053 creates project_feature with correct package_registry_access_level4054 config_packages_enabled: true, expected_result: 204055 creates project_feature with correct package_registry_access_level4056 config_packages_enabled: nil, expected_result: 04057 creates project_feature with correct package_registry_access_level4058 sync packages_enabled4059 initial_value: 0, new_value: 0, expected_result: false4060 set correct value4061 initial_value: 0, new_value: 20, expected_result: true4062 set correct value4063 initial_value: 0, new_value: 30, expected_result: true4064 set correct value4065 initial_value: 20, new_value: 0, expected_result: false4066 set correct value4067 initial_value: 20, new_value: 20, expected_result: true4068 set correct value4069 initial_value: 20, new_value: 30, expected_result: true4070 set correct value4071 initial_value: 30, new_value: 0, expected_result: false4072 set correct value4073 initial_value: 30, new_value: 20, expected_result: true4074 set correct value4075 initial_value: 30, new_value: 30, expected_result: true4076 set correct value4077 #public_packages?4078 returns false if packages config is not enabled4079 with packages config enabled4080 when project is private4081 returns false4082 with package_registry_access_level set to public4083 returns true4084 when project is public4085 returns true4086 #feature_available?4087 when features are disabled4088 returns false4089 when features are enabled only for team members4090 returns false when user is not a team member4091 returns true when user is a team member4092 returns true when user is a member of project group4093 when admin mode is enabled4094 returns true if user is an admin4095 when admin mode is disabled4096 returns false when user is an admin4097 when feature is enabled for everyone4098 returns true4099 when feature has any other value4100 returns true4101MergeRequests::RebaseService4102 #validate4103 is expected to be success4104 when source branch does not exist4105 returns an error4106 when user has no permissions to rebase4107 returns an error4108 when branch is protected4109 returns an error4110 #execute4111 behaves like sequence of failure and success4112 properly clears the error message4113 when unexpected error occurs4114 saves a generic error message4115 returns an error4116 logs the error4117 with a pre-receive failure4118 saves a specific message4119 returns an error4120 with git command failure4121 saves a generic error message4122 returns an error4123 valid params4124 clears rebase_jid4125 behaves like a service that can execute a successful rebase4126 rebases source branch4127 records the new SHA on the merge request4128 logs correct author and committer4129 when skip_ci flag is set4130 behaves like a service that can execute a successful rebase4131 rebases source branch4132 records the new SHA on the merge request4133 logs correct author and committer4134 fork4135 successful fork rebase4136 rebases source branch4137Key4138 behaves like having unique enum values4139 has unique values in "usage_type"4140 Associations4141 is expected to belong to user required: false4142 Validation4143 is expected to validate that :title cannot be empty/falsy4144 is expected to validate that the length of :title is at most 2554145 is expected to validate that :key cannot be empty/falsy4146 is expected to validate that the length of :key is at most 50004147 is expected to allow :key to be ‹"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC98dbu7gxcbmAvwMqz/6AALhSr1jiXG0UC8FQMvoDt+ciB+uSJhg7KlxinKjYJnPGfhX+q2K+mmCGAmI/D6q7rFxE+bn09O+75qgkTHi+suDVE6KG7L3n0alGd/qSevfomR77Snh6fQPdG6sEAZz3kehcpfVnq5/IuLFq9FBrgmu52Jd4XZLQZKkDq6zYOJ69FUkGf93LZIV/OOaS+f+qkOGPCUkdKl7oEcgpVNY9SRjBCduXnvi2CyQnnJVkBguGL5VlXwFXH+17Whs7oFWmdiG+4jzBRLIMz4EuIW09b8Su5PW6+bBuXOifHA8KG5TMmjs5LYdCMPFnhTyDyO3a1 dummy@gitlab.com"›4148 is expected to allow :key to be ‹"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGSD77lLtjmzewiBs6nu2R5nu6oNkrAkH/0co1fHHosKfRr+sWkSTKXOVcL7bhRu+tniGBmB5pn+i1qX7BXtrcnv//bCXWIp+me027L4RJa5/Ep077iiTJlzTpcV664xNUXC8mzBr601HR/Z2TzX5DWJvnyqqFkN7qHTYo/+IoKECnKqNzI5SQrAxgi6sbWA5DFQ/nwcqsUSBo5gCCJ/0QPrR19yVV5lJA19EY2LawOb1SJNOFo4mQupSlBZwvERZJ7IqhBTPtQIfrqqz5VJbI13jK3ViZTugIZqydWAhosUyejP3SdCj1KMexrvV95tjUtmhVFlph4tKThQO0p9pXKZNCzYsbQTye6O6Hk2rojOJLyFWqNBVKtI8Ymfu7OQWppRnuUFuhuuS515H1s888bZFMPsC74mPyo0Y7Q9wAoTnQ9Hw6b0J6OfY3PIRVphaCmxh6b7dgSPF...›4149 is expected to allow :key to be ‹"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACgQDxnZP0TucLH3zcrvt75DPNq+xKqOmJkCEzTytKq4S5MDH0nlx+xOZ9WykhwDHXU0iZBJF7yRdLkZweYDJVKnBzr4t7QP5Sw2/ZdLelvUMWGJjuz28x8Z+8NZ+IxL/exDz7itrhCsLupQhGO1obiIwf8xVzzPoxrQ9dxaN4x965N+QdQcld8O6xfpSE0p5Y3sRn3kp57aHWoNa/bUGZy0OHLr/ig0uc6EKyWsTmEESOgDyV94wOyHR0KNGEENyxQt4BwAbEBn3Y41HKqD358KKh+XjbECebrrBFigdDL/eYFIUlstJ07SK/HtYjZbiUZCPs8bJA+SBaLK0pGGqguM2LXRoMeMUZFwKKKS2LpRqjKGj3Qt7qMnp1SkVhiMnxNqL4nJnDOOVo07xDIPKqIBYO67/cp4Icv3IjKxy6K3EIpLr+iRCxcllpDogxolzFC+pEDVpmEvcrGEv...›4150 is expected to allow :key to be ‹"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQC5jMyGtgMOVX4t2GuXkbirJA0Edr+qlOH9grnRBPHPo0Npt6XE6ZN3J3hDULTQo03wmekGw42dxdNSgk+F0GjsUBrMLbqrk485MMe0cUbP4lRXNu4ao87wPVM5fAsD4E3FQiZcI6Df011ZGIL7hGTHt6eafTfr9cJheRyYSu6g06rlnFWbbtSh9oQ7Y6sfDLBcsC9ECcXwe3mwViuQXPIVomZ02EdnBbAhbGHDtA+ZbSvTfraxOMjkxkVvvdjLxXEykpwVuZf8eZ+R/Js8jQ5RKvTZMbfxJNsGEqHD32s43ml4VF549Qz2GJDXF7Cld/n3CT6wvw0mMPM0LnykL2v0CMr44bjIA3KsNEs5MhkcBO8sv5hGfcPhrpm9WwI6gd9vdZVcxarVI+iQS947owvdn4VbEZXynCDqEEv3Zh+FA5p23mf2p7DkG/swiK/IPrjr1wmsiWmwIUs...›4151 is expected to allow :key to be ‹"ssh-dss AAAAB3NzaC1kc3MAAAEBALEB3sM2kPy6LKLiyL+UlDx2vzuKrzSD2nsW2Kb70ivIqDNJu5CbqIQSkjdMzJiocs33ESFqXid6ezOtVdDwXHJQRxKGalW1kBbFAPjtMxlDbf559+7qN2zfCfcQsgTmNAZ7O+wltqJmyLv5i4QqNwPDvyeBvJ4C+770DzlcQtpkflKJX+O7i8Ylq34h6UTCTnjry+dFVm1xz97LPf7XuzXGZcAG/eGUNQgxQ2bferKnrpYOXx6cocSRj9W54nrRFMWuDeOspWp4MoYK0FRMfDQYPksUayGUnm1KQTGuDbB0ahRNCOm8b3tfP9Z+vjANAkqenzDuXCpz2PU/Oj6/N/UAAAAhAPOLyut12Mjcp3eUXLe1xSoI5IRXSLsoW9no93dcFNprAAABAQCLhpqKY+PNcwbhhPruL+f+uROghHzDwRNX+e231F4wHHeDDomfWyLVFj31XrHdDXZnS9tTTj5...›4152 is expected to allow :key to be ‹"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJZmkzTgY0fiCQ+DVReyH/fFwTFz0XoR3RUO0u+199H19KFw7mNPxRSMOVS7tEtONj3Q7FcZXfqthHvgAzDiHsc= dummy@gitlab.com"›4153 is expected to allow :key to be ‹"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIETnVTgzqC1gatgSlC4zH6aYt2CAQzgJOhDRvf59ohL6 dummy@gitlab.com"›4154 is expected to allow :key to be ‹"sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBDZ+f5tSRhlB7EN39f93SscTN5PUvbD3UQsNrlE1ZdbwPMMRul2zlPiUvwAvnJitW0jlD/vwZOW2YN+q+iZ5c0MAAAAEc3NoOg== dummy@gitlab.com"›4155 is expected to allow :key to be ‹"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIEX/dQ0v4127bEo8eeG1EV0ApO2lWbSnN6RWusn/NjqIAAAABHNzaDo= dummy@gitlab.com"›4156 is expected not to allow :key to be ‹"foo-bar"›4157 key format4158 does not allow the key that begins with an algorithm name that is unsupported4159 allows the key that begins with supported algorithm name 'ssh-rsa'4160 allows the key that begins with supported algorithm name 'ssh-dss'4161 allows the key that begins with supported algorithm name 'ecdsa-sha2-nistp256'4162 allows the key that begins with supported algorithm name 'ecdsa-sha2-nistp384'4163 allows the key that begins with supported algorithm name 'ecdsa-sha2-nistp521'4164 allows the key that begins with supported algorithm name 'ssh-ed25519'4165 allows the key that begins with supported algorithm name 'sk-ecdsa-sha2-nistp256@openssh.com'4166 allows the key that begins with supported algorithm name 'sk-ssh-ed25519@openssh.com'4167 validation of banned keys4168 key_content: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwRIdDlHaIqZXND/l1vFT7ue3rc/DvXh2yx5EFtuxGQRHVxGMazDhV4vj5ANGXDQwUYI0iZh6aOVrDy8I/y9/y+YDGCvsnqrDbuPDjW26s2bBXWgUPiC93T3TA6L2KOxhVcl7mljEOIYACRHPpJNYVGhinCxDUH9LxMrdNXgP5Ok= mateidu@localhost"4169 does not allow banned keys4170 key_content: "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBnZQ+6nhlPX/JnX5i5hXpljJ89bSnnrsSs51hSPuoJGmoKowBddISK7s10AIpO0xAWGcr8PUr2FOjEBbDHqlRxoXF0Ocms9xv3ql9EYUQ5+U+M6BymWhNTFPOs6gFHUl8Bw3t6c+SRKBpfRFB0yzBj9d093gSdfTAFoz+yLo4vRw=="4171 does not allow banned keys4172 key_content: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAvIhC5skTzxyHif/7iy3yhxuK6/OB13hjPqrskogkYFrcW8OK4VJT+5+Fx7wd4sQCnVn8rNqahw/x6sfcOMDI/Xvn4yKU4t8TnYf2MpUVr4ndz39L5Ds1n7Si1m2suUNxWbKv58I8+NMhlt2ITraSuTU0NGymWOc8+LNi+MHXdLk= SCCP Superuser"4173 does not allow banned keys4174 key_content: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key"4175 does not allow banned keys4176 key_content: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwRIdDlHaIqZXND/l1vFT7ue3rc/DvXh2yx5EFtuxGQRHVxGMazDhV4vj5ANGXDQwUYI0iZh6aOVrDy8I/y9/y+YDGCvsnqrDbuPDjW26s2bBXWgUPiC93T3TA6L2KOxhVcl7mljEOIYACRHPpJNYVGhinCxDUH9LxMrdNXgP5Ok= mateidu@localhost"4177 does not allow banned keys4178 key_content: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAn8LoId2N5i28cNKuEWWea3yt0I/LdT/NROrF44WZewtxch+DIwteQhM1qL6EKUSqz3Q2geX1crpOsNnyh67xy5lNo086u/QewOCSRAUGrQCXqFQ4JU8ny/qugWALQHjbIaPHj/3zMK09r4cpTSeAU7CW5nQyTKGmh7v9CAfWfcs= adam@localhost.localdomain"4179 does not allow banned keys4180 key_content: "ssh-dss AAAAB3NzaC1kc3MAAACBAJTDsX+8olPZeyr58g9XE0L8PKT5030NZBPlE7np4hBqx36HoWarWq1Csn8M57dWN9StKbs03k2ggY6sYJK5AW2EWar70um3pYjKQHiZq7mITmitsozFN/K7wu2e2iKRgquUwH5SuYoOJ29n7uhaILXiKZP4/H/dDudqPRSY6tJPAAAAFQDtuWH90mDbU2L/Ms2lfl/cja/wHwAAAIAMBwSHZt2ysOHCFe1WLUvdwVDHUqk3QHTskuuAnMlwMtSvCaUxSatdHahsMZ9VCHjoQUx6j+TcgRLDbMlRLnwUlb6wpniehLBFk+qakGcREqks5NxYzFTJXwROzP72jPvVgQyOZHWq81gCild/ljL7hmrduCqYwxDIz4o7U92UKQAAAIBmhSl9CVPgVMv1xO8DAHVhM1huIIK8mNFrzMJz+JXzBx81ms1kWSeQOC/nraaXFTBlqiQsvB8tzr4xZdbaI/QzVLKNAF5C8BJ4ScNlTIx1aZJwyMil8Nzb+0YAsw5Ja+bEZZvEVlAYnd10qRWrPeEY1txLMmX3wDa+JvJL7fmuBg=="4181 does not allow banned keys4182 key_content: "ssh-dss AAAAB3NzaC1kc3MAAACBAMq5EcIFdfCjJakyQnP/BBp9oc6mpaZVguf0Znp5C40twiG1lASQJZlM1qOB/hkBWYeBCHUkcOLEnVXSZzB62L+W/LGKodqnsiQPRr57AA6jPc6mNBnejHai8cSdAl9n/0s2IQjdcrxM8CPq2uEyfm0J3AV6Lrbbxr5NgE5xxM+DAAAAFQCmFk/M7Rx2jexsJ9COpHkHwUjcNQAAAIAdg18oByp/tjjDKhWhmmv+HbVIROkRqSxBvuEZEmcWlg38mLIT1bydfpSou/V4rI5ctxwCfJ1rRr66pw6GwCrz4fXmyVlhrj7TrktyQ9+zRXhynF4wdNPWErhNHb8tGlSOFiOBcUTlouX3V/ka6Dkd6ZQrZLQFaH+gjfyTZZ82HQAAAIEArsJgp7RLPOsCeLqoia/eljseBFVDazO5Q0ysUotTw9wgXGGVWREwm8wNggFNb9eCiBAAUfVZVfhVAtFT0pBf/eIVLPXyaMw3prBt7LqeBrbagODc3WAAdMTPIdYYcOKgv+YvTXa51zG64v6pQOfS8WXgKCzDl44puXfYeDk5lVQ="4183 does not allow banned keys4184 key_content: "ssh-dss AAAAB3NzaC1kc3MAAACBAKwKBw7D4OA1H/uD4htdh04TBIHdbSjeXUSnWJsce8C0tvoB01Yarjv9TFj+tfeDYVWtUK1DA1JkyqSuoAtDANJzF4I6Isyd0KPrW3dHFTcg6Xlz8d3KEaHokY93NOmB/xWEkhme8b7Q0U2iZie2pgWbTLXV0FA+lhskTtPHW3+VAAAAFQDRyayUlVZKXEweF3bUe03zt9e8VQAAAIAEPK1k3Y6ErAbIl96dnUCnZjuWQ7xXy062pf63QuRWI6LYSscm3f1pEknWUNFr/erQ02pkfi2eP9uHl1TI1ql+UmJX3g3frfssLNZwWXAW0m8PbY3HZSs+f5hevM3ua32pnKDmbQ2WpvKNyycKHi81hSI14xMcdblJolhN5iY8/wAAAIAjEe5+0m/TlBtVkqQbUit+s/g+eB+PFQ+raaQdL1uztW3etntXAPH1MjxsAC/vthWYSTYXORkDFMhrO5ssE2rfg9io0NDyTIZt+VRQMGdi++dH8ptU+ldl2ZejLFdTJFwFgcfXz+iQ1mx6h9TPX1crE1KoMAVOj3yKVfKpLB1EkA== root@lbslave"4185 does not allow banned keys4186 key_content: "ssh-dss AAAAB3NzaC1kc3MAAACBAN3AITryJMQyOKZjAky+mQ/8pOHIlu4q8pzmR0qotKaLm2yye5a0PY2rOaQRAzi7EPheBXbqTb8a8TrHhGXI5P7GUHaJho5HhEnw+5TwAvP72L7LcPwxMxj/rLcR/jV+uLMsVeJVWjwJcUv83yzPXoVjK0hrIm+RLLeuTM+gTylHAAAAFQD5gBdXsXAiTz1atzMg3xDFF1zlowAAAIAlLy6TCMlOBM0IcPsvP/9bEjDj0M8YZazdqt4amO2IaNUPYt9/sIsLOQfxIj8myDK1TOp8NyRJep7V5aICG4f3Q+XktlmLzdWn3sjvbWuIAXe1opjG2T69YhxfHZr8Wn7P4tpCgyqM4uHmUKrfnBzQQ9vkUUWsZoUXM2Z7vUXVfQAAAIAU6eNlphQWDwx0KOBiiYhF9BM6kDbQlyw8333rAG3G4CcjI2G8eYGtpBNliaD185UjCEsjPiudhGil/j4Zt/+VY3aGOLoi8kqXBBc8ZAML9bbkXpyhQhMgwiywx3ciFmvSn2UAin8yurStYPQxtXauZN5PYbdwCHPS7ApIStdpMA== wood@endec1"4187 does not allow banned keys4188 key_content: "ssh-dss AAAAB3NzaC1kc3MAAACBAISAE3CAX4hsxTw0dRc0gx8nQ41r3Vkj9OmG6LGeKWRmpy7C6vaExuupjxid76fd4aS56lCUEEoRlJ3zE93qoK9acI6EGqGQFLuDZ0fqMyRSX+ilf+1HDo/TRyuraggxp9Hj9LMpZVbpFATMm0+d9Xs7eLmaJjuMsowNlOf8NFdHAAAAFQCwdvqOAkR6QhuiAapQ/9iVuR0UAQAAAIBpLMo4dhSeWkChfv659WLPftxRrX/HR8YMD/jqa3R4PsVM2g6dQ1191nHugtdV7uaMeOqOJ/QRWeYM+UYwT0Zgx2LqvgVSjNDfdjk+ZRY8x3SmExFi62mKFoTGSOCXfcAfuanjaoF+sepnaiLUd+SoJShGYHoqR2QWiysTRqknlwAAAIBLEgYmr9XCSqjENFDVQPFELYKT7Zs9J87PjPS1AP0qF1OoRGZ5mefK6X/6VivPAUWmmmev/BuAs8M1HtfGeGGzMzDIiU/WZQ3bScLB1Ykrcjk7TOFD6xrnk/inYAp5l29hjidoAONcXoHmUAMYOKqn63Q2AsDpExVcmfj99/BlpQ=="4189 does not allow banned keys4190 Methods4191 is expected to respond to #projects4192 is expected to respond to #publishable_key4193 #publishable_keys4194 replaces SSH key comment with simple identifier of username + hostname4195 #update_last_used_at4196 updates the last used timestamp4197 scopes4198 .for_user4199 returns keys of the specified user only4200 .order_last_used_at_desc4201 sorts by last_used_at descending, with null values at last4202 expiration scopes4203 .expired_today_and_not_notified4204 returns keys that expire today and have not been notified4205 .expiring_soon_and_not_notified4206 returns keys that will expire soon4207 usage type scopes4208 auth scope returns auth and auth_and_signing keys4209 signing scope returns signing and auth_and_signing keys4210 validation of uniqueness (based on fingerprint uniqueness)4211 accepts the key once4212 does not accept the exact same key twice4213 does not accept a duplicate key with a different comment4214 #ensure_sha256_fingerprint!4215 with a valid SHA256 fingerprint4216 does nothing4217 with a missing SHA256 fingerprint4218 fingerprints are present4219 with an invalid public key4220 does not throw an exception4221 fingerprint generation4222 generates both md5 and sha256 fingerprints4223 with FIPS mode4224 generates only sha256 fingerprint4225 validate it is a fingerprintable key4226 accepts the fingerprintable key4227 rejects the unfingerprintable key (not a key)4228 factory: :key, characters: ["\n", "\r\n"], expected_sections: 34229 accepts a key with blank space characters after stripping them4230 factory: :key, characters: [" ", " "], expected_sections: 34231 accepts a key with blank space characters after stripping them4232 factory: :key_without_comment, characters: [" ", " "], expected_sections: 24233 accepts a key with blank space characters after stripping them4234 validate it meets key restrictions4235 factory: :rsa_key_2048, minimum: 0, result: true4236 is expected to eq true4237 factory: :dsa_key_2048, minimum: 0, result: true4238 is expected to eq true4239 factory: :ecdsa_key_256, minimum: 0, result: true4240 is expected to eq true4241 factory: :ed25519_key_256, minimum: 0, result: true4242 is expected to eq true4243 factory: :ecdsa_sk_key_256, minimum: 0, result: true4244 is expected to eq true4245 factory: :ed25519_sk_key_256, minimum: 0, result: true4246 is expected to eq true4247 factory: :rsa_key_2048, minimum: 1024, result: true4248 is expected to eq true4249 factory: :rsa_key_2048, minimum: 2048, result: true4250 is expected to eq true4251 factory: :rsa_key_2048, minimum: 4096, result: false4252 is expected to eq false4253 factory: :dsa_key_2048, minimum: 1024, result: true4254 is expected to eq true4255 factory: :dsa_key_2048, minimum: 2048, result: true4256 is expected to eq true4257 factory: :dsa_key_2048, minimum: 4096, result: false4258 is expected to eq false4259 factory: :ecdsa_key_256, minimum: 256, result: true4260 is expected to eq true4261 factory: :ecdsa_key_256, minimum: 384, result: false4262 is expected to eq false4263 factory: :ed25519_key_256, minimum: 256, result: true4264 is expected to eq true4265 factory: :ed25519_key_256, minimum: 384, result: false4266 is expected to eq false4267 factory: :ecdsa_sk_key_256, minimum: 256, result: true4268 is expected to eq true4269 factory: :ecdsa_sk_key_256, minimum: 384, result: false4270 is expected to eq false4271 factory: :ed25519_sk_key_256, minimum: 256, result: true4272 is expected to eq true4273 factory: :ed25519_sk_key_256, minimum: 384, result: false4274 is expected to eq false4275 factory: :rsa_key_2048, minimum: -1, result: false4276 is expected to eq false4277 factory: :dsa_key_2048, minimum: -1, result: false4278 is expected to eq false4279 factory: :ecdsa_key_256, minimum: -1, result: false4280 is expected to eq false4281 factory: :ed25519_key_256, minimum: -1, result: false4282 is expected to eq false4283 factory: :ecdsa_sk_key_256, minimum: -1, result: false4284 is expected to eq false4285 factory: :ed25519_sk_key_256, minimum: -1, result: false4286 is expected to eq false4287 callbacks4288 authorized keys file is enabled4289 adds new key to authorized_file4290 removes key from authorized_file4291 authorized_keys file is disabled4292 does not add the key on creation4293 does not remove the key on destruction4294 #key=4295 strips white spaces4296 invalidates the public_key attribute4297 #refresh_user_cache4298 when the key belongs to a user4299 refreshes the keys count cache for the user4300 when the key does not belong to a user4301 does nothing4302 #signing?4303 returns whether a key can be used for signing4304MergeRequestDiffCommit4305 behaves like a BulkInsertSafe model4306 when calling class methods directly4307 raises an error when method is not bulk-insert safe4308 does not raise an error when method is bulk-insert safe4309 .bulk_insert!4310 when all items are valid4311 inserts them all4312 returns an empty array4313 when some items are invalid4314 does not insert any of them and raises an error4315 inserts them anyway when bypassing validations4316 associations4317 is expected to belong to commit_author required: false4318 is expected to belong to committer required: false4319 #to_hash4320 returns the same results as Commit#to_hash, except for parent_ids4321 .create_bulk4322 inserts the commits into the database en masse4323 creates diff commit users4324 with dates larger than the DB limit4325 uses a sanitized date4326 .prepare_commits_for_bulk_insert4327 returns the commit hashes and unique user tuples4328Snippets::DestroyService4329 #execute4330 when snippet is nil4331 returns a ServiceResponse error4332 when ProjectSnippet4333 when user is able to admin_project_snippet4334 behaves like a successful destroy4335 deletes the snippet4336 returns ServiceResponse success4337 behaves like deletes the snippet repository4338 removes the snippet repository4339 when the repository deletion service raises an error4340 behaves like an unsuccessful destroy4341 does not delete the snippet4342 returns ServiceResponse error4343 when a destroy error is raised4344 behaves like an unsuccessful destroy4345 does not delete the snippet4346 returns ServiceResponse error4347 when repository is nil4348 does not schedule anything and return success4349 project statistics4350 updates stats after deletion4351 schedules a namespace statistics update4352 when user is not able to admin_project_snippet4353 behaves like an unsuccessful destroy4354 does not delete the snippet4355 returns ServiceResponse error4356 when PersonalSnippet4357 when user is able to admin_personal_snippet4358 schedules a namespace statistics update4359 behaves like a successful destroy4360 deletes the snippet4361 returns ServiceResponse success4362 behaves like deletes the snippet repository4363 removes the snippet repository4364 when the repository deletion service raises an error4365 behaves like an unsuccessful destroy4366 does not delete the snippet4367 returns ServiceResponse error4368 when a destroy error is raised4369 behaves like an unsuccessful destroy4370 does not delete the snippet4371 returns ServiceResponse error4372 when repository is nil4373 does not schedule anything and return success4374 when user is not able to admin_personal_snippet4375 behaves like an unsuccessful destroy4376 does not delete the snippet4377 returns ServiceResponse error4378 when the repository does not exist4379 does not schedule anything and return success4380Gitlab::ImportExport::Project::Sample::RelationTreeRestorer4381 initializes relation_factory with date_calculator as parameter4382 when relation tree restorer is initialized4383 initializes date calculator with due dates4384 using ndjson reader4385 behaves like import project successfully4386 restores project tree4387 imported project4388 has the project attributes and relations4389 has issues with correctly updated due dates4390 has milestones with correctly updated due dates4391Gitlab::ReferenceExtractor4392 accesses valid user objects4393 ignores user mentions inside specific elements4394 does not include anchors from table of contents in issue references4395 accesses valid issue objects4396 accesses valid merge requests4397 accesses valid labels4398 accesses valid snippets4399 accesses valid commits4400 accesses valid commit ranges4401 directly addressed users4402 when a user is directly addressed4403 accesses the user object which is mentioned in the beginning of the line4404 doesn't access the user object if it's not mentioned in the beginning of the line4405 when multiple users are addressed4406 accesses the user objects which are mentioned in the beginning of the line4407 doesn't access the user objects if they are not mentioned in the beginning of the line4408 when multiple users are addressed in different paragraphs4409 accesses user objects which are mentioned in the beginning of each paragraph4410 with an external issue tracker4411 when GitLab issues are enabled4412 returns both Jira and internal issues4413 returns only Jira issues if the internal one does not exist4414 when GitLab issues are disabled4415 returns only Jira issues4416 with an inactive external issue tracker4417 when GitLab issues are enabled4418 returns only internal issue4419 does not return any issue if the internal one does not exist4420 with a project with an underscore4421 handles project issue references4422 #all4423 returns all referables4424 #alerts4425 returns alert referables4426 .references_pattern4427 is expected to be a kind of Regexp4428 referables prefixes4429 returns all supported prefixes4430 does not allow one prefix for multiple referables if not allowed specificly4431 #references4432 does not return any references4433 when references are visible4434 returns visible references of given type4435 #all_visible?4436 returns true if no references were parsed yet4437 when references was already called4438 returns false4439 when user can access only some references4440 returns false4441 when user can access all references4442 returns true4443TemplateFinder4444 #build4445 type: :dockerfiles, expected_class: TemplateFinder4446 is expected to be a kind of TemplateFinder4447 is expected to eq #<Project id:1021 namespace396/project-446>>4448 type: :gitignores, expected_class: TemplateFinder4449 is expected to be a kind of TemplateFinder4450 is expected to eq #<Project id:1027 namespace398/project-448>>4451 type: :gitlab_ci_ymls, expected_class: TemplateFinder4452 is expected to be a kind of TemplateFinder4453 is expected to eq #<Project id:1033 namespace400/project-450>>4454 type: :licenses, expected_class: LicenseTemplateFinder4455 is expected to be a kind of LicenseTemplateFinder4456 is expected to eq #<Project id:1039 namespace402/project-452>>4457 type: :metrics_dashboard_ymls, expected_class: TemplateFinder4458 is expected to be a kind of TemplateFinder4459 is expected to eq #<Project id:1045 namespace404/project-454>>4460 type: :issues, expected_class: TemplateFinder4461 is expected to be a kind of TemplateFinder4462 is expected to eq #<Project id:1051 namespace406/project-456>>4463 type: :merge_requests, expected_class: TemplateFinder4464 is expected to be a kind of TemplateFinder4465 is expected to eq #<Project id:1057 namespace408/project-458>>4466 when metrics dashboard is unavailable4467 is expected to be nil4468 #execute4469 when no project is passed in4470 behaves like fetches predefined vendor templates4471 type: :dockerfiles, vendored_name: "Binary"4472 returns all vendored templates when no name is specified4473 with name param4474 returns only the specified vendored template when a name is specified4475 with mistaken name param4476 returns nil when an unknown name is specified4477 type: :gitignores, vendored_name: "Actionscript"4478 returns all vendored templates when no name is specified4479 with name param4480 returns only the specified vendored template when a name is specified4481 with mistaken name param4482 returns nil when an unknown name is specified4483 type: :gitlab_ci_ymls, vendored_name: "Android"4484 returns all vendored templates when no name is specified4485 with name param4486 returns only the specified vendored template when a name is specified4487 with mistaken name param4488 returns nil when an unknown name is specified4489 type: :metrics_dashboard_ymls, vendored_name: "Default"4490 returns all vendored templates when no name is specified4491 with name param4492 returns only the specified vendored template when a name is specified4493 with mistaken name param4494 returns nil when an unknown name is specified4495 behaves like no issues and merge requests templates available4496 with issue and merge request templates4497 type: :issues, vendored_name: nil4498 when fetching all templates4499 returns empty array4500 when looking for specific template by name4501 raises an error4502 type: :merge_requests, vendored_name: nil4503 when fetching all templates4504 returns empty array4505 when looking for specific template by name4506 raises an error4507 when project has no repository4508 behaves like fetches predefined vendor templates4509 type: :dockerfiles, vendored_name: "Binary"4510 returns all vendored templates when no name is specified4511 with name param4512 returns only the specified vendored template when a name is specified4513 with mistaken name param4514 returns nil when an unknown name is specified4515 type: :gitignores, vendored_name: "Actionscript"4516 returns all vendored templates when no name is specified4517 with name param4518 returns only the specified vendored template when a name is specified4519 with mistaken name param4520 returns nil when an unknown name is specified4521 type: :gitlab_ci_ymls, vendored_name: "Android"4522 returns all vendored templates when no name is specified4523 with name param4524 returns only the specified vendored template when a name is specified4525 with mistaken name param4526 returns nil when an unknown name is specified4527 type: :metrics_dashboard_ymls, vendored_name: "Default"4528 returns all vendored templates when no name is specified4529 with name param4530 returns only the specified vendored template when a name is specified4531 with mistaken name param4532 returns nil when an unknown name is specified4533 behaves like no issues and merge requests templates available4534 with issue and merge request templates4535 type: :issues, vendored_name: nil4536 when fetching all templates4537 returns empty array4538 when looking for specific template by name4539 raises an error4540 type: :merge_requests, vendored_name: nil4541 when fetching all templates4542 returns empty array4543 when looking for specific template by name4544 raises an error4545 when project has a repository4546 behaves like fetches predefined vendor templates4547 type: :dockerfiles, vendored_name: "Binary"4548 returns all vendored templates when no name is specified4549 with name param4550 returns only the specified vendored template when a name is specified4551 with mistaken name param4552 returns nil when an unknown name is specified4553 type: :gitignores, vendored_name: "Actionscript"4554 returns all vendored templates when no name is specified4555 with name param4556 returns only the specified vendored template when a name is specified4557 with mistaken name param4558 returns nil when an unknown name is specified4559 type: :gitlab_ci_ymls, vendored_name: "Android"4560 returns all vendored templates when no name is specified4561 with name param4562 returns only the specified vendored template when a name is specified4563 with mistaken name param4564 returns nil when an unknown name is specified4565 type: :metrics_dashboard_ymls, vendored_name: "Default"4566 returns all vendored templates when no name is specified4567 with name param4568 returns only the specified vendored template when a name is specified4569 with mistaken name param4570 returns nil when an unknown name is specified4571 behaves like fetches issues and merge requests templates4572 type: :issues, template_name: "project_issues_template"4573 returns all repository template files for issues and merge requests4574 with name param4575 returns only the specified vendored template when a name is specified4576 with mistaken name param4577 raises an error when an unknown name is specified4578 type: :merge_requests, template_name: "project_merge_requests_template"4579 returns all repository template files for issues and merge requests4580 with name param4581 returns only the specified vendored template when a name is specified4582 with mistaken name param4583 raises an error when an unknown name is specified4584 #template_names4585 type: :dockerfiles, vendored_name: "Binary"4586 when no project is passed in4587 returns all vendored templates when no name is specified4588 when project has no repository4589 returns all vendored templates when no name is specified4590 when project has a repository4591 returns all vendored templates when no name is specified4592 template names hash keys4593 has all the expected keys4594 type: :gitignores, vendored_name: "Actionscript"4595 when no project is passed in4596 returns all vendored templates when no name is specified4597 when project has no repository4598 returns all vendored templates when no name is specified4599 when project has a repository4600 returns all vendored templates when no name is specified4601 template names hash keys4602 has all the expected keys4603 type: :gitlab_ci_ymls, vendored_name: "Android"4604 when no project is passed in4605 returns all vendored templates when no name is specified4606 when project has no repository4607 returns all vendored templates when no name is specified4608 when project has a repository4609 returns all vendored templates when no name is specified4610 template names hash keys4611 has all the expected keys4612 type: :metrics_dashboard_ymls, vendored_name: "Default"4613 when no project is passed in4614 returns all vendored templates when no name is specified4615 when project has no repository4616 returns all vendored templates when no name is specified4617 when project has a repository4618 returns all vendored templates when no name is specified4619 template names hash keys4620 has all the expected keys4621 type: :issues, template_name: "project_issues_template"4622 when no project is passed in4623 returns all vendored templates when no name is specified4624 when project has no repository4625 returns all vendored templates when no name is specified4626 when project has a repository4627 returns all vendored templates when no name is specified4628 template names hash keys4629 has all the expected keys4630 type: :merge_requests, template_name: "project_merge_requests_template"4631 when no project is passed in4632 returns all vendored templates when no name is specified4633 when project has no repository4634 returns all vendored templates when no name is specified4635 when project has a repository4636 returns all vendored templates when no name is specified4637 template names hash keys4638 has all the expected keys4639Gitlab::Database::PartitioningMigrationHelpers::TableManagementHelpers4640 list partitioning conversion helpers4641 #convert_table_to_first_list_partition4642 behaves like delegates to ConvertTable4643 throws an error if in a transaction4644 delegates to a method on List::ConvertTable4645 #revert_converting_table_to_first_list_partition4646 behaves like delegates to ConvertTable4647 throws an error if in a transaction4648 delegates to a method on List::ConvertTable4649 #prepare_constraint_for_list_partitioning4650 behaves like delegates to ConvertTable4651 throws an error if in a transaction4652 delegates to a method on List::ConvertTable4653 #revert_preparing_constraint_for_list_partitioning4654 behaves like delegates to ConvertTable4655 throws an error if in a transaction4656 delegates to a method on List::ConvertTable4657 #partition_table_by_date4658 when the table is not allowed4659 raises an error4660 when run inside a transaction block4661 raises an error4662 when the the max_date is less than the min_date4663 raises an error4664 when the max_date is equal to the min_date4665 raises an error4666 when the given table does not have a primary key4667 raises an error4668 when an invalid partition column is given4669 raises an error4670 constructing the partitioned table4671 creates a table partitioned by the proper column4672 requires the migration helper to be run in DDL mode4673 changes the primary key datatype to bigint4674 removes the default from the primary key column4675 creates the partitioned table with the same non-key columns4676 creates a partition spanning over each month in the range given4677 with a non-integer primary key datatype4678 does not change the primary key datatype4679 when min_date is not given4680 with records present already4681 creates a partition spanning over each month from the first record4682 without data4683 creates the catchall partition plus two actual partition4684 when max_date is not given4685 creates partitions including the next month from today4686 without min_date, max_date4687 creates partitions for the current and next month4688 keeping data in sync with the partitioned table4689 creates a trigger function on the original table4690 syncs inserts to the partitioned tables4691 syncs updates to the partitioned tables4692 syncs deletes to the partitioned tables4693 #drop_partitioned_table_for4694 drops the trigger syncing to the partitioned table4695 drops the partitioned copy and all partitions4696 when the table is not allowed4697 raises an error4698 #enqueue_partitioning_data_migration4699 when the table is not allowed4700 raises an error4701 when run inside a transaction block4702 raises an error4703 when records exist in the source table4704 enqueues jobs to copy each batch of data4705 #cleanup_partitioning_data_migration4706 when the table is not allowed4707 raises an error4708 when tracking records exist in the batched_background_migrations table4709 deletes those pertaining to the given table4710 #create_hash_partitions4711 creates partitions for the full hash space (8 partitions)4712 creates partitions for the full hash space (16 partitions)4713 #finalize_backfilling_partitioned_table4714 when the table is not allowed4715 raises an error4716 when the partitioned table does not exist4717 raises an error4718 finishing pending batched background migration jobs4719 ensures finishing of remaining jobs and vacuums the partitioned table4720 #replace_with_partitioned_table4721 replaces the original table with the partitioned table4722 moves the trigger from the original table to the new table4723 #rollback_replace_with_partitioned_table4724 replaces the partitioned table with the non-partitioned table4725 moves the trigger from the partitioned table to the non-partitioned table4726 #drop_nonpartitioned_archive_table4727 drops the archive table4728 drops the trigger on the source table4729 drops the sync function4730 #create_trigger_to_sync_tables4731 creates the sync function4732 installs the trigger4733Packages::Debian::ProcessChangesWorker4734 #perform4735 with mocked service4736 calls ProcessChangesService4737 with non existing package file4738 returns early without error4739 with nil package file id4740 returns early without error4741 with non existing user4742 returns early without error4743 with nil user id4744 returns early without error4745 without a distribution4746 removes package file and log exception4747 when the service raises an error4748 removes package file and log exception4749 behaves like an idempotent worker4750 is labeled as idempotent4751 performs multiple times sequentially without raising an exception4752 sets the Debian file type as changes4753ResourceAccessTokens::RevokeService4754 #execute4755 when resource is a project4756 behaves like revokes access token4757 is expected to equal true4758 is expected to eq "Access token PAT 2 has been revoked and the bot user has been scheduled for deletion."4759 calls delete user worker4760 removes membership of bot user4761 initiates user removal4762 logs the event4763 behaves like revoke fails4764 when access token does not belong to this project4765 does not find the bot4766 when user does not have permission to destroy bot4767 when non-project member tries to delete project bot4768 does not allow other user to delete bot4769 when non-priviledged project member tries to delete project bot4770 does not allow developer to delete bot4771 when deletion of bot user fails4772 behaves like rollback revoke steps4773 does not revoke the access token4774 does not remove bot from member list4775 does not transfer issuables of bot user to ghost user4776 does not destroy project bot user4777 when resource is a group4778 behaves like revokes access token4779 is expected to equal true4780 is expected to eq "Access token PAT 16 has been revoked and the bot user has been scheduled for deletion."4781 calls delete user worker4782 removes membership of bot user4783 initiates user removal4784 logs the event4785 behaves like revoke fails4786 when access token does not belong to this group4787 does not find the bot4788 when user does not have permission to destroy bot4789 when non-group member tries to delete project bot4790 does not allow other user to delete bot4791 when non-priviledged group member tries to delete project bot4792 does not allow developer to delete bot4793 when deletion of bot user fails4794 behaves like rollback revoke steps4795 does not revoke the access token4796 does not remove bot from member list4797 does not transfer issuables of bot user to ghost user4798 does not destroy project bot user4799Gitlab::RepositoryCacheAdapter4800 .cache_method_output_as_redis_set4801 with an existing repository4802 caches the output, sorting the results4803 membership checks4804 when the cache key does not exist4805 calls the original method and populates the cache4806 when the cache key exists4807 calls #try_include? on the set cache4808 memoizes the result4809 #cache_method_output4810 with a non-existing repository4811 returns the fallback value4812 avoids calling the original method4813 with a method throwing a non-existing-repository error4814 returns the fallback value4815 does not cache the data4816 with an existing repository4817 caches the output4818 #cache_method_output_asymmetrically4819 with a non-existing repository4820 returns the output of the original method4821 with a method throwing a non-existing-repository error4822 returns nil4823 does not cache the data4824 with an existing repository4825 when it returns truthy4826 caches the output in RequestStore4827 caches the output in RepositoryCache4828 when it returns false4829 caches the output in RequestStore4830 does NOT cache the output in RepositoryCache4831 #memoize_method_output4832 with a non-existing repository4833 returns the fallback value4834 avoids calling the original method4835 does not set the instance variable4836 with a method throwing a non-existing-repository error4837 returns the fallback value4838 does not set the instance variable4839 with an existing repository4840 sets the instance variable4841 #expire_method_caches4842 expires the caches of the given methods4843 does not expire caches for non-existent methods4844Gitlab::Counters::BufferedCounter4845 # order random4846 #finalize_refresh4847 with existing amount in refresh key4848 moves the deduplicated amount in the refresh key into the counter key4849 removes the refresh counter key and the refresh indicator4850 schedules a worker to clean up the refresh tracking keys4851 without existing amount in refresh key4852 does not change the counter key4853 removes the refresh indicator key4854 schedules a worker to commit the counter key into database4855 #bulk_increment4856 when the counter is not undergoing refresh4857 increments the key by the given values4858 returns the value of the key after the increment4859 schedules a worker to commit the counter into database4860 when the counter is undergoing refresh4861 when there are 2 increments on different ref4862 behaves like changing the counter refresh key by the expected amount4863 changes the counter refresh key by the net change4864 returns the value of the key after the increment4865 when there has been previous decrements4866 behaves like changing the counter refresh key by the expected amount4867 changes the counter refresh key by the net change4868 returns the value of the key after the increment4869 when one of the increment is repeated4870 behaves like changing the counter refresh key by the expected amount4871 changes the counter refresh key by the net change4872 returns the value of the key after the increment4873 when there are 2 decrements on different ref4874 behaves like changing the counter refresh key by the expected amount4875 changes the counter refresh key by the net change4876 returns the value of the key after the increment4877 when there has been previous increments4878 behaves like changing the counter refresh key by the expected amount4879 changes the counter refresh key by the net change4880 returns the value of the key after the increment4881 when there is a mixture of increment and decrement on different refs4882 behaves like changing the counter refresh key by the expected amount4883 changes the counter refresh key by the net change4884 returns the value of the key after the increment4885 when the increment ref has been decremented4886 behaves like changing the counter refresh key by the expected amount4887 changes the counter refresh key by the net change4888 returns the value of the key after the increment4889 when the decrement ref has been incremented4890 behaves like changing the counter refresh key by the expected amount4891 changes the counter refresh key by the net change4892 returns the value of the key after the increment4893 when feature flag is disabled4894 when the counter is not undergoing refresh4895 sets a new key by the given value4896 increments an existing key by the given value4897 when the counter is undergoing refresh4898 when it is a decrement (negative amount)4899 immediately decrements the counter key to negative4900 #initiate_refresh!4901 removes the key from Redis4902 resets the counter to 04903 resets the record to 04904 sets a refresh indicator with a long expiry4905 #amount_to_be_flushed4906 increment: nil, flushed: nil, result: 0, flushed_key_present: false4907 returns the current value to be flushed4908 drops the increment key and creates the flushed key if it does not exist4909 increment: nil, flushed: 0, result: 0, flushed_key_present: false4910 returns the current value to be flushed4911 drops the increment key and creates the flushed key if it does not exist4912 increment: 0, flushed: 0, result: 0, flushed_key_present: false4913 returns the current value to be flushed4914 drops the increment key and creates the flushed key if it does not exist4915 increment: 1, flushed: 0, result: 1, flushed_key_present: true4916 returns the current value to be flushed4917 drops the increment key and creates the flushed key if it does not exist4918 increment: 1, flushed: nil, result: 1, flushed_key_present: true4919 returns the current value to be flushed4920 drops the increment key and creates the flushed key if it does not exist4921 increment: 1, flushed: 1, result: 2, flushed_key_present: true4922 returns the current value to be flushed4923 drops the increment key and creates the flushed key if it does not exist4924 increment: 1, flushed: -2, result: -1, flushed_key_present: true4925 returns the current value to be flushed4926 drops the increment key and creates the flushed key if it does not exist4927 increment: -1, flushed: 1, result: 0, flushed_key_present: false4928 returns the current value to be flushed4929 drops the increment key and creates the flushed key if it does not exist4930 #get4931 returns the value when there is an existing value stored in the counter4932 returns 0 when there is no existing value4933 #increment4934 when the counter is not undergoing refresh4935 sets a new key by the given value4936 increments an existing key by the given value4937 returns the value of the key after the increment4938 schedules a worker to commit the counter key into database4939 when the counter is undergoing refresh4940 does not increment the counter key4941 increments the amount in the refresh key4942 schedules a worker to commit the counter key into database4943 when it is an increment (positive amount)4944 when it is the first increment on the ref4945 behaves like changing the counter refresh key by the given amount4946 changes the refresh counter key by the given value4947 returns the value of the key after the increment4948 when it follows an existing increment on the same ref4949 behaves like not changing the counter refresh key4950 does not change the counter4951 returns the unchanged value of the key4952 when it follows an existing decrement on the same ref4953 behaves like not changing the counter refresh key4954 does not change the counter4955 returns the unchanged value of the key4956 when there has been an existing increment on another ref4957 behaves like changing the counter refresh key by the given amount4958 changes the refresh counter key by the given value4959 returns the value of the key after the increment4960 when there has been an existing decrement on another ref4961 behaves like changing the counter refresh key by the given amount4962 changes the refresh counter key by the given value4963 returns the value of the key after the increment4964 when it is a decrement (negative amount)4965 when it is the first decrement on the same ref4966 behaves like not changing the counter refresh key4967 does not change the counter4968 returns the unchanged value of the key4969 when it follows an existing decrement on the ref4970 behaves like not changing the counter refresh key4971 does not change the counter4972 returns the unchanged value of the key4973 when it follows an existing increment on the ref4974 behaves like changing the counter refresh key by the given amount4975 changes the refresh counter key by the given value4976 returns the value of the key after the increment4977 when there has been an existing increment on another ref4978 behaves like not changing the counter refresh key4979 does not change the counter4980 returns the unchanged value of the key4981 when there has been an existing decrement on another ref4982 behaves like not changing the counter refresh key4983 does not change the counter4984 returns the unchanged value of the key4985 when the amount is 04986 when it is the first increment on the ref4987 behaves like not changing the counter refresh key4988 does not change the counter4989 returns the unchanged value of the key4990 when it follows the another increment on the ref4991 behaves like not changing the counter refresh key4992 does not change the counter4993 returns the unchanged value of the key4994 when the ref is greater than 67108863 (8MB)4995 deduplicates increments correctly4996 when feature flag is disabled4997 when the counter is not undergoing refresh4998 sets a new key by the given value4999 increments an existing key by the given value5000 when the counter is undergoing refresh5001 when it is a decrement (negative amount)5002 immediately decrements the counter key to negative5003 #cleanup_refresh5004 removes all tracking keys5005 #commit_increment!5006 obtains an exclusive lease during processing5007 when there is an amount to commit5008 commits the increment into the database5009 removes the increment entry from Redis5010 when there are no counters to flush5011 when there are no counters in the relative :flushed key5012 does not change the record5013 when there are counters in the relative :flushed key5014 updates the record5015 deletes the relative :flushed key5016 when deleting :flushed key fails5017 does a rollback of the counter update5018 when the counter record has after_commit callbacks5019 has registered callbacks5020 when there are increments to flush5021 executes the callbacks5022 when there are no increments to flush5023 does not execute the callbacks5024Ci::PipelineEntity5025 #as_json5026 when pipeline is empty5027 contains required fields5028 excludes coverage data when disabled5029 contains details5030 contains flags5031 when default branch not protected5032 when pipeline is retryable5033 does not serialize stage builds5034 user has ability to retry pipeline5035 contains retry path5036 user does not have ability to retry pipeline5037 does not contain retry path5038 when pipeline is cancelable5039 does not serialize stage builds5040 user has ability to cancel pipeline5041 contains cancel path5042 user does not have ability to cancel pipeline5043 does not contain cancel path5044 delete path5045 user has ability to delete pipeline5046 contains delete path5047 user does not have ability to delete pipeline5048 does not contain delete path5049 when pipeline ref is empty5050 does not generate branch path5051 when pipeline has a failure reason set5052 has a correct failure reason5053 when request has a project5054 when pipeline is detached merge request pipeline5055 makes detached flag true5056 does not expose source sha and target sha5057 when user is a developer5058 has merge request information5059 when user is an external user5060 has no merge request information5061 when pipeline is merge request pipeline5062 makes detached flag false5063 makes atached flag true5064 exposes source sha and target sha5065 exposes merge request event type5066 when pipeline has failed builds5067 when the user can retry the pipeline5068 exposes these failed builds5069 when the user cannot retry the pipeline5070 is nil5071 when pipeline has coverage5072 exposes the coverage5073Gitlab::LegacyGithubImport::PullRequestFormatter5074 when importing a GitHub project5075 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#attributes5076 when pull request is open5077 returns formatted attributes5078 when pull request is closed5079 returns formatted attributes5080 when pull request is merged5081 returns formatted attributes5082 when it is assigned to someone5083 returns nil as assignee_id when is not a GitLab user5084 returns GitLab user id associated with GitHub id as assignee_id5085 returns GitLab user id associated with GitHub email as assignee_id5086 when author is a GitLab user5087 returns project creator_id as author_id when is not a GitLab user5088 returns GitLab user id associated with GitHub id as author_id5089 returns GitLab user id associated with GitHub email as author_id5090 returns description without created at tag line5091 when it has a milestone5092 returns nil when milestone does not exist5093 returns milestone when it exists5094 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#number5095 returns pull request number5096 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#source_branch_name5097 when source branch exists5098 returns branch ref5099 when source branch does not exist5100 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision5101 when source branch is from a fork5102 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision5103 when source branch is from a deleted fork5104 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision5105 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#target_branch_name5106 when target branch exists5107 returns branch ref5108 when target branch does not exist5109 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision5110 when importing a Gitea project5111 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#attributes5112 when pull request is open5113 returns formatted attributes5114 when pull request is closed5115 returns formatted attributes5116 when pull request is merged5117 returns formatted attributes5118 when it is assigned to someone5119 returns nil as assignee_id when is not a GitLab user5120 returns GitLab user id associated with GitHub id as assignee_id5121 returns GitLab user id associated with GitHub email as assignee_id5122 when author is a GitLab user5123 returns project creator_id as author_id when is not a GitLab user5124 returns GitLab user id associated with GitHub id as author_id5125 returns GitLab user id associated with GitHub email as author_id5126 returns description without created at tag line5127 when it has a milestone5128 returns nil when milestone does not exist5129 returns milestone when it exists5130 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#number5131 returns pull request number5132 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#source_branch_name5133 when source branch exists5134 returns branch ref5135 when source branch does not exist5136 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision5137 when source branch is from a fork5138 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision5139 when source branch is from a deleted fork5140 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision5141 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#target_branch_name5142 when target branch exists5143 returns branch ref5144 when target branch does not exist5145 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision5146 #valid?5147 when source, and target repos are not a fork5148 returns true5149 when source repo is a fork5150 returns true5151 when target repo is a fork5152 returns true5153 #cross_project?5154 when source and target repositories are different5155 returns true5156 when source repository does not exist anymore5157 returns true5158 when source and target repositories are the same5159 returns false5160 #source_branch_exists?5161 returns false when is a cross_project5162 #url5163 return raw url5164 #opened?5165 returns true when state is "open"5166Environments::EnvironmentsByDeploymentsFinder5167 #execute5168 tagged deployment5169 does not return environment when commit is not part of deployment5170 only calls Gitaly twice when multiple environments are present5171 branch deployment5172 returns environment when ref is set5173 does not environment when ref is different5174 does not return environment when commit is not part of deployment5175 returns environment when commit constraint is not set5176 sha deployment5177 returns environment5178 does not return environment when sha is different5179 commit deployment5180 returns environment5181 recently updated5182 when last deployment to environment is the most recent one5183 finds recently updated environment5184 when last deployment to environment is not the most recent5185 does not find environment5186 when there are two environments that deploy to the same branch5187 finds both environments5188Gitlab::Ci::Trace::Stream5189 delegates5190 is expected to delegate #close to the #stream object5191 is expected to delegate #tell to the #stream object5192 is expected to delegate #seek to the #stream object5193 is expected to delegate #size to the #stream object5194 is expected to delegate #path to the #stream object5195 is expected to delegate #truncate to the #stream object5196 is expected to delegate #valid? to the #stream object as #present?5197 #limit5198 when stream is StringIO5199 behaves like limits5200 if size is larger we start from beginning5201 if size is smaller we start from the end5202 when the trace contains ANSI sequence and Unicode5203 forwards to the next linefeed, case 15204 forwards to the next linefeed, case 25205 reads in binary, output as Encoding.default_external5206 when stream is ChunkedIO5207 behaves like limits5208 if size is larger we start from beginning5209 if size is smaller we start from the end5210 when the trace contains ANSI sequence and Unicode5211 forwards to the next linefeed, case 15212 forwards to the next linefeed, case 25213 reads in binary, output as Encoding.default_external5214 #append5215 when stream is Tempfile5216 behaves like appends5217 truncates and appends content5218 appends in binary mode5219 when stream is ChunkedIO5220 behaves like appends5221 truncates and appends content5222 appends in binary mode5223 metrics5224 increments trace streamed operation5225 increments trace bytes counter5226 #set5227 when stream is StringIO5228 behaves like sets5229 overwrite content5230 when stream is ChunkedIO5231 behaves like sets5232 overwrite content5233 #raw5234 when stream is File5235 behaves like sets5236 returns all contents if last_lines is not specified5237 limit max lines5238 returns last few lines5239 returns everything if trying to get too many lines5240 when stream is ChunkedIO5241 behaves like sets5242 returns all contents if last_lines is not specified5243 limit max lines5244 returns last few lines5245 returns everything if trying to get too many lines5246 #html5247 when stream is StringIO5248 behaves like htmls5249 returns html5250 returns html for last line only5251 when stream is ChunkedIO5252 behaves like htmls5253 returns html5254 returns html for last line only5255 #extract_coverage5256 when stream is StringIO5257 behaves like extract_coverages5258 valid content & regex5259 is expected to eq "98.29"5260 valid content & bad regex5261 is expected to be nil5262 no coverage content & regex5263 is expected to be nil5264 multiple results in content & regex5265 returns the last matched coverage5266 when BUFFER_SIZE is smaller than stream.size5267 is expected to eq "98.29"5268 when regex is multi-byte char5269 is expected to eq "95.0"5270 when BUFFER_SIZE is equal to stream.size5271 is expected to eq "98.29"5272 using a regex capture5273 is expected to eq "65"5274 malicious regexp5275 takes under a second5276 multi-line data with rooted regexp5277 is expected to eq "65"5278 long line5279 is expected to eq "100"5280 many lines5281 is expected to eq "100"5282 empty regex5283 skips processing5284 nil regex5285 skips processing5286 when stream is ChunkedIO5287 behaves like extract_coverages5288 valid content & regex5289 is expected to eq "98.29"5290 valid content & bad regex5291 is expected to be nil5292 no coverage content & regex5293 is expected to be nil5294 multiple results in content & regex5295 returns the last matched coverage5296 when BUFFER_SIZE is smaller than stream.size5297 is expected to eq "98.29"5298 when regex is multi-byte char5299 is expected to eq "95.0"5300 when BUFFER_SIZE is equal to stream.size5301 is expected to eq "98.29"5302 using a regex capture5303 is expected to eq "65"5304 malicious regexp5305 takes under a second5306 multi-line data with rooted regexp5307 is expected to eq "65"5308 long line5309 is expected to eq "100"5310 many lines5311 is expected to eq "100"5312 empty regex5313 skips processing5314 nil regex5315 skips processing5316Search::GroupService5317 basic search5318 finding projects by name5319 in parent group5320 is expected to contain exactly #<Project id:491 group357/group356/project-526>>, #<Project id:492 group357/group356/project-527>>, and #<Project id:493 group357/project-528>>5321 in subgroup5322 is expected to contain exactly #<Project id:497 group359/group358/project-532>> and #<Project id:498 group359/group358/project-533>>5323 issues5324 sorting5325 sort: created_desc5326 sorts results by created_at5327 sort: created_asc5328 sorts results by created_at5329 sort: updated_desc5330 sorts results by updated_desc5331 sort: updated_asc5332 sorts results by updated_asc5333 merge requests5334 sorting5335 sort: created_desc5336 sorts results by created_at5337 sort: created_asc5338 sorts results by created_at5339 sort: updated_desc5340 sorts results by updated_desc5341 sort: updated_asc5342 sorts results by updated_asc5343bin/audit-event-type5344 # order random5345 AuditEventTypeOptionParser5346 .parse5347 raises an error when name of the audit event type is missing5348 parses -h5349 param: :name, argv: ["foo"], result: "foo"5350 is expected to eq "foo"5351 param: :amend, argv: ["foo", "--amend"], result: true5352 is expected to eq true5353 param: :force, argv: ["foo", "-f"], result: true5354 is expected to eq true5355 param: :force, argv: ["foo", "--force"], result: true5356 is expected to eq true5357 param: :description, argv: ["foo", "-d", "desc"], result: "desc"5358 is expected to eq "desc"5359 param: :description, argv: ["foo", "--description", "desc"], result: "desc"5360 is expected to eq "desc"5361 param: :feature_category, argv: ["foo", "-c", "audit_events"], result: "audit_events"5362 is expected to eq "audit_events"5363 param: :feature_category, argv: ["foo", "--feature-category", "audit_events"], result: "audit_events"5364 is expected to eq "audit_events"5365 param: :milestone, argv: ["foo", "-M", "15.6"], result: "15.6"5366 is expected to eq "15.6"5367 param: :milestone, argv: ["foo", "--milestone", "15.6"], result: "15.6"5368 is expected to eq "15.6"5369 param: :saved_to_database, argv: ["foo", "-s"], result: true5370 is expected to eq true5371 param: :saved_to_database, argv: ["foo", "--saved-to-database"], result: true5372 is expected to eq true5373 param: :saved_to_database, argv: ["foo", "--no-saved-to-database"], result: false5374 is expected to eq false5375 param: :streamed, argv: ["foo", "-t"], result: true5376 is expected to eq true5377 param: :streamed, argv: ["foo", "--streamed"], result: true5378 is expected to eq true5379 param: :streamed, argv: ["foo", "--no-streamed"], result: false5380 is expected to eq false5381 param: :dry_run, argv: ["foo", "-n"], result: true5382 is expected to eq true5383 param: :dry_run, argv: ["foo", "--dry-run"], result: true5384 is expected to eq true5385 param: :ee, argv: ["foo", "-e"], result: true5386 is expected to eq true5387 param: :ee, argv: ["foo", "--ee"], result: true5388 is expected to eq true5389 param: :jh, argv: ["foo", "-j"], result: true5390 is expected to eq true5391 param: :jh, argv: ["foo", "--jh"], result: true5392 is expected to eq true5393 param: :introduced_by_mr, argv: ["foo", "-m", "https://url"], result: "https://url"5394 is expected to eq "https://url"5395 param: :introduced_by_mr, argv: ["foo", "--introduced-by-mr", "https://url"], result: "https://url"5396 is expected to eq "https://url"5397 param: :introduced_by_issue, argv: ["foo", "-i", "https://url"], result: "https://url"5398 is expected to eq "https://url"5399 param: :introduced_by_issue, argv: ["foo", "--introduced-by-issue", "https://url"], result: "https://url"5400 is expected to eq "https://url"5401 .read_description5402 reads description from stdin5403 when description is empty5404 shows error message and retries5405 .read_feature_category5406 reads feature_category from stdin5407 when feature category is empty5408 shows error message and retries5409 .read_saved_to_database5410 reads saved_to_database from stdin5411 when saved_to_database is invalid5412 shows error message and retries5413 .read_streamed5414 reads streamed from stdin5415 when streamed is invalid5416 shows error message and retries5417 .read_introduced_by_mr5418 reads introduced_by_mr from stdin5419 when URL is empty5420 does not raise an error5421 when URL is invalid5422 shows error message and retries5423 .read_introduced_by_issue5424 reads type from stdin5425 when URL is invalid5426 shows error message and retries5427 .read_milestone5428 returns the correct milestone from the VERSION file5429 AuditEventTypeCreator5430 properly creates an audit event type5431 when running on master5432 requires feature branch5433 with invalid audit event type names5434 argv: [".invalid.audit.type"], ex: /Provide a name for the audit event type that is/5435 is expected to raise /Provide a name for the audit event type that is/5436 argv: ["existing_audit_event_type"], ex: /already exists!/5437 is expected to raise /already exists!/5438List5439 behaves like having unique enum values5440 has unique values in "list_type"5441 behaves like boards listable model5442 associations5443 is expected to validate that :position cannot be empty/falsy5444 is expected to validate that :position looks like an integer greater than or equal to 05445 when list_type is set to closed5446 is expected not to validate that :label cannot be empty/falsy5447 is expected not to validate that :position cannot be empty/falsy5448 scopes5449 .ordered5450 returns lists ordered by type and position5451 #destroyable?5452 returns true when list_type is set to label5453 returns false when list_type is set to closed5454 #movable?5455 returns true when list_type is set to label5456 returns false when list_type is set to closed5457 #title5458 returns label name when list_type is set to label5459 returns Open when list_type is set to backlog5460 returns Closed when list_type is set to closed5461 #destroy5462 can be destroyed when list_type is set to label5463 can not be destroyed when list_type is set to closed5464 behaves like list_preferences_for user5465 #preferences_for5466 when user is nil5467 returns not persisted preferences5468 when a user preference already exists5469 loads preference for user5470 when preferences for user does not exist5471 returns not persisted preferences5472 #update_preferences_for5473 when user is present5474 when there are no preferences for user5475 creates new user preferences5476 when there are preferences for user5477 updates user preferences5478 when user is nil5479 does not create user preferences5480 relationships5481 is expected to belong to board required: false5482 is expected to belong to label required: false5483 validations5484 is expected to validate that :board cannot be empty/falsy5485 is expected to validate that :label cannot be empty/falsy5486 is expected to validate that :list_type cannot be empty/falsy5487Gitlab::Ci::Ansi2json::Style5488 #set?5489 when fg color is set5490 is expected to be truthy5491 when bg color is set5492 is expected to be truthy5493 when mask is set5494 is expected to be truthy5495 nothing is set5496 is expected to be falsey5497 #reset!5498 set the style params to default5499 update formats to mimic terminals5500 when fg color present5501 when mask is set to bold5502 changes the fg color to a lighter version5503 when mask set to another format5504 does not change the fg color5505 when mask is not set5506 does not change the fg color5507 #update5508 initial_state: [], ansi_commands: ["0"], result: "", description: "does not set any style"5509 change the style5510 initial_state: [], ansi_commands: ["1"], result: "term-bold", description: "enables format bold"5511 change the style5512 initial_state: [], ansi_commands: ["3"], result: "term-italic", description: "enables format italic"5513 change the style5514 initial_state: [], ansi_commands: ["4"], result: "term-underline", description: "enables format underline"5515 change the style5516 initial_state: [], ansi_commands: ["8"], result: "term-conceal", description: "enables format conceal"5517 change the style5518 initial_state: [], ansi_commands: ["9"], result: "term-cross", description: "enables format cross"5519 change the style5520 initial_state: ["1"], ansi_commands: ["21"], result: "", description: "disables format bold"5521 change the style5522 initial_state: ["1", "3"], ansi_commands: ["21"], result: "term-italic", description: "disables format bold and leaves italic"5523 change the style5524 initial_state: ["1"], ansi_commands: ["22"], result: "", description: "disables format bold using command 22"5525 change the style5526 initial_state: ["1", "3"], ansi_commands: ["22"], result: "term-italic", description: "disables format bold and leaves italic using command 22"5527 change the style5528 initial_state: ["3"], ansi_commands: ["23"], result: "", description: "disables format italic"5529 change the style5530 initial_state: ["1", "3"], ansi_commands: ["23"], result: "term-bold", description: "disables format italic and leaves bold"5531 change the style5532 initial_state: ["4"], ansi_commands: ["24"], result: "", description: "disables format underline"5533 change the style5534 initial_state: ["1", "4"], ansi_commands: ["24"], result: "term-bold", description: "disables format underline and leaves bold"5535 change the style5536 initial_state: ["8"], ansi_commands: ["28"], result: "", description: "disables format conceal"5537 change the style5538 initial_state: ["1", "8"], ansi_commands: ["28"], result: "term-bold", description: "disables format conceal and leaves bold"5539 change the style5540 initial_state: ["9"], ansi_commands: ["29"], result: "", description: "disables format cross"5541 change the style5542 initial_state: ["1", "9"], ansi_commands: ["29"], result: "term-bold", description: "disables format cross and leaves bold"5543 change the style5544 initial_state: [], ansi_commands: ["30"], result: "term-fg-black", description: "sets fg color black"5545 change the style5546 initial_state: [], ansi_commands: ["31"], result: "term-fg-red", description: "sets fg color red"5547 change the style5548 initial_state: [], ansi_commands: ["32"], result: "term-fg-green", description: "sets fg color green"5549 change the style5550 initial_state: [], ansi_commands: ["33"], result: "term-fg-yellow", description: "sets fg color yellow"5551 change the style5552 initial_state: [], ansi_commands: ["34"], result: "term-fg-blue", description: "sets fg color blue"5553 change the style5554 initial_state: [], ansi_commands: ["35"], result: "term-fg-magenta", description: "sets fg color magenta"5555 change the style5556 initial_state: [], ansi_commands: ["36"], result: "term-fg-cyan", description: "sets fg color cyan"5557 change the style5558 initial_state: [], ansi_commands: ["37"], result: "term-fg-white", description: "sets fg color white"5559 change the style5560 initial_state: [], ansi_commands: ["38", "5", "1"], result: "xterm-fg-1", description: "sets xterm fg color 1"5561 change the style5562 initial_state: [], ansi_commands: ["38", "5", "2"], result: "xterm-fg-2", description: "sets xterm fg color 2"5563 change the style5564 initial_state: [], ansi_commands: ["38", "1"], result: "term-bold", description: "ignores 38 command if not followed by 5 and sets format bold"5565 change the style5566 initial_state: [], ansi_commands: ["40"], result: "term-bg-black", description: "sets bg color black"5567 change the style5568 initial_state: [], ansi_commands: ["41"], result: "term-bg-red", description: "sets bg color red"5569 change the style5570 initial_state: [], ansi_commands: ["42"], result: "term-bg-green", description: "sets bg color green"5571 change the style5572 initial_state: [], ansi_commands: ["43"], result: "term-bg-yellow", description: "sets bg color yellow"5573 change the style5574 initial_state: [], ansi_commands: ["44"], result: "term-bg-blue", description: "sets bg color blue"5575 change the style5576 initial_state: [], ansi_commands: ["45"], result: "term-bg-magenta", description: "sets bg color magenta"5577 change the style5578 initial_state: [], ansi_commands: ["46"], result: "term-bg-cyan", description: "sets bg color cyan"5579 change the style5580 initial_state: [], ansi_commands: ["47"], result: "term-bg-white", description: "sets bg color white"5581 change the style5582 initial_state: [], ansi_commands: ["48", "5", "1"], result: "xterm-bg-1", description: "sets xterm bg color 1"5583 change the style5584 initial_state: [], ansi_commands: ["48", "5", "2"], result: "xterm-bg-2", description: "sets xterm bg color 2"5585 change the style5586 initial_state: [], ansi_commands: ["48", "1"], result: "term-bold", description: "ignores 48 command if not followed by 5 and sets format bold"5587 change the style5588 initial_state: [], ansi_commands: ["90"], result: "term-fg-l-black", description: "sets fg color light black"5589 change the style5590 initial_state: [], ansi_commands: ["91"], result: "term-fg-l-red", description: "sets fg color light red"5591 change the style5592 initial_state: [], ansi_commands: ["92"], result: "term-fg-l-green", description: "sets fg color light green"5593 change the style5594 initial_state: [], ansi_commands: ["93"], result: "term-fg-l-yellow", description: "sets fg color light yellow"5595 change the style5596 initial_state: [], ansi_commands: ["94"], result: "term-fg-l-blue", description: "sets fg color light blue"5597 change the style5598 initial_state: [], ansi_commands: ["95"], result: "term-fg-l-magenta", description: "sets fg color light magenta"5599 change the style5600 initial_state: [], ansi_commands: ["96"], result: "term-fg-l-cyan", description: "sets fg color light cyan"5601 change the style5602 initial_state: [], ansi_commands: ["97"], result: "term-fg-l-white", description: "sets fg color light white"5603 change the style5604 initial_state: [], ansi_commands: ["100"], result: "term-bg-l-black", description: "sets bg color light black"5605 change the style5606 initial_state: [], ansi_commands: ["101"], result: "term-bg-l-red", description: "sets bg color light red"5607 change the style5608 initial_state: [], ansi_commands: ["102"], result: "term-bg-l-green", description: "sets bg color light green"5609 change the style5610 initial_state: [], ansi_commands: ["103"], result: "term-bg-l-yellow", description: "sets bg color light yellow"5611 change the style5612 initial_state: [], ansi_commands: ["104"], result: "term-bg-l-blue", description: "sets bg color light blue"5613 change the style5614 initial_state: [], ansi_commands: ["105"], result: "term-bg-l-magenta", description: "sets bg color light magenta"5615 change the style5616 initial_state: [], ansi_commands: ["106"], result: "term-bg-l-cyan", description: "sets bg color light cyan"5617 change the style5618 initial_state: [], ansi_commands: ["107"], result: "term-bg-l-white", description: "sets bg color light white"5619 change the style5620 initial_state: ["1"], ansi_commands: [], result: "", description: "resets style from format bold"5621 change the style5622 initial_state: ["1"], ansi_commands: ["0"], result: "", description: "resets style from format bold"5623 change the style5624 initial_state: ["1", "3"], ansi_commands: ["0"], result: "", description: "resets style from format bold and italic"5625 change the style5626 initial_state: ["1", "3", "term-fg-l-red", "term-bg-yellow"], ansi_commands: ["0"], result: "", description: "resets all formats and colors"5627 change the style5628 initial_state: ["31", "42"], ansi_commands: ["39"], result: "term-bg-green", description: "set foreground from red to default leaving background unchanged"5629 change the style5630 initial_state: ["31", "42"], ansi_commands: ["49"], result: "term-fg-red", description: "set background from green to default leaving foreground unchanged"5631 change the style5632 initial_state: [], ansi_commands: ["1", "30", "42", "3"], result: "term-fg-l-black term-bg-green term-bold term-italic", description: "adds fg color, bg color and formats from no style"5633 change the style5634 initial_state: ["3", "31"], ansi_commands: ["23", "1", "43"], result: "term-fg-l-red term-bg-yellow term-bold", description: "replaces format italic with bold and adds a yellow background"5635 change the style5636Ci::PipelineArtifacts::CreateCodeQualityMrDiffReportService5637 #execute5638 when there are codequality reports5639 when pipeline passes5640 when degradations are present5641 when degradations already present in target branch pipeline5642 does not persist a pipeline artifact5643 when degradation is not present in target branch pipeline5644 persists a pipeline artifact5645 persists the default file name5646 sets expire_at to 1 week5647 artifact has pipeline's locked status5648 does not persist the same artifact twice5649 when there are no codequality reports for head pipeline5650 does not persist a pipeline artifact5651 when there are no codequality reports for base pipeline5652 does not persist a pipeline artifact5653Resolvers::GroupLabelsResolver5654 is expected to have nullable GraphQL type LabelConnection5655 #resolve5656 with unauthorized user5657 generates an error5658 with authorized user5659 does not raise error5660 without parent5661 returns no labels5662 association preloading5663 prevents N+1 queries5664 at group level5665 include_ancestor_groups: nil, include_descendant_groups: nil, only_group_labels: nil, search_term: nil, test: -> { expect(subject).to contain_exactly(subgroup_label1, subgroup_label2) }5666 is expected to contain exactly #<GroupLabel id:29 ~29> and #<GroupLabel id:30 ~30>5667 include_ancestor_groups: nil, include_descendant_groups: nil, only_group_labels: true, search_term: nil, test: -> { expect(subject).to contain_exactly(subgroup_label1, subgroup_label2) }5668 is expected to contain exactly #<GroupLabel id:29 ~29> and #<GroupLabel id:30 ~30>5669 include_ancestor_groups: nil, include_descendant_groups: true, only_group_labels: nil, search_term: nil, test: -> { expect(subject).to contain_exactly(subgroup_label1, subgroup_label2, sub_subgroup_label1, sub_subgroup_label2, label1, label2) }5670 is expected to contain exactly #<GroupLabel id:29 ~29>, #<GroupLabel id:30 ~30>, #<GroupLabel id:31 ~31>, #<GroupLabel id:32 ~32>, #<ProjectLabel id:25 group365/group366/group367/project-594~25>, and #<ProjectLabel id:26 group365/group366/group367/project-594~26>5671 include_ancestor_groups: nil, include_descendant_groups: true, only_group_labels: true, search_term: nil, test: -> { expect(subject).to contain_exactly(subgroup_label1, subgroup_label2, sub_subgroup_label1, sub_subgroup_label2) }5672 is expected to contain exactly #<GroupLabel id:29 ~29>, #<GroupLabel id:30 ~30>, #<GroupLabel id:31 ~31>, and #<GroupLabel id:32 ~32>5673 include_ancestor_groups: true, include_descendant_groups: nil, only_group_labels: nil, search_term: nil, test: -> { expect(subject).to contain_exactly(group_label1, group_label2, subgroup_label1, subgroup_label2) }5674 is expected to contain exactly #<GroupLabel id:27 ~27>, #<GroupLabel id:28 ~28>, #<GroupLabel id:29 ~29>, and #<GroupLabel id:30 ~30>5675 include_ancestor_groups: true, include_descendant_groups: nil, only_group_labels: true, search_term: nil, test: -> { expect(subject).to contain_exactly(group_label1, group_label2, subgroup_label1, subgroup_label2) }5676 is expected to contain exactly #<GroupLabel id:27 ~27>, #<GroupLabel id:28 ~28>, #<GroupLabel id:29 ~29>, and #<GroupLabel id:30 ~30>5677 include_ancestor_groups: true, include_descendant_groups: true, only_group_labels: nil, search_term: nil, test: -> { expect(subject).to contain_exactly(group_label1, group_label2, subgroup_label1, subgroup_label2, sub_subgroup_label1, sub_subgroup_label2, label1, label2) }5678 is expected to contain exactly #<GroupLabel id:27 ~27>, #<GroupLabel id:28 ~28>, #<GroupLabel id:29 ~29>, #<GroupLabel id:30 ~30>, #<GroupLabel id:31 ~31>, #<GroupLabel id:32 ~32>, #<ProjectLabel id:25 group365/group366/group367/project-594~25>, and #<ProjectLabel id:26 group365/group366/group367/project-594~26>5679 include_ancestor_groups: true, include_descendant_groups: true, only_group_labels: true, search_term: nil, test: -> { expect(subject).to contain_exactly(group_label1, group_label2, subgroup_label1, subgroup_label2, sub_subgroup_label1, sub_subgroup_label2) }5680 is expected to contain exactly #<GroupLabel id:27 ~27>, #<GroupLabel id:28 ~28>, #<GroupLabel id:29 ~29>, #<GroupLabel id:30 ~30>, #<GroupLabel id:31 ~31>, and #<GroupLabel id:32 ~32>5681 include_ancestor_groups: nil, include_descendant_groups: nil, only_group_labels: nil, search_term: "new", test: -> { expect(subject).to contain_exactly(subgroup_label2) }5682 is expected to contain exactly #<GroupLabel id:30 ~30>5683 include_ancestor_groups: nil, include_descendant_groups: nil, only_group_labels: true, search_term: "new", test: -> { expect(subject).to contain_exactly(subgroup_label2) }5684 is expected to contain exactly #<GroupLabel id:30 ~30>5685 include_ancestor_groups: nil, include_descendant_groups: true, only_group_labels: nil, search_term: "new", test: -> { expect(subject).to contain_exactly(subgroup_label2, sub_subgroup_label2, label2) }5686 is expected to contain exactly #<GroupLabel id:30 ~30>, #<GroupLabel id:32 ~32>, and #<ProjectLabel id:26 group365/group366/group367/project-594~26>5687 include_ancestor_groups: nil, include_descendant_groups: true, only_group_labels: true, search_term: "new", test: -> { expect(subject).to contain_exactly(subgroup_label2, sub_subgroup_label2) }5688 is expected to contain exactly #<GroupLabel id:30 ~30> and #<GroupLabel id:32 ~32>5689 include_ancestor_groups: true, include_descendant_groups: nil, only_group_labels: nil, search_term: "new", test: -> { expect(subject).to contain_exactly(group_label2, subgroup_label2) }5690 is expected to contain exactly #<GroupLabel id:28 ~28> and #<GroupLabel id:30 ~30>5691 include_ancestor_groups: true, include_descendant_groups: nil, only_group_labels: true, search_term: "new", test: -> { expect(subject).to contain_exactly(group_label2, subgroup_label2) }5692 is expected to contain exactly #<GroupLabel id:28 ~28> and #<GroupLabel id:30 ~30>5693 include_ancestor_groups: true, include_descendant_groups: true, only_group_labels: nil, search_term: "new", test: -> { expect(subject).to contain_exactly(group_label2, subgroup_label2, sub_subgroup_label2, label2) }5694 is expected to contain exactly #<GroupLabel id:28 ~28>, #<GroupLabel id:30 ~30>, #<GroupLabel id:32 ~32>, and #<ProjectLabel id:26 group365/group366/group367/project-594~26>5695 include_ancestor_groups: true, include_descendant_groups: true, only_group_labels: true, search_term: "new", test: -> { expect(subject).to contain_exactly(group_label2, subgroup_label2, sub_subgroup_label2) }5696 is expected to contain exactly #<GroupLabel id:28 ~28>, #<GroupLabel id:30 ~30>, and #<GroupLabel id:32 ~32>5697AuthHelper5698 button_based_providers5699 returns all enabled providers from devise5700 does not return ldap provider5701 returns empty array5702 providers_for_base_controller5703 returns all enabled providers from devise5704 excludes ldap providers5705 form_based_providers5706 includes LDAP providers5707 includes crowd provider5708 form_based_auth_provider_has_active_class?5709 selects main LDAP server5710 any_form_based_providers_enabled?5711 detects form-based providers5712 ignores ldap providers when ldap web sign in is disabled5713 enabled_button_based_providers5714 all providers are enabled to sign in5715 returns all the enabled providers from settings in expected order5716 puts google and github in the beginning5717 GitHub OAuth sign in is disabled from application setting5718 doesn't return github as provider5719 popular_enabled_button_based_providers5720 returns the intersection set of popular & enabled providers5721 button_based_providers_enabled?5722 button based providers enabled5723 returns true5724 all the button based providers are disabled via application_setting5725 returns false5726 #link_provider_allowed?5727 delegates to identity provider policy5728 #unlink_provider_allowed?5729 delegates to identity provider policy5730 #provider_has_icon?5731 returns true for defined providers5732 returns false for undefined providers5733 when provider is defined by config5734 returns true5735 when provider is not defined by config5736 returns true5737 #allow_admin_mode_password_authentication_for_web?5738 is expected to equal true5739 when password authentication for web is disabled5740 is expected to equal false5741 when current_user is an ldap user5742 is expected to equal false5743 when user got password automatically set5744 is expected to equal false5745 #auth_active?5746 for atlassian_oauth2 provider5747 returns true when present5748 returns false when not present5749 for other omniauth providers5750 returns true when present5751 returns false when not present5752 #google_tag_manager_enabled?5753 when not on gitlab.com5754 is expected to eq false5755 regular and nonce versions5756 gtm_nonce_enabled: false, gtm_key: "google_tag_manager_id"5757 on gitlab.com and a key set without a current user5758 is expected to be truthy5759 when no key is set5760 is expected to eq false5761 gtm_nonce_enabled: true, gtm_key: "google_tag_manager_nonce_id"5762 on gitlab.com and a key set without a current user5763 is expected to be truthy5764 when no key is set5765 is expected to eq false5766 #google_tag_manager_id5767 when google tag manager is disabled5768 is expected to be falsey5769 when google tag manager is enabled5770 when nonce feature flag is enabled5771 is expected to eq "nonce"5772 when nonce feature flag is disabled5773 is expected to eq "gtm"5774 #auth_app_owner_text5775 when owner is a user5776 behaves like generates text with the correct info5777 includes the name of the application owner5778 when owner is a group5779 behaves like generates text with the correct info5780 includes the name of the application owner5781 when the user is missing5782 returns nil5783 #auth_strategy_class5784 when configuration specifies no provider5785 returns false5786 when configuration specifies a provider with args but without strategy_class5787 returns false5788 when configuration specifies a provider with args and strategy_class5789 returns the class5790 when configuration specifies another provider with args and another strategy_class5791 returns false5792 #saml_providers5793 when SAML is enabled without specifying a strategy class5794 returns the saml provider5795 when configuration specifies no provider5796 returns an empty list5797 when configuration specifies a provider with a SAML strategy_class5798 returns the provider5799 when configuration specifies two providers with a SAML strategy_class5800 returns the provider5801 when configuration specifies a provider with a non-SAML strategy_class5802 returns an empty list5803 when configuration specifies four providers but only two with SAML strategy_class5804 returns the provider5805Gitlab::Usage::Metrics::Instrumentations::JiraActiveIntegrationsMetric5806 # order random5807 raises an exception if option is not present5808 raises an exception if option has invalid value5809 behaves like a correct instrumented metric value and query5810 behaves like a correct instrumented metric value5811 has correct value5812 behaves like a correct instrumented metric query5813 has correct generate query5814ContainerRegistry::Blob5815 is expected to respond to #repository5816 is expected to delegate #registry to the #repository object5817 is expected to delegate #client to the #repository object5818 #path5819 returns a valid path to the blob5820 #digest5821 return correct digest value5822 #type5823 returns a correct type5824 #revision5825 returns a correct blob SHA5826 #short_revision5827 return a short SHA5828 #delete5829 returns true when blob has been successfully deleted5830 #data5831 when locally stored5832 returns a correct blob data5833 when externally stored5834 for a valid address5835 returns correct data5836 for a relative address5837 returns correct data5838 for invalid file5839 raises an error5840Groups::AutocompleteService5841 #labels_as_hash5842 returns labels from own group and ancestor groups5843 #issues5844 returns issues in group and subgroups5845 returns only confidential issues if confidential_only is true5846 #merge_requests5847 returns merge requests in group and subgroups5848 #milestones5849 returns milestones from group5850 returns milestones from groups and subgroups5851 returns only milestones that user can read5852 when group is public5853 returns milestones from groups and subgroups5854AnalyticsBuildEntity5855 build with an author5856 contains the URL5857 contains the author5858 contains the project path5859 contains the namespace full path5860 does not contain sensitive information5861 contains the right started at5862 contains the duration5863 no started at or finished at date5864 does not blow up5865 shows the right message5866 shows the right total time5867 no started at date5868 does not blow up5869 shows the right message5870 shows the right total time5871 no finished at date5872 does not blow up5873 shows the right message5874 shows the right total time5875Gitlab::Ci::Lint5876 #validate5877 when user has permissions to write the ref5878 when using default static mode5879 does not catch advanced logical errors5880 uses YamlProcessor5881 behaves like content with errors and warnings5882 when content has errors5883 returns a result with errors5884 when content has warnings5885 returns a result with warnings5886 when content has more warnings than max limit5887 returns a result with warnings5888 when content has errors and warnings5889 returns a result with errors and warnings5890 behaves like content is valid5891 returns a valid result5892 includes extra attributes5893 behaves like sets config metadata5894 sets merged_config5895 sets includes5896 when using dry run mode5897 runs advanced logical validations5898 uses Ci::CreatePipelineService5899 behaves like content with errors and warnings5900 when content has errors5901 returns a result with errors5902 when content has warnings5903 returns a result with warnings5904 when content has more warnings than max limit5905 returns a result with warnings5906 when content has errors and warnings5907 returns a result with errors and warnings5908 behaves like content is valid5909 returns a valid result5910 does not include extra attributes5911 when using a ref other than the default branch5912 includes only jobs that are excluded on the default branch5913 behaves like sets config metadata5914 sets merged_config5915 sets includes5916 when user does not have permissions to write the ref5917 when using default static mode5918 behaves like content is valid5919 returns a valid result5920 when using dry run mode5921 does not allow validation5922 pipeline logger5923 when the duration is under the threshold5924 does not create a log entry5925 when the durations exceeds the threshold5926 creates a log entry5927 when the feature flag is disabled5928 does not create a log entry5929 when project is not provided5930 creates a log entry without project_id5931Analytics::CycleAnalytics::Stage5932 # order random5933 behaves like value stream analytics stage5934 associations5935 is expected to belong to end_event_label required: false5936 is expected to belong to start_event_label required: false5937 is expected to belong to stage_event_hash required: false5938 validation5939 is valid5940 validates presence of parent5941 validates presence of start_event_identifier5942 validates presence of end_event_identifier5943 is invalid when end_event is not allowed for the given start_event5944 disallows default stage names when creating custom stage5945 is expected not to be valid5946 .by_value_stream5947 finds stages by value stream5948 #subject_class5949 infers the model from the start event5950 #start_event5951 builds start_event object based on start_event_identifier5952 #end_event5953 builds end_event object based on end_event_identifier5954 #matches_with_stage_params?5955 matches with default stage params5956 mismatches when the stage is custom5957 #parent_id5958 delegates to 'parent_name'_id attribute5959 #hash_code5960 does not differ when the same object is built with the same params5961 differs when the stage events are different5962 #event_hash5963 associates the same stage event hash record5964 does not introduce duplicated stage event hash records5965 creates different hash record for different event configurations5966 when the stage event hash changes5967 deletes the old, unused stage event hash record5968 does not delete used stage event hash record5969 when the stage events hash code does not change5970 does not trigger extra query on save5971 behaves like value stream analytics namespace models5972 when ProjectNamespace is given5973 is valid5974 when Namespace is given5975 fails5976 .distinct_stages_within_hierarchy5977 returns distinct stages by the event identifiers5978 uniqueness validation on name5979 is expected to validate that :name is case-sensitively unique within the scope of :group_id and :group_value_stream_id5980 associations5981 is expected to belong to namespace required: true5982 is expected to belong to value_stream required: false5983 behaves like database events tracking5984 events tracking5985 #create5986 behaves like Snowplow event tracking5987 is emitted5988 #update5989 behaves like Snowplow event tracking5990 is emitted5991 #destroy5992 behaves like Snowplow event tracking5993 is emitted5994Gitlab::ErrorTracking5995 # order random5996 .log_and_raise_exception5997 only logs and raises the exception5998 when extra details are provided5999 filters parameters6000 event processors6001 with custom GitLab context when using Raven.capture_exception directly6002 merges a default set of tags into the existing tags6003 merges the current user information into the existing user information6004 with custom GitLab context when using Sentry.capture_exception directly6005 merges a default set of tags into the existing tags6006 merges the current user information into the existing user information6007 with sidekiq args6008 when the args does not have anything sensitive6009 ensures extra.sidekiq.args is a string6010 does not filter parameters when sending to Sentry6011 when the args has sensitive information6012 filters sensitive arguments before sending and logging6013 when the error is a GRPC error6014 when the GRPC error contains a debug_error_string value6015 sets the GRPC debug error string in the Sentry event and adds a custom fingerprint6016 when the GRPC error does not contain a debug_error_string value6017 does not do any processing on the event6018 when exception is excluded6019 with Gitlab::SidekiqMiddleware::RetryError exception6020 does not report exception to Sentry6021 with SubclassRetryError exception6022 does not report exception to Sentry6023 when processing invalid URI exceptions6024 when the error is a URI::InvalidURIError6025 filters the URI from the error message6026 when the error is a Addressable::URI::InvalidURIError6027 filters the URI from the error message6028 when request contains sensitive information6029 filters sensitive data6030 .track_exception6031 calls Raven.capture_exception6032 calls Gitlab::ErrorTracking::Logger.error with formatted payload6033 with filterable parameters6034 filters parameters6035 when the exception implements :sentry_extra_data6036 includes the extra data from the exception in the tracking information6037 when the exception implements :sentry_extra_data, which returns nil6038 just includes the other extra info6039 .track_and_raise_exception6040 always raises the exception6041 calls Gitlab::ErrorTracking::Logger.error with formatted payload6042 Sentry performance monitoring6043 when ENABLE_SENTRY_PERFORMANCE_MONITORING env is disabled6044 does not set traces_sample_rate6045 when ENABLE_SENTRY_PERFORMANCE_MONITORING env is enabled6046 sets traces_sample_rate6047 .track_and_raise_for_dev_exception6048 when exceptions for dev should be raised6049 raises the exception6050 when exceptions for dev should not be raised6051 logs the exception with all attributes passed6052 calls Gitlab::ErrorTracking::Logger.error with formatted payload6053Projects::ContainerRepository::ThirdParty::CleanupTagsService6054 # order random6055 #execute6056 behaves like when regex matching everything is specified6057 behaves like removing the expected tags6058 removes the expected tags6059 with deprecated name_regex param6060 behaves like removing the expected tags6061 removes the expected tags6062 behaves like when regex matching everything is specified and latest is not kept6063 behaves like removing the expected tags6064 removes the expected tags6065 behaves like when delete regex matching specific tags is used6066 behaves like removing the expected tags6067 removes the expected tags6068 behaves like when delete regex matching specific tags is used with overriding allow regex6069 behaves like removing the expected tags6070 removes the expected tags6071 with name_regex_delete overriding deprecated name_regex6072 behaves like removing the expected tags6073 removes the expected tags6074 behaves like with allow regex value6075 behaves like removing the expected tags6076 removes the expected tags6077 behaves like when keeping only N tags6078 sorts tags by date6079 behaves like when not keeping N tags6080 does not sort tags by date6081 behaves like when removing keeping only 36082 behaves like removing the expected tags6083 removes the expected tags6084 behaves like when removing older than 1 day6085 behaves like removing the expected tags6086 removes the expected tags6087 behaves like when combining all parameters6088 behaves like removing the expected tags6089 removes the expected tags6090 behaves like when running a container_expiration_policy6091 with valid container_expiration_policy param6092 removes the expected tags6093 when running a container_expiration_policy with caching6094 expects caching to be used6095 when setting set to false6096 does not use caching6097 when truncating the tags list6098 max_list_size: 10, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false6099 behaves like returning the response6100 returns the response6101 max_list_size: 10, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false6102 behaves like returning the response6103 returns the response6104 max_list_size: 3, delete_tags_service_status: :success, expected_status: :error, expected_truncated: true6105 behaves like returning the response6106 returns the response6107 max_list_size: 3, delete_tags_service_status: :error, expected_status: :error, expected_truncated: true6108 behaves like returning the response6109 returns the response6110 max_list_size: 0, delete_tags_service_status: :success, expected_status: :success, expected_truncated: false6111 behaves like returning the response6112 returns the response6113 max_list_size: 0, delete_tags_service_status: :error, expected_status: :error, expected_truncated: false6114 behaves like returning the response6115 returns the response6116 with caching6117 caches the created_at values6118 with cached values6119 uses them6120Gitlab::Ci::Pipeline::Duration6121 .from_periods6122 test sample A6123 behaves like calculating duration6124 is expected to eq 46125 test sample B6126 behaves like calculating duration6127 is expected to eq 46128 test sample C6129 behaves like calculating duration6130 is expected to eq 86131 test sample D6132 behaves like calculating duration6133 is expected to eq 46134 test sample E6135 behaves like calculating duration6136 is expected to eq 76137 test sample F6138 behaves like calculating duration6139 is expected to eq 66140 test sample G6141 behaves like calculating duration6142 is expected to eq 46143 .from_pipeline6144 returns the duration of the running build6145 does not generate N+1 queries if more builds are added6146 does not generate N+1 queries if more bridges and their pipeline builds are added6147 when there is no running build6148 returns the duration for all the builds6149 when there are direct bridge jobs6150 returns the duration of the running build6151 when there is no running build6152 returns the duration for all the builds (including self and downstreams)6153 when there are downstream bridge jobs6154 returns the duration of the running build6155 when there is no running build6156 returns the duration for all the builds (including self and downstreams)6157Gitlab::Ci::Config::External::Mapper6158 #process6159 when single 'include' keyword is defined6160 when the string is a local file6161 returns File instances6162 behaves like logging config file fetch6163 propagates the pipeline logger6164 when the key is a local file hash6165 returns File instances6166 when the string is a remote file6167 returns File instances6168 behaves like logging config file fetch6169 propagates the pipeline logger6170 when the key is a remote file hash6171 returns File instances6172 when the key is a template file hash6173 returns File instances6174 behaves like logging config file fetch6175 propagates the pipeline logger6176 when the key is not valid6177 returns ambigious specification error6178 when the key is a hash of local and remote6179 returns ambigious specification error6180 when the key is a project's file6181 returns File instances6182 behaves like logging config file fetch6183 propagates the pipeline logger6184 when the key is project's files6185 returns two File instances6186 behaves like logging config file fetch6187 propagates the pipeline logger6188 when 'include' is defined as an array6189 returns Files instances6190 when 'include' is defined as an array of hashes6191 returns Files instances6192 when it has ambigious match6193 returns ambigious specification error6194 when 'include' is not defined6195 returns an empty array6196 when duplicate 'include's are defined6197 does not raise an exception6198 has expanset with two6199 when passing max number of files6200 does not raise an exception6201 when too many 'includes' are defined6202 raises an exception6203 when including multiple files from a project6204 raises an exception6205 when 'include' section uses project variable6206 when local file is included as a single string6207 expands the variable6208 when remote file is included as a single string6209 expands the variable6210 defined as an array6211 expands the variable6212 defined as an array of hashes6213 expands the variable6214 local file hash6215 expands the variable6216 project name6217 expands the variable6218 with multiple files6219 expands the variable6220 when include variable has an unsupported type for variable expansion6221 does not invoke expansion for the variable6222 when local file path has wildcard6223 includes the matched local files6224 when 'include' has rules6225 when the rules matches6226 includes the file6227 when the rules does not match6228 does not include the file6229 when locations are same after masking variables6230 has expanset with two6231projects/commit/show.html.haml6232 parallel diff view6233 spans full width6234 in the context of a merge request6235 shows that it is in the context of a merge request6236 when merge request is nil6237 renders the page6238 when commit is signed6239 with GPG6240 renders unverified badge6241 with SSH6242 renders unverified badge6243 with X.5096244 renders unverified badge6245WorkItems::Widgets::HierarchyService::UpdateService6246 #update6247 when parent and children params are present6248 behaves like raises a WidgetError6249 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "A Work Item can be a parent or a child, but not both."6250 when invalid params are present6251 behaves like raises a WidgetError6252 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "One or more arguments are invalid: other_parent."6253 when relative position params are incomplete6254 when only adjacent_work_item is present6255 behaves like raises a WidgetError6256 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "Relative position is not valid."6257 when only relative_position is present6258 behaves like raises a WidgetError6259 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "Relative position is not valid."6260 when updating children6261 when user has insufficient permissions to link work items6262 behaves like raises a WidgetError with message6263 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "No matching work item found. Make sure that you are adding a valid work item ID."6264 when user has sufficient permissions to link work item6265 with valid children params6266 correctly sets work item parent6267 when relative_position and adjacent_work_item are given6268 with BEFORE value6269 behaves like raises a WidgetError6270 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "Relative position cannot be combined with childrenIds."6271 with AFTER value6272 behaves like raises a WidgetError6273 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "Relative position cannot be combined with childrenIds."6274 when child is already assigned6275 behaves like raises a WidgetError6276 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "Work item(s) already assigned"6277 when child type is invalid6278 behaves like raises a WidgetError with message6279 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "#7 cannot be added: is not allowed to add this type of parent"6280 when updating parent6281 when user has insufficient permissions to link work items6282 behaves like raises a WidgetError with message6283 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "No matching work item found. Make sure that you are adding a valid work item ID."6284 when user has sufficient permissions to link work item6285 correctly sets new parent6286 when parent is nil6287 removes the work item parent if present6288 returns success status if parent not present6289 when type is invalid6290 behaves like raises a WidgetError with message6291 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "#4 cannot be added: is not allowed to add this type of parent"6292 with positioning arguments6293 correctly sets new parent and position6294 when other hierarchy adjacent is provided6295 behaves like raises a WidgetError6296 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "The adjacent work item's parent must match the new parent work item."6297Gitlab::Redis::Cache6298 .config_file_name6299 when there is no config file anywhere6300 is expected to be nil6301 .store6302 with old format6303 behaves like redis store6304 instantiates Redis::Store6305 with the namespace6306 uses specified namespace6307 with new format6308 behaves like redis store6309 instantiates Redis::Store6310 with the namespace6311 uses specified namespace6312 .params6313 withstands mutation6314 when url contains unix socket reference6315 with old format6316 returns path key instead6317 with new format6318 returns path key instead6319 when url is host based6320 with old format6321 returns hash with host, port, db, and password6322 with new format6323 rails_env: "development", host: "development-host"6324 returns hash with host, port, db, and password6325 rails_env: "test", host: "test-host"6326 returns hash with host, port, db, and password6327 rails_env: "production", host: "production-host"6328 returns hash with host, port, db, and password6329 with redis cluster format6330 rails_env: "development", host: "development-master"6331 returns hash with cluster and password6332 rails_env: "test", host: "test-master"6333 returns hash with cluster and password6334 rails_env: "production", host: "production-master"6335 returns hash with cluster and password6336 .url6337 withstands mutation6338 when yml file with env variable6339 reads redis url from env variable6340 .version6341 returns a version6342 .with6343 when running on single-threaded runtime6344 instantiates a connection pool with size 56345 when running on multi-threaded runtime6346 instantiates a connection pool with a size based on the concurrency of the worker6347 when there is no config at all6348 can run an empty block6349 #db6350 with old format6351 returns the correct db6352 with new format6353 returns the correct db6354 with cluster-mode6355 returns the correct db6356 #sentinels6357 when sentinels are defined6358 rails_env: "development", hosts: ["development-replica1", "development-replica2"]6359 returns an array of hashes with host and port keys6360 rails_env: "test", hosts: ["test-replica1", "test-replica2"]6361 returns an array of hashes with host and port keys6362 rails_env: "production", hosts: ["production-replica1", "production-replica2"]6363 returns an array of hashes with host and port keys6364 when sentinels are not defined6365 returns nil6366 when cluster is defined6367 returns nil6368 #sentinels?6369 when sentinels are defined6370 returns true6371 when sentinels are not defined6372 is expected to eq nil6373 when cluster is defined6374 returns false6375 #raw_config_hash6376 returns old-style single url config in a hash6377 returns cluster config without url key in a hash6378 #fetch_config6379 raises an exception when the config file contains invalid yaml6380 when redis.yml exists6381 uses config/redis.yml6382 when no config file exsits6383 returns nil6384 when resque.yml exists6385 returns the config from resque.yml6386 .active_support_config6387 has a default ttl of 8 hours6388 allows configuring the TTL through an env variable6389Integrations::BaseChatNotification6390 default values6391 is expected to eq :chat6392 validations6393 when active6394 is expected to validate that :webhook cannot be empty/falsy6395 is expected to validate that :labels_to_be_notified_behavior is either ‹"match_any"› or ‹"match_all"›6396 is expected to allow :push_channel to be ‹"#1,#2,#3,#4,#5,#6,#7,#8,#9,#10"›6397 is expected not to allow :push_channel to be ‹"#1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11"›6398 when inactive6399 is expected not to validate that :webhook cannot be empty/falsy6400 is expected not to validate that :labels_to_be_notified_behavior is either ‹"match_any"› or ‹"match_all"›6401 is expected to allow :push_channel to be ‹"#1,#2,#3,#4,#5,#6,#7,#8,#9,#10"›6402 is expected to allow :push_channel to be ‹"#1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11"›6403 #execute6404 with a repository6405 returns true6406 with an empty repository6407 returns true6408 when webhook is blank6409 returns false6410 when webhook is not required6411 returns true6412 when event is not supported6413 returns false6414 with a project with name containing spaces6415 does not remove spaces6416 when the data object has a label6417 behaves like notifies the chat integration6418 is expected to receive notify(*(any args)) 1 time6419 with label filter6420 behaves like notifies the chat integration6421 is expected to receive notify(*(any args)) 1 time6422 MergeRequest events6423 behaves like notifies the chat integration6424 is expected to receive notify(*(any args)) 1 time6425 Issue events6426 behaves like notifies the chat integration6427 is expected to receive notify(*(any args)) 1 time6428 Incident events6429 behaves like notifies the chat integration6430 is expected to receive notify(*(any args)) 1 time6431 when labels_to_be_notified_behavior is not defined6432 no matching labels6433 behaves like does not notify the chat integration6434 is expected not to receive notify(*(any args)) 0 times6435 only one label matches6436 behaves like notifies the chat integration6437 is expected to receive notify(*(any args)) 1 time6438 when labels_to_be_notified_behavior is blank6439 no matching labels6440 behaves like does not notify the chat integration6441 is expected not to receive notify(*(any args)) 0 times6442 only one label matches6443 behaves like notifies the chat integration6444 is expected to receive notify(*(any args)) 1 time6445 when labels_to_be_notified_behavior is match_any6446 no label filter6447 behaves like notifies the chat integration6448 is expected to receive notify(*(any args)) 1 time6449 no matching labels6450 behaves like does not notify the chat integration6451 is expected not to receive notify(*(any args)) 0 times6452 only one label matches6453 behaves like notifies the chat integration6454 is expected to receive notify(*(any args)) 1 time6455 when labels_to_be_notified_behavior is match_all6456 no label filter6457 behaves like notifies the chat integration6458 is expected to receive notify(*(any args)) 1 time6459 no matching labels6460 behaves like does not notify the chat integration6461 is expected not to receive notify(*(any args)) 0 times6462 only one label matches6463 behaves like does not notify the chat integration6464 is expected not to receive notify(*(any args)) 0 times6465 labels matches exactly6466 behaves like notifies the chat integration6467 is expected to receive notify(*(any args)) 1 time6468 labels matches but object has more6469 behaves like notifies the chat integration6470 is expected to receive notify(*(any args)) 1 time6471 labels are distributed on multiple objects6472 behaves like does not notify the chat integration6473 is expected not to receive notify(*(any args)) 0 times6474 with "channel" property6475 empty string6476 does not include the channel6477 empty spaces6478 does not include the channel6479 with single channel specified6480 behaves like with channel specified6481 notifies all channels6482 with multiple channel names specified6483 behaves like with channel specified6484 notifies all channels6485 with multiple channel names with spaces specified6486 behaves like with channel specified6487 notifies all channels6488 with duplicate channel names6489 behaves like with channel specified6490 notifies all channels6491 #default_channel_placeholder6492 raises an error6493 #webhook_help6494 raises an error6495 #event_channel_name6496 returns the channel field name for the given event6497 #event_channel_value6498 returns the channel field value for the given event6499 raises an error for unsupported events6500Gitlab::Database::SchemaValidation::TrackInconsistency6501 # order random6502 #execute6503 when is not GitLab.com6504 does not create a schema inconsistency record6505 when the issue creation fails6506 does not create a schema inconsistency record6507 when a new inconsistency is found6508 creates a new schema inconsistency record6509 when the schema inconsistency already exists6510 when the issue has the last schema inconsistency6511 does not add a note6512 when the issue is outdated6513 adds a note6514 updates the diff6515 when the GitLab issue is open6516 does not create a new schema inconsistency record6517 when the GitLab is not open6518 creates a new schema inconsistency record6519Gitlab::Suggestions::FileSuggestion6520 #line_conflict6521 when line ranges do not overlap6522 return false6523 when line ranges are identical6524 returns true6525 when one range starts, and the other ends, on the same line6526 returns true6527 when one line range contains the other6528 returns true6529 when line ranges overlap6530 returns true6531 when no suggestions have been added6532 returns false6533 #new_content6534 with two suggestions6535 returns a blob with the suggestions applied to it6536 when no suggestions have been added6537 returns an empty string6538 with multiline suggestions6539 when the previous suggestion increases the line count6540 returns a blob with the suggestions applied to it6541 when the previous suggestion decreases and increases the line count6542 returns a blob with the suggestions applied to it6543 when the previous suggestion replaces with the same number of lines6544 returns a blob with the suggestions applied to it6545 when the previous suggestion replaces multiple lines and the suggestions were applied out of order6546 returns a blob with the suggestions applied to it6547Gitlab::Git::KeepAround6548 does not fail if we attempt to reference bad commit6549 stores a reference to the specified commit sha so it isn't garbage collected6550 does not fail if writting the ref fails6551 for multiple SHAs6552 skips non-existent SHAs6553 skips already-kept-around SHAs6554Ci::DeleteObjectsService6555 #execute6556 deletes records6557 deletes files6558 when trying to execute without records6559 does not change the number of objects6560 when trying to remove the same file multiple times6561 executes successfully6562 with artifacts both ready and not ready for deletion6563 skips records with pick_up_at in the future6564 limits the number of records removed6565 removes records in order6566 updates pick_up_at timestamp6567 does not delete objects for which file deletion has failed6568 with an open database transaction6569 raises an exception and does not remove records6570 #remaining_batches_count6571 when there is less than one batch size6572 is expected to eq 16573 when there is more than one batch size6574 is expected to eq 26575Banzai::ReferenceRedactor6576 #redact6577 when reference not visible to user6578 redacts an array of documents6579 replaces redacted reference with inner HTML6580 when data-original attribute provided6581 replaces redacted reference with original content6582 does not replace redacted reference with original content if href is given6583 uses the original content as the link content if given6584 when project is in pending delete6585 redacts an issue attached6586 redacts an external issue6587 when reference visible to user6588 does not redact an array of documents6589 when the user cannot read cross project6590 skips links to issues within the same project6591 removes info from a cross project reference6592 #redact_nodes6593 redacts an Array of nodes6594 #nodes_visible_to_user6595 returns a Set containing the visible nodes6596 handles invalid references gracefully6597layouts/fullscreen6598 renders a flex container6599 renders flash container6600 renders top nav6601 behaves like a layout which reflects the application theme setting6602 as a themed layout6603 when no theme is explicitly selected6604 renders with the default theme6605 when user is authenticated & has selected a specific theme6606 chosen_theme: #<struct Gitlab::Themes::Theme id=1, name="Indigo", css_class="ui-indigo", css_filename="theme_indigo", primary_color="#292961">6607 renders with the Indigo theme6608 chosen_theme: #<struct Gitlab::Themes::Theme id=6, name="Light Indigo", css_class="ui-light-indigo", css_filename="theme_light_indigo", primary_color="#4b4ba3">6609 renders with the Light Indigo theme6610 chosen_theme: #<struct Gitlab::Themes::Theme id=4, name="Blue", css_class="ui-blue", css_filename="theme_blue", primary_color="#1a3652">6611 renders with the Blue theme6612 chosen_theme: #<struct Gitlab::Themes::Theme id=7, name="Light Blue", css_class="ui-light-blue", css_filename="theme_light_blue", primary_color="#2261a1">6613 renders with the Light Blue theme6614 chosen_theme: #<struct Gitlab::Themes::Theme id=5, name="Green", css_class="ui-green", css_filename="theme_green", primary_color="#0d4524">6615 renders with the Green theme6616 chosen_theme: #<struct Gitlab::Themes::Theme id=8, name="Light Green", css_class="ui-light-green", css_filename="theme_light_green", primary_color="#156b39">6617 renders with the Light Green theme6618 chosen_theme: #<struct Gitlab::Themes::Theme id=9, name="Red", css_class="ui-red", css_filename="theme_red", primary_color="#691a16">6619 renders with the Red theme6620 chosen_theme: #<struct Gitlab::Themes::Theme id=10, name="Light Red", css_class="ui-light-red", css_filename="theme_light_red", primary_color="#a62e21">6621 renders with the Light Red theme6622 chosen_theme: #<struct Gitlab::Themes::Theme id=2, name="Gray", css_class="ui-gray", css_filename="theme_gray", primary_color="#303030">6623 renders with the Gray theme6624 chosen_theme: #<struct Gitlab::Themes::Theme id=3, name="Light Gray", css_class="ui-light-gray", css_filename="theme_light_gray", primary_color="#666">6625 renders with the Light Gray theme6626 chosen_theme: #<struct Gitlab::Themes::Theme id=11, name="Dark Mode (alpha)", css_class="gl-dark", css_filename=nil, primary_color="#303030">6627 renders with the Dark Mode (alpha) theme6628 sidebar6629 when nav is set6630 renders the sidebar6631 adds the proper classes6632 when nav is not set6633 does not render the sidebar6634 not add classes6635 when minimal is set6636 does not render top nav6637Gitlab::Metrics::Dashboard::Url6638 #metrics_regex6639 for /-/environments/:environment_id/metrics route6640 behaves like regex which matches url when expected6641 is expected to be a kind of Regexp6642 matches a metrics dashboard link with named params6643 does not match other gitlab urls that contain the term metrics6644 does not match other gitlab urls6645 does not match non-gitlab urls6646 for /-/metrics?environment=:environment_id route6647 behaves like regex which matches url when expected6648 is expected to be a kind of Regexp6649 matches a metrics dashboard link with named params6650 does not match other gitlab urls that contain the term metrics6651 does not match other gitlab urls6652 does not match non-gitlab urls6653 for metrics_dashboard route6654 behaves like regex which matches url when expected6655 is expected to be a kind of Regexp6656 matches a metrics dashboard link with named params6657 does not match other gitlab urls that contain the term metrics6658 does not match other gitlab urls6659 does not match non-gitlab urls6660 #clusters_regex6661 behaves like regex which matches url when expected6662 is expected to be a kind of Regexp6663 matches a metrics dashboard link with named params6664 does not match other gitlab urls that contain the term metrics6665 does not match other gitlab urls6666 does not match non-gitlab urls6667 for metrics_dashboard route6668 behaves like regex which matches url when expected6669 is expected to be a kind of Regexp6670 matches a metrics dashboard link with named params6671 does not match other gitlab urls that contain the term metrics6672 does not match other gitlab urls6673 does not match non-gitlab urls6674 #grafana_regex6675 behaves like regex which matches url when expected6676 is expected to be a kind of Regexp6677 matches a metrics dashboard link with named params6678 does not match other gitlab urls that contain the term metrics6679 does not match other gitlab urls6680 does not match non-gitlab urls6681 #alert_regex6682 behaves like regex which matches url when expected6683 is expected to be a kind of Regexp6684 matches a metrics dashboard link with named params6685 does not match other gitlab urls that contain the term metrics6686 does not match other gitlab urls6687 does not match non-gitlab urls6688 behaves like regex which matches url when expected6689 is expected to be a kind of Regexp6690 matches a metrics dashboard link with named params6691 does not match other gitlab urls that contain the term metrics6692 does not match other gitlab urls6693 does not match non-gitlab urls6694 #build_dashboard_url6695 builds the url for the dashboard endpoint6696AtomicInternalId6697 #save!6698 when IID is provided6699 tracks the value6700 when importing6701 does not track the value6702 #track_project_iid!6703 tracks the present value6704 when value is set by ensure_project_iid!6705 does not track the value6706 tracks the iid for the scope that is actually present6707 #ensure_project_iid!6708 generates a new value if non is present6709 generates a new value if first set with iid= but later set to nil6710 #clear_scope_iid!6711 when no ensure_if condition is given6712 clears automatically set IIDs6713 does not clear manually set IIDS6714 when an ensure_if condition is given6715 when the ensure_if condition evaluates to true6716 clears automatically set IIDs6717 does not clear manually set IIDs6718 when the ensure_if condition evaluates to false6719 does not clear IIDs6720 #validate_scope_iid_exists!6721 when the presence flag is set6722 raises an error for blank iids on create6723 raises an error for blank iids on update6724 when the presence flag is not set6725 does not raise an error for blank iids on create6726 does not raise an error for blank iids on update6727 .with_project_iid_supply6728 supplies a stream of iid values6729 .track_namespace_iid!6730 tracks the present value6731 when transitioning a model from one scope to another6732 generates the iid on the new scope6733 when models is scoped to namespace and does not have an init proc6734 generates the iid on the new scope6735 supplies a stream of iid values6736Users::DeactivateDormantUsersWorker6737 #perform6738 does not run for SaaS6739 when automatic deactivation of dormant users is enabled6740 deactivates dormant users6741 does not deactivate non-active users6742 does not deactivate recently created users6743 triggers update of highest user role for deactivated users6744 user_type: :human, expected_state: "deactivated"6745 deactivates certain user types6746 user_type: :support_bot, expected_state: "active"6747 deactivates certain user types6748 user_type: :alert_bot, expected_state: "active"6749 deactivates certain user types6750 user_type: :visual_review_bot, expected_state: "active"6751 deactivates certain user types6752 user_type: :service_user, expected_state: "deactivated"6753 deactivates certain user types6754 user_type: :ghost, expected_state: "active"6755 deactivates certain user types6756 user_type: :project_bot, expected_state: "active"6757 deactivates certain user types6758 user_type: :migration_bot, expected_state: "active"6759 deactivates certain user types6760 user_type: :security_bot, expected_state: "active"6761 deactivates certain user types6762 user_type: :automation_bot, expected_state: "active"6763 deactivates certain user types6764 when automatic deactivation of dormant users is disabled6765 does nothing6766Ml::Experiment6767 associations6768 is expected to belong to project required: false6769 is expected to belong to user required: false6770 is expected to have many candidates6771 is expected to have many metadata6772 .package_name6773 .package_name6774 is expected to eq "ml_experiment_1"6775 #by_project_id_and_iid6776 if exists6777 is expected to eq #<Ml::Experiment id: 1, created_at: "2023-06-02 06:47:12.159627564 +0000", updated_at: "2023-06-02 06...7:12.159627564 +0000", iid: 1, project_id: 652, user_id: 1122, name: "experiment1", deleted_on: nil>6778 if does not exist6779 is expected to equal nil6780 #by_project_id_and_name6781 if exists6782 is expected to eq #<Ml::Experiment id: 1, created_at: "2023-06-02 06:47:12.159627564 +0000", updated_at: "2023-06-02 06...7:12.159627564 +0000", iid: 1, project_id: 652, user_id: 1122, name: "experiment1", deleted_on: nil>6783 if does not exist6784 is expected to be nil6785 #by_project_id6786 is expected to contain exactly #<Ml::Experiment id: 1, created_at: "2023-06-02 06:47:12.159627564 +0000", updated_at: "2023-06-02 06...7:12.159627564 +0000", iid: 1, project_id: 652, user_id: 1122, name: "experiment1", deleted_on: nil> and #<Ml::Experiment id: 2, created_at: "2023-06-02 06:47:12.170327114 +0000", updated_at: "2023-06-02 06...7:12.170327114 +0000", iid: 2, project_id: 652, user_id: 1122, name: "experiment2", deleted_on: nil>6787 when project does not have experiment6788 is expected to be empty6789 #with_candidate_count6790 fetches the candidate count6791 #package_for_experiment?6792 package_name: "ml_experiment_1234", id: true6793 is expected to equal true6794 package_name: "ml_experiment_1234abc", id: false6795 is expected to equal false6796 package_name: "ml_experiment_abc", id: false6797 is expected to equal false6798 package_name: "ml_experiment_", id: false6799 is expected to equal false6800 package_name: "blah", id: false6801 is expected to equal false6802Packages::Debian::DistributionsFinder6803 behaves like Debian Distributions Finder6804 by codename6805 with existing codename6806 finds distributions by codename6807 with non-existing codename6808 finds nothing6809 by suite6810 with existing suite6811 finds distribution by suite6812 with non-existing suite6813 finds nothing6814 by codename_or_suite6815 with existing codename6816 finds distribution by codename6817 with existing suite6818 finds distribution by suite6819 with non-existing suite6820 finds nothing6821 behaves like Debian Distributions Finder6822 by codename6823 with existing codename6824 finds distributions by codename6825 with non-existing codename6826 finds nothing6827 by suite6828 with existing suite6829 finds distribution by suite6830 with non-existing suite6831 finds nothing6832 by codename_or_suite6833 with existing codename6834 finds distribution by codename6835 with existing suite6836 finds distribution by suite6837 with non-existing suite6838 finds nothing6839 with nil container6840 raises error6841 with unexpected container type6842 raises error6843Gitlab::Ci::Pipeline::Expression::Lexeme::Or6844 .build6845 creates a new instance of the token6846 with non-evaluable operands6847 raises an operator error6848 .type6849 is an operator6850 .precedence6851 has a precedence6852 #evaluate6853 when left and right are truthy6854 left_value: true, right_value: 16855 is expected to be truthy6856 is expected to eq true6857 left_value: true, right_value: "a"6858 is expected to be truthy6859 is expected to eq true6860 left_value: 1, right_value: true6861 is expected to be truthy6862 is expected to eq 16863 left_value: 1, right_value: "a"6864 is expected to be truthy6865 is expected to eq 16866 left_value: "a", right_value: true6867 is expected to be truthy6868 is expected to eq "a"6869 left_value: "a", right_value: 16870 is expected to be truthy6871 is expected to eq "a"6872 when left or right is truthy6873 left_value: true, right_value: false6874 is expected to be truthy6875 left_value: true, right_value: "a"6876 is expected to be truthy6877 left_value: false, right_value: true6878 is expected to be truthy6879 left_value: false, right_value: "a"6880 is expected to be truthy6881 left_value: "a", right_value: true6882 is expected to be truthy6883 left_value: "a", right_value: false6884 is expected to be truthy6885 when left and right are falsey6886 left_value: false, right_value: nil6887 is expected to be falsey6888 is expected to eq nil6889 left_value: nil, right_value: false6890 is expected to be falsey6891 is expected to eq false6892Gitlab::ErrorTracking::Processor::SidekiqProcessor6893 .filter_arguments6894 returns a lazy enumerator6895 arguments filtering6896 klass: "UnknownWorker", expected: [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]6897 is expected to eq [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]6898 klass: "NoPermittedArguments", expected: [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]6899 is expected to eq [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]6900 klass: "OnePermittedArgument", expected: [1, "string", "[FILTERED]", "[FILTERED]"]6901 is expected to eq [1, "string", "[FILTERED]", "[FILTERED]"]6902 klass: "AllPermittedArguments", expected: [1, "string", [1, 2], {:a=>1}]6903 is expected to eq [1, "string", [1, 2], {:a=>1}]6904 .permitted_arguments_for_worker6905 returns the loggable_arguments for a worker class as a set6906 returns an empty set when the worker class does not exist6907 returns an empty set when the worker class does not respond to loggable_arguments6908 returns an empty set when loggable_arguments cannot be converted to a set6909 memoizes the results6910 .loggable_arguments6911 filters and limits the arguments, then converts to strings6912 .call6913 when there is Sidekiq data6914 when processing via the default error handler6915 with Raven events6916 for an unknown worker6917 only allows numeric arguments for an unknown worker6918 for a permitted worker6919 allows all argument types for a permitted worker6920 with Sentry events6921 for an unknown worker6922 only allows numeric arguments for an unknown worker6923 for a permitted worker6924 allows all argument types for a permitted worker6925 when processing via Gitlab::ErrorTracking6926 with Raven events6927 for an unknown worker6928 only allows numeric arguments for an unknown worker6929 for a permitted worker6930 allows all argument types for a permitted worker6931 with Sentry events6932 for an unknown worker6933 only allows numeric arguments for an unknown worker6934 for a permitted worker6935 allows all argument types for a permitted worker6936 with Raven events6937 behaves like handles jobstr fields6938 when a jobstr field is present6939 removes the jobstr6940 when no jobstr value is present6941 does nothing6942 with Sentry events6943 behaves like handles jobstr fields6944 when a jobstr field is present6945 removes the jobstr6946 when no jobstr value is present6947 does nothing6948 when there is no Sidekiq data6949 with Raven events6950 behaves like does nothing6951 does nothing6952 with Sentry events6953 behaves like does nothing6954 does nothing6955 when there is Sidekiq data but no job6956 with Raven events6957 behaves like does nothing6958 does nothing6959 with Sentry events6960 behaves like does nothing6961 does nothing6962Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas6963 properly analyzes queries6964 for SELECT on projects for allowed_gitlab_schema=no_schema6965 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLNotAllowedError6966 for SELECT on projects for allowed_gitlab_schema=gitlab_main6967 is expected not to raise Exception6968 for SELECT on projects for allowed_gitlab_schema=gitlab_ci6969 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLAccessDeniedError6970 for INSERT for allowed_gitlab_schema=no_schema6971 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLNotAllowedError6972 for INSERT for allowed_gitlab_schema=gitlab_main6973 is expected not to raise Exception6974 for INSERT for allowed_gitlab_schema=gitlab_ci6975 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DMLAccessDeniedError6976 for CREATE INDEX for allowed_gitlab_schema=no_schema6977 is expected not to raise Exception6978 for CREATE INDEX for allowed_gitlab_schema=gitlab_main6979 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError6980 for CREATE INDEX for allowed_gitlab_schema=gitlab_ci6981 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError6982 for CREATE SCHEMA for allowed_gitlab_schema=no_schema6983 is expected not to raise Exception6984 for CREATE SCHEMA for allowed_gitlab_schema=gitlab_main6985 is expected not to raise Exception6986 for CREATE SCHEMA for allowed_gitlab_schema=gitlab_ci6987 is expected not to raise Exception6988 for CREATE FUNCTION for allowed_gitlab_schema=no_schema6989 is expected not to raise Exception6990 for CREATE FUNCTION for allowed_gitlab_schema=gitlab_main6991 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError6992 for CREATE FUNCTION for allowed_gitlab_schema=gitlab_ci6993 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError6994 for CREATE TRIGGER for allowed_gitlab_schema=no_schema6995 is expected not to raise Exception6996 for CREATE TRIGGER for allowed_gitlab_schema=gitlab_main6997 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError6998 for CREATE TRIGGER for allowed_gitlab_schema=gitlab_ci6999 is expected to raise Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas::DDLNotAllowedError7000 .require_ddl_mode!7001 when not configured does not raise exception7002 when no schemas are configured does not raise exception (DDL mode)7003 with schemas configured does raise exception (DML mode)7004 .require_dml_mode!7005 when not configured does not raise exception7006 when no schemas are configured does raise exception (DDL mode)7007 with schemas configured does raise exception (DML mode)7008Gitlab::Ci::Config::Entry::Port7009 when configuration is a string7010 #valid?7011 is valid7012 #value7013 returns valid hash7014 #number7015 returns port number7016 #protocol7017 is nil7018 #name7019 is nil7020 when configuration is a hash7021 with the complete hash7022 #valid?7023 is valid7024 #value7025 returns valid hash7026 #number7027 returns port number7028 #protocol7029 returns port protocol7030 #name7031 returns port name7032 with only the port number7033 #valid?7034 is valid7035 #value7036 returns valid hash7037 #number7038 returns port number7039 #protocol7040 is nil7041 #name7042 is nil7043 without the number7044 #valid?7045 is not valid7046 when configuration is invalid7047 #valid?7048 is valid7049 when protocol7050 is http7051 #valid?7052 is valid7053 is https7054 #valid?7055 is valid7056 is neither http nor https7057 #valid?7058 is invalid7059Environments::AutoStopWorker7060 stops the environment7061 executes the stop action7062 when user does not have a permission to play the stop action7063 raises an error7064 when the environment has already been stopped7065 does not execute the stop action7066 when there are no deployments and associted stop actions7067 stops the environment7068 when there are no corresponding environment record7069 ignores the invalid record7070Ci::RefDeleteUnlockArtifactsWorker7071 #perform7072 is labeled as idempotent7073 performs multiple times sequentially without raising an exception7074 unlocks the artifacts from older pipelines7075 when project exists7076 when user exists7077 when ci ref exists for project7078 calls the service7079 when a locked pipeline with persisted artifacts exists7080 logs the correct extra metadata7081 when ci ref does not exist for the given project7082 does not call the service7083 when same ref path exists for a different project7084 calls the service with the correct ref_id7085 when user does not exist7086 does not call service7087 when project does not exist7088 does not call service7089Ci::CreatePipelineService7090 #execute7091 with deployment tier7092 creates the environment with the expected tier7093 when tier is testing7094 creates the environment with the expected tier7095 when branch pipeline creates a dynamic environment7096 does not associate merge request with the environment7097 when variables are dependent on stage name7098 creates the pipeline successfully7099SafeFormatHelper7100 # order random7101 #tag_pair7102 plain_tag: "", open: nil, close: nil7103 is expected to eq {}7104 plain_tag: "a", open: nil, close: nil7105 is expected to eq {}7106 plain_tag: "<a", open: nil, close: nil7107 is expected to eq {}7108 plain_tag: "<a>", open: nil, close: nil7109 is expected to eq {}7110 plain_tag: "<a><a>", open: nil, close: nil7111 is expected to eq {}7112 plain_tag: "<input/>", open: nil, close: nil7113 is expected to eq {}7114 plain_tag: "<a></a>", open: "<a>", close: "</a>"7115 is expected to eq {:tag_close=>"</a>", :tag_open=>"<a>"}7116 is expected to be all7117 plain_tag: "<a href=\"\">x</a>", open: "<a href=\"\">", close: "</a>"7118 is expected to eq {:tag_close=>"</a>", :tag_open=>"<a href=\"\">"}7119 is expected to be all7120 when tag is not html_safe7121 raises an ArgumentError7122 #safe_format7123 behaves like safe formatting7124 is expected to eq ""7125 is expected to be html safe7126 behaves like safe formatting7127 is expected to eq "Foo"7128 is expected to be html safe7129 behaves like safe formatting7130 is expected to eq "<b>strong</b>"7131 is expected to be html safe7132 behaves like safe formatting7133 is expected to eq "<b>strong</b>"7134 is expected to be html safe7135 behaves like safe formatting7136 is expected to eq "<b>strong</b> <a href="">link</a>"7137 is expected to be html safe7138 when format is marked as html_safe7139 behaves like safe formatting7140 is expected to eq "<b>strong</b>"7141 is expected to be html safe7142 with multiple args7143 behaves like safe formatting7144 is expected to eq "<a>c</a> <x>z</x>"7145 is expected to be html safe7146 with a view component7147 safetly formats7148 with format containing escaped entities7149 behaves like safe formatting7150 is expected to eq "In < hour"7151 is expected to be html safe7152 behaves like safe formatting7153 is expected to eq ""air""7154 is expected to be html safe7155 behaves like safe formatting7156 is expected to eq "Mix & match > all"7157 is expected to be html safe7158Gitlab::EtagCaching::Router::Rails7159 matches issue notes endpoint7160 matches MR notes endpoint7161 matches issue title endpoint7162 matches with a project name that includes a suffix of create7163 matches with a project name that includes a prefix of create7164 matches project pipelines endpoint7165 matches commit pipelines endpoint7166 matches new merge request pipelines endpoint7167 matches merge request pipelines endpoint7168 matches build endpoint7169 does not match blob with confusing name7170 matches the cluster environments path7171 matches the environments path7172 does not match the operations environments list path7173 matches pipeline#show endpoint7174 has a valid feature category for every route7175 has a caller_id for every route7176 has an urgency for every route7177 .cache_key7178 uses request path as cache key7179MemberTask7180 Associations7181 is expected to belong to member required: false7182 is expected to belong to project required: false7183 Validations7184 is expected to validate that :member cannot be empty/falsy7185 is expected to validate that :project cannot be empty/falsy7186 is expected to validate that :tasks is either ‹0›, ‹1›, or ‹2›7187 unique tasks validation7188 expects the task values to be unique7189 project validations7190 when the member source is a group7191 expects the project to be part of the member's group projects7192 when the project is part of the member's group projects7193 is expected to be valid7194 when the member source is a project7195 expects the project to be the member's project7196 when the project is the member's project7197 is expected to be valid7198 .for_members7199 returns the member_tasks for multiple members7200 #tasks_to_be_done7201 returns an array of symbols for the corresponding integers7202 #tasks_to_be_done=7203 when passing valid values7204 when passing tasks as strings7205 sets an array of integers for the corresponding tasks7206 when passing a single task7207 sets an array of integers for the corresponding tasks7208 when passing a task twice7209 is set only once7210Sidebars::Panel7211 #renderable_menus7212 returns only renderable menus7213 #super_sidebar_menu_items7214 serializes every renderable menu and returns a flattened result7215 #super_sidebar_context_header7216 raises `NotImplementedError`7217 #has_renderable_menus?7218 returns false when no renderable menus7219 returns true when no renderable menus7220 #add_element7221 adds the element to the last position of the list7222 does not add nil elements7223 #insert_element_before7224 adds element before the specific element class7225 does not add nil elements7226 when reference element does not exist7227 adds the element to the top of the list7228 #insert_element_after7229 adds element after the specific element class7230 does not add nil elements7231 when reference element does not exist7232 adds the element to the end of the list7233 #replace_element7234 replace existing element in the list7235 does not add nil elements7236 does not add the element if the other element is not found7237ProtectedTag7238 Associations7239 is expected to belong to project required: false7240 Validation7241 is expected to validate that :project cannot be empty/falsy7242 is expected to validate that :name cannot be empty/falsy7243 #protected?7244 returns true when the tag matches a protected tag via direct match7245 returns true when the tag matches a protected tag via wildcard match7246 returns false when the tag does not match a protected tag via direct match7247 returns false when the tag does not match a protected tag via wildcard match7248 returns false when tag name is nil7249 with caching7250 correctly invalidates a cache7251 correctly uses the cached version7252Gitlab::Ci::Variables::Builder::Group7253 #secret_variables7254 when the ref is not protected7255 contains only the CI variables7256 when the ref is protected7257 contains all the variables7258 when environment name is specified7259 when environment scope is exactly matched7260 is expected to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007f8acaf184a0 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>7261 when environment scope is matched by wildcard7262 is expected to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007f8acb531e40 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>7263 when environment scope does not match7264 is expected not to contain exactly #<Gitlab::Ci::Variables::Collection::Item:0x00007f8acbb80bc0 @variable={:key=>"VARIABLE_1", :value=>"secret", :public=>false, :file=>false, :masked=>false, :raw=>false}>7265 when environment scope has _7266 does not treat it as wildcard7267 when environment name contains underscore7268 matches literally for _7269 when environment scope has %7270 does not treat it as wildcard7271 when environment name contains a percent7272 matches literally for _7273 when variables with the same name have different environment scopes7274 orders the variables from least to most matched7275 when group has children7276 traversal queries7277 recursive7278 returns all variables belonging to the group and parent groups7279 linear7280 returns all variables belonging to the group and parent groups7281Metrics::Dashboard::DefaultEmbedService7282 .valid_params?7283 is expected to be truthy7284 missing embedded7285 is expected to be falsey7286 not embedded7287 is expected to be falsey7288 #get_dashboard7289 caches the unprocessed dashboard for subsequent calls7290 behaves like valid embedded dashboard service response7291 behaves like valid dashboard service response for schema7292 returns a json representation of the dashboard7293 behaves like raises error for users with insufficient permissions7294 when the user does not have sufficient access7295 behaves like misconfigured dashboard service response7296 returns an appropriate message and status code7297 when the user is anonymous7298 behaves like misconfigured dashboard service response7299 returns an appropriate message and status code7300 when called with a non-system dashboard7301 behaves like valid embedded dashboard service response7302 behaves like valid dashboard service response for schema7303 returns a json representation of the dashboard7304Ci::UpdateInstanceVariablesService7305 #execute7306 without variables7307 is expected to be truthy7308 with insert only variables7309 is expected to be truthy7310 persists all the records7311 persists attributes7312 with update only variables7313 is expected to be truthy7314 does not change the count7315 updates the records in place7316 with insert and update variables7317 is expected to be truthy7318 inserts only one record7319 persists all the records7320 with insert, update, and destroy variables7321 is expected to be truthy7322 persists all the records7323 with invalid variables7324 is expected to be falsey7325 does not insert any records7326 does not update existing records7327 returns errors7328 when deleting non existing variables7329 is expected to raise ActiveRecord::RecordNotFound7330 when updating non existing variables7331 is expected to raise ActiveRecord::RecordNotFound7332SystemNotes::AlertManagementService7333 #create_new_alert7334 has the appropriate message7335 behaves like a system note7336 has the correct attributes7337 #change_alert_status7338 with no specified reason7339 has the appropriate message7340 behaves like a system note7341 has the correct attributes7342 with reason provided7343 has the appropriate message7344 #new_alert_issue7345 has the appropriate message7346 behaves like a system note7347 has the correct attributes7348 #log_resolving_alert7349 has the appropriate message7350 behaves like a system note7351 has the correct attributes7352Notes::DestroyService7353 #execute7354 deletes a note7355 updates the todo counts for users with todos for the note7356 tracks merge request usage data7357 tracks design comment removal7358 comment removed event tracking7359 tracks issue comment removal usage data7360 behaves like issue_edit snowplow tracking7361 behaves like Snowplow event tracking with RedisHLL context7362 behaves like Snowplow event tracking7363 is emitted7364 in a merge request7365 does not track issue comment removal usage data7366 noteable highlight cache clearing7367 clears noteable diff cache when it was unfolded for the note position7368 does not clear cache when note is not the first of the discussion7369Clusters::AgentPolicy7370 rules7371 is expected to be disallowed :read_cluster_agent7372 when developer7373 is expected to be disallowed :admin_cluster7374 when maintainer7375 is expected to be allowed :admin_cluster7376 when agent is ci_access authorized for project members7377 is expected to be allowed :read_cluster_agent7378 when agent is user_access authorized for project members7379 is expected to be allowed :read_cluster_agent7380WorkItems::Type7381 modules7382 is expected to includes the CacheMarkdownField module7383 associations7384 is expected to have many work_items7385 is expected to belong to namespace required: false7386 has many `widget_definitions`7387 has many `enabled_widget_definitions`7388 scopes7389 order_by_name_asc7390 is expected to match ["atype", "gtype", "Ztype"]7391 #destroy7392 does not delete type when there are related issues7393 when there are no work items of that type7394 deletes type but not unrelated issues7395 validation7396 is expected not to allow :icon_name to be ‹"ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"›7397 name uniqueness7398 is expected to validate that :name is case-insensitively unique within the scope of :namespace_id7399 .default_by_type7400 returns default work item type by base type without calling importer7401 when default types are missing7402 creates types and restrictions and returns default work item type by base type7403 #default?7404 when namespace is nil7405 is expected to be truthy7406 when namespace is present7407 is expected to be falsey7408 #name7409 strips name7410 #supports_assignee?7411 is expected to be truthy7412 when the assignees widget is not supported7413 is expected to be falsey7414 #default_issue?7415 when work item type is default Issue7416 returns true7417 when work item type is not Issue7418 returns false7419WorkItems::Widgets::CurrentUserTodosService::UpdateService7420 # order random7421 #before_update_in_transaction7422 when adding a todo7423 when user has no access7424 does add a todo7425 when user has access7426 creates a new todo for the user and the work item7427 when marking as done7428 when user has no access7429 does not change todo status7430 when resolving all todos of the work item7431 resolves todos of the user for the work item7432 when resolving a specific todo7433 resolves todos of the user for the work item7434Ci::CommitStatusesFinder#execute7435 tag refs7436 no pipelines7437 returns nil7438 when multiple tags exist7439 all relevant commit statuses are received7440 when a tag has multiple pipelines7441 chooses the latest to determine status7442 branch refs7443 no pipelines7444 returns nil7445 when a branch has multiple pipelines7446 chooses the latest to determine status7447 when multiple branches exist7448 all relevant commit statuses are received7449 CI pipelines visible to7450 everyone7451 returns something7452 project members only7453 returns a blank hash7454 when not a member of a private project7455 returns a blank hash7456Pajamas::ProgressComponent7457 # order random7458 value7459 sets the width of the progressbar7460 variant7461 variant: :primary7462 adds variant class7463 variant: :success7464 adds variant class7465 with unknown variant7466 adds the default variant class7467RuboCop::Cop::RSpec::ExpectGitlabTracking7468 # order random7469 bad: expect(Gitlab::Tracking).not_to have_received(:event).with("EventCategory", "event_action")7470 registers an offense7471 bad: expect(Gitlab::Tracking).to receive(:event)7472 registers an offense7473 good: expect_no_snowplow_event7474 does not register an offense7475 bad: allow(Gitlab::Tracking).to receive(:event).and_call_original7476 registers an offense7477 good: expect_snowplow_event(category: "EventCategory", action: "event_action")7478 does not register an offense7479 bad: expect(Gitlab::Tracking).to_not receive(:event).with("EventCategory", "event_action")7480 registers an offense7481 good: expect_snowplow_event(category: "EventCategory", action: "event_action", label: "label", property: "property")7482 does not register an offense7483 bad: expect(Gitlab::Tracking).not_to receive(:event)7484 registers an offense7485 bad: expect(Gitlab::Tracking).to receive(:event).with("EventCategory", "event_action", label: "label", property: "property")7486 registers an offense7487 good: expect_snowplow_event(category: nil, action: nil)7488 does not register an offense7489 bad: expect(Gitlab::Tracking).not_to receive(:event).with("EventCategory", "event_action")7490 registers an offense7491 bad: expect(Gitlab::Tracking).to_not receive(:event)7492 registers an offense7493 bad: expect(Gitlab::Tracking).to_not have_received(:event).with("EventCategory", "event_action")7494 registers an offense7495 bad: expect(Gitlab::Tracking).to have_received(:event).with("EventCategory", "event_action")7496 registers an offense7497layouts/simple_registration7498 behaves like a layout which reflects the application theme setting7499 as a themed layout7500 when no theme is explicitly selected7501 renders with the default theme7502 when user is authenticated & has selected a specific theme7503 chosen_theme: #<struct Gitlab::Themes::Theme id=1, name="Indigo", css_class="ui-indigo", css_filename="theme_indigo", primary_color="#292961">7504 renders with the Indigo theme7505 chosen_theme: #<struct Gitlab::Themes::Theme id=6, name="Light Indigo", css_class="ui-light-indigo", css_filename="theme_light_indigo", primary_color="#4b4ba3">7506 renders with the Light Indigo theme7507 chosen_theme: #<struct Gitlab::Themes::Theme id=4, name="Blue", css_class="ui-blue", css_filename="theme_blue", primary_color="#1a3652">7508 renders with the Blue theme7509 chosen_theme: #<struct Gitlab::Themes::Theme id=7, name="Light Blue", css_class="ui-light-blue", css_filename="theme_light_blue", primary_color="#2261a1">7510 renders with the Light Blue theme7511 chosen_theme: #<struct Gitlab::Themes::Theme id=5, name="Green", css_class="ui-green", css_filename="theme_green", primary_color="#0d4524">7512 renders with the Green theme7513 chosen_theme: #<struct Gitlab::Themes::Theme id=8, name="Light Green", css_class="ui-light-green", css_filename="theme_light_green", primary_color="#156b39">7514 renders with the Light Green theme7515 chosen_theme: #<struct Gitlab::Themes::Theme id=9, name="Red", css_class="ui-red", css_filename="theme_red", primary_color="#691a16">7516 renders with the Red theme7517 chosen_theme: #<struct Gitlab::Themes::Theme id=10, name="Light Red", css_class="ui-light-red", css_filename="theme_light_red", primary_color="#a62e21">7518 renders with the Light Red theme7519 chosen_theme: #<struct Gitlab::Themes::Theme id=2, name="Gray", css_class="ui-gray", css_filename="theme_gray", primary_color="#303030">7520 renders with the Gray theme7521 chosen_theme: #<struct Gitlab::Themes::Theme id=3, name="Light Gray", css_class="ui-light-gray", css_filename="theme_light_gray", primary_color="#666">7522 renders with the Light Gray theme7523 chosen_theme: #<struct Gitlab::Themes::Theme id=11, name="Dark Mode (alpha)", css_class="gl-dark", css_filename=nil, primary_color="#303030">7524 renders with the Dark Mode (alpha) theme7525Gitlab::ProcessManagement7526 .trap_signals7527 traps the given signals7528 .modify_signals7529 traps the given signals with the given command7530 .signal_processes7531 sends a signal to every given process7532 .signal7533 sends a signal to the given process7534 returns false when the process does not exist7535 .all_alive?7536 returns true if all processes are alive7537 returns false when a thread was not alive7538 .process_alive?7539 returns true if the process is alive7540 returns false when a thread was not alive7541 returns false when no pid is given7542 .process_died?7543 returns false if the process is alive7544 returns true when a thread was not alive7545 returns true when no pid is given7546 .pids_alive7547 returns the pids that are alive, from a given array7548 .any_alive?7549 returns true if at least one process is alive7550 returns false when all threads are dead7551 .write_pid7552 writes the PID of the current process to the given file7553Gitlab::Sanitizers::SVG7554 .clean7555 delegates sanitization to scrubber7556 returns sanitized data7557 scrubber7558 #scrub7559 removes an invalid element7560 removes an invalid attribute7561 accepts valid element7562 accepts valid namespaced attributes7563 #attribute_name_with_namespace7564 returns name with prefix when attribute is namespaced7565 #unsafe_href?7566 returns true if href attribute is an external url7567 returns false if href atttribute is an internal reference7568 #data_attribute?7569 returns true if is a valid data attribute7570 returns false if attribute is namespaced7571 returns false if not a data attribute7572WorkItems::Callbacks::AwardEmoji7573 # order random7574 #before_update7575 when awarding an emoji7576 when user has no access7577 does not award the emoji7578 when user has access7579 awards the emoji to the work item7580 when the name is incorrect7581 behaves like raises a WidgetError7582 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "Name is not a valid emoji name"7583 when the action is incorrect7584 behaves like raises a WidgetError7585 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "foo is not a valid action."7586 when removing emoji7587 when user has no access7588 does not remove the emoji7589 when user has access7590 removes existing emoji7591 when work item does not have the emoji7592 behaves like raises a WidgetError7593 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "User has not awarded emoji of type star on the awardable"7594Mutations::Ci::JobTokenScope::AddProject7595 #resolve7596 when user is not logged in7597 raises error7598 when user is logged in7599 when user does not have permissions to admin project7600 raises error7601 when user has permissions to admin project and read target project7602 adds target project to the inbound job token scope by default7603 when mutation uses the direction argument7604 when targeting the outbound allowlist7605 raises an error7606 when targeting the inbound allowlist7607 adds the target project7608 when FF frozen_outbound_job_token_scopes is disabled7609 adds target project to the outbound job token scope by default7610 when mutation uses the direction argument7611 when targeting the outbound allowlist7612 adds the target project7613 when targeting the inbound allowlist7614 adds the target project7615 when the service returns an error7616 returns an error response7617Gitlab::I18n::Pluralization7618 # order random7619 .install_on7620 adds pluralisation_rule method7621 .call7622 with available locales7623 locale: "bg"7624 supports pluralization7625 locale: "cs_CZ"7626 supports pluralization7627 locale: "da_DK"7628 supports pluralization7629 locale: "de"7630 supports pluralization7631 locale: "en"7632 supports pluralization7633 locale: "eo"7634 supports pluralization7635 locale: "es"7636 supports pluralization7637 locale: "fil_PH"7638 supports pluralization7639 locale: "fr"7640 supports pluralization7641 locale: "gl_ES"7642 supports pluralization7643 locale: "id_ID"7644 supports pluralization7645 locale: "it"7646 supports pluralization7647 locale: "ja"7648 supports pluralization7649 locale: "ko"7650 supports pluralization7651 locale: "nb_NO"7652 supports pluralization7653 locale: "nl_NL"7654 supports pluralization7655 locale: "pl_PL"7656 supports pluralization7657 locale: "pt_BR"7658 supports pluralization7659 locale: "ro_RO"7660 supports pluralization7661 locale: "ru"7662 supports pluralization7663 locale: "si_LK"7664 supports pluralization7665 locale: "tr_TR"7666 supports pluralization7667 locale: "uk"7668 supports pluralization7669 locale: "zh_CN"7670 supports pluralization7671 locale: "zh_HK"7672 supports pluralization7673 locale: "zh_TW"7674 supports pluralization7675 with missing rules7676 raises an ArgumentError7677Environments::EnvironmentsFinder7678 #execute7679 filters environments by type7680 with states parameter7681 returns environments with the requested state7682 returns environments with any of the requested states7683 raises exception when requested state is invalid7684 works with symbols7685 returns environments with the requested state7686 returns environments with any of the requested states7687 with search and states7688 searches environments by name and state7689 searches environments by name inside folder and state7690 when enable_environments_search_within_folder FF is disabled7691 ignores name inside folder7692 with id7693 searches environments by name and id7694Ci::CancelRedundantPipelinesWorker7695 # order random7696 #perform7697 calls cancel redundant pipeline service7698 if pipeline is deleted7699 does not call redundant pipeline service7700 interacting with previous pending pipelines7701 behaves like an idempotent worker7702 is labeled as idempotent7703 performs multiple times sequentially without raising an exception7704 cancels the previous pending pipeline7705GitlabUploader7706 #file_storage?7707 when file storage is used7708 is expected to be file storage7709 when is remote storage7710 is expected not to be file storage7711 #file_cache_storage?7712 when file storage is used7713 is expected to be file cache storage7714 when is remote storage7715 is expected not to be file cache storage7716 #move_to_cache7717 is true7718 #move_to_store7719 is true7720 #cache!7721 moves the file from the working directory to the cache directory7722 #replace_file_without_saving!7723 allows file to be replaced without triggering any callbacks7724 #open7725 when trace is stored in File storage7726 when file exists7727 returns io stream7728 when passing block it yields7729 when file does not exist7730 returns nil7731 when passing block it does not yield7732 when trace is stored in Object storage7733 when file exists7734 returns http io stream7735 when passing block it yields7736 when file does not exist7737 returns nil7738 when passing block it does not yield7739 #url_or_file_path7740 returns url when in remote storage7741 returns url when in remote storage7742 #multi_read7743 is expected to eq ["Running", "gitlab-runner"]7744 .version7745 is expected to raise RuntimeError with message matching /not supported/7746 .storage_location7747 sets the identifier for the storage location options7748 when given identifier is not known7749 raises an error7750Gitlab::Database::Partitioning::MonthlyStrategy7751 #current_partitions7752 detects both partitions7753 #missing_partitions7754 with existing partitions7755 detects the gap and the missing partition in May 20207756 detects the missing partitions at the end of the range and expects a partition for July 20207757 detects the missing partitions at the end of the range and expects a partition for August 20207758 creates partitions 6 months out from now (Sep 2020 through Feb 2021)7759 detects all missing partitions7760 when pruning partitions before June 20207761 does not include the missing partition from May 2020 because it would be dropped7762 detects the missing partition for 1 month ago (July 2020)7763 without existing partitions7764 detects the missing catch-all partition at the beginning7765 detects the missing partition for today and expects a partition for August 20207766 creates partitions 6 months out from now (Sep 2020 through Feb 20217767 detects all missing partitions7768 when pruning partitions before June 20207769 detects exactly the set of partitions from June 2020 to March 20217770 with a regular partition but no catchall (MINVALUE, to) partition7771 detects a missing catch-all partition to add before the existing partition7772 #extra_partitions7773 with existing partitions7774 without a time retention policy7775 has no extra partitions to prune7776 with a time retention policy that excludes no partitions7777 has no extra partitions to prune7778 with a time retention policy of 3 months7779 prunes the unbounded partition ending 2020-05-017780 with a time retention policy of 2 months7781 prunes the unbounded partition and the partition for May-June7782 when the retain_non_empty_partitions is true7783 prunes empty partitions7784 does not prune non-empty partitions7785ContainerRepositoriesSerializer7786 #represent7787 has basic attributes7788 #represent_read_only7789 does not include destroy_path7790 #with_pagination7791 creates a paginated serializer7792 when multiple ContainerRepository objects are serialized7793 serializes appropriate number of objects7794 appends relevant headers7795Milestones::ClosedIssuesCountService7796 counts closed issues including confidential7797 behaves like a counter caching service7798 #count7799 caches the count7800 #refresh_cache7801 refreshes the cache7802 #delete_cache7803 removes the cache7804 #uncached_count7805 does not cache the count7806Gitlab::Ci::Parsers::Codequality::CodeClimate7807 #parse!7808 when data is code_climate style JSON7809 when there are no degradations7810 returns a codequality report7811 when there are degradations7812 returns a codequality report7813 when data is not a valid JSON string7814 sets error_message7815 when degradations contain an invalid one7816 stops parsing the report7817 for web_url7818 when metadata has project and commit_sha7819 adds a non nil url7820 when metadata does not have project and commit_sha7821 adds a nil url7822Ci::StatusHelper7823 #ci_icon_for_status7824 renders to correct svg on success7825 renders the correct svg on failure7826 #ci_text_for_status7827 when status is manual7828 changes the status to blocked7829 when status is success7830 changes the status to passed7831 when status is something else7832 returns status unchanged7833 #pipeline_status_cache_key7834 builds a cache key for pipeline status7835 #render_status_with_link7836 renders a passed status icon7837 has 'Pipeline' as the status type in the title7838 has the success status icon7839 when pipeline has commit path7840 links to commit7841 does not contain a span element7842 has 'Pipeline' as the status type in the title7843 has the correct status icon7844 when different type than pipeline is provided7845 has the provided type in the title7846 when tooltip_placement is provided7847 has the provided tooltip placement7848 when additional CSS classes are provided7849 has appended extra class to icon classes7850 when container is provided7851 has the provided container in data7852 when icon_size is provided7853 has the svg class to change size7854Gitlab::Ci::Input::Arguments::Required7855 # order random7856 returns an error if user-provided value is unspecified7857 returns a user-provided value if it is present7858 returns an empty value if user-provider value is empty7859 .matches?7860 matches specs without configuration7861 matches specs with empty configuration7862 matches specs with an empty hash configuration7863 does not match specs with configuration7864Projects::Prometheus::AlertsFinder7865 with params7866 #execute7867 with project7868 is expected to eq [#<PrometheusAlert id: 11, created_at: "2023-06-02 06:48:32.424496895 +0000", updated_at: "2023-06-02...0, operator: "gt", environment_id: 94, project_id: 721, prometheus_metric_id: 13, runbook_url: nil>]7869 with matching metric7870 is expected to eq [#<PrometheusAlert id: 11, created_at: "2023-06-02 06:48:32.424496895 +0000", updated_at: "2023-06-02...0, operator: "gt", environment_id: 93, project_id: 721, prometheus_metric_id: 11, runbook_url: nil>]7871 with matching metric id7872 is expected to eq [#<PrometheusAlert id: 11, created_at: "2023-06-02 06:48:32.424496895 +0000", updated_at: "2023-06-02...0, operator: "gt", environment_id: 93, project_id: 721, prometheus_metric_id: 11, runbook_url: nil>]7873 with project non-specific metric7874 is expected to be empty7875 with environment7876 is expected to eq [#<PrometheusAlert id: 11, created_at: "2023-06-02 06:48:32.424496895 +0000", updated_at: "2023-06-02...0, operator: "gt", environment_id: 93, project_id: 721, prometheus_metric_id: 12, runbook_url: nil>]7877 with matching metric7878 is expected to eq [#<PrometheusAlert id: 11, created_at: "2023-06-02 06:48:32.424496895 +0000", updated_at: "2023-06-02...0, operator: "gt", environment_id: 93, project_id: 721, prometheus_metric_id: 11, runbook_url: nil>]7879 with environment non-specific metric7880 is expected to be empty7881 with matching project and environment7882 is expected to eq [#<PrometheusAlert id: 11, created_at: "2023-06-02 06:48:32.424496895 +0000", updated_at: "2023-06-02...0, operator: "gt", environment_id: 93, project_id: 721, prometheus_metric_id: 12, runbook_url: nil>]7883 with matching metric7884 is expected to eq [#<PrometheusAlert id: 11, created_at: "2023-06-02 06:48:32.424496895 +0000", updated_at: "2023-06-02...0, operator: "gt", environment_id: 93, project_id: 721, prometheus_metric_id: 11, runbook_url: nil>]7885 with environment non-specific metric7886 is expected to be empty7887 with matching id7888 is expected to eq [#<PrometheusAlert id: 11, created_at: "2023-06-02 06:48:32.424496895 +0000", updated_at: "2023-06-02...0, operator: "gt", environment_id: 93, project_id: 721, prometheus_metric_id: 11, runbook_url: nil>]7889 with a nil id7890 is expected to eq [#<PrometheusAlert id: 11, created_at: "2023-06-02 06:48:32.424496895 +0000", updated_at: "2023-06-02...0, operator: "gt", environment_id: 93, project_id: 721, prometheus_metric_id: 12, runbook_url: nil>]7891 with non-matching project-environment pair7892 is expected to be empty7893 with id7894 is expected to eq [#<PrometheusAlert id: 11, created_at: "2023-06-02 06:48:32.424496895 +0000", updated_at: "2023-06-02...0, operator: "gt", environment_id: 93, project_id: 721, prometheus_metric_id: 11, runbook_url: nil>]7895 with multiple ids7896 is expected to eq [#<PrometheusAlert id: 11, created_at: "2023-06-02 06:48:32.424496895 +0000", updated_at: "2023-06-02...0, operator: "gt", environment_id: 92, project_id: 722, prometheus_metric_id: 14, runbook_url: nil>]7897 with non-matching id7898 is expected to be empty7899 without params7900 raises an error7901Users::DismissGroupCalloutService7902 #execute7903 sets the group_id7904 behaves like dismissing user callout7905 creates a new user callout7906 returns a user callout7907 sets the dismissed_at attribute to current time7908 updates an existing callout dismissed_at time7909 does not update an invalid record with dismissed_at time7910Banzai::ReferenceParser::AlertParser7911 #nodes_visible_to_user7912 when the link has a data-issue attribute7913 behaves like referenced feature visibility7914 when feature is disabled7915 does not create reference7916 when feature is enabled only for team members7917 does not create reference for non member7918 creates reference for member7919 when feature is enabled7920 creates reference7921 #referenced_by7922 when the link has a data-alert attribute7923 using an existing alert ID7924 returns an Array of alerts7925 using a non-existing alert ID7926 returns an empty Array7927Boards::VisitsFinder7928 #latest7929 when a project board7930 returns nil when there is no user7931 queries for most recent visit7932 queries for last N visits7933 when a group board7934 returns nil when there is no user7935 queries for most recent visit7936 queries for last N visits7937SourcegraphHelper7938 #sourcegraph_url_message7939 with .com sourcegraph url7940 is expected to have text "Uses %{linkStart}Sourcegraph.com%{linkEnd}. This feature is experimental."7941 with custom sourcegraph url7942 is expected to have text "Uses a custom %{linkStart}Sourcegraph instance%{linkEnd}. This feature is experimental."7943 when not limited by feature or public only7944 is expected to eq "Uses %{linkStart}Sourcegraph.com%{linkEnd}. This feature is experimental."7945 when limited by feature7946 is expected to eq "Uses %{linkStart}Sourcegraph.com%{linkEnd}. This feature is experimental and currently limited to certain projects."7947 when limited by public only7948 is expected to eq "Uses %{linkStart}Sourcegraph.com%{linkEnd}. This feature is experimental and limited to public projects."7949Gitlab::MailRoom::Authenticator7950 #verify_api_request7951 verify a valid token7952 returns the decoded payload7953 verify an invalid token7954 returns false7955 verify a valid token but wrong mailbox type7956 returns false7957 verify a valid token but wrong issuer7958 returns false7959 verify a valid token but expired7960 returns false7961 verify a valid token but wrong header field7962 returns false7963 verify headers for a disabled mailbox type7964 returns false7965 verify headers for a non-existing mailbox type7966 returns false7967 #secret7968 the secret is valid7969 returns the memorized secret from a file7970 the secret file is not configured7971 raises a SecretConfigurationError exception7972 the secret file not found7973 raises a SecretConfigurationError exception7974Mutations::Todos::Create7975 #resolve7976 when target does not support todos7977 raises error7978 with issue as target7979 behaves like create todo mutation7980 when user does not have permission to create todo7981 raises error7982 when user has permission to create todo7983 creates a todo7984 with merge request as target7985 behaves like create todo mutation7986 when user does not have permission to create todo7987 raises error7988 when user has permission to create todo7989 creates a todo7990 with design as target7991 behaves like create todo mutation7992 when user does not have permission to create todo7993 raises error7994 when user has permission to create todo7995 creates a todo7996Gitlab::QueryLimiting7997 .enabled_for_env?7998 returns true in a test environment7999 returns true in a development environment8000 returns false on GitLab.com8001 returns false in a non GitLab.com8002 .disable!8003 raises an ArgumentError when an invalid issue URL is given8004 stops the number of SQL queries from being incremented8005 .enable!8006 allows the number of SQL queries to be incremented8007 #enabled?8008 returns true when enabled8009 returns false when disabled8010AlertManagement::AlertAssignee8011 associations8012 is expected to belong to alert required: false8013 is expected to belong to assignee class_name => User required: false inverse_of => alert_assignees8014 validations8015 is expected to validate that :alert cannot be empty/falsy8016 is expected to validate that :assignee cannot be empty/falsy8017 is expected to validate that :assignee is case-sensitively unique within the scope of :alert_id8018RuboCop::Cop::API::Base8019 # order random8020 adds an offense when inheriting from ::Grape::API8021 adds an offense when inheriting from ::Grape::API::Instance8022 does not add an offense when inheriting from BaseAPI8023 adds an offense when inheriting from Grape::API::Instance8024 adds an offense when inheriting from Grape::API8025Gitlab::Analytics::CycleAnalytics::StageEvents::IssueDeployedToProduction8026 behaves like value stream analytics event8027 is expected to be a kind of String8028 is expected to be a kind of Symbol8029 is expected to include ApplicationRecord(abstract)8030 is expected to respond to #timestamp_projection8031 is expected to respond to #html_description8032 is expected to be a kind of Array8033 #apply_query_customization8034 expects an ActiveRecord::Relation object as argument and returns a modified version of it8035 #hash_code8036 returns a hash that uniquely identifies an event8037 does not differ when the same object is built with the same params8038 behaves like LEFT JOIN-able value stream analytics event8039 can use the event as LEFT JOIN8040 when looking at the record with data8041 contains the timestamp expression8042 when looking at the record without data8043 returns nil for the timestamp expression8044AbuseReportsFinder#execute8045 when params is empty8046 returns all abuse reports8047 when params[:user_id] is present8048 returns abuse reports for the specified user8049 when params[:user] is present8050 behaves like returns filtered reports8051 returns abuse reports filtered by user_id8052 when no user has username = params[:user]8053 returns all abuse reports8054 when params[:reporter] is present8055 behaves like returns filtered reports8056 returns abuse reports filtered by reporter_id8057 when no user has username = params[:reporter]8058 returns all abuse reports8059 when params[:status] is present8060 when value is "open"8061 returns only open abuse reports8062 when value is "closed"8063 returns only closed abuse reports8064 when value is not a valid status8065 defaults to returning open abuse reports8066 when abuse_reports_list feature flag is disabled8067 does not filter by status8068 when params[:category] is present8069 returns abuse reports with the specified category8070 sorting8071 returns reports sorted by the specified sort attribute8072 when sort is not specified8073 returns reports sorted by created_at_desc8074 when sort is not supported8075 returns reports sorted by created_at_desc8076 when abuse_reports_list feature flag is disabled8077 returns reports sorted by id in descending order8078Gitlab::HookData::ProjectBuilder8079 #build8080 data8081 on create8082 is expected to eq "project_create"8083 behaves like includes the required attributes8084 includes the required attributes8085 behaves like does not include `old_path_with_namespace` attribute8086 does not include `old_path_with_namespace` attribute8087 on destroy8088 is expected to eq "project_destroy"8089 behaves like includes the required attributes8090 includes the required attributes8091 behaves like does not include `old_path_with_namespace` attribute8092 does not include `old_path_with_namespace` attribute8093 on rename8094 is expected to eq "project_rename"8095 behaves like includes the required attributes8096 includes the required attributes8097 behaves like includes `old_path_with_namespace` attribute8098 includes `old_path_with_namespace` attribute8099 on transfer8100 is expected to eq "project_transfer"8101 behaves like includes the required attributes8102 includes the required attributes8103 behaves like includes `old_path_with_namespace` attribute8104 includes `old_path_with_namespace` attribute8105MarkdownContentRewriterService8106 #initialize8107 raises an error if source_parent is not a Project8108 raises an error if field does not have cached markdown8109 #execute8110 when content does not need a rewrite8111 returns original content and cached html8112 when content needs a rewrite8113 calls the rewriter classes successfully8114 when content has references8115 rewrites content8116 when content contains an upload8117 rewrites content8118 #safe_to_copy_markdown?8119 when content has references8120 is expected to eq false8121 when content has uploaded file references8122 is expected to eq false8123 when content does not have references or uploads8124 is expected to eq true8125Pajamas::ToggleComponent8126 with defaults8127 renders a toggle container with provided class8128 does not set a name8129 sets default is-checked attributes8130 sets default disabled attributes8131 sets default is-loading attributes8132 does not set a label8133 does not set a label position8134 with custom options8135 sets the custom class8136 sets the custom name8137 sets the custom is-checked attributes8138 sets the custom disabled attributes8139 sets the custom is-loading attributes8140 sets the custom label8141 sets the custom label position8142 sets custom data attributes8143 with setting label_position8144 position: :top, count: 18145 is expected to have visible css "[data-label-position='top']"8146 position: :left, count: 18147 is expected to have visible css "[data-label-position='left']"8148 position: :hidden, count: 18149 is expected to have visible css "[data-label-position='hidden']"8150 position: :bogus, count: 08151 is expected to have visible css "[data-label-position='bogus']"8152 position: "bogus", count: 08153 is expected to have visible css "[data-label-position='bogus']"8154 position: nil, count: 08155 is expected to have visible css "[data-label-position='']"8156Sidebars::Projects::Menus::ProjectInformationMenu8157 behaves like not serializable as super_sidebar_menu_args8158 returns nil8159 #container_html_options8160 is expected to match #<RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher:0x00007f8aaecedd68 @expected={:class=>"shortcuts-project-information has-sub-items"}>8161 Menu Items8162 Labels8163 is expected not to be nil8164 when merge requests are disabled8165 is expected not to be nil8166 when issues are disabled8167 is expected not to be nil8168 when merge requests and issues are disabled8169 is expected to be nil8170 Members8171 is expected not to be nil8172 when the user does not have access8173 is expected to be nil8174SmimeSignatureSettings8175 .parse8176 sets correct default values to disabled8177 when providing custom values8178 sets correct default values to disabled8179 enables smime with default key and cert8180 enables smime with custom key and cert8181Gitlab::Ci::Pipeline::Preloader8182 .preload!8183 preloads commit authors, number of warnings and ref commits8184 returns original collection8185 when preloading multiple commits8186 preloads all commits once8187Gitlab::GithubImport::Importer::LabelLinksImporter8188 #execute8189 creates the label links8190 #create_labels8191 inserts the label links in bulk8192 does not insert label links for non-existing labels8193 does not insert label links for non-existing targets8194 #find_target_id8195 returns the ID of the issuable to create the label link for8196Mutations::Security::CiConfiguration::ConfigureSast8197 is expected to require graphql authorizations :push_code8198 #resolve8199 generates an error if the resource is not accessible to the user8200 when user does not have enough permissions8201 generates an error8202 when user is a maintainer of a different project8203 generates an error8204 when the user does not have permission to create a new branch8205 returns an array of errors8206 when the user can create a merge request8207 when service successfully generates a path to create a new merge request8208 returns a success path8209 when service can not generate any path to create a new merge request8210 returns an array of errors8211Constraints::AdminConstrainer8212 #matches8213 application setting :admin_mode is enabled8214 when user is a regular user8215 forbids access8216 when user is an admin8217 admin mode is disabled8218 forbids access8219 admin mode is enabled8220 allows access8221 application setting :admin_mode is disabled8222 when user is a regular user8223 forbids access8224 when user is an admin8225 allows access8226Tooling::Danger::Specs8227 #changed_specs_files8228 returns added, modified, and renamed_after files by default8229 with include_ee: :exclude8230 returns spec files without EE-specific files8231 with include_ee: :only8232 returns EE-specific spec files only8233API::Entities::DraftNote8234 # order random8235 exposes correct attributes8236GpgKeySubkey8237 associations8238 is expected to belong to gpg_key required: false8239 validations8240 is expected to validate that :gpg_key_id cannot be empty/falsy8241 is expected to validate that :fingerprint cannot be empty/falsy8242 is expected to validate that :keyid cannot be empty/falsy8243Ci::CreatePipelineService8244 artifacts:8245 reports:8246 with valid config8247 creates pipeline with builds8248 with invalid config8249 creates pipeline with yaml errors8250IgnorableColumns8251 adds columns to ignored_columns8252 adds columns to ignored_columns (array version)8253 requires remove_after attribute to be set8254 requires remove_after attribute to be set8255 requires remove_with attribute to be set8256 .ignored_columns_details8257 defaults to empty Hash8258 with single column8259 behaves like storing removal information8260 storing removal information8261 with array column8262 behaves like storing removal information8263 storing removal information8264 when called on a subclass without setting the ignored columns8265 does not raise Deadlock error8266 IgnorableColumns::ColumnIgnore8267 #safe_to_remove?8268 after remove_after date has passed8269 returns true (safe to remove)8270 before remove_after date has passed8271 returns false (not safe to remove)8272ErrorTracking::BaseService8273 #compose_response8274 returns bad_request error when response has an error key8275 returns server error when response has missing key error_type8276 returns no content when response is nil8277 when result has no errors key8278 raises NotImplementedError8279 when parse_response is implemented8280 returns successful response8281 returns successful response with changes from passed block8282 when tracking_event is provided8283 behaves like tracking unique hll events8284 tracks unique event8285Topics::MergeService8286 #execute8287 merges source topic into target topic8288 refreshes counters of target topic8289 when source topic fails to delete8290 reverts previous changes8291 for parameter validation8292 source_topic_parameter: nil, target_topic_parameter: target_topic, expected_message: "The source topic is not a topic."8293 raises correct error8294 source_topic_parameter: source_topic, target_topic_parameter: nil, expected_message: "The target topic is not a topic."8295 raises correct error8296 source_topic_parameter: target_topic, target_topic_parameter: target_topic, expected_message: "The source topic and the target topic are identical."8297 raises correct error8298safe_session_store_patch8299 # order random8300 with ActionController::TestSession8301 behaves like safe session store8302 allows storing a String8303 raises error when session attempts to store an unsafe object8304 allows instance double of OneLogin::RubySaml::Response8305 raises an error for instance double of REXML::Document8306 with ActionDispatch::Request::Session8307 behaves like safe session store8308 allows storing a String8309 raises error when session attempts to store an unsafe object8310 allows instance double of OneLogin::RubySaml::Response8311 raises an error for instance double of REXML::Document8312Groups::ProjectsRequiringAuthorizationsRefresh::OnTransferFinder8313 #execute8314 projects requiring authorizations refresh when a group is transferred (here, `Group B`)8315 includes only the expected projects8316Sidebars::Groups::Menus::MergeRequestsMenu8317 #render?8318 when user can read merge requests8319 returns true8320 when user cannot read merge requests8321 returns false8322 behaves like pill_count formatted results8323 returns all digits for count value under 10008324 returns truncated digits for count value over 10008325 returns truncated digits for count value over 100008326 returns truncated digits for count value over 1000008327 behaves like serializable as super_sidebar_menu_args8328 returns hash with provided attributes8329 returns hash with an item_id8330Gitlab::Application8331 config.filter_parameters8332 when parameters are logged8333 rails does not leak confidential parameters8334 input_url: "/", output_query: {}8335 is expected to eq {}8336 input_url: "/?safe=1", output_query: {"safe"=>"1"}8337 is expected to eq {"safe"=>"1"}8338 input_url: "/?private_token=[MASKED] output_query: {"private_token"=>"[FILTERED]"}8339 is expected to eq {"private_token"=>"[FILTERED]"}8340 input_url: "/?mixed=1&private_token=[MASKED] output_query: {"mixed"=>"1", "private_token"=>"[FILTERED]"}8341 is expected to eq {"mixed"=>"1", "private_token"=>"[FILTERED]"}8342 input_url: "/?note=secret¬eable=1&prefix_note=2", output_query: {"note"=>"[FILTERED]", "noteable"=>"1", "prefix_note"=>"2"}8343 is expected to eq {"note"=>"[FILTERED]", "noteable"=>"1", "prefix_note"=>"2"}8344 input_url: "/?note[note]=secret&target_type=1", output_query: {"note"=>"[FILTERED]", "target_type"=>"1"}8345 is expected to eq {"note"=>"[FILTERED]", "target_type"=>"1"}8346 input_url: "/?safe[note]=secret&target_type=1", output_query: {"safe"=>{"note"=>"[FILTERED]"}, "target_type"=>"1"}8347 is expected to eq {"safe"=>{"note"=>"[FILTERED]"}, "target_type"=>"1"}8348 clear_active_connections_again initializer8349 is included in list of Rails initializers8350 is configured after set_routes_reloader_hook8351 functionality8352 clears all connections8353Packages::Debian::GroupArchitecture8354 behaves like Debian Distribution Architecture8355 relationships8356 is expected to belong to distribution class_name => Packages::Debian::GroupDistribution required: false inverse_of => architectures8357 is expected to have many files class_name => Packages::Debian::GroupComponentFile inverse_of => architecture8358 validations8359 #distribution8360 is expected to validate that :distribution cannot be empty/falsy8361 #name8362 is expected to validate that :name cannot be empty/falsy8363 is expected to allow :name to be ‹"amd64"›8364 is expected to allow :name to be ‹"kfreebsd-i386"›8365 is expected not to allow :name to be ‹"-a"›8366 is expected not to allow :name to be ‹"AMD64"›8367 scopes8368 .ordered_by_name8369 is expected to contain exactly #<Packages::Debian::GroupArchitecture id: 1, created_at: "2023-06-02 06:49:15.244432000 +0000", updated_at: "2023-06-02 06:49:15.244432000 +0000", distribution_id: 6, name: "name1"> and #<Packages::Debian::GroupArchitecture id: 2, created_at: "2023-06-02 06:49:15.249219701 +0000", updated_at: "2023-06-02 06:49:15.249219701 +0000", distribution_id: 6, name: "name2">8370 .with_distribution8371 is expected to contain exactly #<Packages::Debian::GroupArchitecture id: 1, created_at: "2023-06-02 06:49:15.244432000 +0000", updated_at: "2023-06-02 06:49:15.244432000 +0000", distribution_id: 6, name: "name1"> and #<Packages::Debian::GroupArchitecture id: 2, created_at: "2023-06-02 06:49:15.249219701 +0000", updated_at: "2023-06-02 06:49:15.249219701 +0000", distribution_id: 6, name: "name2">8372 .with_name8373 is expected to contain exactly #<Packages::Debian::GroupArchitecture id: 1, created_at: "2023-06-02 06:49:15.244432000 +0000", updated_at: "2023-06-02 06:49:15.244432000 +0000", distribution_id: 6, name: "name1"> and #<Packages::Debian::GroupArchitecture id: 3, created_at: "2023-06-02 06:49:15.316874818 +0000", updated_at: "2023-06-02 06:49:15.316874818 +0000", distribution_id: 7, name: "name1">8374Gitlab::Ci::Status::WaitingForResource8375 #text8376 is expected to eq "waiting"8377 #label8378 is expected to eq "waiting for resource"8379 #icon8380 is expected to eq "status_pending"8381 #favicon8382 is expected to eq "favicon_status_pending"8383 #group8384 is expected to eq "waiting-for-resource"8385 #details_path8386 is expected to be nil8387Gitlab::Ci::Matching::BuildMatcher8388 .new8389 when attributes are missing8390 is expected to raise KeyError8391 with attributes8392 is expected to eq true8393 is expected to eq ["tag1", "tag2"]8394 is expected to eq [1, 2, 3]8395 is expected to eq :my_project8396 #protected?8397 when protected is set to true8398 is expected to be truthy8399 when protected is set to false8400 is expected to be falsey8401 #has_tags?8402 when tags are present8403 is expected to be truthy8404 when tags are empty8405 is expected to be falsey8406Gitlab::Metrics::Samplers::ThreadsSampler8407 behaves like metrics sampler8408 when sampling interval is passed explicitly8409 is expected to eq 428410 when sampling interval is passed through the environment8411 is expected to eq 428412 when no sampling interval is passed anywhere8413 uses the hardcoded default8414 #start8415 calls the sample method on the sampler thread8416 with warmup set to true8417 calls the sample method first on the caller thread8418 #safe_sample8419 calls #sample once8420 when sampling fails with error8421 recovers from errors8422 with logger8423 logs errors8424 #sample8425 sets the gauge for the concurrency total8426 thread counts8427 reports if any of the threads per group uses the db8428 thread names8429 thread_names: [nil], expected_names: ["unnamed"]8430 is expected to receive set({:thread_name=>"unnamed", :uses_db_connection=>"no"}, an_instance_of(Integer)) 1 time8431 thread_names: ["puma threadpool 1", "puma threadpool 001", "puma threadpool 002"], expected_names: ["puma threadpool"]8432 is expected to receive set({:thread_name=>"puma threadpool", :uses_db_connection=>"no"}, an_instance_of(Integer)) 1 time8433 thread_names: ["sidekiq_worker_thread"], expected_names: ["sidekiq_worker_thread"]8434 is expected to receive set({:thread_name=>"sidekiq_worker_thread", :uses_db_connection=>"no"}, an_instance_of(Integer)) 1 time8435 thread_names: ["some_sampler", "some_exporter"], expected_names: ["some_sampler", "some_exporter"]8436 is expected to receive set({:thread_name=>"some_exporter", :uses_db_connection=>"no"}, an_instance_of(Integer)) 1 time8437 thread_names: ["unknown", "thing"], expected_names: ["unrecognized"]8438 is expected to receive set({:thread_name=>"unrecognized", :uses_db_connection=>"no"}, an_instance_of(Integer)) 1 time8439Tooling::Mappings::ViewToSystemSpecsMappings8440 # order random8441 #execute8442 when the changed files are not view files8443 behaves like writes nothing to the output file8444 writes nothing to the output file8445 when the changed files are view files8446 when the view files do not exist on disk8447 behaves like writes nothing to the output file8448 writes nothing to the output file8449 when the view files exist on disk8450 when no feature match the view8451 behaves like writes nothing to the output file8452 writes nothing to the output file8453 when there is a feature spec that exactly matches the view8454 writes that feature spec to the output file8455 when there is a feature spec that matches the parent folder of the view8456 writes all of the feature specs for the parent folder to the output file8457Mutations::Todos::Restore8458 is expected to require graphql authorizations :update_todo8459 #resolve8460 restores a single todo8461 handles a todo which is already pending as expected8462 ignores requests for todos which do not belong to the current user8463RuboCop::Cop::AvoidBreakFromStrongMemoize8464 # order random8465 flags violation for break inside strong_memoize8466 doesn't flag violation for break inside blocks8467 flags violation for break inside strong_memoize nested blocks8468 doesn't check when block is empty8469 doesn't flag violation for next inside strong_memoize8470 doesn't call add_offense twice for nested blocks8471Blobs::NotebookPresenter8472 highlight receives markdown8473Gitlab::Ci::Status::Stage::Common8474 does not have action8475 links to the pipeline details page8476 when user has permission to read pipeline8477 has details8478 when user does not have permission to read pipeline8479 does not have details8480Autocomplete::ActsAsTaggableOn::TagsFinder8481 #execute8482 with empty params8483 returns all tags8484 filter by search8485 with an empty search term8486 returns all tags8487 with a search containing 2 characters8488 returns the tag that strictly matches the search term8489 with a search containing 3 characters8490 returns the tag that partially matches the search term8491 limit8492 limits the result set by the limit constant8493Gitlab::Database::QueryAnalyzers::Ci::PartitioningRoutingAnalyzer8494 # order random8495 when ci_partitioning_analyze_queries is enabled8496 when analyzing targeted tables8497 when querying a non routing table8498 tracks exception8499 raises RoutingTableNotUsedError8500 when updating a record8501 raises RoutingTableNotUsedError8502 when inserting a record8503 raises RoutingTableNotUsedError8504 when analyzing non targeted table8505 does not raise error8506 when ci_partitioning_analyze_queries is disabled8507 does not analyze the query8508Projects::DeployTokens::DestroyService8509 behaves like a deploy token deletion service8510 #execute8511 destroys a token record and it's associated DeployToken8512 with invalid token id8513 raises an error8514Gitlab::GraphqlLogger8515 builds a logger once8516 logging a GraphQL query8517 logs a query from JSON8518Ci::JobSerializer8519 #represent8520 when a single object is being serialized8521 serializers the pipeline object8522 when multiple objects are being serialized8523 serializers the array of pipelines8524LooseForeignKeys::CleanupWorker8525-- create_table(:_test_loose_fk_parent_table_1)8526 -> 0.0026s8527-- create_table(:_test_loose_fk_parent_table_2)8528 -> 0.0022s8529-- create_table(:_test_loose_fk_child_table_1_1)8530 -> 0.0022s8531-- create_table(:_test_loose_fk_child_table_1_2)8532 -> 0.0022s8533-- create_table(:_test_loose_fk_child_table_2_1)8534 -> 0.0021s8535-- execute("CREATE TRIGGER _test_loose_fk_parent_table_1_loose_fk_trigger AFTER DELETE ON _test_loose_fk_parent_table_1 REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();")8536 -> 0.0010s8537-- execute("CREATE TRIGGER _test_loose_fk_parent_table_2_loose_fk_trigger AFTER DELETE ON _test_loose_fk_parent_table_2 REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();")8538 -> 0.0009s8539 cleans up all rows8540 multi-database support8541 current_minute: 2, configured_base_models: {:main=>"ActiveRecord::Base", :ci=>"Ci::ApplicationRecord"}, expected_connection_model: "ActiveRecord::Base"8542 uses the correct connection8543 current_minute: 3, configured_base_models: {:main=>"ActiveRecord::Base", :ci=>"Ci::ApplicationRecord"}, expected_connection_model: "Ci::ApplicationRecord"8544 uses the correct connection8545 current_minute: 2, configured_base_models: {:main=>"ActiveRecord::Base"}, expected_connection_model: "ActiveRecord::Base"8546 uses the correct connection8547 current_minute: 3, configured_base_models: {:main=>"ActiveRecord::Base"}, expected_connection_model: "ActiveRecord::Base"8548 uses the correct connection8549-- drop_table(:_test_loose_fk_parent_table_1)8550 -> 0.0020s8551-- drop_table(:_test_loose_fk_parent_table_2)8552 -> 0.0017s8553-- drop_table(:_test_loose_fk_child_table_1_1)8554 -> 0.0016s8555-- drop_table(:_test_loose_fk_child_table_1_2)8556 -> 0.0016s8557-- drop_table(:_test_loose_fk_child_table_2_1)8558 -> 0.0017s8559Gitlab::Database::LoadBalancing::Configuration8560 .for_model8561 when load balancing is not configured8562 uses the default settings8563 when load balancing is configured8564 uses the custom configuration settings8565 when the load balancing configuration uses strings as the keys8566 uses the custom configuration settings8567 #load_balancing_enabled?8568 returns false when running inside a Rake task8569 returns true when hosts are configured8570 returns true when a service discovery record is configured8571 returns false when no hosts are configured and service discovery is disabled8572 #service_discovery_enabled?8573 returns false when running inside a Rake task8574 returns true when a record is configured8575 returns false when no record is configured8576 #pool_size8577 when a custom pool size is used8578 always reads the value from the model configuration8579 when the pool size is nil8580 returns the default pool size8581 #db_config_name8582 returns connection name as symbol8583 #db_config8584 returns exactly db_config8585API::Validations::Validators::GitSha8586 valid sha8587 does not raise a validation error8588 empty params8589 raises a validation error8590 invalid sha8591 raises a validation error8592Projects::TerraformHelper8593 #js_terraform_list_data8594 includes image path8595 includes project path8596 includes access token path8597 includes username8598 includes terraform state api url8599 indicates the user is a terraform admin8600 when current_user is not a terraform admin8601 indicates the user is not an admin8602 when current_user is missing8603 indicates the user is not an admin8604Gitlab::Ci::Reports::TestReportsComparer8605 #suite_comparers8606 when head and base reports include two test suites8607 returns test suite comparers with specified values8608 #total_status8609 when all tests cases are success in head suites8610 returns the total status8611 when there is a failed test case in head suites8612 returns the total status in head suite8613 when there is an error test case in head suites8614 returns the total status in head suite8615 #total_count8616 returns the total test counts in head suites8617 #resolved_count8618 when there is a resolved failure test case in head suites8619 returns the correct count8620 when there is a resolved error test case in head suites8621 returns the correct count8622 when there are no resolved test cases in head suites8623 returns the correct count8624 #failed_count8625 when there is a failed test case in head suites8626 returns the correct count8627 when there are no failed test cases in head suites8628 returns the correct count8629 #error_count8630 when there is an error test case in head suites8631 returns the correct count8632 when there are no error test cases in head suites8633 returns the correct count8634Gitlab::Verify::LfsObjects8635 behaves like Gitlab::Verify::BatchVerifier subclass8636 batching8637 iterates through objects in batches8638 allows the starting ID to be specified8639 allows the finishing ID to be specified8640 #run_batches8641 passes LFS objects with the correct file8642 fails LFS objects with a missing file8643 fails LFS objects with a mismatched oid8644 with remote files8645 passes LFS objects in object storage that exist8646 fails LFS objects in object storage that do not exist8647Clusters::Project8648 is expected to belong to cluster required: false8649 is expected to belong to project required: false8650 is expected to have many kubernetes_namespaces8651Database::MultipleDatabasesHelpers8652 # order random8653 preloads database version for Ci::ApplicationRecord8654 preloads database version for ApplicationRecord8655 .with_reestablished_active_record_base8656 when doing establish_connection8657 on ActiveRecord::Base8658 raises exception8659 when using with_reestablished_active_record_base8660 does not raise exception8661 on Ci::ApplicationRecord8662 raises exception (PENDING: Skipping because none of the extra databases [:ci] are setup)8663 when using with_reestablished_active_record_base8664 does not raise exception (PENDING: Skipping because none of the extra databases [:ci] are setup)8665 when trying to access connection8666 when reconnect is true8667 does not raise exception8668 when reconnect is false8669 does raise exception8670 .with_added_ci_connection8671 when only a single database is setup8672 connects Ci::ApplicationRecord to the main database for the duration of the block8673 when multiple databases are setup8674 does not mock the original Ci::ApplicationRecord connection (PENDING: Skipping because none of the extra databases [:ci] are setup)8675Gitlab::RenderTimeout8676 utilizes timeout for web8677 utilizes longer timeout for sidekiq8678Create security training providers in development8679 # order random8680 behaves like security training providers importer8681OK8682 upserts security training providers8683Custom URLs milestone8684 # order random8685 milestone8686 with project8687 creates directs8688 with group8689 creates directs8690ProjectClusterablePresenter8691 #can_create_cluster?8692 when user can create8693 is expected to be truthy8694 when user cannot create8695 is expected to be falsey8696 #index_path8697 is expected to eq "/namespace801/project-840/-/clusters"8698 #connect_path8699 is expected to eq "/namespace802/project-841/-/clusters/connect"8700 #new_cluster_docs_path8701 is expected to eq "/namespace803/project-842/-/clusters/new_cluster_docs"8702 #create_user_clusters_path8703 is expected to eq "/namespace804/project-843/-/clusters/create_user"8704 #cluster_status_cluster_path8705 is expected to eq "/namespace805/project-844/-/clusters/1251/cluster_status"8706 #clear_cluster_cache_path8707 is expected to eq "/namespace806/project-845/-/clusters/1262/clear_cache"8708 #cluster_path8709 is expected to eq "/namespace807/project-846/-/clusters/1273"8710 #metrics_dashboard_path8711 is expected to eq "/namespace808/project-847/-/clusters/1284/metrics_dashboard"8712 #learn_more_link8713 is expected to include "user/project/clusters/index"8714Gitlab::GithubImport::Importer::LfsObjectsImporter8715 #parallel?8716 returns true when running in parallel mode8717 returns false when running in sequential mode8718 #execute8719 when running in parallel mode8720 imports lfs objects in parallel8721 when running in sequential mode8722 imports lfs objects in sequence8723 when LFS list download fails8724 rescues and logs the known exceptions8725 raises and logs the unknown exceptions8726 #sequential_import8727 imports each lfs object in sequence8728 #parallel_import8729 imports each lfs object in parallel8730 #collection_options8731 returns an empty Hash8732RuboCop::Cop::RSpec::HTTPartyBasicAuth8733 # order random8734 when passing `basic_auth: { user: ... }`8735 registers an offense and corrects8736 when passing `basic_auth: { username: ... }`8737 does not register an offense8738Gitlab::Memory::Watchdog::Configuration8739 # order random8740 #initialize8741 initialize monitors8742 #event_reporter8743 when event reporter is not set8744 defaults to EventReporter8745 #monitors8746 when monitors are configured to be used8747 when two different monitor class are configured8748 when monitors are not configured8749 monitors are empty8750 when monitors are configured inline8751 calls each monitor and returns correct results8752 monitors are not empty8753 when monitors are configured in a block8754 calls each monitor and returns correct results8755 monitors are not empty8756 when monitors are configured with monitor name8757 calls each monitor and returns correct results8758 monitors are not empty8759 #sleep_time_seconds8760 when sleep_time_seconds is not set8761 defaults to SLEEP_TIME_SECONDS8762 #handler8763 when handler is not set8764 defaults to NullHandler8765profiles/preferences/show8766 navigation theme8767 has an id for anchoring8768 has correct stylesheet tags8769 syntax highlighting theme8770 has an id for anchoring8771 behavior8772 has option for Render whitespace characters in the Web IDE8773 has an id for anchoring8774 has helpful homepage setup guidance8775 localization8776 has an id for anchoring8777Gitlab::Pagination::CursorBasedKeyset8778 .available_for_type?8779 returns true for Group8780 returns true for Ci::Build8781 return false for other types of relations8782 .enforced_for_type?8783 when relation is Group8784 is expected to equal true8785 when relation is AuditEvent8786 is expected to equal false8787 when relation is Ci::Build8788 is expected to equal false8789 .available?8790 with order-by name asc8791 returns true for Group8792 return false for other types of relations8793 with order-by id desc8794 returns true for Ci::Build8795 returns true for AuditEvent8796 with other order-by columns8797 returns false for Group8798 return false for other types of relations8799Ide::BaseConfigService8800 #execute8801 when insufficient permission8802 returns an error8803 for developer8804 when file is missing8805 returns an error8806 when file is present8807 content is not valid8808 returns an error8809AlertManagement::MetricImages::UploadService8810 #execute8811 user does not have permissions8812 behaves like no metric saved, an error given8813 returns an error and does not upload8814 user has permissions8815 behaves like uploads the metric8816 uploads the metric and returns a success8817 no url given8818 behaves like uploads the metric8819 uploads the metric and returns a success8820 record invalid8821 behaves like no metric saved, an error given8822 returns an error and does not upload8823 user is guest8824 behaves like no metric saved, an error given8825 returns an error and does not upload8826Gitlab::Ci::Build::Prerequisite::Factory8827 .for_build8828 prerequisite is unmet8829 is expected to eq [#<InstanceDouble(Gitlab::Ci::Build::Prerequisite::KubernetesNamespace) (anonymous)>]8830 prerequisite is met8831 is expected to be empty8832Projects::ContainerRepository::ThirdParty::DeleteTagsService8833 #execute8834 with tags to delete8835 deletes the tags by name8836 succeeds when tag delete returns 4048837 with failures8838 when the dummy manifest generation fails8839 is expected to eq {:message=>"could not generate manifest", :status=>:error}8840 when updating tags fails8841 all tag updates fail8842 is expected to eq {:message=>"could not delete tags: A, Ba", :status=>:error}8843 when a large list of tag updates fails8844 truncates the log message8845 a single tag update fails8846 is expected to eq {:deleted=>["A"], :status=>:success}8847 with empty tags8848 does not remove anything8849Pajamas::RadioComponent8850 with default options8851 renders unchecked radio8852 does not render help text8853 with custom options8854 renders help text8855 renders checked radio8856 adds CSS class to label8857 with `label` slot8858 renders unchecked radio8859 with `help_text` slot8860 renders unchecked radio8861 renders help text8862 with `label` and `help_text` slots8863 renders unchecked radio8864 renders help text8865Plan8866 #default?8867 when 'default'8868 is expected to be truthy8869 when 'free'8870 is expected to be truthy8871 #default8872 when default plan exists8873 returns default plan8874 when default plan does not exist8875 creates default plan8876 creates plan with correct attributes8877 when updating plan limits8878 is expected to be persisted8879 is expected not to be persisted8880 successfully updates the limits8881Gitlab::SQL::Union8882 behaves like SQL set operator8883 .operator_keyword8884 is expected to eq "UNION"8885 #to_sql8886 returns a String joining relations together using a UNION8887 skips Model.none segments8888 uses UNION ALL when removing duplicates is disabled8889 returns `NULL` if all relations are empty8890 when uneven select values are used8891 raises error8892 remove_order parameter8893 when remove_order: true8894 removes the ORDER BY from the query8895 when remove_order: false8896 does not remove the ORDER BY from the query8897Mutations::Achievements::Create8898 # order random8899 is expected to require graphql authorizations :admin_achievement8900 #resolve8901 when the user does not have permission8902 raises an error8903 when the user has permission8904 creates contact with correct values8905 when the params are invalid8906 returns the validation error8907Gitlab::Ci::Reports::CodequalityReports8908 is expected to eq {}8909 #add_degradation8910 when there is a degradation8911 adds degradation to codequality report8912 when a required property is missing in the degradation8913 sets location as an error8914 #set_error_message8915 when there is an error8916 sets errors8917 #degradations_count8918 when there are many degradations8919 returns the number of degradations8920 #all_degradations8921 when there are many degradations8922 returns all degradations8923 #sort_degradations!8924 sorts degradations based on severity8925 with non-existence and uppercase severities8926 sorts unknown last8927 #code_quality_report_summary8928 when there is no degradation8929 return nil8930 when there are degradations8931 returns the summary of the code quality report8932Support::AbilityCheck8933 # order random8934 checking ability8935 with valid direct ability8936 policy ability is found8937 with empty TODO yaml8938 policy ability is found8939 with non-Hash TODO yaml8940 policy ability is found8941 with unreachable ability8942 policy ability is not found and emits a warning8943 when ignored in TODO YAML8944 policy ability is not found without warning8945 with unknown ability8946 policy ability is not found and emits a warning8947 with delegated ability8948 policy ability is found8949Gitlab::Prometheus::Queries::DeploymentQuery8950 sends appropriate queries to prometheus8951RuboCop::Cop::Graphql::JSONType8952 # order random8953 does not add an offense for uses outside of field or argument8954 fields8955 adds an offense when GraphQL::Types::JSON is used8956 adds an offense when GraphQL::Types::JSON is used with other keywords8957 does not add an offense for other types8958 arguments8959 adds an offense when GraphQL::Types::JSON is used8960 adds an offense when GraphQL::Types::JSON is used with other keywords8961 does not add an offense for other types8962PagesDomainSslRenewalWorker8963 #perform8964 delegates to ObtainLetsEncryptCertificateService8965 when domain was deleted8966 does nothing8967 when domain is disabled8968 does nothing8969Gitlab::Ci::Input::Arguments::Default8970 # order random8971 returns an error if the default argument has not been recognized8972 returns an error if the argument has not been fabricated correctly8973 returns a default value if user-provider one is unknown8974 returns an empty value if user-provider input is empty8975 returns a user-provided value if it is present8976 .matches?8977 matches specs with default configuration8978 does not match specs different configuration keyword8979BitbucketServer::Representation::Repo8980 #project_key8981 is expected to eq "TEST"8982 #project_name8983 is expected to eq "test"8984 #slug8985 is expected to eq "rouge"8986 #browse_url8987 is expected to eq "http://localhost:7990/projects/TEST/repos/rouge/browse"8988 #clone_url8989 is expected to eq "http://root@localhost:7990/scm/test/rouge.git"8990 #description8991 is expected to eq "Rogue Repo"8992 #full_name8993 is expected to eq "test/rouge"8994Gitlab::UsageDataCounters::SnippetCounter8995 behaves like a redis usage counter8996 .count(create)8997 increments the Snippet create counter by 18998 .read(create)8999 returns the total number of create events9000 behaves like a redis usage counter9001 .count(update)9002 increments the Snippet update counter by 19003 .read(update)9004 returns the total number of update events9005 behaves like a redis usage counter with totals9006 totals9007 can report all totals9008 unknown events9009 cannot increment9010 cannot read9011Doorkeeper::OpenidConnect::DiscoveryController routing9012 to #provider9013 to #webfinger9014 to #keys9015Doorkeeper::OpenidConnect::UserinfoController routing9016 to #show9017 to #show9018devise/shared/_signup_box9019 when terms are enforced9020 when on .com9021 shows expected GitLab text9022 when not on .com9023 shows expected text without GitLab9024 when terms are not enforced9025 shows expected text with placeholders9026 using the borderless option9027 renders with a border by default9028 renders without a border when borderless is truthy9029Gitlab::Database::Partitioning::ReplaceTable#perform9030 replaces the current table, archiving the old9031 transfers the primary key sequence to the replacement table9032 renames the primary key constraints to match the new table names9033 when the table has partitions9034 renames the partitions to match the new table name9035 renames the primary key constraints to match the new partition names9036Types::MemberInterface9037 exposes the expected fields9038 .resolve_type9039 for project member9040 is expected to equal Types::ProjectMemberType9041 for group member9042 is expected to equal Types::GroupMemberType9043 for an unkown type9044 raises an error9045 #merge_request_interaction9046 returns the correct type9047 has the correct arguments9048Gitlab::LetsEncrypt::Challenge9049 #status9050 delegates to Acme::Client::Resources::Challenge9051 #token9052 delegates to Acme::Client::Resources::Challenge9053 #file_content9054 delegates to Acme::Client::Resources::Challenge9055 #request_validation9056 delegates to Acme::Client::Resources::Challenge9057 #error9058 delegates to Acme::Client::Resources::Challenge9059Users::EmailVerification::GenerateTokenService9060 #execute9061 with a valid attribute9062 attr: :unlock_token9063 returns a token and it's digest9064 attr: :confirmation_token9065 returns a token and it's digest9066 with an invalid attribute9067 raises an error9068 when similar tokens are generated9069 generates a unique digest9070Gitlab::Graphql::Authorize::ObjectAuthorization9071 #ok?9072 when there are no abilities9073 is expected to be ok #<Double (anonymous)> and #<Double (anonymous)>9074 when no ability should be allowed9075 is expected not to be ok #<struct Foo x=0, y=0> and #<Double :User>9076 when go_fast should be allowed9077 is expected not to be ok #<struct Foo x=100, y=0> and #<Double :User>9078 when go_fast and go_slow should be allowed9079 is expected to be ok #<struct Foo x=100, y=100> and #<Double :User>9080 when the object delegates to another subject9081 is expected to be ok #<Double :Proxy> and #<Double :User>9082 is expected not to be ok #<Double :Proxy> and #<Double :User>9083Projects::WikiRepository9084 # order random9085 validations9086 is expected to validate that :project cannot be empty/falsy9087 is expected to validate that :project is case-sensitively unique9088 associations9089 is expected to belong to project required: false inverse_of => wiki_repository9090Gitlab::Chat::Responder::Base9091 #pipeline9092 returns the pipeline9093 #project9094 returns the project9095 #success9096 raises NotImplementedError9097 #failure9098 raises NotImplementedError9099 #send_response9100 raises NotImplementedError9101 #scheduled_output9102 raises NotImplementedError9103Gitlab::Metrics::Dashboard::Stages::PanelIdsInserter9104 #transform!9105 when dashboard panels are present9106 assigns unique ids to each panel using PerformanceMonitoring::PrometheusPanel9107 when dashboard panels has duplicated ids9108 no panel has assigned id9109 when there are no panels in the dashboard9110 raises a processing error9111 when there are no panel_groups in the dashboard9112 raises a processing error9113 when dashboard panels has unknown schema attributes9114 no panel has assigned id9115 logs the failure9116Gitlab::ManifestImport::Metadata9117 #save9118 stores data in Redis with an expiry of EXPIRY_TIME9119 #repositories9120 allows repositories to round-trip with symbol keys9121 uses the fallback when there is nothing in Redis9122 #group_id9123 returns the group ID as an integer9124 uses the fallback when there is nothing in Redis9125Gitlab::BitbucketServerImport::Importers::NotesImporter9126 # order random9127 #execute9128 schedules a job to import notes for each corresponding merge request9129 when pull request was already processed9130 does not schedule job for processed merge requests9131Gitlab::UsageDataCounters::SourceCodeCounter9132 behaves like a redis usage counter9133 .count(pushes)9134 increments the Source Code pushes counter by 19135 .read(pushes)9136 returns the total number of pushes events9137 behaves like a redis usage counter with totals9138 totals9139 can report all totals9140 unknown events9141 cannot increment9142 cannot read9143Types::WorkItems::Widgets::AssigneesInputType9144 is expected to eq "WorkItemWidgetAssigneesInput"9145 is expected to contain exactly "assigneeIds"9146Gitlab::SnippetSearchResults9147 #snippet_titles_count9148 returns the amount of matched snippet titles9149 #formatted_count9150 returns the expected formatted count9151 #highlight_map9152 returns the expected highlight map9153 #objects9154 uses page and per_page to paginate results9155RssHelper9156 #rss_url_options9157 when signed in9158 includes the current_user's feed_token9159 when signed out9160 does not have a feed_token9161 when feed_token disabled9162 does not have a feed_token9163RuboCop::Cop::Migration::RemoveColumn9164 # order random9165 when in a post-deployment migration9166 registers no offense9167 when in a regular migration9168 registers an offense when remove_column is used in the change method9169 registers an offense when remove_column is used in the up method9170 registers no offense when remove_column is used in the down method9171 when outside of a migration9172 registers no offense9173WorkItems::ParentLinks::BaseService9174 # order random9175 #execute9176 when user has sufficient permissions9177 raises NotImplementedError9178Gitlab::Utils::InlineHash9179 # order random9180 .merge_keys9181 transforms a nested hash into a one-level hash9182 retains key insertion order9183 with a custom connector9184 uses the connector to merge keys9185 with a starter prefix9186 prefixes all the keys9187Types::Metrics::DashboardType9188 is expected to eq "MetricsDashboard"9189 has the expected fields9190 annotations field9191 is expected to have graphql type #<Class:0x00007f8ae8d66e40>9192 is expected to have graphql resolver Resolvers::Metrics::Dashboards::AnnotationResolver9193Types::ProjectMemberType9194 is expected to expose permissions using Types::PermissionTypes::Project9195 is expected to eq "ProjectMember"9196 is expected to require graphql authorizations :read_project9197 has the expected fields9198BulkImports::Projects::Pipelines::ProtectedBranchesPipeline9199 #run9200 imports protected branch information9201Gitlab::Config::Entry::Unspecified9202 #valid?9203 delegates method to entry9204 #errors9205 delegates method to entry9206 #value9207 delegates method to entry9208 #specified?9209 is always false9210Gitlab::Kubernetes::ServiceAccountToken9211 is expected to eq "token-name"9212 is expected to eq "a_service_account"9213 is expected to eq "a_namespace"9214 #generate9215 builds a Kubeclient Resource9216Types::CommitSignatures::SshSignatureType9217 # order random9218 is expected to include Types::CommitSignatureInterface9219 contains attributes related to SSH signatures9220 is expected to require graphql authorizations :download_code9221 is expected to eq "SshSignature"9222Types::RangeInputType9223 follows expected subtyping relationships for instances9224 follows expected subtyping relationships for classes9225 parameterized on Integer9226 accepts start and end9227 rejects inverted ranges9228Types::EventType9229 is expected to eq "Event"9230 is expected to require graphql authorizations :read_event9231 is expected to have graphql fields :id, :author, :action, :created_at, and :updated_at9232Gitlab::Ci::Config::External::Mapper::VariablesExpander9233 # order random9234 #process9235 when locations are strings9236 expands variables9237 when locations are hashes9238 expands variables9239 when locations are arrays9240 expands variables9241RuboCop::Cop::Gitlab::Json9242 # order random9243 when ::JSON is called9244 registers an offense and autocorrects9245 when ActiveSupport::JSON is called9246 registers an offense and autocorrects9247 when ::JSON is called in EE9248 registers an offense and autocorrects9249Gitlab::Usage::Metrics::Instrumentations::CountCiRunnersProjectTypeActiveOnlineMetric9250 # order random9251 behaves like a correct instrumented metric value9252 has correct value9253groups/show9254 # order random9255 group README9256 with readme project9257 renders #js-group-readme9258 without readme project9259 does not render #js-group-readme9260Gitlab::QuickActions::SubstitutionDefinition9261 #perform_substitution!9262 returns nil if content is nil9263 when content contains command name9264 performs the substitution by default9265 when content contains command name in word9266 does not perform the substitution9267API::Entities::DesignManagement::Design9268 has the correct attributes9269dashboard/projects/_nav.html.haml9270 highlights All tab by default9271 highlights Personal tab personal param is present9272RuboCop::Cop::QA::AmbiguousPageObjectName9273 # order random9274 outside of a QA file9275 does not register an offense9276 in a QA file9277 registers an offense for pages named `page`9278 doesnt offend if the page object is named otherwise9279Gitlab::Ci::Config::External::Mapper::Base9280 # order random9281 #process9282 when the method is not implemented9283 raises NotImplementedError9284 when the method is implemented9285 calls the method9286Transactions9287 is not in a transaction9288 is in a transaction9289VulnerabilityFindingHelpers9290 #requires_manual_resolution?9291 returns false if the finding does not require manual resolution9292 returns true when the finding requires manual resolution9293API::Entities::SSHKey9294 #as_json9295 includes basic fields9296Types::Ci::RunnerWebUrlEdge9297 is expected to eq "RunnerWebUrlEdge"9298 contains URL attributes9299Types::GroupMemberRelationEnum9300 is expected to eq "GroupMemberRelation"9301 exposes all the existing group member relation type values9302Types::Ci::TestSuiteSummaryType9303 is expected to eq "TestSuiteSummary"9304 contains attributes related to a pipeline test report summary9305Gitlab::Middleware::WebhookRecursionDetection9306 #call9307 when the recursion detection header is present9308 sets the request UUID from the header9309 when recursion headers are not present9310 works without errors9311Types::DesignManagement::DesignCollectionType9312 is expected to require graphql authorizations :read_design9313 has the expected fields9314BlocksUnsafeSerialization9315 behaves like blocks unsafe serialization9316 blocks as_json9317 blocks to_json9318Issues::CsvImport9319 associations9320 is expected to belong to project required: true9321 is expected to belong to user required: true9322Types::CiConfiguration::Sast::OptionsEntityType9323 is expected to eq "SastCiConfigurationOptionsEntity"9324 is expected to have graphql fields :label and :value9325RunnersTokenPrefixable9326 runners token prefix9327 has the correct value9328Gitlab::Git::GitmodulesParser9329 parses a .gitmodules file correctly9330Gitlab::LogTimestampFormatter9331 logs the timestamp in UTC and ISO8601.3 format9332Gitlab::Ci::Status::Build::WaitingForResource9333 is expected to be < Gitlab::Ci::Status::Processable::WaitingForResource9334Types::Packages::Pypi::MetadatumType9335 includes pypi metadatum fields9336Gitlab::Patch::DrawRoute9337 evaluates CE only route9338Types::Packages::PackageFileType9339 includes package file fields9340Gitlab::Ci::Config::Normalizer::Factory9341 #create9342 when no strategy applies9343 is expected to be empty9344DeployKeyPresenter9345 # order random9346 #humanized_error_message9347 when public key is unsupported9348 returns the custom error message9349Types::WorkItems::Widgets::AssigneesType9350 exposes the expected fields9351processing of SAMLResponse in dependencies9352 can extract AuthnContextClassRef from SAMLResponse param9353Knapsack report was generated. Preview:9354{9355 "spec/services/ci/pipeline_processing/atomic_processing_service_spec.rb": 202.87830778799997,9356 "spec/models/ci/build_spec.rb": 97.65104529300004,9357 "spec/lib/gitlab/diff/file_spec.rb": 89.35090036399993,9358 "spec/tasks/gitlab/storage_rake_spec.rb": 94.76343636900003,9359 "spec/services/ci/register_job_service_spec.rb": 65.83905608300006,9360 "spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb": 28.18370920299992,9361 "spec/lib/gitlab/project_authorizations_spec.rb": 44.383663912999964,9362 "spec/services/projects/prometheus/alerts/notify_service_spec.rb": 26.426843537999957,9363 "spec/services/groups/update_service_spec.rb": 34.704802936999954,9364 "spec/services/ci/retry_pipeline_service_spec.rb": 41.264499230999945,9365 "spec/models/snippet_spec.rb": 26.57875273000002,9366 "spec/services/git/process_ref_changes_service_spec.rb": 30.805019671000082,9367 "spec/models/project_feature_spec.rb": 14.252942326000039,9368 "spec/services/merge_requests/rebase_service_spec.rb": 30.6857180049999,9369 "spec/models/key_spec.rb": 7.589671053999837,9370 "spec/models/merge_request_diff_commit_spec.rb": 27.24486660799994,9371 "spec/services/snippets/destroy_service_spec.rb": 18.301423800000066,9372 "spec/lib/gitlab/import_export/project/sample/relation_tree_restorer_spec.rb": 27.218925522999825,9373 "spec/lib/gitlab/reference_extractor_spec.rb": 20.631023024000115,9374 "spec/finders/template_finder_spec.rb": 11.442530428000055,9375 "spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb": 6.647975410999834,9376 "spec/workers/packages/debian/process_changes_worker_spec.rb": 18.226134205000108,9377 "spec/services/resource_access_tokens/revoke_service_spec.rb": 18.895937152999977,9378 "spec/lib/gitlab/repository_cache_adapter_spec.rb": 15.24532721599985,9379 "spec/lib/gitlab/counters/buffered_counter_spec.rb": 4.730023098999936,9380 "spec/serializers/ci/pipeline_entity_spec.rb": 17.74584893700012,9381 "spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb": 7.822325830999944,9382 "spec/finders/environments/environments_by_deployments_finder_spec.rb": 14.56021127400004,9383 "spec/lib/gitlab/ci/trace/stream_spec.rb": 5.686236674000156,9384 "spec/services/search/group_service_spec.rb": 14.406659353999885,9385 "spec/bin/audit_event_type_spec.rb": 2.143007986999919,9386 "spec/models/list_spec.rb": 14.044906751000099,9387 "spec/lib/gitlab/ci/ansi2json/style_spec.rb": 2.940848431999939,9388 "spec/services/ci/pipeline_artifacts/create_code_quality_mr_diff_report_service_spec.rb": 10.143599957999868,9389 "spec/graphql/resolvers/group_labels_resolver_spec.rb": 5.704037212999992,9390 "spec/helpers/auth_helper_spec.rb": 3.83644748100005,9391 "spec/lib/gitlab/usage/metrics/instrumentations/jira_active_integrations_metric_spec.rb": 7.920698866000066,9392 "spec/lib/container_registry/blob_spec.rb": 7.1724759889998495,9393 "spec/services/groups/autocomplete_service_spec.rb": 9.349164655999857,9394 "spec/serializers/analytics_build_entity_spec.rb": 9.027735722999978,9395 "spec/lib/gitlab/ci/lint_spec.rb": 7.505498232000036,9396 "spec/models/analytics/cycle_analytics/stage_spec.rb": 6.033875028000011,9397 "spec/lib/gitlab/error_tracking_spec.rb": 1.9480888139999024,9398 "spec/services/projects/container_repository/third_party/cleanup_tags_service_spec.rb": 4.1048291829999926,9399 "spec/lib/gitlab/ci/pipeline/duration_spec.rb": 4.719093062999946,9400 "spec/lib/gitlab/ci/config/external/mapper_spec.rb": 4.523967356999947,9401 "spec/views/projects/commit/show.html.haml_spec.rb": 6.811722637000003,9402 "spec/services/work_items/widgets/hierarchy_service/update_service_spec.rb": 4.856788974999972,9403 "spec/lib/gitlab/redis/cache_spec.rb": 1.7839386829998602,9404 "spec/models/integrations/base_chat_notification_spec.rb": 3.904688635999946,9405 "spec/lib/gitlab/database/schema_validation/track_inconsistency_spec.rb": 5.765486004999957,9406 "spec/lib/gitlab/suggestions/file_suggestion_spec.rb": 3.738989576999984,9407 "spec/lib/gitlab/git/keep_around_spec.rb": 4.363990386999831,9408 "spec/services/ci/delete_objects_service_spec.rb": 3.394602468999892,9409 "spec/lib/banzai/reference_redactor_spec.rb": 4.394278583999949,9410 "spec/views/layouts/fullscreen.html.haml_spec.rb": 5.368726483000046,9411 "spec/lib/gitlab/metrics/dashboard/url_spec.rb": 1.7342998589999752,9412 "spec/models/concerns/atomic_internal_id_spec.rb": 2.059620341000027,9413 "spec/workers/users/deactivate_dormant_users_worker_spec.rb": 3.3239607110001543,9414 "spec/models/ml/experiment_spec.rb": 2.232515997000064,9415 "spec/finders/packages/debian/distributions_finder_spec.rb": 2.271696335999877,9416 "spec/lib/gitlab/ci/pipeline/expression/lexeme/or_spec.rb": 1.16084583199995,9417 "spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb": 1.143529633000071,9418 "spec/lib/gitlab/database/query_analyzers/restrict_allowed_schemas_spec.rb": 1.8574977359999139,9419 "spec/lib/gitlab/ci/config/entry/port_spec.rb": 0.8970818090001558,9420 "spec/workers/environments/auto_stop_worker_spec.rb": 3.571548245000031,9421 "spec/workers/ci/ref_delete_unlock_artifacts_worker_spec.rb": 4.121677502000011,9422 "spec/services/ci/create_pipeline_service/environment_spec.rb": 2.5534245989999818,9423 "spec/helpers/safe_format_helper_spec.rb": 1.5655183730000317,9424 "spec/lib/gitlab/etag_caching/router/rails_spec.rb": 0.8682017099999939,9425 "spec/models/members/member_task_spec.rb": 2.9489916099998936,9426 "spec/lib/sidebars/panel_spec.rb": 0.8165167909999127,9427 "spec/models/protected_tag_spec.rb": 5.020160720999911,9428 "spec/lib/gitlab/ci/variables/builder/group_spec.rb": 1.0552879949998442,9429 "spec/services/metrics/dashboard/default_embed_service_spec.rb": 1.5568060929999774,9430 "spec/services/ci/update_instance_variables_service_spec.rb": 1.8153722170000037,9431 "spec/services/system_notes/alert_management_service_spec.rb": 2.273710985999969,9432 "spec/services/notes/destroy_service_spec.rb": 3.1843217739999545,9433 "spec/policies/clusters/agent_policy_spec.rb": 3.3580174399999123,9434 "spec/models/work_items/type_spec.rb": 2.9452642900000683,9435 "spec/services/work_items/widgets/current_user_todos_service/update_service_spec.rb": 3.1527993249999327,9436 "spec/finders/ci/commit_statuses_finder_spec.rb": 3.691452191999815,9437 "spec/components/pajamas/progress_component_spec.rb": 0.3833798509999724,9438 "spec/rubocop/cop/rspec/expect_gitlab_tracking_spec.rb": 0.8375272490000043,9439 "spec/views/layouts/simple_registration.html.haml_spec.rb": 1.7969239339997785,9440 "spec/lib/gitlab/process_management_spec.rb": 0.823830899000086,9441 "spec/lib/gitlab/sanitizers/svg_spec.rb": 0.6588752860000113,9442 "spec/services/work_items/callbacks/award_emoji_spec.rb": 1.277702121999937,9443 "spec/graphql/mutations/ci/job_token_scope/add_project_spec.rb": 3.45185321200006,9444 "spec/lib/gitlab/i18n/pluralization_spec.rb": 1.3446647000000667,9445 "spec/finders/environments/environments_finder_spec.rb": 2.0745960530000502,9446 "spec/workers/ci/cancel_redundant_pipelines_worker_spec.rb": 2.14664044999995,9447 "spec/uploaders/gitlab_uploader_spec.rb": 0.9809622339998896,9448 "spec/lib/gitlab/database/partitioning/monthly_strategy_spec.rb": 1.406073206999963,9449 "spec/serializers/container_repositories_serializer_spec.rb": 3.0414954860000307,9450 "spec/services/milestones/closed_issues_count_service_spec.rb": 3.4726003910000145,9451 "spec/lib/gitlab/ci/parsers/codequality/code_climate_spec.rb": 0.8248147289998542,9452 "spec/helpers/ci/status_helper_spec.rb": 0.9833798940001088,9453 "spec/lib/gitlab/ci/input/arguments/required_spec.rb": 0.46521705300006033,9454 "spec/finders/projects/prometheus/alerts_finder_spec.rb": 1.4118777480000517,9455 "spec/services/users/dismiss_group_callout_service_spec.rb": 0.6597924959999091,9456 "spec/lib/banzai/reference_parser/alert_parser_spec.rb": 3.093433555000047,9457 "spec/finders/boards/visits_finder_spec.rb": 2.2907486750000317,9458 "spec/helpers/sourcegraph_helper_spec.rb": 0.45478304300013406,9459 "spec/lib/gitlab/mail_room/authenticator_spec.rb": 0.6143512670000746,9460 "spec/graphql/mutations/todos/create_spec.rb": 3.3580578049998167,9461 "spec/lib/gitlab/query_limiting_spec.rb": 0.5177597709998736,9462 "spec/models/alert_management/alert_assignee_spec.rb": 1.8558612910001102,9463 "spec/rubocop/cop/api/base_spec.rb": 0.4831473519998326,9464 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_deployed_to_production_spec.rb": 2.2354871169998205,9465 "spec/finders/abuse_reports_finder_spec.rb": 1.7801623339998969,9466 "spec/lib/gitlab/hook_data/project_builder_spec.rb": 0.9861556530001963,9467 "spec/services/markdown_content_rewriter_service_spec.rb": 2.23861451699986,9468 "spec/components/pajamas/toggle_component_spec.rb": 0.9622575539999616,9469 "spec/lib/sidebars/projects/menus/project_information_menu_spec.rb": 1.456456985999921,9470 "spec/config/smime_signature_settings_spec.rb": 0.3695970159999433,9471 "spec/lib/gitlab/ci/pipeline/preloader_spec.rb": 1.184605835999946,9472 "spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb": 1.9362314880002032,9473 "spec/graphql/mutations/security/ci_configuration/configure_sast_spec.rb": 2.285569854999949,9474 "spec/lib/constraints/admin_constrainer_spec.rb": 1.0267933019999873,9475 "spec/tooling/danger/specs_spec.rb": 0.3531673669999691,9476 "spec/lib/api/entities/draft_note_spec.rb": 1.4042723180000394,9477 "spec/models/gpg_key_subkey_spec.rb": 0.47916523200001393,9478 "spec/services/ci/create_pipeline_service/artifacts_spec.rb": 1.7361830659999669,9479 "spec/models/concerns/ignorable_columns_spec.rb": 0.6275177070001519,9480 "spec/services/error_tracking/base_service_spec.rb": 0.5826180490000752,9481 "spec/services/topics/merge_service_spec.rb": 1.6571309290000045,9482 "spec/initializers/safe_session_store_patch_spec.rb": 0.5299996999999621,9483 "spec/finders/groups/projects_requiring_authorizations_refresh/on_transfer_finder_spec.rb": 2.933316899999909,9484 "spec/lib/sidebars/groups/menus/merge_requests_menu_spec.rb": 0.974760802999981,9485 "spec/config/application_spec.rb": 0.7061368729998776,9486 "spec/models/packages/debian/group_architecture_spec.rb": 0.922607194999955,9487 "spec/lib/gitlab/ci/status/waiting_for_resource_spec.rb": 0.459337221999931,9488 "spec/lib/gitlab/ci/matching/build_matcher_spec.rb": 1.079679638000016,9489 "spec/lib/gitlab/metrics/samplers/threads_sampler_spec.rb": 2.022577222999871,9490 "spec/tooling/lib/tooling/mappings/view_to_system_specs_mappings_spec.rb": 0.43574634299989157,9491 "spec/graphql/mutations/todos/restore_spec.rb": 2.30300575199999,9492 "spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb": 0.5476886090000335,9493 "spec/presenters/blobs/notebook_presenter_spec.rb": 0.9978252620001058,9494 "spec/lib/gitlab/ci/status/stage/common_spec.rb": 2.431233246999909,9495 "spec/finders/autocomplete/acts_as_taggable_on/tags_finder_spec.rb": 0.5134728909999922,9496 "spec/lib/gitlab/database/query_analyzers/ci/partitioning_routing_analyzer_spec.rb": 0.7038613529998656,9497 "spec/services/projects/deploy_tokens/destroy_service_spec.rb": 0.8406373469999835,9498 "spec/lib/gitlab/graphql_logger_spec.rb": 0.3301394570000866,9499 "spec/serializers/ci/job_serializer_spec.rb": 2.0898474499999793,9500 "spec/workers/loose_foreign_keys/cleanup_worker_spec.rb": 1.6959975949998807,9501 "spec/lib/gitlab/database/load_balancing/configuration_spec.rb": 0.7703269799999362,9502 "spec/lib/api/validations/validators/git_sha_spec.rb": 0.3776026859998183,9503 "spec/helpers/projects/terraform_helper_spec.rb": 1.0998658480000358,9504 "spec/lib/gitlab/ci/reports/test_reports_comparer_spec.rb": 0.7666917300000478,9505 "spec/lib/gitlab/verify/lfs_objects_spec.rb": 1.0246605810000347,9506 "spec/models/clusters/project_spec.rb": 0.351201865999883,9507 "spec/support_specs/database/multiple_databases_helpers_spec.rb": 0.7018608339999446,9508 "spec/lib/gitlab/render_timeout_spec.rb": 0.3608391970001321,9509 "spec/db/development/add_security_training_providers_spec.rb": 0.32332427699998334,9510 "spec/routing/directs/milestone_spec.rb": 0.36886270600007265,9511 "spec/presenters/project_clusterable_presenter_spec.rb": 0.9598202039999251,9512 "spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb": 0.9933785230000467,9513 "spec/rubocop/cop/rspec/httparty_basic_auth_spec.rb": 0.32027019700012715,9514 "spec/lib/gitlab/memory/watchdog/configuration_spec.rb": 0.6519016649999685,9515 "spec/views/profiles/preferences/show.html.haml_spec.rb": 0.8667820869998195,9516 "spec/lib/gitlab/pagination/cursor_based_keyset_spec.rb": 0.6352159949999532,9517 "spec/services/ide/base_config_service_spec.rb": 1.2556980020001447,9518 "spec/services/alert_management/metric_images/upload_service_spec.rb": 1.267645211999934,9519 "spec/lib/gitlab/ci/build/prerequisite/factory_spec.rb": 1.3719972369999596,9520 "spec/services/projects/container_repository/third_party/delete_tags_service_spec.rb": 0.8859635060000528,9521 "spec/components/pajamas/radio_component_spec.rb": 0.6709829740000259,9522 "spec/models/plan_spec.rb": 0.6193104369999674,9523 "spec/lib/gitlab/sql/union_spec.rb": 0.5318621290000465,9524 "spec/graphql/mutations/achievements/create_spec.rb": 1.1999881050001022,9525 "spec/lib/gitlab/ci/reports/codequality_reports_spec.rb": 0.6133921069999815,9526 "spec/support_specs/ability_check_spec.rb": 0.5128138700001728,9527 "spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb": 1.2455670720000853,9528 "spec/rubocop/cop/graphql/json_type_spec.rb": 0.4733890119998705,9529 "spec/workers/pages_domain_ssl_renewal_worker_spec.rb": 1.0288197709999167,9530 "spec/lib/gitlab/ci/input/arguments/default_spec.rb": 0.42808685299996796,9531 "spec/lib/bitbucket_server/representation/repo_spec.rb": 0.4702372419999392,9532 "spec/lib/gitlab/usage_data_counters/snippet_counter_spec.rb": 0.5196139810000204,9533 "spec/routing/openid_connect_spec.rb": 0.607123507000324,9534 "spec/views/devise/shared/_signup_box.html.haml_spec.rb": 0.8859071760000461,9535 "spec/lib/gitlab/database/partitioning/replace_table_spec.rb": 0.6020220170000812,9536 "spec/graphql/types/member_interface_spec.rb": 0.45784534199992777,9537 "spec/lib/gitlab/lets_encrypt/challenge_spec.rb": 0.38333761600006255,9538 "spec/services/users/email_verification/generate_token_service_spec.rb": 0.6689450640001269,9539 "spec/lib/gitlab/graphql/authorize/object_authorization_spec.rb": 0.4181163139999171,9540 "spec/models/projects/wiki_repository_spec.rb": 0.5917296280001665,9541 "spec/lib/gitlab/chat/responder/base_spec.rb": 0.45485981199999515,9542 "spec/lib/gitlab/metrics/dashboard/stages/panel_ids_inserter_spec.rb": 0.5543751289999364,9543 "spec/lib/gitlab/manifest_import/metadata_spec.rb": 0.3987580840000646,9544 "spec/lib/gitlab/bitbucket_server_import/importers/notes_importer_spec.rb": 0.7809650199999396,9545 "spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb": 0.4357302729999901,9546 "spec/graphql/types/work_items/widgets/assignees_input_type_spec.rb": 0.2846648390000155,9547 "spec/lib/gitlab/snippet_search_results_spec.rb": 0.6606429539999681,9548 "spec/helpers/rss_helper_spec.rb": 0.5906779370000095,9549 "spec/rubocop/cop/migration/remove_column_spec.rb": 0.43913635300009446,9550 "spec/services/work_items/parent_links/base_service_spec.rb": 0.8267807980000725,9551 "spec/lib/gitlab/utils/inline_hash_spec.rb": 0.37328972599993904,9552 "spec/graphql/types/metrics/dashboard_type_spec.rb": 0.38144091499998467,9553 "spec/graphql/types/project_member_type_spec.rb": 0.33793135799987795,9554 "spec/lib/bulk_imports/projects/pipelines/protected_branches_pipeline_spec.rb": 0.8446157680000397,9555 "spec/lib/gitlab/config/entry/unspecified_spec.rb": 0.37923103499997524,9556 "spec/lib/gitlab/kubernetes/service_account_token_spec.rb": 0.36595010600012756,9557 "spec/graphql/types/commit_signatures/ssh_signature_type_spec.rb": 0.3367470279999907,9558 "spec/graphql/types/range_input_type_spec.rb": 0.3446064170000227,9559 "spec/graphql/types/event_type_spec.rb": 0.32180220800000825,9560 "spec/lib/gitlab/ci/config/external/mapper/variables_expander_spec.rb": 0.3225361980000798,9561 "spec/rubocop/cop/gitlab/json_spec.rb": 0.34477506600001107,9562 "spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric_spec.rb": 0.5249211400000604,9563 "spec/views/groups/show.html.haml_spec.rb": 0.607983177000051,9564 "spec/lib/gitlab/quick_actions/substitution_definition_spec.rb": 0.3273492670000451,9565 "spec/lib/api/entities/design_management/design_spec.rb": 0.6175743460000831,9566 "spec/views/dashboard/projects/_nav.html.haml_spec.rb": 0.3316408870000487,9567 "spec/rubocop/cop/qa/ambiguous_page_object_name_spec.rb": 0.35859834600000795,9568 "spec/lib/gitlab/ci/config/external/mapper/base_spec.rb": 0.30455323900014264,9569 "spec/models/concerns/transactions_spec.rb": 0.30729796800005715,9570 "spec/models/concerns/vulnerability_finding_helpers_spec.rb": 0.2990783879999981,9571 "spec/lib/api/entities/ssh_key_spec.rb": 0.41181303500002286,9572 "spec/graphql/types/ci/runner_web_url_edge_spec.rb": 0.2984409189998587,9573 "spec/graphql/types/group_member_relation_enum_spec.rb": 0.3641799859999537,9574 "spec/graphql/types/ci/test_suite_summary_type_spec.rb": 0.29701703899991116,9575 "spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb": 0.30496950799988554,9576 "spec/graphql/types/design_management/design_collection_type_spec.rb": 0.3018067279999741,9577 "spec/models/concerns/blocks_unsafe_serialization_spec.rb": 0.3066289079999933,9578 "spec/models/issues/csv_import_spec.rb": 0.32737269299991567,9579 "spec/graphql/types/ci_configuration/sast/options_entity_spec.rb": 0.2952511759999652,9580 "spec/models/concerns/runners_token_prefixable_spec.rb": 0.2558341190001556,9581 "spec/lib/gitlab/git/gitmodules_parser_spec.rb": 0.25160952900000666,9582 "spec/lib/gitlab/log_timestamp_formatter_spec.rb": 0.25685632899990196,9583 "spec/lib/gitlab/ci/status/build/waiting_for_resource_spec.rb": 0.2637158179998096,9584 "spec/graphql/types/packages/pypi/metadatum_type_spec.rb": 0.26600864800002455,9585 "spec/lib/gitlab/patch/draw_route_spec.rb": 0.2692646179998519,9586 "spec/graphql/types/packages/package_file_type_spec.rb": 0.26317134900000383,9587 "spec/lib/gitlab/ci/config/normalizer/factory_spec.rb": 0.26434321900001123,9588 "spec/presenters/deploy_key_presenter_spec.rb": 0.3092962549999356,9589 "spec/graphql/types/work_items/widgets/assignees_type_spec.rb": 0.27369379800006755,9590 "spec/dependencies/omniauth_saml_spec.rb": 0.284790086999919379591}9592Knapsack global time execution for tests: 23m 24s9593Pending: (Failures listed here are expected and do not affect your suite's status)9594 1) Ci::Build partitioning assigns partition_id to job variables successfully9595 # Skipping partitioning tests until `ci_builds` is partitioned9596 Failure/Error: skip 'Skipping partitioning tests until `ci_builds` is partitioned'9597 RSpec::Core::Pending::SkipDeclaredInExample9598 # ./spec/support/helpers/models/ci/partitioning_testing/rspec_hooks.rb:8:in `block (2 levels) in <top (required)>'9599 # ./spec/support/fast_quarantine.rb:23:in `block (2 levels) in <top (required)>'9600 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <top (required)>'9601 # ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'9602 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <top (required)>'9603 2) Ci::Build assigning token includes partition_id as a token prefix9604 # Skipping partitioning tests until `ci_builds` is partitioned9605 Failure/Error: skip 'Skipping partitioning tests until `ci_builds` is partitioned'9606 RSpec::Core::Pending::SkipDeclaredInExample9607 # ./spec/support/helpers/models/ci/partitioning_testing/rspec_hooks.rb:8:in `block (2 levels) in <top (required)>'9608 # ./spec/support/fast_quarantine.rb:23:in `block (2 levels) in <top (required)>'9609 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <top (required)>'9610 # ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'9611 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <top (required)>'9612 3) Ci::Build metadata partitioning creates the metadata record and assigns its partition9613 # Skipping partitioning tests until `ci_builds` is partitioned9614 Failure/Error: skip 'Skipping partitioning tests until `ci_builds` is partitioned'9615 RSpec::Core::Pending::SkipDeclaredInExample9616 # ./spec/support/helpers/models/ci/partitioning_testing/rspec_hooks.rb:8:in `block (2 levels) in <top (required)>'9617 # ./spec/support/fast_quarantine.rb:23:in `block (2 levels) in <top (required)>'9618 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <top (required)>'9619 # ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'9620 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <top (required)>'9621 4) Database::MultipleDatabasesHelpers .with_reestablished_active_record_base when doing establish_connection on Ci::ApplicationRecord raises exception9622 # Skipping because none of the extra databases [:ci] are setup9623 # ./spec/support_specs/database/multiple_databases_helpers_spec.rb:499624 5) Database::MultipleDatabasesHelpers .with_reestablished_active_record_base when doing establish_connection on Ci::ApplicationRecord when using with_reestablished_active_record_base does not raise exception9625 # Skipping because none of the extra databases [:ci] are setup9626 # ./spec/support_specs/database/multiple_databases_helpers_spec.rb:549627 6) Database::MultipleDatabasesHelpers .with_added_ci_connection when multiple databases are setup does not mock the original Ci::ApplicationRecord connection9628 # Skipping because none of the extra databases [:ci] are setup9629 # ./spec/support_specs/database/multiple_databases_helpers_spec.rb:1069630Finished in 23 minutes 27 seconds (files took 53.71 seconds to load)96314174 examples, 0 failures, 6 pending9632Randomized with seed 322359633[TEST PROF INFO] Time spent in factories: 10:23.311 (44.05% of total time)9634RSpec exited with 0.9635No examples to retry, congrats!9637Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy9639Uploading artifacts...9640coverage/: found 5 matching artifact files and directories 9641crystalball/: found 2 matching artifact files and directories 9642deprecations/: found 3 matching artifact files and directories 9643knapsack/: found 4 matching artifact files and directories 9644WARNING: query_recorder/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9645rspec/: found 16 matching artifact files and directories 9646WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9647log/*.log: found 17 matching artifact files and directories 9648WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964306/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9649WARNING: Retrying... context=artifacts-uploader error=request redirected9650Uploading artifacts as "archive" to coordinator... 201 Created id=4400964306 responseStatus=201 Created token=64_z1mJi9651Uploading artifacts...9652rspec/rspec-*.xml: found 1 matching artifact files and directories 9653WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964306/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9654WARNING: Retrying... context=artifacts-uploader error=request redirected9655Uploading artifacts as "junit" to coordinator... 201 Created id=4400964306 responseStatus=201 Created token=64_z1mJi9657Job succeeded