rspec unit pg14 11/28
Passed Started
by
@dstull
Doug Stull
1Running with gitlab-runner 16.1.0~beta.59.g83c66823 (83c66823)2 on green-3.private.runners-manager.gitlab.com/gitlab.com/gitlab-org QuQPoFsC, system ID: s_fc023362bf2f3 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true, FF_RESOLVE_FULL_TLS_CHAIN:false6Using Docker executor with image 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 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...10Using docker image sha256:2e09e9db92541ed81b1c00f1d5186f8c262d8b84e8d1755676ea4b25614f30c4 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:afc7bd7a60824044709543a6a700385e412d750d9ab4fc72b427e335e1d0f3ec ...11WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.12WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.13Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...16Using docker image sha256:a9a90ece30d9630d694ab1997cd103ea8ec729789451b983a75c7b58b0062d45 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7ef36177d5d0bc554fbb63d8210ae751bcc538bea7905b51d078d9ab90a755fa ...17Starting service redis:6.2-alpine ...18Pulling docker image redis:6.2-alpine ...19Using docker image sha256:d0675d033b87382205d08b598a004a99a1f6c4bd377cc86bb6df8957ce7dbb1c for redis:6.2-alpine with digest redis@sha256:740b5c973d1c9eea6e124a3905ba73d32354d0549f98ccc9e67af1af2a9ba478 ...20Waiting for services to be up and running (timeout 30 seconds)...21Authenticating with credentials from job payload (GitLab Registry)22Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.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 ...23Using docker image sha256:3e6c24d49ca804019e2cfcf4951ed994b550043ce6af3757cb550e8c78892a99 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:50215d6eb4fdf053dfc39bc8a540c94a214139ba2a583092099c9eac46201eee ...25Running on runner-quqpofsc-project-278964-concurrent-0 via runner-quqpofsc-private-1692359252-9cdce5c5...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/29Created fresh repository.30remote: Enumerating objects: 150271, done. 31remote: Counting objects: 100% (150271/150271), done. 32remote: Compressing objects: 100% (97595/97595), done. 33remote: Total 150271 (delta 67215), reused 103431 (delta 46893), pack-reused 0 34Receiving objects: 100% (150271/150271), 124.68 MiB | 30.13 MiB/s, done.35Resolving deltas: 100% (67215/67215), done.37 * [new ref] refs/pipelines/972262671 -> refs/pipelines/97226267138Checking out 3f92a6c3 as detached HEAD (ref is refs/merge-requests/129383/merge)...39Skipping Git submodules setup40$ git remote set-url origin "${CI_REPOSITORY_URL}"42Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...43Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 44Successfully extracted cache46Downloading artifacts for compile-test-assets (4900739220)...47Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4900739220 responseStatus=200 OK token=64_8yowa48Downloading artifacts for detect-tests (4900739241)...49Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4900739241 responseStatus=200 OK token=64_8yowa50Downloading artifacts for retrieve-tests-metadata (4900739253)...51Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4900739253 responseStatus=200 OK token=64_8yowa52Downloading artifacts for setup-test-env (4900739227)...53Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4900739227 responseStatus=200 OK token=64_8yowa55Using docker image sha256:3e6c24d49ca804019e2cfcf4951ed994b550043ce6af3757cb550e8c78892a99 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:50215d6eb4fdf053dfc39bc8a540c94a214139ba2a583092099c9eac46201eee ...56$ echo $FOSS_ONLY57$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb58$ export GOPATH=$CI_PROJECT_DIR/.go59$ mkdir -p $GOPATH60$ source scripts/utils.sh61$ source scripts/prepare_build.sh93Using decomposed database config (config/database.yml.decomposed-postgresql)94Geo DB won't be set up.95Embedding DB won't be set up.107$ source ./scripts/rspec_helpers.sh108$ run_timed_command "gem install knapsack --no-document"109$ gem install knapsack --no-document110Successfully installed knapsack-4.0.01111 gem installed112==> 'gem install knapsack --no-document' succeeded in 1 seconds.113$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"118$ export RSPEC_SKIPPED_TESTS_REPORT_PATH="rspec/skipped_tests-${CI_JOB_ID}.txt"119$ export RSPEC_RETRIED_TESTS_REPORT_PATH="rspec/retried_tests-${CI_JOB_ID}.txt"120$ rspec_paralellized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~level:background_migration --tag ~click_house"121SKIP_FLAKY_TESTS_AUTOMATICALLY: 122RETRY_FAILED_TESTS_IN_NEW_PROCESS: true123KNAPSACK_GENERATE_REPORT: true124FLAKY_RSPEC_GENERATE_REPORT: true125KNAPSACK_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.rb126KNAPSACK_LOG_LEVEL: debug127KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg14_11_28_report.json128FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json129FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg14_11_28_report.json130NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg14_11_28_report.json131RSPEC_SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests-4900739480.txt132CRYSTALBALL: 133RSPEC_TESTS_MAPPING_ENABLED: 134RSPEC_TESTS_FILTER_FILE: 135Shell set options (set -o) enabled:136braceexpand on137hashall on138interactive-comments on139pipefail on140Running 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-4900739480.json --format RspecJunitFormatter --out rspec/rspec-4900739480.xml --fail-fast=20 --tag ~quarantine --tag ~level:background_migration --tag ~click_house -- spec/models/merge_request_diff_spec.rb spec/policies/merge_request_policy_spec.rb spec/models/concerns/mentionable_spec.rb spec/lib/gitlab/import_export/group/tree_restorer_spec.rb spec/services/application_settings/update_service_spec.rb spec/services/boards/lists/move_service_spec.rb spec/models/milestone_spec.rb spec/lib/object_storage/direct_upload_spec.rb spec/lib/gitlab/url_blocker_spec.rb spec/models/alert_management/alert_spec.rb spec/lib/gitlab/ci/parsers/security/validators/schema_validator_spec.rb spec/lib/gitlab/bitbucket_server_import/importer_spec.rb spec/lib/banzai/filter/autolink_filter_spec.rb spec/lib/gitlab/background_migration/backfill_design_management_repositories_spec.rb spec/models/project_statistics_spec.rb spec/policies/namespace/root_storage_statistics_policy_spec.rb spec/lib/gitlab/gitaly_client_spec.rb spec/models/notification_recipient_spec.rb spec/helpers/events_helper_spec.rb spec/services/resource_events/change_state_service_spec.rb spec/models/integrations/telegram_spec.rb spec/lib/gitlab/utils/markdown_spec.rb spec/lib/gitlab/ci/runner/backoff_spec.rb spec/models/wiki_page/meta_spec.rb spec/models/ci/daily_build_group_report_result_spec.rb spec/services/snippets/destroy_service_spec.rb spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb spec/models/ci/resource_group_spec.rb spec/graphql/mutations/namespace/package_settings/update_spec.rb spec/workers/issues/placement_worker_spec.rb spec/lib/banzai/filter/reference_redactor_filter_spec.rb spec/models/concerns/reactive_caching_spec.rb spec/models/project_import_state_spec.rb spec/models/concerns/pg_full_text_searchable_spec.rb spec/services/ci/delete_unit_tests_service_spec.rb spec/lib/gitlab/repository_cache_adapter_spec.rb spec/lib/atlassian/jira_connect/client_spec.rb spec/lib/backup/gitaly_backup_spec.rb spec/lib/feature/definition_spec.rb spec/services/ci/pipeline_schedules/calculate_next_run_service_spec.rb spec/models/ci/external_pull_request_spec.rb spec/services/wiki_pages/update_service_spec.rb spec/serializers/member_user_entity_spec.rb spec/lib/gitlab/http_io_spec.rb spec/lib/gitlab/database/migrations/constraints_helpers_spec.rb spec/helpers/preferences_helper_spec.rb spec/lib/gitlab/ci/config/entry/include/rules/rule_spec.rb spec/finders/tags_finder_spec.rb spec/lib/gitlab/ci/status/build/unschedule_spec.rb spec/services/merge_requests/export_csv_service_spec.rb spec/lib/gitlab/seeders/ci/runner/runner_fleet_seeder_spec.rb spec/uploaders/terraform/state_uploader_spec.rb spec/presenters/project_member_presenter_spec.rb spec/lib/gitlab/quick_actions/command_definition_spec.rb spec/services/projects/forks/sync_service_spec.rb spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb spec/models/ci/unit_test_failure_spec.rb spec/lib/gitlab/ci/pipeline/expression/lexeme/and_spec.rb spec/lib/gitlab/ci/status/build/cancelable_spec.rb spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb spec/services/ci/pipeline_schedules/create_service_spec.rb spec/lib/gitlab/github_import/importer/issue_importer_spec.rb spec/lib/gitlab/repository_hash_cache_spec.rb spec/services/git/tag_push_service_spec.rb spec/lib/gitlab/logger_spec.rb spec/models/product_analytics_event_spec.rb spec/lib/gitlab_edition_spec.rb spec/lib/api/entities/project_spec.rb spec/services/projects/deploy_tokens/create_service_spec.rb spec/graphql/types/base_enum_spec.rb spec/finders/design_management/designs_finder_spec.rb spec/lib/gitlab/x509/certificate_spec.rb spec/rubocop/cop/migration/safer_boolean_column_spec.rb spec/services/lfs/locks_finder_service_spec.rb spec/models/user_status_spec.rb spec/lib/gitlab/background_migration/set_correct_vulnerability_state_spec.rb spec/models/lfs_download_object_spec.rb spec/lib/gitlab/ci/config/entry/product/matrix_spec.rb spec/lib/gitlab/ci/config/extendable/entry_spec.rb spec/lib/gitlab/ci/badge/release/latest_release_spec.rb spec/lib/gitlab/ci/pipeline/chain/seed_spec.rb spec/finders/repositories/tree_finder_spec.rb spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb spec/helpers/groups/observability_helper_spec.rb spec/services/two_factor/destroy_service_spec.rb spec/lib/gitlab/global_id_spec.rb spec/lib/gitlab/hook_data/base_builder_spec.rb spec/lib/bitbucket/representation/repo_spec.rb spec/services/protected_branches/create_service_spec.rb spec/services/draft_notes/destroy_service_spec.rb spec/services/service_desk/custom_emails/destroy_service_spec.rb spec/tasks/gitlab/artifacts/check_rake_spec.rb spec/lib/gitlab/github_import/importer/attachments/releases_importer_spec.rb spec/models/concerns/file_store_mounter_spec.rb spec/models/blob_viewer/package_json_spec.rb spec/lib/gitlab/container_repository/tags/cache_spec.rb spec/lib/gitlab/dependency_linker/package_json_linker_spec.rb spec/lib/gitlab/ci/reports/security/identifier_spec.rb spec/lib/gitlab/usage_data_non_sql_metrics_spec.rb spec/lib/gitlab/ci/templates/Jobs/sast_iac_gitlab_ci_yaml_spec.rb spec/lib/gitlab/github_import/label_finder_spec.rb spec/lib/gitlab/hook_data/user_builder_spec.rb spec/lib/gitlab/checks/global_file_size_check_spec.rb spec/views/notify/import_issues_csv_email.html.haml_spec.rb spec/graphql/mutations/custom_emoji/destroy_spec.rb spec/models/ci/unit_test_spec.rb spec/finders/users_star_projects_finder_spec.rb spec/rubocop/cop/graphql/json_type_spec.rb spec/services/award_emojis/collect_user_emoji_service_spec.rb spec/lib/gitlab/import_export/uploads_manager_spec.rb spec/graphql/resolvers/crm/organizations_resolver_spec.rb spec/rubocop/cop/rspec/be_success_matcher_spec.rb spec/lib/gitlab/ci/reports/security/finding_signature_spec.rb spec/graphql/mutations/timelogs/delete_spec.rb spec/graphql/resolvers/recent_boards_resolver_spec.rb spec/models/alert_management/alert_assignee_spec.rb spec/lib/gitlab/git/repository_cleaner_spec.rb spec/models/preloaders/group_policy_preloader_spec.rb spec/services/projects/move_lfs_objects_projects_service_spec.rb spec/workers/authorized_projects_worker_spec.rb spec/serializers/diff_viewer_entity_spec.rb spec/helpers/hooks_helper_spec.rb spec/views/projects/settings/integrations/edit.html.haml_spec.rb spec/support_specs/helpers/migrations_helpers_spec.rb spec/services/import/gitlab_projects/create_project_service_spec.rb spec/graphql/mutations/achievements/delete_spec.rb spec/lib/gitlab/ci/trace/metrics_spec.rb spec/models/integrations/shimo_spec.rb spec/presenters/packages/nuget/package_metadata_presenter_spec.rb spec/helpers/projects/pipeline_helper_spec.rb spec/finders/incident_management/timeline_event_tags_finder_spec.rb spec/serializers/issue_serializer_spec.rb spec/services/projects/open_merge_requests_count_service_spec.rb spec/services/ci/create_pipeline_service/environment_spec.rb spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb spec/services/ci/create_pipeline_service/custom_config_content_spec.rb spec/lib/banzai/pipeline_spec.rb spec/lib/gitlab/usage_data_counters/jetbrains_plugin_activity_unique_counter_spec.rb spec/lib/gitlab/diff/file_collection/base_spec.rb spec/workers/namespaces/root_statistics_worker_spec.rb spec/models/ci/project_mirror_spec.rb spec/lib/gitlab/cleanup/remote_uploads_spec.rb spec/workers/propagate_integration_project_worker_spec.rb spec/models/concerns/cron_schedulable_spec.rb spec/workers/update_external_pull_requests_worker_spec.rb spec/lib/bulk_imports/common/extractors/json_extractor_spec.rb spec/presenters/ci/pipeline_artifacts/code_coverage_presenter_spec.rb spec/rubocop/cop/rspec/factories_in_migration_specs_spec.rb spec/graphql/types/commit_signatures/x509_signature_type_spec.rb spec/lib/gitlab/ci/config/interpolation/functions_stack_spec.rb spec/models/bulk_imports/batch_tracker_spec.rb spec/services/packages/rubygems/dependency_resolver_service_spec.rb spec/views/admin/sessions/new.html.haml_spec.rb spec/lib/gitlab/database/async_constraints/validators_spec.rb spec/serializers/feature_flag_serializer_spec.rb spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb spec/components/pajamas/concerns/checkbox_radio_options_spec.rb spec/rubocop/cop/gitlab/rspec/avoid_setup_spec.rb spec/lib/gitlab/alert_management/alert_status_counts_spec.rb spec/lib/gitlab/request_context_spec.rb spec/services/import/github/notes/create_service_spec.rb spec/services/jira_connect/create_asymmetric_jwt_service_spec.rb spec/graphql/resolvers/ci/runner_jobs_resolver_spec.rb spec/services/ci/pipeline_bridge_status_service_spec.rb spec/lib/gitlab/ci/build/policy/kubernetes_spec.rb spec/graphql/types/notes/noteable_interface_spec.rb spec/workers/gitlab/github_import/stage/import_issue_events_worker_spec.rb spec/lib/gitlab/ci/status/pipeline/delayed_spec.rb spec/graphql/resolvers/error_tracking/sentry_errors_resolver_spec.rb spec/routing/user_routing_spec.rb spec/lib/gitlab/sanitizers/exception_message_spec.rb spec/rubocop/cop/usage_data/large_table_spec.rb spec/lib/bulk_imports/common/rest/get_badges_query_spec.rb spec/graphql/resolvers/environments/nested_environments_resolver_spec.rb spec/rubocop/cop/code_reuse/worker_spec.rb spec/views/projects/hooks/index.html.haml_spec.rb spec/lib/gitlab/usage/service_ping/instrumented_payload_spec.rb spec/workers/projects/update_repository_storage_worker_spec.rb spec/lib/gitlab/ci/templates/katalon_gitlab_ci_yaml_spec.rb spec/serializers/test_suite_comparer_entity_spec.rb spec/rubocop/cop/database/multiple_databases_spec.rb spec/lib/gitlab/url_blockers/domain_allowlist_entry_spec.rb spec/services/achievements/destroy_user_achievement_service_spec.rb spec/services/user_project_access_changed_service_spec.rb spec/services/projects/readme_renderer_service_spec.rb spec/lib/gitlab/github_import/representation/pull_request_review_spec.rb spec/lib/gitlab/ci/artifacts/decompressed_artifact_size_validator_spec.rb spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb spec/lib/gitlab/markdown_cache/redis/extension_spec.rb spec/bin/diagnostic_reports_uploader_spec.rb spec/rubocop/check_graceful_task_spec.rb spec/services/google_cloud/enable_vision_ai_service_spec.rb spec/models/bulk_imports/configuration_spec.rb spec/lib/banzai/filter/service_desk_upload_link_filter_spec.rb spec/models/work_items/widgets/notes_spec.rb spec/serializers/admin/abuse_report_serializer_spec.rb spec/tooling/danger/required_stops_spec.rb spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb spec/lib/gitlab/import_export/recursive_merge_folders_spec.rb spec/lib/gitlab/import_export/log_util_spec.rb spec/lib/gitlab/application_rate_limiter/increment_per_actioned_resource_spec.rb spec/models/users/calloutable_spec.rb spec/lib/gitlab/grape_logging/loggers/response_logger_spec.rb spec/lib/gitlab/asset_proxy_spec.rb spec/rubocop/cop/migration/add_timestamps_spec.rb spec/services/groups/update_statistics_service_spec.rb spec/lib/api/github/entities_spec.rb spec/lib/gitlab/search/abuse_validators/no_abusive_term_length_validator_spec.rb spec/models/concerns/blob_language_from_git_attributes_spec.rb spec/models/bulk_imports/export_upload_spec.rb spec/graphql/types/metrics/dashboards/annotation_type_spec.rb spec/lib/gitlab/email/message/in_product_marketing/admin_verify_spec.rb spec/graphql/types/clusters/agent_token_type_spec.rb spec/services/groups/deploy_tokens/revoke_service_spec.rb spec/lib/gitlab/sidekiq_middleware/pause_control/strategy_handler_spec.rb spec/services/captcha/captcha_verification_service_spec.rb spec/lib/api/validations/validators/array_none_any_spec.rb spec/graphql/types/ci/config/job_type_spec.rb spec/models/groups/feature_setting_spec.rb spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb spec/lib/gitlab/github_import/client_pool_spec.rb spec/lib/gitlab/audit/deploy_key_author_spec.rb spec/graphql/types/metadata/kas_type_spec.rb spec/lib/sidebars/groups/super_sidebar_menus/build_menu_spec.rb spec/initializers/rdoc_segfault_patch_spec.rb spec/lib/gitlab/graphql/tracers/logger_tracer_spec.rb spec/lib/gitlab/diff/inline_diff_marker_spec.rb spec/lib/sidebars/organizations/menus/manage_menu_spec.rb spec/lib/bulk_imports/common/extractors/rest_extractor_spec.rb spec/lib/bulk_imports/retry_pipeline_error_spec.rb spec/graphql/resolvers/packages_base_resolver_spec.rb spec/db/production/add_security_training_providers_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_online_metric_spec.rb spec/helpers/deploy_tokens_helper_spec.rb spec/initializers/omniauth_spec.rb spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rb spec/models/blob_viewer/podspec_spec.rb spec/helpers/export_helper_spec.rb spec/tooling/lib/tooling/crystalball/coverage_lines_strategy_spec.rb spec/lib/gitlab/nav/top_nav_menu_header_spec.rbKnapsack report generator started!141/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!142/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!143/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!144/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!145/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!146/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!147/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!148/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!149/builds/gitlab-org/gitlab/ee/lib/remote_development/workspaces/create/creator.rb:17: 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/creator.rb:24: 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/creator.rb:25: 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/creator.rb:28: 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/devfile_fetcher.rb:15: 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/devfile_fetcher.rb:16: 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/devfile_flattener.rb:12: 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/editor_component_injector.rb:12: 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/editor_component_injector.rb:17: 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/editor_component_injector.rb:18: 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/post_flatten_devfile_validator.rb:43: 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/post_flatten_devfile_validator.rb:54: 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/post_flatten_devfile_validator.rb:102: 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/post_flatten_devfile_validator.rb:126: 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/post_flatten_devfile_validator.rb:159: 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/post_flatten_devfile_validator.rb:202: 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/post_flatten_devfile_validator.rb:235: 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/create/pre_flatten_devfile_validator.rb:24: 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/create/pre_flatten_devfile_validator.rb:52: 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/create/project_cloner_component_injector.rb:12: 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/create/project_cloner_component_injector.rb:17: 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/create/project_cloner_component_injector.rb:18: 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/create/project_cloner_component_injector.rb:23: 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/create/volume_component_injector.rb:12: 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/create/volume_component_injector.rb:13: 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/create/volume_component_injector.rb:14: 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/main.rb:43: 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/update/authorizer.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/update/updater.rb:12: 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/input/agent_infos_observer.rb:15: 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/input/params_extractor.rb:14: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!180/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!181/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!182/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!183/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!184/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!185/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!186/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!187/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!188/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!189Run options: exclude {:quarantine=>true, :level=>"background_migration", :click_house=>true}190Test environment set up in 0.698157246 seconds191MergeRequestDiff192 validations193 is expected not to validate that :diff_type is case-sensitively unique within the scope of :merge_request_id194 checks sha format of base_commit_sha, head_commit_sha and start_commit_sha195 does not validate uniqueness by default196 when merge request diff is a merge_head type197 is valid198 when merge_head diff exists199 validates uniqueness200 create new record201 is expected to be valid202 is expected to be persisted203 is expected to eq 29204 is expected to eq 20205 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"206 is expected to eq "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"207 is expected to eq "0b4bc9a49b562e85de7cc9e834518ea6828729b9"208 when diff_type is merge_head209 is expected to be valid210 is expected to be persisted211 is expected to eq 30212 is expected to eq 20213 is expected to eq "6ac8c5112af2b134e86c0e2abde8fd6b8c282ab4"214 is expected to eq "0b4bc9a49b562e85de7cc9e834518ea6828729b9"215 is expected to eq "0b4bc9a49b562e85de7cc9e834518ea6828729b9"216 .by_commit_sha217 with sha contained in218 returns merge request diffs219 with sha not contained in220 returns empty result221 .ids_for_external_storage_migration222 external diffs are disabled223 is expected to be empty224 external diffs are misconfigured225 is expected to be empty226 external diffs are enabled unconditionally227 is expected to contain exactly 17, 18, 20, 21, 22, 23, and 19228 ignores diffs with 0 files229 external diffs are enabled for outdated diffs230 returns records for outdated merge request versions231 with limit232 respects the limit233 #update_external_diff_store234 change_stored_externally: false, change_external_diff: false235 is expected not to receive update_column(:external_diff_store, 1) 0 times236 change_stored_externally: false, change_external_diff: true237 is expected to receive update_column(:external_diff_store, 1) 1 time238 change_stored_externally: true, change_external_diff: false239 is expected to receive update_column(:external_diff_store, 1) 1 time240 change_stored_externally: true, change_external_diff: true241 is expected to receive update_column(:external_diff_store, 1) 1 time242 #migrate_files_to_external_storage!243 converts from in-database to external file storage244 migrates a nil diff file245 safely handles a transaction error when migrating to external storage246 converts from in-database to external object storage247 does nothing with an external diff248 does nothing if external diffs are disabled249 diff adds an empty file250 migrates the diff to object storage251 #migrate_files_to_database!252 converts from external to in-database storage253 does nothing with an in-database diff254 does nothing with an empty diff255 #latest?256 is expected to be latest257 is expected not to be latest258 internal diffs configured259 when it was not cleaned by the system260 returns persisted diffs261 when diff was cleaned by the system262 returns diffs from repository if can compare with current diff refs263 returns persisted diffs if cannot compare with diff refs264 returns persisted diffs if diff refs does not exist265 #diffs_in_batch266 when no persisted files available267 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 diff_options include ignore_whitespace_change275 behaves like fetching full diffs276 returns diffs from repository comparison277 returns a Gitlab::Diff::FileCollection::Compare with full diffs278 returns empty pagination data279 measures diffs_comparison280 behaves like measuring diffs metrics281 is expected to receive measure(:diffs_collection) 1 time282 when persisted files available283 returns paginated diffs284 sorts diff files directory first285 behaves like measuring diffs metrics286 is expected to receive measure(:diffs_collection) 1 time287 when diff_options include ignore_whitespace_change288 returns pagination data from MergeRequestDiffBatch289 returns an empty MergeRequestBatch with empty pagination data when the batch is empty290 #paginated_diffs291 when no persisted files available292 returns a Gitlab::Diff::FileCollection::Compare293 when persisted files available294 returns paginated diffs295 sorts diff files directory first296 #diffs297 when no persisted files available298 behaves like fetching full diffs299 returns diffs from repository comparison300 returns a Gitlab::Diff::FileCollection::Compare with full diffs301 when diff_options include ignore_whitespace_change302 behaves like fetching full diffs303 returns diffs from repository comparison304 returns a Gitlab::Diff::FileCollection::Compare with full diffs305 when persisted files available306 returns diffs307 sorts diff files directory first308 #raw_diffs309 when the :ignore_whitespace_change option is set310 creates a new compare object instead of using preprocessed data311 when the raw diffs are empty312 returns an empty DiffCollection313 when the raw diffs exist314 returns the diffs315 when the :paths option is set316 only returns diffs that match the (old path, new path) given317 only serializes diff files found by query318 uses the preprocessed diffs319 #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 #save_diffs390 saves collected state391 saves overflow state392 saves empty state393 persists diff files sorted directory first394 expands collapsed diffs before saving395 saves binary diffs correctly396 with diffs that contain a null byte397 saves diffs correctly398 external diffs in object storage always enabled399 empty diff400 creates an empty diff401 normal diff402 creates a diff in object storage403 diff adding an empty file404 creates a diff in object storage405 exernal diffs enabled for outdated diffs406 stores up-to-date diffs in the database407 stores diffs for recently closed MRs in the database408 stores diffs for recently merged MRs in the database409 stores diffs for old MR versions in external storage410 stores diffs for old closed MRs in external storage411 stores diffs for old merged MRs in external storage412 when it was not cleaned by the system413 returns persisted diffs414 when diff was cleaned by the system415 returns diffs from repository if can compare with current diff refs416 returns persisted diffs if cannot compare with diff refs417 returns persisted diffs if diff refs does not exist418 #diffs_in_batch419 when no persisted files available420 behaves like fetching full diffs421 returns diffs from repository comparison422 returns a Gitlab::Diff::FileCollection::Compare with full diffs423 returns empty pagination data424 measures diffs_comparison425 behaves like measuring diffs metrics426 is expected to receive measure(:diffs_collection) 1 time427 when diff_options include ignore_whitespace_change428 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 persisted files available436 returns paginated diffs437 sorts diff files directory first438 behaves like measuring diffs metrics439 is expected to receive measure(:diffs_collection) 1 time440 when diff_options include ignore_whitespace_change441 returns pagination data from MergeRequestDiffBatch442 returns an empty MergeRequestBatch with empty pagination data when the batch is empty443 #paginated_diffs444 when no persisted files available445 returns a Gitlab::Diff::FileCollection::Compare446 when persisted files available447 returns paginated diffs448 sorts diff files directory first449 #diffs450 when no persisted files available451 behaves like fetching full diffs452 returns diffs from repository comparison453 returns a Gitlab::Diff::FileCollection::Compare with full diffs454 when diff_options include ignore_whitespace_change455 behaves like fetching full diffs456 returns diffs from repository comparison457 returns a Gitlab::Diff::FileCollection::Compare with full diffs458 when persisted files available459 returns diffs460 sorts diff files directory first461 #raw_diffs462 when the :ignore_whitespace_change option is set463 creates a new compare object instead of using preprocessed data464 when the raw diffs are empty465 returns an empty DiffCollection466 when the raw diffs exist467 returns the diffs468 when the :paths option is set469 only returns diffs that match the (old path, new path) given470 only serializes diff files found by query471 uses the preprocessed diffs472 #save_diffs473 saves collected state474 saves overflow state475 saves empty state476 persists diff files sorted directory first477 expands collapsed diffs before saving478 saves binary diffs correctly479 with diffs that contain a null byte480 saves diffs correctly481 #commit_shas482 returns all commit SHAs using commits from the DB483 with limit attribute484 behaves like limited number of shas485 returns limited number of shas486 with preloaded diff commits487 does not trigger any query488 behaves like limited number of shas489 returns limited number of shas490 #compare_with491 delegates compare to the service492 uses git diff A..B approach by default493 #commits_count494 returns number of commits using serialized commits495 #files_count496 is set by default497 is set to the sentinel value if the actual value exceeds it498 uses the cached count if present499 uses the actual count if nil500 uses the actual count if overflown501 #first_commit502 returns first commit503 #last_commit504 returns last commit505 #includes_any_commits?506 returns false if passed commits do not exist507 returns true if passed commits exists508 processes the passed shas in batches509 number of existing commits is greater than batch size510 performs a separate request for each batch511 #modified_paths512 returns affected file paths513 when fallback_on_overflow is true514 when the merge_request_diff is overflowed515 returns file paths via project.repository#diff_stats516 when the merge_request_diff is not overflowed517 returns expect file paths withoout called #modified_paths_for_overflowed_mr518 #opening_external_diff519 external diffs disabled520 is expected not to be exists521 yields nil522 external diffs enabled523 is expected to be exists524 yields an open file525 is re-entrant526 #lines_count527 returns sum of all changed lines count in diff files528 #commits529 returns a CommitCollection whose container points to the target project530 returns a non-empty CommitCollection531 with a page532 returns a limited number of commits for page533 .latest_diff_for_merge_requests534 loads the latest merge_request_diff record for the given merge requests535 loads nothing if the merge request has no diff record536 loads nothing if nil was passed as merge_request537 external diff caching538 #cached_external_diff539 when diff is externally stored540 when diff is already cached541 yields cached file542 when diff is not cached543 caches external diff in tmp storage544 when diff is not externally stored545 yields nil546 #remove_cached_external_diff547 removes external diff cache diff548 when path is traversed549 raises550 when path is not allowed551 raises552 when dir does not exist553 returns554MergeRequestPolicy555 when user is a direct project member556 when merge request is public557 and user is author558 and the user is a guest559 is expected to be allowed :update_merge_request560 is expected to be allowed :reopen_merge_request561 is expected to be allowed :approve_merge_request562 is expected to be disallowed :reset_merge_request_approvals563 and the user is a bot564 is expected to be allowed :reset_merge_request_approvals565 when merge requests have been disabled566 the author567 behaves like a denied user568 cannot create_merge_request_in569 cannot create_merge_request_from570 cannot read_merge_request571 cannot update_merge_request572 cannot create_todo573 cannot approve_merge_request574 cannot create_note575 cannot update_subscription576 a guest577 behaves like a denied user578 cannot create_merge_request_in579 cannot create_merge_request_from580 cannot read_merge_request581 cannot update_merge_request582 cannot create_todo583 cannot approve_merge_request584 cannot create_note585 cannot update_subscription586 a developer587 behaves like a denied user588 cannot create_merge_request_in589 cannot create_merge_request_from590 cannot read_merge_request591 cannot update_merge_request592 cannot create_todo593 cannot approve_merge_request594 cannot create_note595 cannot update_subscription596 a bot597 is expected to be disallowed :reset_merge_request_approvals598 when merge requests are private599 the author600 behaves like a denied user601 cannot create_merge_request_in602 cannot create_merge_request_from603 cannot read_merge_request604 cannot update_merge_request605 cannot create_todo606 cannot approve_merge_request607 cannot create_note608 cannot update_subscription609 a developer610 behaves like a user with full access611 can create_merge_request_in612 can create_merge_request_from613 can read_merge_request614 can update_merge_request615 can create_todo616 can approve_merge_request617 can create_note618 can update_subscription619 a bot620 is expected to be allowed :reset_merge_request_approvals621 when merge request is unlocked622 allows author to reopen merge request623 allows developer to reopen merge request624 prevents guest from reopening merge request625 when merge request is locked626 prevents author from reopening merge request627 prevents developer from reopening merge request628 prevents guests from reopening merge request629 when the user is project member, with at least guest access630 can create a note631 with external authorization enabled632 can read the issue iid without accessing the external service633 when user is an inherited member from the parent group634 when project is public635 the merge request author636 is expected to be allowed :approve_merge_request637 is expected to be disallowed :reset_merge_request_approvals638 a bot639 is expected to be allowed :approve_merge_request640 is expected to be allowed :reset_merge_request_approvals641 and merge requests are private642 a guest643 behaves like a denied user644 cannot create_merge_request_in645 cannot create_merge_request_from646 cannot read_merge_request647 cannot update_merge_request648 cannot create_todo649 cannot approve_merge_request650 cannot create_note651 cannot update_subscription652 a reporter653 behaves like a user with reporter access654 policy: :create_merge_request_in, is_allowed: true655 is expected to be allowed :create_merge_request_in656 policy: :read_merge_request, is_allowed: true657 is expected to be allowed :read_merge_request658 policy: :create_todo, is_allowed: true659 is expected to be allowed :create_todo660 policy: :create_note, is_allowed: true661 is expected to be allowed :create_note662 policy: :update_subscription, is_allowed: true663 is expected to be allowed :update_subscription664 policy: :create_merge_request_from, is_allowed: false665 is expected to be disallowed :create_merge_request_from666 policy: :approve_merge_request, is_allowed: false667 is expected to be disallowed :approve_merge_request668 policy: :update_merge_request, is_allowed: false669 is expected to be disallowed :update_merge_request670 a developer671 behaves like a user with full access672 can create_merge_request_in673 can create_merge_request_from674 can read_merge_request675 can update_merge_request676 can create_todo677 can approve_merge_request678 can create_note679 can update_subscription680 a bot681 is expected to be allowed :reset_merge_request_approvals682 when project is private683 a guest684 behaves like a denied user685 cannot create_merge_request_in686 cannot create_merge_request_from687 cannot read_merge_request688 cannot update_merge_request689 cannot create_todo690 cannot approve_merge_request691 cannot create_note692 cannot update_subscription693 a reporter694 behaves like a user with reporter access695 policy: :create_merge_request_in, is_allowed: true696 is expected to be allowed :create_merge_request_in697 policy: :read_merge_request, is_allowed: true698 is expected to be allowed :read_merge_request699 policy: :create_todo, is_allowed: true700 is expected to be allowed :create_todo701 policy: :create_note, is_allowed: true702 is expected to be allowed :create_note703 policy: :update_subscription, is_allowed: true704 is expected to be allowed :update_subscription705 policy: :create_merge_request_from, is_allowed: false706 is expected to be disallowed :create_merge_request_from707 policy: :approve_merge_request, is_allowed: false708 is expected to be disallowed :approve_merge_request709 policy: :update_merge_request, is_allowed: false710 is expected to be disallowed :update_merge_request711 a developer712 behaves like a user with full access713 can create_merge_request_in714 can create_merge_request_from715 can read_merge_request716 can update_merge_request717 can create_todo718 can approve_merge_request719 can create_note720 can update_subscription721 a bot722 is expected to be allowed :reset_merge_request_approvals723 when user is an inherited member from a shared group724 and group is given developer access725 is expected to be allowed :approve_merge_request726 is expected to be disallowed :reset_merge_request_approvals727 and the user is a bot728 is expected to be allowed :approve_merge_request729 is expected to be allowed :reset_merge_request_approvals730 when user is not a project member731 when merge request is public732 is expected not to be allowed :approve_merge_request733 is expected not to be allowed :reset_merge_request_approvals734 and the user is a bot735 is expected not to be allowed :approve_merge_request736 is expected not to be allowed :reset_merge_request_approvals737 when merge requests are disabled738 behaves like a denied user739 cannot create_merge_request_in740 cannot create_merge_request_from741 cannot read_merge_request742 cannot update_merge_request743 cannot create_todo744 cannot approve_merge_request745 cannot create_note746 cannot update_subscription747 when merge requests are private748 behaves like a denied user749 cannot create_merge_request_in750 cannot create_merge_request_from751 cannot read_merge_request752 cannot update_merge_request753 cannot create_todo754 cannot approve_merge_request755 cannot create_note756 cannot update_subscription757 when merge request is locked758 cannot create a note759 when user is anonymous760 when merge request is public761 is expected to be disallowed :create_todo and :update_subscription762 when enabling generate diff summary permission763 when can read_merge_request764 allows to generate_diff_summary765 when can not read_merge_request766 does not allow to generate_diff_summary767 and when is the LLM bot768 allows to generate_diff_summary769 when the author of the merge request is banned770 does not allow non-admin user to read the merge_request771 allows admin to read the merge_request772 when the `hide_merge_requests_from_banned_users` feature flag is disabled773 allows non-admin users to read the merge_request774 allows admin users to read the merge_request775Mentionable776 references777 excludes Jira references778Issue Mentionable779 #mentioned_users780 is expected to contain exactly #<User id:848 @stranger>781 when a note on personal snippet782 is expected to contain exactly #<User id:852 @stranger> and #<User id:854 @jim>783 #referenced_mentionables784 with an issue on a private project785 when the current user can see the issue786 includes the reference787 when the current user cannot see the issue788 does not include the reference789 when there is no current user790 does not include the reference791 #create_cross_references!792 correctly removes already-mentioned Commits793 #create_new_cross_references!794 before changes are persisted795 ignores pre-existing references796 notifies new references797 after changes are persisted798 ignores pre-existing references799 notifies new references800 notifies new references from project snippet note801 #store_mentions!802 behaves like mentions in description803 when storing user mentions804 when mentionable description has no mentions805 stores no mentions806 when mentionable description contains mentions807 when `disable_all_mention` FF is disabled808 stores mentions809 when `disable_all_mention` FF is enabled810 stores mentions811 behaves like mentions in notes812 when mentionable notes contain mentions813 when `disable_all_mention` FF is enabled814 returns all mentionable mentions815 when `disable_all_mention` FF is disabled816 returns all mentionable mentions817 and note is confidential818 returns only mentioned users that has permissions819 load mentions820 behaves like load mentions from DB821 load stored mentions (when `disable_all_mention` is disabled)822 when stored user mention contains ids of inexistent records823 filters out inexistent mentions824 and note is confidential825 stores only mentioned users that has permissions826 when private projects and groups are mentioned827 when user has no access to some mentions828 filters out inaccessible mentions829 when user has access to all mentions830 returns all mentions831 when `disable_all_mention` is enabled832 load stored mentions833 when stored user mention contains ids of inexistent records834 filters out inexistent mentions835 and note is confidential836 stores only mentioned users that has permissions837 when private projects and groups are mentioned838 when user has no access to some mentions839 filters out inaccessible mentions840 when user has access to the private project and group mentions841 returns all mentions842Commit Mentionable843 #matches_cross_reference_regex?844 is false when message doesn't reference anything845 is true if issue #number mentioned in title846 is true if references an MR847 is true if references a commit848 is true if issue referenced by url849 with external issue tracker850 is true if external issues referenced851 is true if internal issues referenced852 #store_mentions!853 behaves like mentions in notes854 when mentionable notes contain mentions855 when `disable_all_mention` FF is enabled856 returns all mentionable mentions857 when `disable_all_mention` FF is disabled858 returns all mentionable mentions859 load mentions860 behaves like load mentions from DB861 load stored mentions (when `disable_all_mention` is disabled)862 when stored user mention contains ids of inexistent records863 filters out inexistent mentions864 when private projects and groups are mentioned865 when user has no access to some mentions866 filters out inaccessible mentions867 when user has access to all mentions868 returns all mentions869 when `disable_all_mention` is enabled870 load stored mentions871 when stored user mention contains ids of inexistent records872 filters out inexistent mentions873 when private projects and groups are mentioned874 when user has no access to some mentions875 filters out inaccessible mentions876 when user has access to the private project and group mentions877 returns all mentions878MergeRequest Mentionable879 #store_mentions!880 behaves like mentions in description881 when storing user mentions882 when mentionable description has no mentions883 stores no mentions884 when mentionable description contains mentions885 when `disable_all_mention` FF is disabled886 stores mentions887 when `disable_all_mention` FF is enabled888 stores mentions889 behaves like mentions in notes890 when mentionable notes contain mentions891 when `disable_all_mention` FF is enabled892 returns all mentionable mentions893 when `disable_all_mention` FF is disabled894 returns all mentionable mentions895 load mentions896 behaves like load mentions from DB897 load stored mentions (when `disable_all_mention` is disabled)898 when stored user mention contains ids of inexistent records899 filters out inexistent mentions900 when private projects and groups are mentioned901 when user has no access to some mentions902 filters out inaccessible mentions903 when user has access to all mentions904 returns all mentions905 when `disable_all_mention` is enabled906 load stored mentions907 when stored user mention contains ids of inexistent records908 filters out inexistent mentions909 when private projects and groups are mentioned910 when user has no access to some mentions911 filters out inaccessible mentions912 when user has access to the private project and group mentions913 returns all mentions914Snippet Mentionable915 #store_mentions!916 behaves like mentions in description917 when storing user mentions918 when mentionable description has no mentions919 stores no mentions920 when mentionable description contains mentions921 when `disable_all_mention` FF is disabled922 stores mentions923 when `disable_all_mention` FF is enabled924 stores mentions925 behaves like mentions in notes926 when mentionable notes contain mentions927 when `disable_all_mention` FF is enabled928 returns all mentionable mentions929 when `disable_all_mention` FF is disabled930 returns all mentionable mentions931 load mentions932 behaves like load mentions from DB933 load stored mentions (when `disable_all_mention` is disabled)934 when stored user mention contains ids of inexistent records935 filters out inexistent mentions936 when private projects and groups are mentioned937 when user has no access to some mentions938 filters out inaccessible mentions939 when user has access to all mentions940 returns all mentions941 when `disable_all_mention` is enabled942 load stored mentions943 when stored user mention contains ids of inexistent records944 filters out inexistent mentions945 when private projects and groups are mentioned946 when user has no access to some mentions947 filters out inaccessible mentions948 when user has access to the private project and group mentions949 returns all mentions950PersonalSnippet Mentionable951 #store_mentions!952 behaves like mentions in description953 when storing user mentions954 when mentionable description has no mentions955 stores no mentions956 when mentionable description contains mentions957 when `disable_all_mention` FF is disabled958 stores mentions959 when `disable_all_mention` FF is enabled960 stores mentions961 behaves like mentions in notes962 when mentionable notes contain mentions963 when `disable_all_mention` FF is enabled964 returns all mentionable mentions965 when `disable_all_mention` FF is disabled966 returns all mentionable mentions967 load mentions968 behaves like load mentions from DB969 load stored mentions (when `disable_all_mention` is disabled)970 when stored user mention contains ids of inexistent records971 filters out inexistent mentions972 when private projects and groups are mentioned973 when user has no access to some mentions974 filters out inaccessible mentions975 when user has access to all mentions976 returns all mentions977 when `disable_all_mention` is enabled978 load stored mentions979 when stored user mention contains ids of inexistent records980 filters out inexistent mentions981 when private projects and groups are mentioned982 when user has no access to some mentions983 filters out inaccessible mentions984 when user has access to the private project and group mentions985 returns all mentions986DesignManagement::Design987 #store_mentions!988 behaves like mentions in notes989 when mentionable notes contain mentions990 when `disable_all_mention` FF is enabled991 returns all mentionable mentions992 when `disable_all_mention` FF is disabled993 returns all mentionable mentions994 load mentions995 behaves like load mentions from DB996 load stored mentions (when `disable_all_mention` is disabled)997 when stored user mention contains ids of inexistent records998 filters out inexistent mentions999 when private projects and groups are mentioned1000 when user has no access to some mentions1001 filters out inaccessible mentions1002 when user has access to all mentions1003 returns all mentions1004 when `disable_all_mention` is enabled1005 load stored mentions1006 when stored user mention contains ids of inexistent records1007 filters out inexistent mentions1008 when private projects and groups are mentioned1009 when user has no access to some mentions1010 filters out inaccessible mentions1011 when user has access to the private project and group mentions1012 returns all mentions1013Gitlab::ImportExport::Group::TreeRestorer1014 restore group tree1015 has the group description1016 has group labels1017 has badges1018 has milestones1019 has group children1020 has group members1021 issue boards1022 has issue boards1023 has board label lists1024 child with no parent1025 captures import failures when a child group does not have a valid parent_id1026 when child group creation fails1027 captures import failure1028 excluded attributes1029 does not import root group name1030 does not import root group path1031 does not allow override of excluded attributes1032 does not allow override of excluded attributes1033 does not allow override of excluded attributes1034 does not allow override of excluded attributes1035 does not allow override of excluded attributes1036 does not allow override of excluded attributes1037 does not allow override of excluded attributes1038 does not allow override of excluded attributes1039 group.json file access check1040 does not read a symlink1041 group visibility levels1042 when the @top_level_group is the destination_group1043 when visibility level is public1044 imports all subgroups as public1045 when visibility level is private1046 imports all subgroups as private1047 when visibility level is internal1048 imports all subgroups as internal1049 when the destination_group is the @top_level_group.parent1050 when source level is public1051 imports all subgroups as public1052 when source level is private1053 imports all subgroups as private1054 when source level is internal1055 imports all subgroups as internal1056 when the visibility level is restricted1057 updates the visibility_level1058 when there are nested subgroups1059 when destination level is :public1060 imports all subgroups with original visibility_level1061 when destination level is :internal1062 imports non-public subgroups with original level and public subgroups as internal1063 when destination level is :private1064 imports all subgroups as private1065ApplicationSettings::UpdateService1066 updating terms1067 when the passed terms are blank1068 does not create terms1069 when passing terms1070 creates the terms1071 does not create terms if they are the same as the existing ones1072 updates terms if they already existed1073 only queries once when the terms are changed1074 updating outbound_local_requests_whitelist1075 when params is blank1076 does not add to allowlist1077 when param add_to_outbound_local_requests_whitelist contains values1078 adds to allowlist1079 when param outbound_local_requests_allowlist_raw is passed1080 overwrites the existing allowlist1081 markdown cache invalidators1082 behaves like invalidates markdown cache1083 increments cache1084 behaves like invalidates markdown cache1085 increments cache1086 behaves like invalidates markdown cache1087 increments cache1088 behaves like invalidates markdown cache1089 increments cache1090 behaves like invalidates markdown cache1091 increments cache1092 when also setting the local_markdown_version1093 does not increment1094 do not invalidate if value does not change1095 does not increment1096 performance bar settings1097 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true1098 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1099 adds errors to the model for invalid params1100 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true1101 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1102 adds errors to the model for invalid params1103 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: nil, previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true1104 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1105 adds errors to the model for invalid params1106 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: nil, previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true1107 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1108 adds errors to the model for invalid params1109 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: false1110 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1111 adds errors to the model for invalid params1112 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: 42000000, expected_valid: false1113 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1114 adds errors to the model for invalid params1115 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: 42000000, expected_valid: true1116 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1117 adds errors to the model for invalid params1118 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "group_b", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: 43000000, expected_valid: true1119 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1120 adds errors to the model for invalid params1121 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "group_b/", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: 43000000, expected_valid: true1122 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1123 adds errors to the model for invalid params1124 params_performance_bar_enabled: true, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: 42000000, expected_valid: true1125 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1126 adds errors to the model for invalid params1127 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true1128 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1129 adds errors to the model for invalid params1130 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true1131 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1132 adds errors to the model for invalid params1133 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: nil, previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true1134 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1135 adds errors to the model for invalid params1136 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: nil, previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true1137 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1138 adds errors to the model for invalid params1139 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true1140 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1141 adds errors to the model for invalid params1142 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true1143 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1144 adds errors to the model for invalid params1145 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true1146 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1147 adds errors to the model for invalid params1148 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "group_b", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true1149 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1150 adds errors to the model for invalid params1151 params_performance_bar_enabled: false, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: 42000000, expected_performance_bar_allowed_group_id: nil, expected_valid: true1152 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1153 adds errors to the model for invalid params1154 params_performance_bar_enabled: nil, params_performance_bar_allowed_group_path: "", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: true1155 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1156 adds errors to the model for invalid params1157 params_performance_bar_enabled: nil, params_performance_bar_allowed_group_path: "foo", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: nil, expected_valid: false1158 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1159 adds errors to the model for invalid params1160 params_performance_bar_enabled: nil, params_performance_bar_allowed_group_path: "group_a", previous_performance_bar_allowed_group_id: nil, expected_performance_bar_allowed_group_id: 42000000, expected_valid: true1161 sets performance_bar_allowed_group_id when present and performance_bar_enabled == true1162 adds errors to the model for invalid params1163 when :performance_bar_allowed_group_path is not present1164 does not change the performance bar settings1165 when :performance_bar_enabled is not present1166 implicitly defaults to true1167 when external authorization is enabled1168 does not validate labels if external authorization gets disabled1169 does validate labels if external authorization gets enabled1170 does validate labels if external authorization is left unchanged1171 does not save the settings with an error if the service denies access1172 saves the setting when the user has access to the label1173 does not validate the label if it was not passed1174 when raw_blob_request_limit is passsed1175 updates raw_blob_request_limit value1176 when default_branch_protection is updated1177 updates default_branch_protection_defaults from the default_branch_protection param1178 when protected path settings are passed1179 updates protected path settings1180 when general rate limits are passed1181 updates general throttle settings1182 when package registry rate limits are passed1183 updates package registry throttle settings1184 when files API rate limits are passed1185 updates files API throttle settings1186 when deprecated API rate limits are passed1187 updates deprecated API throttle settings1188 when git lfs rate limits are passed1189 updates git lfs throttle settings1190 when issues_create_limit is passed1191 updates issues_create_limit value1192 when users_get_by_id_limit and users_get_by_id_limit_allowlist_raw are passed1193 updates users_get_by_id_limit and users_get_by_id_limit_allowlist value1194 when require_admin_approval_after_user_signup changes1195 when it goes from enabled to disabled1196 calls ApproveBlockedPendingApprovalUsersWorker1197 when it goes from disabled to enabled1198 does not call ApproveBlockedPendingApprovalUsersWorker1199Boards::Lists::MoveService1200 #execute1201 when board parent is a project1202 behaves like lists move service1203 with complete position sequence1204 behaves like correct movement behavior1205 keeps position of lists when list type is closed1206 when list type is set to label1207 does not reorder lists when new position is nil1208 does not reorder lists when new position is equal to old position1209 does not reorder lists when new position is negative1210 does not reorder lists when new position is bigger then last position1211 moves the list to the first position when new position is equal to first position1212 moves the list to the last position when new position is equal to last position1213 moves the list to the correct position when new position is greater than old position (third list)1214 moves the list to the correct position when new position is lower than old position (second list)1215 with corrupted position sequence1216 behaves like correct movement behavior1217 keeps position of lists when list type is closed1218 when list type is set to label1219 does not reorder lists when new position is nil1220 does not reorder lists when new position is equal to old position1221 does not reorder lists when new position is negative1222 does not reorder lists when new position is bigger then last position1223 moves the list to the first position when new position is equal to first position1224 moves the list to the last position when new position is equal to last position1225 moves the list to the correct position when new position is greater than old position (third list)1226 moves the list to the correct position when new position is lower than old position (second list)1227 when board parent is a group1228 behaves like lists move service1229 with complete position sequence1230 behaves like correct movement behavior1231 keeps position of lists when list type is closed1232 when list type is set to label1233 does not reorder lists when new position is nil1234 does not reorder lists when new position is equal to old position1235 does not reorder lists when new position is negative1236 does not reorder lists when new position is bigger then last position1237 moves the list to the first position when new position is equal to first position1238 moves the list to the last position when new position is equal to last position1239 moves the list to the correct position when new position is greater than old position (third list)1240 moves the list to the correct position when new position is lower than old position (second list)1241 with corrupted position sequence1242 behaves like correct movement behavior1243 keeps position of lists when list type is closed1244 when list type is set to label1245 does not reorder lists when new position is nil1246 does not reorder lists when new position is equal to old position1247 does not reorder lists when new position is negative1248 does not reorder lists when new position is bigger then last position1249 moves the list to the first position when new position is equal to first position1250 moves the list to the last position when new position is equal to last position1251 moves the list to the correct position when new position is greater than old position (third list)1252 moves the list to the correct position when new position is lower than old position (second list)1253Milestone1254 modules1255 with a project1256 behaves like AtomicInternalId1257 .has_internal_id1258 Module inclusion1259 is expected to includes the AtomicInternalId module1260 Validation1261 when presence validation is required1262 when creating an object1263 raises an error if the internal id is blank1264 when updating an object1265 raises an error if the internal id is blank1266 when presence validation is not required1267 when creating an object1268 does not raise an error if the internal id is blank (PENDING: No reason given)1269 when updating an object1270 does not raise an error if the internal id is blank (PENDING: No reason given)1271 Creating an instance1272 saves a new instance properly1273 internal id generation1274 calls InternalId.generate_next and sets internal id attribute1275 does not overwrite an existing internal id1276 when the instance has an internal ID set1277 calls InternalId.update_last_value and sets the `last_value` to that of the instance1278 unsetting the instance internal id on rollback1279 when the internal id has been changed1280 when the internal id is automatically set1281 clears it on the instance1282 when the internal id is manually set1283 does not clear it on the instance1284 when the internal id has not been changed1285 preserves the value on the instance1286 supply of internal ids1287 provides a persistent supply of IID values, sensitive to the current state1288 #reset_scope_internal_id_attribute1289 rewinds the allocated IID1290 allocates the same IID1291 with a group1292 behaves like AtomicInternalId1293 .has_internal_id1294 Module inclusion1295 is expected to includes the AtomicInternalId module1296 Validation1297 when presence validation is required1298 when creating an object1299 raises an error if the internal id is blank1300 when updating an object1301 raises an error if the internal id is blank1302 when presence validation is not required1303 when creating an object1304 does not raise an error if the internal id is blank (PENDING: No reason given)1305 when updating an object1306 does not raise an error if the internal id is blank (PENDING: No reason given)1307 Creating an instance1308 saves a new instance properly1309 internal id generation1310 calls InternalId.generate_next and sets internal id attribute1311 does not overwrite an existing internal id1312 when the instance has an internal ID set1313 calls InternalId.update_last_value and sets the `last_value` to that of the instance1314 unsetting the instance internal id on rollback1315 when the internal id has been changed1316 when the internal id is automatically set1317 clears it on the instance1318 when the internal id is manually set1319 does not clear it on the instance1320 when the internal id has not been changed1321 preserves the value on the instance1322 supply of internal ids1323 provides a persistent supply of IID values, sensitive to the current state1324 #reset_scope_internal_id_attribute1325 rewinds the allocated IID1326 allocates the same IID1327 behaves like a timebox1328 Validation1329 start_date1330 adds an error when start_date is greater then due_date1331 adds an error when start_date is greater than 9999-12-311332 due_date1333 adds an error when due_date is greater than 9999-12-311334 Associations1335 is expected to have many issues1336 is expected to have many merge_requests1337 is expected to have many labels through issues1338 #timebox_name1339 returns the name of the model1340 #safe_title1341 normalizes the title for use as a slug1342 #title1343 sanitizes title1344 #to_ability_name1345 returns timebox1346 .within_timeframe1347 can find overlapping timeboxes1348 #uniqueness_of_title1349 per project1350 does not accept the same title in a project twice1351 accepts the same title in another project1352 per group1353 does not accept the same title in a group twice1354 does not accept the same title of a child project timebox1355 MilestoneStruct#serializable_hash1356 presents the predefined milestone as a hash1357 Validation1358 title1359 is expected to validate that :title cannot be empty/falsy1360 is invalid if title would be empty after sanitation1361 milestone_releases1362 when it is tied to a release for another project1363 creates a validation error1364 when it is tied to a release for the same project1365 is valid1366 #parent_type_check1367 is invalid if it has both project_id and group_id1368 Associations1369 is expected to belong to project required: false1370 is expected to belong to group required: false1371 is expected to have many releases1372 is expected to have many milestone_releases1373 .predefined_id?1374 returns true for a predefined Milestone ID1375 returns false for a Milestone ID that is not predefined1376 .order_by_name_asc1377 sorts by name ascending1378 .reorder_by_due_date_asc1379 reorders the input relation1380 behaves like within_timeframe scope1381 .within_timeframe1382 returns resources with start_date and/or end_date between timeframe1383 returns resources which starts before the timeframe1384 returns resources which ends after the timeframe1385 #percent_complete1386 does not count open issues1387 counts closed issues1388 recovers from dividing by zero1389 #expired? and #expired1390 expired1391 returns true when due_date is in the past1392 not expired1393 returns false when due_date is in the future1394 #upcoming?1395 returns true when start_date is in the future1396 returns false when start_date is in the past1397 #can_be_closed?1398 returns true if milestone active and all nested issues closed1399 returns false if milestone active and not all nested issues closed1400 #to_ability_name1401 returns milestone1402 .search1403 returns milestones with a matching title1404 returns milestones with a partially matching title1405 returns milestones with a matching title regardless of the casing1406 returns milestones with a matching description1407 returns milestones with a partially matching description1408 returns milestones with a matching description regardless of the casing1409 #search_title1410 returns milestones with a matching title1411 returns milestones with a partially matching title1412 returns milestones with a matching title regardless of the casing1413 searches only on the title and ignores milestones with a matching description1414 behaves like #for_projects_and_groups1415 #for_projects_and_groups1416 returns no records if projects and groups are nil1417 ids as params1418 behaves like filters by projects and groups1419 returns milestones filtered by project1420 returns milestones filtered by group1421 returns milestones filtered by both project and group1422 relations as params1423 behaves like filters by projects and groups1424 returns milestones filtered by project1425 returns milestones filtered by group1426 returns milestones filtered by both project and group1427 objects as params1428 behaves like filters by projects and groups1429 returns milestones filtered by project1430 returns milestones filtered by group1431 returns milestones filtered by both project and group1432 .upcoming_ids1433 returns the next upcoming open milestone ID for each project and group1434 when the projects and groups have no open upcoming milestones1435 returns no results1436 #to_reference1437 for a project milestone1438 returns a String reference to the object1439 returns a reference by name when the format is set to :name1440 supports a cross-project reference1441 for a group milestone1442 returns a group milestone reference with a default format1443 returns a reference by name when the format is set to :name1444 does supports cross-project references within a group1445 raises an error when using iid format1446 #reference_link_text1447 returns the title with the reference prefix1448 #participants1449 returns participants without duplicates1450 .sort_with_expired_last1451 ordering by due_date ascending1452 sorts by due date in ascending order (ties broken by id in desc order)1453 ordering by due_date descending1454 sorts by due date in descending order (ties broken by id in desc order)1455 .sort_by_attribute1456 ordering by name ascending1457 sorts by title ascending1458 ordering by name descending1459 sorts by title descending1460 .states_count1461 when the projects have milestones1462 returns the quantity of milestones in each possible state1463 when the projects do not have milestones1464 returns 0 as the quantity of global milestones in each state1465 .reference_pattern1466 is expected to match "gitlab-org/gitlab-ce%123"1467 is expected to match "gitlab-org/gitlab-ce%\"my-milestone\""1468 .link_reference_pattern1469 is expected to match "http://localhost/gitlab-org/gitlab-foss/milestones/123"1470 is expected to match "http://localhost/gitlab-org/gitlab-foss/-/milestones/123"1471 is expected not to match "http://localhost/gitlab-org/gitlab-foss/issues/123"1472 is expected not to match "gitlab-org/gitlab-ce/milestones/123"1473 #merge_requests_enabled?1474 per project1475 is true for projects with MRs enabled1476 is false for projects with MRs disabled1477 is false for projects with repository disabled1478 per group1479 is always true for groups, for performance reasons1480 #resource_parent1481 when group is present1482 returns the group1483 when project is present1484 returns the project1485 #parent1486 with group1487 returns the expected parent1488 with project1489 returns the expected parent1490 #subgroup_milestone1491 parent is subgroup1492 returns true1493 parent is not subgroup1494 returns false1495 #project_milestone?1496 when project_id is present1497 returns true1498 when project_id is not present1499 returns false1500 #group_milestone?1501 when group_id is present1502 returns true1503 when group_id is not present1504 returns false1505 #lock_version1506 ensures that lock_version and optimistic locking is enabled1507 #check_for_spam?1508 when spammable attribute title has changed1509 is expected to eq true1510 when spammable attribute description has changed1511 is expected to eq true1512 when spammable attribute has changed but parent is private1513 is expected to eq false1514 when no spammable attribute has changed1515 is expected to eq false1516ObjectStorage::DirectUpload1517 #has_length1518 is known1519 maximum size is not required1520 is unknown1521 and maximum size is specified1522 does not raise an error1523 and maximum size is not specified1524 raises an error1525 #get_url1526 when AWS is used1527 calls the proper method1528 when Google is used1529 calls the proper method1530 #to_hash1531 when AWS is used1532 when length is known1533 behaves like a valid S3 upload without multipart data1534 behaves like a valid S3 upload1535 sets Workhorse client data1536 behaves like a valid upload1537 returns valid structure1538 with an object with UTF-8 characters1539 returns an escaped path1540 when no region is specified1541 defaults to us-east-11542 when V2 signatures are used1543 does not enable Workhorse client1544 when V4 signatures are used1545 enables the Workhorse client for instance profiles1546 when consolidated settings are used1547 enables the Workhorse client1548 when only server side encryption is used1549 sends server side encryption settings1550 when SSE-KMS is used1551 sends server side encryption settings1552 behaves like a valid upload without multipart data1553 returns valid structure1554 behaves like a valid upload1555 returns valid structure1556 with an object with UTF-8 characters1557 returns an escaped path1558 when path style is true1559 behaves like a valid S3 upload without multipart data1560 behaves like a valid S3 upload1561 sets Workhorse client data1562 behaves like a valid upload1563 returns valid structure1564 with an object with UTF-8 characters1565 returns an escaped path1566 when no region is specified1567 defaults to us-east-11568 when V2 signatures are used1569 does not enable Workhorse client1570 when V4 signatures are used1571 enables the Workhorse client for instance profiles1572 when consolidated settings are used1573 enables the Workhorse client1574 when only server side encryption is used1575 sends server side encryption settings1576 when SSE-KMS is used1577 sends server side encryption settings1578 behaves like a valid upload without multipart data1579 returns valid structure1580 behaves like a valid upload1581 returns valid structure1582 with an object with UTF-8 characters1583 returns an escaped path1584 when IAM profile is true1585 behaves like a valid S3 upload without multipart data1586 behaves like a valid S3 upload1587 sets Workhorse client data1588 behaves like a valid upload1589 returns valid structure1590 with an object with UTF-8 characters1591 returns an escaped path1592 when no region is specified1593 defaults to us-east-11594 when V2 signatures are used1595 does not enable Workhorse client1596 when V4 signatures are used1597 enables the Workhorse client for instance profiles1598 when consolidated settings are used1599 enables the Workhorse client1600 when only server side encryption is used1601 sends server side encryption settings1602 when SSE-KMS is used1603 sends server side encryption settings1604 behaves like a valid upload without multipart data1605 returns valid structure1606 behaves like a valid upload1607 returns valid structure1608 with an object with UTF-8 characters1609 returns an escaped path1610 when IMSDv2 is available1611 behaves like a valid S3 upload without multipart data1612 behaves like a valid S3 upload1613 sets Workhorse client data1614 behaves like a valid upload1615 returns valid structure1616 with an object with UTF-8 characters1617 returns an escaped path1618 when no region is specified1619 defaults to us-east-11620 when V2 signatures are used1621 does not enable Workhorse client1622 when V4 signatures are used1623 enables the Workhorse client for instance profiles1624 when consolidated settings are used1625 enables the Workhorse client1626 when only server side encryption is used1627 sends server side encryption settings1628 when SSE-KMS is used1629 sends server side encryption settings1630 behaves like a valid upload without multipart data1631 returns valid structure1632 behaves like a valid upload1633 returns valid structure1634 with an object with UTF-8 characters1635 returns an escaped path1636 when length is unknown1637 behaves like a valid S3 upload with multipart data1638 behaves like a valid S3 upload1639 sets Workhorse client data1640 behaves like a valid upload1641 returns valid structure1642 with an object with UTF-8 characters1643 returns an escaped path1644 when no region is specified1645 defaults to us-east-11646 when V2 signatures are used1647 does not enable Workhorse client1648 when V4 signatures are used1649 enables the Workhorse client for instance profiles1650 when consolidated settings are used1651 enables the Workhorse client1652 when only server side encryption is used1653 sends server side encryption settings1654 when SSE-KMS is used1655 sends server side encryption settings1656 behaves like a valid upload with multipart data1657 returns valid structure1658 uses only strings in query parameters1659 behaves like a valid upload1660 returns valid structure1661 with an object with UTF-8 characters1662 returns an escaped path1663 when maximum upload size is 01664 returns maximum number of parts1665 part size is minimum, 5MB1666 when maximum upload size is < 5 MiB1667 returns only 1 part1668 part size is minimum, 5MB1669 when maximum upload size is 10MB1670 returns only 2 parts1671 part size is minimum, 5MB1672 when maximum upload size is 12MB1673 returns only 3 parts1674 part size is rounded-up to 5MB1675 when maximum upload size is 49GB1676 returns maximum, 100 parts1677 part size is rounded-up to 5MB1678 when Google is used1679 with google_application_default1680 when length is known1681 behaves like a valid Google upload1682 enables the Workhorse client1683 behaves like a valid upload1684 returns valid structure1685 with an object with UTF-8 characters1686 returns an escaped path1687 with workhorse_google_client disabled1688 does not set Workhorse client data1689 behaves like a valid upload without multipart data1690 returns valid structure1691 behaves like a valid upload1692 returns valid structure1693 with an object with UTF-8 characters1694 returns an escaped path1695 when length is unknown1696 behaves like a valid Google upload1697 enables the Workhorse client1698 behaves like a valid upload1699 returns valid structure1700 with an object with UTF-8 characters1701 returns an escaped path1702 with workhorse_google_client disabled1703 does not set Workhorse client data1704 behaves like a valid upload without multipart data1705 returns valid structure1706 behaves like a valid upload1707 returns valid structure1708 with an object with UTF-8 characters1709 returns an escaped path1710 with google_json_key_location1711 when length is known1712 behaves like a valid Google upload1713 enables the Workhorse client1714 behaves like a valid upload1715 returns valid structure1716 with an object with UTF-8 characters1717 returns an escaped path1718 with workhorse_google_client disabled1719 does not set Workhorse client data1720 behaves like a valid upload without multipart data1721 returns valid structure1722 behaves like a valid upload1723 returns valid structure1724 with an object with UTF-8 characters1725 returns an escaped path1726 when length is unknown1727 behaves like a valid Google upload1728 enables the Workhorse client1729 behaves like a valid upload1730 returns valid structure1731 with an object with UTF-8 characters1732 returns an escaped path1733 with workhorse_google_client disabled1734 does not set Workhorse client data1735 behaves like a valid upload without multipart data1736 returns valid structure1737 behaves like a valid upload1738 returns valid structure1739 with an object with UTF-8 characters1740 returns an escaped path1741 with google_json_key_string1742 when length is known1743 behaves like a valid Google upload1744 enables the Workhorse client1745 behaves like a valid upload1746 returns valid structure1747 with an object with UTF-8 characters1748 returns an escaped path1749 with workhorse_google_client disabled1750 does not set Workhorse client data1751 behaves like a valid upload without multipart data1752 returns valid structure1753 behaves like a valid upload1754 returns valid structure1755 with an object with UTF-8 characters1756 returns an escaped path1757 when length is unknown1758 behaves like a valid Google upload1759 enables the Workhorse client1760 behaves like a valid upload1761 returns valid structure1762 with an object with UTF-8 characters1763 returns an escaped path1764 with workhorse_google_client disabled1765 does not set Workhorse client data1766 behaves like a valid upload without multipart data1767 returns valid structure1768 behaves like a valid upload1769 returns valid structure1770 with an object with UTF-8 characters1771 returns an escaped path1772 when AzureRM is used1773 behaves like a valid AzureRM upload1774 enables the Workhorse client1775 behaves like a valid upload1776 returns valid structure1777 with an object with UTF-8 characters1778 returns an escaped path1779 behaves like a valid upload without multipart data1780 returns valid structure1781 behaves like a valid upload1782 returns valid structure1783 with an object with UTF-8 characters1784 returns an escaped path1785 when a custom storage domain is used1786 behaves like a valid AzureRM upload1787 enables the Workhorse client1788 behaves like a valid upload1789 returns valid structure1790 with an object with UTF-8 characters1791 returns an escaped path1792 #use_workhorse_google_client?1793 with consolidated_settings1794 with google_application_default1795 is expected to be truthy1796 with google_json_key_string1797 is expected to be truthy1798 with google_json_key_location1799 is expected to be truthy1800 without any google setting1801 is expected to be falsey1802 without consolidated_settings1803 is expected to be falsey1804Gitlab::UrlBlocker1805 #validate!1806 when the URL hostname is a domain1807 when domain can be resolved1808 behaves like validates URI and hostname1809 runs the url validations1810 #validate_url_with_proxy!1811 when URI is nil1812 behaves like validates URI and hostname1813 runs the url validations1814 behaves like a URI exempt from `deny_all_requests_except_allowed`1815 does not block the request1816 when URI is internal1817 behaves like validates URI and hostname1818 runs the url validations1819 behaves like a URI exempt from `deny_all_requests_except_allowed`1820 does not block the request1821 when URI is for a local object storage1822 when allow_object_storage is true1823 with a local domain name1824 behaves like validates URI and hostname1825 runs the url validations1826 behaves like a URI exempt from `deny_all_requests_except_allowed`1827 does not block the request1828 with an IP address1829 behaves like validates URI and hostname1830 runs the url validations1831 behaves like a URI exempt from `deny_all_requests_except_allowed`1832 does not block the request1833 when LFS object storage is enabled1834 when LFS is disabled1835 raises an error1836 when LFS is enabled with no connection endpoint1837 raises an error1838 when allow_object_storage is false1839 with a local domain name1840 raises an error1841 with an IP address1842 raises an error1843 when the URL hostname is a domain1844 when domain can be resolved1845 behaves like validates URI and hostname1846 runs the url validations1847 behaves like a URI denied by `deny_all_requests_except_allowed`1848 when instance setting is enabled1849 blocks the request1850 when instance setting is not enabled1851 does not block the request1852 when passed as an argument1853 when argument is a proc that evaluates to true1854 blocks the request1855 when argument is a proc that evaluates to false1856 does not block the request1857 when argument is true1858 blocks the request1859 when argument is false1860 does not block the request1861 when domain cannot be resolved1862 raises an error1863 with HTTP_PROXY1864 behaves like validates URI and hostname1865 runs the url validations1866 with no_proxy1867 behaves like validates URI and hostname1868 runs the url validations1869 when domain is too long1870 raises an error1871 when the URL hostname is an IP address1872 behaves like validates URI and hostname1873 runs the url validations1874 behaves like a URI denied by `deny_all_requests_except_allowed`1875 when instance setting is enabled1876 blocks the request1877 when instance setting is not enabled1878 does not block the request1879 when passed as an argument1880 when argument is a proc that evaluates to true1881 blocks the request1882 when argument is a proc that evaluates to false1883 does not block the request1884 when argument is true1885 blocks the request1886 when argument is false1887 does not block the request1888 when the address is invalid1889 raises an error1890 when DNS rebinding protection with IP allowed1891 behaves like validates URI and hostname1892 runs the url validations1893 behaves like a URI exempt from `deny_all_requests_except_allowed`1894 does not block the request1895 with HTTP_PROXY1896 behaves like validates URI and hostname1897 runs the url validations1898 when domain is in no_proxy env1899 behaves like validates URI and hostname1900 runs the url validations1901 with disabled DNS rebinding protection1902 when URI is internal1903 behaves like validates URI and hostname1904 runs the url validations1905 behaves like a URI exempt from `deny_all_requests_except_allowed`1906 does not block the request1907 when the URL hostname is a domain1908 when domain can be resolved1909 behaves like validates URI and hostname1910 runs the url validations1911 behaves like a URI denied by `deny_all_requests_except_allowed`1912 when instance setting is enabled1913 blocks the request1914 when instance setting is not enabled1915 does not block the request1916 when passed as an argument1917 when argument is a proc that evaluates to true1918 blocks the request1919 when argument is a proc that evaluates to false1920 does not block the request1921 when argument is true1922 blocks the request1923 when argument is false1924 does not block the request1925 when domain cannot be resolved1926 behaves like validates URI and hostname1927 runs the url validations1928 behaves like a URI denied by `deny_all_requests_except_allowed`1929 when instance setting is enabled1930 blocks the request1931 when instance setting is not enabled1932 does not block the request1933 when passed as an argument1934 when argument is a proc that evaluates to true1935 blocks the request1936 when argument is a proc that evaluates to false1937 does not block the request1938 when argument is true1939 blocks the request1940 when argument is false1941 does not block the request1942 when the URL hostname is an IP address1943 behaves like validates URI and hostname1944 runs the url validations1945 behaves like a URI denied by `deny_all_requests_except_allowed`1946 when instance setting is enabled1947 blocks the request1948 when instance setting is not enabled1949 does not block the request1950 when passed as an argument1951 when argument is a proc that evaluates to true1952 blocks the request1953 when argument is a proc that evaluates to false1954 does not block the request1955 when argument is true1956 blocks the request1957 when argument is false1958 does not block the request1959 when it is invalid1960 behaves like validates URI and hostname1961 runs the url validations1962 behaves like a URI denied by `deny_all_requests_except_allowed`1963 when instance setting is enabled1964 blocks the request1965 when instance setting is not enabled1966 does not block the request1967 when passed as an argument1968 when argument is a proc that evaluates to true1969 blocks the request1970 when argument is a proc that evaluates to false1971 does not block the request1972 when argument is true1973 blocks the request1974 when argument is false1975 does not block the request1976 #blocked_url?1977 allows imports from configured web host and port1978 allows mirroring from configured SSH host and port1979 returns true for bad localhost hostname1980 returns true for bad port1981 returns true for bad scheme1982 returns true for bad protocol on configured web/SSH host and ports1983 returns true for localhost IPs1984 returns true for loopback IP1985 returns true for alternative version of 127.0.0.1 (0177.1)1986 returns true for alternative version of 127.0.0.1 (017700000001)1987 returns true for alternative version of 127.0.0.1 (0x7f.1)1988 returns true for alternative version of 127.0.0.1 (0x7f.0.0.1)1989 returns true for alternative version of 127.0.0.1 (0x7f000001)1990 returns true for alternative version of 127.0.0.1 (2130706433)1991 returns true for alternative version of 127.0.0.1 (127.000.000.001)1992 returns true for alternative version of 127.0.0.1 (127.0.1)1993 returns true for a non-alphanumeric hostname1994 returns true for invalid URL1995 returns false for legitimate URL1996 blocks urls with invalid ip address1997 blocks urls whose hostname cannot be resolved1998 with ipv6 mapped address1999 returns true for localhost IPs2000 returns true for loopback IPs2001 allow_local_network2002 when true (default)2003 behaves like allows local requests2004 does not block urls from private networks2005 allows localhost endpoints2006 allows loopback endpoints2007 allows IPv4 link-local endpoints2008 allows IPv6 link-local endpoints2009 allows limited broadcast address 255.255.255.255 and variants2010 when false2011 blocks urls from private networks2012 blocks IPv4 link-local endpoints2013 blocks IPv6 link-local endpoints2014 blocks limited broadcast address 255.255.255.255 and variants2015 when local domain/IP is allowed2016 with IPs in allowlist2017 allows IP when dns_rebind_protection is disabled2018 allows the limited broadcast address 255.255.255.2552019 behaves like allows local requests2020 does not block urls from private networks2021 allows localhost endpoints2022 allows loopback endpoints2023 allows IPv4 link-local endpoints2024 allows IPv6 link-local endpoints2025 allows limited broadcast address 255.255.255.255 and variants2026 with domains in allowlist2027 allows domains present in allowlist2028 works with unicode and idna encoded domains2029 when the domain cannot be resolved2030 behaves like dns rebinding checks2031 dns_rebinding_setting2032 when enabled2033 behaves like allowlists the domain2034 is expected not to be blocked url "http://foobar.x" and {:dns_rebind_protection=>true, :schemes=>["http", "https"]}2035 when disabled2036 behaves like allowlists the domain2037 is expected not to be blocked url "http://foobar.x" and {:dns_rebind_protection=>false, :schemes=>["http", "https"]}2038 when the domain can be resolved2039 behaves like dns rebinding checks2040 dns_rebinding_setting2041 when enabled2042 behaves like allowlists the domain2043 is expected not to be blocked url "http://example.com" and {:dns_rebind_protection=>true, :schemes=>["http", "https"]}2044 when disabled2045 behaves like allowlists the domain2046 is expected not to be blocked url "http://example.com" and {:dns_rebind_protection=>false, :schemes=>["http", "https"]}2047 with ports2048 allows domain with port when resolved ip has port allowed2049 enforce_user2050 when false (default)2051 does not block urls with a non-alphanumeric username2052 when true2053 blocks urls with a non-alphanumeric username2054 when ascii_only is true2055 returns true for unicode domain2056 returns true for unicode tld2057 returns true for unicode path2058 returns true for IDNA deviations2059 when gitlab is running on a non-default port2060 returns true for url targeting the wrong port2061 does not block url on gitlab port2062 #validate_hostname2063 does not raise error for valid Ip addresses2064AlertManagement::Alert2065 associations2066 is expected to belong to project required: false2067 is expected to belong to issue optional: true2068 is expected to belong to prometheus_alert optional: true2069 is expected to belong to environment optional: true2070 is expected to have many assignees through alert_assignees2071 is expected to have many notes inverse_of => noteable2072 is expected to have many ordered_notes class_name => Note inverse_of => noteable2073 is expected to have many user_mentions class_name => AlertManagement::AlertUserMention inverse_of => alert2074 validations2075 is expected to validate that :title cannot be empty/falsy2076 is expected to validate that :events cannot be empty/falsy2077 is expected to validate that :severity cannot be empty/falsy2078 is expected to validate that :status cannot be empty/falsy2079 is expected to validate that :started_at cannot be empty/falsy2080 is expected to validate that the length of :title is at most 2002081 is expected to validate that the length of :description is at most 10002082 is expected to validate that the length of :service is at most 1002083 is expected to validate that the length of :monitoring_tool is at most 1002084 fingerprint2085 adding an alert with the same fingerprint2086 same project, various states2087 existing_status_event: :resolve, new_status: :triggered, valid: true2088 is expected to be valid2089 existing_status_event: :resolve, new_status: :acknowledged, valid: true2090 is expected to be valid2091 existing_status_event: :resolve, new_status: :ignored, valid: true2092 is expected to be valid2093 existing_status_event: :resolve, new_status: :resolved, valid: true2094 is expected to be valid2095 existing_status_event: :trigger, new_status: :triggered, valid: false2096 is expected to be invalid2097 existing_status_event: :trigger, new_status: :acknowledged, valid: false2098 is expected to be invalid2099 existing_status_event: :trigger, new_status: :ignored, valid: false2100 is expected to be invalid2101 existing_status_event: :trigger, new_status: :resolved, valid: true2102 is expected to be valid2103 existing_status_event: :acknowledge, new_status: :triggered, valid: false2104 is expected to be invalid2105 existing_status_event: :acknowledge, new_status: :acknowledged, valid: false2106 is expected to be invalid2107 existing_status_event: :acknowledge, new_status: :ignored, valid: false2108 is expected to be invalid2109 existing_status_event: :acknowledge, new_status: :resolved, valid: true2110 is expected to be valid2111 existing_status_event: :ignore, new_status: :triggered, valid: false2112 is expected to be invalid2113 existing_status_event: :ignore, new_status: :acknowledged, valid: false2114 is expected to be invalid2115 existing_status_event: :ignore, new_status: :ignored, valid: false2116 is expected to be invalid2117 existing_status_event: :ignore, new_status: :resolved, valid: true2118 is expected to be valid2119 different project2120 is expected to be valid2121 hosts2122 over 255 total chars2123 is expected not to be valid2124 under 255 chars2125 is expected to be valid2126 nested array2127 is expected not to be valid2128 enums2129 is expected to define :severity as an enum backed by an integer with values ‹{critical: 0, high: 1, medium: 2, low: 3, info: 4, unknown: 5}›2130 scopes2131 .for_iid2132 is expected to contain exactly #<AlertManagement::Alert id:1 namespace798/project-795^alert#1>2133 .for_fingerprint2134 is expected to contain exactly #<AlertManagement::Alert id:1 namespace798/project-795^alert#1>2135 .for_environment2136 is expected to contain exactly #<AlertManagement::Alert id:1 namespace798/project-795^alert#1>2137 .for_assignee_username2138 when matching assignee_username2139 is expected to contain exactly #<AlertManagement::Alert id:1 namespace798/project-795^alert#1>2140 when unknown assignee_username2141 is expected to be empty2142 with empty assignee_username2143 is expected to be empty2144 .order_severity_with_open_prometheus_alert2145 is expected to eq [#<AlertManagement::Alert id:8 namespace801/project-798^alert#2>, #<AlertManagement::Alert id:9 namespace801/project-798^alert#3>]2146 .counts_by_project_id2147 is expected to eq {794=>2, 795=>2}2148 .not_resolved2149 is expected to contain exactly #<AlertManagement::Alert id:2 namespace798/project-795^alert#2>, #<AlertManagement::Alert id:1 namespace798/project-795^alert#1>, and #<AlertManagement::Alert id:4 namespace799/project-796^alert#2>2150 behaves like a model including Escalatable2151 validations2152 is expected to validate that :status cannot be empty/falsy2153 when status is triggered2154 when resolved_at is blank2155 is expected to be valid2156 when resolved_at is present2157 is expected to be invalid2158 when status is acknowledged2159 when resolved_at is blank2160 is expected to be valid2161 when resolved_at is present2162 is expected to be invalid2163 when status is resolved2164 when resolved_at is blank2165 is expected to be invalid2166 when resolved_at is present2167 is expected to be valid2168 when status is ignored2169 when resolved_at is blank2170 is expected to be valid2171 when resolved_at is present2172 is expected to be invalid2173 scopes2174 .order_status2175 descending2176 is expected to eq [#<AlertManagement::Alert id:10 namespace802/project-799^alert#1>, #<AlertManagement::Alert id:11 nam...namespace804/project-801^alert#1>, #<AlertManagement::Alert id:13 namespace805/project-802^alert#1>]2177 ascending2178 is expected to eq [#<AlertManagement::Alert id:13 namespace805/project-802^alert#1>, #<AlertManagement::Alert id:12 nam...namespace803/project-800^alert#1>, #<AlertManagement::Alert id:10 namespace802/project-799^alert#1>]2179 .open2180 is expected to contain exactly #<AlertManagement::Alert id:11 namespace803/project-800^alert#1> and #<AlertManagement::Alert id:10 namespace802/project-799^alert#1>2181 .status_value2182 status: :triggered, status_value: 02183 returns status value by its name2184 status: :acknowledged, status_value: 12185 returns status value by its name2186 status: :resolved, status_value: 22187 returns status value by its name2188 status: :ignored, status_value: 32189 returns status value by its name2190 status: :unknown, status_value: nil2191 returns status value by its name2192 .status_name2193 raw_status: 0, status: :triggered2194 returns status name by its values2195 raw_status: 1, status: :acknowledged2196 returns status name by its values2197 raw_status: 2, status: :resolved2198 returns status name by its values2199 raw_status: 3, status: :ignored2200 returns status name by its values2201 raw_status: -1, status: nil2202 returns status name by its values2203 .open_status?2204 status: :triggered, is_open_status: true2205 returns true when the status is open status2206 status: :acknowledged, is_open_status: true2207 returns true when the status is open status2208 status: :resolved, is_open_status: false2209 returns true when the status is open status2210 status: :ignored, is_open_status: false2211 returns true when the status is open status2212 status: nil, is_open_status: false2213 returns true when the status is open status2214 #trigger2215 when escalatable is in triggered state2216 does not change the escalatable status2217 when escalatable is not in triggered state2218 changes the escalatable status to triggered2219 resets resolved at2220 #acknowledge2221 changes the escalatable status to acknowledged2222 resets ended at2223 #resolve2224 when escalatable is already resolved2225 does not change the escalatable status2226 when escalatable is not resolved2227 changes escalatable status to "resolved"2228 #ignore2229 changes the escalatable status to ignored2230 resets ended at2231 #status_event_for2232 for_status: :triggered, event: :trigger2233 returns event by status name2234 for_status: "triggered", event: :trigger2235 returns event by status name2236 for_status: :acknowledged, event: :acknowledge2237 returns event by status name2238 for_status: "acknowledged", event: :acknowledge2239 returns event by status name2240 for_status: :resolved, event: :resolve2241 returns event by status name2242 for_status: "resolved", event: :resolve2243 returns event by status name2244 for_status: :ignored, event: :ignore2245 returns event by status name2246 for_status: "ignored", event: :ignore2247 returns event by status name2248 for_status: :unknown, event: nil2249 returns event by status name2250 for_status: nil, event: nil2251 returns event by status name2252 for_status: "", event: nil2253 returns event by status name2254 for_status: 1, event: nil2255 returns event by status name2256 #open?2257 returns true when the status is open status2258 .counts_by_status2259 is expected to eq {:acknowledged=>1, :ignored=>1, :resolved=>1, :triggered=>1}2260 .find_unresolved_alert2261 is expected to eq #<AlertManagement::Alert id:16 namespace798/project-795^alert#4>2262 .last_prometheus_alert_by_project_id2263 returns the latest alert for each project2264 .search2265 does not contain search string2266 is expected to be empty2267 title includes query2268 is expected to contain exactly #<AlertManagement::Alert id:1 namespace798/project-795^alert#1>2269 description includes query2270 is expected to contain exactly #<AlertManagement::Alert id:1 namespace798/project-795^alert#1>2271 service includes query2272 is expected to contain exactly #<AlertManagement::Alert id:1 namespace798/project-795^alert#1>2273 monitoring tool includes query2274 is expected to contain exactly #<AlertManagement::Alert id:1 namespace798/project-795^alert#1>2275 .reference_pattern2276 is expected to match "gitlab-org/gitlab^alert#123"2277 .link_reference_pattern2278 is expected to match "http://localhost/namespace798/project-795/-/alert_management/1/details"2279 is expected not to match "http://localhost/gitlab-org/gitlab/alert_management/123"2280 is expected not to match "http://localhost/gitlab-org/gitlab/issues/123"2281 is expected not to match "gitlab-org/gitlab/-/alert_management/123"2282 .reference_valid?2283 ref: "123456", result: true2284 is expected to eq true2285 ref: "1", result: true2286 is expected to eq true2287 ref: "-1", result: false2288 is expected to eq false2289 ref: nil, result: false2290 is expected to eq false2291 ref: "123456891012345678901234567890", result: false2292 is expected to eq false2293 #to_reference2294 is expected to eq "^alert#1"2295 #register_new_event!2296 increments the events count by 12297 #resolved_at2298 is expected to eq 2023-08-18 13:12:11.461712000 +00002299 #resolved_at=2300 sets ended_at2301Gitlab::Ci::Parsers::Security::Validators::SchemaValidator2302 SUPPORTED_VERSIONS2303 matches DEPRECATED_VERSIONS keys2304 when all files under schema path are explicitly listed2305 cluster_image_scanning 15.0.02306 container_scanning 15.0.02307 coverage_fuzzing 15.0.02308 dast 15.0.02309 dependency_scanning 15.0.02310 sast 15.0.02311 secret_detection 15.0.02312 cluster_image_scanning 15.0.12313 container_scanning 15.0.12314 coverage_fuzzing 15.0.12315 dast 15.0.12316 dependency_scanning 15.0.12317 sast 15.0.12318 secret_detection 15.0.12319 cluster_image_scanning 15.0.22320 container_scanning 15.0.22321 coverage_fuzzing 15.0.22322 dast 15.0.22323 dependency_scanning 15.0.22324 sast 15.0.22325 secret_detection 15.0.22326 cluster_image_scanning 15.0.42327 container_scanning 15.0.42328 coverage_fuzzing 15.0.42329 dast 15.0.42330 dependency_scanning 15.0.42331 sast 15.0.42332 secret_detection 15.0.42333 cluster_image_scanning 15.0.52334 container_scanning 15.0.52335 coverage_fuzzing 15.0.52336 dast 15.0.52337 dependency_scanning 15.0.52338 sast 15.0.52339 secret_detection 15.0.52340 cluster_image_scanning 15.0.62341 container_scanning 15.0.62342 coverage_fuzzing 15.0.62343 dast 15.0.62344 dependency_scanning 15.0.62345 sast 15.0.62346 secret_detection 15.0.62347 when every SUPPORTED_VERSION has a corresponding JSON file2348 cluster_image_scanning 15.0.0 schema file is present2349 cluster_image_scanning 15.0.1 schema file is present2350 cluster_image_scanning 15.0.2 schema file is present2351 cluster_image_scanning 15.0.4 schema file is present2352 cluster_image_scanning 15.0.5 schema file is present2353 cluster_image_scanning 15.0.6 schema file is present2354 container_scanning 15.0.0 schema file is present2355 container_scanning 15.0.1 schema file is present2356 container_scanning 15.0.2 schema file is present2357 container_scanning 15.0.4 schema file is present2358 container_scanning 15.0.5 schema file is present2359 container_scanning 15.0.6 schema file is present2360 coverage_fuzzing 15.0.0 schema file is present2361 coverage_fuzzing 15.0.1 schema file is present2362 coverage_fuzzing 15.0.2 schema file is present2363 coverage_fuzzing 15.0.4 schema file is present2364 coverage_fuzzing 15.0.5 schema file is present2365 coverage_fuzzing 15.0.6 schema file is present2366 dast 15.0.0 schema file is present2367 dast 15.0.1 schema file is present2368 dast 15.0.2 schema file is present2369 dast 15.0.4 schema file is present2370 dast 15.0.5 schema file is present2371 dast 15.0.6 schema file is present2372 dependency_scanning 15.0.0 schema file is present2373 dependency_scanning 15.0.1 schema file is present2374 dependency_scanning 15.0.2 schema file is present2375 dependency_scanning 15.0.4 schema file is present2376 dependency_scanning 15.0.5 schema file is present2377 dependency_scanning 15.0.6 schema file is present2378 sast 15.0.0 schema file is present2379 sast 15.0.1 schema file is present2380 sast 15.0.2 schema file is present2381 sast 15.0.4 schema file is present2382 sast 15.0.5 schema file is present2383 sast 15.0.6 schema file is present2384 secret_detection 15.0.0 schema file is present2385 secret_detection 15.0.1 schema file is present2386 secret_detection 15.0.2 schema file is present2387 secret_detection 15.0.4 schema file is present2388 secret_detection 15.0.5 schema file is present2389 secret_detection 15.0.6 schema file is present2390 #valid?2391 when given a supported MAJOR.MINOR schema version2392 behaves like report is valid2393 and the report is valid2394 is expected to be truthy2395 behaves like report is invalid2396 and the report is invalid2397 is expected to be falsey2398 behaves like logs related information2399 logs related information2400 when given a supported schema version2401 behaves like report is valid2402 and the report is valid2403 is expected to be truthy2404 behaves like report is invalid2405 and the report is invalid2406 is expected to be falsey2407 behaves like logs related information2408 logs related information2409 when given a deprecated schema version2410 and the report passes schema validation2411 is expected to be truthy2412 behaves like logs related information2413 logs related information2414 and the report does not pass schema validation2415 is expected to be falsey2416 when given an unsupported schema version2417 and the report is valid2418 is expected to be falsey2419 behaves like logs related information2420 logs related information2421 and the report is invalid2422 is expected to be falsey2423 and scanner information is empty2424 logs related information2425 when not given a schema version2426nil versions are discouraged and will be deprecated in Rubygems 42427 is expected to be falsey2428 #errors2429 when given a supported schema version2430 behaves like report is valid with no error2431 and the report is valid2432 is expected to be empty2433 and the report is invalid2434 behaves like report with expected errors2435 is expected to contain exactly "root is missing required keys: vulnerabilities"2436 when given a deprecated schema version2437 behaves like report is valid with no error2438 and the report is valid2439 is expected to be empty2440 and the report does not pass schema validation2441 behaves like report with expected errors2442 is expected to contain exactly "property '/version' does not match pattern: ^[0-9]+\\.[0-9]+\\.[0-9]+$" and "root is missing required keys: vulnerabilities"2443 when given an unsupported schema version2444 and the report is valid2445 behaves like report with expected errors2446 is expected to contain exactly "Version 12.37.0 for report type dast is unsupported, supported versions for this report type are: 15...liest supported versions of this report type, to show all the errors but will not ingest the report"2447 and the report is invalid2448 behaves like report with expected errors2449 is expected to contain exactly "Version 12.37.0 for report type dast is unsupported, supported versions for this report type are: 15...liest supported versions of this report type, to show all the errors but will not ingest the report" and "root is missing required keys: vulnerabilities"2450 when not given a schema version2451 behaves like report with expected errors2452 is expected to contain exactly "root is missing required keys: version" and "Report version not provided, dast report type supports versions: 15.0.0, 15.0.1, 15.0.2, 15.0.4, 15....liest supported versions of this report type, to show all the errors but will not ingest the report"2453 #deprecation_warnings2454 when given a supported schema version2455 and the report is valid2456 is expected to be empty2457 and the report is invalid2458 is expected to be empty2459 when given a deprecated schema version2460 and the report passes schema validation2461 behaves like report with expected warnings2462 is expected to contain exactly "version V2.7.0 for report type dast is deprecated. However, GitLab will still attempt to parse and i...e security report to one of the following versions: 15.0.0, 15.0.1, 15.0.2, 15.0.4, 15.0.5, 15.0.6."2463 and the report does not pass schema validation2464 behaves like report with expected warnings2465 is expected to contain exactly "version V2.7.0 for report type dast is deprecated. However, GitLab will still attempt to parse and i...e security report to one of the following versions: 15.0.0, 15.0.1, 15.0.2, 15.0.4, 15.0.5, 15.0.6."2466 when given an unsupported schema version2467 behaves like report with expected warnings2468 is expected to contain exactly2469 #warnings2470 when given a supported MAJOR.MINOR schema version2471 and the report is valid2472 is expected to contain exactly "This report uses a supported MAJOR.MINOR schema version but the PATCH version doesn't match any vendored schema version. Validation will be attempted against version 15.0.6"2473 with license2474 tries to validate against the latest patch version available2475 and the report is invalid2476 is expected to contain exactly "This report uses a supported MAJOR.MINOR schema version but the PATCH version doesn't match any vendored schema version. Validation will be attempted against version 15.0.6"2477 behaves like logs related information2478 logs related information2479 when given a supported schema version2480 behaves like report is valid with no warning2481 and the report is valid2482 is expected to be empty2483 and the report is invalid2484 is expected to be empty2485 when given a deprecated schema version2486 and the report passes schema validation2487 is expected to be empty2488 and the report does not pass schema validation2489 is expected to be empty2490 when given an unsupported schema version2491 behaves like report is valid with no warning2492 and the report is valid2493 is expected to be empty2494 and the report is invalid2495 is expected to be empty2496 when not given a schema version2497 is expected to be empty2498Gitlab::BitbucketServerImport::Importer2499 #import_repository2500 adds a remote2501 raises a Gitlab::Git::CommandError in the fetch2502 raises an unhandled exception in the fetch2503 #import_pull_requests2504 imports merge event2505 falls back to comments if diff comments fail to validate2506 reports an error if an exception is raised2507 pull request author user mapping2508 when bitbucket_server_user_mapping_by_username feature flag is disabled2509 when email is not present2510 maps user2511 when email is present2512 maps user2513 when bitbucket_server_user_mapping_by_username feature flag is enabled2514 when username is not present2515 maps user2516 when username is present2517 maps user2518 when user is not found2519 maps importer user2520 comments2521 when bitbucket_server_user_mapping_by_username feature flag is disabled2522 imports comments2523 when bitbucket_server_user_mapping_by_username feature flag is enabled2524 imports comments2525 when username is not present2526 defaults to import user2527 when username is present2528 maps by username2529 metrics2530 counts and measures duration of imported projects2531 counts imported pull requests2532 threaded discussions2533 when bitbucket_server_user_mapping_by_username feature flag is disabled2534 imports threaded discussions2535 when bitbucket_server_user_mapping_by_username feature flag is enabled2536 imports threaded discussions2537 when username is not present2538 defaults to import user2539 when user is not found2540 maps importer user2541 import pull requests with caching2542 only imports one Merge Request, as the other on is in the cache2543 inaccessible branches2544 #restore_branches2545 #delete_temp_branches2546 lfs files2547 downloads lfs objects if lfs_enabled is enabled for project2548 adds the error message when the lfs download fails2549Banzai::Filter::AutolinkFilter2550 does nothing when :autolink is false2551 does nothing with non-link text2552 protects against malicious backtracking2553 does not timeout with excessively long scheme2554 Various schemes2555 autolinks http2556 autolinks https2557 autolinks ftp2558 autolinks short URLs2559 autolinks multiple URLs2560 accepts link_attr options2561 autolinks smb2562 autolinks multiple occurrences of smb2563 autolinks irc2564 autolinks rdar2565 does not autolink javascript2566 does not autolink bad URLs2567 does not autolink bad URLs after we remove trailing punctuation2568 does not include trailing punctuation2569 includes trailing punctuation when part of a balanced pair2570 removes trailing quotes2571 removes one closing punctuation mark when the punctuation in the link is unbalanced2572 does not double-encode HTML entities2573 does not include trailing HTML entities2574 escapes RTLO and other characters2575 encodes international domains2576 ignores valid links contained inside 'a' element2577 ignores valid links contained inside 'code' element2578 ignores valid links contained inside 'kbd' element2579 ignores valid links contained inside 'pre' element2580 ignores valid links contained inside 'script' element2581 ignores valid links contained inside 'style' element2582 when the link is inside a tag2583 renders text after the link correctly for http2584 renders text after the link correctly for rdar2585ProjectStatistics2586 associations2587 is expected to belong to project required: false2588 is expected to belong to namespace required: false2589 scopes2590 .for_project_ids2591 returns only requested projects2592 callbacks2593 on after_commit2594 when storage size components are updated2595 updates the correct storage size for relevant attributes2596 when storage size components are not updated2597 does not affect the storage_size total2598 with race conditions2599 handles concurrent updates correctly2600 statistics columns2601 supports bigint values2602 namespace relatable columns2603 treats the correct columns as namespace relatable2604 #total_repository_size2605 sums repository and LFS object size2606 #wiki_size2607 is initialized with not null value2608 coerces any nil value to 02609 #snippets_size2610 is initialized with not null value2611 coerces any nil value to 02612 #refresh!2613 without arguments2614 sums all counters2615 when passing an only: argument2616 only updates the given columns2617 without repositories2618 does not crash2619 with deleted repositories2620 does not crash2621 when the column is namespace relatable2622 when arguments are passed2623 schedules the aggregation worker2624 when no argument is passed2625 schedules the aggregation worker2626 when the column is not namespace relatable2627 does not schedules an aggregation worker2628 when the database is read-only2629 does nothing2630 behaves like obtaining lease to update database2631 when it is unable to obtain lock2632 logs a warning2633 #update_commit_count2634 stores the number of commits in the repository2635 #update_repository_size2636 stores the size of the repository2637 #update_wiki_size2638 stores the size of the wiki2639 #update_snippets_size2640 stores the size of snippets2641 when not all snippets has statistics2642 stores the size of snippets with statistics2643 #update_lfs_objects_size2644 stores the size of related LFS objects2645 #update_uploads_size2646 stores the size of related uploaded files2647 #update_container_registry_size2648 stores the project container registry repositories size2649 handles nil values for the repositories size2650 #refresh_storage_size!2651 recalculates storage size from its components and save it2652 when nullable columns are nil2653 does not raise any error2654 recalculates storage size from its components2655 behaves like obtaining lease to update database2656 when it is unable to obtain lock2657 logs a warning2658 .increment_statistic2659 when adjusting :build_artifacts_size2660 behaves like a statistic that increases storage_size asynchronously2661 stores the increment temporarily in Redis2662 schedules a worker to update the statistic and storage_size async2663 when the project is pending delete2664 does not change the statistics2665 when adjusting :pipeline_artifacts_size2666 behaves like a statistic that increases storage_size synchronously2667 increases the statistic by that amount2668 does not increase the storage size by that amount2669 schedules a namespace aggregation worker2670 when the project is pending delete2671 does not change the statistics2672 when adjusting :packages_size2673 behaves like a statistic that increases storage_size asynchronously2674 stores the increment temporarily in Redis2675 schedules a worker to update the statistic and storage_size async2676 when the project is pending delete2677 does not change the statistics2678 when the amount is 02679 does not execute a query2680 when using an invalid column2681 raises an error2682 .bulk_increment_statistic2683 when adjusting :build_artifacts_size2684 behaves like a statistic that increases storage_size asynchronously2685 stores the increment temporarily in Redis2686 schedules a worker to update the statistic and storage_size async2687 when the project is pending delete2688 does not change the statistics2689 when adjusting :pipeline_artifacts_size2690 behaves like a statistic that increases storage_size synchronously2691 increases the statistic by that amount2692 does not increase the storage size by that amount2693 schedules a namespace aggregation worker2694 when the project is pending delete2695 does not change the statistics2696 when adjusting :packages_size2697 behaves like a statistic that increases storage_size asynchronously2698 stores the increment temporarily in Redis2699 schedules a worker to update the statistic and storage_size async2700 when the project is pending delete2701 does not change the statistics2702 when using an invalid column2703 raises an error2704Namespace::RootStorageStatisticsPolicy2705 #rules2706 when the namespace is a personal namespace2707 when the users is anonymous2708 is expected to be falsey2709 when the user is not the owner2710 is expected to be falsey2711 when the user is the owner2712 is expected to be truthy2713 when the namespace is a group2714 when the users is anonymous2715 is expected to be falsey2716 user_type: :non_member, outcome: false2717 is expected to eq false2718 when the user is external2719 is expected to eq false2720 user_type: :guest, outcome: false2721 is expected to eq false2722 when the user is external2723 is expected to eq false2724 user_type: :reporter, outcome: false2725 is expected to eq false2726 when the user is external2727 is expected to eq false2728 user_type: :developer, outcome: false2729 is expected to eq false2730 when the user is external2731 is expected to eq false2732 user_type: :maintainer, outcome: false2733 is expected to eq false2734 when the user is external2735 is expected to eq false2736 user_type: :owner, outcome: true2737 is expected to eq true2738 when the user is external2739 is expected to eq true2740 when the users is anonymous2741 is expected to be falsey2742 user_type: :non_member, outcome: false2743 is expected to eq false2744 when the user is external2745 is expected to eq false2746 user_type: :guest, outcome: false2747 is expected to eq false2748 when the user is external2749 is expected to eq false2750 user_type: :reporter, outcome: false2751 is expected to eq false2752 when the user is external2753 is expected to eq false2754 user_type: :developer, outcome: false2755 is expected to eq false2756 when the user is external2757 is expected to eq false2758 user_type: :maintainer, outcome: false2759 is expected to eq false2760 when the user is external2761 is expected to eq false2762 user_type: :owner, outcome: true2763 is expected to eq true2764 when the user is external2765 is expected to eq true2766 when the users is anonymous2767 is expected to be falsey2768 user_type: :non_member, outcome: false2769 is expected to eq false2770 when the user is external2771 is expected to eq false2772 user_type: :guest, outcome: false2773 is expected to eq false2774 when the user is external2775 is expected to eq false2776 user_type: :reporter, outcome: false2777 is expected to eq false2778 when the user is external2779 is expected to eq false2780 user_type: :developer, outcome: false2781 is expected to eq false2782 when the user is external2783 is expected to eq false2784 user_type: :maintainer, outcome: false2785 is expected to eq false2786 when the user is external2787 is expected to eq false2788 user_type: :owner, outcome: true2789 is expected to eq true2790 when the user is external2791 is expected to eq true2792Gitlab::GitalyClient2793 .query_time2794 increments query times2795 .long_timeout2796 default case2797 is expected to eq 6 hours2798 running in Puma2799 is expected to eq 552800 .filesystem_id_from_disk2801 catches errors2802 .filesystem_id2803 returns an empty string when the relevant storage status is not found in the response2804 when the relevant storage status is not found2805 .filesystem_disk_available2806 returns nil when the relevant storage status is not found in the response2807 .filesystem_disk_used2808 returns nil when the relevant storage status is not found in the response2809 when the relevant storage status is found2810 .filesystem_disk_available2811 returns disk available when the relevant storage status is found in the response2812 .filesystem_disk_used2813 returns disk used when the relevant storage status is found in the response2814 .stub_class2815 returns the gRPC health check stub2816 returns a Gitaly stub2817 .stub_address2818 returns the same result after being called multiple times2819 .stub_creds2820 returns :this_channel_is_insecure if unix2821 returns :this_channel_is_insecure if tcp2822 returns :this_channel_is_insecure if dns2823 returns :this_channel_is_insecure if dns (short-form)2824 returns :this_channel_is_insecure if dns (with authority)2825 returns Credentials object if tls2826 raise an exception if the scheme is not supported2827 .create_channel2828 storage: "default", address: "unix:tmp/gitaly.sock", expected_target: "unix:tmp/gitaly.sock"2829 creates channel based on storage2830 caches channel based on storage2831 returns different channels for different storages2832 storage: "default", address: "tcp://localhost:9876", expected_target: "localhost:9876"2833 creates channel based on storage2834 caches channel based on storage2835 returns different channels for different storages2836 storage: "default", address: "tls://localhost:9876", expected_target: "localhost:9876"2837 creates channel based on storage2838 caches channel based on storage2839 returns different channels for different storages2840 storage: "default", address: "dns:///localhost:9876", expected_target: "dns:///localhost:9876"2841 creates channel based on storage2842 caches channel based on storage2843 returns different channels for different storages2844 storage: "default", address: "dns:localhost:9876", expected_target: "dns:localhost:9876"2845 creates channel based on storage2846 caches channel based on storage2847 returns different channels for different storages2848 storage: "default", address: "dns://1.1.1.1/localhost:9876", expected_target: "dns://1.1.1.1/localhost:9876"2849 creates channel based on storage2850 caches channel based on storage2851 returns different channels for different storages2852 .stub2853 when passed a UNIX socket address2854 passes the address as-is to GRPC2855 shares the same channel object with other stub2856 when passed a TLS address2857 strips tls:// prefix before passing it to GRPC::Core::Channel initializer2858 shares the same channel object with other stub2859 when passed a TCP address2860 strips tcp:// prefix before passing it to GRPC::Core::Channel initializer2861 shares the same channel object with other stub2862 when passed a DNS address2863 strips dns:/// prefix before passing it to GRPC::Core::Channel initializer2864 shares the same channel object with other stub2865 when passed an unsupported scheme2866 strips dns:/// prefix before passing it to GRPC::Core::Channel initializer2867 .can_use_disk?2868 properly caches a false result2869 .connection_data2870 returns connection data2871 allow_n_plus_1_calls2872 when RequestStore is enabled2873 returns the result of the allow_n_plus_1_calls block2874 when RequestStore is not active2875 returns the result of the allow_n_plus_1_calls block2876 .request_kwargs2877 sets the gitaly-session-id in the metadata2878 when RequestStore is not enabled2879 sets a different gitaly-session-id per request2880 when RequestStore is enabled2881 sets the same gitaly-session-id on every outgoing request metadata2882 server_feature_flags when RequestStore is activated2883 behaves like gitaly feature flags in metadata2884 evaluates Gitaly server feature flags2885 when there are actors2886 evaluates Gitaly server feature flags with actors2887 server_feature_flags when RequestStore is not activated2888 behaves like gitaly feature flags in metadata2889 evaluates Gitaly server feature flags2890 when there are actors2891 evaluates Gitaly server feature flags with actors2892 logging information in metadata2893 user is added to application context2894 injects username and user_id into gRPC metadata2895 user is not added to application context2896 does not inject username and user_id into gRPC metadata2897 remote_ip is added to application context2898 injects remote_ip into gRPC metadata2899 remote_ip is not added to application context2900 does not inject remote_ip into gRPC metadata2901 gitlab_git_env2902 when RequestStore is disabled2903 does not force-route to primary2904 when RequestStore is enabled without git_env2905 does not force-orute to primary2906 when RequestStore is enabled with empty git_env2907 disables force-routing to primary2908 when RequestStore is enabled with populated git_env2909 enables force-routing to primary2910 deadlines2911 includes the deadline information2912 limits the deadline do the request deadline if that is closer2913 does not limit calls in sidekiq2914 does not limit calls in sidekiq when allowed unlimited2915 includes only the deadline specified by the timeout when there was no deadline2916 enforce_gitaly_request_limits?2917 when RequestStore is enabled and the maximum number of calls is enforced by a feature flag2918 allows up the maximum number of allowed calls2919 allows the maximum number of calls to be exceeded if GITALY_DISABLE_REQUEST_LIMITS is set2920 allows the maximum number of calls to be exceeded within an allow_n_plus_1_calls block2921 when the maximum number of calls has been reached2922 fails on the next call2923 when the maximum number of calls has been reached within an allow_n_plus_1_calls block2924 allows up to the maximum number of calls outside of an allow_n_plus_1_calls block2925 does not allow the maximum number of calls to be exceeded outside of an allow_n_plus_1_calls block2926 when RequestStore is enabled and the maximum number of calls is not enforced by a feature flag2927 allows up the maximum number of allowed calls2928 allows the maximum number of calls to be exceeded if GITALY_DISABLE_REQUEST_LIMITS is set2929 allows the maximum number of calls to be exceeded within an allow_n_plus_1_calls block2930 when the maximum number of calls has been reached2931 fails on the next call2932 when the maximum number of calls has been reached within an allow_n_plus_1_calls block2933 allows up to the maximum number of calls outside of an allow_n_plus_1_calls block2934 does not allow the maximum number of calls to be exceeded outside of an allow_n_plus_1_calls block2935 in production and when RequestStore is enabled2936 when the maximum number of calls is enforced by a feature flag2937 does not allow the maximum number of calls to be exceeded2938 when the maximum number of calls is not enforced by a feature flag2939 allows the maximum number of calls to be exceeded2940 when RequestStore is not active2941 does not raise errors when the maximum number of allowed calls is exceeded2942 does not fail when the maximum number of calls is exceeded within an allow_n_plus_1_calls block2943 get_request_count2944 when RequestStore is enabled2945 when enforce_gitaly_request_limits is called outside of allow_n_plus_1_calls blocks2946 counts gitaly calls2947 when enforce_gitaly_request_limits is called inside and outside of allow_n_plus_1_calls blocks2948 counts gitaly calls2949 when reset_counts is called2950 resets counts2951 when RequestStore is not active2952 returns zero2953 timeouts2954 with default values2955 returns expected values2956 Peek Performance bar details2957 when the request store is active2958 records call details if a RPC is called2959 when no request store is active2960 records nothing2961 .decode_detailed_error2962 decodes a structured error2963 error: #<GRPC::BadStatus: 3:error message>, result: <Gitaly::InvalidRefFormatError: refs: []>2964 returns correct detailed error2965 error: #<GRPC::BadStatus: 3:error message>, result: nil2966 returns correct detailed error2967 error: #<StandardError: StandardError>, result: nil2968 returns correct detailed error2969 .with_feature_flag_actor2970 when RequestStore is activated2971 behaves like with_feature_flag_actor2972 allows access to feature flag actors inside the block2973 when RequestStore is not activated2974 behaves like with_feature_flag_actor2975 allows access to feature flag actors inside the block2976NotificationRecipient2977 #notifiable?2978 when emails are disabled2979 returns false if group disabled2980 returns false if project disabled2981 when emails are enabled2982 returns true if group enabled2983 returns true if project enabled2984 when recipient email is blocked2985 with permanent failures2986 returns false2987 with temporary failures2988 returns false2989 #has_access?2990 user cannot read cross project2991 returns false2992 user cannot read build2993 returns false2994 user cannot read commit2995 returns false2996 target has no policy2997 returns true2998 #notification_setting2999 for child groups3000 when notification setting is global3001 considers notification setting from the first parent without global setting3002 when notification setting is not global3003 considers notification setting from lowest group member in hierarchy3004 #suitable_notification_level?3005 when notification level is mention3006 when type is mention3007 returns true3008 when type is not mention3009 returns false3010 when notification level is participating3011 when type is participating3012 returns true3013 when type is mention3014 returns true3015 with custom action3016 when action is failed_pipeline3017 returns true3018 when action is fixed_pipeline3019 returns true3020 when action is not fixed_pipeline or failed_pipeline3021 returns false3022 when notification level is custom3023 when type is participating3024 with custom event enabled3025 returns true3026 without custom event enabled3027 returns true3028 when type is mention3029 with custom event enabled3030 returns true3031 without custom event enabled3032 returns true3033 when type is watch3034 with custom event enabled3035 returns true3036 without custom event enabled3037 returns false3038 when custom_action is fixed_pipeline and success_pipeline event is enabled3039 returns true3040 with merge_when_pipeline_succeeds3041 custom event enabled3042 returns true3043 custom event disabled3044 returns false3045 when notification level is watch3046 when type is watch3047 without excluded watcher events3048 returns true3049 with excluded watcher events3050 returns false3051 when type is not watch3052 without excluded watcher events3053 returns true3054 with excluded watcher events3055 returns true3056EventsHelper3057 # order random3058 #event_wiki_title_html3059 produces a suitable title chunk3060 #event_preposition3061 for wiki page events3062 returns a suitable phrase3063 for push action events3064 returns a suitable phrase3065 for commented actions3066 returns a suitable phrase3067 for any event with a target3068 returns a suitable phrase3069 for milestone events3070 returns a suitable phrase3071 for non-matching events3072 returns no preposition3073 #event_note_target_url3074 returns a commit note url3075 returns a project snippet note url3076 returns a personal snippet note url3077 returns a project issue url3078 returns a merge request url3079 for design note events3080 returns an appropriate URL3081 #event_wiki_page_target_url3082 links to the wiki page3083 without canonical slug3084 links to the home page3085 #link_to_author3086 returns a link to the author3087 returns the author name if the author is not present3088 returns "You" if the author is the current user3089 #event_commit_title3090 returns the first line, truncated to 70 chars3091 is not html-safe3092 handles empty strings3093 handles nil values3094 does not escape HTML entities3095 #event_feed_url3096 returns project commit url3097 returns event note target url3098 returns project url3099 returns push event feed url3100 returns nil for push event with multiple refs3101 for issue3102 returns the project issue url3103 contains the project issue IID link3104 for merge request3105 returns the project merge request url3106 contains the project merge request IID link3107 #event_target_path3108 when target is a work item3109 is expected to eq "/namespace903/project-934/-/work_items/1"3110 when target is not a work item3111 is expected to eq [#<Project id:920 namespace903/project-934>>, #<Issue id:92 namespace903/project-934#1>]3112 #event_filter_visible3113 for :designs3114 without relevant instance variable3115 is expected to equal true3116 with assigned project3117 with permission3118 is expected to equal true3119 without permission3120 is expected to equal false3121 with projects assigned3122 with permission3123 is expected to equal true3124 with empty collection3125 is expected to equal false3126 without permission3127 is expected to equal false3128 with group assigned3129 without projects in the group3130 is expected to equal false3131 with at least one project in the project3132 with permission3133 is expected to equal true3134 without permission3135 is expected to equal false3136 #localized_action_name3137 handles all valid design events3138 handles correct base actions3139 trait: :created, localized_action_key: "Event|created"3140 with correct name and method3141 trait: :updated, localized_action_key: "Event|opened"3142 with correct name and method3143 trait: :closed, localized_action_key: "Event|closed"3144 with correct name and method3145 trait: :reopened, localized_action_key: "Event|opened"3146 with correct name and method3147 trait: :commented, localized_action_key: "Event|commented on"3148 with correct name and method3149 trait: :merged, localized_action_key: "Event|accepted"3150 with correct name and method3151 trait: :joined, localized_action_key: "Event|joined"3152 with correct name and method3153 trait: :left, localized_action_key: "Event|left"3154 with correct name and method3155 trait: :destroyed, localized_action_key: "Event|destroyed"3156 with correct name and method3157 trait: :expired, localized_action_key: "Event|removed due to membership expiration from"3158 with correct name and method3159 trait: :approved, localized_action_key: "Event|approved"3160 with correct name and method3161ResourceEvents::ChangeStateService3162 #execute3163 when resource is an Issue3164 when no source is given3165 behaves like a state event3166 creates the expected event if resource has opened state3167 sets the created_at timestamp from the system_note_timestamp3168 creates the expected event if resource has reopened state3169 sets the created_at timestamp from the system_note_timestamp3170 creates the expected event if resource has closed state3171 sets the created_at timestamp from the system_note_timestamp3172 creates the expected event if resource has locked state3173 sets the created_at timestamp from the system_note_timestamp3174 when source commit is given3175 behaves like a state event3176 creates the expected event if resource has opened state3177 sets the created_at timestamp from the system_note_timestamp3178 creates the expected event if resource has reopened state3179 sets the created_at timestamp from the system_note_timestamp3180 creates the expected event if resource has closed state3181 sets the created_at timestamp from the system_note_timestamp3182 creates the expected event if resource has locked state3183 sets the created_at timestamp from the system_note_timestamp3184 when source merge request is given3185 behaves like a state event3186 creates the expected event if resource has opened state3187 sets the created_at timestamp from the system_note_timestamp3188 creates the expected event if resource has reopened state3189 sets the created_at timestamp from the system_note_timestamp3190 creates the expected event if resource has closed state3191 sets the created_at timestamp from the system_note_timestamp3192 creates the expected event if resource has locked state3193 sets the created_at timestamp from the system_note_timestamp3194 when resource is a MergeRequest3195 when no source is given3196 behaves like a state event3197 creates the expected event if resource has opened state3198 sets the created_at timestamp from the system_note_timestamp3199 creates the expected event if resource has reopened state3200 sets the created_at timestamp from the system_note_timestamp3201 creates the expected event if resource has closed state3202 sets the created_at timestamp from the system_note_timestamp3203 creates the expected event if resource has locked state3204 sets the created_at timestamp from the system_note_timestamp3205 when source commit is given3206 behaves like a state event3207 creates the expected event if resource has opened state3208 sets the created_at timestamp from the system_note_timestamp3209 creates the expected event if resource has reopened state3210 sets the created_at timestamp from the system_note_timestamp3211 creates the expected event if resource has closed state3212 sets the created_at timestamp from the system_note_timestamp3213 creates the expected event if resource has locked state3214 sets the created_at timestamp from the system_note_timestamp3215 when source merge request is given3216 behaves like a state event3217 creates the expected event if resource has opened state3218 sets the created_at timestamp from the system_note_timestamp3219 creates the expected event if resource has reopened state3220 sets the created_at timestamp from the system_note_timestamp3221 creates the expected event if resource has closed state3222 sets the created_at timestamp from the system_note_timestamp3223 creates the expected event if resource has locked state3224 sets the created_at timestamp from the system_note_timestamp3225Integrations::Telegram3226 # order random3227 validations3228 when integration is active3229 is expected to validate that :token cannot be empty/falsy3230 is expected to validate that :room cannot be empty/falsy3231 when integration is inactive3232 is expected not to validate that :token cannot be empty/falsy3233 is expected not to validate that :room cannot be empty/falsy3234 behaves like chat integration3235 Associations3236 is expected to belong to project required: false3237 Validations3238 when integration is active3239 is expected to validate that :webhook cannot be empty/falsy3240 behaves like issue tracker integration URL attribute3241 is expected to allow :webhook to be ‹"https://example.com"›3242 is expected not to allow :webhook to be ‹"example.com"›3243 is expected not to allow :webhook to be ‹"ftp://example.com"›3244 is expected not to allow :webhook to be ‹"herp-and-derp"›3245 when integration is inactive3246 is expected not to validate that :webhook cannot be empty/falsy3247 .supported_events3248 does not support deployment_events3249 #execute3250 with push events3251 behaves like triggered Telegram integration3252 calls Telegram API3253 with default branch3254 when only default branch are to be notified3255 behaves like triggered Telegram integration3256 calls Telegram API3257 when only protected branches are to be notified3258 behaves like untriggered Telegram integration3259 does not call Telegram API3260 when default and protected branches are to be notified3261 behaves like triggered Telegram integration3262 calls Telegram API3263 when all branches are to be notified3264 behaves like triggered Telegram integration3265 calls Telegram API3266 with protected branch3267 when only default branch are to be notified3268 behaves like untriggered Telegram integration3269 does not call Telegram API3270 when only protected branches are to be notified3271 behaves like triggered Telegram integration3272 calls Telegram API3273 when default and protected branches are to be notified3274 behaves like triggered Telegram integration3275 calls Telegram API3276 when all branches are to be notified3277 behaves like triggered Telegram integration3278 calls Telegram API3279 with neither default nor protected branch3280 when only default branch are to be notified3281 behaves like untriggered Telegram integration3282 does not call Telegram API3283 when only protected branches are to be notified3284 behaves like untriggered Telegram integration3285 does not call Telegram API3286 when default and protected branches are to be notified3287 behaves like untriggered Telegram integration3288 does not call Telegram API3289 when all branches are to be notified3290 behaves like triggered Telegram integration3291 calls Telegram API3292 with issue events3293 behaves like triggered Telegram integration3294 calls Telegram API3295 with merge events3296 behaves like triggered Telegram integration3297 calls Telegram API3298 with wiki page events3299 behaves like triggered Telegram integration3300 calls Telegram API3301 with note events3302 with commit comment3303 behaves like triggered Telegram integration3304 calls Telegram API3305 with merge request comment3306 behaves like triggered Telegram integration3307 calls Telegram API3308 with issue comment3309 behaves like triggered Telegram integration3310 calls Telegram API3311 with snippet comment3312 behaves like triggered Telegram integration3313 calls Telegram API3314 with pipeline events3315 with failed pipeline3316 behaves like triggered Telegram integration3317 calls Telegram API3318 with succeeded pipeline3319 with default notify_only_broken_pipelines3320 does not call Telegram API3321 when notify_only_broken_pipelines is false3322 behaves like triggered Telegram integration3323 calls Telegram API3324 with default branch3325 when only default branch are to be notified3326 behaves like triggered Telegram integration3327 calls Telegram API3328 when only protected branches are to be notified3329 behaves like untriggered Telegram integration3330 does not call Telegram API3331 when default and protected branches are to be notified3332 behaves like triggered Telegram integration3333 calls Telegram API3334 when all branches are to be notified3335 behaves like triggered Telegram integration3336 calls Telegram API3337 with protected branch3338 when only default branch are to be notified3339 behaves like untriggered Telegram integration3340 does not call Telegram API3341 when only protected branches are to be notified3342 behaves like triggered Telegram integration3343 calls Telegram API3344 when default and protected branches are to be notified3345 behaves like triggered Telegram integration3346 calls Telegram API3347 when all branches are to be notified3348 behaves like triggered Telegram integration3349 calls Telegram API3350 with neither default nor protected branch3351 when only default branch are to be notified3352 behaves like untriggered Telegram integration3353 does not call Telegram API3354 when only protected branches are to be notified3355 behaves like untriggered Telegram integration3356 does not call Telegram API3357 when default and protected branches are to be notified3358 behaves like untriggered Telegram integration3359 does not call Telegram API3360 when all branches are to be notified3361 behaves like triggered Telegram integration3362 calls Telegram API3363 deployment events3364 behaves like untriggered Telegram integration3365 does not call Telegram API3366 before_validation :set_webhook3367 when token is not present3368 does not set webhook value3369 when token is present3370 sets webhook value3371Gitlab::Utils::Markdown3372 # order random3373 #string_to_anchor3374 converts string to anchor3375 when string has punctuation3376 removes punctuation3377 when string starts and ends with spaces3378 removes extra spaces3379 when string has multiple spaces and dashes in the middle3380 removes consecutive dashes3381 when string contains only digits3382 adds anchor prefix3383 when string has a product suffix3384 CORE3385 ignores a product suffix3386 with "*" around a product suffix3387 ignores a product suffix3388 CORE ONLY3389 ignores a product suffix3390 with "*" around a product suffix3391 ignores a product suffix3392 CORE SELF3393 ignores a product suffix3394 with "*" around a product suffix3395 ignores a product suffix3396 CORE SAAS3397 ignores a product suffix3398 with "*" around a product suffix3399 ignores a product suffix3400 STARTER3401 ignores a product suffix3402 with "*" around a product suffix3403 ignores a product suffix3404 STARTER ONLY3405 ignores a product suffix3406 with "*" around a product suffix3407 ignores a product suffix3408 STARTER SELF3409 ignores a product suffix3410 with "*" around a product suffix3411 ignores a product suffix3412 STARTER SAAS3413 ignores a product suffix3414 with "*" around a product suffix3415 ignores a product suffix3416 PREMIUM3417 ignores a product suffix3418 with "*" around a product suffix3419 ignores a product suffix3420 PREMIUM ONLY3421 ignores a product suffix3422 with "*" around a product suffix3423 ignores a product suffix3424 PREMIUM SELF3425 ignores a product suffix3426 with "*" around a product suffix3427 ignores a product suffix3428 PREMIUM SAAS3429 ignores a product suffix3430 with "*" around a product suffix3431 ignores a product suffix3432 ULTIMATE3433 ignores a product suffix3434 with "*" around a product suffix3435 ignores a product suffix3436 ULTIMATE ONLY3437 ignores a product suffix3438 with "*" around a product suffix3439 ignores a product suffix3440 ULTIMATE SELF3441 ignores a product suffix3442 with "*" around a product suffix3443 ignores a product suffix3444 ULTIMATE SAAS3445 ignores a product suffix3446 with "*" around a product suffix3447 ignores a product suffix3448 FREE3449 ignores a product suffix3450 with "*" around a product suffix3451 ignores a product suffix3452 FREE ONLY3453 ignores a product suffix3454 with "*" around a product suffix3455 ignores a product suffix3456 FREE SELF3457 ignores a product suffix3458 with "*" around a product suffix3459 ignores a product suffix3460 FREE SAAS3461 ignores a product suffix3462 with "*" around a product suffix3463 ignores a product suffix3464 BRONZE3465 ignores a product suffix3466 with "*" around a product suffix3467 ignores a product suffix3468 BRONZE ONLY3469 ignores a product suffix3470 with "*" around a product suffix3471 ignores a product suffix3472 BRONZE SELF3473 ignores a product suffix3474 with "*" around a product suffix3475 ignores a product suffix3476 BRONZE SAAS3477 ignores a product suffix3478 with "*" around a product suffix3479 ignores a product suffix3480 SILVER3481 ignores a product suffix3482 with "*" around a product suffix3483 ignores a product suffix3484 SILVER ONLY3485 ignores a product suffix3486 with "*" around a product suffix3487 ignores a product suffix3488 SILVER SELF3489 ignores a product suffix3490 with "*" around a product suffix3491 ignores a product suffix3492 SILVER SAAS3493 ignores a product suffix3494 with "*" around a product suffix3495 ignores a product suffix3496 GOLD3497 ignores a product suffix3498 with "*" around a product suffix3499 ignores a product suffix3500 GOLD ONLY3501 ignores a product suffix3502 with "*" around a product suffix3503 ignores a product suffix3504 GOLD SELF3505 ignores a product suffix3506 with "*" around a product suffix3507 ignores a product suffix3508 GOLD SAAS3509 ignores a product suffix3510 with "*" around a product suffix3511 ignores a product suffix3512 when string is empty3513 returns an empty string3514Gitlab::Ci::Runner::Backoff3515 #duration3516 returns backoff duration from start3517 returns an integer value3518 returns the smallest number greater than or equal to duration3519 #slot3520 started: 0, slot: 03521 falls into an appropaite backoff slot3522 started: 0.1, slot: 03523 falls into an appropaite backoff slot3524 started: 0.9, slot: 03525 falls into an appropaite backoff slot3526 started: 1, slot: 03527 falls into an appropaite backoff slot3528 started: 1.1, slot: 03529 falls into an appropaite backoff slot3530 started: 1.9, slot: 03531 falls into an appropaite backoff slot3532 started: 2, slot: 03533 falls into an appropaite backoff slot3534 started: 2.9, slot: 03535 falls into an appropaite backoff slot3536 started: 3, slot: 03537 falls into an appropaite backoff slot3538 started: 4, slot: 13539 falls into an appropaite backoff slot3540 started: 5, slot: 13541 falls into an appropaite backoff slot3542 started: 6, slot: 13543 falls into an appropaite backoff slot3544 started: 7, slot: 13545 falls into an appropaite backoff slot3546 started: 8, slot: 23547 falls into an appropaite backoff slot3548 started: 9, slot: 23549 falls into an appropaite backoff slot3550 started: 9.9, slot: 23551 falls into an appropaite backoff slot3552 started: 10, slot: 23553 falls into an appropaite backoff slot3554 started: 15, slot: 23555 falls into an appropaite backoff slot3556 started: 16, slot: 33557 falls into an appropaite backoff slot3558 started: 31, slot: 33559 falls into an appropaite backoff slot3560 started: 32, slot: 43561 falls into an appropaite backoff slot3562 started: 63, slot: 43563 falls into an appropaite backoff slot3564 started: 64, slot: 53565 falls into an appropaite backoff slot3566 started: 127, slot: 53567 falls into an appropaite backoff slot3568 started: 128, slot: 63569 falls into an appropaite backoff slot3570 started: 250, slot: 63571 falls into an appropaite backoff slot3572 started: 310, slot: 73573 falls into an appropaite backoff slot3574 started: 520, slot: 83575 falls into an appropaite backoff slot3576 started: 999, slot: 83577 falls into an appropaite backoff slot3578 #to_seconds3579 started: 0, backoff: 13580 calculates backoff based on an appropriate slot3581 started: 0.1, backoff: 13582 calculates backoff based on an appropriate slot3583 started: 0.9, backoff: 13584 calculates backoff based on an appropriate slot3585 started: 1, backoff: 13586 calculates backoff based on an appropriate slot3587 started: 1.1, backoff: 13588 calculates backoff based on an appropriate slot3589 started: 1.9, backoff: 13590 calculates backoff based on an appropriate slot3591 started: 2, backoff: 13592 calculates backoff based on an appropriate slot3593 started: 3, backoff: 13594 calculates backoff based on an appropriate slot3595 started: 4, backoff: 23596 calculates backoff based on an appropriate slot3597 started: 5, backoff: 23598 calculates backoff based on an appropriate slot3599 started: 6, backoff: 23600 calculates backoff based on an appropriate slot3601 started: 6.5, backoff: 23602 calculates backoff based on an appropriate slot3603 started: 7, backoff: 23604 calculates backoff based on an appropriate slot3605 started: 8, backoff: 43606 calculates backoff based on an appropriate slot3607 started: 9, backoff: 43608 calculates backoff based on an appropriate slot3609 started: 9.9, backoff: 43610 calculates backoff based on an appropriate slot3611 started: 10, backoff: 43612 calculates backoff based on an appropriate slot3613 started: 15, backoff: 43614 calculates backoff based on an appropriate slot3615 started: 16, backoff: 83616 calculates backoff based on an appropriate slot3617 started: 31, backoff: 83618 calculates backoff based on an appropriate slot3619 started: 32, backoff: 163620 calculates backoff based on an appropriate slot3621 started: 63, backoff: 163622 calculates backoff based on an appropriate slot3623 started: 64, backoff: 323624 calculates backoff based on an appropriate slot3625 started: 127, backoff: 323626 calculates backoff based on an appropriate slot3627 started: 128, backoff: 643628 calculates backoff based on an appropriate slot3629 started: 250, backoff: 643630 calculates backoff based on an appropriate slot3631 started: 310, backoff: 643632 calculates backoff based on an appropriate slot3633 started: 520, backoff: 643634 calculates backoff based on an appropriate slot3635 started: 999, backoff: 643636 calculates backoff based on an appropriate slot3637WikiPage::Meta3638 Associations3639 is expected to belong to project required: false3640 is expected to have many slugs3641 is expected to have many events3642 can find slugs3643 Validations3644 is expected to validate that :project_id cannot be empty/falsy3645 is expected to validate that the length of :title is at most 2553646 is expected not to allow :title to be ‹nil›3647 is forbidden to have two records for the same project with the same canonical_slug3648 #canonical_slug3649 can be set on initialization3650 there are no slugs3651 is expected to have attributes {:canonical_slug => (be nil)}3652 we have some non-canonical slugs3653 is expected to have attributes {:canonical_slug => (be nil)}3654 issues at most one query3655 issues no queries if we already know the slug3656 we have a canonical slug3657 has the correct value3658 canonical_slug=3659 the slug is not known to us3660 changes it to the correct value3661 ensures the slug is in the db3662 issues at most N queries3663 issues fewer queries if we already know the current slug3664 the slug is already in the DB (but not canonical)3665 changes it to the correct value3666 ensures the slug is in the db3667 issues at most N queries3668 issues fewer queries if we already know the current slug3669 the slug is already in the DB (and canonical)3670 changes it to the correct value3671 ensures the slug is in the db3672 issues at most N queries3673 issues fewer queries if we already know the current slug3674 the slug is up to date and in the DB3675 changes it to the correct value3676 ensures the slug is in the db3677 issues at most N queries3678 issues fewer queries if we already know the current slug3679 .find_or_create3680 there are problems3681 the slug is too long3682 raises an error3683 a conflicting record exists3684 raises an error3685 the wiki page is not valid3686 raises an error3687 no existing record exists3688 establishes the correct state3689 makes a reasonable number of DB queries3690 the commit happened a day ago3691 establishes the correct state3692 makes a reasonable number of DB queries3693 the last_known_slug is the same as the current slug, as on creation3694 establishes the correct state3695 makes a reasonable number of DB queries3696 a record exists in the DB in the correct state3697 establishes the correct state3698 makes a reasonable number of DB queries3699 a record exists in the DB, but we need to update timestamps3700 establishes the correct state3701 makes a reasonable number of DB queries3702 we need to update the slug, but not the title3703 establishes the correct state3704 makes a reasonable number of DB queries3705 we need to update the title, but not the slug3706 establishes the correct state3707 makes a reasonable number of DB queries3708 we want to change the slug back to a previous version3709 establishes the correct state3710 makes a reasonable number of DB queries3711 we want to change the slug a bunch of times3712 establishes the correct state3713 makes a reasonable number of DB queries3714 we need to update the title and the slug3715 establishes the correct state3716 makes a reasonable number of DB queries3717Ci::DailyBuildGroupReportResult3718 associations3719 is expected to belong to last_pipeline class_name => Ci::Pipeline required: false inverse_of => daily_build_group_report_results3720 is expected to belong to project required: false3721 is expected to belong to group required: false3722 validations3723 when attributes are valid3724 returns no errors3725 when data is invalid3726 returns errors3727 .upsert_reports3728 creates or updates matching report results3729 when given data is empty3730 does nothing3731 scopes3732 .by_projects3733 returns records by projects3734 .by_group3735 returns records by group3736 .by_ref_path3737 returns coverages by ref_path3738 .ordered_by_date_and_group_name3739 returns coverages ordered by data and group name3740 .by_dates3741 when daily coverages exist during those dates3742 returns coverages3743 .with_coverage3744 returns data with coverage3745 .with_default_branch3746 when coverage for the default branch exist3747 returns coverage with the default branch3748 when coverage for the default branch does not exist3749 returns an empty collection3750 behaves like cleanup by a loose foreign key3751 cleans up (delete or nullify) the model3752 behaves like cleanup by a loose foreign key3753 cleans up (delete or nullify) the model3754Snippets::DestroyService3755 #execute3756 when snippet is nil3757 returns a ServiceResponse error3758 when ProjectSnippet3759 when user is able to admin_project_snippet3760 behaves like a successful destroy3761 deletes the snippet3762 returns ServiceResponse success3763 behaves like deletes the snippet repository3764 removes the snippet repository3765 when the repository deletion service raises an error3766 behaves like an unsuccessful destroy3767 does not delete the snippet3768 returns ServiceResponse error3769 when a destroy error is raised3770 behaves like an unsuccessful destroy3771 does not delete the snippet3772 returns ServiceResponse error3773 when repository is nil3774 does not schedule anything and return success3775 project statistics3776 updates stats after deletion3777 schedules a namespace statistics update3778 when user is not able to admin_project_snippet3779 behaves like an unsuccessful destroy3780 does not delete the snippet3781 returns ServiceResponse error3782 when PersonalSnippet3783 when user is able to admin_personal_snippet3784 schedules a namespace statistics update3785 behaves like a successful destroy3786 deletes the snippet3787 returns ServiceResponse success3788 behaves like deletes the snippet repository3789 removes the snippet repository3790 when the repository deletion service raises an error3791 behaves like an unsuccessful destroy3792 does not delete the snippet3793 returns ServiceResponse error3794 when a destroy error is raised3795 behaves like an unsuccessful destroy3796 does not delete the snippet3797 returns ServiceResponse error3798 when repository is nil3799 does not schedule anything and return success3800 when user is not able to admin_personal_snippet3801 behaves like an unsuccessful destroy3802 does not delete the snippet3803 returns ServiceResponse error3804 when the repository does not exist3805 does not schedule anything and return success3806Clusters::Kubernetes::CreateOrUpdateNamespaceService#execute3807 group clusters3808 when kubernetes namespace is not persisted3809 behaves like successful creation of kubernetes namespace3810 creates a Clusters::KubernetesNamespace3811 creates project service account and namespace3812 configures kubernetes token3813 without environment3814 creates project service account and namespace3815 project clusters3816 when kubernetes namespace is not persisted3817 behaves like successful creation of kubernetes namespace3818 creates a Clusters::KubernetesNamespace3819 creates project service account and namespace3820 configures kubernetes token3821 without environment3822 creates project service account and namespace3823 when there is a Kubernetes Namespace associated3824 does not create any Clusters::KubernetesNamespace3825 creates project service account3826 updates Clusters::KubernetesNamespace3827Ci::ResourceGroup3828 behaves like cleanup by a loose foreign key3829 cleans up (delete or nullify) the model3830 validation3831 valids when key includes allowed character3832 invalids when key includes invalid character3833 #ensure_resource3834 creates one resource when resource group is created3835 #assign_resource_to3836 retains resource for the processable3837 when there are no free resources3838 fails to retain resource3839 when the build has already retained a resource3840 fails to retain resource3841 #release_resource_from3842 when the build has already retained a resource3843 releases resource from the build3844 when the build has already released a resource3845 fails to release resource3846 #upcoming_processables3847 when process mode is unordered3848 returns correct jobs in an indeterministic order3849 when process mode is oldest_first3850 returns correct jobs in a specific order3851 when process mode is newest_first3852 returns correct jobs in a specific order3853 when process mode is unknown3854 returns empty3855 #current_processable3856 when resource is retained by a build3857 is expected to eq #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-08-18 08:50:29.000000000 +0000", u... processed: false, scheduling_type: "stage", id: 96, stage_id: 16, partition_id: 100, tag_list: nil>3858 when resource is not retained by a build3859 is expected to be nil3860Mutations::Namespace::PackageSettings::Update3861 is expected to require graphql authorizations :admin_package3862 #resolve3863 with existing namespace package setting3864 user_role: :owner, shared_examples_name: "updating the namespace package setting"3865 behaves like updating the namespace package setting3866 behaves like updating the namespace package setting attributes3867 updates the namespace package setting3868 behaves like not creating the namespace package setting3869 doesn't create the namespace package setting3870 behaves like returning a success3871 returns the namespace package setting with no errors3872 with invalid params3873 doesn't update the maven_duplicates_allowed3874 returns an error3875 behaves like not creating the namespace package setting3876 doesn't create the namespace package setting3877 when nuget_duplicates_option FF is disabled3878 raises an error3879 user_role: :maintainer, shared_examples_name: "denying access to namespace package setting"3880 behaves like denying access to namespace package setting3881 raises Gitlab::Graphql::Errors::ResourceNotAvailable3882 behaves like disabling admin_package feature flag3883 behaves like updating the namespace package setting3884 behaves like updating the namespace package setting attributes3885 updates the namespace package setting3886 behaves like not creating the namespace package setting3887 doesn't create the namespace package setting3888 behaves like returning a success3889 returns the namespace package setting with no errors3890 with invalid params3891 doesn't update the maven_duplicates_allowed3892 returns an error3893 behaves like not creating the namespace package setting3894 doesn't create the namespace package setting3895 when nuget_duplicates_option FF is disabled3896 raises an error3897 user_role: :developer, shared_examples_name: "denying access to namespace package setting"3898 behaves like denying access to namespace package setting3899 raises Gitlab::Graphql::Errors::ResourceNotAvailable3900 user_role: :reporter, shared_examples_name: "denying access to namespace package setting"3901 behaves like denying access to namespace package setting3902 raises Gitlab::Graphql::Errors::ResourceNotAvailable3903 user_role: :guest, shared_examples_name: "denying access to namespace package setting"3904 behaves like denying access to namespace package setting3905 raises Gitlab::Graphql::Errors::ResourceNotAvailable3906 user_role: :anonymous, shared_examples_name: "denying access to namespace package setting"3907 behaves like denying access to namespace package setting3908 raises Gitlab::Graphql::Errors::ResourceNotAvailable3909 without existing namespace package setting3910 user_role: :owner, shared_examples_name: "creating the namespace package setting"3911 behaves like creating the namespace package setting3912 creates a new package setting3913 saves the settings3914 behaves like returning a success3915 returns the namespace package setting with no errors3916 user_role: :maintainer, shared_examples_name: "denying access to namespace package setting"3917 behaves like denying access to namespace package setting3918 raises Gitlab::Graphql::Errors::ResourceNotAvailable3919 behaves like disabling admin_package feature flag3920 behaves like creating the namespace package setting3921 creates a new package setting3922 saves the settings3923 behaves like returning a success3924 returns the namespace package setting with no errors3925 user_role: :developer, shared_examples_name: "denying access to namespace package setting"3926 behaves like denying access to namespace package setting3927 raises Gitlab::Graphql::Errors::ResourceNotAvailable3928 user_role: :reporter, shared_examples_name: "denying access to namespace package setting"3929 behaves like denying access to namespace package setting3930 raises Gitlab::Graphql::Errors::ResourceNotAvailable3931 user_role: :guest, shared_examples_name: "denying access to namespace package setting"3932 behaves like denying access to namespace package setting3933 raises Gitlab::Graphql::Errors::ResourceNotAvailable3934 user_role: :anonymous, shared_examples_name: "denying access to namespace package setting"3935 behaves like denying access to namespace package setting3936 raises Gitlab::Graphql::Errors::ResourceNotAvailable3937Issues::PlacementWorker3938 has the `until_executed` deduplicate strategy3939 #perform3940 passing an issue ID3941 behaves like running the issue placement worker3942 places all issues created at most 5 minutes before this one at the end, most recent last3943 schedules rebalancing if needed3944 anticipates the failure to place the issues, and schedules rebalancing3945 there are more than QUERY_LIMIT unplaced issues3946 limits the sweep to QUERY_LIMIT records, and reschedules placement3947 is eventually correct3948 we are passed bad IDs3949 does move any issues to the end3950 the project_id refers to an empty project3951 does move any issues to the end3952 when block_issue_repositioning is enabled3953 does not run repositioning tasks3954 passing a project ID3955 behaves like running the issue placement worker3956 places all issues created at most 5 minutes before this one at the end, most recent last3957 schedules rebalancing if needed3958 anticipates the failure to place the issues, and schedules rebalancing3959 there are more than QUERY_LIMIT unplaced issues3960 limits the sweep to QUERY_LIMIT records, and reschedules placement3961 is eventually correct3962 we are passed bad IDs3963 does move any issues to the end3964 the project_id refers to an empty project3965 does move any issues to the end3966Banzai::Filter::ReferenceRedactorFilter3967 ignores non-GFM links3968 skips when the skip_redaction flag is set3969 with data-project3970 valid projects3971 allows permitted Project references3972 invalid projects3973 removes unpermitted references3974 handles invalid references3975 with data-issue3976 allows references for non confidential issues3977 for confidential issues3978 removes references for non project members3979 removes references for project members with guest role3980 allows references for author3981 allows references for assignee3982 allows references for project members3983 for admin3984 when admin mode is enabled3985 allows references3986 when admin mode is disabled3987 removes references3988 when a confidential issue is moved from a public project to a private one3989 removes references for author3990 removes references for assignee3991 allows references for project members3992 for user references3993 with data-group3994 removes unpermitted Group references3995 allows permitted Group references3996 handles invalid Group references3997 with data-user3998 allows any User reference3999ReactiveCaching4000 #with_reactive_cache4001 when cache is empty4002 is expected to be nil4003 updates the cache lifespan4004 behaves like reactive worker call4005 performs caching with correct worker4006 behaves like reactive worker call4007 performs caching with correct worker4008 when the cache is full4009 behaves like a cacheable value4010 is expected to eq 44011 does not enqueue a background worker4012 updates the cache lifespan4013 and expired4014 is expected to be nil4015 behaves like reactive worker call4016 performs caching with correct worker4017 behaves like reactive worker call4018 performs caching with correct worker4019 when the cache contains non-nil but blank value4020 behaves like a cacheable value4021 is expected to eq false4022 does not enqueue a background worker4023 updates the cache lifespan4024 and expired4025 is expected to be nil4026 behaves like reactive worker call4027 performs caching with correct worker4028 behaves like reactive worker call4029 performs caching with correct worker4030 when the cache contains nil value4031 behaves like a cacheable value4032 is expected to eq nil4033 does not enqueue a background worker4034 updates the cache lifespan4035 and expired4036 is expected to be nil4037 behaves like reactive worker call4038 performs caching with correct worker4039 behaves like reactive worker call4040 performs caching with correct worker4041 #with_reactive_cache_set4042 calls with_reactive_cache4043 data returned4044 saves keys in set4045 returns the data4046 .reactive_cache_worker_finder4047 with default reactive_cache_worker_finder4048 calls the activerecord find_by method4049 with custom reactive_cache_worker_finder4050 overrides the default reactive_cache_worker_finder4051 #clear_reactive_cache!4052 is expected to be nil4053 is expected to be falsy4054 #exclusively_update_reactive_cache!4055 when the lease is free and lifetime is not exceeded4056 takes and releases the lease4057 enqueues a repeat worker4058 calls a reactive_cache_updated only once if content did not change on subsequent update4059 does not delete the value key4060 behaves like successful cache4061 caches the result of #calculate_reactive_cache4062 does not raise the exception4063 when :external_dependency cache4064 enqueues a repeat worker4065 when reactive_cache_hard_limit is set4066 when cache size is over the overridden limit4067 raises ExceededReactiveCacheLimit exception and does not cache new data4068 when reactive_cache_limit_enabled? is overridden to return false4069 behaves like successful cache4070 caches the result of #calculate_reactive_cache4071 does not raise the exception4072 when cache size is within the overridden limit4073 behaves like successful cache4074 caches the result of #calculate_reactive_cache4075 does not raise the exception4076 and #calculate_reactive_cache raises an exception4077 leaves the cache untouched4078 does not enqueue a repeat worker4079 when lifetime is exceeded4080 skips the calculation4081 deletes the value key4082 when the lease is already taken4083 skips the calculation4084 default options4085 is expected to be a kind of ActiveSupport::Duration4086 is expected to be a kind of ActiveSupport::Duration4087 is expected to be a kind of ActiveSupport::Duration4088 is expected to respond to #call4089 is expected to be nil4090 is expected to respond to #call4091 classes including this concern4092 sets reactive_cache_work_type4093ProjectImportState4094 associations4095 is expected to belong to project required: false4096 validations4097 is expected to validate that :project cannot be empty/falsy4098 checksums attribute4099 when the checksums attribute has invalid fields4100 adds errors4101 when the checksums attribute has valid fields4102 does not add errors4103 Project import job4104 imports a project4105 records job and correlation IDs4106 #relation_hard_failures4107 returns hard relation failures related to this import4108 limits returned collection to given maximum4109 #mark_as_failed4110 logs error when update column fails4111 updates last_error with error message4112 removes project import data4113 #human_status_name4114 when import_state exists4115 returns the humanized status name4116 #expire_etag_cache4117 when project import type has realtime changes endpoint4118 expires revelant etag cache4119 when project import type does not have realtime changes endpoint4120 does not touch etag caches4121 import state transitions4122 state transition: [:started] => [:finished]4123 resets last_error4124 enqueues housekeeping when an import of a fresh project is completed4125 does not perform housekeeping when project repository does not exist4126 does not enqueue housekeeping when project does not have a valid import type4127 state transition: [:none, :scheduled, :started] => [:canceled]4128 updates the import status4129 unsets the JID4130 removes import data4131 state transition: started: [:finished, :canceled, :failed]4132 import_type: "github", import_status: :started, transition: :finish, expected_checksums: {"fetched"=>{}, "imported"=>{}}4133 updates (or does not update) checksums4134 import_type: "github", import_status: :started, transition: :cancel, expected_checksums: {"fetched"=>{}, "imported"=>{}}4135 updates (or does not update) checksums4136 import_type: "github", import_status: :started, transition: :fail_op, expected_checksums: {"fetched"=>{}, "imported"=>{}}4137 updates (or does not update) checksums4138 import_type: "github", import_status: :scheduled, transition: :cancel, expected_checksums: {}4139 updates (or does not update) checksums4140 import_type: "gitlab_project", import_status: :started, transition: :cancel, expected_checksums: {}4141 updates (or does not update) checksums4142 clearing `jid` after finish4143 without an JID4144 does nothing4145 with a JID4146 unsets the JID4147 callbacks4148 after_commit :expire_etag_cache4149 expires etag cache4150PgFullTextSearchable4151 .pg_full_text_searchable4152 sets pg_full_text_searchable_columns4153 raises an error when called twice4154 after commit hook4155 when specified columns are changed4156 calls update_search_data!4157 when specified columns are not changed4158 does not call update_search_data!4159 when model is updated twice within a transaction4160 calls update_search_data!4161 .pg_full_text_search4162 searches across all fields4163 searches specified columns only4164 uses prefix matching4165 searches for exact term with quotes4166 ignores accents4167 does not support searching by non-Latin characters4168 when search term has a URL4169 allows searching by full URL, ignoring the scheme4170 when search term is a path with underscores4171 allows searching by the path4172 when text has numbers preceded by a dash4173 allows searching by numbers only4174 #update_search_data!4175 sets the correct weights4176 with accented and non-Latin characters4177 transliterates accented characters and removes non-Latin ones4178 with long words4179 strips words that are 50 characters or longer4180 when upsert times out4181 re-raises the exception4182 with strings that go over tsvector limit4183 does not raise an exception4184 when model class does not implement persist_pg_full_text_search_vector4185 raises an error4186Ci::DeleteUnitTestsService4187 #execute4188 does not delete unit test failures not older than 14 days4189 deletes unit test failures older than 14 days4190 deletes unit tests that have no more associated unit test failures4191Gitlab::RepositoryCacheAdapter4192 .cache_method_output_as_redis_set4193 with an existing repository4194 caches the output, sorting the results4195 membership checks4196 when the cache key does not exist4197 calls the original method and populates the cache4198 when the cache key exists4199 calls #try_include? on the set cache4200 memoizes the result4201 #cache_method_output4202 with a non-existing repository4203 returns the fallback value4204 avoids calling the original method4205 with a method throwing a non-existing-repository error4206 returns the fallback value4207 does not cache the data4208 with an existing repository4209 caches the output4210 #cache_method_output_asymmetrically4211 with a non-existing repository4212 returns the output of the original method4213 with a method throwing a non-existing-repository error4214 returns nil4215 does not cache the data4216 with an existing repository4217 when it returns truthy4218 caches the output in RequestStore4219 caches the output in RepositoryCache4220 when it returns false4221 caches the output in RequestStore4222 does NOT cache the output in RepositoryCache4223 #memoize_method_output4224 with a non-existing repository4225 returns the fallback value4226 avoids calling the original method4227 does not set the instance variable4228 with a method throwing a non-existing-repository error4229 returns the fallback value4230 does not set the instance variable4231 with an existing repository4232 sets the instance variable4233 #expire_method_caches4234 expires the caches of the given methods4235 does not expire caches for non-existent methods4236Atlassian::JiraConnect::Client4237 .generate_update_sequence_id4238 returns unix time in microseconds as integer4239 #send_info4240 calls more specific methods as appropriate4241 only calls methods that we need to call4242 raises an argument error if there is nothing to send (probably a typo?)4243 #handle_response4244 when the response is 200 OK4245 yields to the block4246 when the response is 202 accepted4247 yields to the block4248 when the response is 400 bad request4249 extracts the errors messages4250 when the response is 401 forbidden4251 reports that our JWT is wrong4252 when the response is 4034253 reports that the App is misconfigured4254 when the response is 4134255 extracts the errors messages4256 when the response is 4294257 reports that we exceeded the rate limit4258 when the response is 5034259 reports that the service is unavailable4260 when the response is anything else4261 reports that this was unanticipated4262 #request_body_schema4263 with valid JSON request body4264 returns the request body4265 with invalid JSON request body4266 reports the invalid json4267 #store_deploy_info4268 calls the API with auth headers4269 calls the API if issue keys are found4270 does not call the API if no issue keys are found4271 when there are errors4272 reports the errors4273 #store_ff_info4274 calls the API with auth headers4275 only sends information about relevant MRs4276 does not call the API if there is nothing to report4277 when there are errors4278 reports the errors4279 #store_build_info4280 calls the API with auth headers4281 only sends information about relevant MRs4282 does not call the API if there is nothing to report4283 avoids N+1 database queries (PENDING: https://gitlab.com/gitlab-org/gitlab/-/issues/292818)4284 when there are errors4285 reports the errors4286 #store_dev_info4287 calls the API with auth headers4288 avoids N+1 database queries4289 #user_info4290 with a successful response4291 returns a JiraUser instance4292 with a failed response4293 returns nil4294Backup::GitalyBackup4295 unknown4296 fails to start unknown4297 create4298 hashed storage4299 behaves like creates a repository backup4300 creates repository bundles4301 erases any existing repository backups4302 raises when the exit code not zero4303 raises when gitaly_backup_path is not set4304 parallel option set4305 passes parallel option through4306 parallel_storage option set4307 passes parallel option through4308 server-side option set4309 passes option through4310 legacy storage4311 behaves like creates a repository backup4312 creates repository bundles4313 erases any existing repository backups4314 raises when the exit code not zero4315 raises when gitaly_backup_path is not set4316 parallel option set4317 passes parallel option through4318 parallel_storage option set4319 passes parallel option through4320 server-side option set4321 passes option through4322 custom SSL envs set4323 passes through SSL envs4324 restore4325 restores from repository bundles4326 clears specified storages when remove_all_repositories is set4327 raises when the exit code not zero4328 raises when gitaly_backup_path is not set4329 parallel option set4330 passes parallel option through4331 parallel_storage option set4332 passes parallel option through4333 server-side option set4334 passes option through4335 missing backup_id4336 wont set the option4337 missing backup_id4338 wont set the option4339Feature::Definition4340 #key4341 returns a symbol from name4342 #validate!4343 param: :name, value: "colon:separated", result: /Feature flag 'colon:separated' is invalid/4344 is expected to raise /Feature flag 'colon:separated' is invalid/4345 param: :name, value: "space separated", result: /Feature flag 'space separated' is invalid/4346 is expected to raise /Feature flag 'space separated' is invalid/4347 param: :name, value: "ALL_CAPS", result: /Feature flag 'ALL_CAPS' is invalid/4348 is expected to raise /Feature flag 'ALL_CAPS' is invalid/4349 param: :name, value: nil, result: /Feature flag is missing name/4350 is expected to raise /Feature flag is missing name/4351 param: :path, value: nil, result: /Feature flag 'feature_flag' is missing path/4352 is expected to raise /Feature flag 'feature_flag' is missing path/4353 param: :type, value: nil, result: /Feature flag 'feature_flag' is missing type/4354 is expected to raise /Feature flag 'feature_flag' is missing type/4355 param: :type, value: "invalid", result: /Feature flag 'feature_flag' type 'invalid' is invalid/4356 is expected to raise /Feature flag 'feature_flag' type 'invalid' is invalid/4357 param: :path, value: "development/invalid.yml", result: /Feature flag 'feature_flag' has an invalid path/4358 is expected to raise /Feature flag 'feature_flag' has an invalid path/4359 param: :path, value: "invalid/feature_flag.yml", result: /Feature flag 'feature_flag' has an invalid type/4360 is expected to raise /Feature flag 'feature_flag' has an invalid type/4361 param: :default_enabled, value: nil, result: /Feature flag 'feature_flag' is missing default_enabled/4362 is expected to raise /Feature flag 'feature_flag' is missing default_enabled/4363 #valid_usage!4364 validates type4365 raises exception for invalid type4366 .paths4367 returns at least one path4368 .load_from_file4369 properly loads a definition from file4370 for missing file4371 raises exception4372 for invalid definition4373 raises exception4374 .load_all!4375 when there's no feature flags a list of definitions is empty4376 when there's a single feature flag it properly loads them4377 when the same feature flag is stored multiple times raises exception4378 when one of the YAMLs is invalid it does raise exception4379 .for_upcoming_milestone?4380 ctx: "no milestone", milestone: nil, current_milestone: "1.0.0", expected: false4381 is expected to equal false4382 ctx: "upcoming milestone - major", milestone: "2.3", current_milestone: "1.9.999", expected: true4383 is expected to equal true4384 ctx: "upcoming milestone - minor", milestone: "2.3", current_milestone: "2.2.999", expected: true4385 is expected to equal true4386 ctx: "current milestone", milestone: "2.3", current_milestone: "2.3.999", expected: true4387 is expected to equal true4388 ctx: "past milestone - major", milestone: "1.9", current_milestone: "2.3.999", expected: false4389 is expected to equal false4390 ctx: "past milestone - minor", milestone: "2.2", current_milestone: "2.3.999", expected: false4391 is expected to equal false4392 .valid_usage!4393 when a known feature flag is used4394 validates it usage4395 when an unknown feature flag is used4396 for a type that is required to have all feature flags registered4397 raises exception4398 for a type that is optional4399 does not raise exception4400 for an unknown type4401 raises exception4402 .log_states?4403 ctx: "When flag does not exist", key: :no_flag, milestone: "0.0", log_state_change: true, expected: false4404 is expected to equal false4405 ctx: "When flag is old, and logging is not forced", key: :enabled_feature_flag, milestone: "0.0", log_state_change: false, expected: false4406 is expected to equal false4407 ctx: "When flag is old, but logging is forced", key: :enabled_feature_flag, milestone: "0.0", log_state_change: true, expected: true4408 is expected to equal true4409 ctx: "When flag is current", key: :enabled_feature_flag, milestone: "10.0", log_state_change: true, expected: true4410 is expected to equal true4411 ctx: "Flag is upcoming", key: :enabled_feature_flag, milestone: "10.0", log_state_change: true, expected: true4412 is expected to equal true4413 .default_enabled?4414 when feature flag exist4415 when default_enabled is true4416 returns the value from the definition4417 when default_enabled is false4418 returns the value from the definition4419 when feature flag does not exist4420 when passing default value4421 returns default value4422 when default value is undefined4423 when on dev or test environment4424 raises an error4425 when on production environment4426 returns false4427Ci::PipelineSchedules::CalculateNextRunService4428 # order random4429 #execute4430 when there is invalid or no plan limits4431 worker_cron: "0 1 2 3 *", schedule_cron: "0 1 * * *", plan_limit: nil, now: Tue, 02 Mar 2021 01:00:00.000000000 UTC +00:00, expected_result: Wed, 02 Mar 2022 01:00:00.000000000 UTC +00:004432 calls fallback method to get next_run_at4433 worker_cron: "*/5 * * * *", schedule_cron: "*/1 * * * *", plan_limit: nil, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, expected_result: Thu, 27 May 2021 11:05:00.000000000 UTC +00:004434 calls fallback method to get next_run_at4435 worker_cron: "*/5 * * * *", schedule_cron: "0 * * * *", plan_limit: nil, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, expected_result: Thu, 27 May 2021 12:05:00.000000000 UTC +00:004436 calls fallback method to get next_run_at4437 worker_cron: "*/5 * * * *", schedule_cron: "0 * * * *", plan_limit: 12, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, expected_result: Thu, 27 May 2021 12:05:00.000000000 UTC +00:004438 calls fallback method to get next_run_at4439 when the workers next run matches schedule's earliest run4440 worker_cron: "*/5 * * * *", schedule_cron: "0 * * * *", plan_limit: 144, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, expected_result: Thu, 27 May 2021 12:00:00.000000000 UTC +00:004441 calculates the next_run_at to be earliest point of match4442 worker_cron: "*/5 * * * *", schedule_cron: "*/5 * * * *", plan_limit: 144, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, expected_result: Thu, 27 May 2021 11:10:00.000000000 UTC +00:004443 calculates the next_run_at to be earliest point of match4444 worker_cron: "*/5 * * * *", schedule_cron: "0 1 * * *", plan_limit: 144, now: Thu, 27 May 2021 01:00:00.000000000 UTC +00:00, expected_result: Fri, 28 May 2021 01:00:00.000000000 UTC +00:004445 calculates the next_run_at to be earliest point of match4446 worker_cron: "*/5 * * * *", schedule_cron: "0 2 * * *", plan_limit: 144, now: Thu, 27 May 2021 01:00:00.000000000 UTC +00:00, expected_result: Thu, 27 May 2021 02:00:00.000000000 UTC +00:004447 calculates the next_run_at to be earliest point of match4448 worker_cron: "*/5 * * * *", schedule_cron: "0 3 * * *", plan_limit: 144, now: Thu, 27 May 2021 01:00:00.000000000 UTC +00:00, expected_result: Thu, 27 May 2021 03:00:00.000000000 UTC +00:004449 calculates the next_run_at to be earliest point of match4450 worker_cron: "*/5 * * * *", schedule_cron: "0 1 1 * *", plan_limit: 144, now: Sat, 01 May 2021 01:00:00.000000000 UTC +00:00, expected_result: Tue, 01 Jun 2021 01:00:00.000000000 UTC +00:004451 calculates the next_run_at to be earliest point of match4452 worker_cron: "*/9 * * * *", schedule_cron: "0 1 1 * *", plan_limit: 144, now: Sat, 01 May 2021 01:09:00.000000000 UTC +00:00, expected_result: Tue, 01 Jun 2021 01:00:00.000000000 UTC +00:004453 calculates the next_run_at to be earliest point of match4454 worker_cron: "*/5 * * * *", schedule_cron: "45 21 1 2 *", plan_limit: 144, now: Mon, 01 Feb 2021 21:45:00.000000000 UTC +00:00, expected_result: Tue, 01 Feb 2022 21:45:00.000000000 UTC +00:004455 calculates the next_run_at to be earliest point of match4456 when next_run_at is restricted by plan limit4457 worker_cron: "*/5 * * * *", schedule_cron: "59 14 * * *", plan_limit: 24, now: Sat, 01 May 2021 15:00:00.000000000 UTC +00:00, expected_result: Sun, 02 May 2021 15:00:00.000000000 UTC +00:004458 calculates the next_run_at based on next available limit4459 worker_cron: "*/5 * * * *", schedule_cron: "*/1 * * * *", plan_limit: 24, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, expected_result: Thu, 27 May 2021 12:00:00.000000000 UTC +00:004460 calculates the next_run_at based on next available limit4461 worker_cron: "*/5 * * * *", schedule_cron: "*/1 * * * *", plan_limit: 144, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, expected_result: Thu, 27 May 2021 11:10:00.000000000 UTC +00:004462 calculates the next_run_at based on next available limit4463 worker_cron: "*/5 * * * *", schedule_cron: "*/1 * * * *", plan_limit: 205, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, expected_result: Thu, 27 May 2021 11:10:00.000000000 UTC +00:004464 calculates the next_run_at based on next available limit4465 when next_run_at is restricted by worker's availability4466 worker_cron: "0 1 2 3 *", schedule_cron: "0 1 * * *", plan_limit: 144, now: Tue, 02 Mar 2021 01:00:00.000000000 UTC +00:00, expected_result: Wed, 02 Mar 2022 01:00:00.000000000 UTC +00:004467 calculates the next_run_at using worker_cron4468Ci::ExternalPullRequest4469 # order random4470 is expected to belong to project required: false4471 #from_fork?4472 returns true if source_repository differs from target_repository4473 returns false if source_repository is the same as target_repository4474 #actual_branch_head?4475 when source sha matches the head of the branch4476 returns true4477 when source sha does not match the head of the branch4478 returns true4479 #open?4480 returns true if status is open4481 returns false if status is not open4482 #closed?4483 returns true if status is closed4484 returns false if status is not closed4485 create_or_update_from_params4486 when pull request does not exist4487 when params are correct4488 saves the model successfully and returns it4489 yields the model4490 when params are not correct4491 returns an invalid model4492 when pull request exists4493 when params are correct4494 updates the model successfully and returns it4495 when params are not correct4496 returns an invalid model4497 validations4498 when source branch not present4499 behaves like has errors on4500 has errors for source_branch4501 when status not present4502 behaves like has errors on4503 has errors for status4504 when pull request is from a fork4505 behaves like has errors on4506 has errors for base4507 with a loose foreign key on external_pull_requests.project_id4508 behaves like cleanup by a loose foreign key4509 cleans up (delete or nullify) the model4510 #modified_paths4511 returns modified paths4512WikiPages::UpdateService4513 behaves like WikiPages::UpdateService#execute4514 updates the wiki page4515 executes webhooks4516 counts edit events4517 the page is at the top level4518 adds a new wiki page activity event4519 the page is in a subsection4520 adds a new wiki page activity event4521 when the options are bad4522 does not count an edit event4523 does not record the activity4524 reports the error4525 #execute4526 when wiki create fails due to git error4527 catches the thrown error and returns a ServiceResponse error4528MemberUserEntity4529 matches json schema4530 correctly exposes `avatar_url`4531 correctly exposes `blocked`4532 correctly exposes `is_bot`4533 does not expose `two_factor_enabled` by default4534 correctly exposes `status.emoji`4535 correctly exposes `created_at`4536 correctly exposes `last_activity_on`4537 when options includes a source4538 when the source is a group4539 behaves like correctly exposes user two_factor_enabled4540 when the current_user has a role lower than minimum manage member role4541 does not expose user two_factor_enabled4542 matches json schema4543 when the current user has a minimum manage member role or higher4544 matches json schema4545 exposes user two_factor_enabled4546 when the current user is self4547 exposes user two_factor_enabled4548 matches json schema4549 when the source is a project4550 behaves like correctly exposes user two_factor_enabled4551 when the current_user has a role lower than minimum manage member role4552 does not expose user two_factor_enabled4553 matches json schema4554 when the current user has a minimum manage member role or higher4555 matches json schema4556 exposes user two_factor_enabled4557 when the current user is self4558 exposes user two_factor_enabled4559 matches json schema4560Gitlab::HttpIO4561 #close4562 is expected to be nil4563 #binmode4564 is expected to be nil4565 #binmode?4566 is expected to be truthy4567 #path4568 is expected to be nil4569 #url4570 is expected to eq "http://object-storage/trace"4571 #seek4572 when moves pos to end of the file4573 is expected to eq 1924414574 when moves pos to middle of the file4575 is expected to eq 962204576 when moves pos around4577 matches the result4578 #eof?4579 when current pos is at end of the file4580 is expected to be truthy4581 when current pos is not at end of the file4582 is expected to be falsey4583 #each_line4584 yields lines4585 when buckets on GCS4586 when BUFFER_SIZE is larger than file size4587 calls get_chunk only once4588 #read4589 when there are no network issue4590 when read whole size4591 when BUFFER_SIZE is smaller than file size4592 reads a trace4593 when BUFFER_SIZE is larger than file size4594 reads a trace4595 when read only first 100 bytes4596 when BUFFER_SIZE is smaller than file size4597 reads a trace4598 when BUFFER_SIZE is larger than file size4599 reads a trace4600 when tries to read oversize4601 when BUFFER_SIZE is smaller than file size4602 reads a trace4603 when BUFFER_SIZE is larger than file size4604 reads a trace4605 when tries to read 0 bytes4606 when BUFFER_SIZE is smaller than file size4607 reads a trace4608 when BUFFER_SIZE is larger than file size4609 reads a trace4610 when there is anetwork issue4611 reads a trace4612 #readline4613 when there is anetwork issue4614 reads a trace4615 when BUFFER_SIZE is smaller than file size4616 behaves like all line matching4617 reads a line4618 when BUFFER_SIZE is larger than file size4619 behaves like all line matching4620 reads a line4621 when pos is at middle of the file4622 reads from pos4623 #write4624 is expected to raise NotImplementedError4625 #truncate4626 is expected to raise NotImplementedError4627 #flush4628 is expected to raise NotImplementedError4629 #present?4630 is expected to be truthy4631 #send4632 does not set the "accept-encoding" header4633Gitlab::Database::Migrations::ConstraintsHelpers4634 # order random4635 #switch_constraint_names4636 when inside a transaction4637 raises an error4638 when outside a transaction4639 executes the statement to swap the constraint names4640 #validate_check_constraint4641 when the constraint does not exist4642 raises an error4643 when the constraint exists4644 performs validation4645 #validate_not_null_constraint4646 when constraint_name is not provided4647 calls validate_check_constraint with an infered constraint name4648 when constraint_name is provided4649 calls validate_check_constraint with the correct parameters4650 #check_constraint_name4651 returns a valid constraint name4652 #add_check_constraint4653 when constraint name validation4654 raises an error when too long4655 does not raise error when the length is acceptable4656 when inside a transaction4657 raises an error4658 when outside a transaction4659 when the constraint is already defined in the database4660 does not create a constraint4661 when the constraint is not defined in the database4662 creates the constraint4663 when validate is not provided4664 performs validation4665 when validate is provided with a falsey value4666 skips validation4667 when validate is provided with a truthy value4668 performs validation4669 #check_not_null_constraint_exists?4670 when constraint_name is not provided4671 calls check_constraint_exists? with an infered constraint name4672 when constraint_name is provided4673 calls check_constraint_exists? with the correct parameters4674 #check_text_limit_exists?4675 when constraint_name is not provided4676 calls check_constraint_exists? with an infered constraint name4677 when constraint_name is provided4678 calls check_constraint_exists? with the correct parameters4679 #remove_text_limit4680 when constraint_name is not provided4681 calls remove_check_constraint with an infered constraint name4682 when constraint_name is provided4683 calls remove_check_constraint with the correct parameters4684 #remove_check_constraint4685 removes the constraint4686 #rename_constraint4687 executes the statement to rename constraint4688 #validate_text_limit4689 when constraint_name is not provided4690 calls validate_check_constraint with an infered constraint name4691 when constraint_name is provided4692 calls validate_check_constraint with the correct parameters4693 #add_text_limit4694 when it is called with the default options4695 calls add_check_constraint with an infered constraint name and validate: true4696 when all parameters are provided4697 calls add_check_constraint with the correct parameters4698 #drop_constraint4699 executes the statement to drop the constraint4700 when cascade option is false4701 executes the statement to drop the constraint without cascade4702 #check_constraint_exists?4703 returns true if a constraint exists4704 returns false if a constraint does not exist4705 returns false if a constraint with the same name exists in another table4706 returns false if a constraint with the same name exists for the same table in another schema4707 #copy_check_constraints4708 when inside a transaction4709 raises an error4710 when outside a transaction4711 copies check constraints from one column to another4712 does nothing if there are no constraints defined for the old column4713 raises an error when the orginating column does not exist4714 raises an error when the target column does not exist4715 #remove_not_null_constraint4716 when constraint_name is not provided4717 calls remove_check_constraint with an infered constraint name4718 when constraint_name is provided4719 calls remove_check_constraint with the correct parameters4720 #add_not_null_constraint4721 when it is called with the default options4722 calls add_check_constraint with an infered constraint name and validate: true4723 when all parameters are provided4724 calls add_check_constraint with the correct parameters4725 when the column is defined as NOT NULL4726 does not add a check constraint4727PreferencesHelper4728 #dashboard_choices4729 raises an exception when defined choices may be missing4730 raises an exception when defined choices may be using the wrong key4731 provides better option descriptions4732 #first_day_of_week_choices4733 returns Saturday, Sunday and Monday as choices4734 #first_day_of_week_choices_with_default4735 returns choices including system default4736 returns choices including system default set to Monday4737 returns choices including system default set to Saturday4738 #user_application_theme4739 with a user4740 returns user's theme's css_class4741 returns the default when id is invalid4742 without a user4743 returns the default theme4744 #user_application_dark_mode?4745 with a user4746 returns true if user's selected dark theme4747 returns false if user's selected any light theme4748 without a user4749 returns false4750 #user_color_scheme4751 with a user4752 returns user's scheme's css_class4753 returns the default when id is invalid4754 without a user4755 returns the default theme4756 #user_diffs_colors4757 with a user4758 returns user's diffs colors4759 omits property if nil4760 omits property if blank4761 without a user4762 returns no properties4763 #custom_diff_color_classes4764 with a user4765 returns color classes4766 omits property if nil4767 omits property if blank4768 without a user4769 returns no classes4770 #language_choices4771 lists all the selectable language options with their translation percent4772 #integration_views4773 when Gitpod is not enabled4774 does not include Gitpod integration4775 when Gitpod is enabled4776 includes Gitpod integration4777 returns the Gitpod url configured in settings4778 when Gitpod url is not set4779 returns the Gitpod default url4780Gitlab::Ci::Config::Entry::Include::Rules::Rule4781 when specifying an if: clause4782 behaves like a valid config4783 is expected to be valid4784 returns the expected value4785 when FF `ci_refactor_external_rules` is disabled4786 returns the expected value4787 with when:4788 behaves like a valid config4789 is expected to be valid4790 returns the expected value4791 when FF `ci_refactor_external_rules` is disabled4792 returns the expected value4793 with when: <invalid string>4794 behaves like an invalid config4795 is expected not to be valid4796 has errors4797 with when: null4798 behaves like a valid config4799 is expected to be valid4800 returns the expected value4801 when FF `ci_refactor_external_rules` is disabled4802 returns the expected value4803 when if: clause is invalid4804 behaves like an invalid config4805 is expected not to be valid4806 has errors4807 when if: clause has an integer operand4808 behaves like an invalid config4809 is expected not to be valid4810 has errors4811 when if: clause has invalid regex4812 behaves like an invalid config4813 is expected not to be valid4814 has errors4815 when if: clause has lookahead regex character "?"4816 behaves like an invalid config4817 is expected not to be valid4818 has errors4819 when if: clause has array of expressions4820 behaves like an invalid config4821 is expected not to be valid4822 has errors4823 when specifying an exists: clause4824 behaves like a valid config4825 is expected to be valid4826 returns the expected value4827 when FF `ci_refactor_external_rules` is disabled4828 returns the expected value4829 when array4830 behaves like a valid config4831 is expected to be valid4832 returns the expected value4833 when FF `ci_refactor_external_rules` is disabled4834 returns the expected value4835 when null4836 behaves like a valid config4837 is expected to be valid4838 returns the expected value4839 when FF `ci_refactor_external_rules` is disabled4840 returns the expected value4841 when specifying an unknown keyword4842 behaves like an invalid config4843 is expected not to be valid4844 has errors4845 when config is blank4846 behaves like an invalid config4847 is expected not to be valid4848 has errors4849 when config type is invalid4850 behaves like an invalid config4851 is expected not to be valid4852 has errors4853TagsFinder4854 #execute4855 sort only4856 sorts by name4857 sorts by recently_updated4858 sorts by last_updated4859 when sort is not a string4860 ignores sort parameter4861 filter only4862 filters tags by name4863 does not find any tags with that name4864 filters tags by name that begins with4865 filters tags by name that ends with4866 filters tags by name with wildcard4867 filters tags by nonexistent name that begins with4868 filters tags by nonexistent name that ends with4869 filters tags by nonexistent name with wildcard4870 when search is not a string4871 returns no matches4872 filter and sort4873 when sort by updated_desc4874 filters tags by name4875 when sort by updated_asc4876 filters tags by name4877 with Gitaly pagination4878 by page_token and per_page4879 filters tags4880 by next page_token and per_page4881 filters branches4882 by per_page only4883 filters branches4884 by page_token only4885 raises an error4886 pagination and sort4887 by per_page4888 filters branches4889 by page_token and per_page4890 filters branches4891 pagination and search4892 ignores the pagination for search4893 when Gitaly is unavailable4894 raises an exception4895Gitlab::Ci::Status::Build::Unschedule4896 #label4897 is expected to eq "unschedule action"4898 action details4899 #has_action?4900 when user is allowed to update build4901 is expected to have action4902 when user is not allowed to update build4903 is expected not to have action4904 #action_path4905 is expected to include "115/unschedule"4906 #action_icon4907 is expected to eq "time-out"4908 #action_title4909 is expected to eq "Unschedule"4910 #action_button_title4911 is expected to eq "Unschedule job"4912 .matches?4913 when build is scheduled4914 when build unschedules an delayed job4915 is a correct match4916 when build unschedules an normal job4917 does not match4918 #status_tooltip4919 does not override status status_tooltip4920 #badge_tooltip4921 does not override status badge_tooltip4922MergeRequests::ExportCsvService4923 csv_data4924 contains the correct information4925 assignees4926 when assigned4927 contains the names of assignees4928 contains the usernames of assignees4929 when not assigned4930 returns empty strings4931 approvers4932 when approved4933 contains the names of approvers separated by a comma4934 contains the usernames of approvers separated by a comma4935 when not approved4936 returns empty strings4937 merged user4938 MR is merged4939 is merged4940 has a merged user4941 MR is not merged4942 returns empty strings4943 milestone4944 milestone is assigned4945 contains the milestone ID4946 no milestone is assigned4947 returns an empty string4948 #email4949 emails csv4950 renders with a target filesize4951Gitlab::Seeders::Ci::Runner::RunnerFleetSeeder4952 # order random4953 #seed4954 creates expected hierarchy4955 when number of group runners exceeds plan limit4956The plan limits for group runners is set to 1 runners. You should raise the plan limits to avoid errors during runner creation by running the following command in the Rails console:4957Plan.default.actual_limits.update!(ci_registered_group_runners: 20)4958 is expected to be nil4959The plan limits for group runners is set to 1 runners. You should raise the plan limits to avoid errors during runner creation by running the following command in the Rails console:4960Plan.default.actual_limits.update!(ci_registered_group_runners: 20)4961 does not change runner count4962 when number of project runners exceeds plan limit4963The plan limits for project runners is set to 1 runners. You should raise the plan limits to avoid errors during runner creation by running the following command in the Rails console:4964Plan.default.actual_limits.update!(ci_registered_project_runners: 20)4965 is expected to be nil4966The plan limits for project runners is set to 1 runners. You should raise the plan limits to avoid errors during runner creation by running the following command in the Rails console:4967Plan.default.actual_limits.update!(ci_registered_project_runners: 20)4968 does not change runner count4969Terraform::StateUploader4970 #filename4971 contains the version of the terraform state record4972 legacy state with versioning disabled4973 contains the UUID of the terraform state record4974 #store_dir4975 hashes the project ID and UUID4976 legacy state with versioning disabled4977 contains the ID of the project4978 #key4979 creates a digest with a secret key and the project id4980 encryption4981 encrypts the stored file4982 decrypts the file when reading4983 .direct_upload_enabled?4984 returns false4985 .proxy_download_enabled?4986 returns true4987 .default_store4988 when object storage is enabled4989 returns REMOTE4990 when object storage is disabled4991 returns LOCAL4992ProjectMemberPresenter4993 #can_resend_invite?4994 when project_member is invited4995 and user can admin_project_member4996 is expected to eq true4997 and user cannot admin_project_member4998 is expected to eq false4999 when project_member is not invited5000 and user can admin_project_member5001 is expected to eq false5002 and user cannot admin_project_member5003 is expected to eq false5004 #last_owner?5005 when member is the holder of the personal namespace5006 is expected to eq true5007 when member is not the holder of the personal namespace5008 is expected to eq false5009 #can_update?5010 when user is NOT attempting to update an Owner5011 when user can update_project_member5012 is expected to eq true5013 when user cannot update_project_member5014 is expected to eq false5015 when user is attempting to update an Owner5016 when user can manage owners5017 is expected to eq true5018 when user cannot manage owners5019 is expected to eq false5020 #can_remove?5021 when user is NOT attempting to remove an Owner5022 when user can destroy_project_member5023 is expected to eq true5024 when user cannot destroy_project_member5025 is expected to eq false5026 when user is attempting to remove an Owner5027 when user can manage owners5028 is expected to eq true5029 when user cannot manage owners5030 is expected to eq false5031 #can_approve?5032 when project_member has request an invite5033 and user can update_project_member5034 is expected to eq true5035 and user cannot update_project_member5036 is expected to eq false5037 when project_member did not request an invite5038 and user can update_project_member5039 is expected to eq false5040 and user cannot update_project_member5041 is expected to eq false5042 valid level roles5043 when user cannot manage owners5044 behaves like #valid_level_roles5045 when no parent member is present5046 returns all permissible roles5047 when parent member is present5048 returns higher roles when a parent member is present5049 when user can manage owners5050 behaves like #valid_level_roles5051 when no parent member is present5052 returns all permissible roles5053 when parent member is present5054 returns higher roles when a parent member is present5055Gitlab::QuickActions::CommandDefinition5056 #all_names5057 when the command has aliases5058 returns an array with the name and aliases5059 when the command doesn't have aliases5060 returns an array with the name5061 #noop?5062 when the command has an action block5063 returns false5064 when the command doesn't have an action block5065 returns true5066 #available?5067 when the command has a condition block5068 when the condition block returns true5069 returns true5070 when the condition block returns false5071 returns false5072 when the command doesn't have a condition block5073 returns true5074 when the command has types5075 when the command target type is allowed5076 returns true5077 when the command target type is Work Item5078 when the command is not allowed5079 returns false5080 when the command is allowed5081 returns true5082 when the command target type is not allowed5083 returns true5084 when the command has no types5085 any target type is allowed5086 #execute5087 when the command is a noop5088 doesn't execute the command5089 when the command is not a noop5090 when the command is not available5091 counts the command as executed5092 when the command is available5093 when the commnd has no arguments5094 when the command is provided an argument5095 executes the command5096 when the command is not provided an argument5097 executes the command5098 when the command has 1 required argument5099 when the command is provided an argument5100 executes the command5101 when the command is not provided an argument5102 doesn't execute the command5103 when the command has 1 optional argument5104 when the command is provided an argument5105 executes the command5106 when the command is not provided an argument5107 executes the command5108 when the command defines parse_params block5109 executes the command passing the parsed param5110 #execute_message5111 when the command is a noop5112 returns nil5113 when the command is not a noop5114 when the command is not available5115 returns an error message5116 when the command is available5117 when the execution_message is a static string5118 returns this static string5119 when the explanation is dynamic5120 invokes the proc5121 #explain5122 when the command is not available5123 returns nil5124 when the explanation is a static string5125 returns this static string5126 when warning is set5127 returns this static string5128 when the explanation is dynamic5129 invokes the proc5130Projects::Forks::SyncService5131 # order random5132 #execute5133 when fork is up-to-date with the upstream5134 does not perform merge5135 when fork is behind the upstream5136 when fork is not ahead of the upstream5137 updates the fork using ff merge5138 when fork is ahead of the upstream5139 and has conflicts with the upstream5140 returns an error5141 and does not have conflicts with the upstream5142 updates the fork using merge5143 when a merge cannot happen due to another ongoing merge5144 does not merge5145 when upstream branch contains lfs reference5146 links fetched lfs objects to the fork project5147 and there are too many of them for a single sync5148 updates the fork successfully5149Gitlab::ErrorTracking::Processor::SidekiqProcessor5150 .filter_arguments5151 returns a lazy enumerator5152 arguments filtering5153 klass: "UnknownWorker", expected: [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]5154 is expected to eq [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]5155 klass: "NoPermittedArguments", expected: [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]5156 is expected to eq [1, "[FILTERED]", "[FILTERED]", "[FILTERED]"]5157 klass: "OnePermittedArgument", expected: [1, "string", "[FILTERED]", "[FILTERED]"]5158 is expected to eq [1, "string", "[FILTERED]", "[FILTERED]"]5159 klass: "AllPermittedArguments", expected: [1, "string", [1, 2], {:a=>1}]5160 is expected to eq [1, "string", [1, 2], {:a=>1}]5161 .permitted_arguments_for_worker5162 returns the loggable_arguments for a worker class as a set5163 returns an empty set when the worker class does not exist5164 returns an empty set when the worker class does not respond to loggable_arguments5165 returns an empty set when loggable_arguments cannot be converted to a set5166 memoizes the results5167 .loggable_arguments5168 filters and limits the arguments, then converts to strings5169 .call5170 when there is Sidekiq data5171 when processing via the default error handler5172 with Raven events5173 for an unknown worker5174 only allows numeric arguments for an unknown worker5175 for a permitted worker5176 allows all argument types for a permitted worker5177 with Sentry events5178 for an unknown worker5179 only allows numeric arguments for an unknown worker5180 for a permitted worker5181 allows all argument types for a permitted worker5182 when processing via Gitlab::ErrorTracking5183 with Raven events5184 for an unknown worker5185 only allows numeric arguments for an unknown worker5186 for a permitted worker5187 allows all argument types for a permitted worker5188 with Sentry events5189 for an unknown worker5190 only allows numeric arguments for an unknown worker5191 for a permitted worker5192 allows all argument types for a permitted worker5193 with Raven events5194 behaves like handles jobstr fields5195 when a jobstr field is present5196 removes the jobstr5197 when no jobstr value is present5198 does nothing5199 with Sentry events5200 behaves like handles jobstr fields5201 when a jobstr field is present5202 removes the jobstr5203 when no jobstr value is present5204 does nothing5205 when there is no Sidekiq data5206 with Raven events5207 behaves like does nothing5208 does nothing5209 with Sentry events5210 behaves like does nothing5211 does nothing5212 when there is Sidekiq data but no job5213 with Raven events5214 behaves like does nothing5215 does nothing5216 with Sentry events5217 behaves like does nothing5218 does nothing5219Ci::UnitTestFailure5220 relationships5221 is expected to belong to build required: false5222 is expected to belong to unit_test required: false5223 validations5224 is expected to validate that :unit_test cannot be empty/falsy5225 is expected to validate that :build cannot be empty/falsy5226 is expected to validate that :failed_at cannot be empty/falsy5227 .recent_failures_count5228 when unit test failures are within the date range and are for the unit test keys5229 returns the number of failures for each unit test key hash for the past 14 days by default5230 when unit test failures are within the date range but are not for the unit test keys5231 excludes them from the count5232 when unit test failures are not within the date range but are for the unit test keys5233 excludes them from the count5234 partitioning5235 with build5236 copies the partition_id from build5237 when it is already set5238 does not change the partition_id value5239 without build5240 is expected to validate that :partition_id cannot be empty/falsy5241 does not change the partition_id value5242Gitlab::Ci::Pipeline::Expression::Lexeme::And5243 .build5244 creates a new instance of the token5245 with non-evaluable operands5246 raises an operator error5247 .type5248 is an operator5249 .precedence5250 has a precedence5251 #evaluate5252 when left and right are truthy5253 left_value: true, right_value: 15254 is expected to be truthy5255 is expected to eq 15256 left_value: true, right_value: "a"5257 is expected to be truthy5258 is expected to eq "a"5259 left_value: 1, right_value: true5260 is expected to be truthy5261 is expected to eq true5262 left_value: 1, right_value: "a"5263 is expected to be truthy5264 is expected to eq "a"5265 left_value: "a", right_value: true5266 is expected to be truthy5267 is expected to eq true5268 left_value: "a", right_value: 15269 is expected to be truthy5270 is expected to eq 15271 when left or right is falsey5272 left_value: true, right_value: false5273 is expected to be falsey5274 left_value: true, right_value: nil5275 is expected to be falsey5276 left_value: false, right_value: true5277 is expected to be falsey5278 left_value: false, right_value: nil5279 is expected to be falsey5280 left_value: nil, right_value: true5281 is expected to be falsey5282 left_value: nil, right_value: false5283 is expected to be falsey5284 when left and right are falsey5285 left_value: false, right_value: nil5286 is expected to be falsey5287 is expected to eq false5288 left_value: nil, right_value: false5289 is expected to be falsey5290 is expected to eq nil5291Gitlab::Ci::Status::Build::Cancelable5292 #text5293 does not override status text5294 #icon5295 does not override status icon5296 #label5297 does not override status label5298 #group5299 does not override status group5300 #status_tooltip5301 does not override status status_tooltip5302 #badge_tooltip5303 returns the status5304 action details5305 #has_action?5306 when user is allowed to update build5307 is expected to have action5308 when user is not allowed to update build5309 is expected not to have action5310 #action_path5311 is expected to include "139/cancel"5312 #action_icon5313 is expected to eq "cancel"5314 #action_title5315 is expected to eq "Cancel"5316 #action_button_title5317 is expected to eq "Cancel this job"5318 .matches?5319 when build is cancelable5320 is a correct match5321 when build is not cancelable5322 does not match5323Gitlab::Auth::OAuth::AuthHash5324 defaults5325 is expected to eq "ldap"5326 is expected to eql "CN=Onur Küçük,OU=Test,DC=example,DC=net"5327 is expected to eql "onur.küçük_ABC-123@example.net"5328 is expected to eql "oküçük"5329 is expected to eql "Onur Küçük"5330 is expected not to be empty5331 is expected to eq "some locality, some country"5332 email not provided5333 generates a temp email5334 username not provided5335 takes the first part of the email as username5336 name not provided5337 concats first and lastname as the name5338 custom username field provided5339 uses the custom field for the username within info5340 uses the custom field for the username within extra.raw_info5341 uses the default claim for the username when the custom claim is not found5342 uses the default claim for the username when the custom claim is empty5343 uses the default claim for the username when the custom claim is nil5344 auth_hash constructed with ASCII-8BIT encoding5345 forces utf8 encoding on uid5346 forces utf8 encoding on provider5347 forces utf8 encoding on name5348 forces utf8 encoding on username5349 forces utf8 encoding on email5350 forces utf8 encoding on password5351 #get_from_auth_hash_or_info5352 for a key not within auth_hash5353 provides username from info_hash5354 for a key within auth_hash5355 provides username from auth_hash5356 for a key within auth_hash extra5357 provides username from auth_hash extra5358Ci::PipelineSchedules::CreateService5359 # order random5360 execute5361 when user does not have permission5362 returns ServiceResponse.error5363 when user has permission5364 saves values with passed params5365 returns ServiceResponse.success5366 when schedule save fails5367 returns ServiceResponse.error5368 behaves like pipeline schedules checking variables permission5369 when sending variables5370 when user is maintainer5371 behaves like success response with variables5372 saves variables5373 behaves like success response5374 saves values with passed params5375 when user is developer5376 behaves like success response with variables5377 saves variables5378 behaves like success response5379 saves values with passed params5380 when restrict_user_defined_variables is true5381 behaves like success response with variables5382 saves variables5383 behaves like success response5384 saves values with passed params5385 when user is developer5386 behaves like failure response5387 does not save5388 when not sending variables5389 when user is maintainer5390 behaves like success response5391 saves values with passed params5392 when user is developer5393 behaves like success response5394 saves values with passed params5395 when restrict_user_defined_variables is true5396 behaves like success response5397 saves values with passed params5398 when user is developer5399 behaves like success response5400 saves values with passed params5401Gitlab::GithubImport::Importer::IssueImporter5402 .import_if_issue5403 imports an issuable if it is a regular issue5404 does not import the issuable if it is a pull request5405 #execute5406 creates the issue and assignees and updates_search_data5407 #create_issue5408 creates issues with a work item type id5409 produces a valid Issue5410 returns the ID of the created issue5411 when the issue author could be found5412 creates the issue with the found author as the issue author5413 when the issue author could not be found5414 creates the issue with the project creator as the issue author5415 when the import fails due to a foreign key error5416 does not raise any errors5417 #create_assignees5418 inserts the issue assignees in bulk5419Gitlab::RepositoryHashCache5420 #cache_key5421 includes the namespace5422 with a given namespace5423 includes the full namespace5424 #delete5425 key exists5426 is expected to eq 15427 deletes the given key from the cache5428 key doesn't exist5429 is expected to eq 05430 multiple keys5431 deletes multiple keys5432 returns deleted key count5433 #key?5434 key exists5435 is expected to equal true5436 key doesn't exist5437 is expected to equal false5438 #read_members5439 all data is cached5440 is expected to eq {"missing"=>"false", "test"=>"value"}5441 partial data is cached5442 is expected to eq {"missing"=>nil, "test"=>"value"}5443 no data is cached5444 is expected to eq {"missing"=>nil, "test"=>nil}5445 empty keys are passed for some reason5446 raises an error5447 #write5448 is expected to equal true5449 actually writes stuff to Redis5450 #fetch_and_add_missing5451 records metrics5452 fully cached5453 returns a hash5454 doesn't write to the cache5455 partially cached5456 returns a hash5457 writes to the cache5458 uncached5459 returns a hash5460 writes to the cache5461Git::TagPushService5462 Push tags5463 flushes general cached data5464 does not flush the tags cache5465 Hooks5466 run on a tag5467 delegates to Git::TagHooksService5468 run on a branch5469 does nothing5470 artifacts5471 create tag5472 does nothing5473 update tag5474 does nothing5475 delete tag5476 unlocks artifacts5477Gitlab::Logger5478 .build5479 builds logger using Gitlab::Logger.log_level5480 raises ArgumentError if invalid log level5481 env_value: "debug", resulting_level: 05482 builds logger if valid log level is provided5483 env_value: "DEBUG", resulting_level: 05484 builds logger if valid log level is provided5485 env_value: "DeBuG", resulting_level: 05486 builds logger if valid log level is provided5487 env_value: "info", resulting_level: 15488 builds logger if valid log level is provided5489 env_value: "INFO", resulting_level: 15490 builds logger if valid log level is provided5491 env_value: "InFo", resulting_level: 15492 builds logger if valid log level is provided5493 env_value: "warn", resulting_level: 25494 builds logger if valid log level is provided5495 env_value: "WARN", resulting_level: 25496 builds logger if valid log level is provided5497 env_value: "WaRn", resulting_level: 25498 builds logger if valid log level is provided5499 env_value: "error", resulting_level: 35500 builds logger if valid log level is provided5501 env_value: "ERROR", resulting_level: 35502 builds logger if valid log level is provided5503 env_value: "ErRoR", resulting_level: 35504 builds logger if valid log level is provided5505 env_value: "fatal", resulting_level: 45506 builds logger if valid log level is provided5507 env_value: "FATAL", resulting_level: 45508 builds logger if valid log level is provided5509 env_value: "FaTaL", resulting_level: 45510 builds logger if valid log level is provided5511 env_value: "unknown", resulting_level: 55512 builds logger if valid log level is provided5513 env_value: "UNKNOWN", resulting_level: 55514 builds logger if valid log level is provided5515 env_value: "UnKnOwN", resulting_level: 55516 builds logger if valid log level is provided5517 .log_level5518 if GITLAB_LOG_LEVEL is set5519 returns value defined by GITLAB_LOG_LEVEL5520 ignores fallback5521 if GITLAB_LOG_LEVEL is not set5522 returns default fallback DEBUG5523 returns passed fallback5524ProductAnalyticsEvent5525 is expected to belong to project required: false5526 is expected to respond to #order_by_time5527 validations5528 is expected to validate that :project_id cannot be empty/falsy5529 is expected to validate that :event_id cannot be empty/falsy5530 is expected to validate that :v_collector cannot be empty/falsy5531 is expected to validate that :v_etl cannot be empty/falsy5532 .timerange5533 is expected to contain exactly #<ProductAnalyticsEvent id: 1, project_id: 1226, platform: "web", etl_tstamp: nil, collector_tstamp: ...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>5534 is expected to contain exactly #<ProductAnalyticsEvent id: 1, project_id: 1226, platform: "web", etl_tstamp: nil, collector_tstamp: ...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil> and #<ProductAnalyticsEvent id: 2, project_id: 1227, platform: "web", etl_tstamp: nil, collector_tstamp: ...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>5535 is expected to contain exactly #<ProductAnalyticsEvent id: 1, project_id: 1226, platform: "web", etl_tstamp: nil, collector_tstamp: ...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>, #<ProductAnalyticsEvent id: 2, project_id: 1227, platform: "web", etl_tstamp: nil, collector_tstamp: ...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>, and #<ProductAnalyticsEvent id: 3, project_id: 1228, platform: "web", etl_tstamp: nil, collector_tstamp: ...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>5536 .count_by_graph5537 is expected to eq {"app"=>1, "web"=>2}5538 is expected to eq {"app"=>1, "mobile"=>1, "web"=>2}5539 .count_collector_tstamp_by_day5540 is expected to eq {2023-08-18 00:00:00.000000000 +0000=>3, 2023-08-13 00:00:00.000000000 +0000=>2}5541GitlabEdition5542 .root5543 returns the root path of the app5544 .path_glob5545 ee: false, jh: false, path: nil, expected: ""5546 is expected to eq "/builds/gitlab-org/gitlab/"5547 ee: true, jh: false, path: nil, expected: "{,ee/}"5548 is expected to eq "/builds/gitlab-org/gitlab/{,ee/}"5549 ee: true, jh: true, path: nil, expected: "{,ee/,jh/}"5550 is expected to eq "/builds/gitlab-org/gitlab/{,ee/,jh/}"5551 ee: false, jh: true, path: nil, expected: "{,ee/,jh/}"5552 is expected to eq "/builds/gitlab-org/gitlab/{,ee/,jh/}"5553 ee: false, jh: false, path: "app/models", expected: "app/models"5554 is expected to eq "/builds/gitlab-org/gitlab/app/models"5555 ee: true, jh: false, path: "app/models", expected: "{,ee/}app/models"5556 is expected to eq "/builds/gitlab-org/gitlab/{,ee/}app/models"5557 ee: true, jh: true, path: "app/models", expected: "{,ee/,jh/}app/models"5558 is expected to eq "/builds/gitlab-org/gitlab/{,ee/,jh/}app/models"5559 ee: false, jh: true, path: "app/models", expected: "{,ee/,jh/}app/models"5560 is expected to eq "/builds/gitlab-org/gitlab/{,ee/,jh/}app/models"5561 .extension_path_prefixes5562 ee: false, jh: false, expected: ""5563 is expected to eq ""5564 ee: true, jh: false, expected: "{,ee/}"5565 is expected to eq "{,ee/}"5566 ee: true, jh: true, expected: "{,ee/,jh/}"5567 is expected to eq "{,ee/,jh/}"5568 ee: false, jh: true, expected: "{,ee/,jh/}"5569 is expected to eq "{,ee/,jh/}"5570 .extensions5571 when .jh? is true5572 returns %w[ee jh]5573 when .ee? is true5574 returns %w[ee]5575 when neither .jh? and .ee? are true5576 returns the extensions according to the current edition5577 .ee? and .jh?5578 .ee?5579 when EE5580 when using FOSS_ONLY=15581 returns not to be EE5582 when using FOSS_ONLY=05583 returns to be EE5584 when using default FOSS_ONLY5585 returns to be EE5586 when CE5587 returns not to be EE5588 .jh?5589 when JH5590 when using default FOSS_ONLY and EE_ONLY5591 returns to be JH5592 when using FOSS_ONLY=15593 returns not to be JH5594 when using EE_ONLY=15595 returns not to be JH5596API::Entities::Project5597 without project feature5598 returns a response5599 .service_desk_address5600 when a user can admin issues5601 is present5602 when a user can not admin project5603 is empty5604 .shared_with_groups5605 when the current user does not have access to the group5606 is empty5607 when the current user has access to the group5608 contains information about the shared group5609 .ci/cd settings5610 when the user is not an admin5611 does not return ci settings5612 when the user has admin privileges5613 returns ci settings5614Projects::DeployTokens::CreateService5615 behaves like a deploy token creation service5616 #execute5617 when the deploy token is valid5618 creates a new DeployToken5619 creates a new ProjectDeployToken5620 returns a DeployToken5621 sets the creator_id as the id of the current_user5622 when expires at date is not passed5623 sets Forever.date5624 when username is empty string5625 converts it to nil5626 when username is provided5627 keeps the provided username5628 when the deploy token is invalid5629 does not create a new DeployToken5630 does not create a new ProjectDeployToken5631Types::BaseEnum5632 adds a formatted `deprecated_reason` to the subject5633 appends to the description if given5634 does not append to the description if it is absent5635 adds information about the replacement if provided5636 supports named reasons: renamed5637 supports named reasons: alpha5638 supports :alpha5639 does not allow :alpha and :deprecated together5640 .from_rails_enum5641 contructs the correct values5642 .declarative_enum5643 #graphql_name5644 when the use_name is `true`5645 changes the graphql_name5646 when the use_name is `false`5647 does not change the graphql_name5648 #description5649 when the use_description is `true`5650 changes the description5651 when the use_description is `false`5652 does not change the description5653 #values5654 sets the values defined by the declarative enum5655 .enum5656 adds all enum values to #enum5657 is a HashWithIndefferentAccess5658 validations5659 raises an informative error if `deprecation_reason` is used5660 raises an error if a required property is missing5661 raises an error if milestone is not a String5662 visible?5663 defaults to true5664 when subject is deprecated5665 defaults to true5666 returns false if `remove_deprecated` is true in context5667DesignManagement::DesignsFinder5668 #execute5669 when user can not read designs of an issue5670 returns no results5671 when user can read designs of an issue5672 when design management feature is disabled5673 returns no results5674 when design management feature is enabled5675 returns the designs sorted by their relative position5676 when argument is the ids of designs5677 is expected to eq [#<DesignManagement::Design id:12 namespace1274/project-1308#1/designs[homescreen-15.jpg]>]5678 when argument is the filenames of designs5679 is expected to eq [#<DesignManagement::Design id:13 namespace1274/project-1308#1/designs[homescreen-16.jpg]>]5680 when passed empty array5681 for filenames5682 is expected to be empty5683 for ids5684 is expected to be empty5685 returning designs that existed at a particular given version5686 when argument is the first version5687 is expected to eq [#<DesignManagement::Design id:12 namespace1274/project-1308#1/designs[homescreen-15.jpg]>]5688 when arguments are version and id5689 when id is absent at version5690 is expected to eq []5691 when id is present at version5692 is expected to eq [#<DesignManagement::Design id:13 namespace1274/project-1308#1/designs[homescreen-16.jpg]>]5693 when argument is the second version5694 is expected to contain exactly #<DesignManagement::Design id:12 namespace1274/project-1308#1/designs[homescreen-15.jpg]> and #<DesignManagement::Design id:13 namespace1274/project-1308#1/designs[homescreen-16.jpg]>5695Gitlab::X509::Certificate5696 testing environment setup5697 generate_root5698 generates a root CA that expires a long way in the future5699 generate_intermediate5700 generates an intermediate CA that expires a long way in the future5701 generates an intermediate CA properly signed by the root CA5702 generate_cert5703 generates a cert properly signed by the intermediate CA5704 generates a cert that expires soon5705 generates a cert intended for email signing5706 passing in INFINITE_EXPIRY5707 generates a cert that expires a long way in the future5708 .from_strings5709 parses correctly a certificate and key5710 .from_files5711 parses correctly a certificate and key5712 with optional ca_certs5713 parses correctly certificate, key and ca_certs5714 with no intermediate CA5715 parses correctly a certificate and key5716 .default_cert_dir5717 when SSL_CERT_DIR env variable is not set5718 returns default directory from OpenSSL5719 when SSL_CERT_DIR env variable is set5720 returns specified directory5721 .default_cert_file5722 when SSL_CERT_FILE env variable is not set5723 returns default file from OpenSSL5724 when SSL_CERT_FILE env variable is set5725 returns specified file5726 .ca_certs_paths5727 returns all files specified by OpenSSL defaults5728 .ca_certs_bundle5729 skips certificates if OpenSSLError is raised and report it5730 returns a list certificates as strings5731 .load_ca_certs_bundle5732 loads a PEM-encoded certificate bundle into an OpenSSL::X509::Certificate array5733RuboCop::Cop::Migration::SaferBooleanColumn5734 # order random5735 in migration5736 registers no offense for tables not listed in SMALL_TABLES5737 registers no offense for non-boolean columns5738 for the application_settings table5739 given the source "add_column :application_settings, :column, :boolean, default: true"5740 registers the offense matching "should disallow nulls"5741 given the source "add_column :application_settings, :column, :boolean, default: false"5742 registers the offense matching "should disallow nulls"5743 given the source "add_column :application_settings, :column, :boolean, default: nil"5744 registers the offense matching "should have a default and should disallow nulls"5745 given the source "add_column :application_settings, :column, :boolean, null: false"5746 registers the offense matching "should have a default"5747 given the source "add_column :application_settings, :column, :boolean, null: true"5748 registers the offense matching "should have a default and should disallow nulls"5749 given the source "add_column :application_settings, :column, :boolean"5750 registers the offense matching "should have a default and should disallow nulls"5751 given the source "add_column :application_settings, :column, :boolean, default: nil, null: false"5752 registers the offense matching "should have a default"5753 given the source "add_column :application_settings, :column, :boolean, default: nil, null: true"5754 registers the offense matching "should have a default and should disallow nulls"5755 given the source "add_column :application_settings, :column, :boolean, default: false, null: true"5756 registers the offense matching "should disallow nulls"5757 given the source "add_column :application_settings, :column, :boolean, default: true, null: false"5758 registers no offense5759 given the source "add_column :application_settings, :column, :boolean, default: false, null: false"5760 registers no offense5761 for the plan_limits table5762 given the source "add_column :plan_limits, :column, :boolean, default: true"5763 registers the offense matching "should disallow nulls"5764 given the source "add_column :plan_limits, :column, :boolean, default: false"5765 registers the offense matching "should disallow nulls"5766 given the source "add_column :plan_limits, :column, :boolean, default: nil"5767 registers the offense matching "should have a default and should disallow nulls"5768 given the source "add_column :plan_limits, :column, :boolean, null: false"5769 registers the offense matching "should have a default"5770 given the source "add_column :plan_limits, :column, :boolean, null: true"5771 registers the offense matching "should have a default and should disallow nulls"5772 given the source "add_column :plan_limits, :column, :boolean"5773 registers the offense matching "should have a default and should disallow nulls"5774 given the source "add_column :plan_limits, :column, :boolean, default: nil, null: false"5775 registers the offense matching "should have a default"5776 given the source "add_column :plan_limits, :column, :boolean, default: nil, null: true"5777 registers the offense matching "should have a default and should disallow nulls"5778 given the source "add_column :plan_limits, :column, :boolean, default: false, null: true"5779 registers the offense matching "should disallow nulls"5780 given the source "add_column :plan_limits, :column, :boolean, default: true, null: false"5781 registers no offense5782 given the source "add_column :plan_limits, :column, :boolean, default: false, null: false"5783 registers no offense5784 outside of migration5785 registers no offense5786Lfs::LocksFinderService5787 #execute5788 find by id5789 with results5790 returns the record5791 without results5792 returns an empty list5793 find by path5794 with results5795 returns the record5796 without results5797 returns an empty list5798 find all5799 with results5800 returns all the records5801 without results5802 returns an empty list5803 when an error is raised5804 doesn't succeed5805UserStatus5806 is expected to validate that :user cannot be empty/falsy5807 is expected to allow :emoji to be ‹"smirk"›5808 is expected not to allow :emoji to be ‹"hello world"›5809 is expected not to allow :emoji to be ‹""›5810 is expected to validate that the length of :message is at most 1005811 is expected to allow :message to be ‹""›5812 is expected to be deleted when the user is deleted5813 #clear_status_after5814 is an alias of #clear_status_at5815 #clear_status_after=5816 sets clear_status_at5817 unsets clear_status_at5818 when unknown clear status is given5819 unsets clear_status_at5820 #customized?5821 is customized when message text is present5822 is not customized when message text is absent5823 is customized without message but with custom emoji5824 is not customized without message but with default custom emoji5825LfsDownloadObject5826 #headers5827 returns specified Hash5828 with nil headers5829 returns a Hash5830 #has_authorization_header?5831 returns false5832 with uppercase form5833 returns true5834 with lowercase form5835 returns true5836 validations5837 is expected to validate that :size looks like a number greater than or equal to 05838 oid attribute5839 must be 64 characters long5840 must contain only hexadecimal characters5841 link attribute5842 only http and https protocols are valid5843 cannot be empty5844 when localhost or local network addresses5845 are allowed5846 is expected to be valid5847 are not allowed5848 is expected to be invalid5849 headers attribute5850 only nil and Hash values are valid5851Gitlab::Ci::Config::Entry::Product::Matrix5852 validations5853 when entry config value is correct5854 #valid?5855 is expected to be valid5856 when entry config generates too many jobs5857 #valid?5858 is expected not to be valid5859 #errors5860 returns error about too many jobs5861 when entry config has only one variable with multiple values5862 #valid?5863 is expected to be valid5864 #errors5865 returns no errors5866 #value5867 returns the value without raising an error5868 when entry config has only one variable with one value5869 #valid?5870 is expected to be valid5871 #errors5872 returns no errors5873 #value5874 returns the value without raising an error5875 when config value has wrong type5876 #valid?5877 is expected not to be valid5878 #errors5879 returns error about incorrect type5880 .compose!5881 when valid job entries composed5882 #value5883 returns key value5884 #descendants5885 creates valid descendant nodes5886 with empty config5887 #value5888 returns empty value5889 #number_of_generated_jobs5890 with empty config5891 is expected to be zero5892 with only one variable5893 is expected to eq 105894 with two variables5895 is expected to eq 505896 with two sets of variables5897 is expected to eq 565898Gitlab::Ci::Config::Extendable::Entry5899 .new5900 when entry key is not included in the context hash5901 raises error5902 #value5903 reads a hash value from the context5904 #extensible?5905 when entry has inheritance defined5906 is extensible5907 when entry does not have inheritance specified5908 is not extensible5909 when entry value is not a hash5910 is not extensible5911 #extends_keys5912 when entry is extensible5913 returns symbolized extends key value5914 when entry is not extensible5915 returns nil5916 #ancestors5917 returns ancestors keys5918 #base_hashes!5919 when base hash is not extensible5920 returns unchanged base hashes5921 when base hash is extensible too5922 extends the base hashes first5923 mutates original context5924 #extend!5925 when extending a non-hash value5926 raises an error5927 when extending unknown key5928 raises an error5929 when extending a hash correctly5930 returns extended part of the hash5931 mutates original context5932 when extending multiple hashes correctly5933 returns extended part of the hash5934 mutates original context5935 when hash is not extensible5936 returns original key value5937 does not mutate orignal context5938 when circular depenency gets detected5939 raises an error5940 when nesting level is too deep5941 raises an error5942Gitlab::Ci::Badge::Release::LatestRelease5943 #entity5944 describes latest release5945 #tag5946 returns latest release tag for the project ordered using release_at5947 #metadata5948 returns correct metadata5949 #template5950 returns correct template5951Gitlab::Ci::Pipeline::Chain::Seed5952 #perform!5953 allocates next IID5954 ensures ci_ref5955 sets the seeds in the command object5956 when no ref policy is specified5957 correctly fabricates stages and builds5958 when refs policy is specified5959 returns pipeline seed with jobs only assigned to master5960 when source policy is specified5961 returns pipeline seed with jobs only assigned to schedules5962 when kubernetes policy is specified5963 when kubernetes is active5964 when user configured kubernetes from CI/CD > Clusters5965 returns seeds for kubernetes dependent job5966 when kubernetes is not active5967 does not return seeds for kubernetes dependent job5968 when variables policy is specified5969 returns stage seeds only when variables expression is truthy5970 when there is seeds_block5971 does not execute the block5972 #root_variables5973 sends root variable with overridden by rules5974 #rule_variables5975 correctly parses rule variables5976 N+1 queries5977 avoids N+1 queries when calculating variables of jobs5978Repositories::TreeFinder5979 #execute5980 returns an array5981 includes 20 items by default5982 accepts a gitaly_pagination argument5983 commit doesn't exist5984 raises an error5985 pagination_params5986 has the per_page number of items5987 doesn't include any of the first page records5988 #total5989 is expected to be a kind of Integer5990 only calculates the total once5991 #commit_exists?5992 ref exists5993 is expected to equal true5994 ref is missing5995 is expected to equal false5996Gitlab::ImportExport::Project::Sample::RelationFactory5997 issue object5998DEPRECATION WARNING: ActiveSupport::TimeWithZone.name has been deprecated and5999from Rails 7.1 will use the default Ruby implementation.6000You can set `config.active_support.remove_deprecated_time_with_zone_name = true`6001to enable the new behavior now.6002 (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb:55)6003 correctly updated due date6004 milestone object6005DEPRECATION WARNING: ActiveSupport::TimeWithZone.name has been deprecated and6006from Rails 7.1 will use the default Ruby implementation.6007You can set `config.active_support.remove_deprecated_time_with_zone_name = true`6008to enable the new behavior now.6009 (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb:86)6010 correctly updated due date6011DEPRECATION WARNING: ActiveSupport::TimeWithZone.name has been deprecated and6012from Rails 7.1 will use the default Ruby implementation.6013You can set `config.active_support.remove_deprecated_time_with_zone_name = true`6014to enable the new behavior now.6015 (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb:93)6016 correctly updated start date6017 milestone object6018DEPRECATION WARNING: ActiveSupport::TimeWithZone.name has been deprecated and6019from Rails 7.1 will use the default Ruby implementation.6020You can set `config.active_support.remove_deprecated_time_with_zone_name = true`6021to enable the new behavior now.6022 (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb:124)6023 correctly updated due date6024DEPRECATION WARNING: ActiveSupport::TimeWithZone.name has been deprecated and6025from Rails 7.1 will use the default Ruby implementation.6026You can set `config.active_support.remove_deprecated_time_with_zone_name = true`6027to enable the new behavior now.6028 (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb:131)6029 correctly updated start date6030 hook object6031 does not calculate the closest date to average6032Groups::ObservabilityHelper6033 # order random6034 #observability_page_title6035 returns the title for action: dashboards6036 returns the title for action: manage6037 returns the title for action: explore6038 returns the title for action: datasources6039 returns the default title for unknown action6040 #observability_iframe_src6041 returns the iframe src for action: dashboards6042 returns the iframe src for action: manage6043 returns the iframe src for action: explore6044 returns the iframe src for action: datasources6045 returns the iframe src when action is not recognised6046 returns the iframe src when observability_path is missing6047TwoFactor::DestroyService6048 disabling two-factor authentication6049 when the user does not have two-factor authentication enabled6050 returns error6051 behaves like does not send notification email6052 notification6053 does not send a notification6054 when the user has two-factor authentication enabled6055 when the executor is not authorized to disable two-factor authentication6056 disabling the two-factor authentication of another user6057 returns error6058 does not disable two-factor authentication6059 behaves like does not send notification email6060 notification6061 does not send a notification6062 when the executor is authorized to disable two-factor authentication6063 disabling their own two-factor authentication6064 behaves like disables two-factor authentication6065 returns success6066 disables the two-factor authentication of the user6067 notification6068 sends a notification6069 admin disables the two-factor authentication of another user6070 behaves like disables two-factor authentication6071 returns success6072 disables the two-factor authentication of the user6073 notification6074 sends a notification6075Gitlab::GlobalId6076 .build6077 returns a standard GlobalId if only object is passed6078 returns a GlobalId from params6079 returns a GlobalId from object and `id` param6080 returns a GlobalId from object and `model_name` param6081 returns an error if model_name and id are not able to be determined6082 .as_global_id6083 is the identify function on GlobalID instances6084 wraps URI::GID in GlobalID6085 cannot coerce Integers without a model name6086 can coerce Integers with a model name6087 rejects any other value6088Gitlab::HookData::BaseBuilder6089 #absolute_image_urls6090 with an upload prefix specified6091 relative image URL6092 is expected to eq ""6093 absolute upload URL6094 is expected to eq ""6095 absolute non-upload URL6096 is expected to eq ""6097 without an upload prefix specified6098 relative image URL6099 is expected to eq ""6100 absolute upload URL6101 is expected to eq ""6102 absolute non-upload URL6103 is expected to eq ""6104 HTTP URL6105 is expected to eq ""6106 HTTPS URL6107 is expected to eq ""6108 protocol-relative URL6109 is expected to eq ""6110 URL reference by title6111 is expected to eq "![foo]\n\n[foo]: foo.png"6112 URL reference by label6113 is expected to eq "![][foo]\n\n[foo]: foo.png"6114 in Markdown inline code block6115 is expected to eq "``"6116 in HTML tag on the same line6117 is expected to eq "<p></p>"6118 in Markdown multi-line code block6119 is expected to eq "```\n\n```"6120 in HTML tag on different lines6121 is expected to eq "<p>\n\n</p>"6122Bitbucket::Representation::Repo6123 #has_wiki?6124 is expected to be falsey6125 is expected to be truthy6126 #name6127 is expected to eq "test"6128 #valid?6129 is expected to be falsey6130 is expected to be truthy6131 #full_name6132 is expected to eq "test_full"6133 #description6134 is expected to eq "desc"6135 #issues_enabled?6136 is expected to be falsey6137 is expected to be truthy6138 #owner_and_slug6139 is expected to eq ["ben", "test"]6140 #owner6141 is expected to eq "ben"6142 #slug6143 is expected to eq "test"6144 #clone_url6145 builds url6146ProtectedBranches::CreateService6147 with entity project6148 behaves like execute with entity6149 #execute6150 creates a new protected branch6151 refreshes the cache6152 when protecting a branch with a name that contains HTML tags6153 creates a new protected branch6154 when a policy restricts rule creation6155 prevents creation of the protected branch rule6156 creates a new protected branch if we skip authorization step6157 with entity group6158 behaves like execute with entity6159 #execute6160 creates a new protected branch6161 refreshes the cache6162 when protecting a branch with a name that contains HTML tags6163 creates a new protected branch6164 when a policy restricts rule creation6165 prevents creation of the protected branch rule6166 creates a new protected branch if we skip authorization step6167DraftNotes::DestroyService6168 destroys a single draft note6169 destroys all draft notes for a user in a merge request6170 diff highlight cache clearing6171 when destroying all draft notes of a user6172 clears highlighting cache if unfold required for any6173 when destroying one draft note6174 clears highlighting cache if unfold required6175ServiceDesk::CustomEmails::DestroyService6176 # order random6177 #execute6178 when feature flag service_desk_custom_email is disabled6179 behaves like a service that exits with error6180 exits early6181 with illegitimate user6182 behaves like a service that exits with error6183 exits early6184 with legitimate user6185 behaves like a service that exits with error6186 exits early6187 when service desk setting exists6188 behaves like a successful service that destroys all custom email records6189 ensures no custom email records exist6190 when custom email is present6191 behaves like a successful service that destroys all custom email records6192 ensures no custom email records exist6193 when credential exists6194 behaves like a successful service that destroys all custom email records6195 ensures no custom email records exist6196 when verification exists6197 behaves like a successful service that destroys all custom email records6198 ensures no custom email records exist6199gitlab:artifacts rake tasks6200 check6201 outputs the integrity check for each batch6202 errors out about missing files on the file system6203 errors out about invalid checksum6204 errors out about missing checksum6205Gitlab::GithubImport::Importer::Attachments::ReleasesImporter6206 # order random6207 #sequential_import6208 imports each project release6209 when note is already processed6210 doesn't import this release6211 #sidekiq_worker_class6212 is expected to eq Gitlab::GithubImport::Attachments::ImportReleaseWorker6213 #collection_method6214 is expected to eq :release_attachments6215 #id_for_already_imported_cache6216 is expected to eq 10916217 #object_type6218 is expected to eq :release_attachment6219FileStoreMounter6220 # order random6221 .mount_file_store_uploader6222 skip_store_file: true, file_field: :file6223 defines instance methods and registers a callback6224 skip_store_file: false, file_field: :file6225 defines instance methods and registers a callback6226 skip_store_file: false, file_field: :signed_file6227 defines instance methods and registers a callback6228 skip_store_file: true, file_field: :signed_file6229 defines instance methods and registers a callback6230 with an unknown file_field6231 is expected to raise ArgumentError with "file_field not allowed: unknown"6232 with an instance6233 #update_file_store6234 calls update column6235 #store_file_now!6236 calls the dynamic functions6237BlobViewer::PackageJson6238 #package_name6239 returns the package name6240 yarn6241 #package_url6242 returns the package URL6243 #manager_url6244 returns the manager URL6245 when json is an array6246 does not raise an error6247 npm6248 #package_url6249 returns the package URL6250 #manager_url6251 returns the manager URL6252 #package_type6253 returns "package"6254 when package.json has "private": true6255 #package_url6256 when the homepage has a valid URL6257 returns homepage URL6258 when the homepage has an invalid URL6259 returns nil6260 #package_type6261 returns "private package"6262Gitlab::ContainerRepository::Tags::Cache6263 #populate6264 with tags6265 gets values from redis6266 with cached values6267 gets values from redis6268 with no tags6269 behaves like not interacting with redis6270 does not interact with redis6271 #insert6272 with tags6273 inserts values in redis6274 with some of them already cached6275 behaves like not interacting with redis6276 does not interact with redis6277 with no tags6278 behaves like not interacting with redis6279 does not interact with redis6280 with no expires_in6281 behaves like not interacting with redis6282 does not interact with redis6283Gitlab::DependencyLinker::PackageJsonLinker6284 .support?6285 supports package.json6286 does not support other files6287 #link6288 does not link the module name6289 links the homepage6290 links the repository URL6291 links the license6292 links dependencies6293 links dependencies to URL detected on value6294 does not link to NPM when invalid git URL6295 links GitHub repos6296 links Git repos6297 does not link scripts with the same key as a package6298Gitlab::Ci::Reports::Security::Identifier6299 #initialize6300 when all params are given6301 initializes an instance6302 when attribute external_type is missing6303 raises an error6304 when attribute external_id is missing6305 raises an error6306 when attribute name is missing6307 raises an error6308 #key6309 returns fingerprint6310 #type_identifier?6311 external_type: "cve", expected_result: false6312 is expected to equal false6313 external_type: "foo", expected_result: false6314 is expected to equal false6315 external_type: "cwe", expected_result: true6316 is expected to equal true6317 external_type: "wasc", expected_result: true6318 is expected to equal true6319 external type check methods6320 external_type: "Foo", is_cve?: false, is_cwe?: false, is_wasc?: false6321 returns correct result for the type check method6322 external_type: "Cve", is_cve?: true, is_cwe?: false, is_wasc?: false6323 returns correct result for the type check method6324 external_type: "Cwe", is_cve?: false, is_cwe?: true, is_wasc?: false6325 returns correct result for the type check method6326 external_type: "Wasc", is_cve?: false, is_cwe?: false, is_wasc?: true6327 returns correct result for the type check method6328 #to_hash6329 returns expected hash6330 #==6331 when external_type and external_id are equal6332 returns true6333 when external_type is different6334 returns false6335 when external_id is different6336 returns false6337Gitlab::UsageDataNonSqlMetrics6338 #add_metric6339 computes the metric value for given metric6340 .count6341 returns default value for count6342 .distinct_count6343 returns default value for distinct count6344 .estimate_batch_distinct_count6345 returns default value for estimate_batch_distinct_count6346 .sum6347 returns default value for sum6348 .histogram6349 returns default value for histogram6350 min/max methods6351 model: User(id: integer, email: string, encrypted_password: string, reset_password_token: string, reset_password_sent_at: datetime, remember_created_at: datetime, sign_in_count: integer, current_sign_in_at: datetime, last_sign_in_at: datetime, current_sign_in_ip: string, last_sign_in_ip: string, created_at: datetime, updated_at: datetime, name: string, admin: boolean, projects_limit: integer, failed_attempts: integer, locked_at: datetime, username: string, can_create_group: boolean, can_create_team: boolean, state: string, color_scheme_id: integer, password_expires_at: datetime, created_by_id: integer, last_credential_check_at: datetime, avatar: string, confirmation_token: string, confirmed_at: datetime, confirmation_sent_at: datetime, unconfirmed_email: string, hide_no_ssh_key: boolean, admin_email_unsubscribed_at: datetime, notification_email: string, hide_no_password: boolean, password_automatically_set: boolean, encrypted_otp_secret: string, encrypted_otp_secret_iv: string, encrypted_otp_secret_salt: string, otp_required_for_login: boolean, otp_backup_codes: text, public_email: string, dashboard: integer, project_view: integer, consumed_timestep: integer, layout: integer, hide_project_limit: boolean, note: text, unlock_token: string, otp_grace_period_started_at: datetime, external: boolean, incoming_email_token: string, auditor: boolean, require_two_factor_authentication_from_group: boolean, two_factor_grace_period: integer, last_activity_on: date, notified_of_own_activity: boolean, preferred_language: string, email_opted_in: boolean, email_opted_in_ip: string, email_opted_in_source_id: integer, email_opted_in_at: datetime, theme_id: integer, accepted_term_id: integer, feed_token: string, private_profile: boolean, roadmap_layout: integer, include_private_contributions: boolean, commit_email: string, group_view: integer, managing_group_id: integer, first_name: string, last_name: string, static_object_token: string, role: integer, user_type: integer, static_object_token_encrypted: text, otp_secret_expires_at: timestamptz, onboarding_in_progress: boolean, otp_secret: ), result: nil6352 returns nil6353 model: Issue(id: integer, title: string, author_id: integer, project_id: integer, created_at: datetime, updated_at: datetime, description: text, milestone_id: integer, iid: integer, updated_by_id: integer, weight: integer, confidential: boolean, due_date: date, moved_to_id: integer, lock_version: integer, title_html: text, description_html: text, time_estimate: integer, relative_position: integer, service_desk_reply_to: string, cached_markdown_version: integer, last_edited_at: datetime, last_edited_by_id: integer, discussion_locked: boolean, closed_at: timestamptz, closed_by_id: integer, state_id: integer, duplicated_to_id: integer, promoted_to_epic_id: integer, health_status: integer, external_key: string, sprint_id: integer, blocking_issues_count: integer, upvotes_count: integer, work_item_type_id: integer, namespace_id: integer, start_date: date), result: nil6354 returns nil6355 model: Deployment(id: integer, iid: integer, project_id: integer, environment_id: integer, ref: string, tag: boolean, sha: string, user_id: integer, deployable_type: string, created_at: datetime, updated_at: datetime, on_stop: string, status: integer, finished_at: timestamptz, cluster_id: integer, deployable_id: integer, archived: boolean), result: nil6356 returns nil6357 model: Project(id: integer, name: string, path: string, description: text, created_at: datetime, updated_at: datetime, creator_id: integer, namespace_id: integer, last_activity_at: datetime, import_url: string, visibility_level: integer, archived: boolean, avatar: string, merge_requests_template: text, star_count: integer, merge_requests_rebase_enabled: boolean, import_type: string, import_source: string, approvals_before_merge: integer, reset_approvals_on_push: boolean, merge_requests_ff_only_enabled: boolean, issues_template: text, mirror: boolean, mirror_last_update_at: datetime, mirror_last_successful_update_at: datetime, mirror_user_id: integer, shared_runners_enabled: boolean, runners_token: string, build_allow_git_fetch: boolean, build_timeout: integer, mirror_trigger_builds: boolean, pending_delete: boolean, public_builds: boolean, last_repository_check_failed: boolean, last_repository_check_at: datetime, only_allow_merge_if_pipeline_succeeds: boolean, has_external_issue_tracker: boolean, repository_storage: string, repository_read_only: boolean, request_access_enabled: boolean, has_external_wiki: boolean, ci_config_path: string, lfs_enabled: boolean, description_html: text, only_allow_merge_if_all_discussions_are_resolved: boolean, repository_size_limit: integer, printing_merge_request_link_enabled: boolean, auto_cancel_pending_pipelines: integer, service_desk_enabled: boolean, cached_markdown_version: integer, delete_error: text, last_repository_updated_at: datetime, disable_overriding_approvers_per_merge_request: boolean, storage_version: integer, resolve_outdated_diff_discussions: boolean, remote_mirror_available_overridden: boolean, only_mirror_protected_branches: boolean, pull_mirror_available_overridden: boolean, jobs_cache_index: integer, external_authorization_classification_label: string, mirror_overwrites_diverged_branches: boolean, pages_https_only: boolean, external_webhook_token: string, packages_enabled: boolean, merge_requests_author_approval: boolean, pool_repository_id: integer, runners_token_encrypted: string, bfg_object_map: string, detected_repository_languages: boolean, merge_requests_disable_committers_approval: boolean, require_password_to_approve: boolean, max_pages_size: integer, max_artifacts_size: integer, pull_mirror_branch_prefix: string, remove_source_branch_after_merge: boolean, marked_for_deletion_at: date, marked_for_deletion_by_user_id: integer, autoclose_referenced_issues: boolean, suggestion_commit_message: string, project_namespace_id: integer, hidden: boolean, verification_checksum: binary), result: nil6358 returns nil6359Jobs/SAST-IaC.gitlab-ci.yml6360 the created pipeline6361 on feature branch6362 creates the kics-iac-sast job6363 on merge request6364 has no jobs6365 SAST_DISABLED is set6366 on default branch6367 has no jobs6368 on feature branch6369 has no jobs6370Gitlab::GithubImport::LabelFinder6371 #id_for6372 with a cache in place6373 returns the ID of the given label6374 returns nil for an empty cache key6375 returns nil for a non existing label name6376 without a cache in place6377 returns nil for a label6378 #build_cache6379 builds the cache of all project labels6380 #cache_key_for6381 returns the cache key for a label name6382Gitlab::HookData::UserBuilder6383 #build6384 data6385 on create6386 is expected to eq "user_create"6387 behaves like includes the required attributes6388 includes the required attributes6389 behaves like does not include old username attributes6390 does not include old username attributes6391 behaves like does not include state attributes6392 does not include state attributes6393 on destroy6394 is expected to eq "user_destroy"6395 behaves like includes the required attributes6396 includes the required attributes6397 behaves like does not include old username attributes6398 does not include old username attributes6399 behaves like does not include state attributes6400 does not include state attributes6401 on rename6402 is expected to eq "user_rename"6403 includes old username details6404 behaves like includes the required attributes6405 includes the required attributes6406 behaves like does not include state attributes6407 does not include state attributes6408 on failed_login6409 is expected to eq "user_failed_login"6410 includes state details6411 behaves like includes the required attributes6412 includes the required attributes6413 behaves like does not include old username attributes6414 does not include old username attributes6415Gitlab::Checks::GlobalFileSizeCheck6416 # order random6417 #validate!6418 checks for file sizes6419 when global_file_size_check is disabled6420 does not log6421 when there are oversized blobs6422 logs a message with blob size and raises an exception6423 when the enforce_global_file_size_limit feature flag is disabled6424 does not raise an exception6425notify/import_issues_csv_email.html.haml6426 # order random6427 when preprocess errors reported while importing6428 renders with project name error6429 with a project in a group6430 renders with group clause error6431 when parse error reported while importing6432 renders with parse error6433 when import errors reported6434 renders correctly6435 when no errors found while importing6436 renders correctly6437Mutations::CustomEmoji::Destroy6438 field tests6439 is expected to have graphql arguments :id6440 is expected to have graphql field :custom_emoji6441 #resolve6442 when the user6443 has no permissions6444 behaves like does not delete custom emoji6445 raises exception6446 when the user is developer and not the owner of custom emoji6447 behaves like does not delete custom emoji6448 raises exception6449 when user6450 is maintainer6451 behaves like deletes custom emoji6452 returns deleted custom emoji6453 is owner6454 behaves like deletes custom emoji6455 returns deleted custom emoji6456 is developer and creator of the emoji6457 behaves like deletes custom emoji6458 returns deleted custom emoji6459Ci::UnitTest6460 behaves like cleanup by a loose foreign key6461 cleans up (delete or nullify) the model6462 relationships6463 is expected to belong to project required: false6464 is expected to have many unit_test_failures6465 validations6466 is expected to validate that :project cannot be empty/falsy6467 is expected to validate that :key_hash cannot be empty/falsy6468 is expected to validate that :name cannot be empty/falsy6469 is expected to validate that :suite_name cannot be empty/falsy6470 .find_or_create_by_batch6471 finds or creates records for the given unit test keys6472 when a given name or suite_name exceeds the string size limit6473 truncates the values before storing the information6474UsersStarProjectsFinder6475 #execute6476 as same user6477 is expected to contain exactly #<UsersStarProject id: 2, project_id: 1299, user_id: 2329, created_at: "2023-08-18 13:21:09.710684000 +0000", updated_at: "2023-08-18 13:21:09.710684000 +0000"> and #<UsersStarProject id: 1, project_id: 1299, user_id: 2327, created_at: "2023-08-18 13:21:09.538890000 +0000", updated_at: "2023-08-18 13:21:09.538890000 +0000">6478 as other user6479 is expected to contain exactly #<UsersStarProject id: 4, project_id: 1300, user_id: 2331, created_at: "2023-08-18 13:21:10.443007000 +0000", updated_at: "2023-08-18 13:21:10.443007000 +0000">6480 as no user6481 is expected to contain exactly #<UsersStarProject id: 7, project_id: 1301, user_id: 2336, created_at: "2023-08-18 13:21:11.293920000 +0000", updated_at: "2023-08-18 13:21:11.293920000 +0000">6482 with active users only6483 ignores stars of non-active users6484RuboCop::Cop::Graphql::JSONType6485 # order random6486 does not add an offense for uses outside of field or argument6487 fields6488 adds an offense when GraphQL::Types::JSON is used6489 adds an offense when GraphQL::Types::JSON is used with other keywords6490 does not add an offense for other types6491 arguments6492 adds an offense when GraphQL::Types::JSON is used6493 adds an offense when GraphQL::Types::JSON is used with other keywords6494 does not add an offense for other types6495AwardEmojis::CollectUserEmojiService6496 #execute6497 returns an Array containing the awarded emoji names6498 returns an empty Array when no user is given6499Gitlab::ImportExport::UploadsManager6500 #save6501 when the project has uploads locally stored6502 does not cause errors6503 copies the file in the correct location when there is an upload6504 with orphaned project upload files6505 excludes orphaned upload files6506 with an upload missing its file6507 does not cause errors6508 when upload is in object storage6509 when filename is too long6510 ignores problematic upload and logs exception6511 when network exception occurs6512 ignores problematic upload and logs exception6513 #restore6514 restores the file6515Resolvers::Crm::OrganizationsResolver6516 #resolve6517 with unauthorized user6518 does not rise an error and returns no crm_organizations6519 with authorized user6520 does not rise an error and returns all crm_organizations in the correct order6521 without parent6522 returns no crm_organizations6523 with a group parent6524 when no filter is provided6525 returns all the crm_organizations in the default order6526 when a sort is provided6527 returns all the crm_organizations in the correct order6528 when filtering for all states6529 returns all the crm_organizations6530 when search term is provided6531 returns the correct crm_organizations6532 when state is provided6533 returns the correct crm_organizations6534 when ids are provided6535 returns the correct crm_organizations6536RuboCop::Cop::RSpec::BeSuccessMatcher6537 # order random6538 using expect(response).to be_successful call6539 does not register an offense6540 using expect(response).not_to be_success call6541 registers an offense and corrects6542 using is_expected.not_to be_success call6543 registers an offense and corrects6544 using expect(response).to_not be_successful call6545 does not register an offense6546 using is_expected.to_not be_successful call6547 does not register an offense6548 using is_expected.to_not be_success call6549 registers an offense and corrects6550 using expect(response).to be_success call6551 registers an offense and corrects6552 using is_expected.to be_success call6553 registers an offense and corrects6554 using is_expected.to be_successful call6555 does not register an offense6556 using is_expected.not_to be_successful call6557 does not register an offense6558 using expect(response).to_not be_success call6559 registers an offense and corrects6560 using expect(response).not_to be_successful call6561 does not register an offense6562Gitlab::Ci::Reports::Security::FindingSignature6563 #initialize6564 when a supported algorithm type is given6565 allows itself to be created6566 #valid?6567 returns true6568 #valid?6569 when supported algorithm_type is given6570 is valid6571 when an unsupported algorithm_type is given6572 is not valid6573 #to_hash6574 returns a hash representation of the signature6575Mutations::Timelogs::Delete6576 #resolve6577 when the timelog id is not valid6578 raises Gitlab::Graphql::Errors::ResourceNotAvailable6579 when the current user is not the timelog's author, not a maintainer and not an admin6580 raises Gitlab::Graphql::Errors::ResourceNotAvailable6581 when the current user is the timelog's author6582 deletes the timelog6583 returns the deleted timelog6584 returns no errors6585 when the current user is not the timelog's author but a maintainer of the project6586 deletes the timelog6587 returns the deleted timelog6588 returns no errors6589 when the current user is not the timelog's author, not a maintainer but an admin6590 deletes the timelog6591 returns the deleted timelog6592 returns no errors6593Resolvers::RecentBoardsResolver6594 #resolve6595 when there is no parent6596 returns none if parent is nil6597 when project boards6598 behaves like group and project recent boards resolver6599 calls ::Boards::VisitsFinder6600 avoids N+1 queries6601 returns most recent visited boards6602 returns a set number of boards6603 when group boards6604 behaves like group and project recent boards resolver6605 calls ::Boards::VisitsFinder6606 avoids N+1 queries6607 returns most recent visited boards6608 returns a set number of boards6609AlertManagement::AlertAssignee6610 associations6611 is expected to belong to alert required: false6612 is expected to belong to assignee class_name => User required: false inverse_of => alert_assignees6613 validations6614 is expected to validate that :alert cannot be empty/falsy6615 is expected to validate that :assignee cannot be empty/falsy6616 is expected to validate that :assignee is case-sensitively unique within the scope of :alert_id6617Gitlab::Git::RepositoryCleaner6618 #apply_bfg_object_map_stream (from StringIO)6619 removes internal references6620 #apply_bfg_object_map_stream (from Gitlab::HttpIO)6621 removes internal references6622Preloaders::GroupPolicyPreloader6623 avoids N+1 queries when authorizing a list of groups6624Projects::MoveLfsObjectsProjectsService6625 #execute6626 links the lfs objects from existent in source project6627 does not link existent lfs_object in the current project6628 rollbacks changes if transaction fails6629 when remove_remaining_elements is false6630 does not remove remaining lfs objects6631AuthorizedProjectsWorker6632 behaves like refreshes user's project authorizations6633 #perform6634 refreshes user's authorized projects6635 when the user is not found6636 does nothing6637 behaves like an idempotent worker6638 is labeled as idempotent6639 performs multiple times sequentially without raising an exception6640 does not change authorizations when run twice6641DiffViewerEntity6642 serializes diff file viewer6643 contains whitespace_only attribute6644 when whitespace_only option is true6645 returns the whitespace_only attribute true6646 when whitespace_only option is false6647 returns the whitespace_only attribute false6648HooksHelper6649 #webhook_form_data6650 when there are no URL variables6651 returns proper data6652 when there are URL variables6653 returns proper data6654 #webhook_test_items6655 returns test items for disclosure6656 #test_hook_path6657 returns project namespaced link6658 returns admin namespaced link6659 #hook_log_path6660 with a project hook6661 returns project-namespaced link6662 with a service hook6663 returns project-namespaced link6664 with a system hook6665 returns admin-namespaced link6666projects/settings/integrations/edit6667 is expected not to have text "Recent events"6668 integration using WebHooks6669 is expected to have text "Recent events"6670MigrationsHelpers6671 #active_record_base6672 returns the main base model6673 raises ArgumentError for bad database argument6674 ci database configured6675 returns the CI base model6676 ci database not configured6677 returns the main base model (PENDING: Skipping because some of the extra databases [:ci] are setup)6678 #table6679 creates a class based on main base model6680 ci database configured6681 create a class based on the CI base model6682 ci database not configured6683 creates a class based on main base model (PENDING: Skipping because some of the extra databases [:ci] are setup)6684 #reset_column_information6685 with a regular ActiveRecord model class6686 calls reset_column_information6687 with an anonymous class with table name defined6688 calls reset_column_information6689 with an anonymous class with no table name defined6690 does not call reset_column_information6691Import::GitlabProjects::CreateProjectService6692 validation6693 is expected to be valid6694 validates presence of path6695 validates presence of name6696 is invalid if the strategy is invalid6697 #execute6698 creates a project successfully6699 when the project creation raises an error6700 fails to create a project6701 when the validation fail6702 fails to create a project6703 when the project contains multiple errors6704 fails to create a project6705 when the strategy adds project parameters6706 merges the strategy project parameters6707Mutations::Achievements::Delete6708 # order random6709 is expected to require graphql authorizations :admin_achievement6710 #resolve6711 when the user does not have permission6712 raises an error6713 when the user has permission6714 deletes the achievement6715 when the params are invalid6716 returns the validation error6717Gitlab::Ci::Trace::Metrics6718 #increment_trace_bytes6719 when incrementing by more than one6720 increments a single counter6721 #increment_error_counter6722 when the error reason is known6723 increments the counter6724 when the error reason is unknown6725 raises an exception6726Integrations::Shimo6727 #fields6728 returns custom fields6729 #create6730 with valid params6731 creates the Shimo integration6732 with invalid params6733 cannot create the Shimo integration without external_wiki_url6734 cannot create the Shimo integration with invalid external_wiki_url6735 Caching has_shimo on project_settings6736 sets the property to true when integration is active6737 sets the property to false when integration is not active6738 creates a project_setting record if one was not already created6739Packages::Nuget::PackageMetadataPresenter6740 #json_url6741 is expected to end with "/api/v4/projects/1340/packages/nuget/metadata/NugetPackage1/1.0.1.json"6742 #archive_url6743 is expected to end with "/api/v4/projects/1340/packages/nuget/download/NugetPackage1/1.0.1/NugetPackage1.1.0.1.nupkg"6744 with package files pending destruction6745 is expected not to include "pending_destruction.nupkg"6746 #catalog_entry6747 returns an entry structure6748Projects::PipelineHelper6749 #js_pipeline_tabs_data6750 returns pipeline tabs data6751 #js_pipeline_details_header_data6752 returns pipeline details header data6753IncidentManagement::TimelineEventTagsFinder6754 # order random6755 #execute6756 when user has permissions6757 returns tags on the event6758 when event does not have tags6759 returns empty result6760 when timeline event is nil6761 is expected to eq #<ActiveRecord::Relation []>6762 when user does not have permissions6763 is expected to eq #<ActiveRecord::Relation []>6764IssueSerializer6765 non-sidebar issue serialization6766 matches issue json schema6767 sidebar issue serialization6768 matches issue_sidebar json schema6769 sidebar extras issue serialization6770 matches issue_sidebar_extras json schema6771 board issue serialization6772 matches board issue json schema6773Projects::OpenMergeRequestsCountService6774 behaves like a counter caching service6775 #count6776 caches the count6777 #refresh_cache6778 refreshes the cache6779 #delete_cache6780 removes the cache6781 #uncached_count6782 does not cache the count6783 #count6784 returns the number of open merge requests6785Ci::CreatePipelineService6786 #execute6787 with deployment tier6788 creates the environment with the expected tier6789 when tier is testing6790 creates the environment with the expected tier6791 when branch pipeline creates a dynamic environment6792 does not associate merge request with the environment6793 when variables are dependent on stage name6794 creates the pipeline successfully6795Gitlab::Issuable::Clone::CopyResourceEventsService6796 copies the resource label events6797 with existing milestone events6798 copies existing resource milestone events6799 with existing state events6800 copies existing state events as expected6801Ci::CreatePipelineService6802 custom config content6803 creates a pipeline using the content passed in as param6804 when bridge includes yaml from artifact6805 when referenced job exists6806 created a pipeline using the content passed in as param and download the artifact6807 when referenced job does not exist6808 creates an empty pipeline6809Banzai::Pipeline6810 .[]6811 for nil6812 is expected to eq Banzai::Pipeline::FullPipeline6813 for symbols6814 when known6815 is expected to eq Banzai::Pipeline::FullPipeline6816 when unknown6817 behaves like error6818 is expected to raise NameError with "uninitialized constant Banzai::Pipeline::UnknownPipeline"6819 for classes6820 subclassing Banzai::Pipeline::BasePipeline6821 is expected to eq #<Class:0x00007cecedb2f410>6822 subclassing other types6823 behaves like error6824 is expected to raise ArgumentError with "unsupported pipeline name Foo (Class)"6825 for other types6826 behaves like error6827 is expected to raise ArgumentError with "unsupported pipeline name \"label\" (String)"6828Gitlab::UsageDataCounters::JetBrainsPluginActivityUniqueCounter6829 when tracking a jetbrains api request6830 behaves like a request from an extension6831 tracks when the user agent is matching6832 does not track when the user agent is not matching6833 does not track if user agent is not present6834 does not track if user is not present6835Gitlab::Diff::FileCollection::Base6836 #overflow?6837 when it is not overflown6838 returns false6839 when it is overflown6840 returns true6841Namespaces::RootStatisticsWorker#perform6842 has the `until_executed` deduplicate strategy6843 has an option to reschedule once if deduplicated6844 with a namespace6845 executes refresher service6846 deletes namespace aggregated schedule row6847 when something goes wrong when updating6848 does not delete the aggregation schedule6849 logs the error6850 with no namespace6851 does not execute the refresher service6852 with a namespace with no aggregation scheduled6853 does not execute the refresher service6854 behaves like an idempotent worker6855 is labeled as idempotent6856 performs multiple times sequentially without raising an exception6857 deletes one aggregation schedule6858 behaves like worker with data consistency6859 .get_data_consistency_feature_flag_enabled?6860 returns true6861 .get_data_consistency6862 returns correct data consistency6863Ci::ProjectMirror6864 scopes6865 .by_project_id6866 returns project mirrors of project6867 .by_namespace_id6868 returns project mirrors of namespace id6869 .sync!6870 when project mirror does not exist in the first place6871 creates a ci_projects record6872 when project mirror does already exist6873 updates the related ci_projects record6874Gitlab::Cleanup::RemoteUploads6875 when object_storage is enabled6876 when dry_run is set to false6877 moves files that are not in uploads table6878 when dry_run is set to true6879 does not move filese6880 when object_storage is not enabled6881 does not connect to any storage6882 when a bucket prefix is configured6883 does not connect to any storage6884PropagateIntegrationProjectWorker6885 #perform6886 behaves like an idempotent worker6887 is labeled as idempotent6888 performs multiple times sequentially without raising an exception6889 calls to BulkCreateIntegrationService6890 with a group integration6891 calls to BulkCreateIntegrationService6892 with an invalid integration id6893 returns without failure6894CronSchedulable6895 for ci_pipeline_schedule6896 behaves like handles set_next_run_at6897 when schedule runs every minute6898 updates next_run_at to the worker's execution time6899 when there are two different schedules in the same time zones6900 sets the sames next_run_at6901 when cron is updated for existing schedules6902 updates next_run_at automatically6903UpdateExternalPullRequestsWorker6904 #perform6905 when ref is a branch6906 runs CreatePipelineService for each pull request matching the source branch and repository6907 when ref is not a branch6908 does nothing6909BulkImports::Common::Extractors::JsonExtractor6910 #extract6911 returns ExtractedData6912 #remove_tmpdir6913 removes tmp dir6914Ci::PipelineArtifacts::CodeCoveragePresenter6915 #for_files6916 when code coverage has data6917 when filenames is empty6918 returns hash without coverage6919 when filenames do not match code coverage data6920 returns hash without coverage6921 when filenames matches code coverage data6922 when asking for one filename6923 returns coverage for the given filename6924 when asking for multiple filenames6925 returns coverage for a the given filenames6926RuboCop::Cop::RSpec::FactoriesInMigrationSpecs6927 # order random6928 behaves like an offensive factory call6929 registers an offense for FactoryBot.build(:user)6930 registers an offense for FactoryBot.build_list(:user)6931 registers an offense for FactoryBot.create(:user)6932 registers an offense for FactoryBot.create_list(:user)6933 registers an offense for FactoryBot.attributes_for(:user)6934 behaves like an offensive factory call6935 registers an offense for build(:user)6936 registers an offense for build_list(:user)6937 registers an offense for create(:user)6938 registers an offense for create_list(:user)6939 registers an offense for attributes_for(:user)6940Types::CommitSignatures::X509SignatureType6941 # order random6942 contains attributes related to X.509 signatures6943 is expected to require graphql authorizations :download_code6944 is expected to eq "X509Signature"6945 is expected to include Types::CommitSignatureInterface6946Gitlab::Ci::Config::Interpolation::FunctionsStack6947 # order random6948 modifies the given input value according to the function expressions6949 when function expressions do not match any function6950 returns an error6951 when applying a function fails6952 returns the error given by the failure6953BulkImports::BatchTracker6954 # order random6955 associations6956 is expected to belong to tracker required: false6957 validations6958 is expected to validate that :batch_number cannot be empty/falsy6959 is expected to validate that :batch_number is case-sensitively unique within the scope of :tracker_id6960Packages::Rubygems::DependencyResolverService6961 #execute6962 user without access6963 returns a service error6964 user with access6965 when no package is found6966 returns a service error6967 package without dependencies6968 returns an empty dependencies array6969 package with dependencies6970 returns a set of dependencies6971 package with multiple versions6972 returns a set of dependencies6973admin/sessions/new.html.haml6974 internal admin user6975 shows enter password form6976 warns authentication not possible if password not set6977 omniauth authentication enabled6978 shows omniauth form6979 ldap authentication6980 is shown when enabled6981 is not shown when LDAP sign in is disabled6982Gitlab::Database::AsyncConstraints::Validators6983 # order random6984 .for6985 with foreign keys validations6986 is expected to be a kind of Gitlab::Database::AsyncConstraints::Validators::ForeignKey6987 with check constraint validations6988 is expected to be a kind of Gitlab::Database::AsyncConstraints::Validators::CheckConstraint6989FeatureFlagSerializer6990 #represent6991 includes feature flag attributes6992Gitlab::UsageMetricDefinition::RedisHllGenerator6993 creates metric definition files6994 with multiple events6995 creates metric definition files6996 with ee option6997 creates metric definition files6998Pajamas::Concerns::CheckboxRadioOptions6999 #formatted_input_options7000 calls `#format_options` with correct arguments7001RuboCop::Cop::Gitlab::RSpec::AvoidSetup7002 # order random7003 without readability issues7004 does not register an offense7005 when calling let_it_be7006 registers an offense7007Gitlab::AlertManagement::AlertStatusCounts7008 #execute7009 for an unauthorized user7010 returns zero for all statuses7011 for an authorized user7012 returns the correct counts for each status7013 when filtering params are included7014 returns the correct counts for each status7015 when search param is included7016 returns the correct countss7017Gitlab::RequestContext7018 is expected to have attributes {:client_ip => nil, :request_start_time => nil, :start_thread_cpu_time => nil}7019 .start_request_context7020 sets the client IP7021 sets the spam params7022 sets the request start time7023 .start_thread_context7024 sets the thread cpu time7025 sets the thread memory allocations7026 #request_deadline7027 sets the time to 57 seconds in the future7028 returns nil if there is no start time7029 #ensure_request_deadline_not_exceeded!7030 does not raise an error when there was no deadline7031 does not raise an error if the deadline is in the future7032 raises an error when the deadline is in the past7033Import::Github::Notes::CreateService7034 does not support quick actions7035JiraConnect::CreateAsymmetricJwtService7036 # order random7037 #execute7038 raises an error7039 with proxy installation7040 stores the public key7041 behaves like produces a valid JWT7042 produces a valid JWT7043 with uninstalled event option7044 behaves like produces a valid JWT7045 produces a valid JWT7046Resolvers::Ci::RunnerJobsResolver7047 #resolve7048 with authorized user7049 with statuses argument7050 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2023-08-18 08:53:29.000000000 +0000", created_at: "2023-...processed: false, scheduling_type: "stage", id: 163, stage_id: 79, partition_id: 100, tag_list: nil> and #<Ci::Build status: "success", finished_at: "2023-08-18 08:53:29.000000000 +0000", created_at: "2023-...processed: false, scheduling_type: "stage", id: 164, stage_id: 79, partition_id: 100, tag_list: nil>7051 without statuses argument7052 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2023-08-18 08:53:29.000000000 +0000", created_at: "2023-...processed: false, scheduling_type: "stage", id: 163, stage_id: 79, partition_id: 100, tag_list: nil>, #<Ci::Build status: "success", finished_at: "2023-08-18 08:53:29.000000000 +0000", created_at: "2023-...processed: false, scheduling_type: "stage", id: 164, stage_id: 79, partition_id: 100, tag_list: nil>, and #<Ci::Build status: "failed", finished_at: "2023-08-18 08:53:29.000000000 +0000", created_at: "2023-0...processed: false, scheduling_type: "stage", id: 165, stage_id: 79, partition_id: 100, tag_list: nil>7053 with unauthorized user7054 is expected to be nil7055Ci::PipelineBridgeStatusService7056 #execute7057 when pipeline has upstream bridge7058 calls inherit_status_from_downstream on upstream bridge7059 when bridge job status raises state machine errors7060 tracks the exception7061Gitlab::Ci::Build::Policy::Kubernetes7062 when kubernetes service is active7063 when user configured kubernetes from CI/CD > Clusters7064 is satisfied by a kubernetes pipeline7065 when kubernetes service is inactive7066 is not satisfied by a pipeline without kubernetes available7067 when kubernetes policy is invalid7068 raises an error7069Types::Notes::NoteableInterface7070 exposes the expected fields7071 .resolve_type7072 knows the correct type for objects7073Gitlab::GithubImport::Stage::ImportIssueEventsWorker7074 #import7075 when stage is enabled7076 imports issue events7077 when stage is disabled7078 skips issue events import and calls next stage7079Gitlab::Ci::Status::Pipeline::Delayed7080 #text7081 overrides status text7082 #label7083 overrides status label7084 .matches?7085 when pipeline is scheduled7086 is a correct match7087 when pipeline is not scheduled7088 does not match7089Resolvers::ErrorTracking::SentryErrorsResolver7090 is expected to have nullable GraphQL type SentryErrorConnection7091 #resolve7092 with insufficient user permission7093 returns nil7094 with sufficient permission7095 when after arg given7096 gives the cursor arg7097 when no issues fetched7098 returns nil7099 when issues returned7100 sets the issues7101 sets the pagination variables7102 returns an externally paginated array7103user routing7104 # order random7105 when GitHub OAuth on sign in is cancelled7106 when all required parameters are present7107 behaves like redirecting a legacy path7108 redirects /users/auth?error=access_denied&state=xyz to /projects/new#import_project7109 when one of the required parameters is missing7110 behaves like redirecting a legacy path7111 redirects /users/auth?error=access_denied&state= to /auth7112 when GitHub OAuth on project import is cancelled7113 behaves like redirecting a legacy path7114 redirects /users/auth?error=access_denied&state=xyz to /users/sign_in7115Gitlab::Sanitizers::ExceptionMessage7116 .clean7117 when error is a URI::InvalidURIError7118 is expected to eq "bad URI(is not URI?): [FILTERED]"7119 when error is an Addressable::URI::InvalidURIError7120 uri: "http://foo:bar", result: "Invalid port number: [FILTERED]"7121 is expected to eq "Invalid port number: [FILTERED]"7122 uri: "http://foo:%eb", result: "Invalid encoding in port"7123 is expected to eq "Invalid encoding in port"7124 uri: "ht%0atp://foo", result: "Invalid scheme format: [FILTERED]"7125 is expected to eq "Invalid scheme format: [FILTERED]"7126 uri: "http:", result: "Absolute URI missing hierarchical segment: [FILTERED]"7127 is expected to eq "Absolute URI missing hierarchical segment: [FILTERED]"7128 uri: "::http", result: "Cannot assemble URI string with ambiguous path: [FILTERED]"7129 is expected to eq "Cannot assemble URI string with ambiguous path: [FILTERED]"7130 uri: "http://foo bar", result: "Invalid character in host: [FILTERED]"7131 is expected to eq "Invalid character in host: [FILTERED]"7132 with any other exception7133 is not invoked and does nothing7134RuboCop::Cop::UsageData::LargeTable7135 # order random7136 when outside of an usage data file7137 does not register an offense7138 in an usage data file7139 with large tables7140 when calling Issue.count7141 registers an offense7142 when calling Issue.active.count7143 registers an offense7144 when calling count(Issue)7145 does not register an offense7146 when calling count(Ci::Build.active)7147 does not register an offense7148 when calling Ci::Build.active.count7149 registers an offense7150 when using allowed methods7151 does not register an offense7152 with non related class7153 does not register an offense7154BulkImports::Common::Rest::GetBadgesQuery7155 .to_h7156 when entity is group7157 when source id is present7158 returns correct query using source id and page info7159 when source id is missing7160 returns correct query using source full path7161 when entity is project7162 when source id is present7163 returns correct query using source id and page info7164 when source id is missing7165 returns correct query using source full path7166Resolvers::Environments::NestedEnvironmentsResolver7167 # order random7168 #resolve7169 finds the nested environments when status matches7170 finds the nested environments when searching by name7171 finds the nested environments when name matches exactly7172RuboCop::Cop::CodeReuse::Worker7173 # order random7174 flags the use of a worker in a Finder7175 flags the use of a worker in an API7176 flags the use of a worker in a model class method7177 flags the use of a worker in a controller7178 flags the use of a worker in a Serializer7179 flags the use of a worker in a Presenter7180 flags the use of a worker in GraphQL7181projects/hooks/index7182 renders webhooks page with "Project Hooks"7183 webhook is rate limited7184 renders "Disabled" badge7185 webhook is permanently disabled7186 renders "Failed to connect" badge7187 webhook is temporarily disabled7188 renders "Fails to connect" badge7189Gitlab::Usage::ServicePing::InstrumentedPayload7190 when building service ping with values7191 builds the service ping payload for the metrics key_paths7192 when building service ping with instrumentations7193 builds the service ping payload for the metrics key_paths7194 when missing instrumentation class7195 returns empty hash7196 with broken metric definition file7197 when instrumentation class name is incorrect7198 tracks error and return fallback7199 when instrumentation class raises TypeError7200 tracks error and return fallback7201 when instrumentation class raises ArgumentError7202 tracks error and return fallback7203 when instrumentation class raises StandardError7204 tracks error and return fallback7205Projects::UpdateRepositoryStorageWorker7206 behaves like an update storage move worker7207 has the `until_executed` deduplicate strategy7208 #perform7209 without repository storage move7210 calls the update repository storage service7211 with repository storage move7212 calls the update repository storage service7213Katalon.gitlab-ci.yml7214 # order random7215 the created pipeline7216 create katalon tests jobs7217TestSuiteComparerEntity7218 #as_json7219 when head suite has a newly failed test case which does not exist in base7220 contains correct compared test suite details7221 when head suite has a new error test case which does not exist in base7222 contains correct compared test suite details7223 when head suite still has a failed test case which failed in base7224 contains correct compared test suite details7225 when head suite has a success test case which failed in base7226 contains correct compared test suite details7227 when head suite has suite error7228 contains suite error for head suite7229 when base suite has suite error7230 contains suite error for head suite7231 when base and head suite both have suite errors7232 contains suite error for head suite7233RuboCop::Cop::Database::MultipleDatabases7234 # order random7235 flags the use of ActiveRecord::Base.connection7236 flags the use of ::ActiveRecord::Base.connection7237 does not flag use of ActiveRecord::Base.configurations7238 does not flag use of ActiveRecord::Base.no_touching7239 does not flag use of ActiveRecord::Base.connection_handler7240 does not flag use of ActiveRecord::Base.logger7241Gitlab::UrlBlockers::DomainAllowlistEntry7242 #initialize7243 initializes without port7244 initializes with port7245 #match?7246 matches when domain and port are equal7247 matches any port when port is nil7248 does not match when port is present but requested_port is nil7249 matches when port and requested_port are nil7250 does not match if domain is not equal7251Achievements::DestroyUserAchievementService7252 # order random7253 #execute7254 when user does not have permission7255 returns an error7256 when user has permission7257 deletes the achievement7258UserProjectAccessChangedService7259 #execute7260 permits high-priority operation7261 permits medium-priority operation7262 sets the current caller_id as related_class in the context of all the enqueued jobs7263 for low priority operation7264 does not perform low-priority operation7265 when the feature flag `do_not_run_safety_net_auth_refresh_jobs` is disabled7266 permits low-priority operation7267 with load balancing enabled7268 sticks all the updated users and returns the original result7269 avoids N+1 cached queries7270Projects::ReadmeRendererService#execute7271 renders the an ERB readme template7272 with a custom template7273 renders that template file7274 with path traversal in mind7275 template_name: "../path/traversal/bad", exception: [Gitlab::PathTraversal::PathTraversalAttackError, "Invalid path"], expected_path: nil7276 raises the expected exception on bad paths7277 template_name: "/bad/template", exception: [StandardError, "path /bad/template.md.tt is not allowed"], expected_path: nil7278 raises the expected exception on bad paths7279 template_name: "good/template", exception: nil, expected_path: "good/template.md.tt"7280 raises the expected exception on bad paths7281Gitlab::GithubImport::Representation::PullRequestReview7282 .from_api_response7283 does not set the user if the response did not include a user7284 behaves like a PullRequest review7285 returns an instance of PullRequest7286 .from_json_hash7287 does not set the user if the response did not include a user7288 does not fail when submitted_at is blank7289 behaves like a PullRequest review7290 returns an instance of PullRequest7291 #github_identifiers7292 returns a hash with needed identifiers7293Gitlab::Ci::Artifacts::DecompressedArtifactSizeValidator7294 # order random7295 when the file is located in the cloud7296 behaves like when file does not exceed allowed compressed size7297 passes validation7298 behaves like when file exceeds allowed decompressed size7299 raises an exception7300 #validate!7301 behaves like when file does not exceed allowed compressed size7302 passes validation7303 behaves like when file exceeds allowed decompressed size7304 raises an exception7305 when file_format is not on the list7306 passes validation7307 when file is not provided7308 passes validation7309RuboCop::Cop::AvoidBreakFromStrongMemoize7310 # order random7311 doesn't flag violation for next inside strong_memoize7312 doesn't call add_offense twice for nested blocks7313 flags violation for break inside strong_memoize nested blocks7314 flags violation for break inside strong_memoize7315 doesn't flag violation for break inside blocks7316 doesn't check when block is empty7317Gitlab::MarkdownCache::Redis::Extension7318 defines the html attributes7319 loads the markdown from the cache only once7320 correctly loads the markdown if it was stored in redis7321 .preload_markdown_cache!7322 does not preload the markdown twice7323 #refresh_markdown_cache!7324 stores the value in redis7325 assigns the values7326bin/diagnostic-reports-uploader7327 # order random7328 when GITLAB_DIAGNOSTIC_REPORTS_PROJECT is missing7329 raises RuntimeError7330 when GITLAB_DIAGNOSTIC_REPORTS_PATH is missing7331 raises RuntimeError7332 when GITLAB_GCP_KEY_PATH is missing7333 raises RuntimeError7334 when necessary ENV vars are set7335 runs successfully7336 when GITLAB_DIAGNOSTIC_REPORTS_BUCKET is missing7337 raises RuntimeError7338RuboCop::CheckGracefulTask7339 # order random7340 #run7341 without args7342 behaves like rubocop scan7343 invokes a RuboCop scan7344 with adjusted rubocop status7345 with sufficient environment variables7346 notifies slack7347 with when notification fails7348 prints that notification failed7349 with missing environment variables7350 skips slack notification7351 with args7352 does not notify slack7353 behaves like rubocop scan7354 invokes a RuboCop scan7355GoogleCloud::EnableVisionAiService7356 # order random7357 when a project has 3 gcp projects7358 enables cloud run, artifacts registry and cloud build7359 when a project does not have any gcp projects7360 returns error7361BulkImports::Configuration7362 associations7363 is expected to belong to bulk_import required: true7364 validations7365 is expected to validate that the length of :url is at most 2557366 is expected to validate that the length of :access_token is at most 2557367 is expected to validate that :url cannot be empty/falsy7368 is expected to validate that :access_token cannot be empty/falsy7369Banzai::Filter::ServiceDeskUploadLinkFilter7370 # order random7371 when replace_upload_links enabled7372 when it has only one attachment to replace7373 when filename in text is same as in link7374 replaces the link with original filename in strong7375 when filename in text is not same as in link7376 replaces the link with filename in text & original filename, in strong7377 when it has more than one attachment to replace7378 when all of uploads can be replaced7379 replaces all links with original filename in strong7380 when not all of uploads can be replaced7381 replaces only specific links with original filename in strong7382 when uploads_as_attachments is empty7383 does not replaces the link7384WorkItems::Widgets::Notes7385 # order random7386 .type7387 is expected to eq :notes7388 #type7389 is expected to eq :notes7390 #notes7391 is expected to eq #<ActiveRecord::Associations::CollectionProxy [#<Note note: [FILTERED], noteable_type: "Issue", autho...view_id: nil, confidential: nil, last_edited_at: nil, internal: false, id: 180, namespace_id: nil>]>7392Admin::AbuseReportSerializer7393 # order random7394 #represent7395 serializes an abuse report7396 when multiple objects are being serialized7397 serializers the array of abuse reports7398Tooling::Danger::RequiredStops7399 # order random7400 #add_comment_for_finalized_migrations7401 when model has a newly added migration finalization7402 with regular migration7403 when model has a newly added migration finalization7404 adds comment at the correct line7405 when model does not have migration finalization statement7406 does not add comment7407 with post migration7408 when model has a newly added migration finalization7409 adds comment at the correct line7410 when model does not have migration finalization statement7411 does not add comment7412Gitlab::Memory::UploadAndCleanupReports7413 # order random7414 #call7415 invokes the uploader and cleans the files7416 when there is an exception7417 logs it and does not crash the loop7418 #initalize7419 when sleep_time_seconds is passed through the environment7420 initializes with these settings7421 when sleep_time_seconds is passed through the initializer7422 initializes with these settings7423 when `sleep_time_seconds` is not passed7424 initialized with the default7425Gitlab::ImportExport::RecursiveMergeFolders7426 # order random7427 .merge7428 merges folder and ignores symlinks and files that share hard links7429 raises an error for invalid source path7430 raises an error for source path outside temp dir7431 raises an error for invalid target path7432Gitlab::ImportExport::LogUtil7433 .exportable_to_log_payload7434 when exportable is a group7435 returns hash with group keys7436 when exportable is a project7437 returns hash with project keys7438 when exportable is a new record7439 returns empty hash7440 when exportable is an unexpected type7441 returns empty hash7442Gitlab::ApplicationRateLimiter::IncrementPerActionedResource7443 #increment7444 increments per resource7445 sets time to live (TTL) for the key7446 #read7447 returns 0 when there is no data7448 returns the correct value7449Users::Calloutable7450 Associations7451 is expected to belong to user required: false7452 validations7453 is expected to validate that :user cannot be empty/falsy7454 #dismissed_after?7455 returns whether a callout dismissed after specified date7456Gitlab::GrapeLogging::Loggers::ResponseLogger7457 #parameters7458 is expected to eq {:response_bytes=>9}7459 with multiple response parts7460 is expected to eq {:response_bytes=>18}7461 with log_response_length disabled7462 is expected to eq {}7463 when response is a String7464 is expected to eq {:response_bytes=>9}7465Gitlab::AssetProxy7466 when asset proxy is disabled7467 returns the original URL7468 when asset proxy is enabled7469 returns a proxied URL7470 returns original URL for invalid domains7471 whitelisted domain7472 returns original URL for single domain whitelist7473 returns original URL for wildcard subdomain whitelist7474RuboCop::Cop::Migration::AddTimestamps7475 # order random7476 when outside of migration7477 registers no offense7478 when in migration7479 registers an offense when the "add_timestamps" method is used7480 does not register an offense when the "add_timestamps" method is not used7481 does not register an offense when the "add_timestamps_with_timezone" method is used7482Groups::UpdateStatisticsService7483 #execute7484 when group is nil7485 does nothing7486 with an existing group7487 when namespace statistics exists for the group7488 uses the existing statistics and refreshes them7489 when namespace statistics does not exist for the group7490 creates the statistics and refreshes them7491API::Github::Entities7492 API::Github::Entities::User7493 aggregate_failures7494 with avatar7495 is expected to include "http://localhost/uploads/-/system/user/avatar/"7496Gitlab::Search::AbuseValidators::NoAbusiveTermLengthValidator7497 when a term is over the limit7498 adds a validation error7499 when all terms are under the limit7500 does NOT add any validation errors7501 when a URL is detected in a search term7502 when under twice the limit7503 does NOT add any validation errors7504 when over twice the limit7505 adds a validation error7506BlobLanguageFromGitAttributes7507 #language_from_gitattributes7508 returns return value from gitattribute7509 returns nil if repository is absent7510 returns nil if repository does not exist7511BulkImports::ExportUpload7512 stores export file7513 associations7514 is expected to belong to export required: false7515Types::Metrics::Dashboards::AnnotationType7516 is expected to eq "MetricsDashboardAnnotation"7517 has the expected fields7518 is expected to require graphql authorizations :read_metrics_dashboard_annotation7519Gitlab::Email::Message::InProductMarketing::AdminVerify7520 public methods7521 returns value for series7522 #progress7523 on gitlab.com7524 is expected to eq "This is email 1 of 1 in the Admin series."7525 not on gitlab.com7526 is expected to include "This is email 1 of 1 in the Admin series" and "http://localhost/-/profile/notifications"7527Types::Clusters::AgentTokenType7528 is expected to eq "ClusterAgentToken"7529 is expected to require graphql authorizations :read_cluster_agent7530 is expected to have graphql fields :cluster_agent, :created_at, :created_by_user, :description, :id, :last_used_at, :name, and :status7531Groups::DeployTokens::RevokeService7532 #execute7533 revokes a group deploy token7534 invalid token id7535 raises an error7536Gitlab::SidekiqMiddleware::PauseControl::StrategyHandler7537 # order random7538 #perform7539 calls perform on the strategy7540 pauses job7541 #schedule7542 behaves like scheduling with pause control class7543 calls schedule on the strategy7544Captcha::CaptchaVerificationService7545 #execute7546 when there is no captcha_response7547 returns false7548 when there is a captcha_response7549 returns false7550 has a request method which returns an object with the ip address #remote_ip7551API::Validations::Validators::ArrayNoneAny7552 valid parameters7553 does not raise a validation error7554 invalid parameters7555 raises a validation error7556Types::Ci::Config::JobType7557 is expected to eq "CiConfigJob"7558 exposes the expected fields7559Groups::FeatureSetting7560 associations7561 is expected to belong to group required: false7562 validations7563 is expected to validate that :group cannot be empty/falsy7564Gitlab::Middleware::WebhookRecursionDetection7565 #call7566 when the recursion detection header is present7567 sets the request UUID from the header7568 when recursion headers are not present7569 works without errors7570Gitlab::GithubImport::ClientPool7571 # order random7572 #best_client7573 returns the client with the most remaining requests7574 when all clients are rate limited7575 returns the client with the closest rate limit reset time7576Gitlab::Audit::DeployKeyAuthor7577 #initialize7578 sets correct attributes7579 sets default name when it is not provided7580Types::Metadata::KasType7581 is expected to eq "Kas"7582 is expected to require graphql authorizations :read_instance_metadata7583Sidebars::Groups::SuperSidebarMenus::BuildMenu7584 # order random7585 has title and sprite_icon7586 defines list of NilMenuItem placeholders7587RDoc segfault patch fix7588 RDoc::Markup::ToHtml7589 #parseable?7590 returns false7591 RDoc::Markup::Verbatim7592 ruby?7593 returns false7594Gitlab::Graphql::Tracers::LoggerTracer7595 logs every query7596 logs exceptions for breaking queries7597Gitlab::Diff::InlineDiffMarker7598 #mark7599 when the rich text is html safe7600 marks the range7601 when the text is not html safe7602 marks the range7603Sidebars::Organizations::Menus::ManageMenu7604 # order random7605 has title and sprite_icon7606 Menu items7607 Groups and projects7608 is expected not to be nil7609BulkImports::Common::Extractors::RestExtractor7610 #extract7611 returns instance of ExtractedData7612BulkImports::RetryPipelineError7613 #retry_delay7614 returns retry_delay7615Resolvers::PackagesBaseResolver7616 #resolve7617 throws an error7618Create security training providers in production7619 # order random7620 behaves like security training providers importer7621OK7622 upserts security training providers7623Gitlab::Usage::Metrics::Instrumentations::CountCiRunnersInstanceTypeActiveOnlineMetric7624 # order random7625 behaves like a correct instrumented metric value7626 has correct value7627DeployTokensHelper7628 #deploy_token_revoke_button_data7629 returns expected hash7630OmniAuth initializer for GitLab7631 #full_host7632 is expected to eq "proc"7633Gitlab::GitalyClient::BlobsStitcher7634 enumeration7635 combines segregated blob messages together7636BlobViewer::Podspec7637 #package_name7638 returns the package name7639ExportHelper7640 #project_export_descriptions7641 includes design management7642Tooling::Crystalball::CoverageLinesStrategy7643 #after_register7644 starts coverage7645Gitlab::Nav::TopNavMenuHeader7646 # order random7647 .build7648 builds a hash from with the given header7649Knapsack report was generated. Preview:7650{7651 "spec/models/merge_request_diff_spec.rb": 286.957511349,7652 "spec/policies/merge_request_policy_spec.rb": 125.05171128000075,7653 "spec/models/concerns/mentionable_spec.rb": 93.39079881100133,7654 "spec/lib/gitlab/import_export/group/tree_restorer_spec.rb": 78.95706630200038,7655 "spec/services/application_settings/update_service_spec.rb": 61.22032328400019,7656 "spec/services/boards/lists/move_service_spec.rb": 75.57829725899956,7657 "spec/models/milestone_spec.rb": 50.3993198549997,7658 "spec/lib/object_storage/direct_upload_spec.rb": 40.355254895000144,7659 "spec/lib/gitlab/url_blocker_spec.rb": 23.764434797999456,7660 "spec/models/alert_management/alert_spec.rb": 17.683693468000456,7661 "spec/lib/gitlab/ci/parsers/security/validators/schema_validator_spec.rb": 12.160889329999918,7662 "spec/lib/gitlab/bitbucket_server_import/importer_spec.rb": 30.940461351999147,7663 "spec/lib/banzai/filter/autolink_filter_spec.rb": 26.06333121699936,7664 "spec/models/project_statistics_spec.rb": 30.221008143999825,7665 "spec/policies/namespace/root_storage_statistics_policy_spec.rb": 16.75752093799929,7666 "spec/lib/gitlab/gitaly_client_spec.rb": 10.360613007000211,7667 "spec/models/notification_recipient_spec.rb": 19.044407008000235,7668 "spec/helpers/events_helper_spec.rb": 10.096322475000306,7669 "spec/services/resource_events/change_state_service_spec.rb": 14.467013028999645,7670 "spec/models/integrations/telegram_spec.rb": 9.48781504300041,7671 "spec/lib/gitlab/utils/markdown_spec.rb": 2.932753344000048,7672 "spec/lib/gitlab/ci/runner/backoff_spec.rb": 2.3910171820007236,7673 "spec/models/wiki_page/meta_spec.rb": 7.315692831999513,7674 "spec/models/ci/daily_build_group_report_result_spec.rb": 12.841795440000169,7675 "spec/services/snippets/destroy_service_spec.rb": 11.962164057999871,7676 "spec/services/clusters/kubernetes/create_or_update_namespace_service_spec.rb": 16.358812834000673,7677 "spec/models/ci/resource_group_spec.rb": 12.714755441000307,7678 "spec/graphql/mutations/namespace/package_settings/update_spec.rb": 7.713570318000166,7679 "spec/workers/issues/placement_worker_spec.rb": 13.947110694000003,7680 "spec/lib/banzai/filter/reference_redactor_filter_spec.rb": 10.91417251799976,7681 "spec/models/concerns/reactive_caching_spec.rb": 3.0129761770003824,7682 "spec/models/project_import_state_spec.rb": 6.026977984000041,7683 "spec/models/concerns/pg_full_text_searchable_spec.rb": 8.413519115999406,7684 "spec/services/ci/delete_unit_tests_service_spec.rb": 11.400100775999817,7685 "spec/lib/gitlab/repository_cache_adapter_spec.rb": 10.804116278000038,7686 "spec/lib/atlassian/jira_connect/client_spec.rb": 7.302320693000183,7687 "spec/lib/backup/gitaly_backup_spec.rb": 7.544502863000162,7688 "spec/lib/feature/definition_spec.rb": 1.765611085999808,7689 "spec/services/ci/pipeline_schedules/calculate_next_run_service_spec.rb": 8.3622505609992,7690 "spec/models/ci/external_pull_request_spec.rb": 5.295863247999478,7691 "spec/services/wiki_pages/update_service_spec.rb": 10.382844674999433,7692 "spec/serializers/member_user_entity_spec.rb": 5.912037134999991,7693 "spec/lib/gitlab/http_io_spec.rb": 1.4946287100001427,7694 "spec/lib/gitlab/database/migrations/constraints_helpers_spec.rb": 2.0298875729995416,7695 "spec/helpers/preferences_helper_spec.rb": 1.456729303999964,7696 "spec/lib/gitlab/ci/config/entry/include/rules/rule_spec.rb": 1.4207158959998196,7697 "spec/finders/tags_finder_spec.rb": 1.6529122760002792,7698 "spec/lib/gitlab/ci/status/build/unschedule_spec.rb": 5.534741036999549,7699 "spec/services/merge_requests/export_csv_service_spec.rb": 5.758575328000006,7700 "spec/lib/gitlab/seeders/ci/runner/runner_fleet_seeder_spec.rb": 7.375057737000134,7701 "spec/uploaders/terraform/state_uploader_spec.rb": 7.028354217000015,7702 "spec/presenters/project_member_presenter_spec.rb": 3.7219520849994296,7703 "spec/lib/gitlab/quick_actions/command_definition_spec.rb": 1.4205401259996506,7704 "spec/services/projects/forks/sync_service_spec.rb": 7.146616508000079,7705 "spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb": 1.0544889580005474,7706 "spec/models/ci/unit_test_failure_spec.rb": 5.942269530999511,7707 "spec/lib/gitlab/ci/pipeline/expression/lexeme/and_spec.rb": 1.5476669549998405,7708 "spec/lib/gitlab/ci/status/build/cancelable_spec.rb": 5.229325494000477,7709 "spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb": 0.9022499410002638,7710 "spec/services/ci/pipeline_schedules/create_service_spec.rb": 2.781320197000241,7711 "spec/lib/gitlab/github_import/importer/issue_importer_spec.rb": 4.591239968999616,7712 "spec/lib/gitlab/repository_hash_cache_spec.rb": 1.1852733069999886,7713 "spec/services/git/tag_push_service_spec.rb": 6.068583951000619,7714 "spec/lib/gitlab/logger_spec.rb": 0.9111960509999335,7715 "spec/models/product_analytics_event_spec.rb": 3.8526666529996874,7716 "spec/lib/gitlab_edition_spec.rb": 0.9392199880003318,7717 "spec/lib/api/entities/project_spec.rb": 7.443461871000181,7718 "spec/services/projects/deploy_tokens/create_service_spec.rb": 4.510807196999849,7719 "spec/graphql/types/base_enum_spec.rb": 0.9296736790001887,7720 "spec/finders/design_management/designs_finder_spec.rb": 3.6760382390002633,7721 "spec/lib/gitlab/x509/certificate_spec.rb": 3.250891347000106,7722 "spec/rubocop/cop/migration/safer_boolean_column_spec.rb": 1.1579754589993172,7723 "spec/services/lfs/locks_finder_service_spec.rb": 4.533585914000469,7724 "spec/models/user_status_spec.rb": 1.0438444990004427,7725 "spec/models/lfs_download_object_spec.rb": 1.3612039420004294,7726 "spec/lib/gitlab/ci/config/entry/product/matrix_spec.rb": 0.7882897310000772,7727 "spec/lib/gitlab/ci/config/extendable/entry_spec.rb": 0.9743936750001012,7728 "spec/lib/gitlab/ci/badge/release/latest_release_spec.rb": 4.1844873449999795,7729 "spec/lib/gitlab/ci/pipeline/chain/seed_spec.rb": 3.8194502770002146,7730 "spec/finders/repositories/tree_finder_spec.rb": 1.225236522999694,7731 "spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb": 4.160280817000057,7732 "spec/helpers/groups/observability_helper_spec.rb": 0.7184061480002129,7733 "spec/services/two_factor/destroy_service_spec.rb": 2.386657541000204,7734 "spec/lib/gitlab/global_id_spec.rb": 0.8382643059994734,7735 "spec/lib/gitlab/hook_data/base_builder_spec.rb": 0.6957657099992502,7736 "spec/lib/bitbucket/representation/repo_spec.rb": 0.6555633519992625,7737 "spec/services/protected_branches/create_service_spec.rb": 1.4181080259995724,7738 "spec/services/draft_notes/destroy_service_spec.rb": 3.906590469000548,7739 "spec/services/service_desk/custom_emails/destroy_service_spec.rb": 1.0866419860003589,7740 "spec/tasks/gitlab/artifacts/check_rake_spec.rb": 3.5290490729994417,7741 "spec/lib/gitlab/github_import/importer/attachments/releases_importer_spec.rb": 0.8780443830000877,7742 "spec/models/concerns/file_store_mounter_spec.rb": 0.3653471580000769,7743 "spec/models/blob_viewer/package_json_spec.rb": 0.6070463469995957,7744 "spec/lib/gitlab/container_repository/tags/cache_spec.rb": 0.6639331919996039,7745 "spec/lib/gitlab/dependency_linker/package_json_linker_spec.rb": 0.7251467670002967,7746 "spec/lib/gitlab/ci/reports/security/identifier_spec.rb": 0.7749652920001608,7747 "spec/lib/gitlab/usage_data_non_sql_metrics_spec.rb": 0.4377741620000961,7748 "spec/lib/gitlab/ci/templates/Jobs/sast_iac_gitlab_ci_yaml_spec.rb": 2.00782852500015,7749 "spec/lib/gitlab/github_import/label_finder_spec.rb": 0.6323079049998341,7750 "spec/lib/gitlab/hook_data/user_builder_spec.rb": 0.7276511460004258,7751 "spec/lib/gitlab/checks/global_file_size_check_spec.rb": 1.1904138659992896,7752 "spec/views/notify/import_issues_csv_email.html.haml_spec.rb": 2.939104443999895,7753 "spec/graphql/mutations/custom_emoji/destroy_spec.rb": 1.3705574510004226,7754 "spec/models/ci/unit_test_spec.rb": 2.8580203310002616,7755 "spec/finders/users_star_projects_finder_spec.rb": 3.37134089600022,7756 "spec/rubocop/cop/graphql/json_type_spec.rb": 0.37891636800031847,7757 "spec/services/award_emojis/collect_user_emoji_service_spec.rb": 2.0155283039994174,7758 "spec/lib/gitlab/import_export/uploads_manager_spec.rb": 3.0560136229996715,7759 "spec/graphql/resolvers/crm/organizations_resolver_spec.rb": 1.899967483999717,7760 "spec/rubocop/cop/rspec/be_success_matcher_spec.rb": 0.6323495450005794,7761 "spec/lib/gitlab/ci/reports/security/finding_signature_spec.rb": 0.3024010140006794,7762 "spec/graphql/mutations/timelogs/delete_spec.rb": 2.395995920999667,7763 "spec/graphql/resolvers/recent_boards_resolver_spec.rb": 1.1889217259995348,7764 "spec/models/alert_management/alert_assignee_spec.rb": 1.7444922779995977,7765 "spec/lib/gitlab/git/repository_cleaner_spec.rb": 1.510476307999852,7766 "spec/models/preloaders/group_policy_preloader_spec.rb": 1.7140123110002605,7767 "spec/services/projects/move_lfs_objects_projects_service_spec.rb": 2.919071575000089,7768 "spec/workers/authorized_projects_worker_spec.rb": 1.4108869280007639,7769 "spec/serializers/diff_viewer_entity_spec.rb": 2.413910719999876,7770 "spec/helpers/hooks_helper_spec.rb": 0.6107686160003141,7771 "spec/views/projects/settings/integrations/edit.html.haml_spec.rb": 1.440451223999844,7772 "spec/support_specs/helpers/migrations_helpers_spec.rb": 0.4976386759999514,7773 "spec/services/import/gitlab_projects/create_project_service_spec.rb": 1.464866042999347,7774 "spec/graphql/mutations/achievements/delete_spec.rb": 0.8330006770002001,7775 "spec/lib/gitlab/ci/trace/metrics_spec.rb": 1.2861608279999928,7776 "spec/models/integrations/shimo_spec.rb": 1.6726329639996038,7777 "spec/presenters/packages/nuget/package_metadata_presenter_spec.rb": 1.039829429000747,7778 "spec/helpers/projects/pipeline_helper_spec.rb": 1.1205745120005304,7779 "spec/finders/incident_management/timeline_event_tags_finder_spec.rb": 2.222585735999928,7780 "spec/serializers/issue_serializer_spec.rb": 0.7963829800000894,7781 "spec/services/projects/open_merge_requests_count_service_spec.rb": 0.8464918469999247,7782 "spec/services/ci/create_pipeline_service/environment_spec.rb": 2.2033334280004055,7783 "spec/lib/gitlab/issuable/clone/copy_resource_events_service_spec.rb": 2.333291776999431,7784 "spec/services/ci/create_pipeline_service/custom_config_content_spec.rb": 1.9452259900008357,7785 "spec/lib/banzai/pipeline_spec.rb": 0.3457736099999238,7786 "spec/lib/gitlab/usage_data_counters/jetbrains_plugin_activity_unique_counter_spec.rb": 0.31455557299977954,7787 "spec/lib/gitlab/diff/file_collection/base_spec.rb": 2.0231887340005414,7788 "spec/workers/namespaces/root_statistics_worker_spec.rb": 0.957434246000048,7789 "spec/models/ci/project_mirror_spec.rb": 1.7341334189995905,7790 "spec/lib/gitlab/cleanup/remote_uploads_spec.rb": 1.5979997409995121,7791 "spec/workers/propagate_integration_project_worker_spec.rb": 1.7362602390003303,7792 "spec/models/concerns/cron_schedulable_spec.rb": 1.6901748430000225,7793 "spec/workers/update_external_pull_requests_worker_spec.rb": 0.5586250509995807,7794 "spec/lib/bulk_imports/common/extractors/json_extractor_spec.rb": 0.6522324030001982,7795 "spec/presenters/ci/pipeline_artifacts/code_coverage_presenter_spec.rb": 1.9652747190002628,7796 "spec/rubocop/cop/rspec/factories_in_migration_specs_spec.rb": 0.5539333019996775,7797 "spec/graphql/types/commit_signatures/x509_signature_type_spec.rb": 0.3420248600004925,7798 "spec/lib/gitlab/ci/config/interpolation/functions_stack_spec.rb": 0.251171758000055,7799 "spec/models/bulk_imports/batch_tracker_spec.rb": 0.43000465299974167,7800 "spec/services/packages/rubygems/dependency_resolver_service_spec.rb": 1.2978983960001642,7801 "spec/views/admin/sessions/new.html.haml_spec.rb": 1.1534796790001565,7802 "spec/lib/gitlab/database/async_constraints/validators_spec.rb": 0.20007877300031396,7803 "spec/serializers/feature_flag_serializer_spec.rb": 1.7903595239995411,7804 "spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb": 0.2562388579999606,7805 "spec/components/pajamas/concerns/checkbox_radio_options_spec.rb": 0.16273520499998995,7806 "spec/rubocop/cop/gitlab/rspec/avoid_setup_spec.rb": 0.2085290819995862,7807 "spec/lib/gitlab/alert_management/alert_status_counts_spec.rb": 1.2872340079993592,7808 "spec/lib/gitlab/request_context_spec.rb": 0.5628480410005068,7809 "spec/services/import/github/notes/create_service_spec.rb": 1.428981824999937,7810 "spec/services/jira_connect/create_asymmetric_jwt_service_spec.rb": 0.7363492959993891,7811 "spec/graphql/resolvers/ci/runner_jobs_resolver_spec.rb": 1.1152158730001247,7812 "spec/services/ci/pipeline_bridge_status_service_spec.rb": 1.234466971999609,7813 "spec/lib/gitlab/ci/build/policy/kubernetes_spec.rb": 1.3849494289997892,7814 "spec/graphql/types/notes/noteable_interface_spec.rb": 0.24193166899931384,7815 "spec/workers/gitlab/github_import/stage/import_issue_events_worker_spec.rb": 1.2104782340002203,7816 "spec/lib/gitlab/ci/status/pipeline/delayed_spec.rb": 1.0436511289999544,7817 "spec/graphql/resolvers/error_tracking/sentry_errors_resolver_spec.rb": 0.9322928290002892,7818 "spec/routing/user_routing_spec.rb": 1.116563812000095,7819 "spec/lib/gitlab/sanitizers/exception_message_spec.rb": 0.5361893740000596,7820 "spec/rubocop/cop/usage_data/large_table_spec.rb": 0.46781960899988917,7821 "spec/lib/bulk_imports/common/rest/get_badges_query_spec.rb": 0.7777747019999879,7822 "spec/graphql/resolvers/environments/nested_environments_resolver_spec.rb": 0.9179767100004028,7823 "spec/rubocop/cop/code_reuse/worker_spec.rb": 0.4269567929995901,7824 "spec/views/projects/hooks/index.html.haml_spec.rb": 1.1258498319994032,7825 "spec/lib/gitlab/usage/service_ping/instrumented_payload_spec.rb": 0.4396425610002552,7826 "spec/workers/projects/update_repository_storage_worker_spec.rb": 0.9709918149992518,7827 "spec/lib/gitlab/ci/templates/katalon_gitlab_ci_yaml_spec.rb": 1.0911546950001139,7828 "spec/serializers/test_suite_comparer_entity_spec.rb": 0.4078389750002316,7829 "spec/rubocop/cop/database/multiple_databases_spec.rb": 0.3836523660002058,7830 "spec/lib/gitlab/url_blockers/domain_allowlist_entry_spec.rb": 0.3929231760002949,7831 "spec/services/achievements/destroy_user_achievement_service_spec.rb": 0.7890961310004059,7832 "spec/services/user_project_access_changed_service_spec.rb": 0.4045126250002795,7833 "spec/services/projects/readme_renderer_service_spec.rb": 0.5829050290003579,7834 "spec/lib/gitlab/github_import/representation/pull_request_review_spec.rb": 0.344702879999204,7835 "spec/lib/gitlab/ci/artifacts/decompressed_artifact_size_validator_spec.rb": 0.3577118890007114,7836 "spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb": 0.3689628280008037,7837 "spec/lib/gitlab/markdown_cache/redis/extension_spec.rb": 0.4121911149995867,7838 "spec/bin/diagnostic_reports_uploader_spec.rb": 0.301935733999926,7839 "spec/rubocop/check_graceful_task_spec.rb": 0.3069457030005651,7840 "spec/services/google_cloud/enable_vision_ai_service_spec.rb": 0.7753996629999165,7841 "spec/models/bulk_imports/configuration_spec.rb": 0.3508668089998537,7842 "spec/lib/banzai/filter/service_desk_upload_link_filter_spec.rb": 0.284392315000332,7843 "spec/models/work_items/widgets/notes_spec.rb": 0.5667514309998296,7844 "spec/serializers/admin/abuse_report_serializer_spec.rb": 0.7286173160000544,7845 "spec/tooling/danger/required_stops_spec.rb": 0.26052614800028095,7846 "spec/lib/gitlab/memory/upload_and_cleanup_reports_spec.rb": 0.28139818599993305,7847 "spec/lib/gitlab/import_export/recursive_merge_folders_spec.rb": 0.24926262799999677,7848 "spec/lib/gitlab/import_export/log_util_spec.rb": 0.27782904600007896,7849 "spec/lib/gitlab/application_rate_limiter/increment_per_actioned_resource_spec.rb": 0.25310610799988353,7850 "spec/models/users/calloutable_spec.rb": 0.5032622660000925,7851 "spec/lib/gitlab/grape_logging/loggers/response_logger_spec.rb": 0.26253811700007645,7852 "spec/lib/gitlab/asset_proxy_spec.rb": 0.2773796860001312,7853 "spec/rubocop/cop/migration/add_timestamps_spec.rb": 0.2984895029994732,7854 "spec/services/groups/update_statistics_service_spec.rb": 0.4143025840003247,7855 "spec/lib/api/github/entities_spec.rb": 0.4261441830003605,7856 "spec/lib/gitlab/search/abuse_validators/no_abusive_term_length_validator_spec.rb": 0.2561377470001389,7857 "spec/models/concerns/blob_language_from_git_attributes_spec.rb": 0.24552771900016523,7858 "spec/models/bulk_imports/export_upload_spec.rb": 0.39203588599957584,7859 "spec/graphql/types/metrics/dashboards/annotation_type_spec.rb": 0.213001451999844,7860 "spec/lib/gitlab/email/message/in_product_marketing/admin_verify_spec.rb": 0.22251355000025796,7861 "spec/graphql/types/clusters/agent_token_type_spec.rb": 0.2054088419999971,7862 "spec/services/groups/deploy_tokens/revoke_service_spec.rb": 0.3410377509999307,7863 "spec/lib/gitlab/sidekiq_middleware/pause_control/strategy_handler_spec.rb": 0.2031833219998589,7864 "spec/services/captcha/captcha_verification_service_spec.rb": 0.1993377219996546,7865 "spec/lib/api/validations/validators/array_none_any_spec.rb": 0.16597324600024876,7866 "spec/graphql/types/ci/config/job_type_spec.rb": 0.16449245600051654,7867 "spec/models/groups/feature_setting_spec.rb": 0.17609342400010064,7868 "spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb": 0.18040230499991594,7869 "spec/lib/gitlab/github_import/client_pool_spec.rb": 0.18657723399974202,7870 "spec/lib/gitlab/audit/deploy_key_author_spec.rb": 0.1804496040003869,7871 "spec/graphql/types/metadata/kas_type_spec.rb": 0.1800057350001225,7872 "spec/lib/sidebars/groups/super_sidebar_menus/build_menu_spec.rb": 0.24410986900056741,7873 "spec/initializers/rdoc_segfault_patch_spec.rb": 0.20091057299941895,7874 "spec/lib/gitlab/graphql/tracers/logger_tracer_spec.rb": 0.1994473630002176,7875 "spec/lib/gitlab/diff/inline_diff_marker_spec.rb": 0.1798434840002301,7876 "spec/lib/sidebars/organizations/menus/manage_menu_spec.rb": 0.2015886520002823,7877 "spec/lib/bulk_imports/common/extractors/rest_extractor_spec.rb": 0.2625576769996769,7878 "spec/lib/bulk_imports/retry_pipeline_error_spec.rb": 0.1485151169999881,7879 "spec/graphql/resolvers/packages_base_resolver_spec.rb": 0.15844597600062116,7880 "spec/db/production/add_security_training_providers_spec.rb": 0.18401628399988113,7881 "spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_instance_type_active_online_metric_spec.rb": 0.18310500400002638,7882 "spec/helpers/deploy_tokens_helper_spec.rb": 0.16794515499987028,7883 "spec/initializers/omniauth_spec.rb": 0.14904673599994567,7884 "spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rb": 0.1523554969999168,7885 "spec/models/blob_viewer/podspec_spec.rb": 0.1618118559999857,7886 "spec/helpers/export_helper_spec.rb": 0.14736836700012645,7887 "spec/tooling/lib/tooling/crystalball/coverage_lines_strategy_spec.rb": 0.14157958800024062,7888 "spec/lib/gitlab/nav/top_nav_menu_header_spec.rb": 0.141356946999621877889}7890Knapsack global time execution for tests: 24m 38s7891Pending: (Failures listed here are expected and do not affect your suite's status)7892 1) Milestone modules with a project behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when creating an object does not raise an error if the internal id is blank7893 # No reason given7894 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:497895 2) Milestone modules with a project behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when updating an object does not raise an error if the internal id is blank7896 # No reason given7897 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:577898 3) Milestone modules with a group behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when creating an object does not raise an error if the internal id is blank7899 # No reason given7900 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:497901 4) Milestone modules with a group behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when updating an object does not raise an error if the internal id is blank7902 # No reason given7903 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:577904 5) Atlassian::JiraConnect::Client#store_build_info avoids N+1 database queries7906 Failure/Error:7907 expect do7908 subject.send(:store_build_info, project: project, pipelines: pipelines)7909 end.not_to exceed_query_limit(baseline)7910 Expected a maximum of 18 queries, got 19:7911 Query Diff:7912 -----------7913 SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."source_project_id" = 1090 AND "merge_requests"."source_branch" = 'master' AND (EXISTS (SELECT 1 FROM "merge_request_diffs"...7914 -- (expected: 0, got: 1)7915 INNER JOIN "merge_request_diff_commits" ON "merge_request_diff_commits"."merge_request_diff_id" = "merge_request_diffs"."id" WHERE (merge_requests.latest_merge_request_diff_id = merge_request_diffs.id) AND "merge_request_diff_commits"."sha" = '\xb83d6e391c22777fca1ed3012fce84f633d7fed0'))7916 # ./spec/lib/atlassian/jira_connect/client_spec.rb:415:in `block (3 levels) in <top (required)>'7917 # ./spec/lib/atlassian/jira_connect/client_spec.rb:26:in `block (3 levels) in <top (required)>'7918 # ./spec/lib/atlassian/jira_connect/client_spec.rb:26:in `block (2 levels) in <top (required)>'7919 # ./spec/spec_helper.rb:453:in `block (3 levels) in <top (required)>'7920 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'7921 # ./spec/spec_helper.rb:444:in `block (2 levels) in <top (required)>'7922 # ./spec/spec_helper.rb:440:in `block (3 levels) in <top (required)>'7923 # ./lib/gitlab/application_context.rb:66:in `with_raw_context'7924 # ./spec/spec_helper.rb:440:in `block (2 levels) in <top (required)>'7925 # ./spec/spec_helper.rb:268:in `block (2 levels) in <top (required)>'7926 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'7927 # ./spec/support/fast_quarantine.rb:22:in `block (2 levels) in <top (required)>'7928 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'7929 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'7930 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'7931 6) MigrationsHelpers#active_record_base ci database not configured returns the main base model7932 # Skipping because some of the extra databases [:ci] are setup7933 # ./spec/support_specs/helpers/migrations_helpers_spec.rb:367934 7) MigrationsHelpers#table ci database not configured creates a class based on main base model7935 # Skipping because some of the extra databases [:ci] are setup7936 # ./spec/support_specs/helpers/migrations_helpers_spec.rb:687937Finished in 24 minutes 40 seconds (files took 1 minute 15.69 seconds to load)79383674 examples, 0 failures, 7 pending7939Randomized with seed 183007940[TEST PROF INFO] Time spent in factories: 15:02.429 (59.48% of total time)7941RSpec exited with 0.7942No examples to retry, congrats!7944Running after script...7945$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"7950Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy7952Uploading artifacts...7953WARNING: auto_explain/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 7954coverage/: found 5 matching artifact files and directories 7955crystalball/: found 2 matching artifact files and directories 7956deprecations/: found 7 matching artifact files and directories 7957knapsack/: found 4 matching artifact files and directories 7958rspec/: found 16 matching artifact files and directories 7959WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 7960log/*.log: found 20 matching artifact files and directories 7961WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4900739480/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com7962WARNING: Retrying... context=artifacts-uploader error=request redirected7963Uploading artifacts as "archive" to coordinator... 201 Created id=4900739480 responseStatus=201 Created token=64_8yowa7964Uploading artifacts...7965rspec/rspec-*.xml: found 1 matching artifact files and directories 7966WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4900739480/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com7967WARNING: Retrying... context=artifacts-uploader error=request redirected7968Uploading artifacts as "junit" to coordinator... 201 Created id=4900739480 responseStatus=201 Created token=64_8yowa7970Job succeeded