rspec unit pg14 14/24
Passed Started
by
@vshushlin

Vladimir Shushlin
1Receiving objects: 100% (148580/148580), 135.67 MiB | 31.64 MiB/s, done.2Resolving deltas: 100% (64637/64637), done.4 * [new ref] refs/pipelines/1043537122 -> refs/pipelines/10435371225Checking out 537c07c6 as detached HEAD (ref is refs/merge-requests/118829/merge)...6Skipping Git submodules setup7$ git remote set-url origin "${CI_REPOSITORY_URL}"9Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...10Downloading cache from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 11Successfully extracted cache13Downloading artifacts for compile-test-assets (5336650410)...14Downloading artifacts from coordinator... ok host=storage.googleapis.com id=5336650410 responseStatus=200 OK token=64_2UsnW15Downloading artifacts for detect-tests (5336650454)...16Downloading artifacts from coordinator... ok host=storage.googleapis.com id=5336650454 responseStatus=200 OK token=64_2UsnW17Downloading artifacts for retrieve-tests-metadata (5336650473)...18Downloading artifacts from coordinator... ok host=storage.googleapis.com id=5336650473 responseStatus=200 OK token=64_2UsnW19Downloading artifacts for setup-test-env (5336650424)...20Downloading artifacts from coordinator... ok host=storage.googleapis.com id=5336650424 responseStatus=200 OK token=64_2UsnW22Using docker image sha256:d68252162deca904d1a0066983188b98dfe3f6fe8181458b0a55905e79ed85a1 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.17-postgresql-14: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.20-rust-1.65-node-18.17-postgresql-14@sha256:2113f34affc7e2ee40bac87419dcd7c65a94d4abfa9edb86192e1aa6a1e46590 ...23$ echo $FOSS_ONLY24$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb25$ export GOPATH=$CI_PROJECT_DIR/.go26$ mkdir -p $GOPATH27$ source scripts/utils.sh28$ source scripts/prepare_build.sh60Using decomposed database config (config/database.yml.decomposed-postgresql)61Geo DB won't be set up.62Embedding DB won't be set up.92$ source ./scripts/rspec_helpers.sh93$ run_timed_command "gem install knapsack --no-document"94$ gem install knapsack --no-document95Successfully installed knapsack-4.0.0961 gem installed97==> 'gem install knapsack --no-document' succeeded in 1 seconds.98$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"103$ export RSPEC_SKIPPED_TESTS_REPORT_PATH="rspec/skipped_tests-${CI_JOB_ID}.txt"104$ export RSPEC_RETRIED_TESTS_REPORT_PATH="rspec/retried_tests-${CI_JOB_ID}.txt"105$ tooling/bin/create_job_metrics_file || true106[job-metrics] Creating the job metrics file for the CI/CD job.107$ rspec_paralellized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~level:background_migration --tag ~click_house --tag ~real_ai_request"108RETRY_FAILED_TESTS_IN_NEW_PROCESS: true109KNAPSACK_GENERATE_REPORT: true110FLAKY_RSPEC_GENERATE_REPORT: true111KNAPSACK_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.rb112KNAPSACK_LOG_LEVEL: debug113KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg14_14_24_report.json114FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json115FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg14_14_24_report.json116NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg14_14_24_report.json117RSPEC_SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests-5336650797.txt118CRYSTALBALL: 119RSPEC_TESTS_MAPPING_ENABLED: 120RSPEC_TESTS_FILTER_FILE: 121Shell set options (set -o) enabled:122braceexpand on123hashall on124interactive-comments on125pipefail on126Running 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-5336650797.json --format RspecJunitFormatter --out rspec/rspec-5336650797.xml --fail-fast=20 --tag ~quarantine --tag ~level:background_migration --tag ~click_house --tag ~real_ai_request -- spec/models/merge_request_diff_spec.rb spec/services/merge_requests/push_options_handler_service_spec.rb spec/models/concerns/noteable_spec.rb spec/services/projects/overwrite_project_service_spec.rb spec/lib/banzai/filter/references/external_issue_reference_filter_spec.rb spec/finders/work_items/work_items_finder_spec.rb spec/lib/gitlab/ci/yaml_processor_spec.rb spec/lib/gitlab/background_migration/backfill_vulnerability_reads_cluster_agent_spec.rb spec/services/auto_merge/base_service_spec.rb spec/models/operations/feature_flags/strategy_spec.rb spec/lib/gitlab/background_migration/disable_legacy_open_source_license_for_projects_less_than_one_mb_spec.rb spec/models/system/broadcast_message_spec.rb spec/presenters/ci/build_runner_presenter_spec.rb spec/lib/gitlab/database/lock_writes_manager_spec.rb spec/models/members/group_member_spec.rb spec/tasks/gitlab/uploads/migrate_rake_spec.rb spec/services/work_items/update_service_spec.rb spec/lib/gitlab/background_migration/mark_duplicate_npm_packages_for_destruction_spec.rb spec/tasks/gitlab/cleanup_rake_spec.rb spec/models/resource_label_event_spec.rb spec/lib/gitlab/redis/workhorse_spec.rb spec/lib/backup/repositories_spec.rb spec/models/sent_notification_spec.rb spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb spec/lib/gitlab/git/diff_collection_spec.rb spec/models/integrations/chat_message/pipeline_message_spec.rb spec/presenters/blob_presenter_spec.rb spec/services/merge_requests/create_pipeline_service_spec.rb spec/lib/banzai/filter/issuable_reference_expansion_filter_spec.rb spec/lib/gitlab/gfm/uploads_rewriter_spec.rb spec/services/projects/update_pages_service_spec.rb spec/services/projects/move_access_service_spec.rb spec/lib/backup/database_model_spec.rb spec/workers/process_commit_worker_spec.rb spec/lib/gitlab/kubernetes/default_namespace_spec.rb spec/lib/gitlab/database/with_lock_retries_spec.rb spec/models/concerns/resolvable_discussion_spec.rb spec/finders/users_finder_spec.rb spec/models/concerns/reactive_caching_spec.rb spec/tooling/lib/tooling/job_metrics_spec.rb spec/models/appearance_spec.rb spec/lib/gitlab/redis/feature_flag_spec.rb spec/graphql/mutations/release_asset_links/update_spec.rb spec/models/container_registry/event_spec.rb spec/finders/fork_projects_finder_spec.rb spec/lib/gitlab/metrics/rails_slis_spec.rb spec/graphql/types/user_type_spec.rb spec/lib/banzai/filter/sanitization_filter_spec.rb spec/lib/security/weak_passwords_spec.rb spec/services/ml/experiment_tracking/candidate_repository_spec.rb spec/models/protected_branch/push_access_level_spec.rb spec/lib/gitlab/ci/charts_spec.rb spec/models/alert_management/http_integration_spec.rb spec/finders/projects/members/effective_access_level_finder_spec.rb spec/routing/admin_routing_spec.rb spec/services/projects/open_issues_count_service_spec.rb spec/services/packages/maven/metadata/sync_service_spec.rb spec/lib/gitlab/import_export/group/tree_saver_spec.rb spec/models/issue/metrics_spec.rb spec/helpers/page_layout_helper_spec.rb spec/lib/gitlab/pagination/keyset/paginator_spec.rb spec/lib/gitlab/ci/ansi2json_spec.rb spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb spec/finders/joined_groups_finder_spec.rb spec/lib/bulk_imports/common/pipelines/milestones_pipeline_spec.rb spec/serializers/issue_sidebar_basic_entity_spec.rb spec/lib/gitlab/import_export/lfs_restorer_spec.rb spec/models/pages/lookup_path_spec.rb spec/lib/gitlab/database/health_status/indicators/wal_rate_spec.rb spec/models/integrations/shimo_spec.rb spec/lib/gitlab/api_authentication/token_resolver_spec.rb spec/models/packages/debian/project_component_file_spec.rb spec/lib/gitlab/middleware/compressed_json_spec.rb spec/models/ci/unit_test_failure_spec.rb spec/services/boards/lists/list_service_spec.rb spec/helpers/badges_helper_spec.rb spec/models/design_management/action_spec.rb spec/models/board_spec.rb spec/services/import/fogbugz_service_spec.rb spec/lib/sbom/package_url/encoder_spec.rb spec/lib/gitlab/git/push_spec.rb spec/finders/deploy_tokens/tokens_finder_spec.rb spec/lib/gitlab/suggestions/commit_message_spec.rb spec/workers/ci/pipeline_success_unlock_artifacts_worker_spec.rb spec/lib/gitlab/import_export/project/export_task_spec.rb spec/lib/gitlab/import_export/shared_spec.rb spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb spec/lib/gitlab/ci/ansi2json/line_spec.rb spec/lib/gitlab/usage/metrics/aggregates/aggregate_spec.rb spec/tasks/gitlab/ci_secure_files/check_rake_spec.rb spec/tasks/gitlab/smtp_rake_spec.rb spec/presenters/group_member_presenter_spec.rb spec/finders/boards/boards_finder_spec.rb spec/lib/gitlab/ci/config/extendable/entry_spec.rb spec/services/members/unassign_issuables_service_spec.rb spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb spec/models/projects/forks/details_spec.rb spec/finders/groups/user_groups_finder_spec.rb spec/graphql/mutations/todos/create_spec.rb spec/lib/gitlab/ci/pipeline/expression/lexeme/matches_spec.rb spec/finders/merge_requests/by_approvals_finder_spec.rb spec/lib/api/entities/release_spec.rb spec/lib/gitlab/memory/watchdog/configurator_spec.rb spec/services/jira_import/server_users_mapper_service_spec.rb spec/lib/banzai/pipeline/description_pipeline_spec.rb spec/lib/sidebars/projects/menus/hidden_menu_spec.rb spec/lib/gitlab/bitbucket_import/importers/pull_request_importer_spec.rb spec/lib/gitlab/sidekiq_config/worker_spec.rb spec/helpers/users/group_callouts_helper_spec.rb spec/views/projects/pages/show.html.haml_spec.rb spec/services/import/gitlab_projects/create_project_service_spec.rb spec/lib/banzai/reference_parser/project_parser_spec.rb spec/lib/gitlab/safe_request_loader_spec.rb spec/helpers/projects/ml/experiments_helper_spec.rb spec/services/boards/issues/create_service_spec.rb spec/services/google_cloud/create_cloudsql_instance_service_spec.rb spec/workers/wikis/git_garbage_collect_worker_spec.rb spec/graphql/resolvers/design_management/version/designs_at_version_resolver_spec.rb spec/lib/security/ci_configuration/sast_iac_build_action_spec.rb spec/workers/bulk_imports/pipeline_batch_worker_spec.rb spec/models/users/namespace_commit_email_spec.rb spec/lib/gitlab/local_and_remote_storage_migration/artifact_migrater_spec.rb spec/lib/gitlab/rack_attack/user_allowlist_spec.rb spec/finders/autocomplete/group_finder_spec.rb spec/workers/object_pool/create_worker_spec.rb spec/models/aws/role_spec.rb spec/lib/gitlab/repository_size_checker_spec.rb spec/models/concerns/token_authenticatable_strategies/base_spec.rb spec/lib/gitlab/database/database_connection_info_spec.rb spec/services/concerns/audit_event_save_type_spec.rb spec/lib/gitlab/hook_data/issue_builder_spec.rb spec/rubocop/cop/performance/ar_exists_and_present_blank_spec.rb spec/services/users/last_push_event_service_spec.rb spec/support_specs/helpers/stub_method_calls_spec.rb spec/lib/gitlab/file_markdown_link_builder_spec.rb spec/services/task_list_toggle_service_spec.rb spec/lib/version_check_spec.rb spec/lib/sidebars/user_profile/menus/starred_projects_menu_spec.rb spec/lib/click_house/redactor_spec.rb spec/services/protected_tags/update_service_spec.rb spec/lib/gitlab/quick_actions/timeline_text_and_date_time_separator_spec.rb spec/lib/gitlab/github_import/importer/pull_requests/review_requests_importer_spec.rb spec/lib/gitlab/ci/build/releaser_spec.rb spec/lib/gitlab/work_items/work_item_hierarchy_spec.rb spec/serializers/job_artifact_report_entity_spec.rb spec/workers/ci/pipeline_artifacts/create_quality_report_worker_spec.rb spec/views/admin/application_settings/_repository_check.html.haml_spec.rb spec/models/ci/artifact_blob_spec.rb spec/initializers/net_http_patch_spec.rb spec/lib/bulk_imports/projects/pipelines/project_pipeline_spec.rb spec/lib/gitlab/ci/pipeline/seed/processable/resource_group_spec.rb spec/lib/api/entities/merge_request_changes_spec.rb spec/lib/gitlab/cleanup/orphan_job_artifact_files_batch_spec.rb spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb spec/finders/autocomplete/deploy_keys_with_write_access_finder_spec.rb spec/services/merge_requests/create_approval_event_service_spec.rb spec/rubocop/cop/migration/update_column_in_batches_spec.rb spec/models/packages/composer/metadatum_spec.rb spec/lib/gitlab/config/entry/simplifiable_spec.rb spec/lib/bulk_imports/projects/pipelines/repository_pipeline_spec.rb spec/graphql/mutations/environments/canary_ingress/update_spec.rb spec/services/dependency_proxy/auth_token_service_spec.rb spec/lib/gitlab/metrics/prometheus_spec.rb spec/finders/repositories/branch_names_finder_spec.rb spec/lib/gitlab/database/migrations/extension_helpers_spec.rb spec/graphql/resolvers/terraform/states_resolver_spec.rb spec/helpers/keyset_helper_spec.rb spec/uploaders/object_storage/cdn_spec.rb spec/serializers/move_to_project_entity_spec.rb spec/workers/deployments/archive_in_project_worker_spec.rb spec/services/ci/create_pipeline_service/scripts_spec.rb spec/models/concerns/limitable_spec.rb spec/models/snippet_input_action_collection_spec.rb spec/services/packages/mark_package_for_destruction_service_spec.rb spec/finders/groups/accepting_project_creations_finder_spec.rb spec/lib/gitlab/tracking/service_ping_context_spec.rb spec/serializers/member_serializer_spec.rb spec/services/customer_relations/organizations/update_service_spec.rb spec/graphql/resolvers/crm/contact_state_counts_resolver_spec.rb spec/lib/gitlab/graphql/pagination/offset_active_record_relation_connection_spec.rb spec/services/discussions/capture_diff_note_positions_service_spec.rb spec/lib/gitlab/database/migration_helpers/swapping_spec.rb spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb spec/lib/api/entities/draft_note_spec.rb spec/presenters/member_presenter_spec.rb spec/policies/application_setting_policy_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_slack_app_installations_metric_spec.rb spec/workers/terraform/states/destroy_worker_spec.rb spec/lib/banzai/pipeline/post_process_pipeline_spec.rb spec/support_specs/helpers/migrations_helpers_spec.rb spec/lib/gitlab/diff/formatters/image_formatter_spec.rb spec/workers/update_project_statistics_worker_spec.rb spec/views/admin/groups/_form.html.haml_spec.rb spec/rubocop/cop/ignored_columns_spec.rb spec/graphql/types/release_assets_input_type_spec.rb spec/models/ml/candidate_metric_spec.rb spec/views/projects/commits/show.html.haml_spec.rb spec/models/blob_viewer/changelog_spec.rb spec/validators/gitlab/zoom_url_validator_spec.rb spec/graphql/types/member_interface_spec.rb spec/services/user_agent_detail_service_spec.rb spec/graphql/resolvers/ci/template_resolver_spec.rb spec/lib/gitlab/sql/recursive_cte_spec.rb spec/services/integrations/slack_options/label_search_handler_spec.rb spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb spec/views/projects/milestones/index.html.haml_spec.rb spec/workers/propagate_integration_group_worker_spec.rb spec/lib/gitlab/kroki_spec.rb spec/lib/gitlab/pagination/keyset/cursor_pager_spec.rb spec/models/ml/candidate_metadata_spec.rb spec/lib/gitlab/database/schema_cleaner_spec.rb spec/scripts/api/get_package_and_test_job_spec.rb spec/lib/gitlab/database/shared_model_spec.rb spec/tooling/lib/tooling/helpers/file_handler_spec.rb spec/lib/gitlab/app_text_logger_spec.rb spec/lib/gitlab/database_importers/work_items/hierarchy_restrictions_importer_spec.rb spec/workers/concerns/packages/cleanup_artifact_worker_spec.rb spec/graphql/types/design_management/design_version_event_enum_spec.rb spec/lib/api/helpers/internal_helpers_spec.rb spec/serializers/cluster_entity_spec.rb spec/lib/gitlab/word_diff/segments/chunk_spec.rb spec/graphql/types/evidence_type_spec.rb spec/lib/gitlab/noteable_metadata_spec.rb spec/lib/gitlab/config/entry/attributable_spec.rb spec/lib/gitlab/rugged_instrumentation_spec.rb spec/models/project_daily_statistic_spec.rb spec/validators/sha_validator_spec.rb spec/lib/gitlab/bitbucket_import/importers/pull_requests_notes_importer_spec.rb spec/serializers/jira_connect/subscription_entity_spec.rb spec/lib/gitlab/ci/config/entry/imageable_spec.rb spec/graphql/types/merge_requests/participant_type_spec.rb spec/models/error_tracking/client_key_spec.rb spec/models/repository_language_spec.rb spec/lib/gitlab/database/migrations/milestone_mixin_spec.rb spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb spec/services/users/email_verification/generate_token_service_spec.rb spec/rubocop/cop/rspec/shared_groups_metadata_spec.rb spec/rubocop/cop/sidekiq_redis_call_spec.rb spec/lib/gitlab/ci/config/interpolation/context_spec.rb spec/graphql/resolvers/achievements/achievements_resolver_spec.rb spec/lib/gitlab/ci/config/external/mapper/normalizer_spec.rb spec/lib/gitlab/usage_data_counters/jetbrains_bundled_plugin_activity_unique_counter_spec.rb spec/services/work_items/widgets/hierarchy_service/create_service_spec.rb spec/rubocop/cop/api/grape_array_missing_coerce_spec.rb spec/services/emails/destroy_service_spec.rb spec/workers/gitlab/github_import/attachments/import_issue_worker_spec.rb spec/lib/banzai/filter/timeout_html_pipeline_filter_spec.rb spec/lib/sidebars/projects/menus/scope_menu_spec.rb spec/support_specs/matchers/exceed_redis_call_limit_spec.rb spec/helpers/git_helper_spec.rb spec/lib/gitlab/ci/secure_files/x509_name_spec.rb spec/graphql/types/ci/config/job_restriction_type_spec.rb spec/uploaders/packages/npm/metadata_cache_uploader_spec.rb spec/support_specs/capybara_wait_for_all_requests_spec.rb spec/models/bulk_imports/export_upload_spec.rb spec/graphql/types/upload_type_spec.rb spec/lib/gitlab/ci/jwt_v2/claim_mapper_spec.rb spec/lib/gitlab/external_authorization/logger_spec.rb spec/graphql/types/query_complexity_type_spec.rb spec/lib/gitlab/graphql/negatable_arguments_spec.rb spec/lib/banzai/pipeline/email_pipeline_spec.rb spec/lib/gitlab/dependency_linker/parser/gemfile_spec.rb spec/graphql/types/user_callout_feature_name_enum_spec.rb spec/graphql/types/access_level_type_spec.rb spec/lib/api/validations/validators/bulk_imports/destination_namespace_path_spec.rb spec/lib/gitlab/safe_device_detector_spec.rb spec/graphql/types/tree/tree_type_spec.rb spec/helpers/one_trust_helper_spec.rb spec/graphql/types/permission_types/issue_spec.rb spec/graphql/types/design_management/design_collection_type_spec.rb spec/lib/gitlab/no_cache_headers_spec.rb spec/graphql/types/issuable_severity_enum_spec.rb spec/graphql/types/jira_user_type_spec.rb spec/graphql/types/tree/blob_type_spec.rb spec/lib/gitlab/database/convert_feature_category_to_group_label_spec.rb spec/graphql/types/ci/test_suite_summary_type_spec.rb spec/graphql/types/jira_import_type_spec.rb spec/serializers/ci/lint/job_entity_spec.rb spec/lib/api/entities/projects/repository_storage_move_spec.rb spec/lib/gitlab/action_cable/request_store_callbacks_spec.rb spec/lib/gitlab/kubernetes/generic_secret_spec.rb spec/models/synthetic_note_spec.rb spec/lib/gitlab/ci/config/normalizer/factory_spec.rb spec/graphql/types/security/report_types_enum_spec.rb spec/lib/gitlab/search/found_wiki_page_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/container_registry_db_enabled_metric_spec.rb spec/initializers/circuitbox_spec.rb spec/serializers/integrations/harbor_serializers/repository_serializer_spec.rb spec/lib/gitlab/quick_actions/dsl_spec.rbKnapsack report generator started!127/builds/gitlab-org/gitlab/ee/app/services/remote_development/service_response_factory.rb:41: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!128/builds/gitlab-org/gitlab/ee/app/services/remote_development/workspaces/create_service.rb:28: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!129/builds/gitlab-org/gitlab/ee/app/services/remote_development/workspaces/reconcile_service.rb:38: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!130/builds/gitlab-org/gitlab/ee/app/services/remote_development/workspaces/update_service.rb:28: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!131/builds/gitlab-org/gitlab/ee/lib/remote_development/agent_config/main.rb:32: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!132/builds/gitlab-org/gitlab/ee/lib/remote_development/agent_config/updater.rb:11: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!133/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/authorizer.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!134/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/authorizer.rb:13: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!135/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/creator.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!136/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/creator.rb:19: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!137/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/devfile_fetcher.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!138/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/devfile_fetcher.rb:16: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!139/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/devfile_flattener.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!140/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/editor_component_injector.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!141/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/editor_component_injector.rb:17: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!142/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/editor_component_injector.rb:18: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!143/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/personal_access_token_creator.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!144/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/personal_access_token_creator.rb:17: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!145/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:43: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!146/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:54: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!147/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:102: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!148/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:126: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!149/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:159: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!150/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:202: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!151/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/post_flatten_devfile_validator.rb:235: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!152/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/pre_flatten_devfile_validator.rb:24: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!153/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/pre_flatten_devfile_validator.rb:52: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!154/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/project_cloner_component_injector.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!155/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/project_cloner_component_injector.rb:17: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!156/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/project_cloner_component_injector.rb:18: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!157/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/project_cloner_component_injector.rb:23: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!158/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/volume_component_injector.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!159/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/volume_component_injector.rb:13: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!160/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/volume_component_injector.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!161/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/workspace_creator.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!162/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/workspace_creator.rb:24: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!163/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/workspace_creator.rb:25: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!164/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/workspace_creator.rb:28: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!165/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/workspace_variables_creator.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!166/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/main.rb:43: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!167/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/update/authorizer.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!168/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/update/updater.rb:13: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!169/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/agent_infos_observer.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!170/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_extractor.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!171/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_extractor.rb:16: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!172/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_to_infos_converter.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!173/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/input/params_validator.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!174/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/output/rails_infos_observer.rb:11: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!175/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/output/workspaces_to_rails_infos_converter.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!176/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/orphaned_workspaces_observer.rb:12: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!177/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_from_agent_infos_updater.rb:15: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!178/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_finder.rb:16: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!179/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_updater.rb:11: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!180Run options: exclude {:quarantine=>true, :level=>"background_migration", :click_house=>true, :real_ai_request=>true}181Test environment set up in 0.575503257 seconds182MergeRequestDiff183 validations184 is expected not to validate that :diff_type is case-sensitively unique within the scope of :merge_request_id185 checks sha format of base_commit_sha, head_commit_sha and start_commit_sha186 does not validate uniqueness by default187 when merge request diff is a merge_head type188 is valid189 when merge_head diff exists190 validates uniqueness191 create new record192 is expected to be valid193 is expected to be persisted194 is expected to eq 29195 is expected to eq 20196 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"197 is expected to eq "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"198 is expected to eq "0b4bc9a49b562e85de7cc9e834518ea6828729b9"199 is expected to eq "1e05e04d4c2a6414d9d4ab38208511a3bbe715f2"200 when diff_type is merge_head201 is expected to be valid202 is expected to be persisted203 is expected to eq 30204 is expected to eq 20205 is expected to eq "8cf3ec81a84f03846f9bd2d2761085a901e1bf5f"206 is expected to eq "0b4bc9a49b562e85de7cc9e834518ea6828729b9"207 is expected to eq "0b4bc9a49b562e85de7cc9e834518ea6828729b9"208 .by_commit_sha209 with sha contained in210 returns merge request diffs211 with sha not contained in212 returns empty result213 .ids_for_external_storage_migration214 external diffs are disabled215 is expected to be empty216 external diffs are misconfigured217 is expected to be empty218 external diffs are enabled unconditionally219 is expected to contain exactly 18, 19, 21, 22, 23, 24, and 20220 ignores diffs with 0 files221 external diffs are enabled for outdated diffs222 returns records for outdated merge request versions223 with limit224 respects the limit225 #update_external_diff_store226 change_stored_externally: false, change_external_diff: false227 is expected not to receive update_column(:external_diff_store, 1) 0 times228 change_stored_externally: false, change_external_diff: true229 is expected to receive update_column(:external_diff_store, 1) 1 time230 change_stored_externally: true, change_external_diff: false231 is expected to receive update_column(:external_diff_store, 1) 1 time232 change_stored_externally: true, change_external_diff: true233 is expected to receive update_column(:external_diff_store, 1) 1 time234 #migrate_files_to_external_storage!235 converts from in-database to external file storage236 migrates a nil diff file237 safely handles a transaction error when migrating to external storage238 converts from in-database to external object storage239 does nothing with an external diff240 does nothing if external diffs are disabled241 diff adds an empty file242 migrates the diff to object storage243 #migrate_files_to_database!244 converts from external to in-database storage245 does nothing with an in-database diff246 does nothing with an empty diff247 #latest?248 is expected to be latest249 is expected not to be latest250 internal diffs configured251 when it was not cleaned by the system252 returns persisted diffs253 when diff was cleaned by the system254 returns diffs from repository if can compare with current diff refs255 returns persisted diffs if cannot compare with diff refs256 returns persisted diffs if diff refs does not exist257 #diffs_in_batch258 when no persisted files available259 behaves like fetching full diffs260 returns diffs from repository comparison261 returns a Gitlab::Diff::FileCollection::Compare with full diffs262 returns empty pagination data263 measures diffs_comparison264 behaves like measuring diffs metrics265 is expected to receive measure(:diffs_collection) 1 time266 when diff_options include ignore_whitespace_change267 behaves like fetching full diffs268 returns diffs from repository comparison269 returns a Gitlab::Diff::FileCollection::Compare with full diffs270 returns empty pagination data271 measures diffs_comparison272 behaves like measuring diffs metrics273 is expected to receive measure(:diffs_collection) 1 time274 when persisted files available275 returns paginated diffs276 sorts diff files directory first277 behaves like measuring diffs metrics278 is expected to receive measure(:diffs_collection) 1 time279 when diff_options include ignore_whitespace_change280 returns pagination data from MergeRequestDiffBatch281 returns an empty MergeRequestBatch with empty pagination data when the batch is empty282 #paginated_diffs283 when no persisted files available284 returns a Gitlab::Diff::FileCollection::Compare285 when persisted files available286 returns paginated diffs287 sorts diff files directory first288 #diffs289 when no persisted files available290 behaves like fetching full diffs291 returns diffs from repository comparison292 returns a Gitlab::Diff::FileCollection::Compare with full diffs293 when diff_options include ignore_whitespace_change294 behaves like fetching full diffs295 returns diffs from repository comparison296 returns a Gitlab::Diff::FileCollection::Compare with full diffs297 when persisted files available298 returns diffs299 sorts diff files directory first300 #raw_diffs301 when the :ignore_whitespace_change option is set302 creates a new compare object instead of using preprocessed data303 when the raw diffs are empty304 returns an empty DiffCollection305 when the raw diffs exist306 returns the diffs307 when the :paths option is set308 only returns diffs that match the (old path, new path) given309 only serializes diff files found by query310 uses the preprocessed diffs311 #set_patch_id_sha312 sets the patch_id_sha attribute313 when base_commit_sha is nil314 records patch_id_sha as nil315 when head_commit_sha is nil316 records patch_id_sha as nil317 when head_commit_sha and base_commit_sha match318 records patch_id_sha as nil319 #save_diffs320 saves collected state321 saves overflow state322 saves empty state323 persists diff files sorted directory first324 expands collapsed diffs before saving325 saves binary diffs correctly326 with diffs that contain a null byte327 saves diffs correctly328 external diffs on disk always enabled329 when it was not cleaned by the system330 returns persisted diffs331 when diff was cleaned by the system332 returns diffs from repository if can compare with current diff refs333 returns persisted diffs if cannot compare with diff refs334 returns persisted diffs if diff refs does not exist335 #diffs_in_batch336 when no persisted files available337 behaves like fetching full diffs338 returns diffs from repository comparison339 returns a Gitlab::Diff::FileCollection::Compare with full diffs340 returns empty pagination data341 measures diffs_comparison342 behaves like measuring diffs metrics343 is expected to receive measure(:diffs_collection) 1 time344 when diff_options include ignore_whitespace_change345 behaves like fetching full diffs346 returns diffs from repository comparison347 returns a Gitlab::Diff::FileCollection::Compare with full diffs348 returns empty pagination data349 measures diffs_comparison350 behaves like measuring diffs metrics351 is expected to receive measure(:diffs_collection) 1 time352 when persisted files available353 returns paginated diffs354 sorts diff files directory first355 behaves like measuring diffs metrics356 is expected to receive measure(:diffs_collection) 1 time357 when diff_options include ignore_whitespace_change358 returns pagination data from MergeRequestDiffBatch359 returns an empty MergeRequestBatch with empty pagination data when the batch is empty360 #paginated_diffs361 when no persisted files available362 returns a Gitlab::Diff::FileCollection::Compare363 when persisted files available364 returns paginated diffs365 sorts diff files directory first366 #diffs367 when no persisted files available368 behaves like fetching full diffs369 returns diffs from repository comparison370 returns a Gitlab::Diff::FileCollection::Compare with full diffs371 when diff_options include ignore_whitespace_change372 behaves like fetching full diffs373 returns diffs from repository comparison374 returns a Gitlab::Diff::FileCollection::Compare with full diffs375 when persisted files available376 returns diffs377 sorts diff files directory first378 #raw_diffs379 when the :ignore_whitespace_change option is set380 creates a new compare object instead of using preprocessed data381 when the raw diffs are empty382 returns an empty DiffCollection383 when the raw diffs exist384 returns the diffs385 when the :paths option is set386 only returns diffs that match the (old path, new path) given387 only serializes diff files found by query388 uses the preprocessed diffs389 #set_patch_id_sha390 sets the patch_id_sha attribute391 when base_commit_sha is nil392 records patch_id_sha as nil393 when head_commit_sha is nil394 records patch_id_sha as nil395 when head_commit_sha and base_commit_sha match396 records patch_id_sha as nil397 #save_diffs398 saves collected state399 saves overflow state400 saves empty state401 persists diff files sorted directory first402 expands collapsed diffs before saving403 saves binary diffs correctly404 with diffs that contain a null byte405 saves diffs correctly406 external diffs in object storage always enabled407 empty diff408 creates an empty diff409 normal diff410 creates a diff in object storage411 diff adding an empty file412 creates a diff in object storage413 exernal diffs enabled for outdated diffs414 stores up-to-date diffs in the database415 stores diffs for recently closed MRs in the database416 stores diffs for recently merged MRs in the database417 stores diffs for old MR versions in external storage418 stores diffs for old closed MRs in external storage419 stores diffs for old merged MRs in external storage420 when it was not cleaned by the system421 returns persisted diffs422 when diff was cleaned by the system423 returns diffs from repository if can compare with current diff refs424 returns persisted diffs if cannot compare with diff refs425 returns persisted diffs if diff refs does not exist426 #diffs_in_batch427 when no persisted files available428 behaves like fetching full diffs429 returns diffs from repository comparison430 returns a Gitlab::Diff::FileCollection::Compare with full diffs431 returns empty pagination data432 measures diffs_comparison433 behaves like measuring diffs metrics434 is expected to receive measure(:diffs_collection) 1 time435 when diff_options include ignore_whitespace_change436 behaves like fetching full diffs437 returns diffs from repository comparison438 returns a Gitlab::Diff::FileCollection::Compare with full diffs439 returns empty pagination data440 measures diffs_comparison441 behaves like measuring diffs metrics442 is expected to receive measure(:diffs_collection) 1 time443 when persisted files available444 returns paginated diffs445 sorts diff files directory first446 behaves like measuring diffs metrics447 is expected to receive measure(:diffs_collection) 1 time448 when diff_options include ignore_whitespace_change449 returns pagination data from MergeRequestDiffBatch450 returns an empty MergeRequestBatch with empty pagination data when the batch is empty451 #paginated_diffs452 when no persisted files available453 returns a Gitlab::Diff::FileCollection::Compare454 when persisted files available455 returns paginated diffs456 sorts diff files directory first457 #diffs458 when no persisted files available459 behaves like fetching full diffs460 returns diffs from repository comparison461 returns a Gitlab::Diff::FileCollection::Compare with full diffs462 when diff_options include ignore_whitespace_change463 behaves like fetching full diffs464 returns diffs from repository comparison465 returns a Gitlab::Diff::FileCollection::Compare with full diffs466 when persisted files available467 returns diffs468 sorts diff files directory first469 #raw_diffs470 when the :ignore_whitespace_change option is set471 creates a new compare object instead of using preprocessed data472 when the raw diffs are empty473 returns an empty DiffCollection474 when the raw diffs exist475 returns the diffs476 when the :paths option is set477 only returns diffs that match the (old path, new path) given478 only serializes diff files found by query479 uses the preprocessed diffs480 #set_patch_id_sha481 sets the patch_id_sha attribute482 when base_commit_sha is nil483 records patch_id_sha as nil484 when head_commit_sha is nil485 records patch_id_sha as nil486 when head_commit_sha and base_commit_sha match487 records patch_id_sha as nil488 #save_diffs489 saves collected state490 saves overflow state491 saves empty state492 persists diff files sorted directory first493 expands collapsed diffs before saving494 saves binary diffs correctly495 with diffs that contain a null byte496 saves diffs correctly497 #commit_shas498 returns all commit SHAs using commits from the DB499 with limit attribute500 behaves like limited number of shas501 returns limited number of shas502 with preloaded diff commits503 does not trigger any query504 behaves like limited number of shas505 returns limited number of shas506 #compare_with507 delegates compare to the service508 uses git diff A..B approach by default509 #commits_count510 returns number of commits using serialized commits511 #files_count512 is set by default513 is set to the sentinel value if the actual value exceeds it514 uses the cached count if present515 uses the actual count if nil516 uses the actual count if overflown517 #first_commit518 returns first commit519 #last_commit520 returns last commit521 #includes_any_commits?522 returns false if passed commits do not exist523 returns true if passed commits exists524 processes the passed shas in batches525 number of existing commits is greater than batch size526 performs a separate request for each batch527 #modified_paths528 returns affected file paths529 when fallback_on_overflow is true530 when the merge_request_diff is overflowed531 returns file paths via project.repository#diff_stats532 when the merge_request_diff is not overflowed533 returns expect file paths withoout called #modified_paths_for_overflowed_mr534 #opening_external_diff535 external diffs disabled536 is expected not to be exists537 yields nil538 external diffs enabled539 is expected to be exists540 yields an open file541 is re-entrant542 #lines_count543 returns sum of all changed lines count in diff files544 #commits545 returns a CommitCollection whose container points to the target project546 returns a non-empty CommitCollection547 with a page548 returns a limited number of commits for page549 .latest_diff_for_merge_requests550 loads the latest merge_request_diff record for the given merge requests551 loads nothing if the merge request has no diff record552 loads nothing if nil was passed as merge_request553 external diff caching554 #cached_external_diff555 when diff is externally stored556 when diff is already cached557 yields cached file558 when diff is not cached559 caches external diff in tmp storage560 when diff is not externally stored561 yields nil562 #remove_cached_external_diff563 removes external diff cache diff564 when path is traversed565 raises566 when path is not allowed567 raises568 when dir does not exist569 returns570MergeRequests::PushOptionsHandlerService571 `create` push option572 with a new branch573 behaves like a service that can create a merge request574 creates a merge request with the correct target branch575 when project has been forked576 sets the correct source and target project577 with an existing branch but no open MR578 behaves like a service that can create a merge request579 creates a merge request with the correct target branch580 when project has been forked581 sets the correct source and target project582 with an existing branch that has a merge request open583 behaves like a service that does not create a merge request584 is expected not to change `MergeRequest.count`585 behaves like with a deleted branch586 behaves like a service that does nothing587 is expected not to change `MergeRequest.count`588 is expected not to change `MergeRequest.maximum(:updated_at)`589 behaves like with the project default branch590 behaves like a service that does nothing591 is expected not to change `MergeRequest.count`592 is expected not to change `MergeRequest.maximum(:updated_at)`593 `merge_when_pipeline_succeeds` push option594 with a new branch595 adds an error to the service596 behaves like a service that does not create a merge request597 is expected not to change `MergeRequest.count`598 when coupled with the `create` push option599 behaves like a service that can create a merge request600 creates a merge request with the correct target branch601 when project has been forked602 sets the correct source and target project603 behaves like a service that can set the merge request to merge when pipeline succeeds604 sets auto_merge_enabled605 with an existing branch but no open MR606 adds an error to the service607 behaves like a service that does not create a merge request608 is expected not to change `MergeRequest.count`609 when coupled with the `create` push option610 behaves like a service that can create a merge request611 creates a merge request with the correct target branch612 when project has been forked613 sets the correct source and target project614 behaves like a service that can set the merge request to merge when pipeline succeeds615 sets auto_merge_enabled616 with an existing branch that has a merge request open617 behaves like a service that does not create a merge request618 is expected not to change `MergeRequest.count`619 behaves like a service that can set the merge request to merge when pipeline succeeds620 sets auto_merge_enabled621 behaves like with a deleted branch622 behaves like a service that does nothing623 is expected not to change `MergeRequest.count`624 is expected not to change `MergeRequest.maximum(:updated_at)`625 behaves like with the project default branch626 behaves like a service that does nothing627 is expected not to change `MergeRequest.count`628 is expected not to change `MergeRequest.maximum(:updated_at)`629 `remove_source_branch` push option630 with a new branch631 adds an error to the service632 behaves like a service that does not create a merge request633 is expected not to change `MergeRequest.count`634 when coupled with the `create` push option635 behaves like a service that can create a merge request636 creates a merge request with the correct target branch637 when project has been forked638 sets the correct source and target project639 behaves like a service that can remove the source branch when it is merged640 returns true to force_remove_source_branch?641 with an existing branch but no open MR642 adds an error to the service643 behaves like a service that does not create a merge request644 is expected not to change `MergeRequest.count`645 when coupled with the `create` push option646 behaves like a service that can create a merge request647 creates a merge request with the correct target branch648 when project has been forked649 sets the correct source and target project650 behaves like a service that can remove the source branch when it is merged651 returns true to force_remove_source_branch?652 with an existing branch that has a merge request open653 behaves like a service that does not create a merge request654 is expected not to change `MergeRequest.count`655 behaves like a service that can remove the source branch when it is merged656 returns true to force_remove_source_branch?657 behaves like with a deleted branch658 behaves like a service that does nothing659 is expected not to change `MergeRequest.count`660 is expected not to change `MergeRequest.maximum(:updated_at)`661 behaves like with the project default branch662 behaves like a service that does nothing663 is expected not to change `MergeRequest.count`664 is expected not to change `MergeRequest.maximum(:updated_at)`665 `target` push option666 with a new branch667 adds an error to the service668 behaves like a service that does not create a merge request669 is expected not to change `MergeRequest.count`670 when coupled with the `create` push option671 behaves like a service that can create a merge request672 creates a merge request with the correct target branch673 when project has been forked674 sets the correct source and target project675 behaves like a service that can set the target of a merge request676 sets the target_branch677 with an existing branch but no open MR678 adds an error to the service679 behaves like a service that does not create a merge request680 is expected not to change `MergeRequest.count`681 when coupled with the `create` push option682 behaves like a service that can create a merge request683 creates a merge request with the correct target branch684 when project has been forked685 sets the correct source and target project686 behaves like a service that can set the target of a merge request687 sets the target_branch688 with an existing branch that has a merge request open689 behaves like a service that does not create a merge request690 is expected not to change `MergeRequest.count`691 behaves like a service that can set the target of a merge request692 sets the target_branch693 behaves like with a deleted branch694 behaves like a service that does nothing695 is expected not to change `MergeRequest.count`696 is expected not to change `MergeRequest.maximum(:updated_at)`697 behaves like with the project default branch698 behaves like a service that does nothing699 is expected not to change `MergeRequest.count`700 is expected not to change `MergeRequest.maximum(:updated_at)`701 `title` push option702 with a new branch703 adds an error to the service704 behaves like a service that does not create a merge request705 is expected not to change `MergeRequest.count`706 when coupled with the `create` push option707 behaves like a service that can create a merge request708 creates a merge request with the correct target branch709 when project has been forked710 sets the correct source and target project711 behaves like a service that can set the title of a merge request712 sets the title713 with an existing branch but no open MR714 adds an error to the service715 behaves like a service that does not create a merge request716 is expected not to change `MergeRequest.count`717 when coupled with the `create` push option718 behaves like a service that can create a merge request719 creates a merge request with the correct target branch720 when project has been forked721 sets the correct source and target project722 behaves like a service that can set the title of a merge request723 sets the title724 with an existing branch that has a merge request open725 behaves like a service that does not create a merge request726 is expected not to change `MergeRequest.count`727 behaves like a service that can set the title of a merge request728 sets the title729 behaves like with a deleted branch730 behaves like a service that does nothing731 is expected not to change `MergeRequest.count`732 is expected not to change `MergeRequest.maximum(:updated_at)`733 behaves like with the project default branch734 behaves like a service that does nothing735 is expected not to change `MergeRequest.count`736 is expected not to change `MergeRequest.maximum(:updated_at)`737 `description` push option738 with a new branch739 adds an error to the service740 behaves like a service that does not create a merge request741 is expected not to change `MergeRequest.count`742 when coupled with the `create` push option743 behaves like a service that can create a merge request744 creates a merge request with the correct target branch745 when project has been forked746 sets the correct source and target project747 behaves like a service that can set the description of a merge request748 sets the description749 with an existing branch but no open MR750 adds an error to the service751 behaves like a service that does not create a merge request752 is expected not to change `MergeRequest.count`753 when coupled with the `create` push option754 behaves like a service that can create a merge request755 creates a merge request with the correct target branch756 when project has been forked757 sets the correct source and target project758 behaves like a service that can set the description of a merge request759 sets the description760 with an existing branch that has a merge request open761 behaves like a service that does not create a merge request762 is expected not to change `MergeRequest.count`763 behaves like a service that can set the description of a merge request764 sets the description765 with a multiline description766 behaves like a service that does not create a merge request767 is expected not to change `MergeRequest.count`768 behaves like a service that can set the multiline description of a merge request769 sets the multiline description770 behaves like with a deleted branch771 behaves like a service that does nothing772 is expected not to change `MergeRequest.count`773 is expected not to change `MergeRequest.maximum(:updated_at)`774 behaves like with the project default branch775 behaves like a service that does nothing776 is expected not to change `MergeRequest.count`777 is expected not to change `MergeRequest.maximum(:updated_at)`778 `draft` push option779 with a new branch780 adds an error to the service781 behaves like a service that does not create a merge request782 is expected not to change `MergeRequest.count`783 when coupled with the `create` push option784 behaves like a service that can create a merge request785 creates a merge request with the correct target branch786 when project has been forked787 sets the correct source and target project788 behaves like a service that can set the draft of a merge request789 sets the draft790 with an existing branch but no open MR791 adds an error to the service792 behaves like a service that does not create a merge request793 is expected not to change `MergeRequest.count`794 when coupled with the `create` push option795 behaves like a service that can create a merge request796 creates a merge request with the correct target branch797 when project has been forked798 sets the correct source and target project799 behaves like a service that can set the draft of a merge request800 sets the draft801 with an existing branch that has a merge request open802 behaves like a service that does not create a merge request803 is expected not to change `MergeRequest.count`804 behaves like a service that can set the draft of a merge request805 sets the draft806 draft title provided while `draft` push option is set to false807 behaves like a service that can create a merge request808 creates a merge request with the correct target branch809 when project has been forked810 sets the correct source and target project811 behaves like a service that can set the draft of a merge request812 sets the draft813 behaves like with a deleted branch814 behaves like a service that does nothing815 is expected not to change `MergeRequest.count`816 is expected not to change `MergeRequest.maximum(:updated_at)`817 behaves like with the project default branch818 behaves like a service that does nothing819 is expected not to change `MergeRequest.count`820 is expected not to change `MergeRequest.maximum(:updated_at)`821 `label` push option822 with a new branch823 adds an error to the service824 behaves like a service that does not create a merge request825 is expected not to change `MergeRequest.count`826 when coupled with the `create` push option827 behaves like a service that can create a merge request828 creates a merge request with the correct target branch829 when project has been forked830 sets the correct source and target project831 behaves like a service that can change labels of a merge request832 changes label count833 with an existing branch but no open MR834 adds an error to the service835 behaves like a service that does not create a merge request836 is expected not to change `MergeRequest.count`837 when coupled with the `create` push option838 behaves like a service that can create a merge request839 creates a merge request with the correct target branch840 when project has been forked841 sets the correct source and target project842 behaves like a service that can change labels of a merge request843 changes label count844 with an existing branch that has a merge request open845 behaves like a service that does not create a merge request846 is expected not to change `MergeRequest.count`847 behaves like a service that can change labels of a merge request848 changes label count849 behaves like with a deleted branch850 behaves like a service that does nothing851 is expected not to change `MergeRequest.count`852 is expected not to change `MergeRequest.maximum(:updated_at)`853 behaves like with the project default branch854 behaves like a service that does nothing855 is expected not to change `MergeRequest.count`856 is expected not to change `MergeRequest.maximum(:updated_at)`857 `unlabel` push option858 with a new branch859 adds an error to the service860 behaves like a service that does not create a merge request861 is expected not to change `MergeRequest.count`862 when coupled with the `create` push option863 behaves like a service that can create a merge request864 creates a merge request with the correct target branch865 when project has been forked866 sets the correct source and target project867 behaves like a service that can change labels of a merge request868 changes label count869 with an existing branch but no open MR870 adds an error to the service871 behaves like a service that does not create a merge request872 is expected not to change `MergeRequest.count`873 when coupled with the `create` push option874 behaves like a service that can create a merge request875 creates a merge request with the correct target branch876 when project has been forked877 sets the correct source and target project878 behaves like a service that can change labels of a merge request879 changes label count880 with an existing branch that has a merge request open881 behaves like a service that does not create a merge request882 is expected not to change `MergeRequest.count`883 behaves like a service that can change labels of a merge request884 changes label count885 behaves like with a deleted branch886 behaves like a service that does nothing887 is expected not to change `MergeRequest.count`888 is expected not to change `MergeRequest.maximum(:updated_at)`889 behaves like with the project default branch890 behaves like a service that does nothing891 is expected not to change `MergeRequest.count`892 is expected not to change `MergeRequest.maximum(:updated_at)`893 `milestone` push option894 with a valid milestone895 with a new branch896 adds an error to the service897 behaves like a service that does not create a merge request898 is expected not to change `MergeRequest.count`899 when coupled with the `create` push option900 behaves like a service that can create a merge request901 creates a merge request with the correct target branch902 when project has been forked903 sets the correct source and target project904 behaves like a service that can set the milestone of a merge request905 sets the milestone906 with an existing branch but no open MR907 adds an error to the service908 behaves like a service that does not create a merge request909 is expected not to change `MergeRequest.count`910 when coupled with the `create` push option911 behaves like a service that can create a merge request912 creates a merge request with the correct target branch913 when project has been forked914 sets the correct source and target project915 behaves like a service that can set the milestone of a merge request916 sets the milestone917 with an existing branch that has a merge request open918 behaves like a service that does not create a merge request919 is expected not to change `MergeRequest.count`920 behaves like a service that can set the milestone of a merge request921 sets the milestone922 behaves like with a deleted branch923 behaves like a service that does nothing924 is expected not to change `MergeRequest.count`925 is expected not to change `MergeRequest.maximum(:updated_at)`926 behaves like with the project default branch927 behaves like a service that does nothing928 is expected not to change `MergeRequest.count`929 is expected not to change `MergeRequest.maximum(:updated_at)`930 with invalid milestone931 behaves like a service that can set the milestone of a merge request932 sets the milestone933 with an ancestor milestone934 with immediate parent milestone935 behaves like a service that can create a merge request936 creates a merge request with the correct target branch937 when project has been forked938 sets the correct source and target project939 behaves like a service that can set the milestone of a merge request940 sets the milestone941 with multi-level ancestor milestone942 behaves like a service that can create a merge request943 creates a merge request with the correct target branch944 when project has been forked945 sets the correct source and target project946 behaves like a service that can set the milestone of a merge request947 sets the milestone948 `assign` push option949 behaves like with a new branch950 adds an error to the service951 behaves like a service that does not create a merge request952 is expected not to change `MergeRequest.count`953 behaves like when coupled with the `create` push option954 behaves like a service that can create a merge request955 creates a merge request with the correct target branch956 when project has been forked957 sets the correct source and target project958 behaves like a service that can change assignees of a merge request959 changes assignee count960 behaves like with an existing branch but no open MR961 adds an error to the service962 behaves like a service that does not create a merge request963 is expected not to change `MergeRequest.count`964 behaves like when coupled with the `create` push option965 behaves like a service that can create a merge request966 creates a merge request with the correct target branch967 when project has been forked968 sets the correct source and target project969 behaves like a service that can change assignees of a merge request970 changes assignee count971 behaves like with an existing branch that has a merge request open in foss972 behaves like a service that does not create a merge request973 is expected not to change `MergeRequest.count`974 behaves like a service that can change assignees of a merge request975 changes assignee count976 behaves like with a deleted branch977 behaves like a service that does nothing978 is expected not to change `MergeRequest.count`979 is expected not to change `MergeRequest.maximum(:updated_at)`980 behaves like with the project default branch981 behaves like a service that does nothing982 is expected not to change `MergeRequest.count`983 is expected not to change `MergeRequest.maximum(:updated_at)`984 when passing in usernames985 behaves like with an existing branch that has a merge request open in foss986 behaves like a service that does not create a merge request987 is expected not to change `MergeRequest.count`988 behaves like a service that can change assignees of a merge request989 changes assignee count990 `unassign` push option991 behaves like with a new branch992 adds an error to the service993 behaves like a service that does not create a merge request994 is expected not to change `MergeRequest.count`995 behaves like when coupled with the `create` push option996 behaves like a service that can create a merge request997 creates a merge request with the correct target branch998 when project has been forked999 sets the correct source and target project1000 behaves like a service that can change assignees of a merge request1001 changes assignee count1002 behaves like with an existing branch but no open MR1003 adds an error to the service1004 behaves like a service that does not create a merge request1005 is expected not to change `MergeRequest.count`1006 behaves like when coupled with the `create` push option1007 behaves like a service that can create a merge request1008 creates a merge request with the correct target branch1009 when project has been forked1010 sets the correct source and target project1011 behaves like a service that can change assignees of a merge request1012 changes assignee count1013 behaves like with an existing branch that has a merge request open in foss1014 behaves like a service that does not create a merge request1015 is expected not to change `MergeRequest.count`1016 behaves like a service that can change assignees of a merge request1017 changes assignee count1018 behaves like with a deleted branch1019 behaves like a service that does nothing1020 is expected not to change `MergeRequest.count`1021 is expected not to change `MergeRequest.maximum(:updated_at)`1022 behaves like with the project default branch1023 behaves like a service that does nothing1024 is expected not to change `MergeRequest.count`1025 is expected not to change `MergeRequest.maximum(:updated_at)`1026 when passing in usernames1027 behaves like with an existing branch that has a merge request open in foss1028 behaves like a service that does not create a merge request1029 is expected not to change `MergeRequest.count`1030 behaves like a service that can change assignees of a merge request1031 changes assignee count1032 multiple pushed branches1033 creates a merge request per branch1034 when there are too many pushed branches1035 records an error1036 no push options1037 behaves like a service that does nothing1038 is expected not to change `MergeRequest.count`1039 is expected not to change `MergeRequest.maximum(:updated_at)`1040 no user1041 records an error1042 unauthorized user1043 records an error1044 handling unexpected exceptions1045 records an error1046 writes to Gitlab::AppLogger1047 when target is not a valid branch name1048 records an error1049 when user does not have access to target project1050 records an error1051 when MRs are not enabled1052 records an error1053 when MR has ActiveRecord errors1054 adds the error to its errors property1055Noteable1056 #discussions1057 includes discussions for diff notes, commit diff notes, commit notes, and regular notes1058 #commenters1059 when noteable is an issue1060 behaves like commenters1061 does not automatically include the noteable author1062 with no user1063 contains a distinct list of non-internal note authors1064 with non project member1065 contains a distinct list of non-internal note authors1066 does not include a commenter from another noteable1067 with reporter1068 contains a distinct list of non-internal note authors1069 with noteable author1070 contains a distinct list of non-internal note authors1071 when noteable is a merge request1072 behaves like commenters1073 does not automatically include the noteable author1074 with no user1075 contains a distinct list of non-internal note authors1076 with non project member1077 contains a distinct list of non-internal note authors1078 does not include a commenter from another noteable1079 #discussion_ids_relation1080 returns ordered discussion_ids1081 #discussion_root_note_ids1082 returns ordered discussion_ids and synthetic note ids1083 filters by comments only1084 filters by system notes only1085 #grouped_diff_discussions1086 includes active discussions1087 does not include outdated discussions1088 groups the discussions by line code1089 discussion status1090 #discussions_resolvable?1091 when all discussions are unresolvable1092 returns false1093 when some discussions are unresolvable and some discussions are resolvable1094 returns true1095 when all discussions are resolvable1096 returns true1097 #discussions_resolved?1098 when discussions are not resolvable1099 returns false1100 when discussions are resolvable1101 when all resolvable discussions are resolved1102 returns true1103 when some resolvable discussions are not resolved1104 returns false1105 #discussions_to_be_resolved1106 includes only discussions that need to be resolved1107 #discussions_can_be_resolved_by?1108 all discussions can be resolved by the user1109 allows a user to resolve the discussions1110 one discussion cannot be resolved by the user1111 allows a user to resolve the discussions1112 .replyable_types1113 exposes the replyable types1114 .resolvable_types1115 exposes the resolvable types1116 .email_creatable_types1117 exposes the email creatable types1118 #capped_notes_count1119 notes number < 101120 the number of notes is returned1121 notes number > 101122 10 is returned1123 #has_any_diff_note_positions?1124 returns true when it has diff note positions1125 returns false when it has notes but no diff note positions1126 returns false when it has no notes1127 #creatable_note_email_address1128 incoming email enabled1129 returns the address to create a note1130 returns nil for unsupported types1131 incoming email disabled1132 returns nil1133 #supports_resolvable_notes1134 when noteable is an abuse report1135 returns true1136 #supports_replying_to_individual_notes1137 when noteable is an abuse report1138 returns true1139Projects::OverwriteProjectService1140 #execute1141 when project does not have any relation1142 behaves like overwrite actions1143 moves deploy keys1144 moves notification settings1145 moves users stars1146 moves project group links1147 moves memberships and authorizations1148 schedules original project for deletion1149 renames the project1150 renames source project to temp name1151 moves lfs objects relationships1152 is expected to eq 31153 when project rename fails1154 source rename1155 moves relations back to source project and raises an exception1156 new project rename1157 moves relations back, renames source project back to original name and raises1158 when project with elements1159 behaves like overwrite actions1160 moves deploy keys1161 moves notification settings1162 moves users stars1163 moves project group links1164 moves memberships and authorizations1165 schedules original project for deletion1166 renames the project1167 renames source project to temp name1168 moves lfs objects relationships1169 is expected to eq 31170 when project rename fails1171 source rename1172 moves relations back to source project and raises an exception1173 new project rename1174 moves relations back, renames source project back to original name and raises1175 forks1176 when moving a root forked project1177 moves the descendant forks1178 updates the fork network1179 when moving a intermediate forked project1180 moves the descendant forks1181 moves the ascendant fork1182 does not update fork network1183 if an exception is raised1184 rollbacks changes1185 removes fork network member1186Banzai::Filter::References::ExternalIssueReferenceFilter1187 redmine project1188 with a hash prefix1189 behaves like external issue tracker1190 requires project context1191 ignores valid references contained inside 'pre' element1192 ignores valid references contained inside 'code' element1193 ignores valid references contained inside 'a' element1194 ignores valid references contained inside 'style' element1195 ignores valid references when using default tracker1196 links to a valid reference1197 links to the external tracker1198 links with adjacent text1199 includes a title attribute1200 escapes the title attribute1201 includes default classes1202 supports an :only_path context1203 has an empty link if issue_url is invalid1204 has an empty link if issue_path is invalid1205 behaves like a reference containing an element node1206 does not escape inner html1207 with RequestStore enabled1208 queries the collection on the first call1209 with a single-letter prefix1210 behaves like external issue tracker1211 requires project context1212 ignores valid references contained inside 'pre' element1213 ignores valid references contained inside 'code' element1214 ignores valid references contained inside 'a' element1215 ignores valid references contained inside 'style' element1216 ignores valid references when using default tracker1217 links to a valid reference1218 links to the external tracker1219 links with adjacent text1220 includes a title attribute1221 escapes the title attribute1222 includes default classes1223 supports an :only_path context1224 has an empty link if issue_url is invalid1225 has an empty link if issue_path is invalid1226 behaves like a reference containing an element node1227 does not escape inner html1228 with RequestStore enabled1229 queries the collection on the first call1230 youtrack project1231 with right markdown1232 behaves like external issue tracker1233 requires project context1234 ignores valid references contained inside 'pre' element1235 ignores valid references contained inside 'code' element1236 ignores valid references contained inside 'a' element1237 ignores valid references contained inside 'style' element1238 ignores valid references when using default tracker1239 links to a valid reference1240 links to the external tracker1241 links with adjacent text1242 includes a title attribute1243 escapes the title attribute1244 includes default classes1245 supports an :only_path context1246 has an empty link if issue_url is invalid1247 has an empty link if issue_path is invalid1248 behaves like a reference containing an element node1249 does not escape inner html1250 with RequestStore enabled1251 queries the collection on the first call1252 with underscores in the prefix1253 behaves like external issue tracker1254 requires project context1255 ignores valid references contained inside 'pre' element1256 ignores valid references contained inside 'code' element1257 ignores valid references contained inside 'a' element1258 ignores valid references contained inside 'style' element1259 ignores valid references when using default tracker1260 links to a valid reference1261 links to the external tracker1262 links with adjacent text1263 includes a title attribute1264 escapes the title attribute1265 includes default classes1266 supports an :only_path context1267 has an empty link if issue_url is invalid1268 has an empty link if issue_path is invalid1269 behaves like a reference containing an element node1270 does not escape inner html1271 with RequestStore enabled1272 queries the collection on the first call1273 with lowercase letters in the prefix1274 behaves like external issue tracker1275 requires project context1276 ignores valid references contained inside 'pre' element1277 ignores valid references contained inside 'code' element1278 ignores valid references contained inside 'a' element1279 ignores valid references contained inside 'style' element1280 ignores valid references when using default tracker1281 links to a valid reference1282 links to the external tracker1283 links with adjacent text1284 includes a title attribute1285 escapes the title attribute1286 includes default classes1287 supports an :only_path context1288 has an empty link if issue_url is invalid1289 has an empty link if issue_path is invalid1290 behaves like a reference containing an element node1291 does not escape inner html1292 with RequestStore enabled1293 queries the collection on the first call1294 with a single-letter prefix1295 behaves like external issue tracker1296 requires project context1297 ignores valid references contained inside 'pre' element1298 ignores valid references contained inside 'code' element1299 ignores valid references contained inside 'a' element1300 ignores valid references contained inside 'style' element1301 ignores valid references when using default tracker1302 links to a valid reference1303 links to the external tracker1304 links with adjacent text1305 includes a title attribute1306 escapes the title attribute1307 includes default classes1308 supports an :only_path context1309 has an empty link if issue_url is invalid1310 has an empty link if issue_path is invalid1311 behaves like a reference containing an element node1312 does not escape inner html1313 with RequestStore enabled1314 queries the collection on the first call1315 with a lowercase prefix1316 behaves like external issue tracker1317 requires project context1318 ignores valid references contained inside 'pre' element1319 ignores valid references contained inside 'code' element1320 ignores valid references contained inside 'a' element1321 ignores valid references contained inside 'style' element1322 ignores valid references when using default tracker1323 links to a valid reference1324 links to the external tracker1325 links with adjacent text1326 includes a title attribute1327 escapes the title attribute1328 includes default classes1329 supports an :only_path context1330 has an empty link if issue_url is invalid1331 has an empty link if issue_path is invalid1332 behaves like a reference containing an element node1333 does not escape inner html1334 with RequestStore enabled1335 queries the collection on the first call1336 clickup project1337 with right markdown1338 behaves like external issue tracker1339 requires project context1340 ignores valid references contained inside 'pre' element1341 ignores valid references contained inside 'code' element1342 ignores valid references contained inside 'a' element1343 ignores valid references contained inside 'style' element1344 ignores valid references when using default tracker1345 links to a valid reference1346 links to the external tracker1347 links with adjacent text1348 includes a title attribute1349 escapes the title attribute1350 includes default classes1351 supports an :only_path context1352 has an empty link if issue_url is invalid1353 has an empty link if issue_path is invalid1354 behaves like a reference containing an element node1355 does not escape inner html1356 with RequestStore enabled1357 queries the collection on the first call1358 with underscores in the prefix1359 behaves like external issue tracker1360 requires project context1361 ignores valid references contained inside 'pre' element1362 ignores valid references contained inside 'code' element1363 ignores valid references contained inside 'a' element1364 ignores valid references contained inside 'style' element1365 ignores valid references when using default tracker1366 links to a valid reference1367 links to the external tracker1368 links with adjacent text1369 includes a title attribute1370 escapes the title attribute1371 includes default classes1372 supports an :only_path context1373 has an empty link if issue_url is invalid1374 has an empty link if issue_path is invalid1375 behaves like a reference containing an element node1376 does not escape inner html1377 with RequestStore enabled1378 queries the collection on the first call1379 with a hash prefix and alphanumeric1380 behaves like external issue tracker1381 requires project context1382 ignores valid references contained inside 'pre' element1383 ignores valid references contained inside 'code' element1384 ignores valid references contained inside 'a' element1385 ignores valid references contained inside 'style' element1386 ignores valid references when using default tracker1387 links to a valid reference1388 links to the external tracker1389 links with adjacent text1390 includes a title attribute1391 escapes the title attribute1392 includes default classes1393 supports an :only_path context1394 has an empty link if issue_url is invalid1395 has an empty link if issue_path is invalid1396 behaves like a reference containing an element node1397 does not escape inner html1398 with RequestStore enabled1399 queries the collection on the first call1400 with prefix and alphanumeric1401 behaves like external issue tracker1402 requires project context1403 ignores valid references contained inside 'pre' element1404 ignores valid references contained inside 'code' element1405 ignores valid references contained inside 'a' element1406 ignores valid references contained inside 'style' element1407 ignores valid references when using default tracker1408 links to a valid reference1409 links to the external tracker1410 links with adjacent text1411 includes a title attribute1412 escapes the title attribute1413 includes default classes1414 supports an :only_path context1415 has an empty link if issue_url is invalid1416 has an empty link if issue_path is invalid1417 behaves like a reference containing an element node1418 does not escape inner html1419 with RequestStore enabled1420 queries the collection on the first call1421 jira project1422 with right markdown1423 behaves like external issue tracker1424 requires project context1425 ignores valid references contained inside 'pre' element1426 ignores valid references contained inside 'code' element1427 ignores valid references contained inside 'a' element1428 ignores valid references contained inside 'style' element1429 ignores valid references when using default tracker1430 links to a valid reference1431 links to the external tracker1432 links with adjacent text1433 includes a title attribute1434 escapes the title attribute1435 includes default classes1436 supports an :only_path context1437 has an empty link if issue_url is invalid1438 has an empty link if issue_path is invalid1439 behaves like a reference containing an element node1440 does not escape inner html1441 with RequestStore enabled1442 queries the collection on the first call1443 with a single-letter prefix1444 ignores reference1445 with wrong markdown1446 ignores reference1447 with a custom regex1448 with right markdown1449 behaves like external issue tracker1450 requires project context1451 ignores valid references contained inside 'pre' element1452 ignores valid references contained inside 'code' element1453 ignores valid references contained inside 'a' element1454 ignores valid references contained inside 'style' element1455 ignores valid references when using default tracker1456 links to a valid reference1457 links to the external tracker1458 links with adjacent text1459 includes a title attribute1460 escapes the title attribute1461 includes default classes1462 supports an :only_path context1463 has an empty link if issue_url is invalid1464 has an empty link if issue_path is invalid1465 behaves like a reference containing an element node1466 does not escape inner html1467 with RequestStore enabled1468 queries the collection on the first call1469 with a single-letter prefix1470 ignores reference1471 with wrong markdown1472 ignores reference1473 ewm project1474 rtcwi keyword1475 behaves like external issue tracker1476 requires project context1477 ignores valid references contained inside 'pre' element1478 ignores valid references contained inside 'code' element1479 ignores valid references contained inside 'a' element1480 ignores valid references contained inside 'style' element1481 ignores valid references when using default tracker1482 links to a valid reference1483 links to the external tracker1484 links with adjacent text1485 includes a title attribute1486 escapes the title attribute1487 includes default classes1488 supports an :only_path context1489 has an empty link if issue_url is invalid1490 has an empty link if issue_path is invalid1491 behaves like a reference containing an element node1492 does not escape inner html1493 with RequestStore enabled1494 queries the collection on the first call1495 workitem keyword1496 behaves like external issue tracker1497 requires project context1498 ignores valid references contained inside 'pre' element1499 ignores valid references contained inside 'code' element1500 ignores valid references contained inside 'a' element1501 ignores valid references contained inside 'style' element1502 ignores valid references when using default tracker1503 links to a valid reference1504 links to the external tracker1505 links with adjacent text1506 includes a title attribute1507 escapes the title attribute1508 includes default classes1509 supports an :only_path context1510 has an empty link if issue_url is invalid1511 has an empty link if issue_path is invalid1512 behaves like a reference containing an element node1513 does not escape inner html1514 with RequestStore enabled1515 queries the collection on the first call1516 defect keyword1517 behaves like external issue tracker1518 requires project context1519 ignores valid references contained inside 'pre' element1520 ignores valid references contained inside 'code' element1521 ignores valid references contained inside 'a' element1522 ignores valid references contained inside 'style' element1523 ignores valid references when using default tracker1524 links to a valid reference1525 links to the external tracker1526 links with adjacent text1527 includes a title attribute1528 escapes the title attribute1529 includes default classes1530 supports an :only_path context1531 has an empty link if issue_url is invalid1532 has an empty link if issue_path is invalid1533 behaves like a reference containing an element node1534 does not escape inner html1535 with RequestStore enabled1536 queries the collection on the first call1537 task keyword1538 behaves like external issue tracker1539 requires project context1540 ignores valid references contained inside 'pre' element1541 ignores valid references contained inside 'code' element1542 ignores valid references contained inside 'a' element1543 ignores valid references contained inside 'style' element1544 ignores valid references when using default tracker1545 links to a valid reference1546 links to the external tracker1547 links with adjacent text1548 includes a title attribute1549 escapes the title attribute1550 includes default classes1551 supports an :only_path context1552 has an empty link if issue_url is invalid1553 has an empty link if issue_path is invalid1554 behaves like a reference containing an element node1555 does not escape inner html1556 with RequestStore enabled1557 queries the collection on the first call1558 bug keyword1559 behaves like external issue tracker1560 requires project context1561 ignores valid references contained inside 'pre' element1562 ignores valid references contained inside 'code' element1563 ignores valid references contained inside 'a' element1564 ignores valid references contained inside 'style' element1565 ignores valid references when using default tracker1566 links to a valid reference1567 links to the external tracker1568 links with adjacent text1569 includes a title attribute1570 escapes the title attribute1571 includes default classes1572 supports an :only_path context1573 has an empty link if issue_url is invalid1574 has an empty link if issue_path is invalid1575 behaves like a reference containing an element node1576 does not escape inner html1577 with RequestStore enabled1578 queries the collection on the first call1579 checking N+11580 does not have N+1 per multiple references per project1581WorkItems::WorkItemsFinder1582 behaves like issues or work items finder1583 #execute1584 scope: all1585 returns all items1586 finds items user can access due to group1587 user does not have read permissions1588 when filtering by project id1589 returns no items1590 when there are group-level work items1591 returns no items1592 when filtering by group id1593 returns no items1594 assignee filtering1595 behaves like assignee ID filter1596 returns issuables assigned to that user1597 behaves like assignee NOT ID filter1598 returns issuables not assigned to that user1599 behaves like assignee OR filter1600 returns issuables assigned to the given users1601 when assignee_id does not exist1602 behaves like assignee NOT ID filter1603 returns issuables not assigned to that user1604 filter by username1605 behaves like assignee username filter1606 returns issuables assigned to those users1607 behaves like assignee NOT username filter1608 returns issuables not assigned to those users1609 behaves like assignee OR filter1610 returns issuables assigned to the given users1611 when assignee_username does not exist1612 behaves like assignee NOT username filter1613 returns issuables not assigned to those users1614 behaves like no assignee filter1615 returns issuables not assigned to any assignee1616 returns issuables not assigned to any assignee1617 returns issuables not assigned to any assignee1618 behaves like any assignee filter1620 returns issuables assigned to any assignee1621 returns issuables assigned to any assignee1622 returns issuables assigned to any assignee1623 filtering by release1624 when filter by none1625 returns items without releases1626 when sort by milestone1627 returns items without any releases1628 when filter by any1629 returns items with any releases1630 when sort by milestone1631 returns items without any releases1632 when filter by a release_tag1633 returns the items associated with the release tag1634 when sort by milestone1635 returns the items associated with the release tag1636 when filter by a negated release_tag1637 returns the items not associated with the release1638 when sort by milestone1639 returns the items not associated with the release1640 filtering by projects1641 when projects are passed in a list of ids1642 returns the item belonging to the projects1643 when projects are passed in a subquery1644 returns the item belonging to the projects1645 filtering by group_id1646 when include_subgroup param not set1647 returns all group items1648 when projects outside the group are passed1649 returns no items1650 when projects of the group are passed1651 returns the item within the group and projects1652 when projects of the group are passed as a subquery1653 returns the item within the group and projects1654 when release_tag is passed as a parameter1655 ignores the release_tag parameter1656 when include_subgroup param is true1657 returns all group and subgroup items1658 when mixed projects are passed1659 returns the item within the group and projects1660 filtering by author1661 by author ID1662 returns items created by that user1663 using OR1664 returns items created by any of the given users1665 when feature flag is disabled1666 does not add any filter1667 filtering by NOT author ID1668 returns items not created by that user1669 filtering by nonexistent author ID and issue term using CTE for search1670 returns no results1671 filtering by milestone1672 returns items assigned to that milestone1673 filtering by not milestone1674 returns items not assigned to that milestone1675 with multiple milestones1676 returns items not assigned to both milestones1677 filtering by group milestone1678 returns items assigned to that group milestone1679 using NOT1680 returns items not assigned to that group milestone1681 filtering by no milestone1682 returns items with no milestone1683 returns items with no milestone (deprecated)1684 filtering by any milestone1685 returns items with any assigned milestone1686 returns items with any assigned milestone (deprecated)1687 filtering by upcoming milestone1688 returns items in the upcoming milestone for each project or group1689 using NOT1690 returns items not in upcoming milestones for each project or group, but must have a due date1691 filtering by started milestone1692 returns items in the started milestones for each project1693 using NOT1694 returns items not in the started milestones for each project1695 filtering by label1696 returns items with that label1697 using NOT1698 returns items that do not have that label1699 shadowing the same outside param1700 does not take precedence over labels outside NOT1701 further filtering outside params1702 further filters on the returned resultset1703 filtering by multiple labels1704 returns the unique items with all those labels1705 using NOT1706 returns items that do not have any of the labels provided1707 using OR1708 returns items that have at least one of the given labels1709 when feature flag is disabled1710 does not add any filter1711 filtering by a label that includes any or none in the title1712 returns the unique items with all those labels1713 using NOT1714 returns items that do not have ANY ONE of the labels provided1715 filtering by no label1716 returns items with no labels1717 filtering by any label1718 returns items that have one or more label1719 when the same label exists on project and group levels1720 finds both item records1721 filtering by item term1722 with latin search term1723 returns matching items1724 with non-latin search term1725 returns matching items1726 filtering by item term in title1727 returns items with title match for search term1728 filtering by items iids1729 returns items where iids match1730 using NOT1731 returns items with no iids match1732 filtering by state1733 with opened1734 returns only opened items1735 with closed1736 returns only closed items1737 with all1738 returns all items1739 with invalid state1740 returns all items1741 filtering by created_at1742 through created_after1743 returns items created on or after the given date1744 through created_before1745 returns items created on or before the given date1746 through created_after and created_before1747 returns items created between the given dates1748 filtering by updated_at1749 through updated_after1750 returns items updated on or after the given date1751 through updated_before1752 returns items updated on or before the given date1753 through updated_after and updated_before1754 returns items updated between the given dates1755 filtering by closed_at1756 through closed_after1757 returns items closed on or after the given date1758 through closed_before1759 returns items closed on or before the given date1760 through closed_after and closed_before1761 returns items closed between the given dates1762 filtering by reaction name1763 user searches by no reaction1764 returns items that the user did not react to1765 user searches by any reaction1766 returns items that the user reacted to1767 user searches by "thumbsup" reaction1768 returns items that the user thumbsup to1769 using NOT1770 returns items that the user did not thumbsup to1771 user2 searches by "thumbsup" reaction1772 returns items that the user2 thumbsup to1773 using NOT1774 returns items that the user2 thumbsup to1775 user searches by "thumbsdown" reaction1776 returns items that the user thumbsdown to1777 using NOT1778 returns items that the user thumbsdown to1779 filtering by confidential1780 no filtering1781 returns all items1782 user filters confidential items1783 returns only confidential items1784 user filters only public items1785 returns only public items1786 filtering by item type1787 no type given1788 returns all items1789 incident type1790 returns incident items1791 objective type1792 returns incident items1793 key_result type1794 returns incident items1795 item type1796 returns all items with type issue1797 multiple params1798 returns all items1799 without array1800 returns incident items1801 invalid params1802 returns no items1803 crm filtering1804 filtering by crm contact1805 when the user can read crm contacts1806 returns for that contact1807 when the user can not read crm contacts1808 does not filter by contact1809 filtering by crm organization1810 when the user can read crm organization1811 returns for that crm organization1812 when the user can not read crm organization1813 does not filter by crm organization1814 when the user is unauthorized1815 returns no results1816 when the user can see some, but not all, items1817 returns only items they can see1818 personal scope1819 returns item assigned to the user1820 filtering by project1821 returns items assigned to the user in that project1822 when project restricts items1823 doesn't return team-only items to non team members1824 doesn't return items if feature disabled1825 external authorization1826 behaves like a finder with external authorization service1827 finds the subject1828 with an external authorization service1829 does not include the subject when no project was given1830 includes the subject when a project id was given1831 filtering by due date1832 with param set to no due date1833 returns items with no due date1834 with param set to any due date1835 returns items with any due date1836 with param set to due today1837 returns items due today1838 with param set to due tomorrow1839 returns items due today1840 with param set to overdue1841 returns overdue items1842 with param set to next month and previous two weeks1843 returns items due in the previous two weeks and next month1844 with invalid param1845 returns no items1846 #row_count1847 returns -1 if the query times out1848 when admin mode is enabled1849 returns the number of rows for the default state1850 returns the number of rows for a given state1851 when admin mode is disabled1852 returns no rows1853 #with_confidentiality_access_check1854EscapeUtils.escape_url is deprecated. Use CGI.escape instead, performance is similar1855EscapeUtils.escape_url is deprecated. Use CGI.escape instead, performance is similar1856 when no project filter is given1857 for an anonymous user1858 behaves like returns public, does not return hidden or confidential1859 returns only public items1860 for a user without project membership1861 behaves like returns public, does not return hidden or confidential1862 returns only public items1863 for a guest user1864 behaves like returns public, does not return hidden or confidential1865 returns only public items1866 for a project member with access to view confidential items1867 behaves like returns public and confidential, does not return hidden1868 returns only public and confidential items1869 for an admin1870 when admin mode is enabled1871 behaves like returns public, confidential, and hidden1872 returns all items1873 when admin mode is disabled1874 behaves like returns public, does not return hidden or confidential1875 returns only public items1876 when searching within a specific project1877 for an anonymous user1878 does not filter by confidentiality1879 behaves like returns public, does not return hidden or confidential1880 returns only public items1881 for a user without project membership1882 filters by confidentiality1883 behaves like returns public, does not return hidden or confidential1884 returns only public items1885 for a guest user1886 filters by confidentiality1887 behaves like returns public, does not return hidden or confidential1888 returns only public items1889 for a project member with access to view confidential items1890 does not filter by confidentiality1891 behaves like returns public and confidential, does not return hidden1892 returns only public and confidential items1893 for an admin1894 when admin mode is enabled1895 does not filter by confidentiality1896 behaves like returns public, confidential, and hidden1897 returns all items1898 when admin mode is disabled1899 filters by confidentiality1900 behaves like returns public, does not return hidden or confidential1901 returns only public items1902 #use_cte_for_search?1903 when there is no search param1904 returns false1905 when the force_cte param is falsey1906 returns false1907 when a non-simple sort is given1908 returns false1909 when all conditions are met1910 uses group search optimization1911 returns true1912 uses project search optimization1913 returns true1914 with simple sort1915 returns true1916 with simple sort as a symbol1917 returns true1918 #parent_param=1919 klass: :Project, param: :project_id1920 sets the params1921 klass: :Group, param: :group_id1922 sets the params1923 unexpected parent1924 raises an error1925Gitlab::Ci::YamlProcessor1926 #builds1927 attributes list1928 returns valid build attributes1929 with job rules1930 returns valid build attributes1931 coverage entry1932 code coverage regexp1933 includes coverage regexp in build attributes1934 tags entry with default values1935 applies default values1936 interruptible entry1937 returns interruptible when overridden for job1938 interruptible job1939 is expected to be truthy1940 interruptible job with default value1941 is expected not to have key :interruptible1942 uninterruptible job1943 is expected to be falsy1944 retry entry1945 when retry count is specified1946 includes retry count in build options attribute1947 when retry count is not specified1948 does not persist retry count in the database1949 when retry count is specified by default1950 does use the default value1951 when retry count default value is overridden1952 does use the job value1953 allow failure entry1954 when job is a manual action1955 when allow_failure is defined1956 is not allowed to fail1957 when allow_failure is not defined1958 is allowed to fail1959 when allow_failure has exit_codes1960 is not allowed to fail1961 saves allow_failure_criteria into options1962 when job is not a manual action1963 when allow_failure is defined1964 is not allowed to fail1965 when allow_failure is not defined1966 is not allowed to fail1967 when allow_failure is dynamically specified1968 is not allowed to fail1969 saves allow_failure_criteria into options1970 delayed job entry1971 when delayed is defined1972 has the attributes1973 resource group1974 when resource group is defined1975 has the attributes1976 bridge job1977 has the attributes1978 with forward1979 has the attributes1980 #stages_attributes1981 returns stages seed attributes1982 workflow attributes1983 with disallowed workflow:variables1984 behaves like returns errors1985 adds a message when an error is encountered1986 with rules and variables1987 parses the workflow:rules configuration1988 parses the root:variables as #root_variables1989 with rules and no variables1990 parses the workflow:rules configuration1991 parses the root:variables as #root_variables1992 with variables and no rules1993 parses the workflow:rules configuration1994 parses the root:variables as #root_variables1995 with no rules and no variables1996 parses the workflow:rules configuration1997 parses the root:variables as #root_variables1998 with name1999 parses the workflow:name as workflow_name2000 with no name2001 parses the workflow:name2002 #warnings2003 when a warning is raised in a given entry2004 is propagated all the way up to the processor2005 when a warning is raised together with errors2006 is propagated all the way up into the raised exception2007 behaves like returns errors2008 adds a message when an error is encountered2009 when error is raised before composing the config2010 has empty warnings2011 behaves like returns errors2012 adds a message when an error is encountered2013 when error is raised after composing the config with warnings2014 when stage does not exist2015 behaves like has warnings and expected error2016 returns errors and warnings2017 job dependency does not exist2018 behaves like has warnings and expected error2019 returns errors and warnings2020 job dependency defined in later stage2021 behaves like has warnings and expected error2022 returns errors and warnings2023 #validate_job_needs!2024 when all validations pass2025 returns a valid response2026 needs as array2027 single need in following stage2028 behaves like returns errors2029 adds a message when an error is encountered2030 multiple needs in the following stage2031 behaves like returns errors2032 adds a message when an error is encountered2033 single need in following state - hyphen need2034 behaves like returns errors2035 adds a message when an error is encountered2036 when there are duplicate needs (string and hash)2037 behaves like returns errors2038 adds a message when an error is encountered2039 rule needs as hash2040 single hash need in following stage2041 behaves like returns errors2042 adds a message when an error is encountered2043 job rule need does not exist2044 behaves like has warnings and expected error2045 returns errors and warnings2046 only / except policies validations2047 when `only` has an invalid value2048 when it is integer2049 behaves like returns errors2050 adds a message when an error is encountered2051 when it is an array of integers2052 behaves like returns errors2053 adds a message when an error is encountered2054 when it is invalid regex2055 behaves like returns errors2056 adds a message when an error is encountered2057 when `except` has an invalid value2058 when it is integer2059 behaves like returns errors2060 adds a message when an error is encountered2061 when it is an array of integers2062 behaves like returns errors2063 adds a message when an error is encountered2064 when it is invalid regex2065 behaves like returns errors2066 adds a message when an error is encountered2067 Scripts handling2068 before_script2069 in global context2070 inherit: nil, result: ["global script"]2071 is expected to eq ["global script"]2072 inherit: {:default=>false}, result: nil2073 is expected to eq nil2074 inherit: {:default=>true}, result: ["global script"]2075 is expected to eq ["global script"]2076 inherit: {:default=>["before_script"]}, result: ["global script"]2077 is expected to eq ["global script"]2078 inherit: {:default=>["image"]}, result: nil2079 is expected to eq nil2080 in default context2081 inherit: nil, result: ["global script"]2082 is expected to eq ["global script"]2083 inherit: {:default=>false}, result: nil2084 is expected to eq nil2085 inherit: {:default=>true}, result: ["global script"]2086 is expected to eq ["global script"]2087 inherit: {:default=>["before_script"]}, result: ["global script"]2088 is expected to eq ["global script"]2089 inherit: {:default=>["image"]}, result: nil2090 is expected to eq nil2091 overwritten in local context2092 return commands with scripts concatenated2093 when script is nested arrays of strings2094 return commands with scripts concatenated2095 script2096 when script is array of strings2097 return commands with scripts concatenated2098 when script is nested arrays of strings2099 return commands with scripts concatenated2100 after_script2101 in global context2102 return after_script in options2103 in default context2104 return after_script in options2105 overwritten in local context2106 return after_script in options2107 when script is nested arrays of strings2108 return after_script in options2109 hooks2110 when it is a simple script2111 returns hooks in options2112 when it is nested arrays of strings2113 returns hooks in options2114 when receiving from the default2115 inherits hooks2116 when overriding the default2117 overrides hooks2118 Image and service handling2119 when extended docker configuration is used2120 returns image and service when defined2121 returns image and service when overridden for job2122 when etended docker configuration is not used2123 returns image and service when defined2124 returns image and service when overridden for job2125 when image has pull_policy2126 is expected to be valid2127 returns with image2128 when a service has pull_policy2129 is expected to be valid2130 returns with service2131 Variables2132 when global variables are defined2133 returns global variables2134 when job variables are defined2135 when syntax is correct2136 returns job variables2137 when syntax is incorrect2138 when variables defined but invalid2139 behaves like returns errors2140 adds a message when an error is encountered2141 when variables key defined but value not specified2142 returns empty array2143 when job variables are not defined2144 returns empty array2145 when variables have different type of values2146 returns job variables2147 when variables have data other than value2148 returns variables2149 when using `extends`2150 when using simple `extends`2151 correctly extends rspec job2152 when overriding `extends`2153 correctly extends jobs2154 when using recursive `extends`2155 correctly extends rspec job2156 Include2157 when validating a ci config file with no project context2158 when a single string is provided2159 behaves like returns errors2160 adds a message when an error is encountered2161 when an array is provided2162 behaves like returns errors2163 adds a message when an error is encountered2164 when an array of wrong keyed object is provided2165 behaves like returns errors2166 adds a message when an error is encountered2167 when an array of mixed typed objects is provided2168 is expected to be valid2169 when the include type is incorrect2170 behaves like returns errors2171 adds a message when an error is encountered2172 when validating a ci config file within a project2173 when the included internal file is present2174 is expected to be valid2175 adds the job from the included file2176 when the included internal file is not present2177 behaves like returns errors2178 adds a message when an error is encountered2179 when:2180 on_success creates one build and sets when:2181 on_failure creates one build and sets when:2182 always creates one build and sets when:2183 manual creates one build and sets when:2184 delayed2185 with start_in2186 creates one build and sets when:2187 without start_in2188 behaves like returns errors2189 adds a message when an error is encountered2190 Parallel2191 when job is parallelized2192 returns parallelized jobs2193 does not have the original job2194 with build matrix2195 returns the number of parallelized jobs2196 returns the parallel config2197 sets matrix variables2198 does not have the original job2199 cache2200 returns cache when defined globally2201 returns cache when defined in default context2202 returns cache key/s when defined in a job2203 returns cache files2204 returns cache files with prefix2205 overwrite cache when defined for a job and globally2206 when cache definition has unknown keys2207 behaves like returns errors2208 adds a message when an error is encountered2209 id_tokens2210 when defined on job level2211 returns defined id_tokens2212 when defined as default2213 returns inherited by default id_tokens2214 when defined as default and on job level2215 overrides default and returns defined on job level2216 Artifacts2217 returns artifacts when defined2218 returns artifacts with expire_in never keyword2219 returns artifacts for when on_success defined2220 returns artifacts for when on_failure defined2221 returns artifacts for when always defined2222 populates a build options with complete artifacts configuration2223 when artifacts syntax is wrong2224 behaves like returns errors2225 adds a message when an error is encountered2226 release2227 returns release info2228 #environment2229 when a production environment is specified2230 does return production2231 when hash is specified2232 does return production and URL2233 the url has a port as variable2234 allows a variable for the port2235 when no environment is specified2236 does return nil environment2237 is not a string2238 behaves like returns errors2239 adds a message when an error is encountered2240 is not a valid string2241 behaves like returns errors2242 adds a message when an error is encountered2243 when on_stop is specified2244 with matching job2245 does return a list of builds2246 without matching job2247 behaves like returns errors2248 adds a message when an error is encountered2249 with close job without environment2250 behaves like returns errors2251 adds a message when an error is encountered2252 with close job for different environment2253 behaves like returns errors2254 adds a message when an error is encountered2255 with close job without stop action2256 behaves like returns errors2257 adds a message when an error is encountered2258 Timeout2259 when no timeout was provided2260 does not include job_timeout2261 when an invalid timeout was provided2262 behaves like returns errors2263 adds a message when an error is encountered2264 when some valid timeout was provided2265 returns provided timeout value2266 Dependencies2267 no dependencies2268 is expected to be valid2269 dependencies to builds2270 is expected to be valid2271 dependencies to builds defined as symbols2272 is expected to be valid2273 undefined dependency2274 behaves like returns errors2275 adds a message when an error is encountered2276 dependencies to deploy2277 behaves like returns errors2278 adds a message when an error is encountered2279 when a job depends on another job that references a not-yet defined stage2280 behaves like returns errors2281 adds a message when an error is encountered2282 Job Needs2283 no needs2284 is expected to be valid2285 needs a job from the same stage2286 creates jobs with valid specifications2287 needs two builds2288 does create jobs with valid specification2289 needs two builds2290 does create jobs with valid specification2291 needs parallel job2292 does create jobs with valid specification2293 when expanded job name is too long2294 returns an error2295 when parallel job has matrix specified2296 does create jobs with valid specification2297 when expanded job name is too long2298 returns an error2299 needs dependencies artifacts2300 does create jobs with valid specification2301 when need is an undefined job2302 behaves like returns errors2303 adds a message when an error is encountered2304 when need is optional2305 is expected to be valid2306 needs to deploy2307 behaves like returns errors2308 adds a message when an error is encountered2309 duplicate needs2310 when needs are specified in an array2311 behaves like returns errors2312 adds a message when an error is encountered2313 when a job is specified multiple times2314 behaves like returns errors2315 adds a message when an error is encountered2316 when job is specified multiple times with different attributes2317 behaves like returns errors2318 adds a message when an error is encountered2319 needs and dependencies that are mismatching2320 behaves like returns errors2321 adds a message when an error is encountered2322 needs with a Hash type and dependencies with a string type that are mismatching2323 behaves like returns errors2324 adds a message when an error is encountered2325 needs with an array type and dependency with a string type2326 behaves like returns errors2327 adds a message when an error is encountered2328 needs with a string type and dependency with an array type2329 behaves like returns errors2330 adds a message when an error is encountered2331 needs with a Hash type and dependency with a string type2332 behaves like returns errors2333 adds a message when an error is encountered2334 needs with parallel:matrix2335 does create jobs with valid specification2336 with when/rules2337 is expected to be valid2338 returns all jobs regardless of their inclusion2339 used with job-level when2340 is expected to be valid2341 used with job-level when:delayed2342 behaves like returns errors2343 adds a message when an error is encountered2344 cross pipeline needs2345 when configuration is valid2346 returns a valid configuration and sets artifacts: true by default2347 when pipeline ID is hard-coded2348 returns a valid configuration and sets artifacts: true by default2349 when configuration is not valid2350 returns an error2351 Hidden jobs2352 when hidden job have a script definition2353 behaves like hidden_job_handling2354 doesn't create jobs that start with dot2355 when hidden job doesn't have a script definition2356 behaves like hidden_job_handling2357 doesn't create jobs that start with dot2358 YAML Alias/Anchor2359 when template is a job2360 behaves like job_templates_handling2361 is correctly supported for jobs2362 when template is a hidden job2363 behaves like job_templates_handling2364 is correctly supported for jobs2365 when job adds its own keys to a template definition2366 behaves like job_templates_handling2367 is correctly supported for jobs2368 with parent-child pipeline2369 when artifact and job are specified2370 is expected to be valid2371 when job is not specified while artifact is2372 behaves like returns errors2373 adds a message when an error is encountered2374 when project and file are specified2375 is expected to be valid2376 when file is not specified while project is2377 behaves like returns errors2378 adds a message when an error is encountered2379 when include is a string2380 is expected to be valid2381 Error handling2382 when YAML syntax is invalid2383 behaves like returns errors2384 adds a message when an error is encountered2385 when object is invalid2386 behaves like returns errors2387 adds a message when an error is encountered2388 returns errors if tags parameter is invalid2389 behaves like returns errors2390 adds a message when an error is encountered2391 returns errors if job before_script parameter is not an array of strings2392 behaves like returns errors2393 adds a message when an error is encountered2394 returns errors if job after_script parameter is not an array of strings2395 behaves like returns errors2396 adds a message when an error is encountered2397 returns errors if image parameter is invalid2398 behaves like returns errors2399 adds a message when an error is encountered2400 returns errors if job name is blank2401 behaves like returns errors2402 adds a message when an error is encountered2403 returns errors if job name is non-string2404 behaves like returns errors2405 adds a message when an error is encountered2406 returns errors if job image parameter is invalid2407 behaves like returns errors2408 adds a message when an error is encountered2409 returns errors if services parameter is not an array2410 behaves like returns errors2411 adds a message when an error is encountered2412 returns errors if services parameter is not an array of strings2413 behaves like returns errors2414 adds a message when an error is encountered2415 returns errors if job services parameter is not an array2416 behaves like returns errors2417 adds a message when an error is encountered2418 returns errors if job services parameter is not an array of strings2419 behaves like returns errors2420 adds a message when an error is encountered2421 returns error if job configuration is invalid2422 behaves like returns errors2423 adds a message when an error is encountered2424 returns errors if services configuration is not correct2425 behaves like returns errors2426 adds a message when an error is encountered2427 returns errors if there are no jobs defined2428 behaves like returns errors2429 adds a message when an error is encountered2430 returns errors if the job script is not defined2431 behaves like returns errors2432 adds a message when an error is encountered2433 returns errors if there are no visible jobs defined2434 behaves like returns errors2435 adds a message when an error is encountered2436 returns errors if job allow_failure parameter is not an boolean2437 behaves like returns errors2438 adds a message when an error is encountered2439 returns errors if job exit_code parameter from allow_failure is not an integer2440 behaves like returns errors2441 adds a message when an error is encountered2442 returns errors if job stage is not a string2443 behaves like returns errors2444 adds a message when an error is encountered2445 returns errors if job stage is not a pre-defined stage2446 behaves like returns errors2447 adds a message when an error is encountered2448 returns errors if job stage is not a defined stage2449 behaves like returns errors2450 adds a message when an error is encountered2451 returns errors if stages is not an array2452 behaves like returns errors2453 adds a message when an error is encountered2454 returns errors if stages is not an array of strings2455 behaves like returns errors2456 adds a message when an error is encountered2457 returns errors if variables is not a map2458 behaves like returns errors2459 adds a message when an error is encountered2460 returns errors if variables is not a map of key-value strings2461 behaves like returns errors2462 adds a message when an error is encountered2463 returns errors if job when is not on_success, on_failure or always2464 behaves like returns errors2465 adds a message when an error is encountered2466 returns errors if job artifacts:name is not an a string2467 behaves like returns errors2468 adds a message when an error is encountered2469 returns errors if job artifacts:when is not an a predefined value2470 behaves like returns errors2471 adds a message when an error is encountered2472 returns errors if job artifacts:expire_in is not an a string2473 behaves like returns errors2474 adds a message when an error is encountered2475 returns errors if job artifacts:expire_in is not an a valid duration2476 behaves like returns errors2477 adds a message when an error is encountered2478 returns errors if job artifacts:untracked is not an array of strings2479 behaves like returns errors2480 adds a message when an error is encountered2481 returns errors if job artifacts:paths is not an array of strings2482 behaves like returns errors2483 adds a message when an error is encountered2484 returns errors if cache:untracked is not an array of strings2485 behaves like returns errors2486 adds a message when an error is encountered2487 returns errors if cache:paths is not an array of strings2488 behaves like returns errors2489 adds a message when an error is encountered2490 returns errors if cache:key is not a string2491 behaves like returns errors2492 adds a message when an error is encountered2493 returns errors if job cache:key is not an a string2494 behaves like returns errors2495 adds a message when an error is encountered2496 returns errors if job cache:key:files is not an array of strings2497 behaves like returns errors2498 adds a message when an error is encountered2499 returns errors if job cache:key:files is an empty array2500 behaves like returns errors2501 adds a message when an error is encountered2502 returns errors if job defines only cache:key:prefix2503 behaves like returns errors2504 adds a message when an error is encountered2505 returns errors if job cache:key:prefix is not an a string2506 behaves like returns errors2507 adds a message when an error is encountered2508 returns errors if job cache:untracked is not an array of strings2509 behaves like returns errors2510 adds a message when an error is encountered2511 returns errors if job cache:paths is not an array of strings2512 behaves like returns errors2513 adds a message when an error is encountered2514 returns errors if job dependencies is not an array of strings2515 behaves like returns errors2516 adds a message when an error is encountered2517 returns errors if pipeline variables expression policy is invalid2518 behaves like returns errors2519 adds a message when an error is encountered2520 returns errors if pipeline changes policy is invalid2521 behaves like returns errors2522 adds a message when an error is encountered2523 returns errors if extended hash configuration is invalid2524 behaves like returns errors2525 adds a message when an error is encountered2526 returns errors if parallel is invalid2527 behaves like returns errors2528 adds a message when an error is encountered2529 when the pipeline has a circular dependency2530 behaves like returns errors2531 adds a message when an error is encountered2532 Job rules2533 changes2534 returns builds with correct rules2535 with paths2536 returns builds with correct rules2537 Workflow rules2538 changes2539 returns pipeline with correct rules2540 with paths2541 returns pipeline with correct rules2542 #execute2543 when the YAML could not be parsed2544 returns errors and empty configuration2545 when the tags parameter is invalid2546 returns errors and empty configuration2547 when the configuration contains multiple keyword-syntax errors2548 returns errors and empty configuration2549 when YAML content is empty2550 returns errors and empty configuration2551 when the YAML contains an unknown alias2552 returns errors and empty configuration2553 when the YAML is valid2554 returns errors and empty configuration2555 verify project sha2556 when a project branch contains the forked commit sha2557 is expected to be valid2558 behaves like when the processor is executed twice consecutively2559 calls Gitaly only once for each ref type2560 when a project tag contains the forked commit sha2561 is expected to be valid2562 behaves like when the processor is executed twice consecutively2563 calls Gitaly only once for each ref type2564 when a project ref does not contain the forked commit sha2565 returns an error2566 behaves like when the processor is executed twice consecutively2567 calls Gitaly only once for each ref type2568 when verify_project_sha option is false2569 is expected to be valid2570 when project is not provided2571 is expected to be valid2572 when sha is not provided2573 is expected to be valid2574 when sha is invalid2575 is expected to be valid2576AutoMerge::BaseService2577 #execute2578 sets properies to the merge request2579 yields block2580 returns activated strategy name2581 when merge parameters are given2582 sets merge parameters2583 when strategy is merge when pipeline succeeds2584 sets the auto merge strategy2585 returns activated strategy name2586 calls AutoMergeProcessWorker2587 when failed to save merge request2588 does not yield block2589 returns failed2590 tracks the exception2591 when exception happens in yield block2592 returns failed status2593 rollback the transaction2594 tracks the exception2595 #update2596 when merge params are specified2597 updates merge params2598 #cancel2599 behaves like Canceled or Dropped2600 removes properies from the merge request2601 yields block2602 returns success status2603 when merge params are set2604 removes merge parameters2605 when failed to save2606 does not yield block2607 when failed to save merge request2608 returns error status2609 when exception happens in yield block2610 returns error2611 rollback the transaction2612 tracks the exception2613 #abort2614 behaves like Canceled or Dropped2615 removes properies from the merge request2616 yields block2617 returns success status2618 when merge params are set2619 removes merge parameters2620 when failed to save2621 does not yield block2622 when failed to save2623 returns error status2624 when exception happens in yield block2625 returns error2626 rollback the transaction2627 tracks the exception2628 #process2629 is expected to respond to #process2630 is expected to raise NotImplementedError2631 #available_for?2632 can_be_merged: true, open: true, broken: false, discussions: true, blocked: false, draft: false, skip_draft: false, skip_blocked: false, skip_discussions: false, result: true2633 returns the expected results2634 can_be_merged: true, open: true, broken: false, discussions: true, blocked: false, draft: false, skip_draft: true, skip_blocked: true, skip_discussions: false, result: true2635 returns the expected results2636 can_be_merged: true, open: true, broken: false, discussions: true, blocked: false, draft: true, skip_draft: true, skip_blocked: false, skip_discussions: false, result: true2637 returns the expected results2638 can_be_merged: true, open: true, broken: false, discussions: true, blocked: true, draft: false, skip_draft: false, skip_blocked: true, skip_discussions: false, result: true2639 returns the expected results2640 can_be_merged: true, open: true, broken: false, discussions: false, blocked: false, draft: false, skip_draft: false, skip_blocked: false, skip_discussions: true, result: true2641 returns the expected results2642 can_be_merged: true, open: true, broken: false, discussions: true, blocked: false, draft: true, skip_draft: false, skip_blocked: false, skip_discussions: false, result: false2643 returns the expected results2644 can_be_merged: false, open: true, broken: false, discussions: true, blocked: false, draft: false, skip_draft: false, skip_blocked: false, skip_discussions: false, result: false2645 returns the expected results2646 can_be_merged: true, open: false, broken: false, discussions: true, blocked: false, draft: false, skip_draft: false, skip_blocked: false, skip_discussions: false, result: false2647 returns the expected results2648 can_be_merged: true, open: true, broken: true, discussions: true, blocked: false, draft: false, skip_draft: false, skip_blocked: false, skip_discussions: false, result: false2649 returns the expected results2650 can_be_merged: true, open: true, broken: false, discussions: false, blocked: false, draft: false, skip_draft: false, skip_blocked: false, skip_discussions: false, result: false2651 returns the expected results2652 can_be_merged: true, open: true, broken: false, discussions: true, blocked: true, draft: false, skip_draft: false, skip_blocked: false, skip_discussions: false, result: false2653 returns the expected results2654Operations::FeatureFlags::Strategy2655 validations2656 is expected to validate that :name is either ‹"default"›, ‹"gradualRolloutUserId"›, ‹"flexibleRollout"›, ‹"userWithId"›, or ‹"gitlabUserList"›, producing a custom validation error on failure2657 parameters2658 when the strategy name is invalid2659 invalid_name: nil2660 skips parameters validation2661 invalid_name: {}2662 skips parameters validation2663 invalid_name: []2664 skips parameters validation2665 invalid_name: "nothing"2666 skips parameters validation2667 invalid_name: 32668 skips parameters validation2669 when the strategy name is gradualRolloutUserId2670 allows the parameters in any order2671 invalid_parameters: nil2672 must have valid parameters for the strategy2673 invalid_parameters: {}2674 must have valid parameters for the strategy2675 invalid_parameters: {:percentage=>"40", :groupId=>"mygroup", :userIds=>"4"}2676 must have valid parameters for the strategy2677 invalid_parameters: {:percentage=>"40"}2678 must have valid parameters for the strategy2679 invalid_parameters: {:percentage=>"40", :groupId=>"mygroup", :extra=>nil}2680 must have valid parameters for the strategy2681 invalid_parameters: {:groupId=>"mygroup"}2682 must have valid parameters for the strategy2683 percentage2684 invalid_value: 502685 must be a string value between 0 and 100 inclusive and without a percentage sign2686 invalid_value: 40.02687 must be a string value between 0 and 100 inclusive and without a percentage sign2688 invalid_value: {:key=>"value"}2689 must be a string value between 0 and 100 inclusive and without a percentage sign2690 invalid_value: "garbage"2691 must be a string value between 0 and 100 inclusive and without a percentage sign2692 invalid_value: "101"2693 must be a string value between 0 and 100 inclusive and without a percentage sign2694 invalid_value: "-1"2695 must be a string value between 0 and 100 inclusive and without a percentage sign2696 invalid_value: "-10"2697 must be a string value between 0 and 100 inclusive and without a percentage sign2698 invalid_value: "1000"2699 must be a string value between 0 and 100 inclusive and without a percentage sign2700 invalid_value: "10.0"2701 must be a string value between 0 and 100 inclusive and without a percentage sign2702 invalid_value: "5%"2703 must be a string value between 0 and 100 inclusive and without a percentage sign2704 invalid_value: "25%"2705 must be a string value between 0 and 100 inclusive and without a percentage sign2706 invalid_value: "100hi"2707 must be a string value between 0 and 100 inclusive and without a percentage sign2708 invalid_value: "e100"2709 must be a string value between 0 and 100 inclusive and without a percentage sign2710 invalid_value: "30m"2711 must be a string value between 0 and 100 inclusive and without a percentage sign2712 invalid_value: " "2713 must be a string value between 0 and 100 inclusive and without a percentage sign2714 invalid_value: "\r\n"2715 must be a string value between 0 and 100 inclusive and without a percentage sign2716 invalid_value: "\n"2717 must be a string value between 0 and 100 inclusive and without a percentage sign2718 invalid_value: "\t"2719 must be a string value between 0 and 100 inclusive and without a percentage sign2720 invalid_value: "\n10"2721 must be a string value between 0 and 100 inclusive and without a percentage sign2722 invalid_value: "20\n"2723 must be a string value between 0 and 100 inclusive and without a percentage sign2724 invalid_value: "\n100"2725 must be a string value between 0 and 100 inclusive and without a percentage sign2726 invalid_value: "100\n"2727 must be a string value between 0 and 100 inclusive and without a percentage sign2728 invalid_value: "\n "2729 must be a string value between 0 and 100 inclusive and without a percentage sign2730 invalid_value: nil2731 must be a string value between 0 and 100 inclusive and without a percentage sign2732 valid_value: "0"2733 must be a string value between 0 and 100 inclusive and without a percentage sign2734 valid_value: "1"2735 must be a string value between 0 and 100 inclusive and without a percentage sign2736 valid_value: "10"2737 must be a string value between 0 and 100 inclusive and without a percentage sign2738 valid_value: "38"2739 must be a string value between 0 and 100 inclusive and without a percentage sign2740 valid_value: "100"2741 must be a string value between 0 and 100 inclusive and without a percentage sign2742 valid_value: "93"2743 must be a string value between 0 and 100 inclusive and without a percentage sign2744 groupId2745 invalid_value: nil2746 must be a string value of up to 32 lowercase characters2747 invalid_value: 42748 must be a string value of up to 32 lowercase characters2749 invalid_value: 50.02750 must be a string value of up to 32 lowercase characters2751 invalid_value: {}2752 must be a string value of up to 32 lowercase characters2753 invalid_value: "spaces bad"2754 must be a string value of up to 32 lowercase characters2755 invalid_value: "bad$"2756 must be a string value of up to 32 lowercase characters2757 invalid_value: "%bad"2758 must be a string value of up to 32 lowercase characters2759 invalid_value: "<bad"2760 must be a string value of up to 32 lowercase characters2761 invalid_value: "bad>"2762 must be a string value of up to 32 lowercase characters2763 invalid_value: "!bad"2764 must be a string value of up to 32 lowercase characters2765 invalid_value: ".bad"2766 must be a string value of up to 32 lowercase characters2767 invalid_value: "Bad"2768 must be a string value of up to 32 lowercase characters2769 invalid_value: "bad1"2770 must be a string value of up to 32 lowercase characters2771 invalid_value: ""2772 must be a string value of up to 32 lowercase characters2773 invalid_value: " "2774 must be a string value of up to 32 lowercase characters2775 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"2776 must be a string value of up to 32 lowercase characters2777 invalid_value: "ba_d"2778 must be a string value of up to 32 lowercase characters2779 invalid_value: "ba\nd"2780 must be a string value of up to 32 lowercase characters2781 valid_value: "somegroup"2782 must be a string value of up to 32 lowercase characters2783 valid_value: "anothergroup"2784 must be a string value of up to 32 lowercase characters2785 valid_value: "okay"2786 must be a string value of up to 32 lowercase characters2787 valid_value: "g"2788 must be a string value of up to 32 lowercase characters2789 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"2790 must be a string value of up to 32 lowercase characters2791 when the strategy name is flexibleRollout2792 allows the parameters in the order rollout, stickiness, groupId2793 allows the parameters in the order rollout, groupId, stickiness2794 allows the parameters in the order stickiness, rollout, groupId2795 allows the parameters in the order stickiness, groupId, rollout2796 allows the parameters in the order groupId, rollout, stickiness2797 allows the parameters in the order groupId, stickiness, rollout2798 invalid_parameters: nil2799 must have valid parameters for the strategy2800 invalid_parameters: {}2801 must have valid parameters for the strategy2802 invalid_parameters: {:rollout=>"40"}2803 must have valid parameters for the strategy2804 invalid_parameters: {:groupId=>"mygroup"}2805 must have valid parameters for the strategy2806 invalid_parameters: {:stickiness=>"default"}2807 must have valid parameters for the strategy2808 invalid_parameters: {:rollout=>"40", :groupId=>"mygroup"}2809 must have valid parameters for the strategy2810 invalid_parameters: {:rollout=>"40", :stickiness=>"default"}2811 must have valid parameters for the strategy2812 invalid_parameters: {:groupId=>"mygroup", :stickiness=>"default"}2813 must have valid parameters for the strategy2814 invalid_parameters: {:rollout=>"40", :groupId=>"mygroup", :stickiness=>"default", :userIds=>"4"}2815 must have valid parameters for the strategy2816 invalid_parameters: {:rollout=>"40", :groupId=>"mygroup", :stickiness=>"default", :extra=>nil}2817 must have valid parameters for the strategy2818 rollout2819 invalid_value: 502820 must be a string value between 0 and 100 inclusive and without a percentage sign2821 invalid_value: 40.02822 must be a string value between 0 and 100 inclusive and without a percentage sign2823 invalid_value: {:key=>"value"}2824 must be a string value between 0 and 100 inclusive and without a percentage sign2825 invalid_value: "garbage"2826 must be a string value between 0 and 100 inclusive and without a percentage sign2827 invalid_value: "101"2828 must be a string value between 0 and 100 inclusive and without a percentage sign2829 invalid_value: "-1"2830 must be a string value between 0 and 100 inclusive and without a percentage sign2831 invalid_value: " "2832 must be a string value between 0 and 100 inclusive and without a percentage sign2833 invalid_value: "-10"2834 must be a string value between 0 and 100 inclusive and without a percentage sign2835 invalid_value: "1000"2836 must be a string value between 0 and 100 inclusive and without a percentage sign2837 invalid_value: "10.0"2838 must be a string value between 0 and 100 inclusive and without a percentage sign2839 invalid_value: "5%"2840 must be a string value between 0 and 100 inclusive and without a percentage sign2841 invalid_value: "25%"2842 must be a string value between 0 and 100 inclusive and without a percentage sign2843 invalid_value: "100hi"2844 must be a string value between 0 and 100 inclusive and without a percentage sign2845 invalid_value: "e100"2846 must be a string value between 0 and 100 inclusive and without a percentage sign2847 invalid_value: "30m"2848 must be a string value between 0 and 100 inclusive and without a percentage sign2849 invalid_value: "\r\n"2850 must be a string value between 0 and 100 inclusive and without a percentage sign2851 invalid_value: "\n"2852 must be a string value between 0 and 100 inclusive and without a percentage sign2853 invalid_value: "\t"2854 must be a string value between 0 and 100 inclusive and without a percentage sign2855 invalid_value: "\n10"2856 must be a string value between 0 and 100 inclusive and without a percentage sign2857 invalid_value: "20\n"2858 must be a string value between 0 and 100 inclusive and without a percentage sign2859 invalid_value: "\n100"2860 must be a string value between 0 and 100 inclusive and without a percentage sign2861 invalid_value: "100\n"2862 must be a string value between 0 and 100 inclusive and without a percentage sign2863 invalid_value: "\n "2864 must be a string value between 0 and 100 inclusive and without a percentage sign2865 invalid_value: nil2866 must be a string value between 0 and 100 inclusive and without a percentage sign2867 valid_value: "0"2868 must be a string value between 0 and 100 inclusive and without a percentage sign2869 valid_value: "1"2870 must be a string value between 0 and 100 inclusive and without a percentage sign2871 valid_value: "10"2872 must be a string value between 0 and 100 inclusive and without a percentage sign2873 valid_value: "38"2874 must be a string value between 0 and 100 inclusive and without a percentage sign2875 valid_value: "100"2876 must be a string value between 0 and 100 inclusive and without a percentage sign2877 valid_value: "93"2878 must be a string value between 0 and 100 inclusive and without a percentage sign2879 groupId2880 invalid_value: nil2881 must be a string value of up to 32 lowercase characters2882 invalid_value: 42883 must be a string value of up to 32 lowercase characters2884 invalid_value: 50.02885 must be a string value of up to 32 lowercase characters2886 invalid_value: {}2887 must be a string value of up to 32 lowercase characters2888 invalid_value: "spaces bad"2889 must be a string value of up to 32 lowercase characters2890 invalid_value: "bad$"2891 must be a string value of up to 32 lowercase characters2892 invalid_value: "%bad"2893 must be a string value of up to 32 lowercase characters2894 invalid_value: "<bad"2895 must be a string value of up to 32 lowercase characters2896 invalid_value: "bad>"2897 must be a string value of up to 32 lowercase characters2898 invalid_value: "!bad"2899 must be a string value of up to 32 lowercase characters2900 invalid_value: ".bad"2901 must be a string value of up to 32 lowercase characters2902 invalid_value: "Bad"2903 must be a string value of up to 32 lowercase characters2904 invalid_value: "bad1"2905 must be a string value of up to 32 lowercase characters2906 invalid_value: ""2907 must be a string value of up to 32 lowercase characters2908 invalid_value: " "2909 must be a string value of up to 32 lowercase characters2910 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"2911 must be a string value of up to 32 lowercase characters2912 invalid_value: "ba_d"2913 must be a string value of up to 32 lowercase characters2914 invalid_value: "ba\nd"2915 must be a string value of up to 32 lowercase characters2916 valid_value: "somegroup"2917 must be a string value of up to 32 lowercase characters2918 valid_value: "anothergroup"2919 must be a string value of up to 32 lowercase characters2920 valid_value: "okay"2921 must be a string value of up to 32 lowercase characters2922 valid_value: "g"2923 must be a string value of up to 32 lowercase characters2924 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"2925 must be a string value of up to 32 lowercase characters2926 stickiness2927 invalid_value: nil2928 must be a string representing a supported stickiness setting2929 invalid_value: " "2930 must be a string representing a supported stickiness setting2931 invalid_value: "DEFAULT"2932 must be a string representing a supported stickiness setting2933 invalid_value: "DEFAULT\n"2934 must be a string representing a supported stickiness setting2935 invalid_value: "UserId"2936 must be a string representing a supported stickiness setting2937 invalid_value: "USER"2938 must be a string representing a supported stickiness setting2939 invalid_value: "USERID "2940 must be a string representing a supported stickiness setting2941 valid_value: "default"2942 must be a string representing a supported stickiness setting2943 valid_value: "userId"2944 must be a string representing a supported stickiness setting2945 valid_value: "sessionId"2946 must be a string representing a supported stickiness setting2947 valid_value: "random"2948 must be a string representing a supported stickiness setting2949 when the strategy name is userWithId2950 invalid_parameters: nil2951 must have valid parameters for the strategy2952 invalid_parameters: {:userIds=>"sam", :percentage=>"40"}2953 must have valid parameters for the strategy2954 invalid_parameters: {:userIds=>"sam", :some=>"param"}2955 must have valid parameters for the strategy2956 invalid_parameters: {:percentage=>"40"}2957 must have valid parameters for the strategy2958 invalid_parameters: {}2959 must have valid parameters for the strategy2960 userIds2961 valid_value: ""2962 is valid with a string of comma separated values2963 valid_value: "sam"2964 is valid with a string of comma separated values2965 valid_value: "1"2966 is valid with a string of comma separated values2967 valid_value: "a"2968 is valid with a string of comma separated values2969 valid_value: "uuid-of-some-kind"2970 is valid with a string of comma separated values2971 valid_value: "sam,fred,tom,jane,joe,mike"2972 is valid with a string of comma separated values2973 valid_value: "gitlab@example.com"2974 is valid with a string of comma separated values2975 valid_value: "123,4"2976 is valid with a string of comma separated values2977 valid_value: "UPPER,Case,charActeRS"2978 is valid with a string of comma separated values2979 valid_value: "0"2980 is valid with a string of comma separated values2981 valid_value: "$valid$email#2345\#$%..{}+=-)?\\/@example.com"2982 is valid with a string of comma separated values2983 valid_value: "spaces allowed"2984 is valid with a string of comma separated values2985 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"2986 is valid with a string of comma separated values2987 valid_value: "a,bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,ccc"2988 is valid with a string of comma separated values2989 valid_value: "many spaces"2990 is valid with a string of comma separated values2991 invalid_value: 12992 is invalid2993 invalid_value: 2.52994 is invalid2995 invalid_value: {}2996 is invalid2997 invalid_value: []2998 is invalid2999 invalid_value: nil3000 is invalid3001 invalid_value: "123\n456"3002 is invalid3003 invalid_value: "1,2,3,12\t3"3004 is invalid3005 invalid_value: "\n"3006 is invalid3007 invalid_value: "\n\r"3008 is invalid3009 invalid_value: "joe\r,sam"3010 is invalid3011 invalid_value: "1,2,2"3012 is invalid3013 invalid_value: "1,,2"3014 is invalid3015 invalid_value: "1,2,,,,"3016 is invalid3017 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"3018 is invalid3019 invalid_value: "1, ,2"3020 is invalid3021 invalid_value: "tim, ,7"3022 is invalid3023 invalid_value: " "3024 is invalid3025 invalid_value: " "3026 is invalid3027 invalid_value: " ,1"3028 is invalid3029 invalid_value: "1, "3030 is invalid3031 invalid_value: " leading,1"3032 is invalid3033 invalid_value: "1,trailing "3034 is invalid3035 invalid_value: "1, both ,2"3036 is invalid3037 when the strategy name is default3038 must be empty3039 invalid_value: {:groupId=>"hi", :percentage=>"7"}3040 must be empty3041 invalid_value: ""3042 must be empty3043 invalid_value: "nothing"3044 must be empty3045 invalid_value: 73046 must be empty3047 invalid_value: nil3048 must be empty3049 invalid_value: []3050 must be empty3051 invalid_value: 2.53052 must be empty3053 when the strategy name is gitlabUserList3054 is valid3055 invalid_value: {:groupId=>"default", :percentage=>"7"}3056 is invalid3057 invalid_value: ""3058 is invalid3059 invalid_value: "nothing"3060 is invalid3061 invalid_value: 73062 is invalid3063 invalid_value: nil3064 is invalid3065 invalid_value: []3066 is invalid3067 invalid_value: 2.53068 is invalid3069 invalid_value: {:userIds=>"user1"}3070 is invalid3071 associations3072 when name is gitlabUserList3073 is valid when associated with a user list3074 is invalid without a user list3075 is invalid when associated with a user list from another project3076 when name is default3077 is invalid when associated with a user list3078 is valid without a user list3079 when name is userWithId3080 is invalid when associated with a user list3081 is valid without a user list3082 when name is gradualRolloutUserId3083 is invalid when associated with a user list3084 is valid without a user list3085 when name is flexibleRollout3086 is invalid when associated with a user list3087 is valid without a user list3088System::BroadcastMessage3089 # order random3090 is expected to be valid3091 #flush_redis_cache3092 flushes the Redis cache3093 with GitLab revision changes3094 validates correct cache creating, flushing and cache recreation cycle3095 handles there being no messages with cache3096 .current_banner_messages3097 only returns banners3098 behaves like time constrained3099 returns message if time match3100 returns multiple messages if time match3101 returns empty list if time not come3102 returns empty list if time has passed3103 behaves like message cache3104 caches the output of the query for two weeks3105 expires the value if a broadcast message has ended3106 does not create new records3107 includes messages that need to be displayed in the future3108 does not clear the cache if only a future message should be displayed3109 behaves like matches with current path3110 returns message if it matches the target path3111 returns message if part of the target path matches3112 returns message if provided a path without a preceding slash3113 returns the message for empty target path3114 returns the message if target path is nil3115 does not return message if target path does not match3116 does not return message if target path does not match when using wildcard3117 does not return message if target path has no wild card at the end3118 does not return message if target path has wild card at the end3119 does return message if target path has wild card at the beginning and the end3120 does not return message if the target path is set but no current path is provided3121 behaves like matches with user access level3122 when target_access_levels is empty3123 returns the message if user access level is not nil3124 returns the message if user access level is nil3125 when target_access_levels is not empty3126 does not return the message if user access level is nil3127 returns the message if user access level is in target_access_levels3128 does not return the message if user access level is not in target_access_levels3129 behaves like handles stale cache data gracefully3130 when cache returns stale data (e.g. nil target_access_levels)3131 does not raise error (e.g. NoMethodError from nil.empty?)3132 when message is from cache3133 behaves like matches with current path3134 returns message if it matches the target path3135 returns message if part of the target path matches3136 returns message if provided a path without a preceding slash3137 returns the message for empty target path3138 returns the message if target path is nil3139 does not return message if target path does not match3140 does not return message if target path does not match when using wildcard3141 does not return message if target path has no wild card at the end3142 does not return message if target path has wild card at the end3143 does return message if target path has wild card at the beginning and the end3144 does not return message if the target path is set but no current path is provided3145 behaves like matches with user access level3146 when target_access_levels is empty3147 returns the message if user access level is not nil3148 returns the message if user access level is nil3149 when target_access_levels is not empty3150 does not return the message if user access level is nil3151 returns the message if user access level is in target_access_levels3152 does not return the message if user access level is not in target_access_levels3153 .current_show_in_cli_banner_messages3154 only returns banner messages that has show_in_cli as true3155 default values3156 is expected to eq "#E75E40"3157 is expected to eq "#FFFFFF"3158 #started?3159 is truthy when starts_at has passed3160 is falsey when starts_at is in the future3161 #attributes3162 includes message_html field3163 #ended?3164 is truthy when ends_at has passed3165 is falsey when ends_at is in the future3166 .current3167 returns both types3168 behaves like time constrained3169 returns message if time match3170 returns multiple messages if time match3171 returns empty list if time not come3172 returns empty list if time has passed3173 behaves like message cache3174 caches the output of the query for two weeks3175 expires the value if a broadcast message has ended3176 does not create new records3177 includes messages that need to be displayed in the future3178 does not clear the cache if only a future message should be displayed3179 behaves like matches with current path3180 returns message if it matches the target path3181 returns message if part of the target path matches3182 returns message if provided a path without a preceding slash3183 returns the message for empty target path3184 returns the message if target path is nil3185 does not return message if target path does not match3186 does not return message if target path does not match when using wildcard3187 does not return message if target path has no wild card at the end3188 does not return message if target path has wild card at the end3189 does return message if target path has wild card at the beginning and the end3190 does not return message if the target path is set but no current path is provided3191 behaves like matches with user access level3192 when target_access_levels is empty3193 returns the message if user access level is not nil3194 returns the message if user access level is nil3195 when target_access_levels is not empty3196 does not return the message if user access level is nil3197 returns the message if user access level is in target_access_levels3198 does not return the message if user access level is not in target_access_levels3199 behaves like handles stale cache data gracefully3200 when cache returns stale data (e.g. nil target_access_levels)3201 does not raise error (e.g. NoMethodError from nil.empty?)3202 when message is from cache3203 behaves like matches with current path3204 returns message if it matches the target path3205 returns message if part of the target path matches3206 returns message if provided a path without a preceding slash3207 returns the message for empty target path3208 returns the message if target path is nil3209 does not return message if target path does not match3210 does not return message if target path does not match when using wildcard3211 does not return message if target path has no wild card at the end3212 does not return message if target path has wild card at the end3213 does return message if target path has wild card at the beginning and the end3214 does not return message if the target path is set but no current path is provided3215 behaves like matches with user access level3216 when target_access_levels is empty3217 returns the message if user access level is not nil3218 returns the message if user access level is nil3219 when target_access_levels is not empty3220 does not return the message if user access level is nil3221 returns the message if user access level is in target_access_levels3222 does not return the message if user access level is not in target_access_levels3223 behaves like matches with current path3224 returns message if it matches the target path3225 returns message if part of the target path matches3226 returns message if provided a path without a preceding slash3227 returns the message for empty target path3228 returns the message if target path is nil3229 does not return message if target path does not match3230 does not return message if target path does not match when using wildcard3231 does not return message if target path has no wild card at the end3232 does not return message if target path has wild card at the end3233 does return message if target path has wild card at the beginning and the end3234 does not return message if the target path is set but no current path is provided3235 behaves like matches with user access level3236 when target_access_levels is empty3237 returns the message if user access level is not nil3238 returns the message if user access level is nil3239 when target_access_levels is not empty3240 does not return the message if user access level is nil3241 returns the message if user access level is in target_access_levels3242 does not return the message if user access level is not in target_access_levels3243 .current_notification_messages3244 only returns notifications3245 behaves like time constrained3246 returns message if time match3247 returns multiple messages if time match3248 returns empty list if time not come3249 returns empty list if time has passed3250 behaves like message cache3251 caches the output of the query for two weeks3252 expires the value if a broadcast message has ended3253 does not create new records3254 includes messages that need to be displayed in the future3255 does not clear the cache if only a future message should be displayed3256 behaves like matches with current path3257 returns message if it matches the target path3258 returns message if part of the target path matches3259 returns message if provided a path without a preceding slash3260 returns the message for empty target path3261 returns the message if target path is nil3262 does not return message if target path does not match3263 does not return message if target path does not match when using wildcard3264 does not return message if target path has no wild card at the end3265 does not return message if target path has wild card at the end3266 does return message if target path has wild card at the beginning and the end3267 does not return message if the target path is set but no current path is provided3268 behaves like matches with user access level3269 when target_access_levels is empty3270 returns the message if user access level is not nil3271 returns the message if user access level is nil3272 when target_access_levels is not empty3273 does not return the message if user access level is nil3274 returns the message if user access level is in target_access_levels3275 does not return the message if user access level is not in target_access_levels3276 behaves like handles stale cache data gracefully3277 when cache returns stale data (e.g. nil target_access_levels)3278 does not raise error (e.g. NoMethodError from nil.empty?)3279 when message is from cache3280 behaves like matches with current path3281 returns message if it matches the target path3282 returns message if part of the target path matches3283 returns message if provided a path without a preceding slash3284 returns the message for empty target path3285 returns the message if target path is nil3286 does not return message if target path does not match3287 does not return message if target path does not match when using wildcard3288 does not return message if target path has no wild card at the end3289 does not return message if target path has wild card at the end3290 does return message if target path has wild card at the beginning and the end3291 does not return message if the target path is set but no current path is provided3292 behaves like matches with user access level3293 when target_access_levels is empty3294 returns the message if user access level is not nil3295 returns the message if user access level is nil3296 when target_access_levels is not empty3297 does not return the message if user access level is nil3298 returns the message if user access level is in target_access_levels3299 does not return the message if user access level is not in target_access_levels3300 validations3301 is expected to allow :color to be ‹nil›3302 is expected to allow :color to be ‹"#000"›3303 is expected to allow :color to be ‹"#AABBCC"›3304 is expected not to allow :color to be ‹"000"›3305 is expected to allow :font to be ‹nil›3306 is expected to allow :font to be ‹"#000"›3307 is expected to allow :font to be ‹"#AABBCC"›3308 is expected not to allow :font to be ‹"000"›3309 is expected to allow :broadcast_type to be ‹1›3310 is expected not to allow :broadcast_type to be ‹nil›3311 is expected not to allow :target_access_levels to be ‹nil›3312 is expected not to allow :show_in_cli to be ‹nil›3313 is expected to validate that :target_access_levels is either ‹10›, ‹20›, ‹30›, ‹40›, or ‹50›3314************************************************************************3315Warning from shoulda-matchers:3316You are using `validate_inclusion_of` to assert that a boolean column3317allows boolean values and disallows non-boolean ones. Be aware that it3318is not possible to fully test this, as boolean columns will3319automatically convert non-boolean values to boolean ones. Hence, you3320should consider removing this test.3321************************************************************************3322 is expected to validate that :show_in_cli is either ‹true› or ‹false›3323 #active?3324 is truthy when started and not ended3325 is falsey when ended3326 is falsey when not started3327 #current_and_future_messages3328 returns only current and future messages by ascending ends_at3329Ci::BuildRunnerPresenter3330 #artifacts3331 when option contains archive-type artifacts3332 presents correct hash3333 when untracked is specified3334 presents correct hash3335 when untracked and paths are missing3336 does not present hash3337 when artifacts exclude is defined3338 includes the list of excluded paths3339 when artifacts exclude is not defined3340 does not include an empty list of excluded paths3341 with reports3342 archive3343 presents correct hash3344 metadata3345 presents correct hash3346 trace3347 presents correct hash3348 metrics_referee3349 presents correct hash3350 network_referee3351 presents correct hash3352 junit3353 presents correct hash3354 accessibility3355 presents correct hash3356 codequality3357 presents correct hash3358 sast3359 presents correct hash3360 secret_detection3361 presents correct hash3362 dependency_scanning3363 presents correct hash3364 container_scanning3365 presents correct hash3366 cluster_image_scanning3367 presents correct hash3368 dast3369 presents correct hash3370 license_scanning3371 presents correct hash3372 performance3373 presents correct hash3374 browser_performance3375 presents correct hash3376 load_performance3377 presents correct hash3378 metrics3379 presents correct hash3380 lsif3381 presents correct hash3382 dotenv3383 presents correct hash3384 cobertura3385 presents correct hash3386 terraform3387 presents correct hash3388 cluster_applications3389 presents correct hash3390 requirements3391 presents correct hash3392 requirements_v23393 presents correct hash3394 coverage_fuzzing3395 presents correct hash3396 api_fuzzing3397 presents correct hash3398 cyclonedx3399 presents correct hash3400 annotations3401 presents correct hash3402 when a specific coverage_report type is given3403 presents the coverage report hash with the coverage format3404 when a specific coverage_report type is given with another report type3405 presents both reports3406 when option has both archive and reports specification3407 presents correct hash3408 when archive specifies 'expire_in' keyword3409 inherits expire_in from archive3410 when option has no artifact keywords3411 does not present hash3412 #ref_type3413 returns the correct ref type3414 when tag is false3415 returns the correct ref type3416 #git_depth3417 defaults to git depth setting for the project3418 when GIT_DEPTH variable is specified3419 returns its value3420 #refspecs3421 returns the correct refspecs3422 when ref is tag3423 returns the correct refspecs3424 when GIT_DEPTH is zero3425 returns the correct refspecs3426 when pipeline is detached merge request pipeline3427 returns the correct refspecs3428 when GIT_DEPTH is zero3429 returns the correct refspecs3430 when pipeline is legacy detached merge request pipeline3431 returns the correct refspecs3432 when persistent pipeline ref exists3433 exposes the persistent pipeline ref3434 #runner_variables3435 returns an array3436 returns the expected variables3437 when there is a file variable to expand3438 returns variables with expanded3439 when there is a raw variable to expand3440 returns expanded variables without expanding raws3441 #runner_variables subset3442 with references in pipeline variables3443 returns expanded and sorted variables3444Gitlab::Database::LockWritesManager3445 #table_locked_for_writes?3446 returns false for a table that is not locked for writes3447 returns true for a table that is locked for writes3448 for detached partition tables in another schema3449 returns true for a table that is locked for writes3450 #lock_writes3451 prevents any writes on the table3452 prevents truncating the table3453 adds 3 triggers to the ci schema tables on the main database3454 logs the write locking3455 retries again if it receives a statement_timeout a few number of times3456 raises the exception if it happened many times3457 skips the operation if the table is already locked for writes3458 when running in dry_run mode3459 prints the sql statement to the logger3460 does not lock the tables for writes3461 returns result hash with action needs_lock3462 #unlock_writes3463 allows writing on the table again3464 skips unlocking the table if the table was already unlocked for writes3465 removes the write protection triggers from the gitlab_main tables on the ci database3466 logs the write unlocking3467 when running in dry_run mode3468 prints the sql statement to the logger3469 does not unlock the tables for writes3470 returns result hash with dry_run true3471GroupMember3472 default values3473 is expected to eq "Namespace"3474 scopes3475 counts users by group ID3476 .of_ldap_type3477 returns ldap type users3478 delegations3479 is expected to delegate #update_two_factor_requirement to the #user object, allowing #user to return nil3480 .access_level_roles3481 returns Gitlab::Access.options_with_owner3482 #permissible_access_level_roles3483 returns Gitlab::Access.options_with_owner3484 behaves like members notifications3485 #after_create3486 sends email to user3487 #after_update3488 calls NotificationService.update_group_member3489 does not send an email when the access level has not changed3490 #after_commit3491 on creation of a member requesting access3492 calls NotificationService.new_access_request3493 #accept_request3494 calls NotificationService.new_group_member3495 #accept_invite!3496 calls NotificationService.accept_group_invite3497 #decline_invite!3498 calls NotificationService.decline_group_invite3499 #namespace_id3500 is expected to eq 13501 #real_source_type3502 is expected to eq "Group"3503 #update_two_factor_requirement3504 is called after creation and deletion3505 #destroy3506 for an orphaned member3507 does not raise an error3508 #after_accept_invite3509 calls #update_two_factor_requirement3510 #last_owner_of_the_group?3511 when overridden by last_owner instance variable3512 and it is set to true3513 is expected to equal true3514 and it is set to false3515 is expected to equal false3516 when member is an owner3517 and there are no other owners3518 is expected to equal true3519 and member is also owner of a parent group3520 is expected to equal false3521 and there is another owner3522 and that other owner is a project bot3523 is expected to equal true3524 and that other owner is not a project bot3525 is expected to equal false3526 when member is not an owner3527 is expected to equal false3528 access levels3529 with parent group3530 behaves like inherited access level as a member of entity3531 with root parent_entity developer member3532 is allowed to be a maintainer of the entity3533 is not allowed to be a reporter of the entity3534 is allowed to change to be a developer of the entity3535 is not allowed to change to be a guest of the entity3536 shows an error if the member can't be updated3537 allows changing the level from a non existing member3538 with parent group and a sub subgroup3539 behaves like inherited access level as a member of entity3540 with root parent_entity developer member3541 is allowed to be a maintainer of the entity3542 is not allowed to be a reporter of the entity3543 is allowed to change to be a developer of the entity3544 is not allowed to change to be a guest of the entity3545 shows an error if the member can't be updated3546 allows changing the level from a non existing member3547 when only the subgroup has the member3548 behaves like inherited access level as a member of entity3549 with root parent_entity developer member3550 is allowed to be a maintainer of the entity3551 is not allowed to be a reporter of the entity3552 is allowed to change to be a developer of the entity3553 is not allowed to change to be a guest of the entity3554 shows an error if the member can't be updated3555 allows changing the level from a non existing member3556 when group member expiration date is updated3557 emails the user that their group membership expiry has changed3558 refresh_member_authorized_projects3559 when importing3560 does not refresh3561 authorization refresh on addition/updation/deletion3562 on create3563 changes access level3564 behaves like calls AuthorizedProjectsWorker inline to recalculate authorizations3565 calls AuthorizedProjectsWorker inline to recalculate authorizations3566 on update3567 changes access level3568 behaves like calls AuthorizedProjectsWorker inline to recalculate authorizations3569 calls AuthorizedProjectsWorker inline to recalculate authorizations3570 on destroy3571 changes access level3572 behaves like calls AuthorizedProjectsWorker inline to recalculate authorizations3573 calls AuthorizedProjectsWorker inline to recalculate authorizations3574 group member welcome email3575 schedules plain welcome to the group email3576gitlab:uploads:migrate and migrate_to_local rake tasks3577 migrates all uploads to object storage in batches3578 migrates all uploads to local storage in batches3579 when uploader_class is given3580 behaves like migrate task with filters3581 migrates matching uploads to object storage3582 migrates matching uploads to local storage3583 when model_class is given3584 behaves like migrate task with filters3585 migrates matching uploads to object storage3586 migrates matching uploads to local storage3587 when mounted_as is given3588 behaves like migrate task with filters3589 migrates matching uploads to object storage3590 migrates matching uploads to local storage3591 when multiple filters are given3592 behaves like migrate task with filters3593 migrates matching uploads to object storage3594 migrates matching uploads to local storage3595WorkItems::UpdateService3596 #execute3597 when applying quick actions3598 when work item type is not the default Issue3599 does not apply the quick action3600 when work item type is the default Issue3601 applies the quick action3602 when title is changed3603 triggers issuable_title_updated graphql subscription3604 behaves like internal event tracking3605 logs to Snowplow3606 behaves like update service that triggers GraphQL work_item_updated subscription3607 triggers graphql subscription workItemUpdated3608 when title is not changed3609 does not trigger issuable_title_updated graphql subscription3610 does not emit Snowplow event3611 when dates are changed3612 tracks users updating work item dates3613 behaves like update service that triggers GraphQL work_item_updated subscription3614 triggers graphql subscription workItemUpdated3615 when decription is changed3616 triggers GraphQL description updated subscription3617 behaves like update service that triggers GraphQL work_item_updated subscription3618 triggers graphql subscription workItemUpdated3619 when decription is not changed3620 does not trigger GraphQL description updated subscription3621 when updating state_event3622 when state_event is close3623 closes the work item3624 when state_event is reopen3625 reopens the work item3626 behaves like work item widgetable service3627 executes callbacks for expected widgets3628 when updating widgets3629 when widget service is not present3630 ignores widget param3631 when the widget does not support update callback3632 ignores widget param3633 for the description widget3634 updates the description of the work item3635 behaves like update service that triggers GraphQL work_item_updated subscription3636 triggers graphql subscription workItemUpdated3637 with mentions3638 when description contains a user mention3639 behaves like creates the todo and sends email3640 creates a todo and sends email3641 when title contains a user mention3642 behaves like creates the todo and sends email3643 creates a todo and sends email3644 when work item validation fails3645 returns validation errors3646 does not execute after-update widgets3647 for start and due date widget3648 when due_date is updated3649 behaves like update service that triggers graphql dates updated subscription3650 triggers graphql subscription issueableDatesUpdated3651 when start_date is updated3652 behaves like update service that triggers graphql dates updated subscription3653 triggers graphql subscription issueableDatesUpdated3654 when no date param is updated3655 does not trigger date updated subscription3656 for the hierarchy widget3657 updates the children of the work item3658 behaves like update service that triggers GraphQL work_item_updated subscription3659 triggers graphql subscription workItemUpdated3660 when child type is invalid3661 returns error status3662 does not update work item attributes3663 when work item validation fails3664 returns validation errors3665 does not execute after-update widgets3666 for milestone widget3667 when milestone is updated3668 triggers 'issuableMilestoneUpdated'3669 behaves like update service that triggers GraphQL work_item_updated subscription3670 triggers graphql subscription workItemUpdated3671 when milestone remains unchanged3672 does not trigger 'issuableMilestoneUpdated'3673 for current user todos widget3674 when action is mark_as_done3675 marks current user todo as done3676 behaves like update service that triggers GraphQL work_item_updated subscription3677 triggers graphql subscription workItemUpdated3678 when action is add3679 adds a ToDo for the work item3680 label updates3681 when labels are changed3682 tracks users updating work item labels3683 behaves like update service that triggers GraphQL work_item_updated subscription3684 triggers graphql subscription workItemUpdated3685 behaves like broadcasting issuable labels updates3686 when label is added3687 triggers the GraphQL subscription3688 when label is removed3689 triggers the GraphQL subscription3690 when label is unchanged3691 does not trigger the GraphQL subscription3692 when labels are not changed3693 when labels param is not provided3694 behaves like work item update that does not track label updates3695 does not track users updating work item labels3696 when labels param is provided but labels remain unchanged3697 behaves like work item update that does not track label updates3698 does not track users updating work item labels3699 when labels param is provided invalid values3700 behaves like work item update that does not track label updates3701 does not track users updating work item labels3702gitlab:cleanup rake tasks3703 cleanup:project_uploads3704 with a fixable orphaned project upload file3705 with DRY_RUN disabled3706 moves the file to its proper location3707 logs action as done3708 with DRY_RUN explicitly enabled3709 behaves like does not move the file3710 does not move the file3711 logs action as able to be done3712 with DRY_RUN set to an unknown value3713 behaves like does not move the file3714 does not move the file3715 logs action as able to be done3716 with DRY_RUN unset3717 behaves like does not move the file3718 does not move the file3719 logs action as able to be done3720 gitlab:cleanup:orphan_job_artifact_files3721 runs the task without errors3722 with DRY_RUN set to false3723 passes dry_run correctly3724 gitlab:cleanup:orphan_lfs_file_references3725 runs the task without errors3726 with DRY_RUN set to false3727 passes dry_run correctly3728 gitlab:cleanup:orphan_lfs_files3729 runs RemoveUnreferencedLfsObjectsWorker3730 gitlab:cleanup:remove_missed_source_branches3731 when dry run is true3732 behaves like does not remove any branches3733 does not delete any branches3734 and when a valid batch size is given3735 takes into account for the batch size3736 when dry run is false3737 deletes the branches3738 when a limit is set3739 deletes only one branch3740 when the branch has a merged and opened mr3741 does not delete the branch of the merged/open mr3742 when an valid batch size is given3743 deletes the branches3744 when an invalid batch size is given3745 behaves like does not remove any branches3746 does not delete any branches3747 when an invalid limit to delete is given3748 behaves like does not remove any branches3749 does not delete any branches3750 sessions3751 gitlab:cleanup:sessions:active_sessions_lookup_keys3752 runs the task without errors3753 removes expired active session lookup keys3754ResourceLabelEvent3755 behaves like having unique enum values3756 has unique values in "action"3757 behaves like a resource event3758 importable3759 is expected to respond to #importing?3760 is expected to respond to #imported?3761 validations3762 is expected not to allow :user to be ‹nil›3763 when importing3764 is expected to allow :user to be ‹nil›3765 associations3766 is expected to belong to user required: false3767 .created_after3768 returns the expected events3769 returns no events if time is after last record time3770 behaves like a resource event for issues3771 associations3772 is expected to belong to issue required: false3773 .by_issue3774 returns the expected records for an issue with events3775 returns the expected records for an issue with no events3776 .by_issue_ids3777 returns the expected events3778 .by_created_at_earlier_or_equal_to3779 returns the expected events3780 returns the expected events3781 #issuable3782 returns the expected issuable3783 behaves like a resource event for merge requests3784 associations3785 is expected to belong to merge_request required: false3786 .by_merge_request3787 returns the expected records for an issue with events3788 returns the expected records for an issue with no events3789 #issuable3790 returns the expected issuable3791 on callbacks3792 does not trigger note created subscription3793 behaves like a note for work item resource event3794 builds synthetic note with correct synthetic_note_class3795 on callbacks3796 triggers note created subscription3797 associations3798 is expected to belong to label required: false3799 validations3800 is expected to be valid3801 Issuable validation3802 is invalid if issue_id and merge_request_id are missing3803 is invalid if issue_id and merge_request_id are set3804 is valid if only issue_id is set3805 is valid if only merge_request_id is set3806 callbacks3807 #broadcast_notes_changed3808 broadcasts note change on event save3809 broadcasts note change on event destroy3810 #outdated_markdown?3811 returns true if label is missing and reference is not empty3812 returns true if reference is not set yet3813 returns true if markdown is outdated3814 returns false if label and reference are set3815 .visible_to_user?3816 returns events with labels accessible by user3817 filters events with public project labels if issues and MRs are private3818 filters events with project labels not accessible by user3819 filters events with group labels not accessible by user3820 #discussion_id3821 generates different discussion ID for events created milliseconds apart3822 with multiple label events3823 builds synthetic note3824Gitlab::Redis::Workhorse3825 # order random3826 .params3827 withstands mutation3828 when url contains unix socket reference3829 with old format3830 returns path key instead3831 with new format3832 returns path key instead3833 when url is host based3834 with old format3835 returns hash with host, port, db, and password3836 with new format3837 rails_env: "development", host: "development-host"3838 returns hash with host, port, db, and password3839 rails_env: "test", host: "test-host"3840 returns hash with host, port, db, and password3841 rails_env: "production", host: "production-host"3842 returns hash with host, port, db, and password3843 with redis cluster format3844 rails_env: "development", host: "development-master"3845 returns hash with cluster and password3846 rails_env: "test", host: "test-master"3847 returns hash with cluster and password3848 rails_env: "production", host: "production-master"3849 returns hash with cluster and password3850 #parse_client_tls_options3851 when configuration does not have TLS related options3852 returns the coniguration as-is3853 when specified certificate file does not exist3854 raises error about missing certificate file3855 when specified key file does not exist3856 raises error about missing key file3857 when only certificate file is specified3858 renders resque.yml correctly3859 when only key file is specified3860 renders resque.yml correctly3861 when configuration valid TLS related options3862 converts cert_file and key_file appropriately3863 #raw_config_hash3864 returns old-style single url config in a hash3865 returns cluster config without url key in a hash3866 #fetch_config3867 when redis.yml exists3868 when the fallback has a redis.yml entry3869 is expected to eq {"fallback redis.yml"=>123}3870 and an instance config file exists3871 is expected to eq {"instance specific file"=>456}3872 and the instance has a redis.yml entry3873 is expected to eq {"instance redis.yml"=>789}3874 when no redis config file exsits3875 returns nil3876 when resque.yml exists3877 returns the config from resque.yml3878 .version3879 returns a version3880 #sentinels?3881 when sentinels are defined3882 returns true3883 when sentinels are not defined3884 is expected to eq nil3885 when cluster is defined3886 returns false3887 #fetch_config3888 raises an exception when the config file contains invalid yaml3889 when redis.yml exists3890 uses config/redis.yml3891 when no config file exsits3892 returns nil3893 when resque.yml exists3894 returns the config from resque.yml3895 .with3896 when running on single-threaded runtime3897 instantiates a connection pool with size 53898 when running on multi-threaded runtime3899 instantiates a connection pool with a size based on the concurrency of the worker3900 when there is no config at all3901 can run an empty block3902 #sentinels3903 when sentinels are defined3904 rails_env: "development", hosts: ["development-replica1", "development-replica2"]3905 returns an array of hashes with host and port keys3906 rails_env: "test", hosts: ["test-replica1", "test-replica2"]3907 returns an array of hashes with host and port keys3908 rails_env: "production", hosts: ["production-replica1", "production-replica2"]3909 returns an array of hashes with host and port keys3910 when sentinels are not defined3911 returns nil3912 when cluster is defined3913 returns nil3914 .store3915 with old format3916 behaves like redis store3917 instantiates Redis::Store3918 with the namespace3919 uses specified namespace3920 with new format3921 behaves like redis store3922 instantiates Redis::Store3923 with the namespace3924 uses specified namespace3925 behaves like redis_shared_examples3926 .config_file_name3927 when there is no config file anywhere3928 is expected to be nil3929 .store3930 with old format3931 behaves like redis store3932 instantiates Redis::Store3933 with the namespace3934 uses specified namespace3935 with new format3936 behaves like redis store3937 instantiates Redis::Store3938 with the namespace3939 uses specified namespace3940 .params3941 withstands mutation3942 when url contains unix socket reference3943 with old format3944 returns path key instead3945 with new format3946 returns path key instead3947 when url is host based3948 with old format3949 returns hash with host, port, db, and password3950 with new format3951 rails_env: "development", host: "development-host"3952 returns hash with host, port, db, and password3953 rails_env: "test", host: "test-host"3954 returns hash with host, port, db, and password3955 rails_env: "production", host: "production-host"3956 returns hash with host, port, db, and password3957 with redis cluster format3958 rails_env: "development", host: "development-master"3959 returns hash with cluster and password3960 rails_env: "test", host: "test-master"3961 returns hash with cluster and password3962 rails_env: "production", host: "production-master"3963 returns hash with cluster and password3964 .url3965 withstands mutation3966 when yml file with env variable3967 reads redis url from env variable3968 .version3969 returns a version3970 .with3971 when running on single-threaded runtime3972 instantiates a connection pool with size 53973 when running on multi-threaded runtime3974 instantiates a connection pool with a size based on the concurrency of the worker3975 when there is no config at all3976 can run an empty block3977 #db3978 with old format3979 returns the correct db3980 with new format3981 returns the correct db3982 with cluster-mode3983 returns the correct db3984 #sentinels3985 when sentinels are defined3986 rails_env: "development", hosts: ["development-replica1", "development-replica2"]3987 returns an array of hashes with host and port keys3988 rails_env: "test", hosts: ["test-replica1", "test-replica2"]3989 returns an array of hashes with host and port keys3990 rails_env: "production", hosts: ["production-replica1", "production-replica2"]3991 returns an array of hashes with host and port keys3992 when sentinels are not defined3993 returns nil3994 when cluster is defined3995 returns nil3996 #sentinels?3997 when sentinels are defined3998 returns true3999 when sentinels are not defined4000 is expected to eq nil4001 when cluster is defined4002 returns false4003 #raw_config_hash4004 returns old-style single url config in a hash4005 returns cluster config without url key in a hash4006 #parse_client_tls_options4007 when configuration does not have TLS related options4008 returns the coniguration as-is4009 when specified certificate file does not exist4010 raises error about missing certificate file4011 when specified key file does not exist4012 raises error about missing key file4013 when only certificate file is specified4014 renders resque.yml correctly4015 when only key file is specified4016 renders resque.yml correctly4017 when configuration valid TLS related options4018 converts cert_file and key_file appropriately4019 #fetch_config4020 raises an exception when the config file contains invalid yaml4021 when redis.yml exists4022 uses config/redis.yml4023 when no config file exsits4024 returns nil4025 when resque.yml exists4026 returns the config from resque.yml4027 #db4028 with old format4029 returns the correct db4030 with new format4031 returns the correct db4032 with cluster-mode4033 returns the correct db4034 .url4035 withstands mutation4036 when yml file with env variable4037 reads redis url from env variable4038 .config_file_name4039 when there is no config file anywhere4040 is expected to be nil4041Backup::Repositories4042 #dump4043 avoids N+1 database queries4044 hashed storage4045 behaves like creates repository bundles4046 calls enqueue for each repository type4047 legacy storage4048 behaves like creates repository bundles4049 calls enqueue for each repository type4050 command failure4051 enqueue_project raises an error4052 project query raises an error4053 storages4054 calls enqueue for all repositories on the specified storage4055 paths4056 project path4057 calls enqueue for all repositories on the specified project4058 group path4059 calls enqueue for all repositories on all descendant projects4060 skip_paths4061 project path4062 calls enqueue for all repositories on the specified project4063 group path4064 calls enqueue for all repositories on all descendant projects4065 #restore4066 calls enqueue for each repository type4067 restoring object pools4068 schedules restoring of the pool4069 skips pools when no source project is found4070 cleanup snippets4071 shows the appropriate error4072 removes the snippets from the DB4073 removes the repository from disk4074 storages4075 calls enqueue for all repositories on the specified storage4076 paths4077 project path4078 calls enqueue for all repositories on the specified project4079 group path4080 calls enqueue for all repositories on all descendant projects4081 skip_paths4082 project path4083 calls enqueue for all repositories on the specified project4084 group path4085 calls enqueue for all repositories on all descendant projects4086SentNotification4087 validation4088 note validity4089 when the project doesn't match the noteable's project4090 is invalid4091 when the project doesn't match the discussion project4092 is invalid4093 when the noteable project and discussion project match4094 is valid4095 .record4096 behaves like a successful sent notification4097 creates a new SentNotification4098 behaves like a non-sticky write4099 writes without sticking to primary4100 .record_note4101 for a discussion note4102 sets in_reply_to_discussion_id4103 behaves like a successful sent notification4104 creates a new SentNotification4105 behaves like a non-sticky write4106 writes without sticking to primary4107 for an individual note4108 sets in_reply_to_discussion_id4109 behaves like a successful sent notification4110 creates a new SentNotification4111 behaves like a non-sticky write4112 writes without sticking to primary4113 #unsubscribable?4114 behaves like an unsubscribable notification4115 for issue4116 is expected to be unsubscribable4117 behaves like an unsubscribable notification4118 for merge request4119 is expected to be unsubscribable4120 behaves like a non-unsubscribable notification4121 for a commit4122 is expected not to be unsubscribable4123 behaves like a non-unsubscribable notification4124 for a personal snippet4125 is expected not to be unsubscribable4126 behaves like a non-unsubscribable notification4127 for a project snippet4128 is expected not to be unsubscribable4129 #for_commit?4130 behaves like a non-commit notification4131 for a issue4132 is expected not to be for commit4133 behaves like a non-commit notification4134 for a merge request4135 is expected not to be for commit4136 behaves like a commit notification4137 for commit4138 is expected to be for commit4139 behaves like a non-commit notification4140 for a personal snippet4141 is expected not to be for commit4142 behaves like a non-commit notification4143 for a project snippet4144 is expected not to be for commit4145 #for_snippet?4146 behaves like a non-snippet notification4147 for a issue4148 is expected not to be for snippet4149 behaves like a non-snippet notification4150 for a merge request4151 is expected not to be for snippet4152 behaves like a non-snippet notification4153 for a commit4154 is expected not to be for snippet4155 behaves like a snippet notification4156 for personal snippet4157 is expected to be for snippet4158 behaves like a snippet notification4159 for project snippet4160 is expected to be for snippet4161 #create_reply4162 for issue4163 creates a comment on the issue4164 for issue comment4165 converts the comment to a discussion on the issue4166 for issue discussion4167 creates a reply on the discussion4168 for merge request4169 creates a comment on the merge_request4170 for merge request comment4171 converts the comment to a discussion on the merge request4172 for merge request diff discussion4173 creates a reply on the discussion4174 for merge request non-diff discussion4175 creates a reply on the discussion4176 for commit4177 creates a comment on the commit4178 for commit comment4179 creates a comment on the commit4180 for commit diff discussion4181 creates a reply on the discussion4182 for commit non-diff discussion4183 creates a reply on the discussion4184Projects::LfsPointers::LfsDownloadLinkListService4185 #each_link4186 retrieves each download link of every non existent lfs object4187 stores headers4188 when lfs objects size is larger than the batch size4189 when batch size4190 retrieves them in batches4191 when request fails with PayloadTooLarge error4192 when the smaller batch eventually works4193 retreives them eventually and logs exceptions4194 when batch size cannot be any smaller4195 raises an error and logs exceptions4196 credentials4197 when the download link and the lfs_endpoint have the same host4198 when lfs_endpoint has credentials4199 adds credentials to the download_link4200 when lfs_endpoint does not have any credentials4201 does not add any credentials4202 when the download link and the lfs_endpoint have different hosts4203 downloads without any credentials4204 #download_links_for4205 if request fails4206 raises an error4207 behaves like JSON parse errors4208 raises an error4209 behaves like JSON parse errors4210 raises an error4211 behaves like JSON parse errors4212 raises an error4213 #parse_response_links4214 does not add oid entry if href not found4215Gitlab::Git::DiffCollection4216 #to_a4217 is expected to be a kind of Array4218 #decorate!4219 modifies the array in place4220 avoids future iterator iterations4221 overflow handling4222 adding few enough files4223 and few enough lines4224 behaves like overflow stuff4225 returns the expected overflow values4226 #overflow?4227 is expected to be falsey4228 #empty?4229 is expected to be falsey4230 #real_size4231 is expected to eq "3"4232 #size4233 is expected to eq 34234 does not change after peeking4235 #line_count4236 is expected to eq 304237 when limiting is disabled4238 behaves like overflow stuff4239 returns the expected overflow values4240 #overflow?4241 is expected to be falsey4242 #empty?4243 is expected to be falsey4244 #real_size4245 is expected to eq "3"4246 #size4247 is expected to eq 34248 does not change after peeking4249 #line_count4250 is expected to eq 304251 and too many lines4252 is expected to eq 04253 behaves like overflow stuff4254 returns the expected overflow values4255 #overflow?4256 is expected to be truthy4257 #empty?4258 is expected to be falsey4259 #real_size4260 is expected to eq "0+"4261 #line_count4262 is expected to eq 10004263 when limiting is disabled4264 is expected to eq 34265 behaves like overflow stuff4266 returns the expected overflow values4267 #overflow?4268 is expected to be falsey4269 #empty?4270 is expected to be falsey4271 #real_size4272 is expected to eq "3"4273 #line_count4274 is expected to eq 30004275 adding too many files4276 and few enough lines4277 is expected to eq 104278 behaves like overflow stuff4279 returns the expected overflow values4280 #overflow?4281 is expected to be truthy4282 #empty?4283 is expected to be falsey4284 #real_size4285 is expected to eq "10+"4286 #line_count4287 is expected to eq 104288 when limiting is disabled4289 is expected to eq 114290 behaves like overflow stuff4291 returns the expected overflow values4292 #overflow?4293 is expected to be falsey4294 #empty?4295 is expected to be falsey4296 #real_size4297 is expected to eq "11"4298 #line_count4299 is expected to eq 114300 and too many lines4301 is expected to eq 34302 behaves like overflow stuff4303 returns the expected overflow values4304 #overflow?4305 is expected to be truthy4306 #empty?4307 is expected to be falsey4308 #real_size4309 is expected to eq "3+"4310 #line_count4311 is expected to eq 1204312 when limiting is disabled4313 is expected to eq 114314 behaves like overflow stuff4315 returns the expected overflow values4316 #overflow?4317 is expected to be falsey4318 #empty?4319 is expected to be falsey4320 #real_size4321 is expected to eq "11"4322 #line_count4323 is expected to eq 3304324 adding exactly the maximum number of files4325 and few enough lines4326 is expected to eq 104327 behaves like overflow stuff4328 returns the expected overflow values4329 #overflow?4330 is expected to be falsey4331 #empty?4332 is expected to be falsey4333 #real_size4334 is expected to eq "10"4335 #line_count4336 is expected to eq 104337 adding too many bytes4338 is expected to eq 94339 behaves like overflow stuff4340 returns the expected overflow values4341 #overflow?4342 is expected to be truthy4343 #empty?4344 is expected to be falsey4345 #real_size4346 is expected to eq "9+"4347 #line_count4348 is expected to eq 104349 when limiting is disabled4350 is expected to eq 104351 behaves like overflow stuff4352 returns the expected overflow values4353 #overflow?4354 is expected to be falsey4355 #empty?4356 is expected to be falsey4357 #real_size4358 is expected to eq "10"4359 #line_count4360 is expected to eq 104361 empty collection4362 behaves like overflow stuff4363 returns the expected overflow values4364 #overflow?4365 is expected to be falsey4366 #empty?4367 is expected to be truthy4368 #size4369 is expected to eq 04370 #real_size4371 is expected to eq "0"4372 #line_count4373 is expected to eq 04374 #each4375 when diff are too large4376 yields Diff instances even when they are too large4377 prunes diffs that are too large4378 when diff is quite large will collapse by default4379 when no collapse is set4380 yields Diff instances even when they are quite big4381 does not prune diffs4382 when no collapse is unset4383 yields Diff instances even when they are quite big4384 single-file collections4385 does not prune diffs4386 multi-file collections4387 prunes diffs that are quite big4388 when go over safe limits on files4389 prunes diffs by default even little ones and sets collapsed_safe_files true4390 when go over safe limits on lines4391 prunes diffs by default even little ones and sets collapsed_safe_lines true4392 when go over safe limits on bytes4393 prunes diffs by default even little ones and sets collapsed_safe_bytes true4394 when limiting is disabled4395 yields Diff instances even when they are quite big4396 does not prune diffs4397 when offset_index is given4398 does not yield diffs before the offset4399 when go over safe limits on bytes4400 considers size of diffs before the offset for prunning4401 .limits4402 when options do not include max_patch_bytes_for_file_extension4403 sets max_patch_bytes_for_file_extension as empty4404 when options include max_patch_bytes_for_file_extension4405 sets value for max_patch_bytes_for_file_extension4406Integrations::ChatMessage::PipelineMessage4407 returns an empty pretext4408 returns the pipeline summary in the activity's title4409 returns pipeline name4410 returns a link to the project in the activity's subtitle4411 returns the build duration in the activity's text property4412 returns the user's avatar image URL in the activity's image property4413 returns the pipeline summary as the attachment's fallback property4414 returns 'good' as the attachment's color property4415 returns the committer's name and username as the attachment's author_name property4416 returns the committer's avatar URL as the attachment's author_icon property4417 returns the committer's GitLab profile URL as the attachment's author_link property4418 returns the pipeline ID, status, and duration as the attachment's title property4419 returns the pipeline URL as the attachment's title_link property4420 returns three attachment fields4421 returns the commit message as the attachment's second field property4422 returns the ref name and link as the attachment's second field property4423 returns the project's name as the attachment's footer property4424 returns the project's avatar URL as the attachment's footer_icon property4425 returns the pipeline's timestamp as the attachment's ts property4426 behaves like Integrations::ChatMessage4427 when input contains link markup4428 strips all link markup characters4429 when the pipeline failed4430 returns the summary with a 'failed' status4431 when the pipeline passed with warnings4432 returns the summary with a 'passed with warnings' status4433 when no user is provided because the pipeline was triggered by the API4434 returns the summary with 'API' as the username4435 when the user does not have an avatar4436 returns an empty string in the activity's image property4437 when the pipeline failed4438 returns 'danger' as the attachment's color property4439 when the pipeline passed with warnings4440 returns 'warning' as the attachment's color property4441 when no user is provided because the pipeline was triggered by the API4442 returns the committer's name and username as the attachment's author_name property4443 returns nil as the attachment's author_icon property4444 returns nil as the attachment's author_link property4445 when a job in the pipeline fails4446 returns five attachment fields4447 returns the stage name and link to the 'Failed jobs' tab on the pipeline's page as the attachment's third field property4448 returns the job name and link as the attachment's fourth field property4449 when lots of jobs across multiple stages fail4450 returns the stage names and links to the 'Failed jobs' tab on the pipeline's page as the attachment's third field property4451 returns the job names and links as the attachment's fourth field property4452 when jobs succeed on retries4453 do not return a job which succeeded on retry4454 when jobs failed even on retries4455 returns only first instance of the failed job4456 when the CI config file contains a YAML error4457 returns four attachment fields4458 returns the YAML error deatils as the attachment's third field property4459 when rendering markdown4460 returns the pipeline summary as the attachments in markdown format4461 #attachment_color4462 when success4463 is expected to eq "good"4464 when passed with warnings4465 is expected to eq "warning"4466 when failed4467 is expected to eq "danger"4468BlobPresenter4469 #web_url4470 is expected to eq "http://localhost/namespace906/project-1113/-/blob/HEAD/files/ruby/regex.rb"4471 #web_path4472 is expected to eq "/namespace906/project-1113/-/blob/HEAD/files/ruby/regex.rb"4473 #edit_blob_path4474 is expected to eq "/namespace906/project-1113/-/edit/HEAD/files/ruby/regex.rb"4475 #raw_path4476 is expected to eq "/namespace906/project-1113/-/raw/HEAD/files/ruby/regex.rb"4477 #replace_path4478 is expected to eq "/namespace906/project-1113/-/update/HEAD/files/ruby/regex.rb"4479 when blob has ref_type4480 when ref_type is heads4481 #web_url4482 is expected to eq "http://localhost/namespace906/project-1113/-/blob/HEAD/files/ruby/regex.rb?ref_type=heads"4483 #web_path4484 is expected to eq "/namespace906/project-1113/-/blob/HEAD/files/ruby/regex.rb?ref_type=heads"4485 #edit_blob_path4486 is expected to eq "/namespace906/project-1113/-/edit/HEAD/files/ruby/regex.rb?ref_type=heads"4487 #raw_path4488 is expected to eq "/namespace906/project-1113/-/raw/HEAD/files/ruby/regex.rb?ref_type=heads"4489 #replace_path4490 is expected to eq "/namespace906/project-1113/-/update/HEAD/files/ruby/regex.rb?ref_type=heads"4491 #history_path4492 is expected to eq "/namespace906/project-1113/-/commits/HEAD/files/ruby/regex.rb?ref_type=heads"4493 #blame_path4494 is expected to eq "/namespace906/project-1113/-/blame/HEAD/files/ruby/regex.rb?ref_type=heads"4495 behaves like #can_current_user_push_to_branch?4496 is expected to eq true4497 current_user is nil4498 is expected to eq false4499 branch does not exist4500 is expected to eq false4501 when ref_type is tags4502 #web_url4503 is expected to eq "http://localhost/namespace906/project-1113/-/blob/HEAD/files/ruby/regex.rb?ref_type=tags"4504 #web_path4505 is expected to eq "/namespace906/project-1113/-/blob/HEAD/files/ruby/regex.rb?ref_type=tags"4506 #edit_blob_path4507 is expected to eq "/namespace906/project-1113/-/edit/HEAD/files/ruby/regex.rb?ref_type=tags"4508 #raw_path4509 is expected to eq "/namespace906/project-1113/-/raw/HEAD/files/ruby/regex.rb?ref_type=tags"4510 #replace_path4511 is expected to eq "/namespace906/project-1113/-/update/HEAD/files/ruby/regex.rb?ref_type=tags"4512 #history_path4513 is expected to eq "/namespace906/project-1113/-/commits/HEAD/files/ruby/regex.rb?ref_type=tags"4514 #blame_path4515 is expected to eq "/namespace906/project-1113/-/blame/HEAD/files/ruby/regex.rb?ref_type=tags"4516 behaves like #can_current_user_push_to_branch?4517 is expected to eq true4518 current_user is nil4519 is expected to eq false4520 branch does not exist4521 is expected to eq false4522 #can_modify_blob?4523 when blob is store externally4524 is expected to be falsey4525 when the user cannot edit the tree4526 is expected to be falsey4527 when ref is a branch4528 is expected to be truthy4529 #can_current_user_push_to_branch?4530 is expected to be falsey4531 when ref is a branch4532 delegates to UserAccess4533 behaves like #can_current_user_push_to_branch?4534 is expected to eq true4535 current_user is nil4536 is expected to eq false4537 branch does not exist4538 is expected to eq false4539 #archived?4540 is expected to eq false4541 #pipeline_editor_path4542 when blob is .gitlab-ci.yml4543 is expected to eq "/namespace906/project-1113/-/ci/editor?branch_name=main"4544 when ref includes the qualifier4545 returns path to unqualified ref4546 Gitpod4547 Gitpod enabled for application and user4548 #gitpod_blob_url4549 is expected to eq "https://gitpod.io#http://localhost/namespace906/project-1113/-/tree/HEAD/files/ruby/regex.rb"4550 Gitpod disabled at application level4551 #gitpod_blob_url4552 is expected to eq nil4553 Gitpod disabled at user level4554 #gitpod_blob_url4555 is expected to eq nil4556 #find_file_path4557 is expected to eq "/namespace906/project-1113/-/find_file/HEAD"4558 #blame_path4559 is expected to eq "/namespace906/project-1113/-/blame/HEAD/files/ruby/regex.rb"4560 #history_path4561 is expected to eq "/namespace906/project-1113/-/commits/HEAD/files/ruby/regex.rb"4562 #permalink_path4563 is expected to eq "/namespace906/project-1113/-/blob/b83d6e391c22777fca1ed3012fce84f633d7fed0/files/ruby/regex.rb"4564 environment has been deployed4565 #environment_formatted_external_url4566 is expected to eq "some.environment"4567 #environment_external_url_for_route_map4568 is expected to eq "https://some.environment/files/ruby/regex.rb"4569 chooses the latest deployed environment for #environment_formatted_external_url and #environment_external_url_for_route_map4570 is expected to eq "another.environment"4571 is expected to eq "https://another.environment/files/ruby/regex.rb"4572 #code_owners4573 is expected to contain exactly4574 #ide_edit_path4575 is expected to eq "/-/ide/project/namespace906/project-1113/edit/HEAD/-/files/ruby/regex.rb"4576 #fork_and_edit_path4577 generates expected URI + query4578 current_user is nil4579 is expected to be nil4580 #ide_fork_and_edit_path4581 generates expected URI + query4582 current_user is nil4583 is expected to be nil4584 #code_navigation_path4585 is expected to eq nil4586 #project_blob_path_root4587 is expected to eq "/namespace906/project-1113/-/blob/HEAD"4588 given a Gitlab::Graphql::Representation::TreeEntry4589 #web_url4590 is expected to eq "http://localhost/namespace906/project-1113/-/blob/HEAD/files/ruby/regex.rb"4591 #web_path4592 is expected to eq "/namespace906/project-1113/-/blob/HEAD/files/ruby/regex.rb"4593 #highlight4594 returns highlighted content4595 returns plain content when :plain is true4596 "to" param is present4597 returns limited highlighted content4598 gitlab-language contains a match4599 passes language to inner call4600 #highlight_and_trim4601 returns trimmed content for longer line4602 #blob_language4603 is expected to eq "ruby"4604 gitlab-language contains a match4605 is expected to eq "cpp"4606 when blob is binary4607 is expected to be nil4608 #raw_plain_data4609 when blob is text4610 does not include html in the content4611 #plain_data4612 when blob is binary4613 returns nil4614 when blob is markup4615 returns plain content4616 when blob has syntax4617 returns highlighted syntax content4618 when blob has plain data4619 returns plain text highlighted content4620MergeRequests::CreatePipelineService4621 #execute4622 creates a detached merge request pipeline4623 defaults to merge_request_event4624 when push options contain ci.skip4625 creates a skipped pipeline4626 with fork merge request4627 when actor has permission to create pipelines in target project4628 creates a pipeline in the target project4629 when the feature is disabled in CI/CD settings4630 creates a pipeline in the source project4631 when source branch is protected4632 when actor does not have permission to update the protected branch in target project4633 creates a pipeline in the source project4634 when actor has permission to update the protected branch in target project4635 creates a pipeline in the target project4636 when actor has permission to create pipelines in forked project4637 creates a pipeline in the source project4638 when actor does not have permission to create pipelines4639 responds with error4640 when service is called multiple times4641 creates a pipeline once4642 when allow_duplicate option is true4643 creates pipelines multiple times4644 when .gitlab-ci.yml does not use workflow:rules4645 without only: [merge_requests] keyword4646 does not create a pipeline4647 with rules that specify creation on a tag4648 does not create a pipeline4649 when workflow:rules are specified4650 when rules request creation on merge request4651 creates a detached merge request pipeline4652 with rules do specify creation on a tag4653 does not create a pipeline4654 when merge request has no commits4655 does not create a pipeline4656 when merge request pipeline creates a dynamic environment4657 associates merge request with the environment4658Banzai::Filter::IssuableReferenceExpansionFilter4659 ignores non-GFM links4660 ignores non-issuable links4661 ignores issuable links with empty content4662 ignores issuable links with custom anchor4663 ignores issuable links to specific comments4664 ignores merge request links to diffs tab4665 handles cross project references4666 handles references from group scopes4667 skips cross project references if the user cannot read cross project4668 does not append state when filter is not enabled4669 when project is in pending delete4670 does not append issue state4671 for work item references4672 behaves like issue / work item references4673 ignores open references4674 appends state to moved references4675 appends state to closed references4676 shows title for references with +4677 truncates long title for references with +4678 shows both title and state for closed references with +4679 shows title for references with +s4680 for references with fenced emoji4681 expands emoji for references with +4682 expands when emoji is embedded at the beginning of a string4683 expands when emoji appears multiple times4684 does not expand when emoji is embedded mid-string4685 when extended summary props are present4686 shows extended summary for references with +s4687 checking N+14688 does not have N+1 for extended summary4689 for issue references4690 behaves like issue / work item references4691 ignores open references4692 appends state to moved references4693 appends state to closed references4694 shows title for references with +4695 truncates long title for references with +4696 shows both title and state for closed references with +4697 shows title for references with +s4698 for references with fenced emoji4699 expands emoji for references with +4700 expands when emoji is embedded at the beginning of a string4701 expands when emoji appears multiple times4702 does not expand when emoji is embedded mid-string4703 when extended summary props are present4704 shows extended summary for references with +s4705 checking N+14706 does not have N+1 for extended summary4707 for merge request references4708 ignores open merge request references4709 ignores locked merge request references4710 appends state to closed merge request references4711 appends state to merged merge request references4712 shows title for references with +4713 shows title for references with +s4714 when extended summary props are present4715 shows extended summary for references with +s4716 checking N+14717 does not have N+1 for extended summary4718Gitlab::Gfm::UploadsRewriter4719 text contains links to uploads4720 does not rewrite plain links as embedded4721 does not casue a timeout on pathological text4722 file are stored locally4723 #rewrite4724 rewrites content4725 copies files4726 does not remove old files4727 generates a new secret for each file4728 skips nil files do4729 skips non-existant files4730 files are stored remotely4731 #rewrite4732 rewrites content4733 copies files4734 does not remove old files4735 generates a new secret for each file4736 skips nil files do4737 skips non-existant files4738 #needs_rewrite?4739 is expected to eq true4740Projects::UpdatePagesService4741 fails if no artifacts4742 fails for invalid archive4743 when a deploy stage already exists4744 assigns the deploy stage4745 when a deploy stage does not exists4746 assigns the deploy stage4747 for new artifacts4748 for a valid job4749 doesn't delete artifacts after deploying4750 succeeds4751 publishes a PageDeployedEvent event with project id and namespace id4752 creates pages_deployment and saves it in the metadata4753 does not fail if pages_metadata is absent4754 limits pages size4755 limits pages file count4756 fails when uploaded deployment size is wrong4757 behaves like old deployments4758 deactivates old deployments from the same project with the same path prefix4759 when archive does not have pages directory4760 returns an error4761 when there is a custom root config4762 when the directory specified with `publish` is included in the artifacts4763 creates pages_deployment and saves it in the metadata4764 when the directory specified with `publish` is not included in the artifacts4765 returns an error4766 when there is a folder named `public`, but `publish` specifies a different one4767 returns an error4768 when timeout happens by DNS error4769 raises an error4770 when missing artifacts metadata4771 does not raise an error as failed job4772 with background jobs running4773 succeeds4774 when sha on branch was updated before deployment was uploaded4775 creates a new pages deployment and mark it as deployed4776 behaves like old deployments4777 deactivates old deployments from the same project with the same path prefix4778 when newer deployment present4779 fails with outdated reference message4780 when artifacts archive does not have sha2564781 fails with exception raised4782 maximum pages artifacts size4783 when maximum pages size is set to zero4784 behaves like pages size limit is4785 when size is below the limit4786 updates pages correctly4787 behaves like old deployments4788 deactivates old deployments from the same project with the same path prefix4789 when size is above the limit4790 limits the maximum size of gitlab pages4791 when size is limited on the instance level4792 behaves like pages size limit is4793 when size is below the limit4794 updates pages correctly4795 behaves like old deployments4796 deactivates old deployments from the same project with the same path prefix4797 when size is above the limit4798 limits the maximum size of gitlab pages4799 when retrying the job4800 marks older pages:deploy jobs retried4801Projects::MoveAccessService4802 #execute4803 when both projects are in the same namespace4804 does not refresh project owner authorized projects4805 behaves like move the accesses4806 moves the accesses4807 rollbacks if an exception is raised4808 when projects are in different namespaces4809 refreshes both project owner authorized projects4810 behaves like move the accesses4811 moves the accesses4812 rollbacks if an exception is raised4813 when remove_remaining_elements is false4814 does not remove remaining memberships4815 does not remove remaining group links4816 does not remove remaining authorizations4817Backup::DatabaseModel4818 # order random4819 #connection4820 an instance of a ActiveRecord::Base.connection4821 #config4822 when no GITLAB_BACKUP_PG* variables are set4823 behaves like no configuration is overridden4824 ActiveRecord backup configuration is expected to equal application configuration4825 PostgreSQL ENV is expected to equal application configuration4826 when GITLAB_BACKUP_PG* variables are set4827 env_variable: "GITLAB_BACKUP_PGHOST", overridden_value: "test.invalid."4828 behaves like environment variables override application configuration4829 ActiveRecord backup configuration overrides application configuration4830 PostgreSQL ENV overrides application configuration4831 env_variable: "GITLAB_BACKUP_PGUSER", overridden_value: "some_user"4832 behaves like environment variables override application configuration4833 ActiveRecord backup configuration overrides application configuration4834 PostgreSQL ENV overrides application configuration4835 env_variable: "GITLAB_BACKUP_PGPORT", overridden_value: "1543"4836 behaves like environment variables override application configuration4837 ActiveRecord backup configuration overrides application configuration4838 PostgreSQL ENV overrides application configuration4839 env_variable: "GITLAB_BACKUP_PGPASSWORD", overridden_value: "secret"4840 behaves like environment variables override application configuration4841 ActiveRecord backup configuration overrides application configuration4842 PostgreSQL ENV overrides application configuration4843 env_variable: "GITLAB_BACKUP_PGSSLMODE", overridden_value: "allow"4844 behaves like environment variables override application configuration4845 ActiveRecord backup configuration overrides application configuration4846 PostgreSQL ENV overrides application configuration4847 env_variable: "GITLAB_BACKUP_PGSSLKEY", overridden_value: "some_key"4848 behaves like environment variables override application configuration4849 ActiveRecord backup configuration overrides application configuration4850 PostgreSQL ENV overrides application configuration4851 env_variable: "GITLAB_BACKUP_PGSSLCERT", overridden_value: "/path/to/cert"4852 behaves like environment variables override application configuration4853 ActiveRecord backup configuration overrides application configuration4854 PostgreSQL ENV overrides application configuration4855 env_variable: "GITLAB_BACKUP_PGSSLROOTCERT", overridden_value: "/path/to/root/cert"4856 behaves like environment variables override application configuration4857 ActiveRecord backup configuration overrides application configuration4858 PostgreSQL ENV overrides application configuration4859 env_variable: "GITLAB_BACKUP_PGSSLCRL", overridden_value: "/path/to/crl"4860 behaves like environment variables override application configuration4861 ActiveRecord backup configuration overrides application configuration4862 PostgreSQL ENV overrides application configuration4863 env_variable: "GITLAB_BACKUP_PGSSLCOMPRESSION", overridden_value: "1"4864 behaves like environment variables override application configuration4865 ActiveRecord backup configuration overrides application configuration4866 PostgreSQL ENV overrides application configuration4867 when GITLAB_BACKUP_<DBNAME>_PG* variables are set4868 and environment variables are for the current database name4869 env_variable: "GITLAB_BACKUP_MAIN_PGHOST", overridden_value: "test.invalid."4870 behaves like environment variables override application configuration4871 ActiveRecord backup configuration overrides application configuration4872 PostgreSQL ENV overrides application configuration4873 env_variable: "GITLAB_BACKUP_MAIN_PGUSER", overridden_value: "some_user"4874 behaves like environment variables override application configuration4875 ActiveRecord backup configuration overrides application configuration4876 PostgreSQL ENV overrides application configuration4877 env_variable: "GITLAB_BACKUP_MAIN_PGPORT", overridden_value: "1543"4878 behaves like environment variables override application configuration4879 ActiveRecord backup configuration overrides application configuration4880 PostgreSQL ENV overrides application configuration4881 env_variable: "GITLAB_BACKUP_MAIN_PGPASSWORD", overridden_value: "secret"4882 behaves like environment variables override application configuration4883 ActiveRecord backup configuration overrides application configuration4884 PostgreSQL ENV overrides application configuration4885 env_variable: "GITLAB_BACKUP_MAIN_PGSSLMODE", overridden_value: "allow"4886 behaves like environment variables override application configuration4887 ActiveRecord backup configuration overrides application configuration4888 PostgreSQL ENV overrides application configuration4889 env_variable: "GITLAB_BACKUP_MAIN_PGSSLKEY", overridden_value: "some_key"4890 behaves like environment variables override application configuration4891 ActiveRecord backup configuration overrides application configuration4892 PostgreSQL ENV overrides application configuration4893 env_variable: "GITLAB_BACKUP_MAIN_PGSSLCERT", overridden_value: "/path/to/cert"4894 behaves like environment variables override application configuration4895 ActiveRecord backup configuration overrides application configuration4896 PostgreSQL ENV overrides application configuration4897 env_variable: "GITLAB_BACKUP_MAIN_PGSSLROOTCERT", overridden_value: "/path/to/root/cert"4898 behaves like environment variables override application configuration4899 ActiveRecord backup configuration overrides application configuration4900 PostgreSQL ENV overrides application configuration4901 env_variable: "GITLAB_BACKUP_MAIN_PGSSLCRL", overridden_value: "/path/to/crl"4902 behaves like environment variables override application configuration4903 ActiveRecord backup configuration overrides application configuration4904 PostgreSQL ENV overrides application configuration4905 env_variable: "GITLAB_BACKUP_MAIN_PGSSLCOMPRESSION", overridden_value: "1"4906 behaves like environment variables override application configuration4907 ActiveRecord backup configuration overrides application configuration4908 PostgreSQL ENV overrides application configuration4909 and environment variables are for another database4910 env_variable: "GITLAB_BACKUP_CI_PGHOST", overridden_value: "test.invalid."4911 behaves like no configuration is overridden4912 ActiveRecord backup configuration is expected to equal application configuration4913 PostgreSQL ENV is expected to equal application configuration4914 env_variable: "GITLAB_BACKUP_CI_PGUSER", overridden_value: "some_user"4915 behaves like no configuration is overridden4916 ActiveRecord backup configuration is expected to equal application configuration4917 PostgreSQL ENV is expected to equal application configuration4918 env_variable: "GITLAB_BACKUP_CI_PGPORT", overridden_value: "1543"4919 behaves like no configuration is overridden4920 ActiveRecord backup configuration is expected to equal application configuration4921 PostgreSQL ENV is expected to equal application configuration4922 env_variable: "GITLAB_BACKUP_CI_PGPASSWORD", overridden_value: "secret"4923 behaves like no configuration is overridden4924 ActiveRecord backup configuration is expected to equal application configuration4925 PostgreSQL ENV is expected to equal application configuration4926 env_variable: "GITLAB_BACKUP_CI_PGSSLMODE", overridden_value: "allow"4927 behaves like no configuration is overridden4928 ActiveRecord backup configuration is expected to equal application configuration4929 PostgreSQL ENV is expected to equal application configuration4930 env_variable: "GITLAB_BACKUP_CI_PGSSLKEY", overridden_value: "some_key"4931 behaves like no configuration is overridden4932 ActiveRecord backup configuration is expected to equal application configuration4933 PostgreSQL ENV is expected to equal application configuration4934 env_variable: "GITLAB_BACKUP_CI_PGSSLCERT", overridden_value: "/path/to/cert"4935 behaves like no configuration is overridden4936 ActiveRecord backup configuration is expected to equal application configuration4937 PostgreSQL ENV is expected to equal application configuration4938 env_variable: "GITLAB_BACKUP_CI_PGSSLROOTCERT", overridden_value: "/path/to/root/cert"4939 behaves like no configuration is overridden4940 ActiveRecord backup configuration is expected to equal application configuration4941 PostgreSQL ENV is expected to equal application configuration4942 env_variable: "GITLAB_BACKUP_CI_PGSSLCRL", overridden_value: "/path/to/crl"4943 behaves like no configuration is overridden4944 ActiveRecord backup configuration is expected to equal application configuration4945 PostgreSQL ENV is expected to equal application configuration4946 env_variable: "GITLAB_BACKUP_CI_PGSSLCOMPRESSION", overridden_value: "1"4947 behaves like no configuration is overridden4948 ActiveRecord backup configuration is expected to equal application configuration4949 PostgreSQL ENV is expected to equal application configuration4950 when both GITLAB_BACKUP_PGUSER and GITLAB_BACKUP_MAIN_PGUSER variable are present4951 prefers more specific GITLAB_BACKUP_MAIN_PGUSER4952ProcessCommitWorker4953 is deduplicated4954 #perform4955 does not process the commit when the project does not exist4956 does not process the commit when the user does not exist4957 is labeled as idempotent4958 performs multiple times sequentially without raising an exception4959 processes the commit message4960 updates the issue metrics4961 #process_commit_message4962 when pushing to the default branch4963 closes issues that should be closed per the commit message4964 creates cross references4965 when pushing to a non-default branch4966 does not close any issues4967 does not create cross references4968 when commit is a merge request merge commit to the default branch4969 does not close any issues from the commit message4970 still creates cross references4971 #close_issues4972 creates Issue::CloseWorker jobs4973 #update_issue_metrics4974 when commit has issue reference4975 when issue has no first_mentioned_in_commit_at set4976 updates issue metrics4977 when issue has first_mentioned_in_commit_at earlier than given committed_date4978 doesn't update issue metrics4979 when issue has first_mentioned_in_commit_at later than given committed_date4980 doesn't update issue metrics4981 when commit has no issue references4982 doesn't execute any queries with false conditions4983Gitlab::Kubernetes::DefaultNamespace4984 #from_environment_name4985 generates a slug and passes it to #from_environment_slug4986 #from_environment_slug4987 namespace per environment is enabled4988 platform namespace is specified4989 is expected to eq "platform-namespace-environment8"4990 cluster is unmanaged4991 is expected to eq "platform-namespace"4992 platform namespace is blank4993 constructs a namespace from the project and environment slug4994 behaves like handles very long project paths4995 is expected to satisfy expression `s.length <= 63`4996 namespace per environment is disabled4997 platform namespace is specified4998 is expected to eq "platform-namespace"4999 platform namespace is blank5000 constructs a namespace from just the project5001 behaves like handles very long project paths5002 is expected to satisfy expression `s.length <= 63`5003Gitlab::Database::WithLockRetries5004 #run5005 requires block5006 when DISABLE_LOCK_RETRIES is set5007 executes the passed block without retrying5008 when lock retry is enabled5009 lock_fiber5010 acquires lock successfully5011 after 3 iterations5012 behaves like retriable exclusive lock on `projects`5013 succeeds executing the given block5014 setting the idle transaction timeout5015 when there is no outer transaction: disable_ddl_transaction! is set in the migration5016 does not disable the idle transaction timeout5017 when there is outer transaction: disable_ddl_transaction! is not set in the migration5018 disables the idle transaction timeout so the code can sleep and retry5019 after the retries are exhausted5020 when there is no outer transaction: disable_ddl_transaction! is set in the migration5021 does not disable the lock_timeout5022 when there is outer transaction: disable_ddl_transaction! is not set in the migration5023 disables the lock_timeout5024 after the retries, without setting lock_timeout5025 behaves like retriable exclusive lock on `projects`5026 succeeds executing the given block5027 after the retries, when requested to raise an error5028 raises an error instead of waiting indefinitely for the lock5029 when statement timeout is reached5030 raises QueryCanceled error5031 restore local database variables5032 is expected not to change `connection.execute("SHOW lock_timeout").to_a`5033 is expected not to change `connection.execute("SHOW idle_in_transaction_session_timeout").to_a`5034 casting durations correctly5035 executes `SET LOCAL lock_timeout` using the configured timeout value in milliseconds5036 calls `sleep` after the first iteration fails, using the configured sleep time5037 Stop using subtransactions - allow_savepoints: false5038 prevents running inside already open transaction5039 does not raise the error if not inside open transaction5040Discussion ResolvableDiscussion5041 #resolvable?5042 when potentially resolvable5043 when all notes are unresolvable5044 returns false5045 when some notes are unresolvable and some notes are resolvable5046 returns true5047 when all notes are resolvable5048 returns true5049 when not potentially resolvable5050 returns false5051 #resolved?5052 when not resolvable5053 returns false5054 when resolvable5055 when all resolvable notes are resolved5056 returns true5057 when some resolvable notes are not resolved5058 returns false5059 #to_be_resolved?5060 when not resolvable5061 returns false5062 when resolvable5063 when all resolvable notes are resolved5064 returns false5065 when some resolvable notes are not resolved5066 returns true5067 #can_resolve?5068 when not resolvable5069 returns false5070 when resolvable5071 when not signed in5072 returns false5073 when signed in5074 when the signed in user is the noteable author5075 returns true5076 when noteable is locked5077 returns false5078 when the signed in user can push to the project5079 returns true5080 when the noteable has no author5081 returns true5082 when the signed in user is a random user5083 returns false5084 when the noteable has no author5085 returns false5086 #resolve!5087 when not resolvable5088 returns nil5089 doesn't set resolved_at5090 doesn't set resolved_by5091 doesn't mark as resolved5092 when resolvable5093 when all resolvable notes are resolved5094 doesn't change resolved_at on the resolved notes5095 doesn't change resolved_by on the resolved notes5096 doesn't change the resolved state on the resolved notes5097 doesn't change resolved_at5098 doesn't change resolved_by5099 doesn't change resolved state5100 when some resolvable notes are resolved5101 doesn't change resolved_at on the resolved note5102 doesn't change resolved_by on the resolved note5103 doesn't change the resolved state on the resolved note5104 sets resolved_at on the unresolved note5105 sets resolved_by on the unresolved note5106 marks the unresolved note as resolved5107 sets resolved_at5108 sets resolved_by5109 marks as resolved5110 when no resolvable notes are resolved5111 sets resolved_at on the unresolved notes5112 sets resolved_by on the unresolved notes5113 marks the unresolved notes as resolved5114 sets resolved_at5115 sets resolved_by5116 marks as resolved5117 broadcasts note change of the noteable5118 #unresolve!5119 when not resolvable5120 returns nil5121 when resolvable5122 when all resolvable notes are resolved5123 unsets resolved_at on the resolved notes5124 unsets resolved_by on the resolved notes5125 unmarks the resolved notes as resolved5126 unsets resolved_at5127 unsets resolved_by5128 unmarks as resolved5129 broadcasts note change of the noteable5130 when some resolvable notes are resolved5131 unsets resolved_at on the resolved note5132 unsets resolved_by on the resolved note5133 unmarks the resolved note as resolved5134 #first_note_to_resolve5135 returns the first note that still needs to be resolved5136 #last_resolved_note5137 returns the last note that was resolved5138 #clear_memoized_values5139 resets the memoized values5140UsersFinder5141 #execute5142EscapeUtils.escape_url is deprecated. Use CGI.escape instead, performance is similar5143EscapeUtils.escape_url is deprecated. Use CGI.escape instead, performance is similar5144 with a normal user5145 behaves like executes users finder as normal user5146 returns searchable users5147 filters by username5148 filters by id5149 filters by username (case insensitive)5150 filters by search5151 does not filter by private emails search5152 filters by external users5153 filters by non external users5154 filters by created_at5155 filters by non internal users5156 does not filter by custom attributes5157 orders returned results5158 does not filter by admins5159 minimum character limit for search5160 passes use_minimum_char_limit from params5161 allows searching with 2 characters when use_minimum_char_limit is false5162 does not allow searching with 2 characters when use_minimum_char_limit is not set5163 with an admin user5164 when admin mode setting is disabled5165 behaves like executes users finder as admin5166 filters by external users5167 returns all users5168 filters by blocked users5169 filters by active users5170 returns only admins5171 filters by custom attributes5172 filters by private emails search5173 when admin mode setting is enabled5174 when in admin mode5175 behaves like executes users finder as admin5176 filters by external users5177 returns all users5178 filters by blocked users5179 filters by active users5180 returns only admins5181 filters by custom attributes5182 filters by private emails search5183 when not in admin mode5184 behaves like executes users finder as normal user5185 returns searchable users5186 filters by username5187 filters by id5188 filters by username (case insensitive)5189 filters by search5190 does not filter by private emails search5191 filters by external users5192 filters by non external users5193 filters by created_at5194 filters by non internal users5195 does not filter by custom attributes5196 orders returned results5197 does not filter by admins5198 minimum character limit for search5199 passes use_minimum_char_limit from params5200 allows searching with 2 characters when use_minimum_char_limit is false5201 does not allow searching with 2 characters when use_minimum_char_limit is not set5202ReactiveCaching5203 #with_reactive_cache5204 when cache is empty5205 is expected to be nil5206 updates the cache lifespan5207 behaves like reactive worker call5208 performs caching with correct worker5209 behaves like reactive worker call5210 performs caching with correct worker5211 when the cache is full5212 behaves like a cacheable value5213 is expected to eq 45214 does not enqueue a background worker5215 updates the cache lifespan5216 and expired5217 is expected to be nil5218 behaves like reactive worker call5219 performs caching with correct worker5220 behaves like reactive worker call5221 performs caching with correct worker5222 when the cache contains non-nil but blank value5223 behaves like a cacheable value5224 is expected to eq false5225 does not enqueue a background worker5226 updates the cache lifespan5227 and expired5228 is expected to be nil5229 behaves like reactive worker call5230 performs caching with correct worker5231 behaves like reactive worker call5232 performs caching with correct worker5233 when the cache contains nil value5234 behaves like a cacheable value5235 is expected to eq nil5236 does not enqueue a background worker5237 updates the cache lifespan5238 and expired5239 is expected to be nil5240 behaves like reactive worker call5241 performs caching with correct worker5242 behaves like reactive worker call5243 performs caching with correct worker5244 #with_reactive_cache_set5245 calls with_reactive_cache5246 data returned5247 saves keys in set5248 returns the data5249 .reactive_cache_worker_finder5250 with default reactive_cache_worker_finder5251 calls the activerecord find_by method5252 with custom reactive_cache_worker_finder5253 overrides the default reactive_cache_worker_finder5254 #clear_reactive_cache!5255 is expected to be nil5256 is expected to be falsy5257 #exclusively_update_reactive_cache!5258 when the lease is free and lifetime is not exceeded5259 takes and releases the lease5260 enqueues a repeat worker5261 calls a reactive_cache_updated only once if content did not change on subsequent update5262 does not delete the value key5263 behaves like successful cache5264 caches the result of #calculate_reactive_cache5265 does not raise the exception5266 when :external_dependency cache5267 enqueues a repeat worker5268 when reactive_cache_hard_limit is set5269 when cache size is over the overridden limit5270 raises ExceededReactiveCacheLimit exception and does not cache new data5271 when reactive_cache_limit_enabled? is overridden to return false5272 behaves like successful cache5273 caches the result of #calculate_reactive_cache5274 does not raise the exception5275 when cache size is within the overridden limit5276 behaves like successful cache5277 caches the result of #calculate_reactive_cache5278 does not raise the exception5279 and #calculate_reactive_cache raises an exception5280 leaves the cache untouched5281 does not enqueue a repeat worker5282 when lifetime is exceeded5283 skips the calculation5284 deletes the value key5285 when the lease is already taken5286 skips the calculation5287 default options5288 is expected to be a kind of ActiveSupport::Duration5289 is expected to be a kind of ActiveSupport::Duration5290 is expected to be a kind of ActiveSupport::Duration5291 is expected to respond to #call5292 is expected to be nil5293 is expected to respond to #call5294 classes including this concern5295 sets reactive_cache_work_type5296Tooling::JobMetrics5297 # order random5298 #update_tag5299 when the tag to update is not in the default tags list5300 returns a warning to the user5301 does not write to the metrics file5302 when the tag to update is in the default tags list5303 calls the update_file method with the correct arguments5304 #valid_metrics_file?5305 when the metrics file cannot be loaded in memory5306 returns false5307 when the metrics file can be loaded in memory5308 when the metrics file validation succeeds5309 returns true5310 when the metrics file validation fails5311 returns false5312 #initialize5313 when a path is given5314 instantiates the object5315 sets the correct path for the metrics file5316 when a path is not given5317 when the JOB_METRICS_FILE_PATH env variable is set5318 instantiates the object5319 sets the correct path for the metrics file5320 when the JOB_METRICS_FILE_PATH env variable is not set5321 raises an error5322 #default_metrics5323 returns the expected metrics keys5324 #default_tags5325 returns the expected tags keys5326 when an ENV variable is not set5327 replaces the value with nil5328 #create_metrics_file5329 when a valid metrics file exists5330 prints a message to the user5331 does not overwrite the existing metrics file5332 when a valid metrics file does not exist5333 persists the metrics file5334 #valid_metrics?5335 metrics hash keys5336 when it is missing a key5337 returns false5338 when it has an extra key5339 returns false5340 metrics hash tags keys5341 when it is missing a key5342 returns false5343 when it has an extra key5344 returns false5345 metrics hash fields keys5346 when it is missing a key5347 returns false5348 when it has an extra key5349 returns false5350 when the metrics hash is valid5351 returns true5352 #persist_metrics_file5353 when the metrics hash is not valid5354 returns a warning to the user5355 does not write to the metrics file5356 when the metrics hash is valid5357 persists the metrics file5358 #update_field5359 when the field to update is not in the default fields list5360 returns a warning to the user5361 does not write to the metrics file5362 when the field to update is in the default fields list5363 calls the update_file method with the correct arguments5364 #time5365 when the CI_PIPELINE_CREATED_AT env variable is set5366 returns the correct time5367 when the CI_PIPELINE_CREATED_AT env variable is not set5368 returns the current time5369 #update_file5370 when the metrics file is not valid5371 returns a warning to the user5372 does not write to the metrics file5373 when the metrics file is valid5374 when updating a tag5375 updates the tag value5376 when updating a field5377 updates the field value5378 #default_fields5379 returns the expected fields keys5380 when an ENV variable is not set5381 replaces the value with nil5382 #load_metrics_file5383 when the metrics file does not exist on disk5384 returns nil5385 when the metrics file exists on disk5386 when the metrics file does not contain valid JSON5387 returns nil5388 when the metrics file contains valid JSON5389 returns the content of the file as a hash with symbolized keys5390 #push_metrics5391 when the metrics file is not valid5392 returns a warning to the user5393 does not write to the metrics file5394 when the metrics file is valid5395 pushes the data to InfluxDB5396 sets the job_duration_seconds field5397 when we are missing ENV variables to push to influxDB5398 displays an error to the user5399 when pushing the data to InfluxDB raises an exception5400 displays an error to the user5401 when some tags/fields are empty/nil5402 removes the metrics with empty/nil values from the metrics list5403Appearance5404 example at ./spec/models/appearance_spec.rb:95405 is expected to eq nil5406 is expected to have many uploads5407 default values5408 is expected to eq ""5409 is expected to eq ""5410 is expected to eq ""5411 is expected to eq ""5412 is expected to eq ""5413 is expected to eq ""5414 is expected to eq ""5415 is expected to eq ""5416 is expected to eq ""5417 is expected to eq "#E75E40"5418 is expected to eq "#FFFFFF"5419 is expected to eq false5420 is expected to contain exactly 192 and 5125421 #single_appearance_row5422 adds an error when more than 1 row exists5423 with uploads5424 behaves like model with uploads5425 .destroy5426 with mounted uploader5427 deletes remote uploads5428 with not mounted uploads5429 with local files5430 deletes any FileUploader uploads which are not mounted (PENDING: No reason given)5431 deletes local files (PENDING: No reason given)5432 with remote files5433 deletes any FileUploader uploads which are not mounted (PENDING: No reason given)5434 deletes remote files (PENDING: No reason given)5435 behaves like logo paths5436 returns nil when there is no upload5437 returns the path when the upload has been orphaned5438 returns a local path using the system route5439 with asset host configured5440 returns a full URL with the system path5441 behaves like logo paths5442 returns nil when there is no upload5443 returns the path when the upload has been orphaned5444 returns a local path using the system route5445 with asset host configured5446 returns a full URL with the system path5447 behaves like logo paths5448 returns nil when there is no upload5449 returns the path when the upload has been orphaned5450 returns a local path using the system route5451 with asset host configured5452 returns a full URL with the system path5453 behaves like logo paths5454 returns nil when there is no upload5455 returns the path when the upload has been orphaned5456 returns a local path using the system route5457 with asset host configured5458 returns a full URL with the system path5459 behaves like icon paths sized5460 returns icon path with size parameter5461 behaves like icon paths sized5462 returns icon path with size parameter5463 validations5464 is expected to allow :message_background_color to be ‹nil›5465 is expected to allow :message_background_color to be ‹"#000"›5466 is expected to allow :message_background_color to be ‹"#AABBCC"›5467 is expected not to allow :message_background_color to be ‹"000"›5468 is expected to allow :message_font_color to be ‹nil›5469 is expected to allow :message_font_color to be ‹"#000"›5470 is expected to allow :message_font_color to be ‹"#AABBCC"›5471 is expected not to allow :message_font_color to be ‹"000"›5472 valid pwa attributes5473 attribute: :pwa_name, value: nil5474 behaves like validation allows5475 is expected to allow :pwa_name to be ‹nil›5476 attribute: :pwa_name, value: "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"5477 behaves like validation allows5478 is expected to allow :pwa_name to be ‹"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"›5479 attribute: :pwa_short_name, value: nil5480 behaves like validation allows5481 is expected to allow :pwa_short_name to be ‹nil›5482 attribute: :pwa_short_name, value: "SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"5483 behaves like validation allows5484 is expected to allow :pwa_short_name to be ‹"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"›5485 attribute: :pwa_description, value: nil5486 behaves like validation allows5487 is expected to allow :pwa_description to be ‹nil›5488 attribute: :pwa_description, value: "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"5489 behaves like validation allows5490 is expected to allow :pwa_description to be ‹"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT...›5491 invalid pwa attributes5492 attribute: :pwa_name, value: "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", message: "is too long (maximum is 255 characters)"5493 behaves like validation permits with message5494 is expected not to allow :pwa_name to be ‹"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"›, producing a custom validation error on failure5495 attribute: :pwa_short_name, value: "SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS", message: "is too long (maximum is 255 characters)"5496 behaves like validation permits with message5497 is expected not to allow :pwa_short_name to be ‹"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"›, producing a custom validation error on failure5498 attribute: :pwa_description, value: "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT", message: "is too long (maximum is 2048 characters)"5499 behaves like validation permits with message5500 is expected not to allow :pwa_description to be ‹"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT...›, producing a custom validation error on failure5501 email_header_and_footer_enabled5502 default email_header_and_footer_enabled flag value5503 returns email_header_and_footer_enabled as true5504 when setting email_header_and_footer_enabled flag value5505 returns email_header_and_footer_enabled as true5506Gitlab::Redis::FeatureFlag5507 # order random5508 #fetch_config5509 when redis.yml exists5510 when the fallback has a redis.yml entry5511 is expected to eq {"fallback redis.yml"=>123}5512 and an instance config file exists5513 is expected to eq {"instance specific file"=>456}5514 and the instance has a redis.yml entry5515 is expected to eq {"instance redis.yml"=>789}5516 when no redis config file exsits5517 returns nil5518 when resque.yml exists5519 returns the config from resque.yml5520 behaves like redis_shared_examples5521 .config_file_name5522 when there is no config file anywhere5523 is expected to be nil5524 .store5525 with old format5526 behaves like redis store5527 instantiates Redis::Store5528 with the namespace5529 uses specified namespace5530 with new format5531 behaves like redis store5532 instantiates Redis::Store5533 with the namespace5534 uses specified namespace5535 .params5536 withstands mutation5537 when url contains unix socket reference5538 with old format5539 returns path key instead5540 with new format5541 returns path key instead5542 when url is host based5543 with old format5544 returns hash with host, port, db, and password5545 with new format5546 rails_env: "development", host: "development-host"5547 returns hash with host, port, db, and password5548 rails_env: "test", host: "test-host"5549 returns hash with host, port, db, and password5550 rails_env: "production", host: "production-host"5551 returns hash with host, port, db, and password5552 with redis cluster format5553 rails_env: "development", host: "development-master"5554 returns hash with cluster and password5555 rails_env: "test", host: "test-master"5556 returns hash with cluster and password5557 rails_env: "production", host: "production-master"5558 returns hash with cluster and password5559 .url5560 withstands mutation5561 when yml file with env variable5562 reads redis url from env variable5563 .version5564 returns a version5565 .with5566 when running on single-threaded runtime5567 instantiates a connection pool with size 55568 when running on multi-threaded runtime5569 instantiates a connection pool with a size based on the concurrency of the worker5570 when there is no config at all5571 can run an empty block5572 #db5573 with old format5574 returns the correct db5575 with new format5576 returns the correct db5577 with cluster-mode5578 returns the correct db5579 #sentinels5580 when sentinels are defined5581 rails_env: "development", hosts: ["development-replica1", "development-replica2"]5582 returns an array of hashes with host and port keys5583 rails_env: "test", hosts: ["test-replica1", "test-replica2"]5584 returns an array of hashes with host and port keys5585 rails_env: "production", hosts: ["production-replica1", "production-replica2"]5586 returns an array of hashes with host and port keys5587 when sentinels are not defined5588 returns nil5589 when cluster is defined5590 returns nil5591 #sentinels?5592 when sentinels are defined5593 returns true5594 when sentinels are not defined5595 is expected to eq nil5596 when cluster is defined5597 returns false5598 #raw_config_hash5599 returns old-style single url config in a hash5600 returns cluster config without url key in a hash5601 #parse_client_tls_options5602 when configuration does not have TLS related options5603 returns the coniguration as-is5604 when specified certificate file does not exist5605 raises error about missing certificate file5606 when specified key file does not exist5607 raises error about missing key file5608 when only certificate file is specified5609 renders resque.yml correctly5610 when only key file is specified5611 renders resque.yml correctly5612 when configuration valid TLS related options5613 converts cert_file and key_file appropriately5614 #fetch_config5615 raises an exception when the config file contains invalid yaml5616 when redis.yml exists5617 uses config/redis.yml5618 when no config file exsits5619 returns nil5620 when resque.yml exists5621 returns the config from resque.yml5622 .cache_store5623 has a default ttl of 1 hour5624Mutations::ReleaseAssetLinks::Update5625 #ready?5626 when link_type is included as an argument but is passed nil5627 raises a validation error5628 #resolve5629 when the current user has access to update the link5630 name5631 when a new name is provided5632 updates the name5633 behaves like no changes to the link except for the5634 does not change other link properties5635 with protected tag5636 when user has access to the protected tag5637 does not have errors5638 when user does not have access to the protected tag5639 raises a resource access error5640 when nil is provided5641 behaves like validation error with messages5642 returns the updated link as nil5643 returns a validation error5644 url5645 when a new URL is provided5646 updates the url5647 behaves like no changes to the link except for the5648 does not change other link properties5649 when nil is provided5650 behaves like validation error with messages5651 returns the updated link as nil5652 returns a validation error5653 filepath5654 when a new filepath is provided5655 updates the filepath5656 behaves like no changes to the link except for the5657 does not change other link properties5658 when nil is provided5659 updates the filepath to nil5660 link_type5661 when a new link type is provided5662 updates the link type5663 behaves like no changes to the link except for the5664 does not change other link properties5665 when the current user does not have access to update the link5666 raises an error5667 when the link doesn't exist5668 raises an error5669ContainerRegistry::Event5670 #supported?5671 action: "delete", supported: true5672 is expected to eq true5673 action: "push", supported: true5674 is expected to eq true5675 action: "mount", supported: false5676 is expected to eq false5677 action: "pull", supported: false5678 is expected to eq false5679 #handle!5680 behaves like event with project statistics update5681 enqueues a project statistics update5682 clears the cache for the namespace container repositories size5683 with no target tag5684 behaves like event without project statistics update5685 does not queue a project statistics update5686 with a target digest5687 behaves like event without project statistics update5688 does not queue a project statistics update5689 with a delete action5690 without a target digest5691 behaves like event without project statistics update5692 does not queue a project statistics update5693 with a target digest5694 behaves like event with project statistics update5695 enqueues a project statistics update5696 clears the cache for the namespace container repositories size5697 with an unsupported action5698 behaves like event without project statistics update5699 does not queue a project statistics update5700 with an invalid project repository path5701 behaves like event without project statistics update5702 does not queue a project statistics update5703 with no project repository path5704 behaves like event without project statistics update5705 does not queue a project statistics update5706 #track!5707 with a respository target5708 repository_path: "group/test/container", action: "push", tracking_action: "push_repository"5709 creates a tracking event5710 repository_path: "group/test/container", action: "delete", tracking_action: "delete_repository"5711 creates a tracking event5712 repository_path: "foo/bar", action: "push", tracking_action: "create_repository"5713 creates a tracking event5714 repository_path: "foo/bar", action: "delete", tracking_action: "delete_repository"5715 creates a tracking event5716 with a tag target5717 repository_path: "group/test/container", action: "push", tracking_action: "push_tag"5718 creates a tracking event5719 repository_path: "group/test/container", action: "delete", tracking_action: "delete_tag"5720 creates a tracking event5721 repository_path: "foo/bar", action: "push", tracking_action: "push_tag"5722 creates a tracking event5723 repository_path: "foo/bar", action: "delete", tracking_action: "delete_tag"5724 creates a tracking event5725 with a deploy token as the actor5726 does not send a tracking event to HLLRedisCounter5727 with a user as the actor5728 target: {"tag"=>"latest"}, action: "push", event: "push_tag", user_type: "personal_access_token", count: 15729 behaves like tracking event is sent to HLLRedisCounter with event and originator ID5730 fetches the event originator based on username5731 sends a tracking event to HLLRedisCounter5732 target: {"tag"=>"latest"}, action: "delete", event: "delete_tag", user_type: "personal_access_token", count: 15733 behaves like tracking event is sent to HLLRedisCounter with event and originator ID5734 fetches the event originator based on username5735 sends a tracking event to HLLRedisCounter5736 target: {"repository"=>"foo/bar"}, action: "push", event: "create_repository", user_type: "build", count: 15737 behaves like tracking event is sent to HLLRedisCounter with event and originator ID5738 fetches the event originator based on username5739 sends a tracking event to HLLRedisCounter5740 target: {"repository"=>"foo/bar"}, action: "delete", event: "delete_repository", user_type: "gitlab_or_ldap", count: 15741 behaves like tracking event is sent to HLLRedisCounter with event and originator ID5742 fetches the event originator based on username5743 sends a tracking event to HLLRedisCounter5744 target: {"repository"=>"foo/bar"}, action: "delete", event: "delete_repository", user_type: "not_a_user", count: 05745 behaves like tracking event is sent to HLLRedisCounter with event and originator ID5746 fetches the event originator based on username5747 sends a tracking event to HLLRedisCounter5748 target: {"tag"=>"latest"}, action: "copy", event: "", user_type: nil, count: 05749 behaves like tracking event is sent to HLLRedisCounter with event and originator ID5750 fetches the event originator based on username5751 sends a tracking event to HLLRedisCounter5752 target: {"repository"=>"foo/bar"}, action: "copy", event: "", user_type: "", count: 05753 behaves like tracking event is sent to HLLRedisCounter with event and originator ID5754 fetches the event originator based on username5755 sends a tracking event to HLLRedisCounter5756 when it is a manifest delete event5757 calls the ContainerRegistryEventCounter5758 when it is not a manifest delete event5759 does not call the ContainerRegistryEventCounter5760 without an actor name5761 does not send a tracking event to HLLRedisCounter5762ForkProjectsFinder5763 #execute5764 without a user5765 is expected to eq [#<Project id:1158 group328/project-1194>>]5766 with a user5767 is expected to eq [#<Project id:1162 group331/project-1198>>, #<Project id:1161 group330/project-1197>>]5768 with a member5769 is expected to eq [#<Project id:1166 group334/project-1202>>, #<Project id:1165 group333/project-1201>>, #<Project id:1164 group332/project-1200>>]5770Gitlab::Metrics::RailsSlis5771 .initialize_request_slis!5772 initializes the SLI for all possible endpoints if they weren't5773 when initializeing for limited types5774 git: true, api: true, web: true5775 initializes only with the expected labels5776 git: true, api: true, web: false5777 initializes only with the expected labels5778 git: true, api: false, web: true5779 initializes only with the expected labels5780 git: true, api: false, web: false5781 initializes only with the expected labels5782 git: false, api: true, web: true5783 initializes only with the expected labels5784 git: false, api: true, web: false5785 initializes only with the expected labels5786 git: false, api: false, web: true5787 initializes only with the expected labels5788 git: false, api: false, web: false5789 initializes only with the expected labels5790 .request_apdex5791 returns the initialized request apdex SLI object5792 .request_error5793 returns the initialized request error rate SLI object5794 .graphql_query_apdex5795 returns the initialized request apdex SLI object5796Types::UserInterface5797 is expected to eq "User"5798 is expected to require graphql authorizations :read_user5799 has the expected fields5800 name field5801 user requests5802 a user5803 returns name5804 a project bot5805 when requester is nil5806 returns nothing5807 when the requester is not a project member5808 returns `Project bot` for a non project member in a public project5809 in a private project5810 returns `****` for a non project member in a private project5811 with a project member5812 returns `Project bot` for a project member5813 in a private project5814 returns `Project bot` for a project member in a private project5815 a group bot5816 when requester is nil5817 returns nothing5818 when the requester is not a group member5819 returns `Group bot` for a non group member in a public group5820 in a private group5821 returns `****` for a non group member in a private group5822 with a group member5823 returns `Group bot` for a group member5824 in a private group5825 returns `Group bot` for a group member in a private group5826 admin requests5827 a user5828 returns name5829 a project bot5830 returns name5831 a group bot5832 returns name5833 snippets field5834 returns snippets5835 callouts field5836 returns user callouts5837 timelogs field5838 returns user timelogs5839 emails field5840 returns user emails5841 namespaceCommitEmails field5842 returns user namespace_commit_emails5843 ide field5844 returns ide5845 code suggestions enabled5846 returns code suggestions enabled5847Banzai::Filter::SanitizationFilter5848 behaves like default allowlist5849 sanitizes tags that are not allowed5850 sanitizes tag attributes5851 sanitizes javascript in attributes5852 sanitizes mixed-cased javascript in attributes5853 allows allowlisted HTML tags from the user5854 sanitizes `class` attribute on any element5855 sanitizes `id` attribute on any element5856 custom allowlist5857 customizes the allowlist only once5858 customizes the allowlist only once for different instances5859 sanitizes `class` attribute from all elements5860 sanitizes `class` attribute from non-highlight spans5861 allows `text-align` property in `style` attribute on table elements5862 disallows other properties in `style` attribute on table elements5863 disallows `text-align` property in `style` attribute on other elements5864 allows `span` elements5865 allows `abbr` elements5866 disallows the `name` attribute globally, allows on `a`5867 allows `summary` elements5868 allows `details` elements5869 allows `rel=license` in links5870 allows `data-math-style` attribute on `code` and `pre` elements5871 allows the `data-sourcepos` attribute globally5872 behaves like XSS prevention5873 disallows protocol-based JS injection: simple, no spaces5874 disallows protocol-based JS injection: simple, spaces before5875 disallows protocol-based JS injection: simple, spaces after5876 disallows protocol-based JS injection: simple, spaces before and after5877 disallows protocol-based JS injection: preceding colon5878 disallows protocol-based JS injection: UTF-8 encoding5879 disallows protocol-based JS injection: long UTF-8 encoding5880 disallows protocol-based JS injection: long UTF-8 encoding without semicolons5881 disallows protocol-based JS injection: hex encoding5882 disallows protocol-based JS injection: long hex encoding5883 disallows protocol-based JS injection: hex encoding without semicolons5884 disallows protocol-based JS injection: null char5885 disallows protocol-based JS injection: invalid URL char5886 disallows protocol-based JS injection: Unicode5887 disallows protocol-based JS injection: spaces and entities5888 disallows protocol whitespace5889 disallows data links5890 disallows vbscript links5891 behaves like sanitize link5892 removes `rel` attribute from `a` elements5893 disallows invalid URIs5894 allows non-standard anchor schemes5895 allows relative links5896 footnotes5897 allows the footnote attributes5898 allows correct footnote id property on links5899 allows correct footnote id property on li element5900 removes invalid id for footnote links5901 removes invalid id for footnote li5902Security::WeakPasswords5903 # order random5904 #weak_for_user?5905 password: "d2262d56", too_weak: false5906 is expected to eq false5907 password: "password", too_weak: true5908 is expected to eq true5909 password: "pAssWord", too_weak: true5910 is expected to eq true5911 password: "princeofdarkness", too_weak: true5912 is expected to eq true5913 password: "A1B2gitlabC3", too_weak: true5914 is expected to eq true5915 password: "gitlab123", too_weak: true5916 is expected to eq true5917 password: "theonedevopsplatform", too_weak: true5918 is expected to eq true5919 password: "A1gitlib", too_weak: false5920 is expected to eq false5921 password: "Aweakést", too_weak: true5922 is expected to eq true5923 password: "!@mCwEaKy", too_weak: true5924 is expected to eq true5925 password: "A1B2pass", too_weak: true5926 is expected to eq true5927 password: "A1B2C3jr", too_weak: false5928 is expected to eq false5929 password: "3e18a7f60a908e329958396d68131d39e1b66a03ea420725e2a0fce7cb17pass", too_weak: false5930 is expected to eq false5931 password: "56d4ab689a", too_weak: true5932 is expected to eq true5933 password: "56d4ab689a_win", too_weak: true5934 is expected to eq true5935 password: "56d4ab68", too_weak: false5936 is expected to eq false5937 password: "A1B2Cwin", too_weak: false5938 is expected to eq false5939 password: "predictāble.ZZZ+seventeen@examplecorp.com", too_weak: true5940 is expected to eq true5941 password: "predictable.ZZZ+seventeen@examplecorp.com", too_weak: true5942 is expected to eq true5943 password: "predictāble.ZZZ+seventeen", too_weak: true5944 is expected to eq true5945 password: "examplecorp.com", too_weak: true5946 is expected to eq true5947 password: "!@exAmplecorp", too_weak: true5948 is expected to eq true5949 password: "predictāble123", too_weak: true5950 is expected to eq true5951 password: "seventeen", too_weak: true5952 is expected to eq true5953 password: "predictable", too_weak: false5954 is expected to eq false5955 password: "A1B2CZzZ", too_weak: false5956 is expected to eq false5957 password: "fortunate@acme.com", too_weak: false5958 is expected to eq false5959 password: "A1B2acme", too_weak: false5960 is expected to eq false5961 password: "fortunate", too_weak: false5962 is expected to eq false5963 password: "1", too_weak: false5964 is expected to eq false5965 password: "1234567", too_weak: false5966 is expected to eq false5967 password: "gitlab", too_weak: true5968 is expected to eq true5969 password: "pass", too_weak: true5970 is expected to eq true5971 with a user who has short email parts5972 password: "11111111", too_weak: true5973 is expected to eq true5974 password: "1.ioABCD", too_weak: true5975 is expected to eq true5976 password: "sid@1.io", too_weak: true5977 is expected to eq true5978 password: "sid@1.ioAB", too_weak: true5979 is expected to eq true5980 password: "sid1ioAB", too_weak: false5981 is expected to eq false5982 password: "sidsidsi", too_weak: false5983 is expected to eq false5984 password: "ioioioio", too_weak: false5985 is expected to eq false5986 with a user who is missing attributes5987 password: "d2262d56", too_weak: false5988 is expected to eq false5989 password: "password", too_weak: true5990 is expected to eq true5991 password: "gitlab123", too_weak: true5992 is expected to eq true5993Ml::ExperimentTracking::CandidateRepository5994 # order random5995 #add_metric!5996 adds a new metric5997 when name missing5998 does not add metric5999 #add_metrics6000 adds the metrics6001 when metrics have repeated keys6002 adds all of them6003 #add_param!6004 adds a new param6005 when name missing6006 throws RecordInvalid6007 when param was already added6008 throws RecordInvalid6009 #add_tags6010 adds the tags6011 if tags misses key6012 does throw and does not add6013 if tag misses value6014 does throw and does not add6015 if tag repeated6016 does not throw and adds only the first of each kind6017 when tags is nil6018 does not handle gitlab tags6019 #update6020 is expected to be truthy6021 when end_time is missing6022 is expected to be truthy6023 when status is wrong6024 fails assigning the value6025 when status is missing6026 is expected to be truthy6027 #create!6028 creates the candidate6029 creates with tag6030 when name is passed as tag6031 ignores if name is not nil6032 when name is nil6033 sets the mlflow.runName as candidate name6034 when name is nil and no mlflow.runName is not present6035 gives the candidate a random name6036 #add_params6037 adds the parameters6038 if parameter misses key6039 does not throw and does not add6040 if parameter misses value6041 does not throw and does not add6042 if parameter repeated do6043 does not throw and adds only the first of each kind6044 #add_tag!6045 adds a new tag6046 when name missing6047 throws RecordInvalid6048 when tag was already added6049 throws RecordInvalid6050 when tag starts with gitlab.6051 calls HandleCandidateGitlabMetadataService6052 #by_eid6053 is expected to eq #<Ml::Candidate id: 1, created_at: "2023-10-20 08:52:16.645751000 +0000", updated_at: "2023-10-20 08:...il, eid: "b89a1eef-2004-4f8f-a010-c8e3c8be3639", project_id: 1170, internal_id: 1, ci_build_id: nil>6054 when iid does not exist6055 is expected to be nil6056 when iid belongs to a different project6057 is expected to be nil6058ProtectedBranch::PushAccessLevel6059 is expected to belong to protected_branch required: false6060 validations6061 when role?6062 is expected to validate that :access_level is either ‹30›, ‹40›, ‹60›, or ‹0›6063 is expected to validate that :access_level cannot be empty/falsy6064 is expected to validate that :access_level is case-sensitively unique within the scope of :protected_branch_id6065 when not role?6066 is expected not to validate that :access_level cannot be empty/falsy6067 is expected not to validate that :access_level is either ‹30›, ‹40›, ‹60›, or ‹0›6068 is expected not to validate that :access_level is case-sensitively unique within the scope of :protected_branch_id6069 ::human_access_levels6070 is expected to eq {30=>"Developers + Maintainers", 40=>"Maintainers", 60=>"Instance admins", 0=>"No one"}6071 #check_access6072 when current_user is nil6073 is expected to eq false6074 when current_user access exists without membership6075 does not check membership if check_membership_in_protected_ref_access FF is disabled6076 when check_membership_in_protected_ref_access FF is enabled6077 does check membership6078 returns false6079 when user has inherited membership6080 is expected to be truthy6081 when access_level is NO_ACCESS6082 is expected to eq false6083 when instance admin access is configured6084 when current_user is a maintainer6085 is expected to eq false6086 when current_user is admin6087 is expected to eq true6088 when current_user can push_code to project6089 and member access is high enough6090 is expected to eq true6091 when external authorization denies access6092 is expected to be falsey6093 and member access is too low6094 is expected to eq false6095 when current_user cannot push_code to project6096 is expected to eq false6097 #project6098 delegates project to protected_branch association6099 associations6100 is expected to belong to deploy_key required: false6101 validations6102 when deploy_key?6103 when deploy key enabled for the project6104 is valid6105 when a deploy key already added for this access level6106 is not valid6107 when deploy key is not enabled for the project6108 is not valid6109 when deploy key is not active for the project6110 is not valid6111 #check_access6112 when this protected_branch_push_access_level is tied to a deploy key6113 when the deploy key is among the active keys for this project6114 is expected to be truthy6115 when user is missing6116 is expected to be falsey6117 when deploy key does not belong to the user6118 is expected to be falsey6119 when user cannot access the project6120 is expected to be falsey6121 when the deploy key is not among the active keys of this project6122 is expected to be falsey6123 #type6124 when deploy_key?6125 returns :deploy_key6126 ::allowed_access_levels6127 when running on Gitlab.com?6128 is expected to contain exactly 30, 40, and 06129 when self hosted?6130 is expected to contain exactly 30, 40, 60, and 06131Gitlab::Ci::Charts6132 yearchart6133 goes until the end of the current month (including the whole last day of the month)6134 starts at the beginning of the current year6135 uses %B %Y as labels format6136 returns count of pipelines run each day in the current year6137 monthchart6138 includes the whole current day6139 starts one month ago6140 uses %d %B as labels format6141 returns count of pipelines run each day in the current month6142 weekchart6143 includes the whole current day6144 starts one week ago6145 uses %d %B as labels format6146 returns count of pipelines run each day in the current week6147 weekchart_utc6148 uses a utc time zone for range times6149 returns count of pipelines run each day in the current week6150 weekchart_non_utc6151 uses a non-utc time zone for range times6152 returns count of pipelines run each day in the current week6153 pipeline_times6154 returns pipeline times in minutes6155 handles nil pipeline times6156AlertManagement::HttpIntegration6157 associations6158 is expected to belong to project required: false6159 default values6160 is expected to be present6161 is expected to eq "test"6162 validations6163 is expected to validate that :project cannot be empty/falsy6164 is expected to validate that :name cannot be empty/falsy6165 is expected to validate that :type_identifier cannot be empty/falsy6166 is expected to validate that the length of :name is at most 2556167 when active6168 is expected to validate that :endpoint_identifier is case-sensitively unique within the scope of :project_id6169 when inactive6170 is expected to validate that :endpoint_identifier is case-sensitively unique within the scope of :project_id6171 payload_attribute_mapping6172 with valid JSON schema6173 is expected to be valid6174 with invalid JSON schema6175 when property is not an object6176 behaves like is invalid record6177 is expected to eq ["must be a valid json schema"]6178 when property missing required attributes6179 behaves like is invalid record6180 is expected to eq ["must be a valid json schema"]6181 when property has extra attributes6182 behaves like is invalid record6183 is expected to eq ["must be a valid json schema"]6184 scopes6185 .for_endpoint_identifier6186 is expected to contain exactly #<AlertManagement::HttpIntegration id: 3, created_at: "2023-10-20 08:52:32.935528748 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil>6187 .for_type6188 is expected to contain exactly #<AlertManagement::HttpIntegration id: 5, created_at: "2023-10-20 08:52:32.948301966 +0000", updated_...Dog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "prometheus", token: nil>6189 .for_project6190 is expected to contain exactly #<AlertManagement::HttpIntegration id: 4, created_at: "2023-10-20 08:52:32.941781267 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil> and #<AlertManagement::HttpIntegration id: 5, created_at: "2023-10-20 08:52:32.948301966 +0000", updated_...Dog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "prometheus", token: nil>6191 with project_ids array6192 is expected to contain exactly #<AlertManagement::HttpIntegration id: 3, created_at: "2023-10-20 08:52:32.935528748 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil>6193 .active6194 is expected to contain exactly #<AlertManagement::HttpIntegration id: 3, created_at: "2023-10-20 08:52:32.935528748 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil> and #<AlertManagement::HttpIntegration id: 5, created_at: "2023-10-20 08:52:32.948301966 +0000", updated_...Dog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "prometheus", token: nil>6195 .ordered_by_type_and_id6196 is expected to eq [#<AlertManagement::HttpIntegration id: 3, created_at: "2023-10-20 08:52:32.935528748 +0000", updated...og", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "prometheus", token: nil>]6197 before validation6198 #ensure_payload_example_not_nil6199 when the payload_example is nil6200 sets the payload_example to empty JSON6201 when the payload_example is not nil6202 sets the payload_example to specified value6203 #token6204 when unsaved6205 when assigned6206 is expected not to eq "random_token"6207 behaves like valid token6208 is expected to match /\A\h{32}\z/6209 when persisted6210 behaves like valid token6211 is expected to match /\A\h{32}\z/6212 when resetting6213 is expected not to eq "3d9298c2382e04f61f4719fe44d3714c"6214 behaves like valid token6215 is expected to match /\A\h{32}\z/6216 when reassigning6217 is expected to eq "cc5d4c5a56a967fdc096237a2171c284"6218 behaves like valid token6219 is expected to match /\A\h{32}\z/6220 #endpoint_identifier6221 when defined on initialize6222 is expected to match /\A\h{16}\z/6223 when included in initialization args6224 for endpoint identifier "legacy"6225 is expected to eq "legacy"6226 is expected to be valid6227 for endpoint identifier "legacy-prometheus"6228 is expected to eq "legacy-prometheus"6229 is expected to be valid6230 when reassigning6231 does not allow reassignment6232 #url6233 is expected to eq "http://localhost/namespace1009/project-1236/alerts/notify/datadog/730500f7.json"6234 when name is not defined6235 is expected to eq "http://localhost/namespace1009/project-1236/alerts/notify/http-endpoint/f6353e198d7b17e5.json"6236 for a legacy integration6237 is expected to eq "http://localhost/namespace1021/project-1248/alerts/notify.json"6238 for a prometheus integration6239 is expected to eq "http://localhost/namespace1022/project-1249/alerts/notify/datadog/2fe89998.json"6240 for a legacy integration6241 is expected to eq "http://localhost/namespace1023/project-1250/prometheus/alerts/notify.json"6242Projects::Members::EffectiveAccessLevelFinder#execute6243 for a personal project6244 when the project owner is a member of the project6245 behaves like includes access level of the owner of the project6246 includes access level of the owner of the project as Owner6247 when the project owner is not explicitly a member of the project6248 behaves like includes access level of the owner of the project6249 includes access level of the owner of the project as Owner6250 direct members of the project6251 includes access levels of the direct members of the project6252 does not include access levels of users who have requested access to the project6253 includes access levels of users who are in non-active state6254 for a project within a group6255 project in a root group6256 includes access levels of users who are direct members of the parent group6257 when access level is developer6258 when access level is owner6259 project in a subgroup6260 includes access levels of users who are members of the ancestors of the parent group6261 user is both a member of the project and a member of the parent group6262 includes the maximum access level among project and group membership6263 members from group share6264 includes the user from the group share with the right access level6265 when the project also has the same user as a member, but with a different access level6266 includes the maximum access level among project and group membership6267 when the project's ancestor also has the same user as a member, but with a different access level6268 includes the maximum access level among project and group membership6269 for a project that is shared with other group(s)6270 includes the least among the specified access levels6271 even when the `lock_memberships_to_ldap` setting has been turned ON6272 includes the least among the specified access levels6273 when the group containing the project has forbidden group shares for any of its projects6274 does not include the users from any group shares6275 a combination of all possible avenues of membership6276 includes the highest access level from all avenues of memberships6277Admin::UsersController routing6278 to #block6279 to #unblock6280 to #index6281 to #show6282 to #create6283 to #new6284 to #edit6285 to #update6286 to #destroy6287Admin::ProjectsController routing6288 to #index6289 to #show6290Admin::HooksController routing6291 to #test6292 to #index6293 to #create6294 to #edit6295 to #update6296 to #destroy6297Admin::HookLogsController routing6298 to #retry6299 to #show6300Admin::BackgroundJobsController routing6301 to #show6302Admin::DashboardController routing6303 to #index6304Admin::HealthCheckController routing6305 to #show6306Admin::DevOpsReportController routing6307 to #show6308 admin devops reports6309 redirects from /admin/dev_ops_report to /admin/dev_ops_reports6310Admin::GroupsController routing6311 to #index6312 to #show6313 to #edit6314Admin::SessionsController routing6315 to #new6316 to #create6317 to #destroy6318Admin::PlanLimitsController routing6319 to #create6320Admin::RunnersController routing6321 to #runner_setup_scripts6322Projects::OpenIssuesCountService6323 behaves like a counter caching service6324 #count6325 caches the count6326 #refresh_cache6327 refreshes the cache6328 #delete_cache6329 removes the cache6330 #uncached_count6331 does not cache the count6332 #count6333 when user is nil6334 does not include confidential issues in the issue count6335 when user is provided6336 when user can read confidential issues6337 returns the right count with confidential issues6338 uses total_open_issues_count cache key6339 when user cannot read confidential issues6340 does not include confidential issues6341 uses public_open_issues_count cache key6342 #refresh_cache6343 when cache is empty6344 refreshes cache keys correctly6345 when cache is outdated6346 refreshes cache keys correctly6347Packages::Maven::Metadata::SyncService6348 #execute6349 permissions6350 role: :anonymous, expected_result: :rejected6351 behaves like returning an error service response6352 returns an error service response6353 role: :developer, expected_result: :rejected6354 behaves like returning an error service response6355 returns an error service response6356 role: :maintainer, expected_result: :accepted6357 behaves like returning a success service response6358 returns a success service response6359 with a maintainer6360 with a jar package6361 with no changes6362 behaves like returning a success service response6363 returns a success service response6364 with changes6365 behaves like returning a success service response6366 returns a success service response6367 with empty versions6368 behaves like returning a success service response6369 returns a success service response6370 with a too big maven metadata file for versions6371 behaves like returning an error service response6372 returns an error service response6373 an error from the create versions xml service6374 behaves like returning an error service response6375 returns an error service response6376 an error from the append package file service6377 behaves like returning an error service response6378 returns an error service response6379 without a package name6380 behaves like returning an error service response6381 returns an error service response6382 without a versionless package for version6383 behaves like returning a success service response6384 returns a success service response6385 without a metadata package file for versions6386 behaves like returning a success service response6387 returns a success service response6388 without a project6389 behaves like returning an error service response6390 returns an error service response6391 with a maven plugin package6392 with no changes6393 behaves like returning a success service response6394 returns a success service response6395 with changes in the versions xml6396 behaves like returning a success service response6397 returns a success service response6398 with changes in the plugin xml6399 behaves like returning a success service response6400 returns a success service response6401 with empty versions6402 behaves like returning a success service response6403 returns a success service response6404 with a too big maven metadata file for plugins6405 behaves like returning an error service response6406 returns an error service response6407 an error from the create versions xml service6408 behaves like returning an error service response6409 returns an error service response6410 an error from the append package file service6411 behaves like returning an error service response6412 returns an error service response6413 without a versionless package for plugins6414 behaves like returning a success service response6415 returns a success service response6416 without a versionless package for versions6417 behaves like returning a success service response6418 returns a success service response6419 without a metadata package file for plugins6420 behaves like returning a success service response6421 returns a success service response6422Gitlab::ImportExport::Group::TreeSaver6423 saves the group tree into a json object6424 saves the group successfully6425 fails to export a group6426 exported files6427 has one group per line6428 has a file per group6429 has a file for each group association6430 group attributes file6431 has a file for each group with its attributes6432 does not contain excluded attribute6433 does not contain excluded attribute6434 does not contain excluded attribute6435 does not contain excluded attribute6436 does not contain excluded attribute6437 does not contain excluded attribute6438Issue::Metrics6439 .for_issues6440 returns metrics associated with given issues6441 .with_first_mention_not_earlier_than6442 returns metrics without mentioning in commit or with mentioning after given timestamp6443 when recording the default set of issue metrics on issue save6444 milestones6445 records the first time an issue is associated with a milestone6446 does not record the second time an issue is associated with a milestone6447 list labels6448 records the first time an issue is associated with a list label6449 does not record the second time an issue is associated with a list label6450PageLayoutHelper6451 page_description6452 defaults to nil6453 returns the last-pushed description6454 squishes multiple newlines6455 truncates6456 sanitizes all HTML6457 truncates before sanitizing6458 page_image6459 defaults to the GitLab logo6460 with @project assigned6461 uses Project avatar full url6462 when avatar_url is nil6463 falls back to the default when avatar_url is nil6464 with no assignments6465 falls back to the default6466 with @user assigned6467 uses User avatar full url6468 when avatar_url is nil6469 falls back to the default when avatar_url is nil6470 with no assignments6471 falls back to the default6472 with @group assigned6473 uses Group avatar full url6474 when avatar_url is nil6475 falls back to the default when avatar_url is nil6476 with no assignments6477 falls back to the default6478 page_card_attributes6479 raises ArgumentError when given more than two attributes6480 rejects blank values6481 page_card_meta_tags6482 returns the twitter:label and twitter:data tags6483 escapes content6484 #search_context6485 a bare controller6486 returns an empty context6487 #page_canonical_link6488 when link is passed6489 stores and returns the link value6490 when no link is provided6491 behaves like generates the canonical url using the params in the context6492 is expected to eq "http://test.host/foo"6493 behaves like generates the canonical url using the params in the context6494 is expected to eq "http://test.host/foo"6495 behaves like does not return a canonical url6496 is expected to be nil6497 behaves like does not return a canonical url6498 is expected to be nil6499 #page_itemtype6500 when itemtype is passed6501 stores and returns the itemtype value6502 when no itemtype is provided6503 returns an empty hash6504 #full_content_class6505 has a content_class set6506 has no content_class set6507 #user_status_properties6508 when the user has no status6509 returns default properties6510 when user has a status6511 merges the status properties with the defaults6512Gitlab::Pagination::Keyset::Paginator6513 pagination6514 when per_page is greater than the record count6515 is expected to eq [#<Project id:1236 namespace1063/project-1290>>, #<Project id:1239 namespace1066/project-1293>>, #<Pr...2>>, #<Project id:1237 namespace1064/project-1291>>, #<Project id:1240 namespace1067/project-1294>>]6516 is expected not to have next page6517 is expected not to have previous page6518 has no next and previous cursor values6519 when 0 records are returned6520 is expected to be empty6521 is expected not to have next page6522 is expected not to have previous page6523 when page size is smaller than the record count6524 is expected to eq [#<Project id:1236 namespace1063/project-1290>>, #<Project id:1239 namespace1066/project-1293>>]6525 is expected to have next page6526 is expected not to have previous page6527 has next page cursor6528 does not have previous page cursor6529 when on the second page6530 is expected to eq [#<Project id:1238 namespace1065/project-1292>>, #<Project id:1237 namespace1064/project-1291>>]6531 is expected to have next page6532 is expected to have previous page6533 and then going back to the first page6534 is expected to eq [#<Project id:1236 namespace1063/project-1290>>, #<Project id:1239 namespace1066/project-1293>>]6535 is expected to have next page6536 is expected not to have previous page6537 when jumping to the last page6538 is expected to eq [#<Project id:1237 namespace1064/project-1291>>, #<Project id:1240 namespace1067/project-1294>>]6539 is expected not to have next page6540 is expected to have previous page6541 when paginating backwards6542 is expected to eq [#<Project id:1239 namespace1066/project-1293>>, #<Project id:1238 namespace1065/project-1292>>]6543 is expected to have next page6544 is expected to have previous page6545 when jumping to the first page6546 is expected to eq [#<Project id:1236 namespace1063/project-1290>>, #<Project id:1239 namespace1066/project-1293>>]6547 is expected to have next page6548 is expected not to have previous page6549 default keyset direction parameter6550 exposes the direction parameter in the cursor6551 when unsupported order is given6552 raises error6553 when use_union_optimization option is true and ordering by two columns6554 uses UNION queries6555Gitlab::Ci::Ansi2json6556 lines6557 prints non-ansi as-is6558 recognizes color changing ANSI sequences6559 recognizes color changing ANSI sequences across multiple lines6560 recognizes background and foreground colors6561 recognizes style changes within the same line6562 new lines6563 adds new line when encountering \n6564 adds new line when encountering \r\n6565 ignores empty newlines6566 replace the current line when encountering \r6567 with section markers6568 marks the first line of the section as header6569 does not marks the other lines of the section as header6570 marks the last line of the section as footer6571 marks the first line as header and footer if is the only line in the section6572 does not add sections attribute to lines after the section is closed6573 ignores section_end marker if no section_start exists6574 prints HTML tags as is6575 when section name contains .-_ and capital letters6576 sanitizes the section name6577 when section name includes $6578 ignores the section6579 when section name includes <6580 ignores the section6581 with nested section6582 adds multiple sections to the lines inside the nested section6583 adds multiple sections to the lines inside the nested section and closes all sections together6584 with section options6585 provides section options when set6586 incremental updates6587 with split word6588 returns the full line6589 with split word on second line6590 returns all lines since last partially processed line6591 with split sequence across multiple lines6592 returns the line since last partially processed line6593 with split partial sequence6594 returns the line since last partially processed line6595 with split new line6596 returns a blank line and the next line6597 with split section6598 with split section body6599 returns the full line6600 with split section where header is also split6601 returns the full line6602 with split section end6603 returns the full line6604 trucates6605 returns truncated output6606 does not append output6607Gitlab::ExclusiveLeaseHelpers::SleepingLock6608 #retried?6609 we have not made any attempts6610 is expected not to be retried6611 we just made a single (initial) attempt6612 is not considered a retry6613 made multiple attempts6614 is considered a retry6615 #obtain6616 when the lease is not held6617 obtains the lease on the first attempt, without sleeping6618 when the lease is obtained already6619 when retries are not specified6620 retries to obtain a lease and raises an error6621 when specified retries are above the maximum attempts6622 retries to obtain a lease and raises an error6623 when the lease is held elsewhere6624 retries to obtain a lease and raises an error6625 when the delay is computed from the attempt number6626 uses the computation to determine the sleep length6627 when lease is granted after retry6628 knows that it retried6629 cancel6630 cancels the lease6631JoinedGroupsFinder6632 #execute6633 without a user6634 only shows public groups from profile owner6635 with a user6636 when the profile visitor is in the private group6637 only shows groups where both users are authorized to see6638 if profile visitor is in one of the private group projects6639 shows group6640 external users6641 if not a member6642 does not show internal groups6643 if authorized6644 shows internal groups if authorized6645BulkImports::Common::Pipelines::MilestonesPipeline6646 group milestone6647 behaves like bulk_imports milestones pipeline6648 #run6649 imports milestones into destination6650 #load6651 when milestone is not persisted6652 saves the milestone6653 when milestone is missing6654 returns6655 project milestone6656 behaves like bulk_imports milestones pipeline6657 imports events6658 #run6659 imports milestones into destination6660 #load6661 when milestone is not persisted6662 saves the milestone6663 when milestone is missing6664 returns6665IssueSidebarBasicEntity6666 contains keys related to issuables6667 contains attributes related to the issue6668 current_user6669 contains attributes related to the current user6670 can_update_escalation_status6671 for a standard issue6672 is not present6673 for an incident issue6674 is present and true6675 without permissions6676 is present and false6677 show_crm_contacts6678 is_reporter: false, contacts_exist_for_group: false, expected: false6679 sets proper boolean value for show_crm_contacts6680 is_reporter: false, contacts_exist_for_group: true, expected: false6681 sets proper boolean value for show_crm_contacts6682 is_reporter: true, contacts_exist_for_group: false, expected: false6683 sets proper boolean value for show_crm_contacts6684 is_reporter: true, contacts_exist_for_group: true, expected: true6685 sets proper boolean value for show_crm_contacts6686 in subgroup6687 with crm enabled6688 is true6689 with crm disabled6690 is false6691Gitlab::ImportExport::LfsRestorer6692 #restore6693 when the archive contains lfs files6694 succeeds6695 does not create a new `LfsObject` records, as one already exists6696 creates new `LfsObjectsProject` records in order to link the project to the existing `LfsObject`6697 restores the correct `LfsObject` records6698 restores the correct `LfsObjectsProject` records for the project6699 assigns the file correctly6700 when there is not an existing `LfsObject`6701 creates a new lfs object6702 stores the upload6703 when there is no lfs-objects.json file6704 restores the correct `LfsObject` records6705 restores a single `LfsObjectsProject` record for the project with "project" for the `repository_type`6706 without any LFS-objects6707 succeeds6708Pages::LookupPath6709 #project_id6710 delegates to Project#id6711 #access_control6712 delegates to Project#private_pages?6713 #https_only6714 when no domain provided6715 delegates to Project#pages_https_only?6716 when there is domain provided6717 takes into account the https setting of the domain6718 #source6719 returns nil6720 when there is pages deployment6721 uses deployment from object storage6722 does not recreate source hash6723 when deployment is in the local storage6724 uses file protocol6725 #prefix6726 when pages group root projects6727 returns "/"6728 when pages in the given prefix6729 returns the project full path with the provided prefix removed6730 #unique_host6731 when unique domain is disabled6732 returns nil6733 when unique domain is enabled6734 returns the project unique domain6735 when there is domain provided6736 returns nil6737 #root_directory6738 when there is no deployment6739 returns nil6740 when there is a deployment6741 returns the deployment's root_directory6742Gitlab::Database::HealthStatus::Indicators::WalRate6743 # order random6744 behaves like Prometheus Alert based health indicator6745 #evaluate6746 behaves like Patroni Apdex Evaluator6747 with main schema6748 returns NoSignal signal in case the feature flag is disabled6749 returns Normal signal when SLI condition is met6750 returns Stop signal when SLI condition is not met6751 without prometheus_alert_db_indicators_settings6752 returns Unknown signal6753 when Prometheus client is not ready6754 returns Unknown signal6755 when apdex SLI query is not configured6756 returns Unknown signal6757 when slo is not configured6758 returns Unknown signal6759 when SLI can not be calculated6760 result: nil6761 returns Unknown signal6762 result: []6763 returns Unknown signal6764 result: [{}]6765 returns Unknown signal6766 result: [{"value"=>1}]6767 returns Unknown signal6768 result: [{"value"=>[1]}]6769 returns Unknown signal6770 behaves like Patroni Apdex Evaluator6771 with ci schema6772 returns NoSignal signal in case the feature flag is disabled6773 returns Normal signal when SLI condition is met6774 returns Stop signal when SLI condition is not met6775 without prometheus_alert_db_indicators_settings6776 returns Unknown signal6777 when Prometheus client is not ready6778 returns Unknown signal6779 when apdex SLI query is not configured6780 returns Unknown signal6781 when slo is not configured6782 returns Unknown signal6783 when SLI can not be calculated6784 result: nil6785 returns Unknown signal6786 result: []6787 returns Unknown signal6788 result: [{}]6789 returns Unknown signal6790 result: [{"value"=>1}]6791 returns Unknown signal6792 result: [{"value"=>[1]}]6793 returns Unknown signal6794Integrations::Shimo6795 #fields6796 returns custom fields6797 #create6798 with valid params6799 creates the Shimo integration6800 with invalid params6801 cannot create the Shimo integration without external_wiki_url6802 cannot create the Shimo integration with invalid external_wiki_url6803 Caching has_shimo on project_settings6804 sets the property to true when integration is active6805 sets the property to false when integration is not active6806 creates a project_setting record if one was not already created6807 #avatar_url6808 returns the avatar image path6809Gitlab::APIAuthentication::TokenResolver6810 .new6811 with a valid type6812 creates a new instance6813 with an invalid type6814 raises a validation error6815 #resolve6816 with :personal_access_token_with_username6817 with valid credentials6818 behaves like an authorized request6819 returns the correct token6820 with an invalid username6821 behaves like an unauthorized request6822 raises an error6823 with no username6824 behaves like an unauthorized request6825 raises an error6826 with :job_token_with_username6827 with valid credentials6828 behaves like an authorized request6829 returns the correct token6830 when the job is not running6831 behaves like an unauthorized request6832 raises an error6833 with the wrong username6834 behaves like an anoymous request6835 returns nil6836 with an invalid job token6837 behaves like an unauthorized request6838 raises an error6839 with :deploy_token_with_username6840 with a valid deploy token6841 behaves like an authorized request6842 returns the correct token6843 with an invalid username6844 behaves like an unauthorized request6845 raises an error6846 when the the deploy token is restricted with external_authorization6847 with a valid deploy token6848 behaves like an unauthorized request6849 raises an error6850 with :personal_access_token6851 with valid credentials6852 behaves like an authorized request6853 returns the correct token6854 with :job_token6855 with valid credentials6856 behaves like an authorized request6857 returns the correct token6858 when the job is not running6859 behaves like an unauthorized request6860 raises an error6861 with an invalid job token6862 behaves like an unauthorized request6863 raises an error6864 with :deploy_token6865 with a valid deploy token6866 behaves like an authorized request6867 returns the correct token6868 with :personal_access_token_from_jwt6869 with valid credentials6870 behaves like an authorized request6871 returns the correct token6872 with :deploy_token_from_jwt6873 with valid credentials6874 behaves like an authorized request6875 returns the correct token6876 with :job_token_from_jwt6877 with valid credentials6878 behaves like an authorized request6879 returns the correct token6880 when the job is not running6881 behaves like an unauthorized request6882 raises an error6883 with an invalid job token6884 behaves like an unauthorized request6885 raises an error6886Packages::Debian::ProjectComponentFile6887 behaves like Debian Component File6888 relationships6889 with stubbed uploader6890 is expected to belong to component class_name => Packages::Debian::ProjectComponent required: false inverse_of => files6891 with packages file_type6892 is expected to belong to architecture class_name => Packages::Debian::ProjectArchitecture required: false inverse_of => files6893 with :sources file_type6894 is expected to belong to architecture class_name => Packages::Debian::ProjectArchitecture inverse_of => files optional: true6895 validations6896 #component6897 is expected to validate that :component cannot be empty/falsy6898 #architecture6899 with packages file_type6900 is expected to validate that :architecture cannot be empty/falsy6901 with :sources file_type6902 is expected to validate that :architecture is empty/falsy6903 #file_type6904 is expected to validate that :file_type cannot be empty/falsy6905 is expected to allow :file_type to be ‹:packages›6906 #compression_type6907 is expected not to validate that :compression_type cannot be empty/falsy6908 is expected to allow :compression_type to be ‹nil›6909 is expected to allow :compression_type to be ‹:gz›6910 #file6911 the uploader api6912 is expected to respond to #store_dir6913 is expected to respond to #cache_dir6914 is expected to respond to #work_dir6915 #file_store6916 is expected to validate that :file_store cannot be empty/falsy6917 #file_sha2566918 is expected to validate that :file_sha256 cannot be empty/falsy6919 scopes6920 .with_container6921 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 6, created_at: "2023-10-20 08:54:03.006342143 +0000", up...type: nil, file_store: 1, file: "Packages", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6922 .with_codename_or_suite6923 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 6, created_at: "2023-10-20 08:54:03.006342143 +0000", up...type: nil, file_store: 1, file: "Packages", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6924 .with_component_name6925 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 3, created_at: "2023-10-20 08:54:02.984101095 +0000", up...type: nil, file_store: 1, file: "Packages", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6926 .with_file_type6927 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 7, created_at: "2023-10-20 08:54:03.013174000 +0000", up..._type: nil, file_store: 1, file: "Sources", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6928 .with_architecture6929 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 2, created_at: "2023-10-20 08:54:02.977396955 +0000", up...type: nil, file_store: 1, file: "Packages", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6930 .with_architecture_name6931 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 2, created_at: "2023-10-20 08:54:02.977396955 +0000", up...type: nil, file_store: 1, file: "Packages", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6932 .with_compression_type6933 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 4, created_at: "2023-10-20 08:54:02.990445984 +0000", up...ype: "xz", file_store: 1, file: "Packages", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6934 .with_file_sha2566935 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 5, created_at: "2023-10-20 08:54:02.999444213 +0000", up...pe: "packages", compression_type: nil, file_store: 1, file: "Packages", file_sha256: "other_sha256">6936 .updated_before6937 is expected to contain exactly #<Packages::Debian::ProjectComponentFile id: 9, created_at: "2023-10-20 08:54:04.362020721 +0000", up...type: nil, file_store: 1, file: "Packages", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad"> and #<Packages::Debian::ProjectComponentFile id: 10, created_at: "2023-10-20 08:54:04.369897861 +0000", u...type: nil, file_store: 1, file: "Packages", file_sha256: "be93151dc23ac34a82752444556fe79b32c7a1ad">6938 callbacks6939 updates metadata columns6940 #relative_path6941 with a Packages file_type6942 is expected to eq "accusamus1/binary-et1/Packages"6943 with a Source file_type6944 is expected to eq "accusamus1/source/Sources"6945 with a DI Packages file_type6946 is expected to eq "accusamus1/debian-installer/binary-et1/Packages"6947 with an xz compression_type6948 is expected to eq "accusamus1/binary-et1/Packages.xz"6949 #empty?6950 with a non-empty component6951 is expected to be falsey6952 with an empty component6953 is expected to be truthy6954Gitlab::Middleware::CompressedJson6955 #call6956 with packages route6957 with instance level endpoint6958 with npm advisory bulk url6959 behaves like decompress middleware6960 replaces input with a decompressed content6961 behaves like decompress middleware6962 replaces input with a decompressed content6963 with npm quick audit url6964 behaves like decompress middleware6965 replaces input with a decompressed content6966 behaves like decompress middleware6967 replaces input with a decompressed content6968 with project level endpoint6969 with npm advisory bulk url6970 behaves like decompress middleware6971 replaces input with a decompressed content6972 behaves like decompress middleware6973 replaces input with a decompressed content6974 behaves like handles non integer ID6975 with a URL-encoded ID6976 behaves like decompress middleware6977 replaces input with a decompressed content6978 with a non URL-encoded ID6979 behaves like passes input6980 keeps the original input6981 with a blank ID6982 behaves like passes input6983 keeps the original input6984 with npm quick audit url6985 behaves like decompress middleware6986 replaces input with a decompressed content6987 behaves like decompress middleware6988 replaces input with a decompressed content6989 behaves like handles non integer ID6990 with a URL-encoded ID6991 behaves like decompress middleware6992 replaces input with a decompressed content6993 with a non URL-encoded ID6994 behaves like passes input6995 keeps the original input6996 with a blank ID6997 behaves like passes input6998 keeps the original input6999 with group level endpoint7000 with npm advisory bulk url7001 behaves like decompress middleware7002 replaces input with a decompressed content7003 behaves like decompress middleware7004 replaces input with a decompressed content7005 behaves like handles non integer ID7006 with a URL-encoded ID7007 behaves like decompress middleware7008 replaces input with a decompressed content7009 with a non URL-encoded ID7010 behaves like passes input7011 keeps the original input7012 with a blank ID7013 behaves like passes input7014 keeps the original input7015 with npm quick audit url7016 behaves like decompress middleware7017 replaces input with a decompressed content7018 behaves like decompress middleware7019 replaces input with a decompressed content7020 behaves like handles non integer ID7021 with a URL-encoded ID7022 behaves like decompress middleware7023 replaces input with a decompressed content7024 with a non URL-encoded ID7025 behaves like passes input7026 keeps the original input7027 with a blank ID7028 behaves like passes input7029 keeps the original input7030 with some other route7031 behaves like passes input7032 keeps the original input7033 with the wrong project path7034 behaves like passes input7035 keeps the original input7036 when payload is too large7037 reads only limited size7038Ci::UnitTestFailure7039 relationships7040 is expected to belong to build required: false7041 is expected to belong to unit_test required: false7042 validations7043 is expected to validate that :unit_test cannot be empty/falsy7044 is expected to validate that :build cannot be empty/falsy7045 is expected to validate that :failed_at cannot be empty/falsy7046 .recent_failures_count7047 when unit test failures are within the date range and are for the unit test keys7048 returns the number of failures for each unit test key hash for the past 14 days by default7049 when unit test failures are within the date range but are not for the unit test keys7050 excludes them from the count7051 when unit test failures are not within the date range but are for the unit test keys7052 excludes them from the count7053 partitioning7054 with build7055 copies the partition_id from build7056 when it is already set7057 does not change the partition_id value7058 without build7059 is expected to validate that :partition_id cannot be empty/falsy7060 does not change the partition_id value7061Boards::Lists::ListService7062 #execute7063 when board parent is a project7064 behaves like lists list service7065 when the board has a backlog list7066 does not create a backlog list7067 returns board's lists7068 when hide_backlog_list is true7069 hides backlog list7070 when hide_closed_list is true7071 hides closed list7072 when the board does not have a backlog list7073 creates a backlog list7074 does not create a backlog list when create_default_lists is false7075 returns board's lists7076 when wanting a specific list7077 returns list specified by id7078 returns empty result when list is not found7079 behaves like FOSS lists only7080 when board contains a non FOSS list7081 returns only FOSS board's lists7082 when board parent is a group7083 behaves like lists list service7084 when the board has a backlog list7085 does not create a backlog list7086 returns board's lists7087 when hide_backlog_list is true7088 hides backlog list7089 when hide_closed_list is true7090 hides closed list7091 when the board does not have a backlog list7092 creates a backlog list7093 does not create a backlog list when create_default_lists is false7094 returns board's lists7095 when wanting a specific list7096 returns list specified by id7097 returns empty result when list is not found7098 behaves like FOSS lists only7099 when board contains a non FOSS list7100 returns only FOSS board's lists7101BadgesHelper7102 #gl_badge_tag7103 creates a badge with given text7104 adds style classes7105 adds custom classes7106 applies custom html attributes7107 block content7108 renders block content7109 changes the function signature7110 variants7111 defaults to muted7112 falls back to default given an unknown variant7113 variant: :muted7114 sets the variant class7115 variant: :neutral7116 sets the variant class7117 variant: :info7118 sets the variant class7119 variant: :success7120 sets the variant class7121 variant: :warning7122 sets the variant class7123 variant: :danger7124 sets the variant class7125 sizes7126 defaults to md7127 falls back to default given an unknown size7128 size: :sm7129 sets the size class7130 size: :md7131 sets the size class7132 size: :lg7133 sets the size class7134 icons7135 with text7136 renders an icon7137 adds a spacing class and any custom classes to the icon7138 icon only7139 adds an img role to element7140 adds aria-label to element7141 does not add a spacing class to the icon7142 given an href7143 creates a badge link7144DesignManagement::Action7145 relations7146 is expected to belong to design required: false7147 is expected to belong to version required: false7148 scopes7149 with 3 designs7150 .most_recent7151 finds the correct version for each design7152 .by_design7153 returns the actions by design_id7154 .with_version7155 preloads the version7156 .by_event7157 returns the actions by event type7158 .up_to_version7159 the version is nil7160 returns all design_versions7161 when given a Version instance7162 the version is the most current7163 is expected to have attributes {:size => 6}7164 the version is the oldest7165 is expected to have attributes {:size => 2}7166 the version is the middle one7167 is expected to have attributes {:size => 4}7168 when given a commit SHA7169 the version is the most current7170 is expected to have attributes {:size => 6}7171 the version is the oldest7172 is expected to have attributes {:size => 2}7173 the version is the middle one7174 is expected to have attributes {:size => 4}7175 when given a String that is not a commit SHA7176 is expected to raise ArgumentError7177Board7178 relationships7179 is expected to belong to project required: false7180 is expected to have many lists order => {:list_type=>:asc, :position=>:asc} dependent => delete_all inverse_of => board7181 is expected to have many destroyable_lists order => {:list_type=>:asc, :position=>:asc} inverse_of => board7182 validations7183 is expected to validate that :name cannot be empty/falsy7184 is expected to validate that :project cannot be empty/falsy7185 constants7186 is expected to be a kind of Integer7187 #order_by_name_asc7188 returns in case-insensitive alphabetical order and then by ascending id7189 #first_board7190 return the first case-insensitive alphabetical board as a relation7191 raises an error when find is done on a non-existent record7192 #disabled_for?7193 for group board7194 behaves like board disabled_for?7195 when current user cannot create non backlog issues7196 is expected to eq true7197 when user can create backlog issues7198 is expected to eq false7199 when block_issue_repositioning is enabled7200 is expected to eq true7201 for project board7202 behaves like board disabled_for?7203 when current user cannot create non backlog issues7204 is expected to eq true7205 when user can create backlog issues7206 is expected to eq false7207 when block_issue_repositioning is enabled7208 is expected to eq true7209Import::FogbugzService7210 returns error for unknown error causes7211 when no repo is found7212 returns an error7213 when import source is disabled7214 returns forbidden7215 when user is unauthorized7216 returns an error7217 verify url7218 when host is localhost7219 does not allow requests7220 when host is on local network7221 does not allow requests7222 when host is ftp protocol7223 does not allow requests7224 when import starts succesfully7225 returns success7226 when import fails to start7227 returns error7228Sbom::PackageUrl::Encoder7229 # order random7230 #encode7231 valid maven purl7232 is expected to eq "pkg:maven/org.apache.commons/io@1.3.4"7233 basic valid maven purl without version7234 is expected to eq "pkg:maven/org.apache.commons/io"7235 valid go purl without version and with subpath7236 is expected to eq "pkg:golang/google.golang.org/genproto#googleapis/api/annotations"7237 valid go purl with version and subpath7238 is expected to eq "pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations"7239 bitbucket namespace and name should be lowercased7240 is expected to eq "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c"7241 github namespace and name should be lowercased7242 is expected to eq "pkg:github/package-url/purl-spec@244fd47e07d1004f0aed9c"7243 debian can use qualifiers7244 is expected to eq "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie"7245 docker uses qualifiers and hash image id as versions7246 is expected to eq "pkg:docker/customer/dockerimage@sha256%3A244fd47e07d1004f0aed9c?repository_url=gcr.io"7247 Java gem can use a qualifier7248 is expected to eq "pkg:gem/jruby-launcher@1.1.2?platform=java"7249 maven often uses qualifiers7250 is expected to eq "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources&repository_url=repo.spring.io%2Frelease"7251 maven pom reference7252 is expected to eq "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?extension=pom&repository_url=repo.spring.io%2Frelease"7253 maven can come with a type qualifier7254 is expected to eq "pkg:maven/net.sf.jacob-project/jacob@1.14.3?classifier=x86&type=dll"7255 npm can be scoped7256 is expected to eq "pkg:npm/%40angular/animation@12.3.1"7257 nuget names are case sensitive7258 is expected to eq "pkg:nuget/EnterpriseLibrary.Common@6.0.1304"7259 pypi names have special rules and not case sensitive7260 is expected to eq "pkg:pypi/django-package@1.11.1.dev1"7261 rpm often use qualifiers7262 is expected to eq "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25"7263 slash / after scheme is not significant7264 is expected to eq "pkg:maven/org.apache.commons/io"7265 double slash // after scheme is not significant7266 is expected to eq "pkg:maven/org.apache.commons/io"7267 slash /// after type is not significant7268 is expected to eq "pkg:maven/org.apache.commons/io"7269 valid maven purl with case sensitive namespace and name7270 is expected to eq "pkg:maven/HTTPClient/HTTPClient@0.3-3"7271 valid maven purl containing a space in the version and qualifier7272 is expected to eq "pkg:maven/mygroup/myartifact@1.0.0+Final?mykey=my+value"7273 valid conan purl7274 is expected to eq "pkg:conan/cctz@2.3"7275 valid conan purl with namespace and qualifier channel7276 is expected to eq "pkg:conan/bincrafters/cctz@2.3?channel=stable"7277 valid conda purl with qualifiers7278 is expected to eq "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2"7279 valid cran purl7280 is expected to eq "pkg:cran/A3@0.9.1"7281 valid swift purl7282 is expected to eq "pkg:swift/github.com/Alamofire/Alamofire@5.4.3"7283 valid hackage purl7284 is expected to eq "pkg:hackage/AC-HalfInteger@1.2.1"7285 when purl requires normalization7286 outputs normalized form7287Gitlab::Git::Push7288 #branch_name7289 when it is a branch push7290 returns branch name7291 when it is a tag push7292 returns nil7293 #branch_push?7294 when pushing a branch ref7295 is expected to be branch push7296 when it is a tag push7297 is expected not to be branch push7298 #branch_updated?7299 when it is a branch push with correct old and new revisions7300 is expected to be branch updated7301 when it is not a branch push7302 is expected not to be branch updated7303 when old revision is blank7304 is expected not to be branch updated7305 when it is not a branch push7306 is expected not to be branch updated7307 when oldrev is nil7308 is expected not to be branch updated7309 #force_push?7310 when old revision is an ancestor of the new revision7311 is expected not to be force push7312 when old revision is not an ancestor of the new revision7313 is expected to be force push7314 when called mulitiple times7315 does not make make multiple calls to the force push check7316 #branch_added?7317 when old revision is defined7318 is expected not to be branch added7319 when old revision is not defined7320 is expected to be branch added7321 #branch_removed?7322 when new revision is defined7323 is expected not to be branch removed7324 when new revision is not defined7325 is expected to be branch removed7326 #modified_paths7327 when a push is a branch update7328 returns modified paths7329 when a push is not a branch update7330 raises an error7331 #oldrev7332 when a valid oldrev is provided7333 returns oldrev7334 when a nil valud is provided7335 returns blank SHA7336 #newrev7337 when valid newrev is provided7338 returns newrev7339 when a nil valud is provided7340 returns blank SHA7341DeployTokens::TokensFinder7342 #execute7343 when scope is :all7344 returns all deploy tokens7345 and active filter is applied7346 returns only active tokens7347 but user is not an admin7348 raises Gitlab::Access::AccessDeniedError7349 when scope is a Project7350 returns all deploy tokens for the project7351 and active filter is applied7352 returns only active tokens for the project7353 but user is not a member7354 raises Gitlab::Access::AccessDeniedError7355 when scope is a Group7356 returns all deploy tokens for the group7357 and active filter is applied7358 returns only active tokens for the group7359 but user is not a member7360 raises Gitlab::Access::AccessDeniedError7361 when scope is nil7362 raises ArgumentError7363Gitlab::Suggestions::CommitMessage7364 #message7365 suggestion_set: suggestion_set_same_project7366 when a custom commit message is not specified7367 and is nil7368 uses the default commit message7369 and is an empty string7370 uses the default commit message7371 when a custom commit message is specified for forked project7372 uses the default commit message7373 when a custom commit message is specified7374 shows the custom commit message7375 is specified and includes all placeholders7376 generates a custom commit message7377 when a custom commit message is specified for forked project7378 uses the target project commit message7379 suggestion_set: suggestion_set_forked_project7380 when a custom commit message is not specified7381 and is nil7382 uses the default commit message7383 and is an empty string7384 uses the default commit message7385 when a custom commit message is specified for forked project7386 uses the default commit message7387 when a custom commit message is specified7388 shows the custom commit message7389 is specified and includes all placeholders7390 generates a custom commit message7391 when a custom commit message is specified for forked project7392 uses the target project commit message7393Ci::PipelineSuccessUnlockArtifactsWorker7394 #perform7395 is labeled as idempotent7396 performs multiple times sequentially without raising an exception7397 unlocks the artifacts from older pipelines7398 when pipeline exists7399 when pipeline has erasable artifacts7400 calls the unlock service7401 when pipeline has no erasable artifacts7402 does not call the unlock service7403 when pipeline does not exist7404 does not call service7405 .database_health_check_attrs7406 defines expected db health check attrs7407 with stop signal from database health check7408DEPRECATION WARNING: Invalid Feature Flag drop_sidekiq_jobs_Ci::PipelineSuccessUnlockArtifactsWorker stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)7409 defers the job by set time7410Gitlab::ImportExport::Project::ExportTask7411 when project is found7412 performs project export successfully7413 behaves like rake task with disabled object_storage7414 disables direct & background upload only for service call7415 when project is not found7416 logs an error7417 returns false7418 when file path is invalid7419 logs an error7420 returns false7421 when after export strategy fails7422 error is logged7423 when saving services fail7424 error is logged7425Gitlab::ImportExport::Shared7426 with a repository on disk7427 #archive_path7428 uses a random hash to avoid conflicts7429 memoizes the path7430 #export_path7431 uses a random hash relative to project path7432 memoizes the path7433 with a group on disk7434 #base_path7435 uses hashed storage path7436 when exportable type is unsupported7437 #base_path7438 raises7439 #error7440 filters any full paths7441 tracks exception7442Gitlab::UsageDataCounters::IssueActivityUniqueCounter7443 can return the count of actions per user deduplicated7444 for Issue title edit actions7445 behaves like internal event tracking7446 logs to Snowplow7447 for Issue description edit actions7448 behaves like internal event tracking7449 logs to Snowplow7450 for Issue assignee edit actions7451 behaves like internal event tracking7452 logs to Snowplow7453 for Issue make confidential actions7454 behaves like internal event tracking7455 logs to Snowplow7456 for Issue make visible actions7457 behaves like internal event tracking7458 logs to Snowplow7459 for Issue created actions7460 behaves like internal event tracking7461 logs to Snowplow7462 for Issue closed actions7463 behaves like internal event tracking7464 logs to Snowplow7465 for Issue reopened actions7466 behaves like internal event tracking7467 logs to Snowplow7468 for Issue label changed actions7469 behaves like internal event tracking7470 logs to Snowplow7471 for Issue label milestone actions7472 behaves like internal event tracking7473 logs to Snowplow7474 for Issue cross-referenced actions7475 behaves like internal event tracking7476 logs to Snowplow7477 for Issue moved actions7478 behaves like internal event tracking7479 logs to Snowplow7480 for Issue cloned actions7481 behaves like internal event tracking7482 logs to Snowplow7483 for Issue relate actions7484 behaves like internal event tracking7485 logs to Snowplow7486 for Issue unrelate actions7487 behaves like internal event tracking7488 logs to Snowplow7489 for Issue marked as duplicate actions7490 behaves like internal event tracking7491 logs to Snowplow7492 for Issue locked actions7493 behaves like internal event tracking7494 logs to Snowplow7495 for Issue unlocked actions7496 behaves like internal event tracking7497 logs to Snowplow7498 for Issue designs added actions7499 behaves like internal event tracking7500 logs to Snowplow7501 for Issue designs modified actions7502 behaves like internal event tracking7503 logs to Snowplow7504 for Issue designs removed actions7505 behaves like internal event tracking7506 logs to Snowplow7507 for Issue due date changed actions7508 behaves like internal event tracking7509 logs to Snowplow7510 for Issue time estimate changed actions7511 behaves like internal event tracking7512 logs to Snowplow7513 for Issue time spent changed actions7514 behaves like internal event tracking7515 logs to Snowplow7516 for Issue comment added actions7517 behaves like internal event tracking7518 logs to Snowplow7519 for Issue comment edited actions7520 behaves like internal event tracking7521 logs to Snowplow7522 for Issue comment removed actions7523 behaves like internal event tracking7524 logs to Snowplow7525 for Issue design comment removed actions7526 behaves like internal event tracking7527 logs to Snowplow7528Gitlab::Ci::Ansi2json::Line7529 #<<7530 appends new data to the current segment7531 #style7532 when style is passed to the initializer7533 returns the same style7534 when style is not passed to the initializer7535 returns the default style7536 #update_style7537 sets the style7538 #add_section7539 appends a new section to the list7540 #set_section_options7541 sets the current section's options7542 #set_as_section_header7543 change the section_header to true7544 #set_section_duration7545 duration: nil, result: "00:00"7546 is expected to eq "00:00"7547 duration: "string", result: "00:00"7548 is expected to eq "00:00"7549 duration: 0 seconds, result: "00:00"7550 is expected to eq "00:00"7551 duration: 7 seconds, result: "00:07"7552 is expected to eq "00:07"7553 duration: 75, result: "01:15"7554 is expected to eq "01:15"7555 duration: 1 minute and 15 seconds, result: "01:15"7556 is expected to eq "01:15"7557 duration: 13 hours, 14 minutes, and 15 seconds, result: "13:14:15"7558 is expected to eq "13:14:15"7559 duration: 1 day, 13 hours, 14 minutes, and 15 seconds, result: "37:14:15"7560 is expected to eq "37:14:15"7561 duration: 1.7976931348623157e+308, result: "8765:00:00"7562 is expected to eq "8765:00:00"7563 duration: 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, result: "8765:00:00"7564 is expected to eq "8765:00:00"7565 #flush_current_segment!7566 when current segment is not empty7567 adds the segment to the list7568 updates the current segment pointer propagating the style7569 when current segment is empty7570 does not add any segments to the list7571 does not change the current segment7572 #to_h7573 when sections are present7574 when section header is set7575 serializes the attributes set7576 when section duration is set7577 serializes the attributes set7578 when there are no sections7579 serializes the attributes set7580Gitlab::Usage::Metrics::Aggregates::Aggregate7581 .calculate_count_for_aggregation7582 with valid configuration7583 number_of_days: 28, operator: "AND", datasource: "redis_hll", expected_method: :calculate_metrics_intersections7584 returns the number of unique events for aggregation7585 number_of_days: 7, operator: "AND", datasource: "redis_hll", expected_method: :calculate_metrics_intersections7586 returns the number of unique events for aggregation7587 number_of_days: 28, operator: "AND", datasource: "database", expected_method: :calculate_metrics_intersections7588 returns the number of unique events for aggregation7589 number_of_days: 7, operator: "AND", datasource: "database", expected_method: :calculate_metrics_intersections7590 returns the number of unique events for aggregation7591 number_of_days: 28, operator: "OR", datasource: "redis_hll", expected_method: :calculate_metrics_union7592 returns the number of unique events for aggregation7593 number_of_days: 7, operator: "OR", datasource: "redis_hll", expected_method: :calculate_metrics_union7594 returns the number of unique events for aggregation7595 number_of_days: 28, operator: "OR", datasource: "database", expected_method: :calculate_metrics_union7596 returns the number of unique events for aggregation7597 number_of_days: 7, operator: "OR", datasource: "database", expected_method: :calculate_metrics_union7598 returns the number of unique events for aggregation7599 number_of_days: 28, operator: "AND", datasource: "internal_events", expected_method: :calculate_metrics_intersections7600 returns the number of unique events for aggregation7601 number_of_days: 7, operator: "AND", datasource: "internal_events", expected_method: :calculate_metrics_intersections7602 returns the number of unique events for aggregation7603 number_of_days: 28, operator: "OR", datasource: "internal_events", expected_method: :calculate_metrics_union7604 returns the number of unique events for aggregation7605 number_of_days: 7, operator: "OR", datasource: "internal_events", expected_method: :calculate_metrics_union7606 returns the number of unique events for aggregation7607 with invalid configuration7608 time_frame: "28d", operator: "SUM", datasource: "redis_hll", expected_error: Gitlab::Usage::Metrics::Aggregates::UnknownAggregationOperator7609 with non prod environment7610 raises error7611 with prod environment7612 returns fallback value7613 time_frame: "7d", operator: "AND", datasource: "mongodb", expected_error: Gitlab::Usage::Metrics::Aggregates::UnknownAggregationSource7614 with non prod environment7615 raises error7616 with prod environment7617 returns fallback value7618 time_frame: "all", operator: "AND", datasource: "redis_hll", expected_error: Gitlab::Usage::Metrics::Aggregates::DisallowedAggregationTimeFrame7619 with non prod environment7620 raises error7621 with prod environment7622 returns fallback value7623 when union data is not available7624 time_frame: "28d", operator: "OR", datasource: "redis_hll"7625 with non prod environment7626 raises error7627 with prod environment7628 returns fallback value7629 time_frame: "7d", operator: "OR", datasource: "database"7630 with non prod environment7631 raises error7632 with prod environment7633 returns fallback value7634 time_frame: "28d", operator: "OR", datasource: "internal_events"7635 with non prod environment7636 raises error7637 with prod environment7638 returns fallback value7639gitlab:ci_secure_files7640 # order random7641 check7642 outputs the integrity check for each batch7643 errors out about missing files on the file system7644 errors out about invalid checksum7645gitlab:smtp:secret rake tasks7646 :show7647 displays error when file does not exist7648 displays error when key does not exist7649 displays error when key is changed7650 outputs the unencrypted content when present7651 edit7652# password: '123'7653# user_name: 'gitlab-inst'7654 creates encrypted file7655 displays error when key does not exist7656 displays error when key is changed7657 displays error when write directory does not exist7658somevalue shows a warning when content is invalid7659 displays error when $EDITOR is not set7660 write7661 creates encrypted file from stdin7662 displays error when key does not exist7663 displays error when write directory does not exist7664somevalue shows a warning when content is invalid7665GroupMemberPresenter7666 #can_resend_invite?7667 when group_member is invited7668 and user can admin_group_member7669 is expected to eq true7670 and user cannot admin_group_member7671 is expected to eq false7672 when group_member is not invited7673 and user can admin_group_member7674 is expected to eq false7675 and user cannot admin_group_member7676 is expected to eq false7677 #last_owner?7678 when member is the last owner of the group7679 is expected to eq true7680 when member is not the last owner of the group7681 is expected to eq false7682 #can_update?7683 when user can update_group_member7684 is expected to eq true7685 when user cannot update_group_member7686 is expected to eq false7687 #can_remove?7688 when user can destroy_group_member7689 is expected to eq true7690 when user cannot destroy_group_member7691 is expected to eq false7692 #can_approve?7693 when group_member has request an invite7694 when user can update_group_member7695 is expected to eq true7696 when user cannot update_group_member7697 is expected to eq false7698 when group_member did not request an invite7699 when user can update_group_member7700 is expected to eq false7701 when user cannot update_group_member7702 is expected to eq false7703 behaves like #valid_level_roles7704 when no parent member is present7705 returns all permissible roles7706 when parent member is present7707 returns higher roles when a parent member is present7708Boards::BoardsFinder7709 #execute7710 when board parent is a project7711 behaves like boards list service7712 does not create a new board7713 returns parent boards7714 behaves like multiple boards list service7715 #execute7716 returns all issue boards7717 returns boards ordered by name7718 when wanting a specific board7719 returns board specified by id7720 raises exception when board is not found7721 when board parent is a group7722 behaves like boards list service7723 does not create a new board7724 returns parent boards7725Gitlab::Ci::Config::Extendable::Entry7726 .new7727 when entry key is not included in the context hash7728 raises error7729 #value7730 reads a hash value from the context7731 #extensible?7732 when entry has inheritance defined7733 is extensible7734 when entry does not have inheritance specified7735 is not extensible7736 when entry value is not a hash7737 is not extensible7738 #extends_keys7739 when entry is extensible7740 returns symbolized extends key value7741 when entry is not extensible7742 returns nil7743 #ancestors7744 returns ancestors keys7745 #base_hashes!7746 when base hash is not extensible7747 returns unchanged base hashes7748 when base hash is extensible too7749 extends the base hashes first7750 mutates original context7751 #extend!7752 when extending a non-hash value7753 raises an error7754 when extending unknown key7755 raises an error7756 when extending a hash correctly7757 returns extended part of the hash7758 mutates original context7759 when extending multiple hashes correctly7760 returns extended part of the hash7761 mutates original context7762 when hash is not extensible7763 returns original key value7764 does not mutate orignal context7765 when circular depenency gets detected7766 raises an error7767 when nesting level is too deep7768 raises an error7769Members::UnassignIssuablesService7770 #execute7771 when a user leaves a project7772 behaves like un-assigning issuables7773 removes issuable assignments7774 invalidates user cache7775 when a user leaves a group7776 behaves like un-assigning issuables7777 removes issuable assignments7778 invalidates user cache7779Gitlab::Metrics::Subscribers::RailsCache7780 when receiving multiple instrumentation hits in a transaction7781 does not raise InvalidLabelSetError error7782 #cache_read7783 increments the cache_read duration7784 with a transaction7785 with hit event7786 when super operation is fetch7787 does not increment cache read miss total7788 with miss event7789 increments the cache_read_miss total7790 when super operation is fetch7791 does not increment cache read miss total7792 #cache_read_multi7793 observes read_multi duration7794 with a transaction7795 observes multi-key count7796 with no transaction7797 does not observes multi-key count7798 #cache_write7799 observes write duration7800 #cache_delete7801 observes delete duration7802 #cache_exist?7803 observes the exists duration7804 #cache_fetch_hit7805 without a transaction7806 returns7807 with a transaction7808 increments the cache_read_hit count7809 #cache_generate7810 without a transaction7811 returns7812 with a transaction7813 increments the cache_fetch_miss count and cache_read_miss total7814 #observe7815 without a transaction7816 returns7817 with a transaction7818 observes cache metric7819 increments the operations total7820Projects::Forks::Details7821 # order random7822 #update!7823 updates the cache with the specified value7824 #counts7825 shows how far behind/ahead a fork is from the upstream7826 when counts calculated from a branch that exists upstream7827 compares the fork branch to upstream default branch7828 when specified branch does not exist7829 returns nils as counts7830 syncing?7831 returns whether there is a sync in progress7832 #has_conflicts7833 returns whether merge for the stored commits failed due to conflicts7834 #exclusive_lease7835 returns exclusive lease to the details7836Groups::UserGroupsFinder7837 #execute7838 returns all groups where the user is a direct member7839 when target_user is nil7840 is expected to be empty7841 when current_user is nil7842 is expected to be empty7843 when permission is :create_projects7844 is expected to contain exactly #<Group id:3408 @root-group/a-public-maintainer>, #<Group id:3409 @a-public-owner>, #<Group id:3406 @root-group/b-private-maintainer>, and #<Group id:3407 @root-group/c-public-developer>7845 behaves like user group finder searching by name or path7846 is expected to contain exactly #<Group id:3408 @root-group/a-public-maintainer> and #<Group id:3406 @root-group/b-private-maintainer>7847 when searching for a full path (including parent)7848 is expected to contain exactly #<Group id:3406 @root-group/b-private-maintainer>7849 when search keywords include the parent route7850 is expected to match [#<Group id:3408 @root-group/a-public-maintainer>, #<Group id:3407 @root-group/c-public-developer>]7851 when permission is :import_projects7852 is expected to contain exactly #<Group id:3408 @root-group/a-public-maintainer>, #<Group id:3409 @a-public-owner>, and #<Group id:3406 @root-group/b-private-maintainer>7853 behaves like user group finder searching by name or path7854 is expected to contain exactly #<Group id:3408 @root-group/a-public-maintainer> and #<Group id:3406 @root-group/b-private-maintainer>7855 when searching for a full path (including parent)7856 is expected to contain exactly #<Group id:3406 @root-group/b-private-maintainer>7857 when search keywords include the parent route7858 is expected to match [#<Group id:3408 @root-group/a-public-maintainer>]7859 when permission is :transfer_projects7860 is expected to contain exactly #<Group id:3408 @root-group/a-public-maintainer>, #<Group id:3409 @a-public-owner>, and #<Group id:3406 @root-group/b-private-maintainer>7861 behaves like user group finder searching by name or path7862 is expected to contain exactly #<Group id:3408 @root-group/a-public-maintainer> and #<Group id:3406 @root-group/b-private-maintainer>7863 when searching for a full path (including parent)7864 is expected to contain exactly #<Group id:3406 @root-group/b-private-maintainer>7865 when search keywords include the parent route7866 is expected to match [#<Group id:3408 @root-group/a-public-maintainer>]7867Mutations::Todos::Create7868 #resolve7869 when target does not support todos7870 raises error7871 with issue as target7872 behaves like create todo mutation7873 when user does not have permission to create todo7874 raises error7875 when user has permission to create todo7876 creates a todo7877 with merge request as target7878 behaves like create todo mutation7879 when user does not have permission to create todo7880 raises error7881 when user has permission to create todo7882 creates a todo7883 with design as target7884 behaves like create todo mutation7885 when user does not have permission to create todo7886 raises error7887 when user has permission to create todo7888 creates a todo7889Gitlab::Ci::Pipeline::Expression::Lexeme::Matches7890 .build7891 with non-evaluable operands7892 creates a new instance of the token7893 with evaluable operands7894 creates a new instance of the token7895 .type7896 is an operator7897 .precedence7898 has a precedence7899 #evaluate7900 when left and right do not match7901 is expected to eq false7902 when left and right match7903 is expected to eq true7904 when left is nil7905 is expected to eq false7906 when right is nil7907 is expected to eq false7908 when left and right are nil7909 is expected to eq false7910 when left is an empty string7911 is expected to eq false7912 when left and right are empty strings7913 is expected to eq true7914 when left is a multiline string and matches right7915 is expected to eq true7916 when left is a multiline string and does not match right7917 is expected to eq false7918 when a matching pattern uses regex flags7919 is expected to eq true7920 when a non-matching pattern uses regex flags7921 is expected to eq false7922 when right value is a regexp string7923 when matching7924 is expected to eq true7925 when not matching7926 is expected to eq false7927MergeRequests::ByApprovalsFinder7928 filter by no approvals7929 returns merge requests without approvals7930 filter by any approvals7931 returns merge requests approved by at least one user7932 filter by specific user approval7933 returns merge requests approved by specific user7934 filter by multiple user approval7935 returns merge requests approved by both users7936 limiting max conditional elements7937 returns merge requests approved by both users, considering limit of 2 being defined7938 with empty params7939 returns all merge requests7940API::Entities::Release7941 evidences7942 when the current user can read code7943 exposes the evidence sha and the json path7944 when the current user cannot read code7945 does not expose any evidence data7946 description_html7947 is inexistent7948 when include_html_description option is true7949 renders special references if current user has access7950 does not render special references if current user has no access7951 links7952 includes links7953Gitlab::Memory::Watchdog::Configurator7954 # order random7955 .configure_for_puma7956 behaves like as configurator7957 configures the correct handler7958 configures the correct event reporter7959 configures the correct logger7960 when sleep_time_seconds is not passed through the environment7961 configures the correct sleep time7962 when sleep_time_seconds is passed through the environment7963 configures the correct sleep time7964 with DISABLE_PUMA_WORKER_KILLER set to true7965 when settings are set via environment variables7966 behaves like as monitor configurator7967 executes monitors and returns correct results7968 when settings are not set via environment variables7969 behaves like as monitor configurator7970 executes monitors and returns correct results7971 with DISABLE_PUMA_WORKER_KILLER set to false7972 when settings are set via environment variables7973 behaves like as monitor configurator7974 executes monitors and returns correct results7975 when settings are not set via environment variables7976 behaves like as monitor configurator7977 executes monitors and returns correct results7978 .configure_for_sidekiq7979 behaves like as configurator7980 configures the correct handler7981 configures the correct event reporter7982 configures the correct logger7983 when sleep_time_seconds is not passed through the environment7984 configures the correct sleep time7985 when sleep_time_seconds is passed through the environment7986 configures the correct sleep time7987 when sleep_time_seconds is less than MIN_SIDEKIQ_SLEEP_INTERVAL_S seconds7988 configures the correct sleep time7989 with monitors7990 when settings are set via environment variables7991 behaves like as monitor configurator7992 executes monitors and returns correct results7993 when only SIDEKIQ_MEMORY_KILLER_MAX_RSS is set via environment variable7994 behaves like as monitor configurator7995 executes monitors and returns correct results7996 when only SIDEKIQ_MEMORY_KILLER_HARD_LIMIT_RSS is set via environment variable7997 behaves like as monitor configurator7998 executes monitors and returns correct results7999 when both SIDEKIQ_MEMORY_KILLER_MAX_RSS and SIDEKIQ_MEMORY_KILLER_HARD_LIMIT_RSS are not set8000 behaves like as monitor configurator8001 executes monitors and returns correct results8002JiraImport::ServerUsersMapperService8003 #execute8004 behaves like mapping jira users8005 jira_users is nil8006 returns an empty array8007 when jira_users is present8008 returns users mapped to Gitlab8009 runs only 4 queries8010Banzai::Pipeline::DescriptionPipeline8011 uses a limited allowlist8012 removes 'pre' elements8013 removes 'code' elements8014 removes 'img' elements8015 removes 'ol' elements8016 removes 'ul' elements8017 removes 'li' elements8018 still allows 'b' elements8019 still allows 'i' elements8020 still allows 'strong' elements8021 still allows 'em' elements8022 still allows 'a' elements8023 still allows 'ins' elements8024 still allows 'del' elements8025 still allows 'sup' elements8026 still allows 'sub' elements8027 still allows 'p' elements8028Sidebars::Projects::Menus::HiddenMenu8029 #render?8030 when menu does not have any menu items8031 returns false8032 when menu has menu items8033 returns true8034 Menu items8035 Activity8036 when user has access to the project8037 is expected not to be nil8038 when the user is not present8039 is expected not to be nil8040 Graph8041 when project repository is empty8042 is expected to be nil8043 behaves like access rights checks8044 is expected not to be nil8045 when the user does not have access8046 is expected to be nil8047 New Issue8048 behaves like access rights checks8049 is expected not to be nil8050 when the user does not have access8051 is expected to be nil8052 Jobs8053 behaves like access rights checks8054 is expected not to be nil8055 when the user does not have access8056 is expected to be nil8057 Commits8058 when project repository is empty8059 is expected to be nil8060 behaves like access rights checks8061 is expected not to be nil8062 when the user does not have access8063 is expected to be nil8064 Issue Boards8065 behaves like access rights checks8066 is expected not to be nil8067 when the user does not have access8068 is expected to be nil8069Gitlab::BitbucketImport::Importers::PullRequestImporter8070 # order random8071 #execute8072 calls MergeRequestCreator8073 creates a merge request with the correct attributes8074 logs its progress8075 when the state is closed8076 marks merge request as closed8077 when the state is opened8078 marks merge request as opened8079 when the author does not have a bitbucket identity8080 sets the author and assignee to the project creator and adds the author to the description8081 when none of the reviewers have an identity8082 does not set reviewer_ids8083 head_commit_sha for merge request diff8084 when the source commit hash from Bitbucket is found on the repo8085 is set to the source commit hash8086 when the source commit hash is not found but the merge commit hash is found8087 is set to the merge commit hash8088 when both the source commit and merge commit hash are not found8089 is nil8090 when an error is raised8091 tracks the failure and does not fail8092Gitlab::SidekiqConfig::Worker8093 #ee?8094 returns the EE status set on creation8095 #jh?8096 returns the JH status set on creation8097 #==8098 defines two workers as equal if their YAML representations are equal8099 returns true when a worker is compared with its YAML representation8100 delegations8101 delegates feature_category_not_owned? to the worker class8102 delegates generated_queue_name to the worker class8103 delegates get_feature_category to the worker class8104 delegates get_weight to the worker class8105 delegates get_worker_resource_boundary to the worker class8106 delegates get_urgency to the worker class8107 delegates queue_namespace to the worker class8108 delegates worker_has_external_dependencies? to the worker class8109 sorting8110 sorts queues with a namespace before those without a namespace8111 sorts alphabetically by queue8112 YAML encoding8113 encodes the worker in YAML as a hash of the queue8114 #namespace_and_weight8115 returns a namespace, weight pair for the worker8116 #queue_and_weight8117 returns a queue, weight pair for the worker8118Users::GroupCalloutsHelper8119 .show_invite_banner?8120 when user has the admin ability for the group8121 when the invite_members_banner has not been dismissed8122 is expected to eq true8123 when the group was just created8124 is expected to eq false8125 with concerning multiple members8126 on current group8127 is expected to eq false8128 on current group that is a subgroup8129 with only one user on parent and this group8130 is expected to eq true8131 when another user is on this group8132 is expected to eq false8133 when another user is on the parent group8134 is expected to eq false8135 when the invite_members_banner has been dismissed8136 is expected to eq false8137 when user does not have admin ability for the group8138 is expected to eq false8139projects/pages/show8140 validation warning8141 doesn't show auto ssl error warning8142 when domain is not verified8143 shows auto ssl error warning8144 warning about failed Let's Encrypt8145 doesn't show auto ssl error warning8146 when we failed to obtain Let's Encrypt's certificate8147 shows auto ssl error warning8148Import::GitlabProjects::CreateProjectService8149 validation8150 is expected to be valid8151 validates presence of path8152 validates presence of name8153 is invalid if the strategy is invalid8154 #execute8155 creates a project successfully8156 when the project creation raises an error8157 fails to create a project8158 when the validation fail8159 fails to create a project8160 when the project contains multiple errors8161 fails to create a project8162 when the strategy adds project parameters8163 merges the strategy project parameters8164Banzai::ReferenceParser::ProjectParser8165 #referenced_by8166 when the link has a data-project attribute8167 using an existing project ID8168 returns an Array of projects8169 using a non-existing project ID8170 returns an empty Array8171 using a private project ID8172 returns an empty Array when unauthorized8173 returns an Array when authorized8174Gitlab::SafeRequestLoader8175 .execute8176 gets data from the store and returns it8177 #execute8178 without a block8179 raises an error8180 when a resource_id is nil8181 contains resource_data with nil key8182 with SafeRequestStore considerations8183 when request store is active8184 gets data from the store8185 with already loaded resource_ids8186 does not re-fetch data if resource_id already exists8187 with mixture of new and existing resource_ids8188 when block does not filter for only the missing resource_ids8189 overwrites existing keyed data with results from the block8190 when passing the missing resource_ids to a block that filters for them8191 only updates resource_data with keyed items that did not exist8192 with default_value for resource_ids that did not exist in the results8193 when default_value is provided8194 populates a default value8195 when default_value is not provided8196 populates a default_value of nil8197 when request store is not active8198 has no data added from the store8199 with mixture of new and existing resource_ids8200 when block does not filter out existing resource_data keys8201 overwrites existing keyed data with results from the block8202 when passing the missing resource_ids to a block that filters for them8203 only updates resource_data with keyed items that did not exist8204 with default_value for resource_ids that did not exist in the results8205 when default_value is provided8206 populates a default value8207 when default_value is not provided8208 populates a default_value of nil8209Projects::Ml::ExperimentsHelper8210 # order random8211 #page_info8212 when is first page8213 generates the correct page_info8214 when is last page8215 generates the correct page_info8216 #experiment_as_data8217 is expected to eq {"name"=>"experiment2", "path"=>"/namespace1199/project-1434/-/ml/experiments/1"}8218 #formatted_page_info8219 formats to json8220 #unique_logged_names8221 when for params8222 is expected to contain exactly "param1", "param2", and "param3"8223 when latest_metrics is passed8224 is expected to contain exactly "metric1", "metric2", and "metric3"8225 #experiments_as_data8226 generates the correct info8227 #candidates_table_items8228 creates the correct model for the table8229 when candidate does not have user8230 has the user property, but is nil8231 when user is not allowed to read the project8232 does not include ci info and user for candidate created through CI8233Boards::Issues::CreateService8234 #execute8235 delegates the create proceedings to Issues::CreateService8236 creates a new issue8237 adds the label of the list to the issue8238GoogleCloud::CreateCloudsqlInstanceService8239 #execute8240 triggers creation of a cloudsql instance8241 triggers worker to manage cloudsql instance creation operation results8242 when google APIs fail8243 returns error8244 when project has GCP_REGION defined8245 uses defined region8246Wikis::GitGarbageCollectWorker8247 behaves like can collect git garbage8248 #perform8249 with active lease_uuid8250 flushes ref caches when the task if 'gc'8251 handles gRPC errors8252 behaves like it calls Gitaly8253 is expected to receive optimize_repository(*(any args)) 1 time8254 behaves like it updates the resource statistics8255 updates the resource statistics8256 does nothing if the database is read-only8257 with different lease than the active one8258 returns silently8259 with no active lease8260 when is able to get the lease8261 flushes ref caches when the task if 'gc'8262 behaves like it calls Gitaly8263 is expected to receive optimize_repository(*(any args)) 1 time8264 behaves like it updates the resource statistics8265 updates the resource statistics8266 does nothing if the database is read-only8267 when no lease can be obtained8268 returns silently8269 prune8270 is expected to receive prune_unreachable_objects(*(any args)) 1 time8271 eager8272 is expected to receive optimize_repository({:eager=>true}) 1 time8273Resolvers::DesignManagement::Version::DesignsAtVersionResolver8274 .single8275 returns the single context resolver8276 #resolve8277 when the user cannot see designs8278 returns nothing8279 for the current version8280 returns all designs visible at that version8281 for a previous version with more objects8282 returns objects that were later deleted8283 for a previous version with fewer objects8284 does not return objects that were later created8285 filtering8286 by filename8287 resolves to just the relevant design8288 by id8289 resolves to just the relevant design, ignoring objects on other issues8290Security::CiConfiguration::SastIacBuildAction8291 with existing .gitlab-ci.yml and when the ci config file configuration was not set8292 behaves like existing .gitlab-ci.yml tests8293 with existing .gitlab-ci.yml8294 sast iac has not been included8295 template includes are an array8296 generates the correct YML8297 template include is not an array8298 generates the correct YML8299 secret_detection has been included8300 secret_detection template include are an array8301 generates the correct YML8302 secret_detection template include is not an array8303 generates the correct YML8304 with existing .gitlab-ci.yml and when the ci config file configuration was deleted8305 behaves like existing .gitlab-ci.yml tests8306 with existing .gitlab-ci.yml8307 sast iac has not been included8308 template includes are an array8309 generates the correct YML8310 template include is not an array8311 generates the correct YML8312 secret_detection has been included8313 secret_detection template include are an array8314 generates the correct YML8315 secret_detection template include is not an array8316 generates the correct YML8317 with no .gitlab-ci.yml8318 autodevops disabled8319 generates the correct YML8320 with autodevops enabled8321 generates the correct YML8322BulkImports::PipelineBatchWorker8323 # order random8324 #perform8325 runs the given pipeline batch successfully8326 when tracker is failed8327 skips the batch8328 when tracker is finished8329 skips the batch8330 when batch status is started8331 runs the given pipeline batch successfully8332 when exclusive lease cannot be obtained8333 does not run the pipeline8334 when pipeline raises an exception8335 when pipeline is retryable8336 retries the batch8337 when pipeline is not retryable8338 fails the batch and creates a failure record8339Users::NamespaceCommitEmail8340 # order random8341 is expected to be valid8342 validations8343 is expected to validate that :user cannot be empty/falsy8344 is expected to validate that :namespace cannot be empty/falsy8345 is expected to validate that :email cannot be empty/falsy8346 is expected to validate that :user is case-sensitively unique within the scope of :namespace_id8347 validate_root_group8348 when root group8349 is expected to be valid8350 when subgroup8351 is invalid and reports the relevant error8352 associations8353 is expected to belong to user required: false8354 is expected to belong to namespace required: false8355 is expected to belong to email required: false8356 .delete_for_namespace8357 deletes all records for namespace8358Gitlab::LocalAndRemoteStorageMigration::ArtifactMigrater8359 behaves like local and remote storage migration8360 start_store: 1, end_store: 2, method: :migrate_to_remote_storage8361 successfully migrates8362 start_store: 2, end_store: 2, method: :migrate_to_remote_storage8363 successfully migrates8364 start_store: 2, end_store: 1, method: :migrate_to_local_storage8365 successfully migrates8366 start_store: 1, end_store: 1, method: :migrate_to_local_storage8367 successfully migrates8368 when migration fails8369 prints error8370Gitlab::RackAttack::UserAllowlist8371 input: nil, elements: []8372 has the expected elements8373 implements empty?8374 implements include?8375 input: "", elements: []8376 has the expected elements8377 implements empty?8378 implements include?8379 input: "123", elements: [123]8380 has the expected elements8381 implements empty?8382 implements include?8383 input: "123,456", elements: [123, 456]8384 has the expected elements8385 implements empty?8386 implements include?8387 input: "123,foobar, 456,", elements: [123, 456]8388 has the expected elements8389 implements empty?8390 implements include?8391Autocomplete::GroupFinder8392 #execute8393 with a project8394 returns nil8395 without a group ID8396 returns nil8397 with an empty String as the group ID8398 returns nil8399 without a project and with a group ID8400 raises ActiveRecord::RecordNotFound if the group does not exist8401 raises ActiveRecord::RecordNotFound if the user can not read the group8402 raises ActiveRecord::RecordNotFound if an anonymous user can not read the group8403 returns the group if it exists and is readable8404ObjectPool::CreateWorker8405 #perform8406 when the pool creation is successful8407 marks the pool as ready8408 when a the pool already exists8409 cleans up the pool8410 when the server raises an unknown error8411 marks the pool as failed8412 when the pool creation failed before8413 deletes the pool first8414Aws::Role8415 is expected to belong to user required: false8416 is expected to validate that the length of :role_external_id is between 1 and 648417 custom validations8418 :role_arn8419 length is zero8420 is expected to be falsey8421 length is longer than 20488422 is expected to be falsey8423 ARN is valid8424 is expected to be truthy8425 ARN is nil8426 is expected to be truthy8427 callbacks8428 #ensure_role_external_id!8429 for a new record8430 calls #ensure_role_external_id!8431 for an existing record8432 does not call #ensure_role_external_id!8433 #ensure_role_external_id!8434 role_external_id is blank8435 generates an external ID and assigns it to the record8436 role_external_id is already set8437 does not change the existing external id8438Gitlab::RepositorySizeChecker8439 #enabled?8440 when enabled8441 returns true8442 when limit is zero8443 returns false8444 #changes_will_exceed_size_limit?8445 returns true when changes go over8446 returns false when changes do not go over8447 #above_size_limit?8448 returns false when not over the limit8449 when size is above the limit8450 returns true8451 #exceeded_size8452 when no change size provided8453 when current size is below the limit8454 returns zero8455 when current size is equal to the limit8456 returns zero8457 when current size is over the limit8458 returns a positive number8459 when a change size is provided8460 when change size will be over the limit8461 returns a positive number8462 when change size will be at the limit8463 returns zero8464 when change size will be under the limit8465 returns zero8466 #additional_repo_storage_available?8467 returns false8468TokenAuthenticatableStrategies::Base8469 #token_fields8470 includes the token field8471 with expires_at option8472 includes the token_expires_at field8473 #format_token8474 returns the origin token8475 when format_with_prefix option is provided8476 with symbol8477 returns a formatted token from the format_with_prefix option8478 with something else8479 raise not implemented8480 .fabricate8481 when digest stragegy is specified8482 fabricates digest strategy object8483 when encrypted strategy is specified8484 fabricates encrypted strategy object8485 when no strategy is specified8486 fabricates insecure strategy object8487 when incompatible options are provided8488 raises an error8489Gitlab::Database::DatabaseConnectionInfo8490 # order random8491 #order8492 name: :main, order: 08493 is expected to eq 08494 name: :ci, order: 18495 is expected to eq 18496 name: :undefined, order: 10008497 is expected to eq 10008498 #connection_class8499 when klass is "ActiveRecord::Base"8500 does always return "ActiveRecord::Base"8501 when klass is "Ci::ApplicationRecord"8502 does return "Ci::ApplicationRecord" when it is connection_class8503 does return nil when it is not connection_class8504 .load_file8505 does load YAML file and has file_path specified8506 #connection_class_or_fallback8507 for "main"8508 does return ActiveRecord::Base8509 for "ci"8510 does return "Ci::ApplicationRecord" when it is connection_class8511 does return "ActiveRecord::Base" (fallback to "main") when it is not connection_class8512 db_docs_dir8513 when db_dir is specified8514 is expected to eq #<Pathname:/builds/gitlab-org/gitlab/ee/my/db/docs>8515 when db_dir is not specified fallbacks to "db/docs"8516 is expected to eq #<Pathname:/builds/gitlab-org/gitlab/db/docs>8517 .new8518 does convert attributes into symbols and objects8519 does raise error when using invalid argument8520 #has_gitlab_shared?8521 gitlab_schemas: ["gitlab_main"], result: false8522 is expected to eq false8523 gitlab_schemas: ["gitlab_main", "gitlab_shared"], result: true8524 is expected to eq true8525AuditEventSaveType8526 #should_save_database? and #should_save_stream?8527 query_method: :should_save_stream?, query_param: :stream, result: true8528 returns corresponding results according to the query_method and query_param8529 query_method: :should_save_stream?, query_param: :database_and_stream, result: true8530 returns corresponding results according to the query_method and query_param8531 query_method: :should_save_database?, query_param: :database, result: true8532 returns corresponding results according to the query_method and query_param8533 query_method: :should_save_database?, query_param: :database_and_stream, result: true8534 returns corresponding results according to the query_method and query_param8535 query_method: :should_save_stream?, query_param: :database, result: false8536 returns corresponding results according to the query_method and query_param8537 query_method: :should_save_stream?, query_param: nil, result: false8538 returns corresponding results according to the query_method and query_param8539 query_method: :should_save_database?, query_param: :stream, result: false8540 returns corresponding results according to the query_method and query_param8541 query_method: :should_save_database?, query_param: nil, result: false8542 returns corresponding results according to the query_method and query_param8543Gitlab::HookData::IssueBuilder8544 #build8545 includes safe attribute8546 includes additional attrs8547 when the issue has an image in the description8548 sets the image to use an absolute URL8549 for incident8550 includes additional attr8551RuboCop::Cop::Performance::ARExistsAndPresentBlank8552 # order random8553 when it is not haml file8554 does not flag it as an offense8555 when it is haml file8556 the same object uses exists? and present?8557 flags it as an offense8558 the same object uses exists? and blank?8559 flags it as an offense8560 the same object uses exists?, blank? and present?8561 flags it as an offense8562 behaves like different object uses exists? and present?/blank?8563 does not flag it as an offense8564 behaves like different object uses exists? and present?/blank?8565 does not flag it as an offense8566 behaves like Only using one present?/blank? without exists?8567 does not flag it as an offense8568 behaves like Only using one present?/blank? without exists?8569 does not flag it as an offense8570 when using many present?/empty? without exists?8571 does not flag it as an offense8572 when just using exists? without present?/blank?8573 does not flag it as an offense8574Users::LastPushEventService8575 #cache_last_push_event8576 caches the event for the event's project and current user8577 caches the event for the origin project when pushing to a fork8578 #last_event_for_user8579 returns the last push event for the current user8580 returns nil when no push event could be found8581 #last_event_for_project8582 returns the last push event for the given project8583 returns nil when no push event could be found8584 #find_cached_event8585 with a non-existing cache key8586 returns nil8587 with an existing cache key8588 returns a PushEvent when no merge requests exist for the event8589 removes the cache key when no event could be found and returns nil8590StubMethodCalls8591 #stub_method8592 stubs the method response8593 when calling it on an already stubbed method8594 stubs correctly8595 methods that accept arguments8596 stubs correctly8597 methods that use named arguments8598 stubs correctly8599 stubbing non-existent method8600 stubs correctly8601 #restore_original_method8602 restores original behaviour8603 method is not stubbed8604 is expected to raise NotImplementedError with "some_other_method has not been stubbed on #<Class:0x0000784f7a13cee0>"8605 #restore_original_methods8606 restores original behaviour8607Gitlab::FileMarkdownLinkBuilder8608 markdown_link8609 when file name has the character ]8610 escapes the character8611 when file is an image8612 returns preview markdown link8613 when file is video8614 returns preview markdown link8615 when file is audio8616 returns preview markdown link8617 when file is not embeddable8618 returns markdown link8619 when file name is blank8620 returns nil8621 mardown_name8622 when file is an image8623 retrieves the name without the extension8624 when file is video8625 retrieves the name without the extension8626 when file is audio8627 retrieves the name without the extension8628 when file is not embeddable8629 retrieves the name with the extesion8630 when file name is blank8631 returns nil8632TaskListToggleService8633 checks Task 18634 unchecks Item 18635 checks task in loose list8636 checks task with no-break space8637 checks Another item8638 returns false if line_source does not match the text8639 tolerates \r\n line endings8640 returns false if markdown is nil8641 returns false if markdown_html is nil8642 properly handles tasks in a blockquote8643 properly handles a GitLab blockquote8644 when clicking an embedded subtask8645 properly handles it inside an unordered list8646 properly handles it inside an ordered list8647VersionCheck8648 .url8649 returns the correct URL8650 reactive cache properties8651 .reactive_cache_refresh_interval8652 returns 12.hours8653 .reactive_cache_lifetime8654 returns 7.days8655 #calculate_reactive_cache8656 response code is 200 with valid body8657 returns the response object8658 response code is 200 with invalid body8659 returns an error hash8660 response code is not 2008661 returns an error hash8662 #response8663 with old string value in cache8664 returns nil8665 with non-hash value in cache8666 returns nil and invalidates the reactive cache8667 cache returns value8668 returns the response object8669 cache returns error8670 returns nil and invalidates the reactive cache8671Sidebars::UserProfile::Menus::StarredProjectsMenu8672 # order random8673 behaves like User profile menu8674 does not contain any sub menu8675 renders the correct link8676 renders the correct title8677 renders the correct icon8678 renders the correct avatar8679 defines correct active route8680 renders if user is logged in8681 when viewed user is blocked8682 when user is not logged in8683 is not allowed to view the menu item8684 when current user has permission8685 is allowed to view the menu item8686 when current user does not have permission8687 is not allowed to view the menu item8688 when viewed user is banned8689EscapeUtils.escape_url is deprecated. Use CGI.escape instead, performance is similar8690EscapeUtils.escape_url is deprecated. Use CGI.escape instead, performance is similar8691 when user is not logged in8692 is not allowed to view the menu item8693 when current user has permission8694 is allowed to view the menu item8695 when current user does not have permission8696 is not allowed to view the menu item8697ClickHouse::Redactor8698 # order random8699 .redact8700 when given simple conditions8701 redacts equality conditions correctly8702 when given IN conditions8703 redacts IN conditions correctly8704 with supported arel nodes8705 redacts a query using the In node8706 redacts a query using the Equality node8707 redacts a query using the LessThan node8708 redacts a query using the LessThanOrEqual node8709 redacts a query using the GreaterThan node8710 redacts a query using the GreaterThanOrEqual node8711 with unsupported arel nodes8712 raises an error for the unsupported node8713 when method chaining is used8714 redacts chained conditions correctly8715 when calling .redact multiple times8716 produces consistent redacted SQL8717ProtectedTags::UpdateService8718 #execute8719 updates a protected tag8720 when updating protected tag with a name that contains HTML tags8721 updates a protected tag8722 without admin_project permissions8723 raises error8724Gitlab::QuickActions::TimelineTextAndDateTimeSeparator8725 # order random8726 execute8727 with invalid parameters in arg line8728 with empty arg line8729 behaves like arg line with invalid parameters8730 returns nil8731 with invalid date8732 behaves like arg line with invalid parameters8733 returns nil8734 behaves like arg line with invalid parameters8735 returns nil8736 behaves like arg line with invalid parameters8737 returns nil8738 with invalid time8739 behaves like arg line with invalid parameters8740 returns nil8741 when date is invalid in arg line8742 return current date8743 with valid parameters8744 when only timeline text present in arg line8745 behaves like arg line with valid parameters8746 returns text and date time array8747 when only timeline text and time present in arg line8748 behaves like arg line with valid parameters8749 returns text and date time array8750 when timeline text and date is present in arg line8751 behaves like arg line with valid parameters8752 returns text and date time array8753Gitlab::GithubImport::Importer::PullRequests::ReviewRequestsImporter8754 # order random8755 #sequential_import8756 imports each project merge request reviewers8757 when merge request is already processed8758 doesn't import this merge request reviewers8759 #parallel_import8760 schedule import for each merge request reviewers8761 when merge request is already processed8762 doesn't schedule import this merge request reviewers8763Gitlab::Ci::Build::Releaser8764 #script8765 all nodes8766 generates the script8767 individual nodes8768 node_name: :name, node_value: "Release $CI_COMMIT_SHA", result: "release-cli create --name \"Release $CI_COMMIT_SHA\""8769 generates the script8770 node_name: :description, node_value: "Release-cli $EXTRA_DESCRIPTION", result: "release-cli create --description \"Release-cli $EXTRA_DESCRIPTION\""8771 generates the script8772 node_name: :tag_name, node_value: "release-$CI_COMMIT_SHA", result: "release-cli create --tag-name \"release-$CI_COMMIT_SHA\""8773 generates the script8774 node_name: :tag_message, node_value: "Annotated tag message", result: "release-cli create --tag-message \"Annotated tag message\""8775 generates the script8776 node_name: :ref, node_value: "$CI_COMMIT_SHA", result: "release-cli create --ref \"$CI_COMMIT_SHA\""8777 generates the script8778 node_name: :milestones, node_value: ["m1", "m2", "m3"], result: "release-cli create --milestone \"m1\" --milestone \"m2\" --milestone \"m3\""8779 generates the script8780 node_name: :released_at, node_value: "2020-07-15T08:00:00Z", result: "release-cli create --released-at \"2020-07-15T08:00:00Z\""8781 generates the script8782 node_name: :assets, node_value: {:links=>[{:name=>"asset1", :url=>"https://example.com/assets/1", :link_type=>"other", :filepath=>"/pretty/asset/1"}]}, result: "release-cli create --assets-link \"{\\\"name\\\":\\\"asset1\\\",\\\"url\\\":\\\"https://example.com/assets/1\\\",\\\"link_type\\\":\\\"other\\\",\\\"filepath\\\":\\\"/pretty/asset/1\\\"}\""8783 generates the script8784Gitlab::WorkItems::WorkItemHierarchy8785 # order random8786 #base_and_descendants8787 includes the base and its descendants8788 when same_type option is used8789 includes the base and its ancestors8790 when with_depth is true8791 includes depth in the results8792 #base_and_ancestors8793 includes the base and its ancestors8794 can find ancestors upto a certain level8795 when same_type option is used8796 includes the base and its ancestors8797 hierarchy_order option8798 for :asc8799 orders by child to ancestor8800 for :desc8801 orders by ancestor to child8802JobArtifactReportEntity8803 #as_json8804 exposes file_type8805 exposes file_format8806 exposes size8807 exposes download path8808Ci::PipelineArtifacts::CreateQualityReportWorker8809 #perform8810 when pipeline exists8811 calls pipeline codequality report service8812 behaves like an idempotent worker8813 is labeled as idempotent8814 performs multiple times sequentially without raising an exception8815 does not create another pipeline artifact if already has one8816 when pipeline does not exist8817 does not call pipeline codequality report service8818admin/application_settings/_repository_check.html.haml8819 repository checks8820 has the setting subsection8821 renders the correct setting subsection content8822 housekeeping8823 has the setting subsection8824 renders the correct setting subsection content8825 inactive project deletion8826 has the setting subsection8827 renders the correct setting subsection content8828Ci::ArtifactBlob8829 #id8830 returns a hash of the path8831 #name8832 returns the entry name8833 #path8834 returns the entry path8835 #size8836 returns the entry size8837 #mode8838 returns the entry mode8839 #external_storage8840 returns :build_artifact8841 #external_url8842 with not allowed extension8843 is expected to be nil8844 with allowed extension8845 is expected to eq "http://namespace1254.example.com/-/project1/-/jobs/171/artifacts/other_artifacts_0.1.2/doc_sample.txt"8846 when port is configured8847 is expected to eq "http://namespace1254.example.com:1234/-/project1/-/jobs/171/artifacts/other_artifacts_0.1.2/doc_sample.txt"8848 #external_link?8849 with not allowed extensions8850 returns false8851 with allowed extensions8852 returns true8853Net::HTTP patch proxy user and password encoding8854 #proxy_user8855 is expected to eq nil8856 with http_proxy env8857 is expected to eq nil8858 and user:password authentication8859 when on multiuser safe platform8860 is expected to eq "Y\\X"8861 when not on multiuser safe platform8862 is expected to be nil8863 #proxy_pass8864 is expected to eq nil8865 with http_proxy env8866 is expected to eq nil8867 and user:password authentication8868 when on multiuser safe platform8869 is expected to eq "R%S] ?X"8870 when not on multiuser safe platform8871 is expected to be nil8872BulkImports::Projects::Pipelines::ProjectPipeline8873 #run8874 imports new project into destination group8875 skips duplicate projects on pipeline re-run8876 pipeline parts8877 is expected to includes the BulkImports::Pipeline module8878 is expected to includes the BulkImports::Pipeline::Runner module8879 has extractors8880 has transformers8881Gitlab::Ci::Pipeline::Seed::Processable::ResourceGroup8882 #to_resource8883 when resource group key is specified8884 returns a resource group object8885 when environment has an invalid URL8886 returns nothing8887 when there is a resource group already8888 does not create a new resource group8889 when resource group key is nil8890 returns nothing8891API::Entities::MergeRequestChanges8892 exposes basic entity fields8893 when #expose_raw_diffs? returns false8894 does not access merge_request.raw_diffs8895 when #expose_raw_diffs? returns true8896 does not access merge_request.raw_diffs8897 :overflow field8898 when :access_raw_diffs is true8899 reports false8900Gitlab::Cleanup::OrphanJobArtifactFilesBatch8901 no dry run8902 deletes only orphan job artifacts from disk8903 with dry run8904 does not remove files8905Sidebars::Concerns::SuperSidebarPanel8906 # order random8907 #transform_old_menus8908 converts "solo" top-level Menu entry to Menu Item8909 drops "solo" top-level Menu entries, if they serialize to nil8910 for Menus with Menu Items8911 adds Menu Items to defined super_sidebar_parent8912 replaces placeholder Menu Items in the defined super_sidebar_parent8913 considers Menu Items uncategorized if super_sidebar_parent is nil8914 considers Menu Items uncategorized if super_sidebar_parent cannot be found8915 considers Menu Items deleted if super_sidebar_parent is Sidebars::NilMenuItem8916 #pick_from_old_menus8917 removes items with #pick_into_super_sidebar? from a list and adds them to the panel menus8918Autocomplete::DeployKeysWithWriteAccessFinder8919 #execute8920 when project is missing8921 returns an empty ActiveRecord::Relation8922 when project is present8923 and current user cannot admin project8924 raises Gitlab::Access::AccessDeniedError8925 and current user can admin project8926 when deploy key does not have write access to project8927 returns an empty ActiveRecord::Relation8928 when deploy key has write access to project8929 returns the deploy keys8930MergeRequests::CreateApprovalEventService8931 #execute8932 creates approve MR event8933RuboCop::Cop::Migration::UpdateColumnInBatches8934 # order random8935 when in a post migration8936 behaves like a migration file with no spec file8937 registers an offense when using update_column_in_batches8938 behaves like a migration file with a spec file8939 does not register any offenses8940 for EE migrations8941 when in a migration8942 behaves like a migration file with no spec file8943 registers an offense when using update_column_in_batches8944 behaves like a migration file with a spec file8945 does not register any offenses8946 when in a post migration8947 behaves like a migration file with no spec file8948 registers an offense when using update_column_in_batches8949 behaves like a migration file with a spec file8950 does not register any offenses8951 when in migration8952 behaves like a migration file with no spec file8953 registers an offense when using update_column_in_batches8954 behaves like a migration file with a spec file8955 does not register any offenses8956 #external_dependency_checksum8957 is expected to eq "833525c0d9c95d066dbfc8d973153b44a1f8a42694b54de3aaa854cb9f72a6bd"8958 when outside of a migration8959 does not register any offenses8960Packages::Composer::Metadatum8961 relationships8962 is expected to belong to package required: false8963 validations8964 is expected to validate that :package cannot be empty/falsy8965 is expected to validate that :target_sha cannot be empty/falsy8966 is expected to validate that :composer_json cannot be empty/falsy8967 #composer_package_type8968 when the metadatum package_type is Composer8969 is expected to be valid8970 when the metadatum has no associated package8971 behaves like an invalid record8972 is expected to include "Package type must be Composer"8973 when the metadatum package_type is not Composer8974 behaves like an invalid record8975 is expected to include "Package type must be Composer"8976 scopes8977 .for_package8978 is expected to eq [#<Packages::Composer::Metadatum package_id: 6, target_sha: "bdbd205509040b1331ce95462a7aaa7c11d20cf0", composer_json: {"name"=>"sample-project"}, version_cache_sha: nil>]8979Gitlab::Config::Entry::Simplifiable8980 .strategy8981 defines entry strategies8982 setting strategy by a condition8983 when first strategy should be used8984 attemps to load a first strategy8985 when second strategy should be used8986 attemps to load a second strategy8987 when neither one is a valid strategy8988 instantiates an unknown strategy8989 when a unknown strategy class is not defined8990 raises an error when being initialized8991BulkImports::Projects::Pipelines::RepositoryPipeline8992 #run8993 successfully imports repository8994 imports new repository into destination project8995 project has no repository8996 skips repository import8997 blocked local networks8998 prevents import8999 when scheme is blocked9000 prevents import9001 #after_run9002 executes housekeeping service after import9003Mutations::Environments::CanaryIngress::Update9004 #resolve9005 when service execution succeeded9006 returns no errors9007 with certificate_based_clusters disabled9008 returns notice about feature removal9009 when service encounters a problem9010 returns an error9011 when user is reporter who does not have permission to access the environment9012 raises an error9013DependencyProxy::AuthTokenService9014 .user_or_deploy_token_from_jwt9015 with a user9016 is expected to eq #<User id:1816 @user662>9017 with an invalid user id9018 raises an not found error9019 behaves like handling token errors9020 with a decoding error9021 is expected to eq nil9022 with an immature signature error9023 is expected to eq nil9024 with an expired signature error9025 returns nil9026 with a deploy token9027 is expected to eq #<DeployToken id: 62, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-1...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>9028 with an invalid token9029 is expected to eq nil9030 behaves like handling token errors9031 with a decoding error9032 is expected to eq nil9033 with an immature signature error9034 is expected to eq nil9035 with an expired signature error9036 returns nil9037 with an empty token payload9038 is expected to eq nil9039Gitlab::Metrics::Prometheus9040 #reset_registry!9041 clears existing metrics9042 #error_detected!9043 disables Prometheus metrics9044Repositories::BranchNamesFinder9045 #execute9046 returns all filtered branch names9047 returns a limited number of offset filtered branch names9048Gitlab::Database::Migrations::ExtensionHelpers9049 # order random9050 #drop_extension9051 executes CREATE EXTENSION statement9052 without proper permissions9053 raises an exception and prints an error message9054 #create_extension9055 executes CREATE EXTENSION statement9056 without proper permissions9057 raises an exception and prints an error message9058Resolvers::Terraform::StatesResolver9059 is expected to have nullable GraphQL type TerraformStateConnection9060 is expected to be truthy9061 #resolve9062 returns states associated with the agent9063 user does not have permission9064 is expected to be empty9065Resolvers::Terraform::StatesResolver.single9066 is expected to be < Resolvers::Terraform::StatesResolver9067 arguments9068 name9069 is expected to be present9070KeysetHelper9071 with admin mode9072 when no users are present9073 does not render pagination links9074 when one user is present9075 does not render pagination links9076 when more users are present9077 when on the first page9078 renders the next and last links9079 when at the last page9080 renders the prev and first links9081 when at the second page9082 renders all links9083ObjectStorage::CDN9084 # order random9085 with CDN config9086 with a known CDN provider9087 #cdn_enabled_url9088 calls #cdn_signed_url9089 #use_cdn?9090 returns true9091 #cdn_signed_url9092 returns a URL9093 with an unknown CDN provider9094 raises an error9095 without CDN config9096 #cdn_enabled_url9097 calls #url9098 #use_cdn?9099 returns false9100MoveToProjectEntity9101 #as_json9102 includes the project ID9103 includes the human-readable full path9104 includes the full path9105Deployments::ArchiveInProjectWorker9106 #perform9107 executes Deployments::ArchiveInProjectService9108Ci::CreatePipelineService9109 # order random9110 when job has hooks and default hooks9111 creates jobs with hook data9112 when job has script and nested before_script and after_script9113 creates a job with script data9114Limitable9115 is expected to eq "test_classes"9116 with scoped limit9117 is expected to eq :project9118 triggers scoped validations9119 with custom relation and feature flags9120 limit_feature_flag: nil, limit_feature_flag_value: nil, limit_feature_flag_for_override: nil, limit_feature_flag_override_value: nil, expect_limit_applied?: true9121 acts according to the feature flag settings9122 limit_feature_flag: :some_feature_flag, limit_feature_flag_value: false, limit_feature_flag_for_override: nil, limit_feature_flag_override_value: nil, expect_limit_applied?: false9123DEPRECATION WARNING: Invalid Feature Flag some_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)9124 acts according to the feature flag settings9125 limit_feature_flag: :some_feature_flag, limit_feature_flag_value: true, limit_feature_flag_for_override: nil, limit_feature_flag_override_value: nil, expect_limit_applied?: true9126DEPRECATION WARNING: Invalid Feature Flag some_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)9127 acts according to the feature flag settings9128 limit_feature_flag: :some_feature_flag, limit_feature_flag_value: true, limit_feature_flag_for_override: :some_feature_flag_disable, limit_feature_flag_override_value: false, expect_limit_applied?: true9129DEPRECATION WARNING: Invalid Feature Flag some_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)9130DEPRECATION WARNING: Invalid Feature Flag some_feature_flag_disable stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)9131 acts according to the feature flag settings9132 limit_feature_flag: :some_feature_flag, limit_feature_flag_value: false, limit_feature_flag_for_override: :some_feature_flag_disable, limit_feature_flag_override_value: false, expect_limit_applied?: false9133DEPRECATION WARNING: Invalid Feature Flag some_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)9134DEPRECATION WARNING: Invalid Feature Flag some_feature_flag_disable stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)9135 acts according to the feature flag settings9136 limit_feature_flag: :some_feature_flag, limit_feature_flag_value: false, limit_feature_flag_for_override: :some_feature_flag_disable, limit_feature_flag_override_value: true, expect_limit_applied?: false9137DEPRECATION WARNING: Invalid Feature Flag some_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)9138DEPRECATION WARNING: Invalid Feature Flag some_feature_flag_disable stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)9139 acts according to the feature flag settings9140 limit_feature_flag: :some_feature_flag, limit_feature_flag_value: true, limit_feature_flag_for_override: :some_feature_flag_disable, limit_feature_flag_override_value: true, expect_limit_applied?: false9141DEPRECATION WARNING: Invalid Feature Flag some_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)9142DEPRECATION WARNING: Invalid Feature Flag some_feature_flag_disable stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:49)9143 acts according to the feature flag settings9144 with global limit9145 is expected to eq :limitable_global_scope9146 triggers scoped validations9147SnippetInputActionCollection9148 is expected to delegate #empty? to the #actions object9149 is expected to delegate #any? to the #actions object9150 is expected to delegate #[] to the #actions object9151 #to_commit_actions9152 translates all actions to commit actions9153 #valid?9154 returns true9155 when any of the actions is invalid9156 returns false9157 when allowed_actions param is passed9158 builds SnippetInputAction with that param9159Packages::MarkPackageForDestructionService9160 #execute9161 when the user is authorized9162 when it is successful9163 marks the package and package files as pending destruction9164 returns a success ServiceResponse9165 when it is not successful9166 returns an error ServiceResponse9167 when the user is not authorized9168 returns an error ServiceResponse9169Groups::AcceptingProjectCreationsFinder9170 # order random9171 #execute9172 only returns groups where the user has access to create projects9173Gitlab::Tracking::ServicePingContext9174 # order random9175 #init9176 with valid configuration9177 data_source: :redis, event: "some_event"9178 does not raise errors9179 data_source: :redis_hll, event: "some_event"9180 does not raise errors9181 with invalid configuration9182 data_source: :redis, event: nil9183 does not raise errors9184 data_source: :redis_hll, event: nil9185 does not raise errors9186 data_source: :random, event: "some_event"9187 does not raise errors9188 #to_context9189 for redis_hll data source9190 contains event_name9191 for redis data source9192 contains event_name9193MemberSerializer9194 group member9195 handles last group owner assignment9196 behaves like members.json9197 is expected to match schema "members"9198 project member9199 does not invoke group owner assignment9200 behaves like members.json9201 is expected to match schema "members"9202CustomerRelations::Organizations::UpdateService9203 #execute9204 when the user has no permission9205 returns an error9206 when user has permission9207 when name is changed9208 updates the crm_organization9209 when activating9210 updates the contact9211 when deactivating9212 updates the crm_organization9213 when the crm_organization is invalid9214 returns an error9215Resolvers::Crm::ContactStateCountsResolver9216 #resolve9217 with unauthorized user9218 does not raise an error and returns no counts9219 with authorized user9220 without parent9221 returns no counts9222 with a group9223 when no filter is provided9224 returns the count of all contacts9225 when search term is provided9226 returns the correct counts9227Gitlab::Graphql::Pagination::OffsetActiveRecordRelationConnection9228 subclasses from GraphQL::Relay::RelationConnection9229 behaves like a connection with collection methods9230 responds to to_a9231 responds to size9232 responds to map9233 responds to include?9234 responds to empty?9235 behaves like a redactable connection9236 no redactor set9237 contains the unwanted item9238 does not redact more than once9239 redactor is set9240 does not contain the unwanted item9241 does not redact more than once9242Discussions::CaptureDiffNotePositionsService9243 when merge request has a discussion9244 and position of the discussion changed on target branch head9245 diff positions are created for the first notes of the discussions9246Gitlab::Database::MigrationHelpers::Swapping9247 # order random9248 #swap_columns9249 calls service9250 #reset_trigger_function9251-- quote_table_name("existing_trigger_function")9252 -> 0.0002s9253-- execute("ALTER FUNCTION \"existing_trigger_function\" RESET ALL")9254 -> 0.0013s9255 resets9256 #swap_columns_default9257 calls service9258 #swap_indexes9259 behaves like swapping indexes correctly9260-- rename_index(:_test_swap_indexes, :index_on_integer, "temp_75ea8b544f")9261 -> 0.0017s9262-- rename_index(:_test_swap_indexes, :index_on_bigint, :index_on_integer)9263 -> 0.0010s9264-- rename_index(:_test_swap_indexes, "temp_75ea8b544f", :index_on_bigint)9265 -> 0.0009s9266 is expected to change `find_index_by(index1).columns` from ["integer_column"] to ["bigint_column"] and change `find_index_by(index2).columns` from ["bigint_column"] to ["integer_column"]9267 when index names are 63 bytes9268 behaves like swapping indexes correctly9269-- rename_index(:_test_swap_indexes, :i1_012345678901234567890123456789012345678901234567890123456789, "temp_aeddaac9dd")9270 -> 0.0013s9271-- rename_index(:_test_swap_indexes, :i2_012345678901234567890123456789012345678901234567890123456789, :i1_012345678901234567890123456789012345678901234567890123456789)9272 -> 0.0010s9273-- rename_index(:_test_swap_indexes, "temp_aeddaac9dd", :i2_012345678901234567890123456789012345678901234567890123456789)9274 -> 0.0010s9275 is expected to change `find_index_by(index1).columns` from ["integer_column"] to ["bigint_column"] and change `find_index_by(index2).columns` from ["bigint_column"] to ["integer_column"]9276 #swap_foreign_keys9277 behaves like swapping foreign keys correctly9278-- quote_table_name(:_test_swap_foreign_keys)9279 -> 0.0003s9280-- quote_column_name(:fkey_on_integer_column)9281 -> 0.0003s9282-- quote_column_name(:temp_name_for_renaming)9283 -> 0.0001s9284-- execute("ALTER TABLE \"_test_swap_foreign_keys\"\nRENAME CONSTRAINT \"fkey_on_integer_column\" TO \"temp_name_for_renaming\"\n")9285 -> 0.0041s9286-- quote_table_name(:_test_swap_foreign_keys)9287 -> 0.0001s9288-- quote_column_name(:fkey_on_bigint_column)9289 -> 0.0001s9290-- quote_column_name(:fkey_on_integer_column)9291 -> 0.0001s9292-- execute("ALTER TABLE \"_test_swap_foreign_keys\"\nRENAME CONSTRAINT \"fkey_on_bigint_column\" TO \"fkey_on_integer_column\"\n")9293 -> 0.0015s9294-- quote_table_name(:_test_swap_foreign_keys)9295 -> 0.0001s9296-- quote_column_name(:temp_name_for_renaming)9297 -> 0.0001s9298-- quote_column_name(:fkey_on_bigint_column)9299 -> 0.0001s9300-- execute("ALTER TABLE \"_test_swap_foreign_keys\"\nRENAME CONSTRAINT \"temp_name_for_renaming\" TO \"fkey_on_bigint_column\"\n")9301 -> 0.0014s9302 is expected to change `find_foreign_key_by(foreign_key1).options[:column]` from "integer_column" to "bigint_column" and change `find_foreign_key_by(foreign_key2).options[:column]` from "bigint_column" to "integer_column"9303 when foreign key names are 63 bytes9304 behaves like swapping foreign keys correctly9305-- quote_table_name(:_test_swap_foreign_keys)9306 -> 0.0001s9307-- quote_column_name(:f1_012345678901234567890123456789012345678901234567890123456789)9308 -> 0.0001s9309-- quote_column_name(:temp_name_for_renaming)9310 -> 0.0001s9311-- execute("ALTER TABLE \"_test_swap_foreign_keys\"\nRENAME CONSTRAINT \"f1_012345678901234567890123456789012345678901234567890123456789\" TO \"temp_name_for_renaming\"\n")9312 -> 0.0019s9313-- quote_table_name(:_test_swap_foreign_keys)9314 -> 0.0001s9315-- quote_column_name(:f2_012345678901234567890123456789012345678901234567890123456789)9316 -> 0.0001s9317-- quote_column_name(:f1_012345678901234567890123456789012345678901234567890123456789)9318 -> 0.0001s9319-- execute("ALTER TABLE \"_test_swap_foreign_keys\"\nRENAME CONSTRAINT \"f2_012345678901234567890123456789012345678901234567890123456789\" TO \"f1_012345678901234567890123456789012345678901234567890123456789\"\n")9320 -> 0.0011s9321-- quote_table_name(:_test_swap_foreign_keys)9322 -> 0.0001s9323-- quote_column_name(:temp_name_for_renaming)9324 -> 0.0001s9325-- quote_column_name(:f2_012345678901234567890123456789012345678901234567890123456789)9326 -> 0.0001s9327-- execute("ALTER TABLE \"_test_swap_foreign_keys\"\nRENAME CONSTRAINT \"temp_name_for_renaming\" TO \"f2_012345678901234567890123456789012345678901234567890123456789\"\n")9328 -> 0.0011s9329 is expected to change `find_foreign_key_by(foreign_key1).options[:column]` from "integer_column" to "bigint_column" and change `find_foreign_key_by(foreign_key2).options[:column]` from "bigint_column" to "integer_column"9330Gitlab::ImportExport::AfterExportStrategyBuilder9331 .build!9332 initializes strategy with attributes param9333 when klass param is9334 null it returns the default strategy9335 not a valid class it raises StrategyNotFoundError exception9336 not a descendant of AfterExportStrategy9337API::Entities::DraftNote9338 # order random9339 exposes correct attributes9340MemberPresenter9341 # order random9342 #valid_level_roles9343 does not return levels lower than user highest membership in the hierarchy9344 returns all roles for the root group9345 #last_owner?9346 raises `NotImplementedError`9347ApplicationSettingPolicy9348 update_runners_registration_token9349 when anonymous9350 is expected not to be allowed :update_runners_registration_token9351 regular user9352 is expected not to be allowed :update_runners_registration_token9353 when external9354 is expected not to be allowed :update_runners_registration_token9355 admin9356 when admin mode is enabled9357 is expected to be allowed :update_runners_registration_token9358 when admin mode is disabled9359 is expected to be disallowed :update_runners_registration_token9360Gitlab::Usage::Metrics::Instrumentations::CountSlackAppInstallationsMetric9361 # order random9362 behaves like a correct instrumented metric value and query9363 behaves like a correct instrumented metric value9364 has correct value9365 behaves like a correct instrumented metric query9366 has correct generate query9367Terraform::States::DestroyWorker9368 #perform9369 calls the deletion service9370 state no longer exists9371 completes without error9372Banzai::Pipeline::PostProcessPipeline9373 when a document only has upload links9374 does not make any Gitaly calls9375 when both upload and repository links are present9376 searches for attributes only once9377MigrationsHelpers9378 #active_record_base9379 returns the main base model9380 raises ArgumentError for bad database argument9381 ci database configured9382 returns the CI base model9383 ci database not configured9384 returns the main base model (PENDING: Skipping because some of the extra databases [:ci] are setup)9385 #table9386 creates a class based on main base model9387 ci database configured9388 create a class based on the CI base model9389 ci database not configured9390 creates a class based on main base model (PENDING: Skipping because some of the extra databases [:ci] are setup)9391 #reset_column_information9392 with a regular ActiveRecord model class9393 calls reset_column_information9394 with an anonymous class with table name defined9395 calls reset_column_information9396 with an anonymous class with no table name defined9397 does not call reset_column_information9398Gitlab::Diff::Formatters::ImageFormatter9399 behaves like position formatter9400 #key9401 is expected to eq [123, 456, 789, "8b5f87754bd090b9e0837feef68f1737103de62b", "5b972068ce0905d88056d0c4b788554d34949d27", 1, 2]9402 #complete?9403 when there are missing key attributes9404 is expected to be truthy9405 when old_line and new_line are nil9406 is expected to be falsy9407 #to_h9408 is expected to eq {:base_sha=>123, :head_sha=>789, :height=>100, :new_path=>"new_image.png", :old_path=>"old_image.png", :position_type=>"image", :start_sha=>456, :width=>100, :x=>1, :y=>2}9409 #==9410 is expected to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x0000784f5fd46120 @x=1, @y=2, @width=100, @height=100, @i... @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>9411 #==9412 is expected to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x0000784f652c0c40 @x=1, @y=2, @width=100, @height=100, @i... @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>9413 with attribute:width9414 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x0000784f65515e78 @x=1, @y=2, @width=9, @height=100, @ign... @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>9415 with attribute:height9416 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x0000784f607097e8 @x=1, @y=2, @width=100, @height=9, @ign... @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>9417 with attribute:x9418 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x0000784f655aeab0 @x=9, @y=2, @width=100, @height=100, @i... @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>9419 with attribute:y9420 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x0000784f659763a0 @x=1, @y=9, @width=100, @height=100, @i... @old_path="old_image.png", @new_path="new_image.png", @base_sha=123, @start_sha=456, @head_sha=789>9421UpdateProjectStatisticsWorker9422 #perform9423 when a lease could be obtained9424 updates the project statistics9425 when a lease could not be obtained9426 does not update the project statistics9427admin/groups/_form9428 # order random9429 group runner registration setting9430 runner_registration_enabled: true, valid_runner_registrars: ["group"], checked: true, disabled: false9431 renders the checkbox correctly9432 runner_registration_enabled: false, valid_runner_registrars: ["group"], checked: false, disabled: false9433 renders the checkbox correctly9434 runner_registration_enabled: false, valid_runner_registrars: ["project"], checked: false, disabled: true9435 renders the checkbox correctly9436RuboCop::Cop::IgnoredColumns9437 # order random9438 flags use of `self.ignored_columns =` instead of the IgnorableColumns concern9439 flags use of `self.ignored_columns +=` instead of the IgnorableColumns concern9440 when only CE model exist9441 does not flag `ignore_columns` usage in CE model9442 does not flag `ignore_column` usage in CE model9443 when CE and EE model exist9444 flags `ignore_columns` usage in EE model9445 flags `ignore_column` usage in EE model9446 when only EE model exist9447 does not flag `ignore_columns` usage in EE model9448 does not flag `ignore_column` usage in EE model9449Types::ReleaseAssetsInputType9450 is expected to eq "ReleaseAssetsInput"9451 has the correct arguments9452 sets the type of links argument to ReleaseAssetLinkInputType9453Ml::CandidateMetric9454 associations9455 is expected to belong to candidate required: false9456 scope :latest9457 fetches only the last metric for the name9458projects/commits/show.html.haml9459 tree controls9460 renders atom feed button with matching path9461 commits date headers9462 when timezone is UTC9463 renders commit date header in user's timezone9464 when timezone is UTC-69465 renders commit date header in user's timezone9466BlobViewer::Changelog9467 #render_error9468 when there are no tags9469 returns :no_tags9470 when there are tags9471 returns nil9472Gitlab::ZoomUrlValidator9473 validations9474 when zoom link starts with https9475 passes validation9476 when zoom link does not start with https9477 fails validation9478 when zoom link does not start with a scheme9479 fails validation9480Types::MemberInterface9481 exposes the expected fields9482 .resolve_type9483 for project member9484 is expected to equal Types::ProjectMemberType9485 for group member9486 is expected to equal Types::GroupMemberType9487 for an unkown type9488 raises an error9489 #merge_request_interaction9490 returns the correct type9491 has the correct arguments9492UserAgentDetailService9493 # order random9494 #create9495 perform_spam_check: true, spam_params_present: true, user_agent: "UA", ip_address: "IP", creates_user_agent_detail: true9496 creates a user agent detail when expected9497 perform_spam_check: true, spam_params_present: false, user_agent: "UA", ip_address: "IP", creates_user_agent_detail: false9498 creates a user agent detail when expected9499 perform_spam_check: false, spam_params_present: true, user_agent: "UA", ip_address: "IP", creates_user_agent_detail: false9500 creates a user agent detail when expected9501 perform_spam_check: true, spam_params_present: true, user_agent: "", ip_address: "IP", creates_user_agent_detail: false9502 creates a user agent detail when expected9503 perform_spam_check: true, spam_params_present: true, user_agent: nil, ip_address: "IP", creates_user_agent_detail: false9504 creates a user agent detail when expected9505 perform_spam_check: true, spam_params_present: true, user_agent: "UA", ip_address: "", creates_user_agent_detail: false9506 creates a user agent detail when expected9507 perform_spam_check: true, spam_params_present: true, user_agent: "UA", ip_address: nil, creates_user_agent_detail: false9508 creates a user agent detail when expected9509Resolvers::Ci::TemplateResolver9510 #resolve9511 when template exists9512 returns the found template9513 when template does not exist9514 returns nil9515Gitlab::SQL::RecursiveCTE9516 #to_arel9517 generates an Arel relation for the CTE body9518 #alias_to9519 returns an alias for the CTE9520 replaces dots with an underscore9521 #apply_to9522 applies a CTE to an ActiveRecord::Relation9523 behaves like CTE with MATERIALIZED keyword examples9524 adding MATERIALIZE to the CTE9525 adds MATERIALIZE keyword9526 when materialized is disabled9527 does not add MATERIALIZE keyword9528Integrations::SlackOptions::LabelSearchHandler9529 # order random9530 #execute9531 when user has permission to read project and group labels9532 returns the labels matching the search term9533 when user does not have permissions to read project/group labels9534 returns empty array9535Gitlab::DependencyLinker::PodspecJsonLinker9536 .support?9537 supports *.podspec.json9538 does not support other files9539 #link9540 links the gem name9541 links the license9542 links the homepage9543 links the source URL9544 links dependencies9545 does not link subspec names9546projects/milestones/index.html.haml9547 behaves like milestone empty states9548 with no milestones9549 shows empty state9550 does not show tabs or searchbar9551 with no open milestones9552 shows tabs and searchbar9553 shows empty state9554 with no closed milestones9555 shows tabs and searchbar9556 shows empty state on closed milestones9557PropagateIntegrationGroupWorker9558 #perform9559 behaves like an idempotent worker9560 is labeled as idempotent9561 performs multiple times sequentially without raising an exception9562 calls to BulkCreateIntegrationService9563 with a group integration9564 calls to BulkCreateIntegrationService9565 with an invalid integration id9566 returns without failure9567Gitlab::Kroki9568 .formats9569 enabled_formats: "", expected_formats: ["bytefield", "c4plantuml", "d2", "dbml", "diagramsnet", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom"]9570 returns the expected formats9571 enabled_formats: "blockdiag", expected_formats: ["bytefield", "c4plantuml", "d2", "dbml", "diagramsnet", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "actdiag", "blockdiag", "nwdiag", "packetdiag", "rackdiag", "seqdiag"]9572 returns the expected formats9573 enabled_formats: "bpmn", expected_formats: ["bytefield", "c4plantuml", "d2", "dbml", "diagramsnet", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "bpmn"]9574 returns the expected formats9575 enabled_formats: "excalidraw", expected_formats: ["bytefield", "c4plantuml", "d2", "dbml", "diagramsnet", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "structurizr", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "excalidraw"]9576 returns the expected formats9577Gitlab::Pagination::Keyset::CursorPager9578 #paginate9579 returns the limited relation9580 #finalize9581 passes information about next page to request9582 when retrieving the last page9583 does not build information about the next page9584 when retrieving an empty page9585 does not build information about the next page9586Ml::CandidateMetadata9587 # order random9588 uniqueness of name9589 is unique within candidate9590 associations9591 is expected to belong to candidate required: false9592Gitlab::Database::SchemaCleaner9593 removes comments on extensions9594 no assumption about public being the default schema9595 cleans up all the gitlab_schema_prevent_write table triggers9596 keeps the lock_writes trigger functions9597 cleans up the full schema as expected (blackbox test with example)9598GetPackageAndTestJob9599 # order random9600 #execute9601 returns a package-and-test pipeline that passed with warnings9602 when the bridge can not be found9603 returns nothing9604 when the downstream pipeline can not be found9605 returns nothing9606 when the bridge fails9607 returns the downstream_pipeline9608 when the package-and-test can not be found9609 returns nothing9610 when the package-and-test does not include a detailed status9611 returns nothing9612 when the package-and-test succeeds9613 returns nothing9614 when the package-and-test is canceled9615 returns a failed package-and-test pipeline9616Gitlab::Database::SharedModel9617 using an external connection9618 overrides the connection for the duration of the block9619 does not affect connections in other threads9620 raises an error if the connection does not include `:gitlab_shared` schema9621 when multiple connection overrides are nested9622 allows the nesting with the same connection object9623 raises an error if the connection is changed9624 when the block raises an error9625 re-raises the error, removing the overridden connection9626 #connection_db_config9627 returns the class connection_db_config9628 when switching the class connection9629 returns the db_config of the used connection when using load balancing9630Tooling::Helpers::FileHandler9631 # order random9632 #read_array_from_file9633 when the input file does not exist9634 creates the file9635 when the input file is not empty9636 returns the content of the file in an array9637 #write_array_to_file9638 when the output file does not exist9639 creates the file9640 when the output file is empty9641 writes the correct content to the file9642 when the content array is not sorted9643 sorts the array before writing it to file9644 when the output file is not empty9645 appends the correct content to the file9646 when the append flag is set to false9647 overwrites the previous content9648Gitlab::AppTextLogger9649 logs a hash as string9650 logs a string unchanged9651 logs time in UTC with ISO8601.3 standard9652Gitlab::DatabaseImporters::WorkItems::HierarchyRestrictionsImporter9653 # order random9654 behaves like work item hierarchy restrictions importer9655 when restrictions are missing9656 behaves like adds restrictions9657 adds all restrictions if they don't exist9658 when base types are missing9659 behaves like adds restrictions9660 adds all restrictions if they don't exist9661 when restrictions already exist9662 upserts restrictions9663 when some restrictions are missing9664 inserts missing restrictions and does nothing if some already existed9665 when restrictions contain attributes not present in the table9666 filters out missing columns9667Packages::CleanupArtifactWorker9668 #model9669 is expected to raise NotImplementedError9670 #log_metadata9671 is expected to raise NotImplementedError9672 #log_cleanup_item9673 is expected to raise NotImplementedError9674Types::DesignManagement::DesignVersionEventEnum9675 is expected to eq "DesignVersionEvent"9676 exposes the correct event states9677API::Helpers::InternalHelpers9678 # order random9679 log user git operation activity9680 when git pull/fetch/clone action9681 with log the user activity9682 behaves like handles log git operation activity9683 log the user activity9684 when git push action9685 does not log the user activity when log_user_git_push_activity is disabled9686 with log the user activity when log_user_git_push_activity is enabled9687 behaves like handles log git operation activity9688 log the user activity9689ClusterEntity9690 #as_json9691 when provider type is gcp9692 when status is creating9693 has corresponded data9694 when status is errored9695 has corresponded data9696 when provider type is user9697 has corresponded data9698Gitlab::WordDiff::Segments::Chunk9699 #removed?9700 is expected to be falsey9701 when line starts with "-"9702 is expected to be truthy9703 #added?9704 is expected to be falsey9705 when line starts with "+"9706 is expected to be truthy9707 #to_s9708 removes lead string modifier9709 when chunk is empty9710 is expected to eq ""9711 #length9712 is expected to eq 59713Types::EvidenceType9714 is expected to require graphql authorizations :read_release_evidence9715 has the expected fields9716Gitlab::NoteableMetadata9717 returns an empty Hash if an empty collection is provided9718 raises an error when given a collection with no limit9719 snippets9720 aggregates stats on snippets9721Gitlab::Config::Entry::Attributable9722 when config is a hash9723 returns the value of config9724 returns no method error for unknown attributes9725 and is provided a prefix9726 returns the value of config9727 when config is not a hash9728 returns nil9729 when method is already defined in a superclass9730 raises an error9731Gitlab::RuggedInstrumentation9732 .query_time9733 increments query times9734 .increment_query_count9735 tracks query counts9736ProjectDailyStatistic9737 is expected to belong to project required: false9738ShaValidator9739 with empty value9740 does not add any error if value is empty9741 with valid sha9742 does not add any error9743 with invalid sha9744 adds error to the record9745Gitlab::BitbucketImport::Importers::PullRequestsNotesImporter9746 # order random9747 #execute9748 imports the notes from each merge request in parallel9749 when an error is raised9750 tracks the failure and does not fail9751 when merge request was already enqueued9752 does not schedule job for enqueued merge requests9753JiraConnect::SubscriptionEntity9754 contains all necessary elements of the subscription9755Gitlab::Ci::Config::Entry::Imageable9756 when entry value is correct9757 #valid?9758 is valid9759 when entry value is not correct9760 #errors9761 saves errors9762 #valid?9763 is not valid9764 when unexpected key is specified9765 #errors9766 saves errors9767 #valid?9768 is not valid9769Types::MergeRequests::ParticipantType9770 behaves like a user type with merge request interaction type9771 is expected to require graphql authorizations :read_user9772 has the expected fields9773 #merge_request_interaction9774 returns the correct type9775 has the correct arguments9776ErrorTracking::ClientKey9777 relationships9778 is expected to belong to project required: false9779 validations9780 is expected to validate that :public_key cannot be empty/falsy9781 is expected to validate that the length of :public_key is at most 2559782 #generate_key9783 is expected to be present9784 is expected to start with "glet_"9785RepositoryLanguage9786 associations9787 is expected to belong to project required: false9788 is expected to belong to programming_language required: false9789 validations9790 is expected to allow :share to be ‹0›9791 is expected to allow :share to be ‹100.0›9792 is expected not to allow :share to be ‹100.1›9793Gitlab::Database::Migrations::MilestoneMixin9794 # order random9795 when the mixin is included9796 when a milestone is not specified9797 raises MilestoneNotSetError9798 when a milestone is specified9799 does not raise an error9800 when the mixin is not included9801 does not raise an error9802BulkImports::Groups::Extractors::SubgroupsExtractor9803 #extract9804 returns ExtractedData response9805Users::EmailVerification::GenerateTokenService9806 #execute9807 with a valid attribute9808 attr: :unlock_token9809 returns a token and it's digest9810 attr: :confirmation_token9811 returns a token and it's digest9812 with an invalid attribute9813 raises an error9814 when similar tokens are generated9815 generates a unique digest9816RuboCop::Cop::RSpec::SharedGroupsMetadata9817 # order random9818 does not flag if feature category is missing9819 with hash metadata9820 flags metadata in shared example9821 flags metadata in shared context9822 with symbol metadata9823 flags metadata in shared example9824 flags metadata in shared context9825RuboCop::Cop::SidekiqRedisCall9826 # order random9827 flags the use of Sidekiq.redis in multi-line blocks9828 flags the use of Sidekiq.redis in single-line blocks9829 flags any use of Sidekiq.redis even without blocks9830Gitlab::Ci::Config::Interpolation::Context9831 # order random9832 #depth9833 returns a max depth of the hash9834 #to_h9835 returns the context hash9836 when interpolation context is too complex9837 raises an exception9838 .fabricate9839 when given an unexpected object9840 raises an ArgumentError9841 .new9842 returns variables as a Variables::Collection object9843Resolvers::Achievements::AchievementsResolver9844 # order random9845 is expected to have nullable GraphQL type AchievementConnection9846 #resolve9847 returns all achievements9848 with ids argument9849 returns the specified achievement9850 when `achievements` feature flag is diabled9851 is empty9852Gitlab::Ci::Config::External::Mapper::Normalizer9853 # order random9854 #process9855 converts locations to canonical form9856Gitlab::UsageDataCounters::JetBrainsBundledPluginActivityUniqueCounter9857 # order random9858 when tracking a jetbrains bundled api request9859 behaves like a request from an extension9860 tracks when the user agent is matching9861 does not track when the user agent is not matching9862 does not track if user agent is not present9863 does not track if user is not present9864WorkItems::Widgets::HierarchyService::CreateService9865 # order random9866 #create9867 when invalid params are present9868 behaves like raises a WidgetError9869 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "One or more arguments are invalid: other_parent."9870RuboCop::Cop::API::GrapeArrayMissingCoerce9871 # order random9872 does not add an offense9873 adds an offense with a required parameter9874 adds an offense with an optional parameter9875 does not add an offense for unrelated classes9876Emails::DestroyService9877 #execute9878 removes an email9879 when it corresponds to the user primary email9880 does not remove the email and raises an exception9881Gitlab::GithubImport::Attachments::ImportIssueWorker9882 # order random9883 #import9884 imports an issue attachments9885Banzai::Filter::TimeoutHtmlPipelineFilter9886 # order random9887 raises NotImplementedError9888 behaves like html filter timeout9889 when rendering takes too long9890 times out9891Sidebars::Projects::Menus::ScopeMenu9892 behaves like serializable as super_sidebar_menu_args9893 returns hash with provided attributes9894 returns hash with an item_id9895 #container_html_options9896 is expected to match #<RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher:0x0000784fb45e7ca8 @expected={:class=>"shortcuts-project rspec-project-link"}>9897 #extra_nav_link_html_options9898 is expected to match #<RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher:0x0000784f9c62cca8 @expected={:class=>"context-header has-tooltip", :title=>"Project-1545 Name"}>9899RedisCommand matchers9900 # order random9901 verifies maximum number of Redis calls9902 verifies minimum number of Redis calls9903 with Recorder matching only some Redis calls9904 counts only Redis calls captured by Recorder9905 when expect part is a function9906 automatically enables RedisCommand::Recorder for it9907GitHelper9908 #short_sha9909 is expected to eq "d4e043f6"9910 #strip_signature9911 strips PGP SIGNATURE9912 is expected to eq "Version 1.69.0\n\n"9913 strips PGP MESSAGE9914 is expected to eq "Version 1.69.0\n\n"9915 strips SIGNED MESSAGE9916 is expected to eq "this is Roger's signed tag\n\n"9917Gitlab::Ci::SecureFiles::X509Name9918 # order random9919 .parse9920 parses an X509Name object into a hash format9921 returns an empty hash when an error occurs9922Types::Ci::Config::JobRestrictionType9923 is expected to eq "CiConfigJobRestriction"9924 exposes the expected fields9925Packages::Npm::MetadataCacheUploader9926 # order random9927 #filename9928 returns metadata.json9929 #store_dir9930 uses the object_storage_key9931 without the object_storage_key9932 raises the error9933capybara_wait_for_all_requests9934 # order random9935 for Capybara::Session::WaitForAllRequestsAfterVisitPage9936 waits for all requests after a page visit9937 for Capybara::Node::Actions::WaitForRequestsAfterClickLink9938 waits for requests after a click link9939 for Capybara::Node::Actions::WaitForRequestsAfterClickButton9940 waits for requests after a click button9941BulkImports::ExportUpload9942 stores export file9943 associations9944 is expected to belong to export required: false9945Types::UploadType9946 is expected to require graphql authorizations :read_upload9947 has the expected fields9948Gitlab::Ci::JwtV2::ClaimMapper9949 # order random9950 #to_h9951 returns an empty hash when source is not implemented9952 when mapper for source is implemented9953 source: :repository_source9954 uses mapper9955Gitlab::ExternalAuthorization::Logger9956 .log_access9957 logs a nice message for an access request9958 does not trip without a project path9959 adds the load time for cached accesses9960Types::QueryComplexityType9961 is expected to have graphql fields :limit and :score9962 works when executed9963Gitlab::Graphql::NegatableArguments9964 #negated9965 defines :not argument9966 defines any arguments passed as block9967 defines all arguments passed as block even if called multiple times (PENDING: Temporarily skipped with xit)9968 allows to specify custom argument name9969Banzai::Pipeline::EmailPipeline9970 .filters9971 returns the expected type9972 excludes ImageLazyLoadFilter9973 shows punycode for autolinks9974Gitlab::DependencyLinker::Parser::Gemfile9975 #parse9976 returns parsed packages9977 packages respond to name and external_ref accordingly9978Types::UserCalloutFeatureNameEnum9979 is expected to eq "UserCalloutFeatureNameEnum"9980 exposes all the existing user callout feature names9981Types::AccessLevelType9982 is expected to eq "AccessLevel"9983 is expected to require graphql authorizations nil9984 has expected fields9985API::Validations::Validators::BulkImports::DestinationNamespacePath9986 # order random9987 when destination namespace param is invalid9988 does not raise a validation error9989 when destination namespace param is valid9990 raises a validation error9991Gitlab::SafeDeviceDetector9992 # order random9993 retains the behavior for normal user agents9994 truncates big user agents9995Types::Tree::TreeType9996 is expected to eq "Tree"9997 is expected to have graphql fields :trees, :submodules, :blobs, and :last_commit9998OneTrustHelper9999 #one_trust_enabled?10000 with ecomm_instrumentation feature flag disabled10001 is expected to be falsey10002 with ecomm_instrumentation feature flag enabled10003 when no id is set10004 is expected to be falsey10005Types::PermissionTypes::Issue10006 is expected to have graphql field :update_design10007Types::DesignManagement::DesignCollectionType10008 is expected to require graphql authorizations :read_design10009 has the expected fields10010Gitlab::NoCacheHeaders10011 #no_cache_headers10012 raises a RuntimeError10013Types::IssuableSeverityEnum10014 is expected to eq "IssuableSeverity"10015 exposes all the existing issuable severity values10016Types::JiraUserType10017 is expected to eq "JiraUser"10018 has the expected fields10019Types::Tree::BlobType10020 is expected to eq "Blob"10021 is expected to have graphql fields :id, :sha, :name, :type, :path, :flat_path, :web_url, :web_path, :lfs_oid, and :mode10022Gitlab::Database::ConvertFeatureCategoryToGroupLabel10023 # order random10024 #execute10025 when the group label exists10026 returns a group label10027 when the group label does not exist10028 returns nil10029Types::Ci::TestSuiteSummaryType10030 is expected to eq "TestSuiteSummary"10031 contains attributes related to a pipeline test report summary10032Types::JiraImportType10033 is expected to eq "JiraImport"10034 has the expected fields10035Ci::Lint::JobEntity10036 #represent10037 exposes job data10038API::Entities::Projects::RepositoryStorageMove10039 #as_json10040 includes basic fields10041Gitlab::ActionCable::RequestStoreCallbacks10042 .wrapper10043 enables RequestStore in the inner block10044Gitlab::Kubernetes::GenericSecret10045 #generate10046 is expected to eq #<Kubeclient::Resource type="Opaque", metadata={:name=>"example-name", :namespace=>"example-namespace"}, data="example-data">10047SyntheticNote10048 #to_ability_name10049 is expected to eq "note"10050Gitlab::Ci::Config::Normalizer::Factory10051 #create10052 when no strategy applies10053 is expected to be empty10054Types::Security::ReportTypeEnum10055 exposes all security report types10056Gitlab::Search::FoundWikiPage10057 policy10058 works with policy10059Gitlab::Usage::Metrics::Instrumentations::ContainerRegistryDbEnabledMetric10060 # order random10061 behaves like a correct instrumented metric value10062 has correct value10063circuitbox10064 # order random10065 configures Circuitbox10066Integrations::HarborSerializers::RepositorySerializer10067 represents Integrations::HarborSerializers::RepositoryEntity entities10068Gitlab::QuickActions::Dsl10069 .command_definitions10070 returns an array with commands definitions10071auto_explain log contains 1761 entries for main, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-14-24.328.main.ndjson.gz10072took 35.3391372210073auto_explain log contains 1762 entries for ci, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-14-24.328.ci.ndjson.gz10074took 34.18614954410075Knapsack report was generated. Preview:10077 "spec/models/merge_request_diff_spec.rb": 297.08887605200016,10078 "spec/services/merge_requests/push_options_handler_service_spec.rb": 176.13774320799985,10079 "spec/models/concerns/noteable_spec.rb": 165.94675398699928,10080 "spec/services/projects/overwrite_project_service_spec.rb": 127.38837719599996,10081 "spec/lib/banzai/filter/references/external_issue_reference_filter_spec.rb": 30.844316701000025,10082 "spec/finders/work_items/work_items_finder_spec.rb": 50.87141022899959,10083 "spec/lib/gitlab/ci/yaml_processor_spec.rb": 17.442389797999567,10084 "spec/services/auto_merge/base_service_spec.rb": 60.50281013699987,10085 "spec/models/operations/feature_flags/strategy_spec.rb": 10.980639426999915,10086 "spec/models/system/broadcast_message_spec.rb": 7.885739913999714,10087 "spec/presenters/ci/build_runner_presenter_spec.rb": 31.08755655299956,10088 "spec/lib/gitlab/database/lock_writes_manager_spec.rb": 35.35064621999936,10089 "spec/models/members/group_member_spec.rb": 29.558398520999617,10090 "spec/tasks/gitlab/uploads/migrate_rake_spec.rb": 34.62602580999919,10091 "spec/services/work_items/update_service_spec.rb": 27.99158745100067,10092 "spec/tasks/gitlab/cleanup_rake_spec.rb": 26.935757338999792,10093 "spec/models/resource_label_event_spec.rb": 17.851962794999963,10094 "spec/lib/gitlab/redis/workhorse_spec.rb": 4.297542641999826,10095 "spec/lib/backup/repositories_spec.rb": 22.450635702999534,10096 "spec/models/sent_notification_spec.rb": 19.592905559000428,10097 "spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb": 21.948642172999826,10098 "spec/lib/gitlab/git/diff_collection_spec.rb": 3.9265502830003243,10099 "spec/models/integrations/chat_message/pipeline_message_spec.rb": 12.947436392999407,10100 "spec/presenters/blob_presenter_spec.rb": 5.254840462999709,10101 "spec/services/merge_requests/create_pipeline_service_spec.rb": 14.736070363999715,10102 "spec/lib/banzai/filter/issuable_reference_expansion_filter_spec.rb": 9.452197703999445,10103 "spec/lib/gitlab/gfm/uploads_rewriter_spec.rb": 13.6257237359996,10104 "spec/services/projects/update_pages_service_spec.rb": 11.03537931200026,10105 "spec/services/projects/move_access_service_spec.rb": 17.104741436999575,10106 "spec/lib/backup/database_model_spec.rb": 4.81584729000042,10107 "spec/workers/process_commit_worker_spec.rb": 14.272935481999411,10108 "spec/lib/gitlab/kubernetes/default_namespace_spec.rb": 15.37014035500033,10109 "spec/lib/gitlab/database/with_lock_retries_spec.rb": 15.067169388000366,10110 "spec/models/concerns/resolvable_discussion_spec.rb": 7.400794419999329,10111 "spec/finders/users_finder_spec.rb": 3.6558244990001185,10112 "spec/models/concerns/reactive_caching_spec.rb": 2.4842780449998827,10113 "spec/tooling/lib/tooling/job_metrics_spec.rb": 1.7638277050000397,10114 "spec/models/appearance_spec.rb": 2.503326823999487,10115 "spec/lib/gitlab/redis/feature_flag_spec.rb": 1.695088310999381,10116 "spec/graphql/mutations/release_asset_links/update_spec.rb": 10.363880265999796,10117 "spec/models/container_registry/event_spec.rb": 2.1110115359997508,10118 "spec/finders/fork_projects_finder_spec.rb": 10.782553051999457,10119 "spec/lib/gitlab/metrics/rails_slis_spec.rb": 8.721523330999844,10120 "spec/graphql/types/user_type_spec.rb": 8.482958650999535,10121 "spec/lib/banzai/filter/sanitization_filter_spec.rb": 2.0262569830001667,10122 "spec/lib/security/weak_passwords_spec.rb": 1.803953472000103,10123 "spec/services/ml/experiment_tracking/candidate_repository_spec.rb": 2.4378795379998337,10124 "spec/models/protected_branch/push_access_level_spec.rb": 4.259240698999747,10125 "spec/lib/gitlab/ci/charts_spec.rb": 8.059209426000052,10126 "spec/models/alert_management/http_integration_spec.rb": 3.9752701819998038,10127 "spec/finders/projects/members/effective_access_level_finder_spec.rb": 7.0606577680000555,10128 "spec/routing/admin_routing_spec.rb": 2.838011716998153,10129 "spec/services/projects/open_issues_count_service_spec.rb": 6.3795042839992675,10130 "spec/services/packages/maven/metadata/sync_service_spec.rb": 5.37960702700002,10131 "spec/lib/gitlab/import_export/group/tree_saver_spec.rb": 5.857991936999497,10132 "spec/models/issue/metrics_spec.rb": 7.914966067999558,10133 "spec/helpers/page_layout_helper_spec.rb": 1.9379679009998654,10134 "spec/lib/gitlab/pagination/keyset/paginator_spec.rb": 2.979895153999678,10135 "spec/lib/gitlab/ci/ansi2json_spec.rb": 1.5799540900006832,10136 "spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb": 7.910122644999319,10137 "spec/finders/joined_groups_finder_spec.rb": 7.250737232000574,10138 "spec/lib/bulk_imports/common/pipelines/milestones_pipeline_spec.rb": 5.5459486130002915,10139 "spec/serializers/issue_sidebar_basic_entity_spec.rb": 5.43511582300016,10140 "spec/lib/gitlab/import_export/lfs_restorer_spec.rb": 5.4171071539994955,10141 "spec/models/pages/lookup_path_spec.rb": 4.860306390000005,10142 "spec/lib/gitlab/database/health_status/indicators/wal_rate_spec.rb": 1.4689100290006536,10143 "spec/models/integrations/shimo_spec.rb": 5.105612758999996,10144 "spec/lib/gitlab/api_authentication/token_resolver_spec.rb": 2.435622199000136,10145 "spec/models/packages/debian/project_component_file_spec.rb": 2.6161246049996407,10146 "spec/lib/gitlab/middleware/compressed_json_spec.rb": 1.4296076330001597,10147 "spec/models/ci/unit_test_failure_spec.rb": 5.511039076000088,10148 "spec/services/boards/lists/list_service_spec.rb": 4.12960571900021,10149 "spec/helpers/badges_helper_spec.rb": 1.6205148760000156,10150 "spec/models/design_management/action_spec.rb": 2.7279400859997622,10151 "spec/models/board_spec.rb": 2.888152001999515,10152 "spec/services/import/fogbugz_service_spec.rb": 5.632527475999268,10153 "spec/lib/sbom/package_url/encoder_spec.rb": 1.525002373999996,10154 "spec/lib/gitlab/git/push_spec.rb": 1.9886048170001231,10155 "spec/finders/deploy_tokens/tokens_finder_spec.rb": 3.730623740999363,10156 "spec/lib/gitlab/suggestions/commit_message_spec.rb": 3.6191210520000823,10157 "spec/workers/ci/pipeline_success_unlock_artifacts_worker_spec.rb": 4.202546413999698,10158 "spec/lib/gitlab/import_export/project/export_task_spec.rb": 3.6398138889999245,10159 "spec/lib/gitlab/import_export/shared_spec.rb": 3.22204583400071,10160 "spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb": 2.258062380999945,10161 "spec/lib/gitlab/ci/ansi2json/line_spec.rb": 1.3949539349996485,10162 "spec/lib/gitlab/usage/metrics/aggregates/aggregate_spec.rb": 1.3479082990006646,10163 "spec/tasks/gitlab/ci_secure_files/check_rake_spec.rb": 3.535469570000714,10164 "spec/tasks/gitlab/smtp_rake_spec.rb": 3.0869744860001447,10165 "spec/presenters/group_member_presenter_spec.rb": 2.3219108490002327,10166 "spec/finders/boards/boards_finder_spec.rb": 3.957102723999924,10167 "spec/lib/gitlab/ci/config/extendable/entry_spec.rb": 1.261654725999506,10168 "spec/services/members/unassign_issuables_service_spec.rb": 3.707222715000171,10169 "spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb": 0.7173541110005317,10170 "spec/models/projects/forks/details_spec.rb": 3.3075473870003407,10171 "spec/finders/groups/user_groups_finder_spec.rb": 2.3052113399999143,10172 "spec/graphql/mutations/todos/create_spec.rb": 3.159260830000676,10173 "spec/lib/gitlab/ci/pipeline/expression/lexeme/matches_spec.rb": 0.6635735150002802,10174 "spec/finders/merge_requests/by_approvals_finder_spec.rb": 2.7135064860003695,10175 "spec/lib/api/entities/release_spec.rb": 3.4474636260001716,10176 "spec/lib/gitlab/memory/watchdog/configurator_spec.rb": 0.7842127160001837,10177 "spec/services/jira_import/server_users_mapper_service_spec.rb": 3.4324581370001397,10178 "spec/lib/banzai/pipeline/description_pipeline_spec.rb": 1.1112611680000555,10179 "spec/lib/sidebars/projects/menus/hidden_menu_spec.rb": 1.7120310490008706,10180 "spec/lib/gitlab/bitbucket_import/importers/pull_request_importer_spec.rb": 2.679033390000768,10181 "spec/lib/gitlab/sidekiq_config/worker_spec.rb": 0.6701109949999591,10182 "spec/helpers/users/group_callouts_helper_spec.rb": 2.7836578309998004,10183 "spec/views/projects/pages/show.html.haml_spec.rb": 3.8892920400003277,10184 "spec/services/import/gitlab_projects/create_project_service_spec.rb": 1.5984680579995256,10185 "spec/lib/banzai/reference_parser/project_parser_spec.rb": 2.7750010520003343,10186 "spec/lib/gitlab/safe_request_loader_spec.rb": 0.628412858000047,10187 "spec/helpers/projects/ml/experiments_helper_spec.rb": 1.0578645329997016,10188 "spec/services/boards/issues/create_service_spec.rb": 2.9927011640002092,10189 "spec/services/google_cloud/create_cloudsql_instance_service_spec.rb": 2.1522566929997993,10190 "spec/workers/wikis/git_garbage_collect_worker_spec.rb": 1.6725187929996537,10191 "spec/graphql/resolvers/design_management/version/designs_at_version_resolver_spec.rb": 2.1334861639998053,10192 "spec/lib/security/ci_configuration/sast_iac_build_action_spec.rb": 0.5111525679994884,10193 "spec/workers/bulk_imports/pipeline_batch_worker_spec.rb": 1.098241249000239,10194 "spec/models/users/namespace_commit_email_spec.rb": 1.7392926369993802,10195 "spec/lib/gitlab/local_and_remote_storage_migration/artifact_migrater_spec.rb": 2.720105995999802,10196 "spec/lib/gitlab/rack_attack/user_allowlist_spec.rb": 0.7577760879994457,10197 "spec/finders/autocomplete/group_finder_spec.rb": 1.635435344999678,10198 "spec/workers/object_pool/create_worker_spec.rb": 2.742238174000704,10199 "spec/models/aws/role_spec.rb": 0.7065742810000302,10200 "spec/lib/gitlab/repository_size_checker_spec.rb": 0.6352575979999528,10201 "spec/models/concerns/token_authenticatable_strategies/base_spec.rb": 1.3834039960001974,10202 "spec/lib/gitlab/database/database_connection_info_spec.rb": 0.8141420330002802,10203 "spec/services/concerns/audit_event_save_type_spec.rb": 0.4384859639994829,10204 "spec/lib/gitlab/hook_data/issue_builder_spec.rb": 1.593252298999687,10205 "spec/rubocop/cop/performance/ar_exists_and_present_blank_spec.rb": 0.6860487740004828,10206 "spec/services/users/last_push_event_service_spec.rb": 0.5719884230002208,10207 "spec/support_specs/helpers/stub_method_calls_spec.rb": 0.4070979759999318,10208 "spec/lib/gitlab/file_markdown_link_builder_spec.rb": 0.5446078049999414,10209 "spec/services/task_list_toggle_service_spec.rb": 0.6786957840004106,10210 "spec/lib/version_check_spec.rb": 0.4862438700001803,10211 "spec/lib/sidebars/user_profile/menus/starred_projects_menu_spec.rb": 0.806107004000296,10212 "spec/lib/click_house/redactor_spec.rb": 0.5497197139993659,10213 "spec/services/protected_tags/update_service_spec.rb": 1.4745890690001033,10214 "spec/lib/gitlab/quick_actions/timeline_text_and_date_time_separator_spec.rb": 0.4405286329993032,10215 "spec/lib/gitlab/github_import/importer/pull_requests/review_requests_importer_spec.rb": 0.9594848409997212,10216 "spec/lib/gitlab/ci/build/releaser_spec.rb": 0.45442951200038806,10217 "spec/lib/gitlab/work_items/work_item_hierarchy_spec.rb": 1.0346178250001685,10218 "spec/serializers/job_artifact_report_entity_spec.rb": 2.0955158770002527,10219 "spec/workers/ci/pipeline_artifacts/create_quality_report_worker_spec.rb": 1.7138380189999225,10220 "spec/views/admin/application_settings/_repository_check.html.haml_spec.rb": 0.5701383129999158,10221 "spec/models/ci/artifact_blob_spec.rb": 1.206005400000322,10222 "spec/initializers/net_http_patch_spec.rb": 0.4717124810003952,10223 "spec/lib/bulk_imports/projects/pipelines/project_pipeline_spec.rb": 1.78202806399986,10224 "spec/lib/gitlab/ci/pipeline/seed/processable/resource_group_spec.rb": 1.6959919199998694,10225 "spec/lib/api/entities/merge_request_changes_spec.rb": 1.4498475910004345,10226 "spec/lib/gitlab/cleanup/orphan_job_artifact_files_batch_spec.rb": 1.6442362039997533,10227 "spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb": 0.3998992670003645,10228 "spec/finders/autocomplete/deploy_keys_with_write_access_finder_spec.rb": 0.9993833079997785,10229 "spec/services/merge_requests/create_approval_event_service_spec.rb": 1.1884656319998612,10230 "spec/rubocop/cop/migration/update_column_in_batches_spec.rb": 0.5443608349996794,10231 "spec/models/packages/composer/metadatum_spec.rb": 0.9268460329994923,10232 "spec/lib/gitlab/config/entry/simplifiable_spec.rb": 0.2808145359995251,10233 "spec/lib/bulk_imports/projects/pipelines/repository_pipeline_spec.rb": 1.9975156860000425,10234 "spec/graphql/mutations/environments/canary_ingress/update_spec.rb": 0.8790639179997015,10235 "spec/services/dependency_proxy/auth_token_service_spec.rb": 0.5704507529999319,10236 "spec/lib/gitlab/metrics/prometheus_spec.rb": 2.232723996000459,10237 "spec/finders/repositories/branch_names_finder_spec.rb": 1.2665347060001295,10238 "spec/lib/gitlab/database/migrations/extension_helpers_spec.rb": 0.2441258500002732,10239 "spec/graphql/resolvers/terraform/states_resolver_spec.rb": 1.288829584999803,10240 "spec/helpers/keyset_helper_spec.rb": 1.5460030620006364,10241 "spec/uploaders/object_storage/cdn_spec.rb": 0.38239918900035264,10242 "spec/serializers/move_to_project_entity_spec.rb": 0.3171725130005143,10243 "spec/workers/deployments/archive_in_project_worker_spec.rb": 0.9057358950003618,10244 "spec/services/ci/create_pipeline_service/scripts_spec.rb": 1.3302196300001015,10245 "spec/models/concerns/limitable_spec.rb": 1.1945689819995096,10246 "spec/models/snippet_input_action_collection_spec.rb": 1.1520320649997302,10247 "spec/services/packages/mark_package_for_destruction_service_spec.rb": 1.1650405640002646,10248 "spec/finders/groups/accepting_project_creations_finder_spec.rb": 1.9097245319999274,10249 "spec/lib/gitlab/tracking/service_ping_context_spec.rb": 0.3625845800006573,10250 "spec/serializers/member_serializer_spec.rb": 1.5751165199999377,10251 "spec/services/customer_relations/organizations/update_service_spec.rb": 0.9021690660001696,10252 "spec/graphql/resolvers/crm/contact_state_counts_resolver_spec.rb": 1.0578520319995732,10253 "spec/lib/gitlab/graphql/pagination/offset_active_record_relation_connection_spec.rb": 0.6570505760000742,10254 "spec/services/discussions/capture_diff_note_positions_service_spec.rb": 1.5715915909995601,10255 "spec/lib/gitlab/database/migration_helpers/swapping_spec.rb": 0.9212866750003741,10256 "spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb": 0.2694652379996114,10257 "spec/lib/api/entities/draft_note_spec.rb": 1.000867228000061,10258 "spec/presenters/member_presenter_spec.rb": 0.8450282509993485,10259 "spec/policies/application_setting_policy_spec.rb": 1.0975419489996057,10260 "spec/lib/gitlab/usage/metrics/instrumentations/count_slack_app_installations_metric_spec.rb": 0.7954484739993859,10261 "spec/workers/terraform/states/destroy_worker_spec.rb": 0.5639878840001984,10262 "spec/lib/banzai/pipeline/post_process_pipeline_spec.rb": 0.6370855870000014,10263 "spec/support_specs/helpers/migrations_helpers_spec.rb": 0.4829239399996368,10264 "spec/lib/gitlab/diff/formatters/image_formatter_spec.rb": 0.4941708389997075,10265 "spec/workers/update_project_statistics_worker_spec.rb": 1.4865074979998099,10266 "spec/views/admin/groups/_form.html.haml_spec.rb": 0.608891400000175,10267 "spec/rubocop/cop/ignored_columns_spec.rb": 0.47008496099988406,10268 "spec/graphql/types/release_assets_input_type_spec.rb": 0.22754546099986328,10269 "spec/models/ml/candidate_metric_spec.rb": 0.7679012859998693,10270 "spec/views/projects/commits/show.html.haml_spec.rb": 1.2323118580006849,10271 "spec/models/blob_viewer/changelog_spec.rb": 1.2740242949994354,10272 "spec/validators/gitlab/zoom_url_validator_spec.rb": 0.3191314940004304,10273 "spec/graphql/types/member_interface_spec.rb": 0.40419596700030525,10274 "spec/services/user_agent_detail_service_spec.rb": 0.7126954909999768,10275 "spec/graphql/resolvers/ci/template_resolver_spec.rb": 1.1034226689998832,10276 "spec/lib/gitlab/sql/recursive_cte_spec.rb": 0.4645312920001743,10277 "spec/services/integrations/slack_options/label_search_handler_spec.rb": 0.7956506339996849,10278 "spec/lib/gitlab/dependency_linker/podspec_json_linker_spec.rb": 0.49271935999968264,10279 "spec/views/projects/milestones/index.html.haml_spec.rb": 0.6648927849992106,10280 "spec/workers/propagate_integration_group_worker_spec.rb": 1.0249210150004728,10281 "spec/lib/gitlab/kroki_spec.rb": 0.3511155010000948,10282 "spec/lib/gitlab/pagination/keyset/cursor_pager_spec.rb": 0.704192201999831,10283 "spec/models/ml/candidate_metadata_spec.rb": 0.841158010000072,10284 "spec/lib/gitlab/database/schema_cleaner_spec.rb": 0.31938841400005913,10285 "spec/scripts/api/get_package_and_test_job_spec.rb": 0.41860382499999105,10286 "spec/lib/gitlab/database/shared_model_spec.rb": 0.5133053680001467,10287 "spec/tooling/lib/tooling/helpers/file_handler_spec.rb": 0.39275744799942913,10288 "spec/lib/gitlab/app_text_logger_spec.rb": 0.244194599000366,10289 "spec/lib/gitlab/database_importers/work_items/hierarchy_restrictions_importer_spec.rb": 0.5238299970005755,10290 "spec/workers/concerns/packages/cleanup_artifact_worker_spec.rb": 0.23261445100069977,10291 "spec/graphql/types/design_management/design_version_event_enum_spec.rb": 0.19569180400048936,10292 "spec/lib/api/helpers/internal_helpers_spec.rb": 0.4671021510002902,10293 "spec/serializers/cluster_entity_spec.rb": 0.7668345060001229,10294 "spec/lib/gitlab/word_diff/segments/chunk_spec.rb": 0.37695758900008514,10295 "spec/graphql/types/evidence_type_spec.rb": 0.1901922849992843,10296 "spec/lib/gitlab/noteable_metadata_spec.rb": 0.9058346660003735,10297 "spec/lib/gitlab/config/entry/attributable_spec.rb": 0.30937043399990216,10298 "spec/lib/gitlab/rugged_instrumentation_spec.rb": 0.1984835639996163,10299 "spec/models/project_daily_statistic_spec.rb": 0.17051981600070576,10300 "spec/validators/sha_validator_spec.rb": 0.27565214700007346,10301 "spec/lib/gitlab/bitbucket_import/importers/pull_requests_notes_importer_spec.rb": 0.7088631820006412,10302 "spec/serializers/jira_connect/subscription_entity_spec.rb": 0.8743360779999421,10303 "spec/lib/gitlab/ci/config/entry/imageable_spec.rb": 0.2889870859999064,10304 "spec/graphql/types/merge_requests/participant_type_spec.rb": 0.24233985999944707,10305 "spec/models/error_tracking/client_key_spec.rb": 0.3010355950000303,10306 "spec/models/repository_language_spec.rb": 0.2986892250000892,10307 "spec/lib/gitlab/database/migrations/milestone_mixin_spec.rb": 0.2089352829998461,10308 "spec/lib/bulk_imports/groups/extractors/subgroups_extractor_spec.rb": 0.9700869799999055,10309 "spec/services/users/email_verification/generate_token_service_spec.rb": 0.5525355749996379,10310 "spec/rubocop/cop/rspec/shared_groups_metadata_spec.rb": 0.2898935560006066,10311 "spec/rubocop/cop/sidekiq_redis_call_spec.rb": 0.22009776100003364,10312 "spec/lib/gitlab/ci/config/interpolation/context_spec.rb": 0.275169096999889,10313 "spec/graphql/resolvers/achievements/achievements_resolver_spec.rb": 0.34739827100020193,10314 "spec/lib/gitlab/ci/config/external/mapper/normalizer_spec.rb": 0.15761869699963427,10315 "spec/lib/gitlab/usage_data_counters/jetbrains_bundled_plugin_activity_unique_counter_spec.rb": 0.3101140549997581,10316 "spec/services/work_items/widgets/hierarchy_service/create_service_spec.rb": 0.6230419180001263,10317 "spec/rubocop/cop/api/grape_array_missing_coerce_spec.rb": 0.26014968900017266,10318 "spec/services/emails/destroy_service_spec.rb": 0.4038344959999449,10319 "spec/workers/gitlab/github_import/attachments/import_issue_worker_spec.rb": 0.5117272870002125,10320 "spec/lib/banzai/filter/timeout_html_pipeline_filter_spec.rb": 0.5107608980006262,10321 "spec/lib/sidebars/projects/menus/scope_menu_spec.rb": 0.3545046409999486,10322 "spec/support_specs/matchers/exceed_redis_call_limit_spec.rb": 0.2701503380003487,10323 "spec/helpers/git_helper_spec.rb": 0.2698785669999779,10324 "spec/lib/gitlab/ci/secure_files/x509_name_spec.rb": 0.18503673400027765,10325 "spec/graphql/types/ci/config/job_restriction_type_spec.rb": 0.1849038250002195,10326 "spec/uploaders/packages/npm/metadata_cache_uploader_spec.rb": 0.28610146599930886,10327 "spec/support_specs/capybara_wait_for_all_requests_spec.rb": 0.2199442419996558,10328 "spec/models/bulk_imports/export_upload_spec.rb": 0.4142793459996028,10329 "spec/graphql/types/upload_type_spec.rb": 0.1775747150004463,10330 "spec/lib/gitlab/ci/jwt_v2/claim_mapper_spec.rb": 0.2130573029999141,10331 "spec/lib/gitlab/external_authorization/logger_spec.rb": 0.23278797100010706,10332 "spec/graphql/types/query_complexity_type_spec.rb": 0.18740450400036934,10333 "spec/lib/gitlab/graphql/negatable_arguments_spec.rb": 0.22000129200023366,10334 "spec/lib/banzai/pipeline/email_pipeline_spec.rb": 0.22572048100028042,10335 "spec/lib/gitlab/dependency_linker/parser/gemfile_spec.rb": 0.1917584140001054,10336 "spec/graphql/types/user_callout_feature_name_enum_spec.rb": 0.185260424000262,10337 "spec/graphql/types/access_level_type_spec.rb": 0.2228166519998922,10338 "spec/lib/api/validations/validators/bulk_imports/destination_namespace_path_spec.rb": 0.18653520499992737,10339 "spec/lib/gitlab/safe_device_detector_spec.rb": 0.18702225499964698,10340 "spec/graphql/types/tree/tree_type_spec.rb": 0.23078778099988995,10341 "spec/helpers/one_trust_helper_spec.rb": 0.19640000399976998,10342 "spec/graphql/types/permission_types/issue_spec.rb": 0.15141063700048107,10343 "spec/graphql/types/design_management/design_collection_type_spec.rb": 0.178000265999799,10344 "spec/lib/gitlab/no_cache_headers_spec.rb": 0.1483525980002014,10345 "spec/graphql/types/issuable_severity_enum_spec.rb": 0.18457487500018033,10346 "spec/graphql/types/jira_user_type_spec.rb": 0.17974836499979574,10347 "spec/graphql/types/tree/blob_type_spec.rb": 0.18490522499996587,10348 "spec/lib/gitlab/database/convert_feature_category_to_group_label_spec.rb": 0.19351003399970068,10349 "spec/graphql/types/ci/test_suite_summary_type_spec.rb": 0.18885106499965332,10350 "spec/graphql/types/jira_import_type_spec.rb": 0.1924290650003968,10351 "spec/serializers/ci/lint/job_entity_spec.rb": 0.15366058700055873,10352 "spec/lib/api/entities/projects/repository_storage_move_spec.rb": 0.18200465500012797,10353 "spec/lib/gitlab/action_cable/request_store_callbacks_spec.rb": 0.16486371600058192,10354 "spec/lib/gitlab/kubernetes/generic_secret_spec.rb": 0.15608609700029774,10355 "spec/models/synthetic_note_spec.rb": 0.16179730700059736,10356 "spec/lib/gitlab/ci/config/normalizer/factory_spec.rb": 0.16057008700045117,10357 "spec/graphql/types/security/report_types_enum_spec.rb": 0.15317228700041596,10358 "spec/lib/gitlab/search/found_wiki_page_spec.rb": 0.17131185600010213,10359 "spec/lib/gitlab/usage/metrics/instrumentations/container_registry_db_enabled_metric_spec.rb": 0.157099546999234,10360 "spec/initializers/circuitbox_spec.rb": 0.17039800600014132,10361 "spec/serializers/integrations/harbor_serializers/repository_serializer_spec.rb": 0.1660674159993505,10362 "spec/lib/gitlab/quick_actions/dsl_spec.rb": 0.1539784480000889710364Knapsack global time execution for tests: 29m 15s10365Pending: (Failures listed here are expected and do not affect your suite's status)10366 1) Appearance with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes any FileUploader uploads which are not mounted10367 # No reason given10368 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:2310369 2) Appearance with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes local files10370 # No reason given10371 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:2710372 3) Appearance with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes any FileUploader uploads which are not mounted10373 # No reason given10374 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:3710375 4) Appearance with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes remote files10376 # No reason given10377 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:4110378 5) MigrationsHelpers#active_record_base ci database not configured returns the main base model10379 # Skipping because some of the extra databases [:ci] are setup10380 # ./spec/support_specs/helpers/migrations_helpers_spec.rb:3610381 6) MigrationsHelpers#table ci database not configured creates a class based on main base model10382 # Skipping because some of the extra databases [:ci] are setup10383 # ./spec/support_specs/helpers/migrations_helpers_spec.rb:6810384 7) Gitlab::Graphql::NegatableArguments#negated defines all arguments passed as block even if called multiple times10385 # Temporarily skipped with xit10386 # ./spec/lib/gitlab/graphql/negatable_arguments_spec.rb:3010387Finished in 30 minutes 28 seconds (files took 43.63 seconds to load)103884847 examples, 0 failures, 7 pending10389Randomized with seed 946310390[TEST PROF INFO] Time spent in factories: 16:56.122 (55.37% of total time)10391RSpec exited with 0.10392No examples to retry, congrats!10394Running after script...10395$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"10399$ tooling/bin/push_job_metrics || true10400[job-metrics] Pushing job metrics file for the CI/CD job.10401[job-metrics] Pushed 4 CI job metric entries to InfluxDB.10403Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy10405Uploading artifacts...10406auto_explain/: found 3 matching artifact files and directories 10407coverage/: found 5 matching artifact files and directories 10408crystalball/: found 2 matching artifact files and directories 10409deprecations/: found 7 matching artifact files and directories 10410knapsack/: found 4 matching artifact files and directories 10411rspec/: found 16 matching artifact files and directories 10412WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 10413log/*.log: found 20 matching artifact files and directories 10414WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/5336650797/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com10415WARNING: Retrying... context=artifacts-uploader error=request redirected10416Uploading artifacts as "archive" to coordinator... 201 Created id=5336650797 responseStatus=201 Created token=64_2UsnW10417Uploading artifacts...10418rspec/rspec-*.xml: found 1 matching artifact files and directories 10419WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/5336650797/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com10420WARNING: Retrying... context=artifacts-uploader error=request redirected10421Uploading artifacts as "junit" to coordinator... 201 Created id=5336650797 responseStatus=201 Created token=64_2UsnW10423Job succeeded