rspec unit pg13 26/28
Passed Started
by
@fabiopitino
Fabio Pitino
1Running with gitlab-runner 16.1.0~beta.5.gf131a6a2 (f131a6a2)2 on blue-4.shared-gitlab-org.runners-manager.gitlab.com/default 8cwZ3F43, system ID: s_df0f7e24ca8b3 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...10Using docker image sha256:73740c557807c4bc5d692f263c0e35454270600da4b22bbe952331411426c8b5 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:3174001f839c42e299ac06a42f8ded446edfcb33b0eb820874749a3f53eb799c ...11WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.12WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.13Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...16Using docker image sha256:a9a90ece30d9630d694ab1997cd103ea8ec729789451b983a75c7b58b0062d45 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7ef36177d5d0bc554fbb63d8210ae751bcc538bea7905b51d078d9ab90a755fa ...17Starting service redis:6.2-alpine ...18Pulling docker image redis:6.2-alpine ...19Using docker image sha256:85fd7bd884b6493c8eb6f4dffbe5406d97cce56aff84f1580a5eb5b9d841f158 for redis:6.2-alpine with digest redis@sha256:87c44d5d9f472e767c8737f4130c765d77bdc95c7472d6427cfc9d4632f12da6 ...20Waiting for services to be up and running (timeout 30 seconds)...21Authenticating with credentials from job payload (GitLab Registry)22Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...23Using docker image sha256:61b59025d0d646cd177f654d8f81df859675be528f37dcc2ce6f39a49c7a5dd9 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:25367d41b1034f1ecacfc9cb8eebc70cb30c6fdade3781cf295488255bf61614 ...25Running on runner-8cwz3f43-project-278964-concurrent-0 via runner-8cwz3f43-shared-gitlab-org-1685669462-8c6745c4...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/29Created fresh repository.30remote: Enumerating objects: 139970, done. 31remote: Counting objects: 100% (139970/139970), done. 32remote: Compressing objects: 100% (94736/94736), done. 33remote: Total 139970 (delta 61223), reused 92025 (delta 39894), pack-reused 0 34Receiving objects: 100% (139970/139970), 123.36 MiB | 30.87 MiB/s, done.35Resolving deltas: 100% (61223/61223), done.37 * [new ref] refs/pipelines/887306308 -> refs/pipelines/88730630838Checking out 95754c79 as detached HEAD (ref is refs/merge-requests/122015/merge)...39Skipping Git submodules setup40$ git remote set-url origin "${CI_REPOSITORY_URL}"42Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...43Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 44Successfully extracted cache46Downloading artifacts for compile-test-assets (4400964016)...47Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964016 responseStatus=200 OK token=64_PBwyC48Downloading artifacts for detect-tests (4400964025)...49Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964025 responseStatus=200 OK token=64_PBwyC50Downloading artifacts for retrieve-tests-metadata (4400964028)...51Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964028 responseStatus=200 OK token=64_PBwyC52Downloading artifacts for setup-test-env (4400964019)...53Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4400964019 responseStatus=200 OK token=64_PBwyC55Using docker image sha256:61b59025d0d646cd177f654d8f81df859675be528f37dcc2ce6f39a49c7a5dd9 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-18.16-postgresql-13@sha256:25367d41b1034f1ecacfc9cb8eebc70cb30c6fdade3781cf295488255bf61614 ...56$ echo $FOSS_ONLY57$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb58$ export GOPATH=$CI_PROJECT_DIR/.go59$ mkdir -p $GOPATH60$ source scripts/utils.sh61$ source scripts/prepare_build.sh716Using decomposed database config (config/database.yml.decomposed-postgresql)717Geo DB won't be set up.718Embedding DB won't be set up.734$ source ./scripts/rspec_helpers.sh735$ run_timed_command "gem install knapsack --no-document"736$ gem install knapsack --no-document737Successfully installed knapsack-4.0.07381 gem installed739==> 'gem install knapsack --no-document' succeeded in 0 seconds.740$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"742$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"747$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"748$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"749SKIP_FLAKY_TESTS_AUTOMATICALLY: 750RETRY_FAILED_TESTS_IN_NEW_PROCESS: true751KNAPSACK_GENERATE_REPORT: true752FLAKY_RSPEC_GENERATE_REPORT: true753KNAPSACK_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.rb754KNAPSACK_LOG_LEVEL: debug755KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13_26_28_report.json756FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json757FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_26_28_report.json758NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_26_28_report.json759SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests_rspec_unit_pg13_26_28.txt760CRYSTALBALL: 761RSPEC_TESTS_MAPPING_ENABLED: 762RSPEC_TESTS_FILTER_FILE: 763Running 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-4400964254.json --format RspecJunitFormatter --out rspec/rspec-4400964254.xml --tag ~quarantine --tag ~level:background_migration -- spec/services/merge_requests/push_options_handler_service_spec.rb spec/services/issues/update_service_spec.rb spec/models/project_team_spec.rb spec/lib/gitlab/git/tree_spec.rb spec/lib/banzai/filter/references/issue_reference_filter_spec.rb spec/models/concerns/mentionable_spec.rb spec/lib/gitlab/url_blocker_spec.rb spec/services/event_create_service_spec.rb spec/lib/gitlab/background_migration/remove_vulnerability_finding_links_spec.rb spec/lib/gitlab/background_migration/backfill_vulnerability_reads_cluster_agent_spec.rb spec/lib/gitlab/background_migration/populate_topics_non_private_projects_count_spec.rb spec/lib/gitlab/background_migration/backfill_namespace_id_for_project_route_spec.rb spec/helpers/groups_helper_spec.rb spec/models/operations/feature_flags/user_list_spec.rb spec/lib/gitlab/ci/status/pipeline/factory_spec.rb spec/workers/database/batched_background_migration/ci_database_worker_spec.rb spec/presenters/merge_request_presenter_spec.rb spec/policies/group_member_policy_spec.rb spec/lib/gitlab/database/reflection_spec.rb spec/lib/gitlab/ci/variables/collection_spec.rb spec/models/concerns/integrations/has_data_fields_spec.rb spec/lib/gitlab/background_migration/populate_vulnerability_dismissal_fields_spec.rb spec/lib/gitlab/ci/pipeline/chain/validate/abilities_spec.rb spec/serializers/diffs_entity_spec.rb spec/models/pages_domain_spec.rb spec/models/hooks/system_hook_spec.rb spec/finders/clusters/knative_services_finder_spec.rb spec/workers/projects/after_import_worker_spec.rb spec/services/auto_merge_service_spec.rb spec/lib/gitlab/ci/runner_upgrade_check_spec.rb spec/haml_lint/linter/documentation_links_spec.rb spec/models/metrics/dashboard/annotation_spec.rb spec/helpers/tree_helper_spec.rb spec/models/diff_viewer/base_spec.rb spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb spec/lib/gitlab/prometheus/queries/additional_metrics_environment_query_spec.rb spec/graphql/mutations/design_management/upload_spec.rb spec/models/merge_request/metrics_spec.rb spec/lib/gitlab/import_export/merge_request_parser_spec.rb spec/presenters/clusters/cluster_presenter_spec.rb spec/lib/gitlab/graphql/queries_spec.rb spec/lib/gitlab/application_context_spec.rb spec/experiments/application_experiment_spec.rb spec/graphql/mutations/issues/set_confidential_spec.rb spec/services/system_notes/commit_service_spec.rb spec/lib/gitlab_spec.rb spec/graphql/resolvers/group_milestones_resolver_spec.rb spec/services/work_items/task_list_reference_removal_service_spec.rb spec/lib/gitlab/database/query_analyzers/prevent_cross_database_modification_spec.rb spec/graphql/mutations/merge_requests/create_spec.rb spec/scripts/review_apps/automated_cleanup_spec.rb spec/services/jira_import/start_import_service_spec.rb spec/services/lfs/locks_finder_service_spec.rb spec/policies/metrics/dashboard/annotation_policy_spec.rb spec/lib/gitlab/redis/feature_flag_spec.rb spec/lib/gitlab/background_migration/populate_namespace_statistics_spec.rb spec/graphql/mutations/issues/create_spec.rb spec/lib/gitlab/ci/status/build/retryable_spec.rb spec/lib/sidebars/projects/menus/repository_menu_spec.rb spec/helpers/page_layout_helper_spec.rb spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb spec/services/projects/hashed_storage/migration_service_spec.rb spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb spec/services/service_response_spec.rb spec/services/branches/delete_service_spec.rb spec/tooling/graphql/docs/renderer_spec.rb spec/workers/database/batched_background_migration/main_execution_worker_spec.rb spec/graphql/types/base_enum_spec.rb spec/initializers/lograge_spec.rb spec/models/integrations/custom_issue_tracker_spec.rb spec/services/projects/move_project_group_links_service_spec.rb spec/models/user_interacted_project_spec.rb spec/lib/banzai/filter/image_link_filter_spec.rb spec/workers/gitlab/jira_import/stage/import_attachments_worker_spec.rb spec/rubocop/cop/api/ensure_string_detail_spec.rb spec/views/projects/commit/_commit_box.html.haml_spec.rb spec/lib/gitlab/repository_cache_spec.rb spec/models/group_deploy_key_spec.rb spec/services/system_notes/incidents_service_spec.rb spec/rubocop/formatter/todo_formatter_spec.rb spec/workers/ci/drop_pipeline_worker_spec.rb spec/graphql/resolvers/ci/config_resolver_spec.rb spec/tasks/gitlab/db/decomposition/rollback/bump_ci_sequences_rake_spec.rb spec/lib/unnested_in_filters/rewriter_spec.rb spec/lib/gitlab/security/scan_configuration_spec.rb spec/rubocop/cop/rspec/be_success_matcher_spec.rb spec/lib/gitlab/email/attachment_uploader_spec.rb spec/lib/constraints/project_url_constrainer_spec.rb spec/graphql/types/color_type_spec.rb spec/workers/integrations/slack_event_worker_spec.rb spec/lib/gitlab/database/migrations/batched_migration_last_id_spec.rb spec/finders/user_group_notification_settings_finder_spec.rb spec/services/projects/move_project_authorizations_service_spec.rb spec/workers/error_tracking_issue_link_worker_spec.rb spec/graphql/resolvers/concerns/caching_array_resolver_spec.rb spec/lib/gitlab/database/schema_validation/schema_inconsistency_spec.rb spec/lib/gitlab/harbor/query_spec.rb spec/lib/error_tracking/sentry_client/issue_link_spec.rb spec/initializers/forbid_sidekiq_in_transactions_spec.rb spec/models/users/phone_number_validation_spec.rb spec/workers/gitlab/export/prune_project_export_jobs_worker_spec.rb spec/services/projects/readme_renderer_service_spec.rb spec/services/integrations/slack_interactions/slack_block_actions/incident_management/project_update_handler_spec.rb spec/graphql/mutations/customer_relations/contacts/create_spec.rb spec/lib/gitlab/jira_import/base_importer_spec.rb spec/lib/banzai/filter/service_desk_upload_link_filter_spec.rb spec/services/error_tracking/list_issues_service_spec.rb spec/policies/alert_management/alert_policy_spec.rb spec/models/ci/build_pending_state_spec.rb spec/lib/gitlab/seeders/ci/variables_project_seeder_spec.rb spec/lib/gitlab/github_import/markdown/attachment_spec.rb spec/lib/gitlab/github_import/importer/repository_importer_spec.rb spec/lib/gitlab/webpack/manifest_spec.rb spec/workers/packages/cleanup_package_file_worker_spec.rb spec/lib/gitlab/github_import/representation/user_spec.rb spec/lib/gitlab/hook_data/merge_request_builder_spec.rb spec/graphql/resolvers/project_pipeline_statistics_resolver_spec.rb spec/services/issuable/callbacks/milestone_spec.rb spec/lib/error_tracking/collector/payload_validator_spec.rb spec/views/layouts/_head.html.haml_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/numbers_metric_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/distinct_count_projects_with_expiration_policy_metric_spec.rb spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb spec/services/tags/destroy_service_spec.rb spec/helpers/whats_new_helper_spec.rb spec/rubocop/cop/migration/datetime_spec.rb spec/lib/gitlab/ci/reports/security/aggregated_report_spec.rb spec/models/tree_spec.rb spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb spec/lib/gitlab/prometheus/metric_group_spec.rb spec/services/packages/nuget/metadata_extraction_service_spec.rb spec/views/events/event/_common.html.haml_spec.rb spec/workers/wikis/git_garbage_collect_worker_spec.rb spec/experiments/ios_specific_templates_experiment_spec.rb spec/uploaders/object_storage/s3_spec.rb spec/lib/gitlab/ci/reports/coverage_report_spec.rb spec/policies/container_expiration_policy_policy_spec.rb spec/lib/rouge/formatters/html_gitlab_spec.rb spec/graphql/resolvers/commit_pipelines_resolver_spec.rb spec/initializers/00_rails_disable_joins_spec.rb spec/models/user_agent_detail_spec.rb spec/tasks/gitlab/db/decomposition/connection_status_rake_spec.rb spec/lib/gitlab/diff/line_mapper_spec.rb spec/lib/gitlab/sidekiq_logging/deduplication_logger_spec.rb spec/helpers/form_helper_spec.rb spec/policies/identity_provider_policy_spec.rb spec/workers/issues/close_worker_spec.rb spec/models/achievements/user_achievement_spec.rb spec/lib/gitlab/dependency_linker/go_sum_linker_spec.rb spec/helpers/ci/builds_helper_spec.rb spec/finders/packages/helm/packages_finder_spec.rb spec/lib/declarative_enum_spec.rb spec/lib/gitlab/patch/uri_spec.rb spec/lib/sidebars/projects/super_sidebar_menus/analyze_menu_spec.rb spec/lib/gitlab/loop_helpers_spec.rb spec/workers/users/migrate_records_to_ghost_user_in_batches_worker_spec.rb spec/lib/gitlab/git/hook_env_spec.rb spec/workers/design_management/copy_design_collection_worker_spec.rb spec/lib/gitlab/nav/top_nav_menu_header_spec.rb spec/lib/gitlab/email/message/in_product_marketing/trial_short_spec.rb spec/lib/initializer_connections_spec.rb spec/policies/protected_branch_access_policy_spec.rb spec/graphql/types/merge_request_review_state_enum_spec.rb spec/lib/gitlab/github_import/importer/attachments/merge_requests_importer_spec.rb spec/graphql/types/release_source_type_spec.rb spec/lib/gitlab/ci/build/releaser_spec.rb spec/workers/namespaces/schedule_aggregation_worker_spec.rb spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb spec/workers/expire_build_artifacts_worker_spec.rb spec/lib/gitlab/ci/config/external/mapper/normalizer_spec.rb spec/finders/applications_finder_spec.rb spec/services/keys/revoke_service_spec.rb spec/models/namespaces/project_namespace_spec.rb spec/models/project_metrics_setting_spec.rb spec/serializers/merge_request_sidebar_extras_entity_spec.rb spec/services/projects/open_merge_requests_count_service_spec.rb spec/lib/gitlab/ci/templates/katalon_gitlab_ci_yaml_spec.rb spec/services/snippets/schedule_bulk_repository_shard_moves_service_spec.rb spec/serializers/integrations/event_entity_spec.rb spec/validators/bytesize_validator_spec.rb spec/validators/nested_attributes_duplicates_validator_spec.rb spec/lib/gitlab/pagination/keyset/request_context_spec.rb spec/lib/gitlab/metrics/exporter/metrics_middleware_spec.rb spec/workers/clusters/cleanup/service_account_worker_spec.rb spec/serializers/merge_request_current_user_entity_spec.rb spec/models/project_custom_attribute_spec.rb spec/lib/bulk_imports/projects/pipelines/external_pull_requests_pipeline_spec.rb spec/serializers/container_tag_entity_spec.rb spec/tooling/lib/tooling/parallel_rspec_runner_spec.rb spec/lib/gitlab/safe_request_purger_spec.rb spec/graphql/types/ci/job_trace_type_spec.rb spec/lib/gitlab/kubernetes/rollout_instances_spec.rb spec/models/user_mentions/issue_user_mention_spec.rb spec/serializers/ci/dag_stage_entity_spec.rb spec/lib/gitlab/database/migration_helpers/announce_database_spec.rb spec/lib/gitlab/dependency_linker/go_mod_linker_spec.rb spec/views/profiles/keys/_key_details.html.haml_spec.rb spec/workers/namespaces/prune_aggregation_schedules_worker_spec.rb spec/tooling/lib/tooling/crystalball/coverage_lines_execution_detector_spec.rb spec/helpers/external_link_helper_spec.rb spec/lib/gitlab/markdown_cache/redis/store_spec.rb spec/graphql/types/work_item_type_spec.rb spec/graphql/types/invitation_interface_spec.rb spec/lib/sidebars/projects/menus/snippets_menu_spec.rb spec/lib/gitlab/ci/reports/terraform_reports_spec.rb spec/tooling/danger/config_files_spec.rb spec/lib/csv_builders/stream_spec.rb spec/lib/api/entities/project_job_token_scope_spec.rb spec/lib/gitlab/word_diff/parser_spec.rb spec/validators/gitlab/zoom_url_validator_spec.rb spec/graphql/types/time_tracking/timelog_category_type_spec.rb spec/views/projects/issues/_related_issues.html.haml_spec.rb spec/lib/gitlab/import/errors_spec.rb spec/lib/gitlab/pagination/keyset/in_operator_optimization/order_by_column_data_spec.rb spec/graphql/types/ci/recent_failures_type_spec.rb spec/graphql/types/alert_management/http_integration_type_spec.rb spec/rubocop/node_pattern_helper_spec.rb spec/graphql/types/ci/config/include_type_enum_spec.rb spec/models/resource_event_spec.rb spec/graphql/types/ci/config/config_type_spec.rb spec/lib/gitlab/app_logger_spec.rb spec/lib/gitlab/ci/build/port_spec.rb spec/graphql/resolvers/package_details_resolver_spec.rb spec/graphql/types/availability_enum_spec.rb spec/lib/gitlab/memory/reports_uploader_spec.rb spec/graphql/types/jira_import_type_spec.rb spec/lib/api/entities/projects/topic_spec.rb spec/models/integrations/base_slack_notification_spec.rb spec/graphql/types/ci/pipeline_schedule_status_enum_spec.rb spec/views/layouts/_published_experiments.html.haml_spec.rb spec/uploaders/uploader_helper_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_metric_spec.rb spec/lib/gitlab/serializer/ci/variables_spec.rb spec/lib/gitlab/no_cache_headers_spec.rb spec/lib/sidebars/uncategorized_menu_spec.rb spec/lib/gitlab/kubernetes/config_maps/aws_node_auth_spec.rb spec/lib/gitlab/metrics/dashboard/stages/track_panel_type_spec.rb spec/lib/gitlab/graphql/copy_field_description_spec.rbKnapsack report generator started!764warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.766/builds/gitlab-org/gitlab/lib/gitlab.rb:47: warning: already initialized constant Gitlab::APP_DIRS_PATTERN767/builds/gitlab-org/gitlab/lib/gitlab.rb:47: warning: previous definition of APP_DIRS_PATTERN was here768/builds/gitlab-org/gitlab/lib/gitlab.rb:48: warning: already initialized constant Gitlab::VERSION769/builds/gitlab-org/gitlab/lib/gitlab.rb:48: warning: previous definition of VERSION was here770/builds/gitlab-org/gitlab/lib/gitlab.rb:49: warning: already initialized constant Gitlab::INSTALLATION_TYPE771/builds/gitlab-org/gitlab/lib/gitlab.rb:49: warning: previous definition of INSTALLATION_TYPE was here772/builds/gitlab-org/gitlab/lib/gitlab.rb:50: warning: already initialized constant Gitlab::HTTP_PROXY_ENV_VARS773/builds/gitlab-org/gitlab/lib/gitlab.rb:50: warning: previous definition of HTTP_PROXY_ENV_VARS was here774Run options: exclude {:quarantine=>true, :level=>"background_migration"}775Test environment set up in 0.91335798 seconds776MergeRequests::PushOptionsHandlerService777 `create` push option778 with a new branch779 behaves like a service that can create a merge request780 creates a merge request with the correct target branch781 when project has been forked782 sets the correct source and target project783 with an existing branch but no open MR784 behaves like a service that can create a merge request785 creates a merge request with the correct target branch786 when project has been forked787 sets the correct source and target project788 with an existing branch that has a merge request open789 behaves like a service that does not create a merge request790 is expected not to change `MergeRequest.count`791 behaves like with a deleted branch792 behaves like a service that does nothing793 is expected not to change `MergeRequest.count`794 is expected not to change `MergeRequest.maximum(:updated_at)`795 behaves like with the project default branch796 behaves like a service that does nothing797 is expected not to change `MergeRequest.count`798 is expected not to change `MergeRequest.maximum(:updated_at)`799 `merge_when_pipeline_succeeds` push option800 with a new branch801 adds an error to the service802 behaves like a service that does not create a merge request803 is expected not to change `MergeRequest.count`804 when coupled with the `create` push option805 behaves like a service that can create a merge request806 creates a merge request with the correct target branch807 when project has been forked808 sets the correct source and target project809 behaves like a service that can set the merge request to merge when pipeline succeeds810 sets auto_merge_enabled811 with an existing branch but no open MR812 adds an error to the service813 behaves like a service that does not create a merge request814 is expected not to change `MergeRequest.count`815 when coupled with the `create` push option816 behaves like a service that can create a merge request817 creates a merge request with the correct target branch818 when project has been forked819 sets the correct source and target project820 behaves like a service that can set the merge request to merge when pipeline succeeds821 sets auto_merge_enabled822 with an existing branch that has a merge request open823 behaves like a service that does not create a merge request824 is expected not to change `MergeRequest.count`825 behaves like a service that can set the merge request to merge when pipeline succeeds826 sets auto_merge_enabled827 behaves like with a deleted branch828 behaves like a service that does nothing829 is expected not to change `MergeRequest.count`830 is expected not to change `MergeRequest.maximum(:updated_at)`831 behaves like with the project default branch832 behaves like a service that does nothing833 is expected not to change `MergeRequest.count`834 is expected not to change `MergeRequest.maximum(:updated_at)`835 `remove_source_branch` push option836 with a new branch837 adds an error to the service838 behaves like a service that does not create a merge request839 is expected not to change `MergeRequest.count`840 when coupled with the `create` push option841 behaves like a service that can create a merge request842 creates a merge request with the correct target branch843 when project has been forked844 sets the correct source and target project845 behaves like a service that can remove the source branch when it is merged846 returns true to force_remove_source_branch?847 with an existing branch but no open MR848 adds an error to the service849 behaves like a service that does not create a merge request850 is expected not to change `MergeRequest.count`851 when coupled with the `create` push option852 behaves like a service that can create a merge request853 creates a merge request with the correct target branch854 when project has been forked855 sets the correct source and target project856 behaves like a service that can remove the source branch when it is merged857 returns true to force_remove_source_branch?858 with an existing branch that has a merge request open859 behaves like a service that does not create a merge request860 is expected not to change `MergeRequest.count`861 behaves like a service that can remove the source branch when it is merged862 returns true to force_remove_source_branch?863 behaves like with a deleted branch864 behaves like a service that does nothing865 is expected not to change `MergeRequest.count`866 is expected not to change `MergeRequest.maximum(:updated_at)`867 behaves like with the project default branch868 behaves like a service that does nothing869 is expected not to change `MergeRequest.count`870 is expected not to change `MergeRequest.maximum(:updated_at)`871 `target` push option872 with a new branch873 adds an error to the service874 behaves like a service that does not create a merge request875 is expected not to change `MergeRequest.count`876 when coupled with the `create` push option877 behaves like a service that can create a merge request878 creates a merge request with the correct target branch879 when project has been forked880 sets the correct source and target project881 behaves like a service that can set the target of a merge request882 sets the target_branch883 with an existing branch but no open MR884 adds an error to the service885 behaves like a service that does not create a merge request886 is expected not to change `MergeRequest.count`887 when coupled with the `create` push option888 behaves like a service that can create a merge request889 creates a merge request with the correct target branch890 when project has been forked891 sets the correct source and target project892 behaves like a service that can set the target of a merge request893 sets the target_branch894 with an existing branch that has a merge request open895 behaves like a service that does not create a merge request896 is expected not to change `MergeRequest.count`897 behaves like a service that can set the target of a merge request898 sets the target_branch899 behaves like with a deleted branch900 behaves like a service that does nothing901 is expected not to change `MergeRequest.count`902 is expected not to change `MergeRequest.maximum(:updated_at)`903 behaves like with the project default branch904 behaves like a service that does nothing905 is expected not to change `MergeRequest.count`906 is expected not to change `MergeRequest.maximum(:updated_at)`907 `title` push option908 with a new branch909 adds an error to the service910 behaves like a service that does not create a merge request911 is expected not to change `MergeRequest.count`912 when coupled with the `create` push option913 behaves like a service that can create a merge request914 creates a merge request with the correct target branch915 when project has been forked916 sets the correct source and target project917 behaves like a service that can set the title of a merge request918 sets the title919 with an existing branch but no open MR920 adds an error to the service921 behaves like a service that does not create a merge request922 is expected not to change `MergeRequest.count`923 when coupled with the `create` push option924 behaves like a service that can create a merge request925 creates a merge request with the correct target branch926 when project has been forked927 sets the correct source and target project928 behaves like a service that can set the title of a merge request929 sets the title930 with an existing branch that has a merge request open931 behaves like a service that does not create a merge request932 is expected not to change `MergeRequest.count`933 behaves like a service that can set the title of a merge request934 sets the title935 behaves like with a deleted branch936 behaves like a service that does nothing937 is expected not to change `MergeRequest.count`938 is expected not to change `MergeRequest.maximum(:updated_at)`939 behaves like with the project default branch940 behaves like a service that does nothing941 is expected not to change `MergeRequest.count`942 is expected not to change `MergeRequest.maximum(:updated_at)`943 `description` push option944 with a new branch945 adds an error to the service946 behaves like a service that does not create a merge request947 is expected not to change `MergeRequest.count`948 when coupled with the `create` push option949 behaves like a service that can create a merge request950 creates a merge request with the correct target branch951 when project has been forked952 sets the correct source and target project953 behaves like a service that can set the description of a merge request954 sets the description955 with an existing branch but no open MR956 adds an error to the service957 behaves like a service that does not create a merge request958 is expected not to change `MergeRequest.count`959 when coupled with the `create` push option960 behaves like a service that can create a merge request961 creates a merge request with the correct target branch962 when project has been forked963 sets the correct source and target project964 behaves like a service that can set the description of a merge request965 sets the description966 with an existing branch that has a merge request open967 behaves like a service that does not create a merge request968 is expected not to change `MergeRequest.count`969 behaves like a service that can set the description of a merge request970 sets the description971 with a multiline description972 behaves like a service that does not create a merge request973 is expected not to change `MergeRequest.count`974 behaves like a service that can set the multiline description of a merge request975 sets the multiline description976 behaves like with a deleted branch977 behaves like a service that does nothing978 is expected not to change `MergeRequest.count`979 is expected not to change `MergeRequest.maximum(:updated_at)`980 behaves like with the project default branch981 behaves like a service that does nothing982 is expected not to change `MergeRequest.count`983 is expected not to change `MergeRequest.maximum(:updated_at)`984 `draft` push option985 with a new branch986 adds an error to the service987 behaves like a service that does not create a merge request988 is expected not to change `MergeRequest.count`989 when coupled with the `create` push option990 behaves like a service that can create a merge request991 creates a merge request with the correct target branch992 when project has been forked993 sets the correct source and target project994 behaves like a service that can set the draft of a merge request995 sets the draft996 with an existing branch but no open MR997 adds an error to the service998 behaves like a service that does not create a merge request999 is expected not to change `MergeRequest.count`1000 when coupled with the `create` push option1001 behaves like a service that can create a merge request1002 creates a merge request with the correct target branch1003 when project has been forked1004 sets the correct source and target project1005 behaves like a service that can set the draft of a merge request1006 sets the draft1007 with an existing branch that has a merge request open1008 behaves like a service that does not create a merge request1009 is expected not to change `MergeRequest.count`1010 behaves like a service that can set the draft of a merge request1011 sets the draft1012 draft title provided while `draft` push option is set to false1013 behaves like a service that can create a merge request1014 creates a merge request with the correct target branch1015 when project has been forked1016 sets the correct source and target project1017 behaves like a service that can set the draft of a merge request1018 sets the draft1019 behaves like with a deleted branch1020 behaves like a service that does nothing1021 is expected not to change `MergeRequest.count`1022 is expected not to change `MergeRequest.maximum(:updated_at)`1023 behaves like with the project default branch1024 behaves like a service that does nothing1025 is expected not to change `MergeRequest.count`1026 is expected not to change `MergeRequest.maximum(:updated_at)`1027 `label` push option1028 with a new branch1029 adds an error to the service1030 behaves like a service that does not create a merge request1031 is expected not to change `MergeRequest.count`1032 when coupled with the `create` push option1033 behaves like a service that can create a merge request1034 creates a merge request with the correct target branch1035 when project has been forked1036 sets the correct source and target project1037 behaves like a service that can change labels of a merge request1038 changes label count1039 with an existing branch but no open MR1040 adds an error to the service1041 behaves like a service that does not create a merge request1042 is expected not to change `MergeRequest.count`1043 when coupled with the `create` push option1044 behaves like a service that can create a merge request1045 creates a merge request with the correct target branch1046 when project has been forked1047 sets the correct source and target project1048 behaves like a service that can change labels of a merge request1049 changes label count1050 with an existing branch that has a merge request open1051 behaves like a service that does not create a merge request1052 is expected not to change `MergeRequest.count`1053 behaves like a service that can change labels of a merge request1054 changes label count1055 behaves like with a deleted branch1056 behaves like a service that does nothing1057 is expected not to change `MergeRequest.count`1058 is expected not to change `MergeRequest.maximum(:updated_at)`1059 behaves like with the project default branch1060 behaves like a service that does nothing1061 is expected not to change `MergeRequest.count`1062 is expected not to change `MergeRequest.maximum(:updated_at)`1063 `unlabel` push option1064 with a new branch1065 adds an error to the service1066 behaves like a service that does not create a merge request1067 is expected not to change `MergeRequest.count`1068 when coupled with the `create` push option1069 behaves like a service that can create a merge request1070 creates a merge request with the correct target branch1071 when project has been forked1072 sets the correct source and target project1073 behaves like a service that can change labels of a merge request1074 changes label count1075 with an existing branch but no open MR1076 adds an error to the service1077 behaves like a service that does not create a merge request1078 is expected not to change `MergeRequest.count`1079 when coupled with the `create` push option1080 behaves like a service that can create a merge request1081 creates a merge request with the correct target branch1082 when project has been forked1083 sets the correct source and target project1084 behaves like a service that can change labels of a merge request1085 changes label count1086 with an existing branch that has a merge request open1087 behaves like a service that does not create a merge request1088 is expected not to change `MergeRequest.count`1089 behaves like a service that can change labels of a merge request1090 changes label count1091 behaves like with a deleted branch1092 behaves like a service that does nothing1093 is expected not to change `MergeRequest.count`1094 is expected not to change `MergeRequest.maximum(:updated_at)`1095 behaves like with the project default branch1096 behaves like a service that does nothing1097 is expected not to change `MergeRequest.count`1098 is expected not to change `MergeRequest.maximum(:updated_at)`1099 `milestone` push option1100 with a valid milestone1101 with a new branch1102 adds an error to the service1103 behaves like a service that does not create a merge request1104 is expected not to change `MergeRequest.count`1105 when coupled with the `create` push option1106 behaves like a service that can create a merge request1107 creates a merge request with the correct target branch1108 when project has been forked1109 sets the correct source and target project1110 behaves like a service that can set the milestone of a merge request1111 sets the milestone1112 with an existing branch but no open MR1113 adds an error to the service1114 behaves like a service that does not create a merge request1115 is expected not to change `MergeRequest.count`1116 when coupled with the `create` push option1117 behaves like a service that can create a merge request1118 creates a merge request with the correct target branch1119 when project has been forked1120 sets the correct source and target project1121 behaves like a service that can set the milestone of a merge request1122 sets the milestone1123 with an existing branch that has a merge request open1124 behaves like a service that does not create a merge request1125 is expected not to change `MergeRequest.count`1126 behaves like a service that can set the milestone of a merge request1127 sets the milestone1128 behaves like with a deleted branch1129 behaves like a service that does nothing1130 is expected not to change `MergeRequest.count`1131 is expected not to change `MergeRequest.maximum(:updated_at)`1132 behaves like with the project default branch1133 behaves like a service that does nothing1134 is expected not to change `MergeRequest.count`1135 is expected not to change `MergeRequest.maximum(:updated_at)`1136 with invalid milestone1137 behaves like a service that can set the milestone of a merge request1138 sets the milestone1139 with an ancestor milestone1140 with immediate parent milestone1141 behaves like a service that can create a merge request1142 creates a merge request with the correct target branch1143 when project has been forked1144 sets the correct source and target project1145 behaves like a service that can set the milestone of a merge request1146 sets the milestone1147 with multi-level ancestor milestone1148 behaves like a service that can create a merge request1149 creates a merge request with the correct target branch1150 when project has been forked1151 sets the correct source and target project1152 behaves like a service that can set the milestone of a merge request1153 sets the milestone1154 `assign` push option1155 behaves like with a new branch1156 adds an error to the service1157 behaves like a service that does not create a merge request1158 is expected not to change `MergeRequest.count`1159 behaves like when coupled with the `create` push option1160 behaves like a service that can create a merge request1161 creates a merge request with the correct target branch1162 when project has been forked1163 sets the correct source and target project1164 behaves like a service that can change assignees of a merge request1165 changes assignee count1166 behaves like with an existing branch but no open MR1167 adds an error to the service1168 behaves like a service that does not create a merge request1169 is expected not to change `MergeRequest.count`1170 behaves like when coupled with the `create` push option1171 behaves like a service that can create a merge request1172 creates a merge request with the correct target branch1173 when project has been forked1174 sets the correct source and target project1175 behaves like a service that can change assignees of a merge request1176 changes assignee count1177 behaves like with an existing branch that has a merge request open in foss1178 behaves like a service that does not create a merge request1179 is expected not to change `MergeRequest.count`1180 behaves like a service that can change assignees of a merge request1181 changes assignee count1182 behaves like with a deleted branch1183 behaves like a service that does nothing1184 is expected not to change `MergeRequest.count`1185 is expected not to change `MergeRequest.maximum(:updated_at)`1186 behaves like with the project default branch1187 behaves like a service that does nothing1188 is expected not to change `MergeRequest.count`1189 is expected not to change `MergeRequest.maximum(:updated_at)`1190 when passing in usernames1191 behaves like with an existing branch that has a merge request open in foss1192 behaves like a service that does not create a merge request1193 is expected not to change `MergeRequest.count`1194 behaves like a service that can change assignees of a merge request1195 changes assignee count1196 `unassign` push option1197 behaves like with a new branch1198 adds an error to the service1199 behaves like a service that does not create a merge request1200 is expected not to change `MergeRequest.count`1201 behaves like when coupled with the `create` push option1202 behaves like a service that can create a merge request1203 creates a merge request with the correct target branch1204 when project has been forked1205 sets the correct source and target project1206 behaves like a service that can change assignees of a merge request1207 changes assignee count1208 behaves like with an existing branch but no open MR1209 adds an error to the service1210 behaves like a service that does not create a merge request1211 is expected not to change `MergeRequest.count`1212 behaves like when coupled with the `create` push option1213 behaves like a service that can create a merge request1214 creates a merge request with the correct target branch1215 when project has been forked1216 sets the correct source and target project1217 behaves like a service that can change assignees of a merge request1218 changes assignee count1219 behaves like with an existing branch that has a merge request open in foss1220 behaves like a service that does not create a merge request1221 is expected not to change `MergeRequest.count`1222 behaves like a service that can change assignees of a merge request1223 changes assignee count1224 behaves like with a deleted branch1225 behaves like a service that does nothing1226 is expected not to change `MergeRequest.count`1227 is expected not to change `MergeRequest.maximum(:updated_at)`1228 behaves like with the project default branch1229 behaves like a service that does nothing1230 is expected not to change `MergeRequest.count`1231 is expected not to change `MergeRequest.maximum(:updated_at)`1232 when passing in usernames1233 behaves like with an existing branch that has a merge request open in foss1234 behaves like a service that does not create a merge request1235 is expected not to change `MergeRequest.count`1236 behaves like a service that can change assignees of a merge request1237 changes assignee count1238 multiple pushed branches1239 creates a merge request per branch1240 when there are too many pushed branches1241 records an error1242 no push options1243 behaves like a service that does nothing1244 is expected not to change `MergeRequest.count`1245 is expected not to change `MergeRequest.maximum(:updated_at)`1246 no user1247 records an error1248 unauthorized user1249 records an error1250 handling unexpected exceptions1251 records an error1252 writes to Gitlab::AppLogger1253 when target is not a valid branch name1254 records an error1255 when user does not have access to target project1256 records an error1257 when MRs are not enabled1258 records an error1259 when MR has ActiveRecord errors1260 adds the error to its errors property1261Issues::UpdateService1262 execute1263 behaves like issuable update service updating last_edited_at values1264 when updating the title of the issuable1265 does not update last_edited values1266 when updating the description of the issuable1267 updates last_edited values1268 valid params1269 updates the issue with the given params1270 refreshes the number of open issues when the issue is made confidential1271 enqueues ConfidentialIssueWorker when an issue is made confidential1272 does not enqueue ConfidentialIssueWorker when an issue is made non confidential1273 updates open issue counter for assignees when issue is reassigned1274 rebalances if needed on the left1275 rebalances if needed on the right1276 verifies the number of queries1277 when an unauthorized project_id is provided1278 ignores the project_id param and does not update the issue's project1279 when updating milestone1280 updates issue milestone when passing `milestone` param1281 triggers 'issuableMilestoneUpdated'1282 when milestone remains unchanged1283 does not trigger 'issuableMilestoneUpdated'1284 when sentry identifier is given1285 assigns the sentry error1286 user is a guest1287 does not assign the sentry error1288 when issue type is not incident1289 behaves like not an incident issue1290 has not incident as issue type1291 when confidentiality is changed1292 behaves like does not track incident management event1293 does not track the event1294 when issue type is incident1295 does not add an incident label1296 behaves like incident issue1297 has incident as issue type1298 when confidentiality is changed1299 behaves like an incident management tracked event1300 .track_event1301 tracks the event using redis1302 behaves like Snowplow event tracking with RedisHLL context1303 behaves like Snowplow event tracking1304 is emitted1305 changing issue_type1306 from issue to incident1307 creates system note about issue type1308 creates an escalation status1309 behaves like incident issue1310 has incident as issue type1311 for an issue with multiple labels1312 does not add an `incident` label if one already exist1313 from incident to issue1314 changed from an incident to an issue type1315 for an incident with multiple labels1316 does not remove an `incident` label if one exists on the incident1317 filtering the incident label1318 does not add an incident label id to remove_label_ids for it to be removed1319 from issue to restricted issue types1320 without sufficient permissions1321 does nothing to the labels1322 when changing relative position1323 sorts issues as specified by parameters1324 when block_issue_positioning flag is enabled1325 raises error1326 when moving issue between issues from different projects1327 sorts issues as specified by parameters1328 when current user cannot admin issues in the project1329 filters out params that cannot be set without the :admin_issue permission1330 with background jobs processed1331 sends email to user2 about assign of new issue and email to user3 about issue unassignment1332 creates system note about issue reassign1333 creates a resource label event1334 creates system note about title change1335 creates system note about discussion lock1336 after_save callback to store_mentions1337 when mentionable attributes change1338 saves mentions1339 when mentionable attributes do not change1340 does not call store_mentions1341 when save fails1342 does not call store_mentions1343 when description changed1344 creates system note about description change1345 triggers GraphQL description updated subscription1346 when description is not changed1347 does not trigger GraphQL description updated subscription1348 when issue turns confidential1349 creates system note about confidentiality change1350 executes confidential issue hooks1351 does not update assignee_id with unauthorized users1352 todos1353 when the title change1354 marks pending todos as done1355 does not create any new todos1356 when the description change1357 marks todos as done1358 creates only 1 new todo1359 when is reassigned1360 marks previous assignee todos as done1361 creates a todo for new assignee1362 when a new assignee added1363 creates only 1 new todo1364 creates a todo for new assignee1365 issue is incident type1366 behaves like an incident management tracked event1367 .track_event1368 tracks the event using redis1369 behaves like Snowplow event tracking with RedisHLL context1370 behaves like Snowplow event tracking1371 is emitted1372 when the milestone is removed1373 sends notifications for subscribers of changed milestone1374 clears milestone issue counters cache1375 when the milestone is assigned1376 marks todos as done1377 sends notifications for subscribers of changed milestone1378 deletes issue counters cache for the milestone1379 when the milestone is changed1380 deletes issue counters cache for both milestones1381 when the labels change1382 marks todos as done1383 updates updated_at1384 when the issue is relabeled1385 sends notifications for subscribers of newly added labels1386 when issue has the `label` label1387 does not send notifications for existing labels1388 does not send notifications for removed labels1389 when issue has tasks1390 is expected to eq true1391 behaves like updating a single task1392 usage counters1393 update as expected1394 when a task is marked as completed1395 creates system note about task status change1396 when a task is marked as incomplete1397 creates system note about task status change1398 when the task position has been modified1399 raises an exception1400 when the content changes but not task line number1401 creates system note about task status change1402 when tasks are marked as completed1403 does not check for spam on task status change1404 does not pass old_associations to the after_update method1405 creates system note about task status change1406 when tasks are marked as incomplete1407 creates system note about task status change1408 when tasks position has been modified1409 does not create a system note for the task1410 when a Task list with a completed item is totally replaced1411 does not create a system note referencing the position the old item1412 does not generate a new note at all1413 updating labels1414 when add_label_ids and label_ids are passed1415 replaces the labels with the ones in label_ids and adds those in add_label_ids1416 when remove_label_ids and label_ids are passed1417 replaces the labels with the ones in label_ids and removes those in remove_label_ids1418 when add_label_ids and remove_label_ids are passed1419 adds the passed labels1420 removes the passed labels1421 when same id is passed as add_label_ids and remove_label_ids1422 for a label assigned to an issue1423 removes the label1424 for a label not assigned to an issue1425 does not add the label1426 when duplicate label titles are given1427 assigns the label once1428 updating dates1429 when due_date is updated1430 behaves like issue update service that triggers date updates1431 triggers graphql date updated subscription1432 when start_date is updated1433 behaves like issue update service that triggers date updates1434 triggers graphql date updated subscription1435 when no date is updated1436 behaves like issue update service that does not trigger date updates1437 does not trigger date updated subscriptions1438 when update is not successful but date is provided1439 behaves like issue update service that does not trigger date updates1440 does not trigger date updated subscriptions1441 updating asssignee_id1442 changes assignee1443 does not update assignee when assignee_id is invalid1444 unassigns assignee when user id is 01445 does not update assignee_id when user cannot read issue1446 tracks the assignment events1447 when issuable feature is private1448 does not update with unauthorized assignee when project is Internal1449 does not update with unauthorized assignee when project is Public1450 updating mentions1451 when mentioning a different user1452 in title1453 emails only the newly-mentioned user1454 in description1455 emails only the newly-mentioned user1456 when mentioning a user and a group with access to1457 when group is public1458 behaves like updating attribute with allowed mentions1459 emails group members1460 behaves like updating attribute with allowed mentions1461 emails group members1462 behaves like updating attribute with existing group mention1463 creates todos for only newly mentioned users1464 behaves like updating attribute with existing group mention1465 creates todos for only newly mentioned users1466 when the group is private1467 behaves like updating attribute with allowed mentions1468 emails group members1469 behaves like updating attribute with allowed mentions1470 emails group members1471 behaves like updating attribute with existing group mention1472 creates todos for only newly mentioned users1473 behaves like updating attribute with existing group mention1474 creates todos for only newly mentioned users1475 when mentioning a user and a group without access to1476 when the group is private1477 behaves like updating attribute with not allowed mentions1478 emails mentioned user1479 behaves like updating attribute with not allowed mentions1480 emails mentioned user1481 updating severity1482 on incidents1483 when severity has not been set previously1484 creates a new record1485 behaves like updates the severity1486 has correct value1487 creates a system note1488 triggers webhooks1489 with unsupported severity value1490 behaves like does not change the severity1491 retains the original value1492 does not trigger side-effects1493 with severity value defined but unchanged1494 behaves like does not change the severity1495 retains the original value1496 does not trigger side-effects1497 as guest1498 behaves like does not change the severity1499 retains the original value1500 does not trigger side-effects1501 and also author1502 behaves like does not change the severity1503 retains the original value1504 does not trigger side-effects1505 and also assignee1506 behaves like does not change the severity1507 retains the original value1508 does not trigger side-effects1509 when severity has been set before1510 does not create a new record1511 behaves like updates the severity1512 has correct value1513 creates a system note1514 triggers webhooks1515 with unsupported severity value1516 behaves like updates the severity1517 has correct value1518 creates a system note1519 triggers webhooks1520 with severity value defined but unchanged1521 behaves like does not change the severity1522 retains the original value1523 does not trigger side-effects1524 when issue type is not incident1525 behaves like does not change the severity1526 retains the original value1527 does not trigger side-effects1528 updating escalation status1529 when issue is an incident1530 with an escalation status record1531 behaves like updates the escalation status record1532 has correct value1533 triggers webhooks1534 with unsupported status value1535 behaves like does not change the status record1536 retains the original value1537 does not trigger side-effects1538 with status value defined but unchanged1539 behaves like does not change the status record1540 retains the original value1541 does not trigger side-effects1542 without an escalation status record1543 creates a new record1544 behaves like updates the escalation status record1545 has correct value1546 triggers webhooks1547 when issue type is not incident1548 behaves like does not change the status record1549 retains the original value1550 does not trigger side-effects1551 duplicate issue1552 invalid canonical_issue_id1553 does not call the duplicate service1554 valid canonical_issue_id1555 calls the duplicate service with both issues1556 move issue to another project1557 valid project1558 calls the move service with the proper issue and project1559 clone an issue1560 valid project1561 calls the move service with the proper issue and project1562 clone an issue with notes1563 valid project1564 calls the move service with the proper issue and project1565 when moving an issue1566 raises an error for invalid move ids1567 behaves like issuable update service1568 changing state1569 to reopened1570 executes hooks1571 to closed1572 executes hooks1573 broadcasting issue assignee updates1574 triggers the GraphQL subscription1575 when assignee is not updated1576 does not trigger the GraphQL subscription1577 labels are updated1578 behaves like keeps issuable labels sorted after update1579 when label is changed1580 keeps the labels sorted by title ASC1581 behaves like broadcasting issuable labels updates1582 when label is added1583 triggers the GraphQL subscription1584 when label is removed1585 triggers the GraphQL subscription1586 when label is unchanged1587 does not trigger the GraphQL subscription1588 behaves like issuable record that supports quick actions1589 with labels in command only1590 attaches labels to issuable1591 with labels in params and command1592 attaches all labels to issuable1593 with assignee and milestone in command only1594 assigns and sets milestone to issuable1595ProjectTeam1596 personal project1597 members collection1598 is expected to include #<User id:204 @user189>1599 is expected not to include #<User id:210 @user194>1600 is expected not to include #<User id:213 @user196>1601 is expected not to include #<User id:219 @user201>1602 access methods1603 is expected to be truthy1604 is expected to be falsey1605 is expected to be falsey1606 is expected to be falsey1607 is expected to be falsey1608 is expected to be truthy1609 is expected to be truthy1610 is expected to be falsey1611 is expected to be falsey1612 group project1613 members collection1614 is expected to include #<User id:262 @user234>1615 is expected to include #<User id:266 @user237>1616 is expected to include #<User id:273 @user243>1617 is expected not to include #<User id:277 @user246>1618 is expected not to include #<User id:284 @user252>1619 access methods1620 is expected to be truthy1621 is expected to be truthy1622 is expected to be truthy1623 is expected to be falsey1624 is expected to be falsey1625 is expected to be falsey1626 is expected to be truthy1627 is expected to be truthy1628 is expected to be falsey1629 is expected to be falsey1630 owner methods1631 personal project1632 is expected to contain exactly #<User id:338 @namespace37>1633 is expected to be truthy1634 group project1635 is expected to contain exactly #<User id:340 @user296> and #<User id:341 @user297>1636 is expected to be truthy1637 is expected to be truthy1638 #fetch_members1639 personal project1640 returns project members1641 returns project members of a specified level1642 returns invited members of a group1643 returns invited members of a group of a specified level1644 group project1645 returns project members1646 returns project members of a specified level1647 #find_member1648 personal project1649 is expected to be a kind of ProjectMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: i...tate: integer, invite_email_success: boolean, member_namespace_id: integer, member_role_id: integer)1650 is expected to be a kind of ProjectMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: i...tate: integer, invite_email_success: boolean, member_namespace_id: integer, member_role_id: integer)1651 is expected to be a kind of ProjectMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: i...tate: integer, invite_email_success: boolean, member_namespace_id: integer, member_role_id: integer)1652 is expected to be nil1653 is expected to be nil1654 group project1655 is expected to be a kind of GroupMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: int...tate: integer, invite_email_success: boolean, member_namespace_id: integer, member_role_id: integer)1656 is expected to be a kind of GroupMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: int...tate: integer, invite_email_success: boolean, member_namespace_id: integer, member_role_id: integer)1657 is expected to be a kind of GroupMember(id: integer, access_level: integer, source_id: integer, source_type: string, user_id: int...tate: integer, invite_email_success: boolean, member_namespace_id: integer, member_role_id: integer)1658 is expected to be nil1659 is expected to be nil1660 #members_in_project_and_ancestors1661 group project1662 filters out users who are not members of the project1663 #members_with_access_levels1664 with access_levels1665 filters members who have given access levels1666 without access_levels1667 returns empty array1668 #add_members1669 add the given users to the team1670 when `tasks_to_be_done` and `tasks_project_id` are passed1671 creates a member_task with the correct attributes1672 #add_member1673 add the given user to the team1674 #human_max_access1675 returns Maintainer role1676 returns Owner role1677 #contributor?1678 when user is a member of project1679 is expected to equal false1680 is expected to equal false1681 is expected to equal false1682 when user has at least one merge request merged into default_branch1683 is expected to equal true1684 is expected to equal false1685 #max_member_access1686 personal project1687 when project is not shared with group1688 is expected to eq 401689 is expected to eq 201690 is expected to eq 101691 is expected to eq 01692 is expected to eq 01693 when project is shared with group1694 is expected to eq 301695 is expected to eq 201696 is expected to eq 01697 is expected to eq 01698 but share_with_group_lock is true1699 is expected to eq 01700 is expected to eq 01701 group project1702 is expected to eq 401703 is expected to eq 201704 is expected to eq 101705 is expected to eq 01706 is expected to eq 01707 #purge_member_access_cache_for_user_id1708 removes cached max access for user from store1709 #member?1710 returns false for no user1711 returns true for personal projects of the user1712 returns true for projects of groups the user is a member of1713 returns true for projects for which the user is a member of1714 returns true for projects shared on a group the user is a member of1715 checks for the correct minimum level access1716 #contribution_check_for_user_ids1717 does not perform extra queries when asked for users who have already been found1718 only requests the extra users when uncached users are passed1719 returns correct contributors1720 #max_member_access_for_user_ids1721 with RequestStore enabled1722 returns correct roles for different users1723 does not perform extra queries when asked for users who have already been found1724 only requests the extra users when uncached users are passed1725 with RequestStore disabled1726 returns correct roles for different users1727Gitlab::Git::Tree1728 .where with Gitaly enabled1729 behaves like repo1730 is expected to be a kind of Array1731 is expected to be falsey1732 is expected to eq 21733 is expected to eq 101734 is expected to eq 21735 is expected to be blank1736 with an invalid ref1737 is expected to eq []1738 is expected to be nil1739 when path is provided1740 returns a list of tree objects1741 #dir?1742 is expected to be a kind of Gitlab::Git::Tree1743 is expected to eq "3c122d2b7830eca25235131070602575cf8b41a1"1744 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1745 is expected to eq "encoding"1746 is expected to eq "encoding"1747 is expected to eq "40000"1748 is expected to eq "encoding"1749 subdir1750 is expected to be a kind of Gitlab::Git::Tree1751 is expected to eq "a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba"1752 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1753 is expected to eq "html"1754 is expected to eq "files/html"1755 is expected to eq "files/html"1756 subdir_file1757 is expected to be a kind of Gitlab::Git::Tree1758 is expected to eq "7e3e39ebb9b2bf433b4ad17313770fbe4051649c"1759 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1760 is expected to eq "popen.rb"1761 is expected to eq "files/ruby/popen.rb"1762 is expected to eq "files/ruby/popen.rb"1763 flat_path1764 is expected to eq "files/flat/path/correct"1765 when skip_flat_paths is true1766 is expected to be blank1767 #file?1768 is expected to be a kind of Gitlab::Git::Tree1769 is expected to eq "dfaa3f97ca337e20154a98ac9d0be76ddd1fcc82"1770 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1771 is expected to eq ".gitignore"1772 #readme?1773 is expected to be a kind of Gitlab::Git::Tree1774 is expected to eq "README.md"1775 #contributing?1776 is expected to be a kind of Gitlab::Git::Tree1777 is expected to eq "CONTRIBUTING.md"1778 #submodule?1779 is expected to be a kind of Gitlab::Git::Tree1780 is expected to eq "79bceae69cb5750d6567b223597999bfa91cb3b9"1781 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1782 is expected to eq "gitlab-shell"1783 with pagination parameters1784 returns paginated list of tree objects1785 .where with Rugged enabled1786 calls out to the Rugged implementation1787 behaves like repo1788 is expected to be a kind of Array1789 is expected to be falsey1790 is expected to eq 21791 is expected to eq 101792 is expected to eq 21793 is expected to be blank1794 with an invalid ref1795 is expected to eq []1796 is expected to be nil1797 when path is provided1798 returns a list of tree objects1799 #dir?1800 is expected to be a kind of Gitlab::Git::Tree1801 is expected to eq "3c122d2b7830eca25235131070602575cf8b41a1"1802 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1803 is expected to eq "encoding"1804 is expected to eq "encoding"1805 is expected to eq "40000"1806 is expected to eq "encoding"1807 subdir1808 is expected to be a kind of Gitlab::Git::Tree1809 is expected to eq "a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba"1810 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1811 is expected to eq "html"1812 is expected to eq "files/html"1813 is expected to eq "files/html"1814 subdir_file1815 is expected to be a kind of Gitlab::Git::Tree1816 is expected to eq "7e3e39ebb9b2bf433b4ad17313770fbe4051649c"1817 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1818 is expected to eq "popen.rb"1819 is expected to eq "files/ruby/popen.rb"1820 is expected to eq "files/ruby/popen.rb"1821 flat_path1822 is expected to eq "files/flat/path/correct"1823 when skip_flat_paths is true1824 is expected to be blank1825 #file?1826 is expected to be a kind of Gitlab::Git::Tree1827 is expected to eq "dfaa3f97ca337e20154a98ac9d0be76ddd1fcc82"1828 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1829 is expected to eq ".gitignore"1830 #readme?1831 is expected to be a kind of Gitlab::Git::Tree1832 is expected to eq "README.md"1833 #contributing?1834 is expected to be a kind of Gitlab::Git::Tree1835 is expected to eq "CONTRIBUTING.md"1836 #submodule?1837 is expected to be a kind of Gitlab::Git::Tree1838 is expected to eq "79bceae69cb5750d6567b223597999bfa91cb3b9"1839 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"1840 is expected to eq "gitlab-shell"1841 Pagination1842 returns all tree entries in specific order during cursor pagination1843 with restrictive limit1844 returns limited paginated list of tree objects1845 when limit is equal to number of entries1846 returns all entries without a cursor1847 when limit is 01848 returns empty result1849 when limit is missing1850 returns empty result1851 when limit is negative1852 returns all entries1853 when token is provided1854 returns all entries after token1855 when token does not exist1856 raises a command error1857 when limit is bigger than number of entries1858 returns only available entries1859Banzai::Filter::References::IssueReferenceFilter1860 requires project context1861 ignores valid references contained inside 'pre' element1862 ignores valid references contained inside 'code' element1863 ignores valid references contained inside 'a' element1864 ignores valid references contained inside 'style' element1865 performance1866 does not have a N+1 query problem1867 standard internal reference1868 behaves like an internal reference1869 links to a valid reference1870 links with adjacent text1871 ignores invalid issue IDs1872 includes a title attribute1873 escapes the title attribute1874 renders non-HTML tooltips1875 includes default classes1876 includes a data-project attribute1877 includes a data-issue attribute1878 includes data attributes for issuable popover1879 includes a data-original attribute1880 does not escape the data-original attribute1881 includes a data-reference-format attribute1882 includes a data-reference-format attribute for URL references1883 includes a data-reference-format attribute for extended summary URL references1884 supports an :only_path context1885 does not process links containing issue numbers followed by text1886 behaves like a reference containing an element node1887 does not escape inner html1888 behaves like a reference with issue type information1889 contains issue-type as a data attribute1890 alternative internal_reference1891 behaves like an internal reference1892 links to a valid reference1893 links with adjacent text1894 ignores invalid issue IDs1895 includes a title attribute1896 escapes the title attribute1897 renders non-HTML tooltips1898 includes default classes1899 includes a data-project attribute1900 includes a data-issue attribute1901 includes data attributes for issuable popover1902 includes a data-original attribute1903 does not escape the data-original attribute1904 includes a data-reference-format attribute1905 includes a data-reference-format attribute for URL references1906 includes a data-reference-format attribute for extended summary URL references1907 supports an :only_path context1908 does not process links containing issue numbers followed by text1909 behaves like a reference containing an element node1910 does not escape inner html1911 behaves like a reference with issue type information1912 contains issue-type as a data attribute1913 cross-project / cross-namespace complete reference1914 ignores valid references when cross-reference project uses external tracker1915 links to a valid reference1916 link has valid text1917 has valid text1918 includes default classes1919 ignores invalid issue IDs on the referenced project1920 behaves like a reference containing an element node1921 does not escape inner html1922 behaves like a reference with issue type information1923 contains issue-type as a data attribute1924 cross-project / same-namespace complete reference1925 ignores valid references when cross-reference project uses external tracker1926 links to a valid reference1927 link has valid text1928 has valid text1929 includes default classes1930 ignores invalid issue IDs on the referenced project1931 behaves like a reference containing an element node1932 does not escape inner html1933 behaves like a reference with issue type information1934 contains issue-type as a data attribute1935 cross-project shorthand reference1936 ignores valid references when cross-reference project uses external tracker1937 links to a valid reference1938 link has valid text1939 has valid text1940 includes default classes1941 ignores invalid issue IDs on the referenced project1942 behaves like a reference containing an element node1943 does not escape inner html1944 behaves like a reference with issue type information1945 contains issue-type as a data attribute1946 cross-project URL reference1947 links to a valid reference1948 link with trailing slash1949 links with adjacent text1950 includes default classes1951 behaves like a reference containing an element node1952 does not escape inner html1953 behaves like a reference with issue type information1954 contains issue-type as a data attribute1955 cross-project reference in link href1956 links to a valid reference1957 links with adjacent text1958 includes default classes1959 behaves like a reference containing an element node1960 does not escape inner html1961 behaves like a reference with issue type information1962 contains issue-type as a data attribute1963 cross-project URL in link href1964 links to a valid reference1965 links with adjacent text1966 includes default classes1967 behaves like a reference containing an element node1968 does not escape inner html1969 behaves like a reference with issue type information1970 contains issue-type as a data attribute1971 when processing a link to the designs tab1972 includes the word "designs" after the reference in the text content1973 design management is not available1974 links to the issue, but not to the designs tab1975 group context1976 ignores shorthanded issue reference1977 ignores valid references when cross-reference project uses external tracker1978 links to a valid reference for complete cross-reference1979 ignores reference for shorthand cross-reference1980 links to a valid reference for url cross-reference1981 links to a valid reference for cross-reference in link href1982 links to a valid reference for issue reference in the link href1983 .references_in1984 yields valid references1985 doesn't yield invalid references1986 doesn't yield unsupported references1987 #object_link_text_extras1988 the link does not go to the designs tab1989 does not include designs1990 the link goes to the designs tab1991 includes designs1992 design management is disabled1993 does not include designs in the extras1994Mentionable1995 references1996 excludes Jira references1997Issue Mentionable1998 #mentioned_users1999 is expected to contain exactly #<User id:830 @stranger>2000 when a note on personal snippet2001 is expected to contain exactly #<User id:834 @stranger> and #<User id:836 @jim>2002 #referenced_mentionables2003 with an issue on a private project2004 when the current user can see the issue2005 includes the reference2006 when the current user cannot see the issue2007 does not include the reference2008 when there is no current user2009 does not include the reference2010 #create_cross_references!2011 correctly removes already-mentioned Commits2012 #create_new_cross_references!2013 before changes are persisted2014 ignores pre-existing references2015 notifies new references2016 after changes are persisted2017 ignores pre-existing references2018 notifies new references2019 notifies new references from project snippet note2020 #store_mentions!2021 behaves like mentions in description2022 when storing user mentions2023 when mentionable description has no mentions2024 stores no mentions2025 when mentionable description contains mentions2026 stores mentions2027 behaves like mentions in notes2028 when mentionable notes contain mentions2029 returns all mentionable mentions2030 and note is confidential2031 returns only mentioned users that has permissions2032 load mentions2033 behaves like load mentions from DB2034 load stored mentions2035 when stored user mention contains ids of inexistent records2036 filters out inexistent mentions2037 and note is confidential2038 stores only mentioned users that has permissions2039 when private projects and groups are mentioned2040 when user has no access to some mentions2041 filters out inaccessible mentions2042 when user has access to all mentions2043 returns all mentions2044Commit Mentionable2045 #matches_cross_reference_regex?2046 is false when message doesn't reference anything2047 is true if issue #number mentioned in title2048 is true if references an MR2049 is true if references a commit2050 is true if issue referenced by url2051 with external issue tracker2052 is true if external issues referenced2053 is true if internal issues referenced2054 #store_mentions!2055 behaves like mentions in notes2056 when mentionable notes contain mentions2057 returns all mentionable mentions2058 load mentions2059 behaves like load mentions from DB2060 load stored mentions2061 when stored user mention contains ids of inexistent records2062 filters out inexistent mentions2063 when private projects and groups are mentioned2064 when user has no access to some mentions2065 filters out inaccessible mentions2066 when user has access to all mentions2067 returns all mentions2068MergeRequest Mentionable2069 #store_mentions!2070 behaves like mentions in description2071 when storing user mentions2072 when mentionable description has no mentions2073 stores no mentions2074 when mentionable description contains mentions2075 stores mentions2076 behaves like mentions in notes2077 when mentionable notes contain mentions2078 returns all mentionable mentions2079 load mentions2080 behaves like load mentions from DB2081 load stored mentions2082 when stored user mention contains ids of inexistent records2083 filters out inexistent mentions2084 when private projects and groups are mentioned2085 when user has no access to some mentions2086 filters out inaccessible mentions2087 when user has access to all mentions2088 returns all mentions2089Snippet Mentionable2090 #store_mentions!2091 behaves like mentions in description2092 when storing user mentions2093 when mentionable description has no mentions2094 stores no mentions2095 when mentionable description contains mentions2096 stores mentions2097 behaves like mentions in notes2098 when mentionable notes contain mentions2099 returns all mentionable mentions2100 load mentions2101 behaves like load mentions from DB2102 load stored mentions2103 when stored user mention contains ids of inexistent records2104 filters out inexistent mentions2105 when private projects and groups are mentioned2106 when user has no access to some mentions2107 filters out inaccessible mentions2108 when user has access to all mentions2109 returns all mentions2110PersonalSnippet Mentionable2111 #store_mentions!2112 behaves like mentions in description2113 when storing user mentions2114 when mentionable description has no mentions2115 stores no mentions2116 when mentionable description contains mentions2117 stores mentions2118 behaves like mentions in notes2119 when mentionable notes contain mentions2120 returns all mentionable mentions2121 load mentions2122 behaves like load mentions from DB2123 load stored mentions2124 when stored user mention contains ids of inexistent records2125 filters out inexistent mentions2126 when private projects and groups are mentioned2127 when user has no access to some mentions2128 filters out inaccessible mentions2129 when user has access to all mentions2130 returns all mentions2131DesignManagement::Design2132 #store_mentions!2133 behaves like mentions in notes2134 when mentionable notes contain mentions2135 returns all mentionable mentions2136 load mentions2137 behaves like load mentions from DB2138 load stored mentions2139 when stored user mention contains ids of inexistent records2140 filters out inexistent mentions2141 when private projects and groups are mentioned2142 when user has no access to some mentions2143 filters out inaccessible mentions2144 when user has access to all mentions2145 returns all mentions2146Gitlab::UrlBlocker2147 #validate!2148 when the URL hostname is a domain2149 when domain can be resolved2150 behaves like validates URI and hostname2151 runs the url validations2152 #validate_url_with_proxy!2153 when URI is nil2154 behaves like validates URI and hostname2155 runs the url validations2156 behaves like a URI exempt from `deny_all_requests_except_allowed`2157 does not block the request2158 when URI is internal2159 behaves like validates URI and hostname2160 runs the url validations2161 behaves like a URI exempt from `deny_all_requests_except_allowed`2162 does not block the request2163 when URI is for a local object storage2164 when allow_object_storage is true2165 with a local domain name2166 behaves like validates URI and hostname2167 runs the url validations2168 behaves like a URI exempt from `deny_all_requests_except_allowed`2169 does not block the request2170 with an IP address2171 behaves like validates URI and hostname2172 runs the url validations2173 behaves like a URI exempt from `deny_all_requests_except_allowed`2174 does not block the request2175 when LFS object storage is enabled2176 when LFS is disabled2177 raises an error2178 when LFS is enabled with no connection endpoint2179 raises an error2180 when allow_object_storage is false2181 with a local domain name2182 raises an error2183 with an IP address2184 raises an error2185 when the URL hostname is a domain2186 when domain can be resolved2187 behaves like validates URI and hostname2188 runs the url validations2189 behaves like a URI denied by `deny_all_requests_except_allowed`2190 when instance setting is enabled2191 blocks the request2192 when instance setting is not enabled2193 does not block the request2194 when passed as an argument2195 when argument is a proc that evaluates to true2196 blocks the request2197 when argument is a proc that evaluates to false2198 does not block the request2199 when argument is true2200 blocks the request2201 when argument is false2202 does not block the request2203 when domain cannot be resolved2204 raises an error2205 with HTTP_PROXY2206 behaves like validates URI and hostname2207 runs the url validations2208 with no_proxy2209 behaves like validates URI and hostname2210 runs the url validations2211 when domain is too long2212 raises an error2213 when the URL hostname is an IP address2214 behaves like validates URI and hostname2215 runs the url validations2216 behaves like a URI denied by `deny_all_requests_except_allowed`2217 when instance setting is enabled2218 blocks the request2219 when instance setting is not enabled2220 does not block the request2221 when passed as an argument2222 when argument is a proc that evaluates to true2223 blocks the request2224 when argument is a proc that evaluates to false2225 does not block the request2226 when argument is true2227 blocks the request2228 when argument is false2229 does not block the request2230 when the address is invalid2231 raises an error2232 when DNS rebinding protection with IP allowed2233 behaves like validates URI and hostname2234 runs the url validations2235 behaves like a URI exempt from `deny_all_requests_except_allowed`2236 does not block the request2237 with HTTP_PROXY2238 behaves like validates URI and hostname2239 runs the url validations2240 when domain is in no_proxy env2241 behaves like validates URI and hostname2242 runs the url validations2243 with disabled DNS rebinding protection2244 when URI is internal2245 behaves like validates URI and hostname2246 runs the url validations2247 behaves like a URI exempt from `deny_all_requests_except_allowed`2248 does not block the request2249 when the URL hostname is a domain2250 when domain can be resolved2251 behaves like validates URI and hostname2252 runs the url validations2253 behaves like a URI denied by `deny_all_requests_except_allowed`2254 when instance setting is enabled2255 blocks the request2256 when instance setting is not enabled2257 does not block the request2258 when passed as an argument2259 when argument is a proc that evaluates to true2260 blocks the request2261 when argument is a proc that evaluates to false2262 does not block the request2263 when argument is true2264 blocks the request2265 when argument is false2266 does not block the request2267 when domain cannot be resolved2268 behaves like validates URI and hostname2269 runs the url validations2270 behaves like a URI denied by `deny_all_requests_except_allowed`2271 when instance setting is enabled2272 blocks the request2273 when instance setting is not enabled2274 does not block the request2275 when passed as an argument2276 when argument is a proc that evaluates to true2277 blocks the request2278 when argument is a proc that evaluates to false2279 does not block the request2280 when argument is true2281 blocks the request2282 when argument is false2283 does not block the request2284 when the URL hostname is an IP address2285 behaves like validates URI and hostname2286 runs the url validations2287 behaves like a URI denied by `deny_all_requests_except_allowed`2288 when instance setting is enabled2289 blocks the request2290 when instance setting is not enabled2291 does not block the request2292 when passed as an argument2293 when argument is a proc that evaluates to true2294 blocks the request2295 when argument is a proc that evaluates to false2296 does not block the request2297 when argument is true2298 blocks the request2299 when argument is false2300 does not block the request2301 when it is invalid2302 behaves like validates URI and hostname2303 runs the url validations2304 behaves like a URI denied by `deny_all_requests_except_allowed`2305 when instance setting is enabled2306 blocks the request2307 when instance setting is not enabled2308 does not block the request2309 when passed as an argument2310 when argument is a proc that evaluates to true2311 blocks the request2312 when argument is a proc that evaluates to false2313 does not block the request2314 when argument is true2315 blocks the request2316 when argument is false2317 does not block the request2318 #blocked_url?2319 allows imports from configured web host and port2320 allows mirroring from configured SSH host and port2321 returns true for bad localhost hostname2322 returns true for bad port2323 returns true for bad scheme2324 returns true for bad protocol on configured web/SSH host and ports2325 returns true for localhost IPs2326 returns true for loopback IP2327 returns true for alternative version of 127.0.0.1 (0177.1)2328 returns true for alternative version of 127.0.0.1 (017700000001)2329 returns true for alternative version of 127.0.0.1 (0x7f.1)2330 returns true for alternative version of 127.0.0.1 (0x7f.0.0.1)2331 returns true for alternative version of 127.0.0.1 (0x7f000001)2332 returns true for alternative version of 127.0.0.1 (2130706433)2333 returns true for alternative version of 127.0.0.1 (127.000.000.001)2334 returns true for alternative version of 127.0.0.1 (127.0.1)2335 returns true for a non-alphanumeric hostname2336 returns true for invalid URL2337 returns false for legitimate URL2338 blocks urls with invalid ip address2339 blocks urls whose hostname cannot be resolved2340 with ipv6 mapped address2341 returns true for localhost IPs2342 returns true for loopback IPs2343 allow_local_network2344 when true (default)2345 behaves like allows local requests2346 does not block urls from private networks2347 allows localhost endpoints2348 allows loopback endpoints2349 allows IPv4 link-local endpoints2350 allows IPv6 link-local endpoints2351 allows limited broadcast address 255.255.255.255 and variants2352 when false2353 blocks urls from private networks2354 blocks IPv4 link-local endpoints2355 blocks IPv6 link-local endpoints2356 blocks limited broadcast address 255.255.255.255 and variants2357 when local domain/IP is allowed2358 with IPs in allowlist2359 allows IP when dns_rebind_protection is disabled2360 allows the limited broadcast address 255.255.255.2552361 behaves like allows local requests2362 does not block urls from private networks2363 allows localhost endpoints2364 allows loopback endpoints2365 allows IPv4 link-local endpoints2366 allows IPv6 link-local endpoints2367 allows limited broadcast address 255.255.255.255 and variants2368 with domains in allowlist2369 allows domains present in allowlist2370 works with unicode and idna encoded domains2371 when the domain cannot be resolved2372 behaves like dns rebinding checks2373 dns_rebinding_setting2374 when enabled2375 behaves like allowlists the domain2376 is expected not to be blocked url "http://foobar.x" and {:dns_rebind_protection=>true, :schemes=>["http", "https"]}2377 when disabled2378 behaves like allowlists the domain2379 is expected not to be blocked url "http://foobar.x" and {:dns_rebind_protection=>false, :schemes=>["http", "https"]}2380 when the domain can be resolved2381 behaves like dns rebinding checks2382 dns_rebinding_setting2383 when enabled2384 behaves like allowlists the domain2385 is expected not to be blocked url "http://example.com" and {:dns_rebind_protection=>true, :schemes=>["http", "https"]}2386 when disabled2387 behaves like allowlists the domain2388 is expected not to be blocked url "http://example.com" and {:dns_rebind_protection=>false, :schemes=>["http", "https"]}2389 with ports2390 allows domain with port when resolved ip has port allowed2391 enforce_user2392 when false (default)2393 does not block urls with a non-alphanumeric username2394 when true2395 blocks urls with a non-alphanumeric username2396 when ascii_only is true2397 returns true for unicode domain2398 returns true for unicode tld2399 returns true for unicode path2400 returns true for IDNA deviations2401 when gitlab is running on a non-default port2402 returns true for url targeting the wrong port2403 does not block url on gitlab port2404 #validate_hostname2405 does not raise error for valid Ip addresses2406EventCreateService2407 Issues2408 #open_issue2409 is expected to be truthy2410 creates new event2411 #close_issue2412 is expected to be truthy2413 creates new event2414 #reopen_issue2415 is expected to be truthy2416 creates new event2417 Merge Requests2418 #open_mr2419 is expected to be truthy2420 creates new event2421 behaves like it records the event in the event counter2422 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12423 behaves like Snowplow event tracking with RedisHLL context2424 behaves like Snowplow event tracking2425 is emitted2426 #close_mr2427 is expected to be truthy2428 creates new event2429 behaves like it records the event in the event counter2430 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12431 behaves like Snowplow event tracking with RedisHLL context2432 behaves like Snowplow event tracking2433 is emitted2434 #merge_mr2435 is expected to be truthy2436 creates new event2437 behaves like it records the event in the event counter2438 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12439 behaves like Snowplow event tracking with RedisHLL context2440 behaves like Snowplow event tracking2441 is emitted2442 #reopen_mr2443 is expected to be truthy2444 creates new event2445 #approve_mr2446 is expected to be truthy2447 creates new event2448 Milestone2449 #open_milestone2450 is expected to be truthy2451 creates new event2452 #close_mr2453 is expected to be truthy2454 creates new event2455 #destroy_mr2456 is expected to be truthy2457 creates new event2458 #wiki_event2459 action: :created2460 creates the event2461 is idempotent2462 behaves like it records the event in the event counter2463 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12464 behaves like it records a git write event2465 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12466 action: :updated2467 creates the event2468 is idempotent2469 behaves like it records the event in the event counter2470 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12471 behaves like it records a git write event2472 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12473 action: :destroyed2474 creates the event2475 is idempotent2476 behaves like it records the event in the event counter2477 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12478 behaves like it records a git write event2479 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12480 The action is created2481 raises an error2482 The action is updated2483 raises an error2484 The action is closed2485 raises an error2486 The action is reopened2487 raises an error2488 The action is pushed2489 raises an error2490 The action is commented2491 raises an error2492 The action is merged2493 raises an error2494 The action is joined2495 raises an error2496 The action is left2497 raises an error2498 The action is destroyed2499 raises an error2500 The action is expired2501 raises an error2502 The action is approved2503 raises an error2504 #push2505 behaves like service for creating a push event2506 creates a new event2507 creates the push event payload2508 updates user last activity2509 caches the last push event for the user2510 does not create any event data when an error is raised2511 behaves like it records the event in the event counter2512 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12513 behaves like it records a git write event2514 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12515 behaves like Snowplow event tracking with RedisHLL context2516 behaves like Snowplow event tracking2517 is emitted2518 #bulk_push2519 behaves like service for creating a push event2520 creates a new event2521 creates the push event payload2522 updates user last activity2523 caches the last push event for the user2524 does not create any event data when an error is raised2525 behaves like it records the event in the event counter2526 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12527 behaves like it records a git write event2528 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12529 behaves like Snowplow event tracking with RedisHLL context2530 behaves like Snowplow event tracking2531 is emitted2532 Project2533 #join_project2534 is expected to be truthy2535 is expected to change `Event.count` from 0 to 12536 #expired_leave_project2537 is expected to be truthy2538 is expected to change `Event.count` from 0 to 12539 design events2540 #save_designs2541 is expected to change `Event.count` by 82542 is expected not to exceed query limit 22543 creates 3 created design events2544 creates 5 created design events2545 behaves like it records the event in the event counter2546 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12547 behaves like it records a git write event2548 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12549 Snowplow tracking2550 for create event2551 behaves like Snowplow event tracking with RedisHLL context2552 behaves like Snowplow event tracking2553 is emitted2554 for update event2555 behaves like Snowplow event tracking with RedisHLL context2556 behaves like Snowplow event tracking2557 is emitted2558 #destroy_designs2559 is expected to change `Event.count` by 52560 is expected not to exceed query limit 22561 creates 5 destroyed design events2562 behaves like it records the event in the event counter2563 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12564 behaves like it records a git write event2565 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12566 behaves like Snowplow event tracking with RedisHLL context2567 behaves like Snowplow event tracking2568 is emitted2569 #leave_note2570 is expected to be truthy2571 creates new event2572 when it is a diff note2573 behaves like it records the event in the event counter2574 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12575 behaves like Snowplow event tracking with RedisHLL context2576 behaves like Snowplow event tracking2577 is emitted2578 when it is not a diff note2579 does not change the unique action counter2580GroupsHelper2581 #group_icon_url2582 returns an url for the avatar2583 gives default avatar_icon when no avatar is present2584 #group_lfs_status2585 only one project in group2586 returns all projects as enabled2587 returns all projects as disabled2588 more than one project in group2589 LFS enabled in group2590 returns both projects as enabled2591 returns only one as enabled2592 LFS disabled in group2593 returns both projects as disabled2594 returns only one as disabled2595 #group_title2596 enqueues the elements in the breadcrumb schema list2597 avoids N+1 queries2598 traversal queries2599 recursive2600 outputs the groups in the correct order2601 linear2602 outputs the groups in the correct order2603 #group_title_link2604 link2605 uses the group name as innerText2606 links to the group path2607 icon2608 specifies the group name as the alt text2609 uses the group's avatar_url2610 #share_with_group_lock_help_text2611 traversal queries2612 recursive2613 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil2614 has the correct help text with correct ancestor links2615 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil2616 has the correct help text with correct ancestor links2617 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil2618 has the correct help text with correct ancestor links2619 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil2620 has the correct help text with correct ancestor links2621 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil2622 has the correct help text with correct ancestor links2623 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil2624 has the correct help text with correct ancestor links2625 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup2626 has the correct help text with correct ancestor links2627 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup2628 has the correct help text with correct ancestor links2629 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup2630 has the correct help text with correct ancestor links2631 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup2632 has the correct help text with correct ancestor links2633 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup2634 has the correct help text with correct ancestor links2635 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :subgroup2636 has the correct help text with correct ancestor links2637 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil2638 has the correct help text with correct ancestor links2639 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil2640 has the correct help text with correct ancestor links2641 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil2642 has the correct help text with correct ancestor links2643 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil2644 has the correct help text with correct ancestor links2645 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil2646 has the correct help text with correct ancestor links2647 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil2648 has the correct help text with correct ancestor links2649 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group2650 has the correct help text with correct ancestor links2651 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group2652 has the correct help text with correct ancestor links2653 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group2654 has the correct help text with correct ancestor links2655 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :root_group2656 has the correct help text with correct ancestor links2657 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group2658 has the correct help text with correct ancestor links2659 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group2660 has the correct help text with correct ancestor links2661 linear2662 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil2663 has the correct help text with correct ancestor links2664 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil2665 has the correct help text with correct ancestor links2666 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil2667 has the correct help text with correct ancestor links2668 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil2669 has the correct help text with correct ancestor links2670 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil2671 has the correct help text with correct ancestor links2672 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil2673 has the correct help text with correct ancestor links2674 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup2675 has the correct help text with correct ancestor links2676 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup2677 has the correct help text with correct ancestor links2678 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup2679 has the correct help text with correct ancestor links2680 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup2681 has the correct help text with correct ancestor links2682 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup2683 has the correct help text with correct ancestor links2684 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :subgroup2685 has the correct help text with correct ancestor links2686 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil2687 has the correct help text with correct ancestor links2688 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil2689 has the correct help text with correct ancestor links2690 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil2691 has the correct help text with correct ancestor links2692 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil2693 has the correct help text with correct ancestor links2694 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil2695 has the correct help text with correct ancestor links2696 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil2697 has the correct help text with correct ancestor links2698 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group2699 has the correct help text with correct ancestor links2700 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group2701 has the correct help text with correct ancestor links2702 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group2703 has the correct help text with correct ancestor links2704 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :root_group2705 has the correct help text with correct ancestor links2706 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group2707 has the correct help text with correct ancestor links2708 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group2709 has the correct help text with correct ancestor links2710 #can_disable_group_emails?2711 returns true for the group owner2712 returns false for anyone else2713 when subgroups2714 returns false if parent group is disabling emails2715 returns true if parent group is not disabling emails2716 #can_update_default_branch_protection?2717 for users who can update default branch protection of the group2718 is expected to be truthy2719 for users who cannot update default branch protection of the group2720 is expected to be falsey2721 #show_thanks_for_purchase_alert?2722 with quantity present2723 returns true2724 with quantity not present2725 returns false2726 with quantity empty2727 returns false2728 #render_setting_to_allow_project_access_token_creation?2729 returns true if group is root2730 returns false if group is subgroup2731 #can_admin_group_member?2732 returns true when current_user can admin members2733 returns false when current_user can not admin members2734 #localized_jobs_to_be_done_choices2735 has a translation for all `jobs_to_be_done` values2736 #subgroup_creation_data2737 when group has a parent2738 returns expected hash2739 when group does not have a parent2740 returns expected hash2741 #group_name_and_path_app_data2742 when group has a parent2743 returns expected hash2744 #group_overview_tabs_app_data2745 returns expected hash2746 #enabled_git_access_protocol_options_for_group2747 instance setting is nil2748 is expected to contain exactly ["Both SSH and HTTP(S)", "all"], ["Only SSH", "ssh"], and ["Only HTTP(S)", "http"]2749 instance setting is blank2750 is expected to contain exactly ["Both SSH and HTTP(S)", "all"], ["Only SSH", "ssh"], and ["Only HTTP(S)", "http"]2751 instance setting is ssh2752 is expected to contain exactly ["Only SSH", "ssh"]2753 instance setting is http2754 is expected to contain exactly ["Only HTTP(S)", "http"]2755Operations::FeatureFlags::UserList2756 validations2757 is expected to validate that :project cannot be empty/falsy2758 is expected to validate that :name cannot be empty/falsy2759 is expected to validate that :name is case-sensitively unique within the scope of :project_id2760 is expected to validate that the length of :name is between 1 and 2552761 user_xids2762 valid_value: ""2763 is valid with a string of comma separated values2764 valid_value: "sam"2765 is valid with a string of comma separated values2766 valid_value: "1"2767 is valid with a string of comma separated values2768 valid_value: "a"2769 is valid with a string of comma separated values2770 valid_value: "uuid-of-some-kind"2771 is valid with a string of comma separated values2772 valid_value: "sam,fred,tom,jane,joe,mike"2773 is valid with a string of comma separated values2774 valid_value: "gitlab@example.com"2775 is valid with a string of comma separated values2776 valid_value: "123,4"2777 is valid with a string of comma separated values2778 valid_value: "UPPER,Case,charActeRS"2779 is valid with a string of comma separated values2780 valid_value: "0"2781 is valid with a string of comma separated values2782 valid_value: "$valid$email#2345\#$%..{}+=-)?\\/@example.com"2783 is valid with a string of comma separated values2784 valid_value: "spaces allowed"2785 is valid with a string of comma separated values2786 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"2787 is valid with a string of comma separated values2788 valid_value: "a,bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,ccc"2789 is valid with a string of comma separated values2790 valid_value: "many spaces"2791 is valid with a string of comma separated values2792 typecast_value: 12793 automatically casts values of other types2794 typecast_value: 2.52795 automatically casts values of other types2796 typecast_value: {}2797 automatically casts values of other types2798 typecast_value: []2799 automatically casts values of other types2800 invalid_value: nil2801 is invalid2802 invalid_value: "123\n456"2803 is invalid2804 invalid_value: "1,2,3,12\t3"2805 is invalid2806 invalid_value: "\n"2807 is invalid2808 invalid_value: "\n\r"2809 is invalid2810 invalid_value: "joe\r,sam"2811 is invalid2812 invalid_value: "1,2,2"2813 is invalid2814 invalid_value: "1,,2"2815 is invalid2816 invalid_value: "1,2,,,,"2817 is invalid2818 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"2819 is invalid2820 invalid_value: "1, ,2"2821 is invalid2822 invalid_value: "tim, ,7"2823 is invalid2824 invalid_value: " "2825 is invalid2826 invalid_value: " "2827 is invalid2828 invalid_value: " ,1"2829 is invalid2830 invalid_value: "1, "2831 is invalid2832 invalid_value: " leading,1"2833 is invalid2834 invalid_value: "1,trailing "2835 is invalid2836 invalid_value: "1, both ,2"2837 is invalid2838 url_helpers2839 generates paths based on the internal id2840 #destroy2841 deletes the model if it is not associated with any feature flag strategies2842 does not delete the model if it is associated with a feature flag strategy2843 .for_name_like2844 returns a found name2845 returns an empty array when no lists match the query2846 behaves like AtomicInternalId2847 .has_internal_id2848 Module inclusion2849 is expected to includes the AtomicInternalId module2850 Validation2851 when presence validation is required2852 when creating an object2853 raises an error if the internal id is blank2854 when updating an object2855 raises an error if the internal id is blank2856 when presence validation is not required2857 when creating an object2858 does not raise an error if the internal id is blank (PENDING: No reason given)2859 when updating an object2860 does not raise an error if the internal id is blank (PENDING: No reason given)2861 Creating an instance2862 saves a new instance properly2863 internal id generation2864 calls InternalId.generate_next and sets internal id attribute2865 does not overwrite an existing internal id2866 when the instance has an internal ID set2867 calls InternalId.update_last_value and sets the `last_value` to that of the instance2868 unsetting the instance internal id on rollback2869 when the internal id has been changed2870 when the internal id is automatically set2871 clears it on the instance2872 when the internal id is manually set2873 does not clear it on the instance2874 when the internal id has not been changed2875 preserves the value on the instance2876 supply of internal ids2877 provides a persistent supply of IID values, sensitive to the current state2878 #reset_scope_internal_id_attribute2879 rewinds the allocated IID2880 allocates the same IID2881Gitlab::Ci::Status::Pipeline::Factory2882 when pipeline has a core status2883 when core status is created2884 matches correct core status for created2885 does not match extended statuses2886 fabricates a core status created2887 extends core status with common pipeline methods2888 when core status is waiting_for_resource2889 matches correct core status for waiting_for_resource2890 does not match extended statuses2891 fabricates a core status waiting_for_resource2892 extends core status with common pipeline methods2893 when core status is preparing2894 matches correct core status for preparing2895 does not match extended statuses2896 fabricates a core status preparing2897 extends core status with common pipeline methods2898 when core status is pending2899 matches correct core status for pending2900 does not match extended statuses2901 fabricates a core status pending2902 extends core status with common pipeline methods2903 when core status is running2904 matches correct core status for running2905 does not match extended statuses2906 fabricates a core status running2907 extends core status with common pipeline methods2908 when core status is success2909 matches correct core status for success2910 does not match extended statuses2911 fabricates a core status success2912 extends core status with common pipeline methods2913 when core status is failed2914 matches correct core status for failed2915 does not match extended statuses2916 fabricates a core status failed2917 extends core status with common pipeline methods2918 when core status is canceled2919 matches correct core status for canceled2920 does not match extended statuses2921 fabricates a core status canceled2922 extends core status with common pipeline methods2923 when core status is skipped2924 matches correct core status for skipped2925 does not match extended statuses2926 fabricates a core status skipped2927 extends core status with common pipeline methods2928 when core status is manual2929 matches manual core status2930 matches a correct extended statuses2931 extends core status with common pipeline methods2932 when core status is scheduled2933 matches scheduled core status2934 matches a correct extended statuses2935 extends core status with common pipeline methods2936 when pipeline has warnings2937 matches correct core status2938 matches correct extended statuses2939 fabricates extended "success with warnings" status2940 extends core status with common pipeline method2941Database::BatchedBackgroundMigration::CiDatabaseWorker2942 behaves like it runs batched background migration jobs2943 defining the job attributes2944 defines the data_consistency as always2945 defines the feature_category as database2946 defines the idempotency as true2947 .tracking_database2948 does not raise an error2949 overrides the method to return the tracking database2950 .lease_key2951 does not raise an error2952 returns the lease key2953 .enabled?2954 returns true when execute_batched_migrations_on_schedule feature flag is enabled2955 returns false when execute_batched_migrations_on_schedule feature flag is disabled2956 #perform2957 when the base model does not exist2958 does nothing (PENDING: because the base model for ci exists)2959 logs a message indicating execution is skipped (PENDING: because the base model for ci exists)2960 when the base model does exist2961 when the tracking database is shared2962 does nothing (PENDING: Skipping because database ci exists)2963 when the tracking database is not shared2964 when the execute_batched_migrations_on_schedule feature flag is disabled2965 does nothing2966 when the execute_batched_migrations_on_schedule feature flag is enabled2967 when database config is shared2968 does nothing2969 when no active migrations exist2970 does nothing2971 when active migrations exist2972 delegetes the execution to ExecutionWorker2973 executing an entire migration2974 marks the migration record as finished2975 creates job records for each processed batch2976 marks all job records as succeeded2977 updates matching records in the range2978 does not update non-matching records in the range2979 health status2980 puts migration on hold when there is autovaccum activity on related tables2981 puts migration on hold when the pending WAL count is above the limit2982MergeRequestPresenter2983 #mergeable_discussions_state2984 returns the mergeable_discussions_state2985 #ci_status2986 when no head pipeline2987 return status from Ci integration2988 when head pipeline present2989 success with warnings2990 returns "success-with-warnings"2991 pipeline HAS status AND its not success with warnings2992 returns pipeline status2993 pipeline has NO status AND its not success with warnings2994 returns "preparing"2995 #conflict_resolution_path2996 when MR cannot be resolved in UI2997 does not return conflict resolution path2998 when conflicts cannot be resolved by user2999 does not return conflict resolution path3000 when able to access conflict resolution UI3001 does return conflict resolution path3002 issues links3003 #closing_issues_links3004 presents closing issues links3005 does not present related issues links3006 appends status when closing issue is already closed3007 #mentioned_issues_links3008 presents related issues links3009 does not present closing issues links3010 appends status when mentioned issue is already closed3011 #assign_to_closing_issues_path3012 is expected to match "user635/project-602/-/merge_requests/1/assign_related_issues"3013 #assign_to_closing_issues_count3014 single closing issue3015 returns correct count3016 multiple closing issues3017 returns correct count3018 no closing issue3019 returns correct count3020 #cancel_auto_merge_path3021 when can cancel mwps3022 returns path3023 when cannot cancel mwps3024 returns nil3025 #merge_path3026 when can be merged by user3027 returns path3028 when cannot be merged by user3029 returns nil3030 #create_issue_to_resolve_discussions_path3031 when can create issue and issues enabled3032 returns path3033 when cannot create issue3034 returns nil3035 when issues disabled3036 returns nil3037 #remove_wip_path3038 when merge request enabled and has permission3039 has remove_wip_path3040 when has no permission3041 returns nil3042 #target_branch_commits_path3043 when target branch exists3044 returns path3045 when target branch does not exist3046 returns nil3047 #source_branch_commits_path3048 when source branch exists3049 returns path3050 when source branch does not exist3051 returns nil3052 #target_branch_tree_path3053 when target branch exists3054 returns path3055 when target branch does not exist3056 returns nil3057 #source_branch_path3058 when source branch exists3059 returns path3060 when source branch does not exist3061 returns nil3062 #target_branch_path3063 when target branch exists3064 returns path3065 when target branch does not exist3066 returns nil3067 #source_branch_link3068 when source branch exists3069 returns link3070 when source branch does not exist3071 returns text3072 #target_branch_link3073 when target branch exists3074 returns link3075 when target branch does not exist3076 returns text3077 #source_branch_with_namespace_link3078 returns link3079 escapes html, when source_branch does not exist3080 #rebase_path3081 when can rebase3082 returns path3083 when cannot rebase3084 when rebase in progress3085 returns nil3086 when user cannot merge3087 returns nil3088 should not be rebased3089 returns nil3090 #can_push_to_source_branch3091 when source branch exists AND user can push to source branch3092 returns true3093 when source branch does not exists3094 returns false3095 when user cannot push to source branch3096 returns false3097 #api_approvals_path3098 is expected to eq "/api/v4/projects/560/merge_requests/1/approvals"3099 #api_approve_path3100 is expected to eq "/api/v4/projects/560/merge_requests/1/approve"3101 #api_unapprove_path3102 is expected to eq "/api/v4/projects/560/merge_requests/1/unapprove"3103 #pipeline_coverage_delta3104 when merge request has pipeline coverage delta3105 formats coverage into 2 decimal points3106 when merge request does not have pipeline coverage delta3107 returns nil3108GroupMemberPolicy3109 with anonymous user3110 is expected to be allowed :read_group3111 design management is enabled3112 is expected to be allowed :read_design_activity3113 for a private group3114 is expected not to be allowed :destroy_group_member3115 for an internal group3116 is expected not to be allowed :destroy_group_member3117 with guest user, for own membership3118 is expected not to be allowed :update_group_member3119 is expected to be allowed :destroy_group_member3120 with guest user, for other membership3121 is expected not to be allowed :update_group_member3122 is expected to be allowed :read_group3123 for access requests3124 for own access request3125 is expected to be allowed :withdraw_member_access_request3126 for another user's access request3127 is expected not to be allowed :withdraw_member_access_request3128 for own, valid membership3129 is expected not to be allowed :withdraw_member_access_request3130 with bot user3131 is expected to be allowed :destroy_project_bot_member3132 with anonymous bot user3133 is expected not to be allowed :destroy_project_bot_member3134 with owner3135 with group with one owner3136 is expected not to be allowed :destroy_group_member3137 is expected to be allowed :read_group3138 with group with bot user owner3139 is expected not to be allowed :destroy_group_member3140 with group with more than one owner3141 is expected to be allowed :destroy_group_member3142 is expected not to be allowed :destroy_project_bot_member3143 with group with owners from a parent3144 when top-level group3145 with group sharing3146 is expected not to be allowed :destroy_group_member3147 is expected to be allowed :read_group3148 when subgroup3149 is expected to be allowed :destroy_group_member3150 is expected to be allowed :read_group3151 with blocked owner3152 is expected not to be allowed :destroy_group_member3153 is expected not to be allowed :read_group3154 with group with bot user owner3155 is expected not to be allowed :destroy_group_member3156 is expected not to be allowed :read_group3157 with group with more than one blocked owner3158 is expected to be allowed :destroy_group_member3159Gitlab::Database::Reflection3160 #username3161 when a username is set3162 returns the username3163 when a username is not set3164 returns the value of the USER environment variable3165 #database_name3166 returns the name of the database3167 #adapter_name3168 returns the database adapter name3169 #human_adapter_name3170 when the adapter is PostgreSQL3171 returns PostgreSQL3172 when the adapter is not PostgreSQL3173 returns Unknown3174 #postgresql?3175 when using PostgreSQL3176 returns true3177 when not using PostgreSQL3178 returns false3179 #db_read_only?3180 detects a read-only database3181 detects a read-only database3182 detects a read-write database3183 detects a read-write database3184 #db_read_write?3185 detects a read-only database3186 detects a read-only database3187 detects a read-write database3188 detects a read-write database3189 #version3190 memoizes the result3191 on postgresql3192 extracts the version number3193 #postgresql_minimum_supported_version?3194 returns false when using PostgreSQL 103195 returns false when using PostgreSQL 113196 returns false when using PostgreSQL 123197 returns true when using PostgreSQL 133198 #cached_column_exists?3199 only retrieves the data from the schema cache3200 #cached_table_exists?3201 only retrieves the data from the schema cache3202 returns false when database does not exist3203 #exists?3204 returns true if the database exists3205 returns false if the database doesn't exist3206 #system_id3207 returns the PostgreSQL system identifier3208 #flavor3209 re-raises exceptions not matching expected messages3210 recognizes Amazon Aurora PostgreSQL3211 recognizes PostgreSQL on Amazon RDS3212 recognizes CloudSQL for PostgreSQL3213 recognizes Azure Database for PostgreSQL - Flexible Server3214 recognizes Azure Database for PostgreSQL - Single Server3215 recognizes AlloyDB for PostgreSQL3216 returns nil if can not recognize the flavor3217 #config3218 returns a HashWithIndifferentAccess3219 returns a default pool size3220 does not cache its results3221Gitlab::Ci::Variables::Collection3222 .new3223 can be initialized with an array3224 can be initialized without an argument3225 #append3226 appends a hash3227 appends a Ci::Variable3228 appends an internal resource3229 returns self3230 #compact3231 returns a new Collection instance3232 rejects pair that has nil value3233 #concat3234 appends all elements from an array3235 appends all elements from other collection3236 does not concatenate resource if it undefined3237 returns self3238 #+3239 makes it possible to combine with an array3240 makes it possible to combine with another collection3241 #[]3242 with variable key with single entry3243 behaves like an array access operator3244 for a non-existent variable name3245 returns nil3246 for an existent variable name3247 returns the last Item3248 with variable key with multiple entries3249 behaves like an array access operator3250 for a non-existent variable name3251 returns nil3252 for an existent variable name3253 returns the last Item3254 #all3255 with variable key with single entry3256 behaves like a method returning all known variables or nil3257 for a non-existent variable name3258 returns nil3259 for an existing variable name3260 returns all expected Items3261 with variable key with multiple entries3262 behaves like a method returning all known variables or nil3263 for a non-existent variable name3264 returns nil3265 for an existing variable name3266 returns all expected Items3267 #size3268 returns zero for empty collection3269 returns 2 for collection with 2 variables3270 returns 3 for collection with 2 duplicate variables3271 #to_runner_variables3272 creates an array of hashes in a runner-compatible format3273 #to_hash3274 returns regular hash in valid order without duplicates3275 #reject3276 returns a Collection instance3277 returns correctly filtered Collection3278 #sort_and_expand_all3279 table tests3280 empty array3281 returns Collection3282 expands variables3283 preserves raw attribute3284 empty string3285 returns Collection3286 expands variables3287 preserves raw attribute3288 simple expansions3289 returns Collection3290 expands variables3291 preserves raw attribute3292 complex expansion3293 returns Collection3294 expands variables3295 preserves raw attribute3296 unused variables3297 returns Collection3298 expands variables3299 preserves raw attribute3300 complex expansions3301 returns Collection3302 expands variables3303 preserves raw attribute3304 escaped characters in complex expansions keeping undefined are kept intact3305 returns Collection3306 expands variables3307 preserves raw attribute3308 escaped characters in complex expansions discarding undefined are kept intact3309 returns Collection3310 expands variables3311 preserves raw attribute3312 out-of-order expansion3313 returns Collection3314 expands variables3315 preserves raw attribute3316 out-of-order complex expansion3317 returns Collection3318 expands variables3319 preserves raw attribute3320 missing variable discarding original3321 returns Collection3322 expands variables3323 preserves raw attribute3324 missing variable keeping original3325 returns Collection3326 expands variables3327 preserves raw attribute3328 complex expansions with missing variable keeping original3329 returns Collection3330 expands variables3331 preserves raw attribute3332 complex expansions with raw variable with expand_raw_refs: true (default)3333 returns Collection3334 expands variables3335 preserves raw attribute3336 complex expansions with raw variable with expand_raw_refs: false3337 returns Collection3338 expands variables3339 preserves raw attribute3340 variable value referencing password with special characters3341 returns Collection3342 expands variables3343 preserves raw attribute3344 cyclic dependency causes original array to be returned3345 returns Collection3346 expands variables3347 preserves raw attribute3348 file variables with expand_file_refs: true3349 returns Collection3350 expands variables3351 preserves raw attribute3352 file variables with expand_file_refs: false3353 returns Collection3354 expands variables3355 preserves raw attribute3356 #to_s3357 is expected to eq "[\"VAR\", \"VAR2\"], @errors='circular variable reference detected'"3358Integrations::HasDataFields3359 when data are stored in data_fields3360 behaves like data fields3361 #arg3362 returns the expected values3363 {arg}_changed?3364 returns false when the property has not been assigned a new value3365 returns true when the property has been assigned a different value3366 returns true when the property has been assigned a different value twice3367 returns false when the property has been re-assigned the same value3368 {arg}_touched?3369 returns false when the property has not been assigned a new value3370 returns true when the property has been assigned a different value3371 returns true when the property has been assigned a different value twice3372 returns true when the property has been re-assigned the same value3373 returns false when the property has been re-assigned the same value3374 data_fields_present?3375 returns true from the issue tracker integration3376 {arg}_was?3377 returns nil3378 when integration and data_fields are not persisted3379 data_fields_present?3380 returns true3381 when data are stored in properties3382 behaves like data fields3383 #arg3384 returns the expected values3385 {arg}_changed?3386 returns false when the property has not been assigned a new value3387 returns true when the property has been assigned a different value3388 returns true when the property has been assigned a different value twice3389 returns false when the property has been re-assigned the same value3390 {arg}_touched?3391 returns false when the property has not been assigned a new value3392 returns true when the property has been assigned a different value3393 returns true when the property has been assigned a different value twice3394 returns true when the property has been re-assigned the same value3395 returns false when the property has been re-assigned the same value3396 data_fields_present?3397 returns true from the issue tracker integration3398 {arg}_was?3399 returns nil when the property has not been assigned a new value3400 returns initial value when the property has been assigned a different value3401 returns initial value when the property has been re-assigned the same value3402 when data are stored in both properties and data_fields3403 behaves like data fields3404 #arg3405 returns the expected values3406 {arg}_changed?3407 returns false when the property has not been assigned a new value3408 returns true when the property has been assigned a different value3409 returns true when the property has been assigned a different value twice3410 returns false when the property has been re-assigned the same value3411 {arg}_touched?3412 returns false when the property has not been assigned a new value3413 returns true when the property has been assigned a different value3414 returns true when the property has been assigned a different value twice3415 returns true when the property has been re-assigned the same value3416 returns false when the property has been re-assigned the same value3417 data_fields_present?3418 returns true from the issue tracker integration3419 {arg}_was?3420 returns nil3421Gitlab::Ci::Pipeline::Chain::Validate::Abilities3422 when users has no ability to run a pipeline3423 adds an error about insufficient permissions3424 breaks the pipeline builder chain3425 when user has ability to create a pipeline3426 does not invalidate the pipeline3427 does not break the chain3428 when project is deleted3429 is expected to contain exactly "Project is deleted!"3430 #allowed_to_write_ref?3431 when user is a developer3432 is expected to be truthy3433 when pipeline is a detached merge request pipeline3434 is expected to be truthy3435 when the branch is protected3436 is expected to be falsey3437 when pipeline is a detached merge request pipeline3438 is expected to be falsey3439 when developers are allowed to merge3440 is expected to be truthy3441 when pipeline is a detached merge request pipeline3442 is expected to be truthy3443 when the tag is protected3444 is expected to be falsey3445 when developers are allowed to create the tag3446 is expected to be truthy3447 when user is a maintainer3448 is expected to be truthy3449 when the branch is protected3450 is expected to be truthy3451 when pipeline is a detached merge request pipeline3452 is expected to be truthy3453 when the tag is protected3454 is expected to be truthy3455 when no one can create the tag3456 is expected to be falsey3457 when owner cannot create pipeline3458 is expected to be falsey3459DiffsEntity3460 as json3461 contains needed attributes3462 broken merge request3463 renders without errors3464 when a commit_id is passed3465 when the passed commit is not the first or last in the group3466 includes commit references for previous and next3467 when the passed commit is the first in the group3468 includes commit references for nil and previous commit3469 when the passed commit is the last in the group3470 includes commit references for the next and nil3471 diff_files3472 serializes diff files using DiffFileEntity3473 when there are conflicts3474 serializes diff files with conflicts3475PagesDomain3476 associations3477 is expected to belong to project required: false3478 .for_project3479 returns domains assigned to project3480 .verified3481 finds verified3482 validate domain3483 is unique3484 is expected to validate that :domain is case-insensitively unique3485 hostname3486 domain "my.domain.com" validity3487 is expected to eq true3488 domain "123.456.789" validity3489 is expected to eq true3490 domain "0x12345.com" validity3491 is expected to eq true3492 domain "0123123" validity3493 is expected to eq true3494 domain "a-reserved.com" validity3495 is expected to eq true3496 domain "a.b-reserved.com" validity3497 is expected to eq true3498 domain "reserved.com" validity3499 is expected to eq true3500 domain "_foo.com" validity3501 is expected to eq false3502 domain "a.reserved.com" validity3503 is expected to eq false3504 domain "a.b.reserved.com" validity3505 is expected to eq false3506 domain nil validity3507 is expected to eq false3508 HTTPS-only3509 pages_https_only: true, certificate: nil, key: nil, auto_ssl_enabled: false, errors_on: [:certificate, :key]3510 is adds the expected errors3511 pages_https_only: true, certificate: nil, key: nil, auto_ssl_enabled: true, errors_on: []3512 is adds the expected errors3513 pages_https_only: true, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: nil, auto_ssl_enabled: false, errors_on: [:key]3514 is adds the expected errors3515 pages_https_only: true, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: nil, auto_ssl_enabled: true, errors_on: [:key]3516 is adds the expected errors3517 pages_https_only: true, certificate: nil, key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: false, errors_on: [:certificate, :key]3518 is adds the expected errors3519 pages_https_only: true, certificate: nil, key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: true, errors_on: [:key]3520 is adds the expected errors3521 pages_https_only: true, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: false, errors_on: []3522 is adds the expected errors3523 pages_https_only: true, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: true, errors_on: []3524 is adds the expected errors3525 pages_https_only: false, certificate: nil, key: nil, auto_ssl_enabled: false, errors_on: []3526 is adds the expected errors3527 pages_https_only: false, certificate: nil, key: nil, auto_ssl_enabled: true, errors_on: []3528 is adds the expected errors3529 pages_https_only: false, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: nil, auto_ssl_enabled: false, errors_on: [:key]3530 is adds the expected errors3531 pages_https_only: false, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: nil, auto_ssl_enabled: true, errors_on: [:key]3532 is adds the expected errors3533 pages_https_only: false, certificate: nil, key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: false, errors_on: [:key]3534 is adds the expected errors3535 pages_https_only: false, certificate: nil, key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: true, errors_on: [:key]3536 is adds the expected errors3537 pages_https_only: false, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: false, errors_on: []3538 is adds the expected errors3539 pages_https_only: false, certificate: "-----BEGIN CERTIFICATE-----\nMIIBrzCCARgCCQDbfQx2zdkNYTANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBB0\nZXN0LWNlcnRpZmljYXRlMCAXDTIwMDMxNjE0MjAzNFoYDzIyMjAwMTI4MTQyMDM0\nWjAbMRkwFwYDVQQDDBB0ZXN0LWNlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUA\nA4GNADCBiQKBgQCkvgn0vRnEUnWEjUs8h+UCUAa+bpkS+hPiopTld/YmBTv/aB41\nHWqU0VpK8JzTwqe6mnnJOCa/Ir9eLT1TQ3za++nhm+v92JJzgD9EDoy1rp6AvJI1\nPjfyR1Odja1Hl96hMvBClfS3ggyXAZAZPmHo5/Z8qYPHO7C7J99wgeot2wIDAQAB\nMA0GCSqGSIb3DQEBCwUAA4GBACc+chrTAuvnMBTedc4/dy16pEesK6oGjywYUd/0\n/FBr8Vry7QUXMSgfraza9S0V+JvFvZFqkkOyJKW+m30kThWzyc/2e+BRxTh/QrxP\n0j84QXtmnVtW4jsAwfBBfg78ST27eyp/WhruI6F/kZlXhfAed0RcPbRnbi3yvUPL\nLo4T\n-----END CERTIFICATE-----\n", key: "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN\nSzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t\nPVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB\nkBk+Yejn9nypg8c7sLsn33CB6i3bAgMBAAECgYA2D26w80T7WZvazYr86BNMePpd\nj2mIAqx32KZHzt/lhh40J/SRtX9+Kl0Y7nBoRR5Ja9u/HkAIxNxLiUjwg9r6cpg/\nuITEF5nMt7lAk391BuI+7VOZZGbJDsq2ulPd6lO+C8Kq/PI/e4kXcIjeH6KwQsuR\n5vrXfBZ3sQfflaiN4QJBANBt8JY2LIGQF8o89qwUpRL5vbnKQ4IzZ5+TOl4RLR7O\nAQpJ81tGuINghO7aunctb6rrcKJrxmEH1whzComybrMCQQDKV49nOBudRBAIgG4K\nEnLzsRKISUHMZSJiYTYnablof8cKw1JaQduw7zgrUlLwnroSaAGX88+Jw1f5n2Lh\nVlg5AkBDdUGnrDLtYBCDEQYZHblrkc7ZAeCllDOWjxUV+uMqlCv8A4Ey6omvY57C\nm6I8DkWVAQx8VPtozhvHjUw80rZHAkB55HWHAM3h13axKG0htCt7klhPsZHpx6MH\nEPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx\n63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi\nnNp/xedE1YxutQ==\n-----END PRIVATE KEY-----\n", auto_ssl_enabled: true, errors_on: []3540 is adds the expected errors3541 when certificate is specified3542 saves validity time3543 validate certificate3544 serverless domain3545 requires certificate and key to be present3546 with matching key3547 is expected to be valid3548 when no certificate is specified3549 is expected not to be valid3550 when no key is specified3551 is expected not to be valid3552 for not matching key3553 is expected not to be valid3554 when certificate is expired3555 when certificate is being changed3556 adds error to certificate3557 when certificate is already saved3558 doesn't add error to certificate3559 with ecdsa certificate3560 is valid3561 when curve is set explicitly by parameters3562 adds errors to private key3563 validations3564 is expected to validate that :verification_code cannot be empty/falsy3565 default values3566 defaults wildcard to false3567 defaults auto_ssl_enabled to false3568 defaults scope to project3569 defaults usage to pages3570 #verification_code3571 is set automatically with 128 bits of SecureRandom data3572 #keyed_verification_code3573 is expected to eq "gitlab-pages-verification-code=dd3caf5dca271590489ccb3b636cfb50"3574 #verification_domain3575 is expected to be nil3576 is a well-known subdomain if the domain is present3577 #url3578 is expected to eq "https://my34.domain.com"3579 without the certificate3580 is expected to eq "http://my35.domain.com"3581 #has_matching_key?3582 is expected to be truthy3583 for invalid key3584 is expected to be falsey3585 #has_intermediates?3586 for self signed3587 is expected to be truthy3588 for missing certificate chain3589 is expected to be falsey3590 for trusted certificate chain3591 is expected to be truthy3592 #expired?3593 for valid3594 is expected to be falsey3595 for expired3596 is expected to be truthy3597 #subject3598 is expected to eq "/CN=test-certificate"3599 #certificate_text3600 is expected not to be empty3601 #https?3602 when a certificate is present3603 is expected to be https3604 when no certificate is present3605 is expected not to be https3606 #user_provided_key3607 when certificate is provided by user3608 returns key3609 when certificate is provided by gitlab3610 returns nil3611 #user_provided_certificate3612 when certificate is provided by user3613 returns key3614 when certificate is provided by gitlab3615 returns nil3616 #user_provided_key=3617 when value has been changed3618 assignes new value to key3619 changes certificate source3620 when value has not been not changed3621 does not change certificate source3622 #gitlab_provided_key=3623 when value has been changed3624 assignes new value to key3625 changes certificate source3626 when value has not been not changed3627 does not change certificate source3628 #user_provided_certificate=3629 when value has been changed3630 assignes new value to certificate3631 changes certificate source3632 when value has not been not changed3633 does not change certificate source3634 #gitlab_provided_certificate=3635 when value has been changed3636 assignes new value to certificate3637 changes certificate source3638 when value has not been not changed3639 does not change certificate source3640 #save3641 when we failed to obtain ssl certificate3642 clears failure if auto ssl is disabled3643 does not clear failure on unrelated updates3644 .for_removal3645 when domain is not schedule for removal3646 does not return domain3647 when domain is scheduled for removal yesterday3648 returns domain3649 when domain is scheduled for removal tomorrow3650 does not return domain3651 .instance_serverless3652 returns domains that are wildcard, instance-level, and serverless3653 .need_auto_ssl_renewal3654 contains only domains needing ssl renewal3655 #validate_custom_domain_count_per_project3656 when max custom domain setting is set to 03657 returns without an error3658 when max custom domain setting is not set to 03659 returns with an error for extra domains3660 .find_by_domain_case_insensitive3661 lookup is case-insensitive3662SystemHook3663 behaves like a hook that does not get automatically disabled on failure3664 .executable/.disabled3665 finds the correct set of project hooks3666 #executable?3667 recent_failures: 0, not_until: :not_set3668 has the correct state3669 recent_failures: 0, not_until: :past3670 has the correct state3671 recent_failures: 0, not_until: :future3672 has the correct state3673 recent_failures: 0, not_until: :now3674 has the correct state3675 recent_failures: 1, not_until: :not_set3676 has the correct state3677 recent_failures: 1, not_until: :past3678 has the correct state3679 recent_failures: 1, not_until: :future3680 has the correct state3681 recent_failures: 3, not_until: :not_set3682 has the correct state3683 recent_failures: 3, not_until: :past3684 has the correct state3685 recent_failures: 3, not_until: :future3686 has the correct state3687 recent_failures: 4, not_until: :not_set3688 has the correct state3689 recent_failures: 4, not_until: :past3690 has the correct state3691 recent_failures: 4, not_until: :now3692 has the correct state3693 recent_failures: 4, not_until: :future3694 has the correct state3695 #enable!3696 makes a hook executable if it was marked as failed3697 makes a hook executable if it is currently backed off3698 does not update hooks unless necessary3699 #backoff!3700 when we have not backed off before3701 does not disable the hook3702 when we have exhausted the grace period3703 does not disable the hook3704 #disable!3705 does not disable a group hook3706 #temporarily_disabled?3707 is false3708 #permanently_disabled?3709 is false3710 #alert_status3711 is expected to eq :executable3712 when hook has been disabled3713 is expected to eq :executable3714 when hook has been backed off3715 is expected to eq :executable3716 default attributes3717 sets defined default parameters3718 validations3719 url3720 is expected not to allow :url to be ‹"http://localhost:9000"›3721 is valid if application settings allow local requests from system hooks3722 execute3723 project_create hook3724 project_destroy hook3725 user_create hook3726 user_destroy hook3727 project member create hook3728 project member destroy hook3729 project member update hook3730 group create hook3731 group destroy hook3732 group member create hook3733 group member destroy hook3734 group member update hook3735 .repository_update_hooks3736 returns hooks for repository update events only3737 execute WebHookService3738 #execute3739 #async_execute3740 #application_context3741 includes the type3742Clusters::KnativeServicesFinder3743 #service_pod_details3744 behaves like a cached data3745 has an unintialized cache3746 when using synchronous reactive cache3747 when there are functions for cluster namespace3748 is expected not to be blank3749 when there are no functions for cluster namespace3750 is expected to be blank3751 #services3752 behaves like a cached data3753 has an unintialized cache3754 when using synchronous reactive cache3755 when there are functions for cluster namespace3756 is expected not to be blank3757 when there are no functions for cluster namespace3758 is expected to be blank3759 #knative_detected3760 when knative is installed3761 is expected to be truthy3762 discovers knative installation3763 when knative is not installed3764 is expected to be falsy3765 does not discover knative installation3766Projects::AfterImportWorker3767 #execute3768 performs housekeeping3769 with some refs in refs/pull/**/*3770 removes refs/pull/**/*3771 with a ref in refs/heads/tmp3772 does not remove refs/heads/tmp3773 with a ref in refs/tags/tmp3774 does not remove refs/tags/tmp3775 with a ref in refs/replace/tmp3776 does not remove refs/replace/tmp3777 with a ref in refs/merge-requests/tmp3778 does not remove refs/merge-requests/tmp3779 with a ref in refs/environments/tmp3780 does not remove refs/environments/tmp3781 with a ref in refs/keep-around/tmp3782 does not remove refs/keep-around/tmp3783 with a ref in refs/pipelines/tmp3784 does not remove refs/pipelines/tmp3785 when after import action throw non-retriable exception3786 throws after import error3787 when housekeeping service lease is taken3788 logs the error message3789 when after import action throw retriable exception one time3790 removes refs/pull/**/*3791 records the failures in the database3792AutoMergeService3793 .all_strategies_ordered_by_preference3794 returns all strategies in preference order3795 #available_strategies3796 returns available strategies3797 when the head piipeline succeeded3798 returns available strategies3799 #preferred_strategy3800 returns preferred strategy3801 when the head piipeline succeeded3802 returns available strategies3803 .get_service_class3804 returns service instance3805 when strategy is not present3806 returns nil3807 #execute3808 delegates to a relevant service instance3809 when the head pipeline succeeded3810 returns failed3811 when strategy is not specified3812 chooses the most preferred strategy3813 #update3814 when auto merge is enabled3815 delegates to a relevant service instance3816 when auto merge is not enabled3817 returns failed3818 #process3819 delegates to a relevant service instance3820 when auto merge is not enabled3821 returns nil3822 #cancel3823 delegates to a relevant service instance3824 when auto merge is not enabled3825 returns error3826 #abort3827 delegates to a relevant service instance3828 when auto merge is not enabled3829 returns error3830Gitlab::Ci::RunnerUpgradeCheck3831 #check_runner_upgrade_suggestion3832 with failing Gitlab::Ci::RunnerReleases request3833 returns :error3834 with available_runner_releases configured3835 with no available runner releases3836 with Gitlab::VERSION set to 14.1.13837 with runner_version from last minor release3838 returns :unavailable3839 up to 14.1.13840 with nil runner_version3841 returns :invalid_version3842 with invalid runner_version3843 returns :invalid_version3844 with Gitlab::VERSION set to 14.1.1233845 with a runner_version that is too recent3846 returns :unavailable3847 with Gitlab::VERSION set to 14.0.13848 with valid params3849 runner_version: "v15.0.0", expected_status: :unavailable, expected_suggested_version: "15.0.0"3850 is expected to eq [#<Gitlab::VersionInfo:0x00007f0d8a4bbec0 @major=15, @minor=0, @patch=0, @suffix_s="", @suffix=[]>, :unavailable]3851 runner_version: "v14.1.0-rc3", expected_status: :recommended, expected_suggested_version: "14.1.1"3852 is expected to eq [#<Gitlab::VersionInfo:0x00007f0d8bb42c48 @major=14, @minor=1, @patch=1, @suffix_s="", @suffix=[]>, :recommended]3853 runner_version: "v14.1.0~beta.1574.gf6ea9389", expected_status: :recommended, expected_suggested_version: "14.1.1"3854 is expected to eq [#<Gitlab::VersionInfo:0x00007f0dd89881d0 @major=14, @minor=1, @patch=1, @suffix_s="", @suffix=[]>, :recommended]3855 runner_version: "v14.1.0/1.1.0", expected_status: :recommended, expected_suggested_version: "14.1.1"3856 is expected to eq [#<Gitlab::VersionInfo:0x00007f0dcd9ded60 @major=14, @minor=1, @patch=1, @suffix_s="", @suffix=[]>, :recommended]3857 runner_version: "v14.1.0", expected_status: :recommended, expected_suggested_version: "14.1.1"3858 is expected to eq [#<Gitlab::VersionInfo:0x00007f0dc75a00d8 @major=14, @minor=1, @patch=1, @suffix_s="", @suffix=[]>, :recommended]3859 runner_version: "v14.0.1", expected_status: :recommended, expected_suggested_version: "14.0.2"3860 is expected to eq [#<Gitlab::VersionInfo:0x00007f0dc41e04c8 @major=14, @minor=0, @patch=2, @suffix_s="", @suffix=[]>, :recommended]3861 runner_version: "v14.0.2-rc1", expected_status: :recommended, expected_suggested_version: "14.0.2"3862 is expected to eq [#<Gitlab::VersionInfo:0x00007f0dabefc260 @major=14, @minor=0, @patch=2, @suffix_s="", @suffix=[]>, :recommended]3863 runner_version: "v14.0.2", expected_status: :unavailable, expected_suggested_version: "14.0.2"3864 is expected to eq [#<Gitlab::VersionInfo:0x00007f0da5b54e60 @major=14, @minor=0, @patch=2, @suffix_s="", @suffix=[]>, :unavailable]3865 runner_version: "v13.10.1", expected_status: :available, expected_suggested_version: "14.0.2"3866 is expected to eq [#<Gitlab::VersionInfo:0x00007f0da3661dd8 @major=14, @minor=0, @patch=2, @suffix_s="", @suffix=[]>, :available]3867 runner_version: "v13.10.1~beta.1574.gf6ea9389", expected_status: :recommended, expected_suggested_version: "13.10.1"3868 is expected to eq [#<Gitlab::VersionInfo:0x00007f0da9890cc0 @major=13, @minor=10, @patch=1, @suffix_s="", @suffix=[]>, :recommended]3869 runner_version: "v13.10.1/1.1.0", expected_status: :recommended, expected_suggested_version: "13.10.1"3870 is expected to eq [#<Gitlab::VersionInfo:0x00007f0daac71d70 @major=13, @minor=10, @patch=1, @suffix_s="", @suffix=[]>, :recommended]3871 runner_version: "v13.10.0", expected_status: :recommended, expected_suggested_version: "13.10.1"3872 is expected to eq [#<Gitlab::VersionInfo:0x00007f0d8a538970 @major=13, @minor=10, @patch=1, @suffix_s="", @suffix=[]>, :recommended]3873 runner_version: "v13.9.2", expected_status: :recommended, expected_suggested_version: "14.0.2"3874 is expected to eq [#<Gitlab::VersionInfo:0x00007f0d8c3d7598 @major=14, @minor=0, @patch=2, @suffix_s="", @suffix=[]>, :recommended]3875 runner_version: "v13.9.0", expected_status: :recommended, expected_suggested_version: "14.0.2"3876 is expected to eq [#<Gitlab::VersionInfo:0x00007f0dcde42fa0 @major=14, @minor=0, @patch=2, @suffix_s="", @suffix=[]>, :recommended]3877 runner_version: "v13.8.1", expected_status: :recommended, expected_suggested_version: "14.0.2"3878 is expected to eq [#<Gitlab::VersionInfo:0x00007f0dc259a2a0 @major=14, @minor=0, @patch=2, @suffix_s="", @suffix=[]>, :recommended]3879 runner_version: "v11.4.1", expected_status: :recommended, expected_suggested_version: "14.0.2"3880 is expected to eq [#<Gitlab::VersionInfo:0x00007f0dac889a58 @major=14, @minor=0, @patch=2, @suffix_s="", @suffix=[]>, :recommended]3881 with Gitlab::VERSION set to 13.9.03882 with valid params3883 runner_version: "v14.0.0", expected_status: :recommended, expected_suggested_version: "14.0.2"3884 is expected to eq [#<Gitlab::VersionInfo:0x00007f0da4b2c268 @major=14, @minor=0, @patch=2, @suffix_s="", @suffix=[]>, :recommended]3885 runner_version: "v13.10.1", expected_status: :unavailable, expected_suggested_version: "13.10.1"3886 is expected to eq [#<Gitlab::VersionInfo:0x00007f0da8e2ae70 @major=13, @minor=10, @patch=1, @suffix_s="", @suffix=[]>, :unavailable]3887 runner_version: "v13.10.0", expected_status: :recommended, expected_suggested_version: "13.10.1"3888 is expected to eq [#<Gitlab::VersionInfo:0x00007f0daae86750 @major=13, @minor=10, @patch=1, @suffix_s="", @suffix=[]>, :recommended]3889 runner_version: "v13.9.2", expected_status: :unavailable, expected_suggested_version: "13.9.2"3890 is expected to eq [#<Gitlab::VersionInfo:0x00007f0d8a7163c8 @major=13, @minor=9, @patch=2, @suffix_s="", @suffix=[]>, :unavailable]3891 runner_version: "v13.9.0", expected_status: :recommended, expected_suggested_version: "13.9.2"3892 is expected to eq [#<Gitlab::VersionInfo:0x00007f0d8c444b20 @major=13, @minor=9, @patch=2, @suffix_s="", @suffix=[]>, :recommended]3893 runner_version: "v13.8.1", expected_status: :recommended, expected_suggested_version: "13.9.2"3894 is expected to eq [#<Gitlab::VersionInfo:0x00007f0dd4a30848 @major=13, @minor=9, @patch=2, @suffix_s="", @suffix=[]>, :recommended]3895 runner_version: "v11.4.1", expected_status: :recommended, expected_suggested_version: "13.9.2"3896 is expected to eq [#<Gitlab::VersionInfo:0x00007f0dc6fbc400 @major=13, @minor=9, @patch=2, @suffix_s="", @suffix=[]>, :recommended]3897 up to 15.1.03898 with Gitlab::VERSION set to 15.2.0-pre3899 with unknown runner version3900 recommends 15.1.0 since 14.11 is an unknown release and 15.1.0 is available3901HamlLint::Linter::DocumentationLinks3902 behaves like link validation rules3903 when link_to points to the existing file path3904 is expected not to report a lint3905 when link_to points to the existing file with valid anchor3906 is expected not to report a lint3907 when link_to points to the existing file path without .md extension3908 is expected not to report a lint3909 when anchor is not correct3910 is expected to report a lint3911 when help_page_path has multiple options3912 is expected to report a lint3913 when file path is wrong3914 is expected to report a lint3915 when haml ends with block definition3916 is expected to report a lint3917 when link with wrong file path is assigned to a variable3918 is expected to report a lint3919 when it is a broken code3920 is expected not to report a lint3921 when anchor belongs to a different element3922 is expected not to report a lint3923 when a simple help_page_path3924 is expected to report a lint3925 when link is not a string3926 is expected not to report a lint3927 when link is a part of the tag3928 is expected to report a lint3929 when the second link is invalid3930 is expected to report a lint3931 behaves like link validation rules3932 when link_to points to the existing file path3933 is expected not to report a lint3934 when link_to points to the existing file with valid anchor3935 is expected not to report a lint3936 when link_to points to the existing file path without .md extension3937 is expected not to report a lint3938 when anchor is not correct3939 is expected to report a lint3940 when help_page_url has multiple options3941 is expected to report a lint3942 when file path is wrong3943 is expected to report a lint3944 when haml ends with block definition3945 is expected to report a lint3946 when link with wrong file path is assigned to a variable3947 is expected to report a lint3948 when it is a broken code3949 is expected not to report a lint3950 when anchor belongs to a different element3951 is expected not to report a lint3952 when a simple help_page_url3953 is expected to report a lint3954 when link is not a string3955 is expected not to report a lint3956 when link is a part of the tag3957 is expected to report a lint3958 when the second link is invalid3959 is expected to report a lint3960 behaves like link validation rules3961 when link_to points to the existing file path3962 is expected not to report a lint3963 when link_to points to the existing file with valid anchor3964 is expected not to report a lint3965 when link_to points to the existing file path without .md extension3966 is expected not to report a lint3967 when anchor is not correct3968 is expected to report a lint3969 when Rails.application.routes.url_helpers.help_page_url has multiple options3970 is expected to report a lint3971 when file path is wrong3972 is expected to report a lint3973 when haml ends with block definition3974 is expected to report a lint3975 when link with wrong file path is assigned to a variable3976 is expected to report a lint3977 when it is a broken code3978 is expected not to report a lint3979 when anchor belongs to a different element3980 is expected not to report a lint3981 when a simple Rails.application.routes.url_helpers.help_page_url3982 is expected to report a lint3983 when link is not a string3984 is expected not to report a lint3985 when link is a part of the tag3986 is expected to report a lint3987 when the second link is invalid3988 is expected to report a lint3989 behaves like link validation rules3990 when link_to points to the existing file path3991 is expected not to report a lint3992 when link_to points to the existing file with valid anchor3993 is expected not to report a lint3994 when link_to points to the existing file path without .md extension3995 is expected not to report a lint3996 when anchor is not correct3997 is expected to report a lint3998 when Gitlab::Routing.url_helpers.help_page_url has multiple options3999 is expected to report a lint4000 when file path is wrong4001 is expected to report a lint4002 when haml ends with block definition4003 is expected to report a lint4004 when link with wrong file path is assigned to a variable4005 is expected to report a lint4006 when it is a broken code4007 is expected not to report a lint4008 when anchor belongs to a different element4009 is expected not to report a lint4010 when a simple Gitlab::Routing.url_helpers.help_page_url4011 is expected to report a lint4012 when link is not a string4013 is expected not to report a lint4014 when link is a part of the tag4015 is expected to report a lint4016 when the second link is invalid4017 is expected to report a lint4018Metrics::Dashboard::Annotation4019 associations4020 is expected to belong to environment required: false inverse_of => metrics_dashboard_annotations4021 is expected to belong to cluster class_name => Clusters::Cluster required: false inverse_of => metrics_dashboard_annotations4022 validation4023 is expected to validate that :description cannot be empty/falsy4024 is expected to validate that :dashboard_path cannot be empty/falsy4025 is expected to validate that :starting_at cannot be empty/falsy4026 is expected to validate that the length of :dashboard_path is at most 2554027 is expected to validate that the length of :panel_xid is at most 2554028 is expected to validate that the length of :description is at most 2554029 orphaned annotation4030 is expected not to be valid4031 reports error about both missing relations4032 ending_at_after_starting_at4033 starting_at: Wed, 31 May 2023 00:00:00.000000000 UTC +00:00, ending_at: Thu, 01 Jun 2023 00:00:00.000000000 UTC +00:00, valid?: true, message: nil4034 is expected to equal true4035 starting_at: Thu, 01 Jun 2023 00:00:00.000000000 UTC +00:00, ending_at: nil, valid?: true, message: nil4036 is expected to equal true4037 starting_at: Thu, 01 Jun 2023 00:00:00.000000000 UTC +00:00, ending_at: Thu, 01 Jun 2023 00:00:00.000000000 UTC +00:00, valid?: true, message: nil4038 is expected to equal true4039 starting_at: Thu, 01 Jun 2023 00:00:00.000000000 UTC +00:00, ending_at: Wed, 31 May 2023 00:00:00.000000000 UTC +00:00, valid?: false, message: /Ending at can't be before starting_at time/4040 is expected to include /Ending at can't be before starting_at time/4041 starting_at: nil, ending_at: Wed, 31 May 2023 00:00:00.000000000 UTC +00:00, valid?: false, message: /Starting at can't be blank/4042 is expected to include /Starting at can't be blank/4043 starting_at: nil, ending_at: nil, valid?: false, message: /Starting at can't be blank/4044 is expected to include /Starting at can't be blank/4045 environments annotation4046 is expected to be valid4047 clusters annotation4048 is expected to be valid4049 annotation with shared ownership4050 reports error about both shared ownership4051 scopes4052 #after4053 returns only younger annotations4054 #before4055 returns only older annotations4056 #for_dashboard4057 returns annotations only for appointed dashboard4058 #ending_before4059 returns annotations only for appointed dashboard4060TreeHelper4061 #commit_in_single_accessible_branch4062 escapes HTML from the branch name4063 #vue_file_list_data4064 returns a list of attributes related to the project4065 #web_ide_button_data4066 returns a list of attributes related to the project4067 a blob is passed4068 returns edit url and webide url for the blob4069 does not load blob from repository again4070 nil blob is passed4071 does not load blob from repository4072 user does not have write access but a personal fork exists4073 includes forked project path as project_path4074 a blob is passed4075 returns edit url and web ide for the blob in the fork4076 for archived project4077 does not show any buttons4078 user has write access4079 includes original project path as project_path4080 a blob is passed4081 returns edit url and web ide for the blob in the fork4082 gitpod settings is enabled4083 has show_gitpod_button: true4084 has gitpod_enabled: true when user has enabled gitpod4085 has gitpod_enabled: false when user has not enabled gitpod4086 has show_gitpod_button: false when web ide button is not shown4087 .patch_branch_name4088 returns a patch branch name4089 without a current_user4090 returns nil4091DiffViewer::Base4092 .can_render?4093 when the extension is supported4094 when the binaryness matches4095 returns true4096 when the binaryness does not match4097 returns false4098 when the extension and file type are not supported4099 returns false4100 when the file was renamed and only the old blob is supported4101 returns false4102 #collapsed?4103 when the combined blob size is larger than the collapse limit4104 returns true4105 when the combined blob size is smaller than the collapse limit4106 returns false4107 #too_large?4108 when the combined blob size is larger than the size limit4109 returns true4110 when the blob size is smaller than the size limit4111 returns false4112 #render_error4113 when the combined blob size is larger than the size limit4114 returns :too_large4115 when the combined blob size is smaller than the size limit4116 returns nil4117 #render_error_message4118 returns nothing when no render_error4119 when render_error error4120 returns an error message4121 includes a "view the blob" link4122Gitlab::SidekiqMiddleware::DuplicateJobs::DuplicateJob4123 #schedule4124 behaves like scheduling with deduplication class4125 calls schedule on the strategy4126 when the deduplication depends on a FF4127 when the feature flag is enabled4128 behaves like scheduling with deduplication class4129DEPRECATION WARNING: Invalid Feature Flag my_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)4130 calls schedule on the strategy4131 when the feature flag is disabled4132 behaves like scheduling with deduplication class4133DEPRECATION WARNING: Invalid Feature Flag my_feature_flag stubbed (called from each at /builds/gitlab-org/gitlab/spec/support/helpers/stub_feature_flags.rb:39)4134 calls schedule on the strategy4135 #perform4136 calls perform on the strategy4137 with Redis cookies4138 #check!4139 when there was no job in the queue yet4140 is expected to eq "123"4141 adds the idempotency key to the jobs payload4142 when TTL option is not set4143 behaves like sets Redis keys with correct TTL4144 adds an idempotency key with correct ttl4145 when TTL option is set4146 behaves like sets Redis keys with correct TTL4147 adds an idempotency key with correct ttl4148 when there was already a job with same arguments in the same queue4149 is expected to eq "existing-jid"4150 does not change the existing key's TTL4151 sets the existing jid4152 #update_latest_wal_location!4153 stores a wal location to redis with an offset relative to existing wal location4154 UPDATE_WAL_COOKIE_SCRIPT4155 does not create the key4156 when the key exists4157 updates all connections4158 preserves the ttl4159 and low offsets4160 updates only some connections4161 #latest_wal_locations4162 when job was deduplicated and wal locations were already persisted4163 is expected to eq {"ci"=>"def", "main"=>"abc"}4164 when job is not deduplication and wal locations were not persisted4165 is expected to be empty4166 #delete!4167 when we didn't track the definition4168 is expected not to raise Exception4169 when the key exists in redis4170 when the idempotency key is not part of the job4171 recalculates the idempotency hash4172 behaves like deleting the duplicate job4173 behaves like deleting keys from redis4174 removes the cookie key from redis4175 when the idempotency key is part of the job4176 does not recalculate the idempotency hash4177 behaves like deleting the duplicate job4178 behaves like deleting keys from redis4179 removes the cookie key from redis4180 #set_deduplicated_flag!4181 when the job is reschedulable4182 sets the key in Redis4183 sets, gets and cleans up the deduplicated flag4184 when the job is not reschedulable4185 does not set the key in Redis4186 does not set the deduplicated flag4187 #duplicate?4188 raises an error if the check wasn't performed4189 returns false if the existing jid equals the job jid4190 returns true if the existing jid is different from the job jid4191 #scheduled?4192 returns false for non-scheduled jobs4193 scheduled jobs4194 returns true4195 #reschedule4196 reschedules the current job4197 #should_reschedule?4198 when the job is reschedulable4199 is expected to eq false4200 with deduplicated flag4201 is expected to eq true4202 when the job is not reschedulable4203 is expected to eq false4204 with deduplicated flag4205 is expected to eq false4206 #scheduled_at4207 returns when the job is scheduled at4208 #options4209 returns worker options4210 #idempotent?4211 when worker class does not exist4212 returns false4213 when worker class does not respond to #idempotent?4214 returns false4215 when worker class is not idempotent4216 returns false4217 when worker class is idempotent4218 returns true4219 when worker class is utilizing load balancing capabilities4220 returns true4221Gitlab::Prometheus::Queries::AdditionalMetricsEnvironmentQuery4222 queries using specific time4223 metrics query context4224 project has Kubernetes service4225 when user configured kubernetes from CI/CD > Clusters4226 query context contains kube_namespace4227 behaves like query context containing environment slug and filter4228 contains ci_environment_slug4229 contains environment filter4230 project without Kubernetes service4231 query context contains empty kube_namespace4232 behaves like query context containing environment slug and filter4233 contains ci_environment_slug4234 contains environment filter4235 with one group where two metrics is found4236 when some queries return results4237 return group data only for queries with results4238 with two groups with one metric each4239 when both queries return results4240 return group data both queries4241 when one query returns result4242 return group data only for query with results4243 when start and end time parameters are provided4244 as unix timestamps4245 queries using the provided times4246 as Date/Time objects4247 queries using the provided times converted to unix4248Mutations::DesignManagement::Upload4249 #resolve4250 when the feature is not available4251 behaves like resource not available4252 raises an error4253 when the feature is available4254 contention in the design repo4255 running requests in parallel4256 does not cause errors4257 running requests in parallel on different issues4258 does not cause errors4259 running requests in serial4260 does not cause errors4261 when the user is not allowed to upload designs4262 behaves like resource not available4263 raises an error4264 with a valid design4265 returns the updated designs4266 when passing an invalid project4267 behaves like resource not available4268 raises an error4269 when passing an invalid issue4270 behaves like resource not available4271 raises an error4272 when creating designs causes errors4273 wraps the errors4274MergeRequest::Metrics4275 associations4276 is expected to belong to merge_request required: false4277 is expected to belong to target_project class_name => Project required: false4278 is expected to belong to latest_closed_by class_name => User required: false4279 is expected to belong to merged_by class_name => User required: false4280 scopes4281 .merged_after4282 finds the record4283 doesn't include record outside of the filter4284 .merged_before4285 finds the record4286 doesn't include record outside of the filter4287 .by_target_project4288 finds metrics record with the associated target project4289 behaves like cleanup by a loose foreign key4290 cleans up (delete or nullify) the model4291 update4292 when pipeline_id is nullified4293 nullifies build related columns via DB trigger4294 when updated but pipeline_id is not nullified4295 does not nullify build related columns4296 behaves like database events tracking batch 24297 behaves like database events tracking4298 events tracking4299 #create4300 behaves like Snowplow event tracking4301 is emitted4302 #update4303 behaves like Snowplow event tracking4304 is emitted4305 #destroy4306 behaves like Snowplow event tracking4307 is emitted4308Gitlab::ImportExport::MergeRequestParser4309 has a source branch4310 has a target branch4311 fork merge request4312 parses a MR that has no source branch4313 parses a MR that is closed4314 parses a MR that is merged4315 when the merge request has diffs4316 when the diff is invalid4317 sets the diff to empty diff4318Clusters::ClusterPresenter4319 inherits from Gitlab::View::Presenter::Delegated4320 #initialize4321 takes a cluster and optional params4322 exposes cluster4323 forwards missing methods to cluster4324 #provider_label4325 AWS provider4326 is expected to eq "Elastic Kubernetes Service"4327 GCP provider4328 is expected to eq "Google Kubernetes Engine"4329 #provider_management_url4330 AWS provider4331 is expected to include "us-east-1"4332 is expected to include "test-cluster"4333 GCP provider4334 is expected to include "us-central1-a"4335 is expected to include "test-cluster"4336 #show_path4337 project_type cluster4338 is expected to eq "/namespace694/project-779/-/clusters/57"4339 group_type cluster4340 is expected to eq "/groups/group203/-/clusters/60"4341 instance_type cluster4342 is expected to eq "/admin/clusters/63"4343 #read_only_kubernetes_platform_fields?4344 with a user-provided cluster4345 is expected to be falsy4346 with a GCP-provided cluster4347 is expected to be truthy4348 #health_data4349 with project cluster4350 behaves like cluster health data4351 is expected to include {:"clusters-path" => "/namespace695/project-780/-/clusters", :"dashboard-endpoint" => "/namespace695/project-780/-/clusters/66/metrics_dashboard", :"documentation-path" => "/help/user/infrastructure/clusters/manage/clusters_health", :"add-dashboard-documentation-path" => "/help/operations/metrics/dashboards/index.md#add-a-new-dashboard-to-your-project", :"empty-getting-started-svg-path" => (match asset path "/assets/illustrations/monitoring/getting_started.svg"), :"empty-loading-svg-path" => (match asset path "/assets/illustrations/monitoring/loading.svg"), :"empty-no-data-svg-path" => (match asset path "/assets/illustrations/monitoring/no_data.svg"), :"empty-no-data-small-svg-path" => (match asset path "illustrations/chart-empty-state-small.svg"), :"empty-unable-to-connect-svg-path" => (match asset path "/assets/illustrations/monitoring/unable_to_connect.svg"), :"settings-path" => "", :"project-path" => "", :"tags-path" => ""}4352 with group cluster4353 behaves like cluster health data4354 is expected to include {:"clusters-path" => "/groups/group204/-/clusters", :"dashboard-endpoint" => "/groups/group204/-/clusters/69/metrics_dashboard", :"documentation-path" => "/help/user/infrastructure/clusters/manage/clusters_health", :"add-dashboard-documentation-path" => "/help/operations/metrics/dashboards/index.md#add-a-new-dashboard-to-your-project", :"empty-getting-started-svg-path" => (match asset path "/assets/illustrations/monitoring/getting_started.svg"), :"empty-loading-svg-path" => (match asset path "/assets/illustrations/monitoring/loading.svg"), :"empty-no-data-svg-path" => (match asset path "/assets/illustrations/monitoring/no_data.svg"), :"empty-no-data-small-svg-path" => (match asset path "illustrations/chart-empty-state-small.svg"), :"empty-unable-to-connect-svg-path" => (match asset path "/assets/illustrations/monitoring/unable_to_connect.svg"), :"settings-path" => "", :"project-path" => "", :"tags-path" => ""}4355Gitlab::Graphql::Queries4356 Gitlab::Graphql::Queries::Fragments4357 has the right home4358 has the right EE home4359 caches query definitions4360 .all4361 is the combination of finding queries in CE and EE4362 .find4363 find a single specific file4364 ignores files that do not exist4365 ignores fragments4366 ignores typedefs4367 ignores customer.query.graphql4368 ignores customer.mutation.graphql4369 finds all query definitions under a root directory4370 Gitlab::Graphql::Queries::Definition4371 a simple query4372 has a complexity4373 behaves like a valid GraphQL query for the blog schema4374 is valid4375 a query with an import4376 behaves like a valid GraphQL query for the blog schema4377 is valid4378 a query with duplicate imports4379 behaves like a valid GraphQL query for the blog schema4380 is valid4381 a query importing from ee_else_ce4382 can resolve the ee fields4383 behaves like a valid GraphQL query for the blog schema4384 is valid4385 a query refering to parent directories4386 behaves like a valid GraphQL query for the blog schema4387 is valid4388 a query refering to parent directories, incorrectly4389 behaves like an invalid GraphQL query for the blog schema4390 is invalid4391 a query with a broken import4392 behaves like an invalid GraphQL query for the blog schema4393 is invalid4394 a query which imports a file with a broken import4395 behaves like an invalid GraphQL query for the blog schema4396 is invalid4397 a query containing a client directive4398 is tagged as a client query4399 behaves like a valid GraphQL query for the blog schema4400 is valid4401 a mixed client query, valid4402 is not tagged as a client query4403 behaves like a valid GraphQL query for the blog schema4404 is valid4405 a mixed client query, with skipped argument4406 behaves like a valid GraphQL query for the blog schema4407 is valid4408 a mixed client query, with unused fragment4409 behaves like a valid GraphQL query for the blog schema4410 is valid4411 a client query, with unused fragment4412 is tagged as a client query4413 behaves like a valid GraphQL query for the blog schema4414 is valid4415 a mixed client query, invalid4416 behaves like an invalid GraphQL query for the blog schema4417 is invalid4418 a query containing a connection directive4419 behaves like a valid GraphQL query for the blog schema4420 is valid4421 a query which mentions an incorrect field4422 behaves like an invalid GraphQL query for the blog schema4423 is invalid4424 a query which has a missing argument4425 behaves like an invalid GraphQL query for the blog schema4426 is invalid4427 a query which has a bad argument4428 behaves like an invalid GraphQL query for the blog schema4429 is invalid4430 a query which has a syntax error4431 behaves like an invalid GraphQL query for the blog schema4432 is invalid4433 a query which has an unused import4434 behaves like an invalid GraphQL query for the blog schema4435 is invalid4436 a query containing a persist directive4437 is tagged as a client query4438 behaves like a valid GraphQL query for the blog schema4439 is valid4440 a query containing a persistantly directive4441 is not tagged as a client query4442 a query containing a persist field4443 behaves like a valid GraphQL query for the blog schema4444 is valid4445Gitlab::ApplicationContext4446 .with_context4447 yields the block4448 passes the expected context on to labkit4449 raises an error when passing invalid options4450 .with_raw_context4451 yields the block4452 passes the attributes unaltered on to labkit4453 .push4454 passes the expected context on to labkit4455 raises an error when passing invalid options4456 .current_context_include?4457 returns true if the key was present in the context4458 returns false if the key was not present in the current context4459 .current_context_attribute4460 returns the raw attribute value4461 returns the attribute value with meta prefix4462 returns nil if the key was not present in the current context4463 #to_lazy_hash4464 does not call the attributes until needed4465 correctly loads the expected values when they are wrapped in a block4466 correctly loads the expected values when passed directly4467 falls back to a projects namespace when a project is passed but no namespace4468 contains known keys4469 setting the client4470 provided_options: [:remote_ip], client: :remote_ip4471 sets the client_id to the expected value4472 provided_options: [:remote_ip, :runner], client: :runner4473 sets the client_id to the expected value4474 provided_options: [:remote_ip, :runner, :user], client: :runner4475 sets the client_id to the expected value4476 provided_options: [:remote_ip, :user], client: :user4477 sets the client_id to the expected value4478 provided_options: [:job], client: :user4479 sets the client_id to the expected value4480 when using a runner project4481 sets project path from runner project4482 when the runner serves multiple projects4483 does not set project path4484 when using an instance runner4485 does not sets project path4486 when using job context4487 sets expected values4488 #use4489 yields control4490 passes the expected context on to labkit4491 does not cause queries4492ApplicationExperiment4493 registers a default control behavior for anonymous experiments4494 #publish4495 tracks the assignment4496 adds to the published experiments4497 #track4498 doesn't track if we shouldn't track4499 tracks the event with the expected arguments and merged contexts4500 when using known context resources4501 includes those using the gitlab standard context4502 falls back to using the group key4503 with the actor key4504 provides it to the tracking call as the user4505 handles when it's not a user record4506 #key_for4507 generates FIPS compliant SHA2 hashes4508 falls back to legacy MD5 when FIPS isn't forced4509 #process_redirect_url4510 generates the correct urls based on where the engine was mounted4511 url: "https://about.gitlab.com/", processed_url: "https://about.gitlab.com/"4512 returns the url or nil if invalid on SaaS4513 considers all urls invalid when not on SaaS4514 url: "https://gitlab.com/", processed_url: "https://gitlab.com/"4515 returns the url or nil if invalid on SaaS4516 considers all urls invalid when not on SaaS4517 url: "http://docs.gitlab.com", processed_url: "http://docs.gitlab.com"4518 returns the url or nil if invalid on SaaS4519 considers all urls invalid when not on SaaS4520 url: "https://docs.gitlab.com/some/path?foo=bar", processed_url: "https://docs.gitlab.com/some/path?foo=bar"4521 returns the url or nil if invalid on SaaS4522 considers all urls invalid when not on SaaS4523 url: "http://badgitlab.com", processed_url: nil4524 returns the url or nil if invalid on SaaS4525 considers all urls invalid when not on SaaS4526 url: "https://gitlab.com.nefarious.net", processed_url: nil4527 returns the url or nil if invalid on SaaS4528 considers all urls invalid when not on SaaS4529 url: "https://unknown.gitlab.com", processed_url: nil4530 returns the url or nil if invalid on SaaS4531 considers all urls invalid when not on SaaS4532 url: "https://badplace.com\nhttps://gitlab.com", processed_url: nil4533 returns the url or nil if invalid on SaaS4534 considers all urls invalid when not on SaaS4535 url: "https://gitlabbcom", processed_url: nil4536 returns the url or nil if invalid on SaaS4537 considers all urls invalid when not on SaaS4538 url: "https://gitlabbcom/", processed_url: nil4539 returns the url or nil if invalid on SaaS4540 considers all urls invalid when not on SaaS4541 url: "http://gdk.test/foo/bar", processed_url: "http://gdk.test/foo/bar"4542 returns the url or nil if invalid on SaaS4543 considers all urls invalid when not on SaaS4544 url: "http://localhost:3000/foo/bar", processed_url: "http://localhost:3000/foo/bar"4545 returns the url or nil if invalid on SaaS4546 considers all urls invalid when not on SaaS4547 when resolving variants4548 returns an assigned name4549 when nesting experiments4550 doesn't raise an exception4551 tracks an event4552 when caching4553 caches the variant determined by the variant resolver4554 doesn't cache a variant if we don't explicitly provide one4555 caches a control variant if we assign it specifically4556 arbitrary attributes4557 sets and gets attributes about an experiment4558 increments a value for an experiment4559 with deprecation warnings4560 doesn't warn on non dev/test environments4561 warns on dev and test environments4562Mutations::Issues::SetConfidential4563 is expected to require graphql authorizations :update_issue4564 #resolve4565 behaves like permission level for issue mutation is correctly verified4566 when the user is not a project member4567 behaves like when the user does not have access to the resource4568 raises an error4569 even if assigned to the issue4570 does not modify issue4571 even if author of the issue4572 does not modify issue4573 when the user is a project member4574 with guest role4575 behaves like when the user does not have access to the resource4576 raises an error4577 even if assigned to the issue4578 does not modify issue4579 even if author of the issue4580 does not modify issue4581 when the user can update the issue4582 returns the issue as confidential4583 when passing confidential as false4584 updates the issue confidentiality to false4585 when guest user is an assignee4586 does not change issue confidentiality4587SystemNotes::CommitService4588 #add_commits4589 behaves like a system note4590 has the correct attributes4591 note body4592 comparison diff link line4593 adds the comparison text4594 without existing commits4595 adds a message header4596 adds a message for each commit4597 with HTML content4598 escapes HTML titles4599 with one commit exceeding the NEW_COMMIT_DISPLAY_LIMIT4600 includes the truncated new commits summary4601 with oldrev4602 includes the truncated new commits summary with the oldrev4603 with multiple commits exceeding the NEW_COMMIT_DISPLAY_LIMIT4604 includes the truncated new commits summary4605 with oldrev4606 includes the truncated new commits summary with the oldrev4607 summary line for existing commits4608 with one existing commit4609 includes the existing commit4610 with new commits exceeding the display limit4611 includes the existing commit as well as the truncated new commit summary4612 with multiple existing commits4613 with oldrev4614 includes a commit range and count4615 with new commits exceeding the display limit4616 includes the existing commit as well as the truncated new commit summary4617 without oldrev4618 includes a commit range and count4619 with new commits exceeding the display limit4620 includes the existing commit as well as the truncated new commit summary4621 on a fork4622 includes the project namespace4623 #tag_commit4624 sets the note text4625 behaves like a system note4626 has the correct attributes4627Gitlab4628 delegates root to GitlabEdition4629 delegates extensions to GitlabEdition4630 delegates ee? to GitlabEdition4631 delegates jh? to GitlabEdition4632 delegates ee to GitlabEdition4633 delegates jh to GitlabEdition4634 .revision4635 when a REVISION file exists4636 returns the actual Git revision4637 memoizes the revision4638 when no REVISION file exist4639 when the Git command succeeds4640 returns the actual Git revision4641 when the Git command fails4642 returns "Unknown"4643 .com?4644 is true when GITLAB_SIMULATE_SAAS is true and in development4645 is false when GITLAB_SIMULATE_SAAS is true and in test4646 when not simulating SaaS4647 is true when on https://gitlab.com4648 is true when on https://staging.gitlab.com4649 is true when on other gitlab subdomain4650 is true when on other gitlab subdomain with hyphen4651 is false when not on GitLab.com4652 .com_except_jh?4653 com?: true, jh?: true, expected: false4654 is expected to eq false4655 com?: true, jh?: false, expected: true4656 is expected to eq true4657 com?: false, jh?: true, expected: false4658 is expected to eq false4659 com?: false, jh?: false, expected: false4660 is expected to eq false4661 .com4662 when on GitLab.com4663 is expected to equal true4664 when not on GitLab.com4665 is expected to be nil4666 .staging?4667 is false when on https://gitlab.com4668 is true when on https://staging.gitlab.com4669 is false when not on staging4670 .canary?4671 is true when CANARY env var is set to true4672 is false when CANARY env var is set to false4673 .com_and_canary?4674 is true when on .com and canary4675 is false when on .com but not on canary4676 .com_but_not_canary?4677 is false when on .com and canary4678 is true when on .com but not on canary4679 .org_or_com?4680 is true when on .com4681 is true when org4682 is false when not dev, org or com4683 .simulate_com?4684 when GITLAB_SIMULATE_SAAS is true4685 is false when test env4686 is true when dev env4687 is false when env is not dev4688 when GITLAB_SIMULATE_SAAS is false4689 is false when test env4690 is false when dev env4691 is false when env is not dev or test4692 .dev_or_test_env?4693 is true when test env4694 is true when dev env4695 is false when env is not dev or test4696 .http_proxy_env?4697 returns true when lower case https4698 returns true when upper case https4699 returns true when lower case http4700 returns true when upper case http4701 returns false when not set4702 .maintenance_mode?4703 returns true when maintenance mode is enabled4704 returns false when maintenance mode is disabled4705 returns false when maintenance mode column is not present4706Resolvers::GroupMilestonesResolver4707 #resolve4708 calls MilestonesFinder#execute4709 without parameters4710 calls MilestonesFinder to retrieve all milestones4711 with parameters4712 timeframe argument4713 by ids4714 calls MilestonesFinder with correct parameters4715 by sort4716 calls MilestonesFinder with correct parameters4717 uses offset-pagination when sorting by expired_last_due_date_asc4718 uses offset-pagination when sorting by expired_last_due_date_desc4719 by timeframe4720 when timeframe start and end are present4721 when start is after end4722 raises error4723 when including descendant milestones in a public group4724 finds milestones only in accessible projects and groups4725 include_descendants and include_ancestors4726 when including neither ancestor or descendant milestones in a public group4727 finds milestones only in accessible projects and groups4728 when including descendant milestones in a public group4729 finds milestones only in accessible projects and groups4730 when including ancestor milestones in a public group4731 finds milestones only in accessible projects and groups4732 when including both ancestor or descendant milestones in a public group4733 finds milestones only in accessible projects and groups4734WorkItems::TaskListReferenceRemovalService4735 #execute4736 when task mardown spans a single line4737 behaves like successful work item task reference removal service4738 is expected to be success4739 removes the task list item containing the task reference4740 creates system notes4741 when description does not contain a task4742 behaves like failing work item task reference removal service4743 is expected to be error4744 does not change the work item description4745 returns an error message4746 when description reference does not exactly match the task reference4747 behaves like failing work item task reference removal service4748 is expected to be error4749 does not change the work item description4750 returns an error message4751 when task mardown spans multiple lines4752 behaves like successful work item task reference removal service4753 is expected to be success4754 removes the task list item containing the task reference4755 creates system notes4756 when updating the work item fails4757 behaves like failing work item task reference removal service4758 is expected to be error4759 does not change the work item description4760 returns an error message4761 when description is empty4762 behaves like failing work item task reference removal service4763 is expected to be error4764 does not change the work item description4765 returns an error message4766 when line_number_start is lower than 14767 behaves like failing work item task reference removal service4768 is expected to be error4769 does not change the work item description4770 returns an error message4771 when line_number_end is lower than line_number_start4772 behaves like failing work item task reference removal service4773 is expected to be error4774 does not change the work item description4775 returns an error message4776 when lock_version is older than current4777 behaves like failing work item task reference removal service4778 is expected to be error4779 does not change the work item description4780 returns an error message4781 when work item is stale before updating4782 behaves like failing work item task reference removal service4783 is expected to be error4784 does not change the work item description4785 returns an error message4786Gitlab::Database::QueryAnalyzers::PreventCrossDatabaseModification4787 context and suppress key names4788 .context_key4789 contains class name4790 .suppress_key4791 contains class name4792 when CI and other tables are read in a transaction4793 outside transaction4794 is expected not to raise Exception4795 within Project transaction4796 is expected not to raise Exception4797 within nested Project transaction4798 is expected not to raise Exception4799 outside transaction4800 is expected not to raise Exception4801 within Ci::Pipeline transaction4802 is expected not to raise Exception4803 within nested Ci::Pipeline transaction4804 is expected not to raise Exception4805 when only CI data is modified4806 outside transaction4807 is expected not to raise Exception4808 within Ci::Pipeline transaction4809 is expected not to raise Exception4810 within nested Ci::Pipeline transaction4811 is expected not to raise Exception4812 within Project transaction4813 raises error4814 when other data is modified4815 outside transaction4816 is expected not to raise Exception4817 within Project transaction4818 is expected not to raise Exception4819 within nested Project transaction4820 is expected not to raise Exception4821 within Ci::Pipeline transaction4822 raises error4823 when both CI and other data is modified4824 outside transaction4825 is expected not to raise Exception4826 when data modification happens in a transaction4827 within Project transaction4828 raises error4829 when ci_pipelines are ignored for cross modification4830 does not raise error4831 when data modification happens in nested transactions4832 raises error, with the generated sql queries included4833 when comments are added to the front of query strings4834 within Project transaction4835 raises error4836 when executing a SELECT FOR UPDATE query4837 outside transaction4838 is expected not to raise Exception4839 when data modification happens in a transaction4840 within Project transaction4841 raises error4842 when the modification is inside a factory save! call4843 does not raise an error4844 when CI association is modified through project4845 outside transaction4846 is expected not to raise Exception4847 within Ci::Pipeline transaction4848 is expected not to raise Exception4849 within nested Ci::Pipeline transaction4850 is expected not to raise Exception4851 within Project transaction4852 raises error4853 .allow_cross_database_modification_within_transaction4854 skips raising error4855 skips raising error on factory creation4856 when execution is rescued with StandardError4857 raises cross-database data modification exception4858 when uniquiness validation is tested4859 does not raise exceptions4860 when doing rollback in a suppressed block4861 does not raise misaligned transactions exception4862Mutations::MergeRequests::Create4863 #resolve4864 when user is not a project member4865 behaves like resource not available4866 raises an error4867 when user is a direct project member4868 and user is a guest4869 behaves like resource not available4870 raises an error4871 and user is a developer4872 creates a new merge request4873 returns a new merge request4874 when optional description field is set4875 returns a new merge request with a description4876 when optional labels field is set4877 returns a new merge request with labels4878 when service cannot create a merge request4879 does not create a new merge request4880 returns errors4881 when user is an inherited member from the group4882 when project is public with private merge requests4883 and user is a guest4884 behaves like resource not available4885 raises an error4886 when project is private4887 and user is a guest4888 behaves like resource not available4889 raises an error4890ReviewApps::AutomatedCleanup4891 # order random4892 .parse_args4893 when no arguments are provided4894 returns the default options4895 --dry-run4896 when no DRY_RUN variable is provided4897 raises an error4898 when the DRY_RUN variable is not set to true4899 returns the default options4900 when the DRY_RUN variable is set to true4901 returns the correct dry_run value4902 when the short version of the flag is used4903 returns the correct dry_run value4904 #perform_helm_releases_cleanup!4905 behaves like the days argument is an integer in the correct range4906 when days is nil4907 raises an error4908 when days is zero4909 raises an error4910 when days is above 3654911 raises an error4912 when days is a string4913 does not raise an error4914 when days is a float4915 does not raise an error4916 when the helm release is not a review-app release4917 behaves like does not delete the helm release4918 does not delete the helm release4919 does not delete the associated k8s namespace4920 when the helm release is a review-app release4921 when the helm release was deployed recently enough4922 when the helm release is in failed state4923 behaves like deletes the helm release4924 deletes the helm release4925 deletes the associated k8s namespace4926 when the dry-run flag is true4927 behaves like does nothing on a dry run4928 behaves like does not delete the helm release4929 does not delete the helm release4930 does not delete the associated k8s namespace4931 when the helm release is not in failed state4932 behaves like does not delete the helm release4933 does not delete the helm release4934 does not delete the associated k8s namespace4935 when the helm release was deployed a while ago4936 when the helm release is in failed state4937 behaves like deletes the helm release4938 deletes the helm release4939 deletes the associated k8s namespace4940 when the helm release is not in failed state4941 behaves like deletes the helm release4942 deletes the helm release4943 deletes the associated k8s namespace4944 #perform_stale_namespace_cleanup!4945 performs Kubernetes cleanup for review apps namespaces4946 behaves like the days argument is an integer in the correct range4947 when days is nil4948 raises an error4949 when days is zero4950 raises an error4951 when days is above 3654952 raises an error4953 when days is a string4954 does not raise an error4955 when days is a float4956 does not raise an error4957 when the dry-run flag is true4958 does not delete anything4959JiraImport::StartImportService4960 when an error is returned from the project validation4961 behaves like responds with error4962 returns error4963 when project validation is ok4964 when Jira project key is not provided4965 behaves like responds with error4966 returns error4967 when correct data provided4968 when import is already running4969 behaves like responds with error4970 returns error4971 when an error is raised while scheduling import4972 saves the error message4973 behaves like responds with error4974 returns error4975 when everything is ok4976 with complete mapping4977 returns success response4978 schedules Jira import4979 creates Jira import data4980 creates Jira import label4981 creates Jira label title with correct number4982 when mapping is nil4983 returns success response4984 when no mapping value is complete4985 returns success response4986 when multiple Jira imports for same Jira project4987 creates Jira label title with correct number4988Lfs::LocksFinderService4989 #execute4990 find by id4991 with results4992 returns the record4993 without results4994 returns an empty list4995 find by path4996 with results4997 returns the record4998 without results4999 returns an empty list5000 find all5001 with results5002 returns all the records5003 without results5004 returns an empty list5005 when an error is raised5006 doesn't succeed5007Metrics::Dashboard::AnnotationPolicy5008 rules5009 environments annotation5010 behaves like metrics dashboard annotation policy5011 when guest5012 is expected to be disallowed :read_metrics_dashboard_annotation5013 is expected to be disallowed :admin_metrics_dashboard_annotation5014 when reporter5015 is expected to be allowed :read_metrics_dashboard_annotation5016 is expected to be disallowed :admin_metrics_dashboard_annotation5017 when developer5018 is expected to be allowed :read_metrics_dashboard_annotation5019 is expected to be allowed :admin_metrics_dashboard_annotation5020 when maintainer5021 is expected to be allowed :read_metrics_dashboard_annotation5022 is expected to be allowed :admin_metrics_dashboard_annotation5023 cluster annotation5024 behaves like metrics dashboard annotation policy5025 when guest5026 is expected to be disallowed :read_metrics_dashboard_annotation5027 is expected to be disallowed :admin_metrics_dashboard_annotation5028 when reporter5029 is expected to be allowed :read_metrics_dashboard_annotation5030 is expected to be disallowed :admin_metrics_dashboard_annotation5031 when developer5032 is expected to be allowed :read_metrics_dashboard_annotation5033 is expected to be allowed :admin_metrics_dashboard_annotation5034 when maintainer5035 is expected to be allowed :read_metrics_dashboard_annotation5036 is expected to be allowed :admin_metrics_dashboard_annotation5037Gitlab::Redis::FeatureFlag5038 # order random5039 behaves like redis_shared_examples5040 .config_file_name5041 when there is no config file anywhere5042 is expected to be nil5043 .store5044 with old format5045 behaves like redis store5046 instantiates Redis::Store5047 with the namespace5048 uses specified namespace5049 with new format5050 behaves like redis store5051 instantiates Redis::Store5052 with the namespace5053 uses specified namespace5054 .params5055 withstands mutation5056 when url contains unix socket reference5057 with old format5058 returns path key instead5059 with new format5060 returns path key instead5061 when url is host based5062 with old format5063 returns hash with host, port, db, and password5064 with new format5065 rails_env: "development", host: "development-host"5066 returns hash with host, port, db, and password5067 rails_env: "test", host: "test-host"5068 returns hash with host, port, db, and password5069 rails_env: "production", host: "production-host"5070 returns hash with host, port, db, and password5071 with redis cluster format5072 rails_env: "development", host: "development-master"5073 returns hash with cluster and password5074 rails_env: "test", host: "test-master"5075 returns hash with cluster and password5076 rails_env: "production", host: "production-master"5077 returns hash with cluster and password5078 .url5079 withstands mutation5080 when yml file with env variable5081 reads redis url from env variable5082 .version5083 returns a version5084 .with5085 when running on single-threaded runtime5086 instantiates a connection pool with size 55087 when running on multi-threaded runtime5088 instantiates a connection pool with a size based on the concurrency of the worker5089 when there is no config at all5090 can run an empty block5091 #db5092 with old format5093 returns the correct db5094 with new format5095 returns the correct db5096 with cluster-mode5097 returns the correct db5098 #sentinels5099 when sentinels are defined5100 rails_env: "development", hosts: ["development-replica1", "development-replica2"]5101 returns an array of hashes with host and port keys5102 rails_env: "test", hosts: ["test-replica1", "test-replica2"]5103 returns an array of hashes with host and port keys5104 rails_env: "production", hosts: ["production-replica1", "production-replica2"]5105 returns an array of hashes with host and port keys5106 when sentinels are not defined5107 returns nil5108 when cluster is defined5109 returns nil5110 #sentinels?5111 when sentinels are defined5112 returns true5113 when sentinels are not defined5114 is expected to eq nil5115 when cluster is defined5116 returns false5117 #raw_config_hash5118 returns old-style single url config in a hash5119 returns cluster config without url key in a hash5120 #fetch_config5121 raises an exception when the config file contains invalid yaml5122 when redis.yml exists5123 uses config/redis.yml5124 when no config file exsits5125 returns nil5126 when resque.yml exists5127 returns the config from resque.yml5128 .cache_store5129 has a default ttl of 1 hour5130 #fetch_config5131 when redis.yml exists5132 when the fallback has a redis.yml entry5133 is expected to eq {"fallback redis.yml"=>123}5134 and an instance config file exists5135 is expected to eq {"instance specific file"=>456}5136 and the instance has a redis.yml entry5137 is expected to eq {"instance redis.yml"=>789}5138 when no redis config file exsits5139 returns nil5140 when resque.yml exists5141 returns the config from resque.yml5142Mutations::Issues::Create5143 is expected to require graphql authorizations :create_issue5144 #resolve5145 when the user does not have permission to create an issue5146 raises an error5147 when the user has exceeded the rate limit5148 raises an error5149 when the user can create an issue5150 when creating an issue a developer5151 creates issue with correct values5152 when passing in label_ids5153 creates issue with correct values5154 when trying to create issue with restricted params5155 ignores the special params5156 when creating a non-default issue type5157 creates issue with correct values5158 when creating an issue as owner5159 sets the special params5160 #ready?5161 when passing in both labels and label_ids5162 raises exception when mutually exclusive params are given5163 when passing only `discussion_to_resolve` param5164 raises exception when mutually exclusive params are given5165 when passing only `merge_request_to_resolve_discussions_of` param5166 raises exception when mutually exclusive params are given5167Gitlab::Ci::Status::Build::Retryable5168 #text5169 does not override status text5170 #icon5171 does not override status icon5172 #label5173 does not override status label5174 #group5175 does not override status group5176 #status_tooltip5177 does not override status status_tooltip5178 #badge_tooltip5179 does return status5180 action details5181 #has_action?5182 when user is allowed to update build5183 is expected to have action5184 when user is not allowed to update build5185 is expected not to have action5186 #action_path5187 is expected to include "20/retry"5188 #action_icon5189 is expected to eq "retry"5190 #action_title5191 is expected to eq "Retry"5192 #action_button_title5193 is expected to eq "Retry this job"5194 .matches?5195 when build is retryable5196 is a correct match5197 when build is not retryable5198 does not match5199Sidebars::Projects::Menus::RepositoryMenu5200 #render?5201 when project repository is empty5202 returns false5203 when project repository is not empty5204 when user can download code5205 returns true5206 when user cannot download code5207 returns false5208 for menu items5209 Files5210 behaves like repository menu item with different super sidebar title5211 is expected to eq "Files"5212 when inside the super sidebar5213 is expected to eq "Repository"5214 Commits5215 behaves like repository menu item link for5216 ref_type: nil, link: lazy { "#{route}?ref_type=heads" }5217 has a link with the fully qualifed ref route5218 ref_type: "heads", link: lazy { "#{route}?ref_type=heads" }5219 has a link with the fully qualifed ref route5220 ref_type: "tags", link: lazy { "#{route}?ref_type=tags" }5221 has a link with the fully qualifed ref route5222 when ref is not the default5223 and ref_type is not provided5224 is expected to eq "/namespace760/project-840/-/commits/nonmain"5225 and ref_type is provided5226 is expected to eq "/namespace760/project-840/-/commits/nonmain?ref_type=heads"5227 Contributor statistics5228 when analytics is disabled5229 is expected to be nil5230 when analytics is enabled5231 behaves like repository menu item link for5232 ref_type: nil, link: lazy { "#{route}?ref_type=heads" }5233 has a link with the fully qualifed ref route5234 ref_type: "heads", link: lazy { "#{route}?ref_type=heads" }5235 has a link with the fully qualifed ref route5236 ref_type: "tags", link: lazy { "#{route}?ref_type=tags" }5237 has a link with the fully qualifed ref route5238 when ref is not the default5239 and ref_type is not provided5240 is expected to eq "/namespace760/project-840/-/graphs/nonmain"5241 and ref_type is provided5242 is expected to eq "/namespace760/project-840/-/graphs/nonmain?ref_type=heads"5243 Network5244 behaves like repository menu item link for5245 ref_type: nil, link: lazy { "#{route}?ref_type=heads" }5246 has a link with the fully qualifed ref route5247 ref_type: "heads", link: lazy { "#{route}?ref_type=heads" }5248 has a link with the fully qualifed ref route5249 ref_type: "tags", link: lazy { "#{route}?ref_type=tags" }5250 has a link with the fully qualifed ref route5251 when ref is not the default5252 and ref_type is not provided5253 is expected to eq "/namespace760/project-840/-/network/nonmain"5254 and ref_type is provided5255 is expected to eq "/namespace760/project-840/-/network/nonmain?ref_type=heads"5256 behaves like repository menu item with different super sidebar title5257 is expected to eq "Graph"5258 when inside the super sidebar5259 is expected to eq "Repository graph"5260PageLayoutHelper5261 page_description5262 defaults to nil5263 returns the last-pushed description5264 squishes multiple newlines5265 truncates5266 sanitizes all HTML5267 truncates before sanitizing5268 page_image5269 defaults to the GitLab logo5270 with @project assigned5271 uses Project avatar full url5272 when avatar_url is nil5273 falls back to the default when avatar_url is nil5274 with no assignments5275 falls back to the default5276 with @user assigned5277 uses User avatar full url5278 when avatar_url is nil5279 falls back to the default when avatar_url is nil5280 with no assignments5281 falls back to the default5282 with @group assigned5283 uses Group avatar full url5284 when avatar_url is nil5285 falls back to the default when avatar_url is nil5286 with no assignments5287 falls back to the default5288 page_card_attributes5289 raises ArgumentError when given more than two attributes5290 rejects blank values5291 page_card_meta_tags5292 returns the twitter:label and twitter:data tags5293 escapes content5294 #search_context5295 a bare controller5296 returns an empty context5297 #page_canonical_link5298 when link is passed5299 stores and returns the link value5300 when no link is provided5301 behaves like generates the canonical url using the params in the context5302 is expected to eq "http://test.host/foo"5303 behaves like generates the canonical url using the params in the context5304 is expected to eq "http://test.host/foo"5305 behaves like does not return a canonical url5306 is expected to be nil5307 behaves like does not return a canonical url5308 is expected to be nil5309 #page_itemtype5310 when itemtype is passed5311 stores and returns the itemtype value5312 when no itemtype is provided5313 returns an empty hash5314 #full_content_class5315 has a content_class set5316 has no content_class set5317 #user_status_properties5318 when the user has no status5319 returns default properties5320 when user has a status5321 merges the status properties with the defaults5322Gitlab::Database::LoadBalancing::SidekiqServerMiddleware5323 #call5324 when worker class does not include WorkerAttributes5325 sticks to the primary5326 sets load balancing strategy to primary5327 when job contains wrapped worker class5328 uses wrapped job if available5329 when worker data consistency is :always5330 sticks to the primary5331 sets load balancing strategy to primary5332 when delay interval has not elapsed5333 does not sleep5334 when worker data consistency is :delayed5335 when database wal location is set5336 behaves like replica is up to date5337 does not stick to the primary5338 sets load balancing strategy to replica5339 when deduplication wal location is set5340 behaves like replica is up to date5341 does not stick to the primary5342 sets load balancing strategy to replica5343 when database location is not set5344 sticks to the primary5345 sets load balancing strategy to primary_no_wal5346 when WAL locations are blank5347 does not sleep5348 when WAL locations are present5349 when delay interval has not elapsed5350 when replica is up to date5351 does not sleep5352 when replica is not up to date5353 sleeps until the minimum delay is reached5354 when replica is never not up to date5355 sleeps until the maximum delay is reached5356 when replica is not up to date5357 when job is executed first5358 raises an error and retries5359 sets load balancing strategy to retry5360 when job is retried5361 and replica still lagging behind5362 sticks to the primary5363 sets load balancing strategy to primary5364 and replica is now up-to-date5365 does not stick to the primary5366 sets load balancing strategy to replica_retried5367 when worker data consistency is :sticky5368 when database wal location is set5369 behaves like replica is up to date5370 does not stick to the primary5371 sets load balancing strategy to replica5372 when deduplication wal location is set5373 behaves like replica is up to date5374 does not stick to the primary5375 sets load balancing strategy to replica5376 when database location is not set5377 sticks to the primary5378 sets load balancing strategy to primary_no_wal5379 when WAL locations are blank5380 does not sleep5381 when WAL locations are present5382 when delay interval has not elapsed5383 when replica is up to date5384 does not sleep5385 when replica is not up to date5386 sleeps until the minimum delay is reached5387 when replica is never not up to date5388 sleeps until the maximum delay is reached5389 when replica is not up to date5390 sticks to the primary5391 sets load balancing strategy to primary5392 #databases_in_sync?5393 treats load balancers without WAL entries as in sync5394 returns true when all load balancers are in sync5395 returns false when the load balancers are not in sync5396 when locations have string keys5397 returns false when the load balancers are not in sync5398Projects::HashedStorage::MigrationService5399 #execute5400 repository migration5401 delegates migration to Projects::HashedStorage::MigrateRepositoryService5402 does not delegate migration if repository is already migrated5403 migrates legacy repositories to hashed storage5404 attachments migration5405 delegates migration to Projects::HashedStorage::MigrateRepositoryService5406 does not delegate migration if attachments are already migrated5407 migrates legacy attachments to hashed storage5408layouts/nav/sidebar/_admin5409 on home page5410 behaves like page has active tab5411 activates Overview tab5412 behaves like has nav sidebar5413 has collapsed nav sidebar on mobile5414 on projects5415 behaves like page has active tab5416 activates Overview tab5417 behaves like page has active sub tab5418 activates Projects sub tab5419 on groups5420 behaves like page has active tab5421 activates Overview tab5422 behaves like page has active sub tab5423 activates Groups sub tab5424 on users5425 behaves like page has active tab5426 activates Overview tab5427 behaves like page has active sub tab5428 activates Users sub tab5429 on topics5430 behaves like page has active tab5431 activates Overview tab5432 behaves like page has active sub tab5433 activates Topics sub tab5434 on runners5435 behaves like page has active tab5436 activates CI/CD tab5437 behaves like page has active sub tab5438 activates Runners sub tab5439 on jobs5440 behaves like page has active tab5441 activates CI/CD tab5442 behaves like page has active sub tab5443 activates Jobs sub tab5444 on messages5445 behaves like page has active tab5446 activates Messages tab5447 on analytics5448 behaves like page has active tab5449 activates Analytics tab5450 on hooks5451 behaves like page has active tab5452 activates Hooks tab5453 on background jobs5454 behaves like page has active tab5455 activates Monitoring tab5456 behaves like page has active sub tab5457 activates Background Jobs sub tab5458 on settings5459 includes General link5460 when GitLab.com5461 does not include Integrations link5462 when not GitLab.com5463 includes Integrations link5464 when GitLab FOSS5465 does not include Templates link5466ServiceResponse5467 .success5468 creates a successful response without a message5469 creates a successful response with a message5470 creates a successful response with payload5471 creates a successful response with default HTTP status5472 creates a successful response with custom HTTP status5473 .error5474 creates an error response without HTTP status5475 creates an error response with HTTP status5476 creates an error response with payload5477 creates an error response with a reason5478 #success?5479 returns true for a successful response5480 returns false for a failed response5481 #error?5482 returns false for a successful response5483 returns true for a failed response5484 #errors5485 returns an empty array for a successful response5486 returns an array with a correct message for an error response5487 #track_and_raise_exception5488 when successful5489 returns self5490 when an error5491 tracks and raises5492 allows specification of error class5493 allows extra data for tracking5494 #track_exception5495 when successful5496 returns self5497 when an error5498 tracks5499 allows specification of error class5500 allows extra data for tracking5501 #log_and_raise_exception5502 when successful5503 returns self5504 when an error5505 logs5506 allows specification of error class5507 allows extra data for tracking5508Branches::DeleteService5509 #execute5510 when user has access to push to repository5511 behaves like a deleted branch5512 removes the branch5513 calls the RefDeleteUnlockArtifactsWorker5514 when Gitlab::Git::CommandError is raised5515 handles and returns error5516 when user does not have access to push to repository5517 does not remove branch5518Tooling::Graphql::Docs::Renderer5519 #contents5520 headings5521 contains the expected sections5522 when a field has a list type5523 is expected to include "### `ArrayTest`\n\n#### Fields\n\n| Name | Type | Description |\n| ---- | ---- | ----------- |\n| <a id=\"arraytestfoo\"></a>`foo` | [`[String!]!`](#string) | A description. |\n"5524 a top level query field5525 generates the query with arguments5526 when description does not end with `.`5527 adds the `.` to the end5528 when fields are not defined in alphabetical order5529 lists the fields in alphabetical order5530 when a field has a documentation reference5531 behaves like renders correctly as GraphQL documentation5532 contains the expected section5533 when an argument is deprecated5534 behaves like renders correctly as GraphQL documentation5535 contains the expected section5536 when a field is deprecated5537 behaves like renders correctly as GraphQL documentation5538 contains the expected section5539 when a Query.field is deprecated5540 behaves like renders correctly as GraphQL documentation5541 contains the expected section5542 when an argument is in alpha5543 behaves like renders correctly as GraphQL documentation5544 contains the expected section5545 when a field is in alpha5546 behaves like renders correctly as GraphQL documentation5547 contains the expected section5548 when a Query.field is in alpha5549 behaves like renders correctly as GraphQL documentation5550 contains the expected section5551 when a field has an Enumeration type5552 behaves like renders correctly as GraphQL documentation5553 contains the expected section5554 when a field has a global ID type5555 section for IDTest5556 behaves like renders correctly as GraphQL documentation5557 contains the expected section5558 section for UserID5559 behaves like renders correctly as GraphQL documentation5560 contains the expected section5561 when there is a mutation5562 does not render the automatically generated payload type5563 does not render the automatically generated input type as its own section5564 behaves like renders correctly as GraphQL documentation5565 contains the expected section5566 when there is an input type5567 behaves like renders correctly as GraphQL documentation5568 contains the expected section5569 when there is an interface and a union5570 lists the fields correctly, and includes descriptions of all the types5571Database::BatchedBackgroundMigration::MainExecutionWorker5572 # order random5573 behaves like batched background migrations execution worker5574 is a limited capacity worker5575 defining the job attributes5576 defines the data_consistency as always5577 defines the feature_category as database5578 defines the idempotency as false5579 does not retry failed jobs5580 does not deduplicate jobs5581 defines the queue namespace5582 .perform_with_capacity5583 enqueues jobs without modifying provided arguments5584 .max_running_jobs5585 returns database_max_running_batched_background_migrations application setting5586 #max_running_jobs5587 returns database_max_running_batched_background_migrations application setting5588 #remaining_work_count5589 returns 05590 #perform_work5591 when the feature flag is disabled5592 does nothing5593 when the feature flag is enabled5594 when the provided database is sharing config5595 does nothing5596 when migration does not exist5597 does nothing5598 when migration exist5599 when the migration is no longer active5600 does not run the migration5601 when the interval has not elapsed5602 does not run the migration5603 when the migration is still active and the interval has elapsed5604 always cleans up the exclusive lease5605 runs the migration5606 assigns proper feature category to the context and the worker5607 when can not obtain lease on the table name5608 does nothing5609Types::BaseEnum5610 adds a formatted `deprecated_reason` to the subject5611 appends to the description if given5612 does not append to the description if it is absent5613 adds information about the replacement if provided5614 supports named reasons: renamed5615 supports named reasons: alpha5616 supports :alpha5617 does not allow :alpha and :deprecated together5618 .from_rails_enum5619 contructs the correct values5620 .declarative_enum5621 #graphql_name5622 when the use_name is `true`5623 changes the graphql_name5624 when the use_name is `false`5625 does not change the graphql_name5626 #description5627 when the use_description is `true`5628 changes the description5629 when the use_description is `false`5630 does not change the description5631 #values5632 sets the values defined by the declarative enum5633 .enum5634 adds all enum values to #enum5635 is a HashWithIndefferentAccess5636 validations5637 raises an informative error if `deprecation_reason` is used5638 raises an error if a required property is missing5639 raises an error if milestone is not a String5640 visible?5641 defaults to true5642 when subject is deprecated5643 defaults to true5644 returns false if `remove_deprecated` is true in context5645lograge5646 for API requests5647 logs to api_json log5648 limits param size5649 for Controller requests5650 logs to production_json log5651 logs cpu_s on supported platform5652 does not log cpu_s on unsupported platform5653 limits param size5654 when logging memory allocations5655 logs memory usage metrics5656 with a log subscriber5657 with an exception5658 adds exception data to log5659 with an ActiveRecord::StatementInvalid5660 adds the SQL query to the log5661 with etag_route5662 adds etag_route to log5663 with access token in url5664 strips location from sensitive information5665 leaves non-sensitive information from location5666 with db payload5667 when RequestStore is enabled5668 includes db counters5669 when RequestStore is disabled5670 does not include db counters5671 with db payload5672 when RequestStore is enabled5673 includes db counters for load balancing5674 when RequestStore is disabled5675 does not include db counters for load balancing5676Integrations::CustomIssueTracker5677 Validations5678 when integration is active5679 is expected to validate that :project_url cannot be empty/falsy5680 is expected to validate that :issues_url cannot be empty/falsy5681 is expected to validate that :new_issue_url cannot be empty/falsy5682 behaves like issue tracker integration URL attribute5683 is expected to allow :project_url to be ‹"https://example.com"›5684 is expected not to allow :project_url to be ‹"example.com"›5685 is expected not to allow :project_url to be ‹"ftp://example.com"›5686 is expected not to allow :project_url to be ‹"herp-and-derp"›5687 behaves like issue tracker integration URL attribute5688 is expected to allow :issues_url to be ‹"https://example.com"›5689 is expected not to allow :issues_url to be ‹"example.com"›5690 is expected not to allow :issues_url to be ‹"ftp://example.com"›5691 is expected not to allow :issues_url to be ‹"herp-and-derp"›5692 behaves like issue tracker integration URL attribute5693 is expected to allow :new_issue_url to be ‹"https://example.com"›5694 is expected not to allow :new_issue_url to be ‹"example.com"›5695 is expected not to allow :new_issue_url to be ‹"ftp://example.com"›5696 is expected not to allow :new_issue_url to be ‹"herp-and-derp"›5697 when integration is inactive5698 is expected not to validate that :project_url cannot be empty/falsy5699 is expected not to validate that :issues_url cannot be empty/falsy5700 is expected not to validate that :new_issue_url cannot be empty/falsy5701Projects::MoveProjectGroupLinksService5702 #execute5703 moves the group links from one project to another5704 does not move existent group links in the current project5705 rollbacks changes if transaction fails5706 when remove_remaining_elements is false5707 does not remove remaining project group links5708UserInteractedProject5709 is expected to validate that :project_id cannot be empty/falsy5710 is expected to validate that :user_id cannot be empty/falsy5711 .track5712 sets project accordingly5713 sets user accordingly5714 only creates a record once per user/project5715 for all actions (event types)5716 creates a record5717 for all actions (event types)5718 creates a record5719 for all actions (event types)5720 creates a record5721 for all actions (event types)5722 creates a record5723 for all actions (event types)5724 creates a record5725 for all actions (event types)5726 creates a record5727 for all actions (event types)5728 creates a record5729 for all actions (event types)5730 creates a record5731 for all actions (event types)5732 creates a record5733 for all actions (event types)5734 creates a record5735 for all actions (event types)5736 creates a record5737 for all actions (event types)5738 creates a record5739 with an event without a project5740 ignores the event5741Banzai::Filter::ImageLinkFilter5742 wraps the image with a link to the image src5743 does not wrap a duplicate link5744 works with external images5745 works with inline images5746 keep the data-canonical-src5747 moves the data-diagram* attributes5748 adds no-attachment icon class to the link5749 when :link_replaces_image is true5750 replaces the image with link to image src5751 uses image alt as a link text5752 uses image data-src as a link text5753 adds attachment icon class to the link5754 when link attributes contain malicious code5755 when image alt contains malicious code5756 ignores image alt and uses image path as the link text5757 when image src contains malicious code5758 ignores image src and does not use it as the link text5759 keeps image src unchanged, malicious code does not execute as part of url5760 when image data-src contains malicious code5761 ignores data-src and uses image path as the link text5762 uses image data-src, malicious code does not execute as part of url5763Gitlab::JiraImport::Stage::ImportAttachmentsWorker5764 modules5765 behaves like include import workers modules5766 is expected to includes the ApplicationWorker module5767 is expected to includes the Gitlab::JiraImport::QueueOptions module5768 is expected to includes the Gitlab::JiraImport::ImportWorker module5769 #perform5770 when import did not start5771 behaves like cannot do Jira import5772 does not advance to next stage5773 behaves like does not advance to next stage5774 does not advance to next stage5775 when import started5776 behaves like advance to next stage5777 advances to notes stage5778RuboCop::Cop::API::EnsureStringDetail5779 # order random5780 when in_api? == true5781 when detail field uses a string5782 does not add an offense5783 when detail field uses interpolation in a string5784 does not add an offense5785 when detail field uses a multiline string5786 does not add an offense5787 when detail field uses a constant5788 does not add an offense (PENDING: No reason given)5789 when detail field uses a HEREDOC string5790 does not add an offense5791 when detail field uses an array5792 adds an offense5793 when detail field is outside of desc block5794 does not add an offense5795 when in_api? == false5796 does not add an offense5797projects/commit/_commit_box.html.haml5798 shows the commit SHA5799 when there is a pipeline present5800 when pipeline has stages5801 shows pipeline stages in vue5802 when there are multiple pipelines for a commit5803 shows the last pipeline5804 when pipeline for the commit is blocked5805 shows correct pipeline description5806Gitlab::RepositoryCache5807 #cache_key5808 project repository5809 behaves like cache_key examples5810 includes the namespace5811 with a given namespace5812 includes the full namespace5813 personal snippet repository5814 behaves like cache_key examples5815 includes the namespace5816 with a given namespace5817 includes the full namespace5818 project snippet repository5819 behaves like cache_key examples5820 includes the namespace5821 with a given namespace5822 includes the full namespace5823 #expire5824 expires the given key from the cache5825 #fetch5826 fetches the given key from the cache5827 accepts a block5828 #write5829 writes the given key and value to the cache5830 passes additional options to the backend5831 #fetch_without_caching_false5832 requires a block5833 when the key does not exist in the cache5834 when the result of the block is truthy5835 returns the result of the block5836 caches the value5837 when the result of the block is falsey5838 returns the result of the block5839 does not cache the value5840 when the cached value is truthy5841 returns the cached value5842 does not execute the block5843 does not write to the cache5844 when the cached value is falsey5845 returns the result of the block5846 writes the truthy value to the cache5847GroupDeployKey5848 is expected to validate that :user cannot be empty/falsy5849 is expected to belong to user required: false5850 is expected to have many groups5851 is of type DeployKey5852 #group_deploy_keys_group_for5853 when this group deploy key is linked to a given group5854 returns the relevant group_deploy_keys_group association5855 when this group deploy key is not linked to a given group5856 is expected to be nil5857 .defined_enums5858 excludes the inherited enum5859 #can_be_edited_for5860 when a given user has the :update_group_deploy_key permission for that key5861 is true5862 when a given user does not have the :update_group_deploy_key permission for that key5863 is true when this user has the :update_group_deploy_key_for_group permission for this group5864 is false when this user does not have the :update_group_deploy_key_for_group permission for this group5865 #group_deploy_keys_groups_for_user5866 when a group has a group deploy key5867 returns the related group_deploy_keys_group association when the user can read the group5868 does not return the related group_deploy_keys_group association when the user cannot read the group5869 .for_groups5870 when group deploy keys are enabled for some groups5871 returns these group deploy keys5872SystemNotes::IncidentsService5873 # order random5874 #edit_timeline_event5875 behaves like a system note5876 has the correct attributes5877 when only timeline event's occurred_at was changed5878 posts the correct text to the system note5879 when only timeline event's note was changed5880 posts the correct text to the system note5881 when both timeline events occurred_at and note was changed5882 posts the correct text to the system note5883 when was changed reason is unknown5884 posts the correct text to the system note5885 #delete_timeline_event5886 posts the correct text to the system note5887 behaves like a system note5888 has the correct attributes5889 #add_timeline_event5890 posts the correct text to the system note5891 behaves like a system note5892 has the correct attributes5893RuboCop::Formatter::TodoFormatter5894 # order random5895 with offenses detected5896 outputs its actions5897 creates YAML files5898 when cop previously not explicitly disabled5899 does not disable cop5900 when cop previously explicitly disabled in rubocop_todo/5901 keeps cop disabled5902 when cop previously explicitly disabled in rubocop_todo.yml5903 keeps cop disabled5904 with grace period5905 in rubocop_todo/5906 behaves like keeps grace period5907 keeps Details: grace period5908 in rubocop_todo.yml5909 behaves like keeps grace period5910 keeps Details: grace period5911 with invalid details value5912 ignores the details and warns5913 and previously disabled5914 raises an exception5915 with cop configuration in both .rubocop_todo/ and .rubocop_todo.yml5916 raises an error5917 without files to inspect5918 does not output anything5919 does not write any YAML files5920 without offenses detected5921 without existing TODOs5922 does not output anything5923 does not write any YAML files5924 with existing TODOs5925 when existing offenses only5926 does not output anything5927 does not write any YAML files5928 when in grace period5929 outputs its actions5930 creates YAML file with Details only5931Ci::DropPipelineWorker5932 #perform5933 calls delegates to the service5934 behaves like an idempotent worker5935 is labeled as idempotent5936 performs multiple times sequentially without raising an exception5937 executes the service5938Resolvers::Ci::ConfigResolver5939 #resolve5940 when the user can create a pipeline5941 with a valid .gitlab-ci.yml5942 with a sha5943 behaves like a valid config file5944 lints the ci config file and returns the merged yaml file5945 without a sha5946 behaves like a valid config file5947 lints the ci config file and returns the merged yaml file5948 with an invalid .gitlab-ci.yml5949 responds with errors about invalid syntax5950 with an invalid SHA5951 logs the invalid SHA to Sentry5952 when the user cannot create a pipeline5953 returns an error stating that the user cannot access the linting5954gitlab:db:decomposition:rollback:bump_ci_sequences5955 when passing wrong argument5956 will print an error message and exit when passing no argument5957 will print an error message and exit when passing a non positive integer value5958 when bumping the ci sequences5959 changes ci sequences by the passed argument `increase_by` value on the main database5960 will still increase the value of sequences that have is_called = False5961 resets the INCREMENT value of the sequences back to 1 for the following calls to nextval()5962 does not change the sequences on the gitlab_main tables5963 when multiple databases5964 does not change ci sequences on the ci database5965UnnestedInFilters::Rewriter5966 #rewrite?5967 when a join table is receiving an IN list query5968 is expected to be falsey5969 when the given relation does not have an `IN` predicate5970 is expected to be falsey5971 when the given relation has an `IN` predicate5972 when there is no index coverage for the used columns5973 is expected to be falsey5974 when there is an index coverage for the used columns5975 is expected to be truthy5976 when there is an ordering5977 when the order is an Arel node5978 is expected to be truthy5979 when the order is a Keyset order5980 is expected to be truthy5981 #rewrite5982 changes the query5983 when the relation has a subquery5984 changes the query5985 when there is an order5986 when the order is an Arel node5987 changes the query5988 when the order is a Keyset order5989 changes the query5990 when the combined attributes include the primary key5991 changes the query5992 when a join table is receiving an IN list query5993 does not rewrite the in statement for the joined table5994 logging5995 logs the call5996Gitlab::Security::ScanConfiguration5997 #available?5998 with a core scanner5999 type: :sast6000 is expected to be truthy6001 type: :sast_iac6002 is expected to be truthy6003 type: :secret_detection6004 is expected to be truthy6005 type: :container_scanning6006 is expected to be truthy6007 with custom scanner6008 is expected to be falsey6009 #configured?6010 is expected to be falsey6011 #configuration_path6012 is expected to be nil6013 #meta_info_path6014 is expected to be nil6015 #can_enable_by_merge_request?6016 with a core scanner6017 type: :sast6018 is expected to be truthy6019 type: :sast_iac6020 is expected to be truthy6021 type: :secret_detection6022 is expected to be truthy6023 with a custom scanner6024 is expected to be falsey6025RuboCop::Cop::RSpec::BeSuccessMatcher6026 # order random6027 using is_expected.to be_successful call6028 does not register an offense6029 using expect(response).not_to be_success call6030 registers an offense and corrects6031 using expect(response).to be_successful call6032 does not register an offense6033 using expect(response).to be_success call6034 registers an offense and corrects6035 using is_expected.to_not be_success call6036 registers an offense and corrects6037 using is_expected.to_not be_successful call6038 does not register an offense6039 using expect(response).not_to be_successful call6040 does not register an offense6041 using is_expected.not_to be_success call6042 registers an offense and corrects6043 using is_expected.to be_success call6044 registers an offense and corrects6045 using expect(response).to_not be_success call6046 registers an offense and corrects6047 using expect(response).to_not be_successful call6048 does not register an offense6049 using is_expected.not_to be_successful call6050 does not register an offense6051Gitlab::Email::AttachmentUploader6052 #execute6053 uploads all attachments and returns their links6054 with a signed message6055 uploads all attachments except the signature6056 with a signed message with mixed protocol prefix6057 uploads all attachments except the signature6058 with a message with no content type6059 uploads all attachments except the signature6060Constraints::ProjectUrlConstrainer6061 #matches?6062 valid request6063 is expected to be truthy6064 invalid request6065 non-existing project6066 is expected to be falsey6067 existence_check is false6068 is expected to be truthy6069 project id ending with .git6070 is expected to be falsey6071 when the request matches a redirect route6072 and is a GET request6073 is expected to be truthy6074 and is NOT a GET request6075 is expected to be falsey6076Types::ColorType6077 is expected to eq "Color"6078 coerces Color object into hex string6079 coerces an hex string into Color object6080 coerces an named Color into hex string6081 coerces an named color into Color object6082 rejects invalid input6083 rejects nil6084Integrations::SlackEventWorker6085 # order random6086 #perform6087 executes the correct service6088 ensures idempotency when called twice by only executing service once6089 executes service twice if service returned an error6090 executes service twice if service raised an error6091 executes service twice when event_id is different6092 behaves like logs extra metadata on done6093 is expected to receive log_extra_metadata_on_done(:slack_workspace_id, "T0123A456BC") 1 time6094 behaves like an idempotent worker6095 is labeled as idempotent6096 performs multiple times sequentially without raising an exception6097 when event is not known6098 does not execute the service class6099 logs an error6100 behaves like logs extra metadata on done6101 is expected to receive log_extra_metadata_on_done(:slack_workspace_id, "T0123A456BC") 1 time6102 .event?6103 when event is known6104 is expected to eq true6105 when event is not known6106 is expected to eq false6107Gitlab::Database::Migrations::BatchedMigrationLastId6108 # order random6109 base_model: Ci::ApplicationRecord(abstract)6110 #read6111 when the file exists and have content6112 is expected to eq 996113 when the file exists and is blank6114 is expected to be nil6115 when the file doesn't exists6116 is expected to be nil6117 #store6118 creates the file properly6119 stores the proper id in the file6120 base_model: ApplicationRecord(abstract)6121 #read6122 when the file exists and have content6123 is expected to eq 996124 when the file exists and is blank6125 is expected to be nil6126 when the file doesn't exists6127 is expected to be nil6128 #store6129 creates the file properly6130 stores the proper id in the file6131UserGroupNotificationSettingsFinder6132 when the groups have no existing notification settings6133 when the groups have no ancestors6134 will be a default Global notification setting6135 when the groups have ancestors6136 does not cause an N+16137 when an ancestor has a level other than Global6138 has the same level set6139 has the same email set6140 only returns the two queried groups6141 when an ancestor has a Global level but has an email set6142 has the same email and level set6143 when the group has parent_id set but that does not belong to any group6144 returns a default Global notification setting6145 when the group has a private parent6146 still inherits the notification settings6147 preloading `emails_disabled`6148 preloads the `group.emails_disabled` method6149 preloads the `group.emails_disabled` method correctly6150Projects::MoveProjectAuthorizationsService6151 #execute6152 moves the authorizations from one project to another6153 does not move existent authorizations to the current project6154 when remove_remaining_elements is false6155 does not remove remaining project authorizations6156ErrorTrackingIssueLinkWorker6157 #perform6158 creates a link between an issue and a Sentry issue in Sentry6159 when issue is unavailable6160 behaves like makes no external API requests6161 takes no action6162 when project does not have error tracking configured6163 behaves like makes no external API requests6164 takes no action6165 when the issue is not linked to a Sentry issue in GitLab6166 behaves like makes no external API requests6167 takes no action6168 when Sentry disabled the GitLab integration6169 behaves like attempts to create a link via plugin6170 takes no action6171 when Sentry the GitLab integration is for another project6172 behaves like attempts to create a link via plugin6173 takes no action6174 when Sentry repos request errors6175 falls back to creating a link via plugin6176CachingArrayResolver6177 #resolve6178 does not perform a union of a query with itself6179 force . resolve === to_a . query_for . query_input6180 there are more than MAX_UNION_SIZE queries6181 executes the queries in multiple batches6182 all queries return results6183 batches the queries6184 finds the correct values6185 one of the queries returns no results6186 finds the correct values6187 one of the queries has already been cached6188 avoids further queries6189 the resolver overrides item_found6190 receives item_found for each key the item mapped to6191 the max_page_size is lower than the total result size6192 respects the max_page_size, on a per subset basis6193 the field does not declare max_page_size6194 takes the page size from schema.default_max_page_size6195Gitlab::Database::SchemaValidation::SchemaInconsistency6196 # order random6197 is expected to be a kind of ApplicationRecord(abstract)6198 scopes6199 .with_open_issues6200 returns only schema inconsistencies with GitLab issues open6201 Validations6202 is expected to validate that :object_name cannot be empty/falsy6203 is expected to validate that :valitador_name cannot be empty/falsy6204 is expected to validate that :table_name cannot be empty/falsy6205 is expected to validate that :diff cannot be empty/falsy6206 associations6207 is expected to belong to issue required: false6208Gitlab::Harbor::Query6209 Validations6210 page6211 with valid page6212 initialize successfully6213 with invalid page6214 initialize failed6215 limit6216 with valid limit6217 initialize successfully6218 with invalid limit6219 with limit less than 06220 initialize failed6221 with limit greater than 256222 initialize failed6223 repository_id6224 with valid repository_id6225 initialize successfully6226 with invalid repository_id6227 initialize failed6228 artifact_id6229 with valid artifact_id6230 initialize successfully6231 with invalid artifact_id6232 initialize failed6233 sort6234 with valid sort6235 initialize successfully6236 with invalid sort6237 initialize failed6238 search6239 with valid search6240 initialize successfully6241 with invalid search6242 initialize failed6243 #repositories6244 when params is {}6245 fills default params6246 when params contains options6247 fills params with standard of Harbor6248 when params contains invalid sort option6249 ignores invalid sort params6250 when client.get_repositories returns data6251 returns the right repositories data6252 #artifacts6253 when params is {}6254 fills default params6255 when params contains options6256 fills params with standard of Harbor6257 when params contains invalid sort option6258 ignores invalid sort params6259 when client.get_artifacts returns data6260 returns the right artifacts data6261 #tags6262 when params is {}6263 fills default params6264 when params contains options6265 fills params with standard of Harbor6266 when params contains invalid sort option6267 ignores invalid sort params6268 when client.get_tags returns data6269 returns the right tags data6270ErrorTracking::SentryClient::IssueLink6271 # order random6272 #create_issue_link6273 is expected to be present6274 behaves like Sentry API response size limit6275 raises an exception when response is too large6276 behaves like calls sentry api6277 calls sentry api6278 with redirects6279 behaves like no Sentry redirects6280 does not follow redirects6281 when exception is raised6282 behaves like maps Sentry exceptions6283 HTTParty::Error6284 is expected to raise ErrorTracking::SentryClient::Error with "Error when connecting to Sentry"6285 Net::OpenTimeout6286 is expected to raise ErrorTracking::SentryClient::Error with "Connection to Sentry timed out"6287 SocketError6288 is expected to raise ErrorTracking::SentryClient::Error with "Received SocketError when trying to connect to Sentry"6289 OpenSSL::SSL::SSLError6290 is expected to raise ErrorTracking::SentryClient::Error with "Sentry returned invalid SSL data"6291 Errno::ECONNREFUSED6292 is expected to raise ErrorTracking::SentryClient::Error with "Connection refused"6293 StandardError6294 is expected to raise ErrorTracking::SentryClient::Error with "Sentry request failed due to StandardError"6295 when integration_id is not provided6296 is expected to be present6297 behaves like Sentry API response size limit6298 raises an exception when response is too large6299 behaves like calls sentry api6300 calls sentry api6301 with redirects6302 behaves like no Sentry redirects6303 does not follow redirects6304 when exception is raised6305 behaves like maps Sentry exceptions6306 HTTParty::Error6307 is expected to raise ErrorTracking::SentryClient::Error with "Error when connecting to Sentry"6308 Net::OpenTimeout6309 is expected to raise ErrorTracking::SentryClient::Error with "Connection to Sentry timed out"6310 SocketError6311 is expected to raise ErrorTracking::SentryClient::Error with "Received SocketError when trying to connect to Sentry"6312 OpenSSL::SSL::SSLError6313 is expected to raise ErrorTracking::SentryClient::Error with "Sentry returned invalid SSL data"6314 Errno::ECONNREFUSED6315 is expected to raise ErrorTracking::SentryClient::Error with "Connection refused"6316 StandardError6317 is expected to raise ErrorTracking::SentryClient::Error with "Sentry request failed due to StandardError"6318Sidekiq::Worker6319 for sidekiq workers6320 behaves like a forbiddable operation within a transaction6321 allows the operation outside of a transaction6322 forbids the operation within a transaction6323 allows the oepration within a transaction if skipped6324 forbids the operation if it is within a Ci::ApplicationRecord transaction6325 for mailers6326 behaves like a forbiddable operation within a transaction6327 allows the operation outside of a transaction6328 forbids the operation within a transaction6329 allows the oepration within a transaction if skipped6330 forbids the operation if it is within a Ci::ApplicationRecord transaction6331Users::PhoneNumberValidation6332 # order random6333 is expected to validate that the length of :country is at most 36334 is expected not to allow :phone_number to be ‹"555-555"›6335 is expected to validate that :international_dial_code cannot be empty/falsy6336 is expected to validate that :country cannot be empty/falsy6337 is expected not to allow :phone_number to be ‹"555 555"›6338 is expected to allow :phone_number to be ‹"555555"›6339 is expected to validate that the length of :telesign_reference_xid is at most 2556340 is expected to validate that the length of :phone_number is at most 126341 is expected to validate that :phone_number cannot be empty/falsy6342 is expected not to allow :phone_number to be ‹"+555555"›6343 is expected to belong to banned_user required: false6344 is expected to validate that :international_dial_code looks like an integer greater than or equal to 1 and less than or equal to 9996345 is expected to belong to user required: false6346 .related_to_banned_user?6347 when banned user has the same international dial code and phone number6348 is expected to eq true6349 when banned user has the same international dial code and phone number, but different country code6350 is expected to eq true6351 when banned user does not have the same international dial code6352 is expected to eq false6353 when banned user does not have the same phone number6354 is expected to eq false6355 when not-banned user has the same international dial code and phone number6356 is expected to eq false6357 #validated?6358 when phone number record is not validated6359 returns false6360 when phone number record is validated6361 returns true6362 #for_user6363 when multiple records exist for multiple users6364 returns the correct phone number record for user6365Gitlab::Export::PruneProjectExportJobsWorker6366 # order random6367 #perform6368 is labeled as idempotent6369 performs multiple times sequentially without raising an exception6370 prunes jobs and associations older than 7 days6371 leaves fresh jobs and associations6372Projects::ReadmeRendererService#execute6373 renders the an ERB readme template6374 with a custom template6375 renders that template file6376 with path traversal in mind6377 template_name: "../path/traversal/bad", exception: [Gitlab::PathTraversal::PathTraversalAttackError, "Invalid path"], expected_path: nil6378 raises the expected exception on bad paths6379 template_name: "/bad/template", exception: [StandardError, "path /bad/template.md.tt is not allowed"], expected_path: nil6380 raises the expected exception on bad paths6381 template_name: "good/template", exception: nil, expected_path: "good/template.md.tt"6382 raises the expected exception on bad paths6383Integrations::SlackInteractions::SlackBlockActions::IncidentManagement::ProjectUpdateHandler6384 # order random6385 #execute6386 when project is updated6387 returns success response and updates cache6388 when project is unchanged6389 behaves like does not make api call6390 does not make the api call and returns nil6391 when user does not have permission to read a project6392 behaves like does not make api call6393 does not make the api call and returns nil6394 when api response is not ok6395 returns error response6396 when Slack API call raises an HTTP exception6397 tracks the exception and returns an error message6398Mutations::CustomerRelations::Contacts::Create6399 is expected to require graphql authorizations :admin_crm_contact6400 #resolve6401 when the user does not have permission6402 raises an error6403 when the user has permission6404 creates contact with correct values6405 when crm_enabled is false6406 raises an error6407 when the params are invalid6408 returns the validation error6409 when attaching to an crm_organization6410 when all ok6411 creates contact with correct values6412 when crm_organization does not exist6413 returns the relevant error6414 when crm_organzation belongs to a different group6415 returns the relevant error6416Gitlab::JiraImport::BaseImporter6417 with any inheriting class6418 when project validation is ok6419 when Jira service exists6420 when Jira import data is not present6421 raises exception6422 when import data exists6423 when #imported_items_cache_key is not implemented6424 is expected to raise NotImplementedError6425 when #imported_items_cache_key is implemented6426 #imported_items_cache_key6427 is expected to eq "dumb-importer-key"6428 #mark_as_imported6429 stores id in redis cache6430 #already_imported?6431 returns false if value is not in cache6432 returns true if value already stored in cache6433Banzai::Filter::ServiceDeskUploadLinkFilter6434 # order random6435 when uploads_as_attachments is empty6436 does not replaces the link6437 when replace_upload_links enabled6438 when it has only one attachment to replace6439 when filename in text is same as in link6440 replaces the link with original filename in strong6441 when filename in text is not same as in link6442 replaces the link with filename in text & original filename, in strong6443 when it has more than one attachment to replace6444 when all of uploads can be replaced6445 replaces all links with original filename in strong6446 when not all of uploads can be replaced6447 replaces only specific links with original filename in strong6448ErrorTracking::ListIssuesService6449 #execute6450 Sentry backend6451 with authorized user6452 returns the issues with resolved issue_status6453 returns the issues with unresolved issue_status6454 returns the issues with ignored issue_status6455 returns the issues with no issue_status6456 returns bad request for an issue_status not on the whitelist6457 when list_sentry_issues returns nil6458 result is not ready6459 when list_sentry_issues returns error6460 returns the error6461 when list_sentry_issues returns error with http_status6462 returns the error with correct http_status6463 with unauthorized user6464 returns error6465 with error tracking disabled6466 raises error6467 GitLab backend6468 returns the error in expected format6469 #external_url6470 calls the project setting sentry_external_url6471AlertManagement::AlertPolicy6472 rules6473 is expected to be disallowed :read_alert_management_alert6474 is expected to be disallowed :update_alert_management_alert6475 when developer6476 is expected to be allowed :read_alert_management_alert6477 is expected to be allowed :update_alert_management_alert6478 when user is not a member6479 is expected to be disallowed :read_alert_management_metric_image6480 is expected to be disallowed :destroy_alert_management_metric_image6481 when user is a guest6482 is expected to be disallowed :read_alert_management_metric_image6483 is expected to be disallowed :destroy_alert_management_metric_image6484 when user is a developer6485 is expected to be allowed :read_alert_management_metric_image6486 is expected to be allowed :destroy_alert_management_metric_image6487Ci::BuildPendingState6488 associations6489 is expected to belong to build class_name => Ci::Build required: false inverse_of => pending_state6490 validations6491 is expected to validate that :build cannot be empty/falsy6492 #crc326493 when checksum does not exist6494 returns nil6495 when checksum is in hexadecimal6496 returns decimal representation of the checksum6497 partitioning6498 with build6499 sets partition_id to the current partition value6500 when it is already set6501 does not change the partition_id value6502 without build6503 is expected to validate that :partition_id cannot be empty/falsy6504 does not change the partition_id value6505Gitlab::Seeders::Ci::VariablesProjectSeeder6506 # order random6507 #seed6508 creates project-level CI variables with default values6509 creates project-level CI variables with custom arguments6510 creates project-level CI variables with unique environment scopes6511ERROR: Project path is invalid.6512 skips seeding when project path is invalid6513WARNING: Project CI Variable with key 'VAR_22' already exists. Skipping to next CI variable...6514 skips CI variable creation if CI variable already exists6515Gitlab::GithubImport::Markdown::Attachment6516 # order random6517 #media?6518 when it is a media link6519 is expected to eq true6520 when it is not a media link6521 is expected to eq false6522 #inspect6523 returns attachment basic info6524 .from_markdown6525 when it's a doc attachment6526 returns instance with attachment info6527 when type is not in whitelist6528 is expected to eq nil6529 when domain name is unknown6530 is expected to eq nil6531 when URL is blank6532 is expected to eq nil6533 when it's an image attachment6534 returns instance with attachment info6535 when type is not in whitelist6536 is expected to eq nil6537 when domain name is unknown6538 is expected to eq nil6539 when URL is blank6540 is expected to eq nil6541 when it's an inline html node6542 returns instance with attachment info6543 when image src is not present6544 is expected to eq nil6545 #doc_belongs_to_project?6546 when url relates to this project6547 is expected to eq true6548 when url is not related to this project6549 is expected to eq false6550 when url is a part of project blob6551 is expected to eq false6552 #part_of_project_blob?6553 when url is a part of project blob6554 is expected to eq true6555 when url is not a part of project blob6556 is expected to eq false6557Gitlab::GithubImport::Importer::RepositoryImporter6558 #import_wiki?6559 returns true if the wiki should be imported6560 returns false if the GitHub wiki is disabled6561 returns false if the wiki has already been imported6562 #execute6563 imports the repository and wiki6564 does not import the repository if it already exists6565 does not import the wiki if it is disabled6566 does not import the wiki if the repository could not be imported6567 #import_repository6568 imports the repository6569 #import_wiki_repository6570 imports the wiki repository6571 when it raises a Gitlab::Git::CommandError6572 when the error is not a "repository not exported"6573 creates the wiki and re-raise the exception6574 when the error is a "repository not exported"6575 returns true6576 #update_clone_time6577 sets the timestamp for when the cloning process finished6578Gitlab::Webpack::Manifest6579 with dev server enabled6580 .asset_paths6581 errors if we can't find the manifest6582 behaves like a valid manifest6583 returns single entry asset paths from the manifest6584 returns multiple entry asset paths from the manifest6585 errors on a missing entry point6586 webpack errors6587 does not error if errors is present but empty6588 when webpack has 'Module build failed' errors in its manifest6589 errors6590 when webpack does not have 'Module build failed' errors in its manifest6591 does not error6592 with dev server disabled6593 .asset_paths6594 errors if we can't find the manifest6595 behaves like a valid manifest6596 returns single entry asset paths from the manifest6597 returns multiple entry asset paths from the manifest6598 errors on a missing entry point6599Packages::CleanupPackageFileWorker6600 #perform_work6601 with no work to do6602 is expected to be nil6603 with work to do6604 deletes the oldest package file pending destruction based on id6605 with a duplicated PyPI package file6606 deletes one of the duplicates6607 with a package file to destroy6608 with an error during the destroy6609 handles the error6610 when trying to destroy a destroyed record6611 handles the error6612 removing the last package file6613 deletes the package file and the package6614 #max_running_jobs6615 is expected to eq 56616 #remaining_work_count6617 is expected to eq 26618Gitlab::GithubImport::Representation::User6619 .from_api_response6620 behaves like a User6621 returns an instance of User6622 the returned User6623 includes the user ID6624 includes the username6625 .from_json_hash6626 behaves like a User6627 returns an instance of User6628 the returned User6629 includes the user ID6630 includes the username6631Gitlab::HookData::MergeRequestBuilder6632 .safe_hook_attributes6633 includes safe attribute6634 #build6635 includes safe attributes6636 includes additional attrs6637 source key6638 contains project data6639 target key6640 contains project data6641 when the MR has an image in the description6642 sets the image to use an absolute URL6643Resolvers::ProjectPipelineStatisticsResolver6644 is expected to have nullable GraphQL type PipelineAnalytics6645 #resolve6646 behaves like returns the pipelines statistics for a given project6647 is expected to contain exactly :week_pipelines_labels, :week_pipelines_totals, :week_pipelines_successful, :month_pipelines_labels, :month_pipelines_totals, :month_pipelines_successful, :year_pipelines_labels, :year_pipelines_totals, :year_pipelines_successful, :pipeline_times_labels, and :pipeline_times_values6648 when the user does not have access to the CI/CD analytics data6649 behaves like it returns nils6650 is expected to be nil6651 when the project is public6652 public pipelines are disabled6653 user is not a member6654 behaves like it returns nils6655 is expected to be nil6656 user is a guest6657 behaves like it returns nils6658 is expected to be nil6659 user is a reporter or above6660 behaves like returns the pipelines statistics for a given project6661 is expected to contain exactly :week_pipelines_labels, :week_pipelines_totals, :week_pipelines_successful, :month_pipelines_labels, :month_pipelines_totals, :month_pipelines_successful, :year_pipelines_labels, :year_pipelines_totals, :year_pipelines_successful, :pipeline_times_labels, and :pipeline_times_values6662 public pipelines are enabled6663 user is not a member6664 behaves like returns the pipelines statistics for a given project6665 is expected to contain exactly :week_pipelines_labels, :week_pipelines_totals, :week_pipelines_successful, :month_pipelines_labels, :month_pipelines_totals, :month_pipelines_successful, :year_pipelines_labels, :year_pipelines_totals, :year_pipelines_successful, :pipeline_times_labels, and :pipeline_times_values6666Issuable::Callbacks::Milestone6667 # order random6668 #after_initialize6669 sets the issuable's milestone6670 when assigning a group milestone6671 sets the issuable's milestone6672 when assigning a group milestone outside the project ancestors6673 does not change the issuable's milestone6674 when user is not allowed to set issuable metadata6675 does not change the issuable's milestone6676 when unsetting a milestone6677 when milestone_id is nil6678 unsets the issuable's milestone6679 when milestone_id is an empty string6680 unsets the issuable's milestone6681 when milestone_id is 06682 unsets the issuable's milestone6683 when milestone_id is '0'6684 unsets the issuable's milestone6685 when milestone_id is not given6686 does not unset the issuable's milestone6687 when new type does not support milestones6688 unsets the issuable's milestone6689ErrorTracking::Collector::PayloadValidator6690 #valid?6691 with event fixtures6692 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/browser_event.json"6693 behaves like valid payload6694 is expected to be valid6695 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/go_parsed_event.json"6696 behaves like valid payload6697 is expected to be valid6698 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/go_two_exception_event.json"6699 behaves like valid payload6700 is expected to be valid6701 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/parsed_event.json"6702 behaves like valid payload6703 is expected to be valid6704 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/parsed_event_nullbytes.json"6705 behaves like valid payload6706 is expected to be valid6707 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/python_event.json"6708 behaves like valid payload6709 is expected to be valid6710 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/python_event_repl.json"6711 behaves like valid payload6712 is expected to be valid6713 when empty6714 behaves like invalid payload6715 is expected not to be valid6716 when invalid6717 behaves like invalid payload6718 is expected not to be valid6719layouts/_head6720 escapes HTML-safe strings in page_title6721 escapes HTML-safe strings in page_description6722 escapes HTML-safe strings in page_image6723DEPRECATION WARNING: The asset "highlight/themes/solarised-light.css" is not present in the asset pipeline.6724Falling back to an asset that may be in the public folder.6725This behavior is deprecated and will be removed.6726To bypass the asset pipeline and preserve this behavior,6727use the `skip_pipeline: true` option.6728 (called from block in _app_views_layouts__loading_hints_html_haml__4294830471910071077_300373220 at /builds/gitlab-org/gitlab/app/views/layouts/_loading_hints.html.haml:13)6729DEPRECATION WARNING: The asset "highlight/themes/solarised-light.css" is not present in the asset pipeline.6730Falling back to an asset that may be in the public folder.6731This behavior is deprecated and will be removed.6732To bypass the asset pipeline and preserve this behavior,6733use the `skip_pipeline: true` option.6734 (called from stylesheet_link_tag_defer at /builds/gitlab-org/gitlab/app/helpers/application_helper.rb:280)6735 adds selected syntax highlight stylesheet6736 when an asset_host is set6737 adds a link dns-prefetch tag6738 adds a link preconnect tag6739 when a Matomo config is set6740 add a Matomo Javascript6741 when matomo_disable_cookies is true6742 disables cookies6743Gitlab::Usage::Metrics::Instrumentations::NumbersMetric6744 #value6745 calculates a correct result6746 with availability defined6747 responds to #available? properly6748 with availability not defined6749 responds to #available? properly6750 with unimplemented operation method used6751 raises an error6752Gitlab::Usage::Metrics::Instrumentations::DistinctCountProjectsWithExpirationPolicyMetric6753 # order random6754 behaves like a correct instrumented metric value6755 has correct value6756 behaves like a correct instrumented metric value6757 has correct value6758 behaves like a correct instrumented metric value6759 has correct value6760 behaves like a correct instrumented metric value6761 has correct value6762Gitlab::Analytics::CycleAnalytics::RecordsFetcher6763 #serialized_records6764 for issue based stage6765 returns all records6766 passes a hash with all expected attributes to the serializer6767 when records are loaded by guest6768 filters out confidential issues6769 for merge request based stage6770 returns all records6771 passes a hash with all expected attributes to the serializer6772 pagination6773 limits the results6774 loads the record for the next page6775Tags::DestroyService6776 #execute6777 removes the tag6778 calls the RefDeleteUnlockArtifactsWorker6779 when there is an associated release on the tag6780 destroys the release6781WhatsNewHelper6782 #whats_new_version_digest6783 calls ReleaseHighlight.most_recent_version_digest6784 #whats_new_most_recent_release_items_count6785 when recent release items exist6786 returns the count from the most recent file6787 when recent release items do NOT exist6788 returns nil6789 #display_whats_new?6790 returns true when gitlab.com6791 when self-managed6792 returns true if user is signed in6793 returns false if user isn't signed in6794 depending on whats_new_variant6795 variant: :all_tiers, result: true6796 returns correct result depending on variant6797 variant: :current_tier, result: true6798 returns correct result depending on variant6799 variant: :disabled, result: false6800 returns correct result depending on variant6801 #whats_new_variants6802 returns ApplicationSetting.whats_new_variants6803 #whats_new_variants_label6804 returns different labels depending on variant6805 #whats_new_variants_description6806 returns different descriptions depending on variant6807RuboCop::Cop::Migration::Datetime6808 # order random6809 when in migration6810 registers an offense when the ":datetime" data type is used on create_table6811 registers an offense when the ":timestamp" data type is used on create_table6812 does not register an offense when the ":datetime" data type is not used on create_table6813 does not register an offense when the ":datetime_with_timezone" data type is used on create_table6814 registers an offense when the ":datetime" data type is used on add_column6815 registers an offense when the ":timestamp" data type is used on add_column6816 does not register an offense when the ":datetime" data type is not used on add_column6817 does not register an offense when the ":datetime_with_timezone" data type is used on add_column6818 when outside of migration6819 registers no offense6820Gitlab::Ci::Reports::Security::AggregatedReport6821 #created_at6822 no reports6823 has no created date6824 report with no created date6825 has no created date6826 has reports6827 has oldest created date6828Tree6829 #readme6830 returns nil when repository does not contains a README file6831 returns nil when repository does not contains a previewable README file6832 returns README when repository contains a previewable README file6833 returns first previewable README when repository contains more than one6834 returns first plain text README when repository contains more than one6835 prioritizes previewable README file over one in plain text6836 #cursor6837 is expected to be an instance of Gitaly::PaginationCursor6838Resolvers::AlertManagement::HttpIntegrationsResolver6839 is expected to have nullable GraphQL type AlertManagementHttpIntegrationConnection6840 user does not have permission6841 is expected to be empty6842 user has developer permission6843 is expected to be empty6844 user has maintainer permission6845 is expected to contain exactly #<AlertManagement::HttpIntegration id: 1, created_at: "2023-06-02 06:46:52.985960409 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil>6846 when HTTP Integration ID is given6847 when integration is from the current project6848 is expected to contain exactly #<AlertManagement::HttpIntegration id: 2, created_at: "2023-06-02 06:46:52.991641688 +0000", updated_... "DataDog", payload_example: {}, payload_attribute_mapping: {}, type_identifier: "http", token: nil>6849 when integration is from other project6850 is expected to be empty6851Gitlab::Prometheus::MetricGroup6852 .common_metrics6853 returns exactly two groups6854 returns exactly three metric queries6855 orders by priority6856 .for_project6857 returns exactly one common metric6858Packages::Nuget::MetadataExtractionService6859 #execute6860 with valid package file id6861 is expected to eq {:authors=>"Test", :description=>"This is a dummy project", :package_dependencies=>[{:name=>"Newtonso...name=>"DummyProject.DummyPackage", :package_tags=>[], :package_types=>[], :package_version=>"1.0.0"}6862 with nuspec file6863 with dependencies6864 is expected to have key :package_dependencies6865 extracts dependencies6866 with package types6867 is expected to have key :package_types6868 extracts package types6869 with a nuspec file with metadata6870 is expected to eq ["bar", "foo", "tag1", "tag2", "tag3", "tag4", "tag5", "test"]6871 with a nuspec file with metadata6872 returns the correct metadata6873 with invalid package file id6874 behaves like raises an error6875 is expected to raise Packages::Nuget::MetadataExtractionService::ExtractionError with "invalid package file"6876 linked to a non nuget package6877 behaves like raises an error6878 is expected to raise Packages::Nuget::MetadataExtractionService::ExtractionError with "invalid package file"6879 with a 0 byte package file id6880 behaves like raises an error6881 is expected to raise Packages::Nuget::MetadataExtractionService::ExtractionError with "invalid package file"6882 without the nuspec file6883 behaves like raises an error6884 is expected to raise Packages::Nuget::MetadataExtractionService::ExtractionError with "nuspec file not found"6885 with a too big nuspec file6886 behaves like raises an error6887 is expected to raise Packages::Nuget::MetadataExtractionService::ExtractionError with "nuspec file too big"6888 with a corrupted nupkg file with a wrong entry size6889 behaves like raises an error6890 is expected to raise Packages::Nuget::MetadataExtractionService::ExtractionError with "nuspec file has the wrong entry size: entry 'DummyProject.DummyPackage.nuspec' should be 255B, but is larger when inflated."6891events/event/_common.html.haml6892 # order random6893 when it is a work item event6894 renders the correct url with iid6895 uses issue_type for the target_name6896 when it is an issue event6897 renders the correct url6898 uses issue_type for the target_name6899Wikis::GitGarbageCollectWorker6900 behaves like can collect git garbage6901 #perform6902 with active lease_uuid6903 flushes ref caches when the task if 'gc'6904 handles gRPC errors6905 behaves like it calls Gitaly6906 is expected to receive optimize_repository(*(any args)) 1 time6907 behaves like it updates the resource statistics6908 updates the resource statistics6909 does nothing if the database is read-only6910 with different lease than the active one6911 returns silently6912 with no active lease6913 when is able to get the lease6914 flushes ref caches when the task if 'gc'6915 behaves like it calls Gitaly6916 is expected to receive optimize_repository(*(any args)) 1 time6917 behaves like it updates the resource statistics6918 updates the resource statistics6919 does nothing if the database is read-only6920 when no lease can be obtained6921 returns silently6922 prune6923 is expected to receive prune_unreachable_objects(*(any args)) 1 time6924 eager6925 is expected to receive optimize_repository({:eager=>true}) 1 time6926IosSpecificTemplatesExperiment6927 is expected to equal true6928 skipping the experiment6929 no actor6930 is expected to be falsey6931 actor cannot create pipelines6932 is expected to be falsey6933 targeting a non iOS platform6934 is expected to be falsey6935 project has a ci.yaml file6936 is expected to be falsey6937 project has pipelines6938 is expected to be falsey6939ObjectStorage::S36940 # order random6941 .signed_head_url6942 when the provider is AWS6943 generates a signed url6944 delegates to Fog::AWS::Storage::Files#head_url6945Gitlab::Ci::Reports::CoverageReport6946 is expected to eq {}6947 #empty?6948 when no file has been added6949 is expected to equal true6950 when file has been added6951 is expected to equal false6952 #pick6953 returns only picked files while ignoring nonexistent ones6954 #add_file6955 when providing two individual files6956 initializes a new test suite and returns it6957 when providing the same files twice6958 with different line coverage6959 initializes a new test suite and returns it6960 with identical line coverage6961 initializes a new test suite and returns it6962ContainerExpirationPolicyPolicy6963 user_type: :anonymous, allowed_to_destroy_container_image: false6964 for user type anonymous6965 is expected not to be allowed :admin_container_image6966 user_type: :guest, allowed_to_destroy_container_image: false6967 for user type guest6968 is expected not to be allowed :admin_container_image6969 user_type: :developer, allowed_to_destroy_container_image: false6970 for user type developer6971 is expected not to be allowed :admin_container_image6972 user_type: :maintainer, allowed_to_destroy_container_image: true6973 for user type maintainer6974 is expected to be allowed :admin_container_image6975Rouge::Formatters::HTMLGitlab6976 #format6977 returns highlighted ruby code6978 when svg and indexes are present to trim6979 returns highlighted ruby code with svg6980 when options are empty6981 returns highlighted code without language6982 when line number is provided6983 returns highlighted ruby code with correct line number6984 when unicode control characters are used6985 highlights the control characters6986 when space characters and zero-width spaces are used6987 replaces the space characters with spaces6988Resolvers::CommitPipelinesResolver6989 resolves pipelines for commit and ref6990DisableJoins6991 passing disable_joins as an association option6992 when the association is a bare has_one6993 disallows the disable_joins option6994 when the association is a belongs_to6995 disallows the disable_joins option6996 when the association is has_one :through6997 allows the disable_joins option6998 when the association is a bare has_many6999 disallows the disable_joins option7000 when the association is a has_many :through7001 allows the disable_joins option7002 querying has_one :through when disable_joins is set7003 when disable_joins evaluates to true7004 executes separate queries7005 when disable_joins evalutes to false7006 executes a single query7007 querying has_many :through when disable_joins is set7008 when disable_joins evaluates to true7009 executes separate queries7010 when disable_joins evalutes to false7011 executes a single query7012 querying STI relationships7013 filters correctly by the STI type across multiple queries7014 querying polymorphic relationships7015 filters correctly by the polymorphic type across multiple queries7016UserAgentDetail7017 .submittable?7018 is submittable when not already submitted7019 is not submittable when already submitted7020 .valid?7021 is valid with a subject7022 is invalid without a subject7023gitlab:db:decomposition:connection_status7024 # order random7025 when separate ci database is configured7026 does not show connection information7027 when separate ci database is not configured7028 when PostgreSQL max_connections is too low7029 suggests to increase it (PENDING: Skipping because some of the extra databases [:ci, :main_clusterwide, :embedding, :geo] are setup)7030 when PostgreSQL max_connections is high enough7031 only shows current status (PENDING: Skipping because some of the extra databases [:ci, :main_clusterwide, :embedding, :geo] are setup)7032Gitlab::Diff::LineMapper7033 #old_to_new7034 with a diff file7035 returns the new line number for the old line number7036 without a diff file7037 returns the same line number7038 #new_to_old7039 with a diff file7040 returns the old line number for the new line number7041 without a diff file7042 returns the same line number7043Gitlab::SidekiqLogging::DeduplicationLogger7044 #log_deduplication7045 logs a deduplication message to the sidekiq logger7046 does not modify the job7047 #rescheduled_log7048 logs a rescheduled message to the sidekiq logger7049 does not modify the job7050FormHelper7051 #dropdown_max_select7052 correctly returns the max amount of reviewers or assignees to allow7053 #assignees_dropdown_options7054 with multiple assignees7055 correctly returns the max amount of assignees to allow7056 with only 1 assignee7057 correctly returns the max amount of assignees to allow7058 #reviewers_dropdown_options7059 with multiple reviewers7060 correctly returns the max amount of reviewers or assignees to allow7061 with only 1 reviewer7062 correctly returns the max amount of reviewers or assignees to allow7063 form_errors7064 returns nil when model has no errors7065 renders an appropriately styled alert div7066 contains a summary message7067 renders each message7068 renders messages truncated if requested7069 renders custom messages without the attribute name prefix7070 renders help page links7071IdentityProviderPolicy7072 #rules7073 is expected to be allowed :link7074 is expected to be allowed :unlink7075 when user is anonymous7076 is expected not to be allowed :link7077 is expected not to be allowed :unlink7078 when provider is saml7079 is expected to be allowed :link7080 is expected not to be allowed :unlink7081Issues::CloseWorker7082 # order random7083 #perform7084 #perform7085 when the user can update the issues7086 closes the issues7087 closes external issues7088 when the user can not update the issues7089 does not close the issues7090 when the project does not exist7091 behaves like when object does not exist7092 does not call the close issue service7093 when the user does not exist7094 behaves like when object does not exist7095 does not call the close issue service7096 when the issue does not exist7097 behaves like when object does not exist7098 does not call the close issue service7099Achievements::UserAchievement7100 # order random7101 scopes7102 .not_revoked7103 only returns user achievements which have not been revoked7104 associations7105 is expected to belong to achievement inverse_of => user_achievements required: true7106 is expected to belong to user inverse_of => user_achievements required: true7107 is expected to belong to awarded_by_user class_name => User inverse_of => awarded_user_achievements required: true7108 is expected to belong to revoked_by_user class_name => User inverse_of => revoked_user_achievements optional: true7109 #revoked?7110 when revoked7111 is expected to equal true7112 when not revoked7113 is expected to equal false7114Gitlab::DependencyLinker::GoSumLinker7115 .support?7116 supports go.sum7117 does not support other files7118 #link7119 links modules7120 links checksums7121Ci::BuildsHelper7122 #sidebar_build_class7123 build_id: 1, current_build_id: 1, retried: true, expected_result: "active retried"7124 builds sidebar html class7125 build_id: 1, current_build_id: 1, retried: false, expected_result: "active"7126 builds sidebar html class7127 build_id: 1, current_build_id: 2, retried: false, expected_result: ""7128 builds sidebar html class7129 build_id: 1, current_build_id: 2, retried: true, expected_result: "retried"7130 builds sidebar html class7131 #javascript_build_options7132 returns build options7133 #build_failed_issue_options7134 returns failed title and description7135Packages::Helm::PackagesFinder7136 #execute7137 with project7138 with channel7139 is expected to eq [#<Packages::Package id: 6, project_id: 923, created_at: "2023-06-02 06:47:23.311964218 +0000", updat...sion: "v1.0.1", package_type: "helm", creator_id: 1801, status: "default", last_downloaded_at: nil>]7140 ignores duplicate package files7141 is expected to eq [#<Packages::Package id: 6, project_id: 923, created_at: "2023-06-02 06:47:23.311964218 +0000", updat...sion: "v1.0.1", package_type: "helm", creator_id: 1801, status: "default", last_downloaded_at: nil>]7142 let clients use select id7143 is expected to eq [6]7144 with not existing channel7145 is expected to be empty7146 with no channel7147 is expected to be empty7148 with no helm packages7149 is expected to be empty7150 with no project7151 is expected to be empty7152 when the limit is hit7153 is expected to eq [#<Packages::Package id: 11, project_id: 923, created_at: "2023-06-02 06:47:23.844309281 +0000", upda...sion: "v1.0.3", package_type: "helm", creator_id: 1801, status: "default", last_downloaded_at: nil>]7154DeclarativeEnum7155 .key7156 when the argument is set7157 changes the key7158 when the argument is `nil`7159 is expected to eq :my_enum7160 .name7161 when the argument is set7162 changes the name7163 when the argument is `nil`7164 is expected to eq "MyEnumName"7165 .description7166 when the argument is set7167 changes the description7168 when the argument is `nil`7169 is expected to eq "Enum description"7170 .define7171 when there is a block given7172 when the given block tries to register the same key7173 raises a `KeyCollisionError`7174 when the given block does not try to register the same key7175 appends the new definition7176 when there is no block given7177 raises a LocalJumpError7178 .definition7179 is expected to eq {:bar=>{:description=>"description of bar", :value=>1}, :foo=>{:description=>"description of foo", :value=>0}}7180 extending the enum module7181 extends the values of the base enum module7182Gitlab::Patch::Uri7183 # order random7184 #parse7185 raises an error if the URI is too long7186 does not raise an error if the URI is not too long7187Sidebars::Projects::SuperSidebarMenus::AnalyzeMenu7188 # order random7189 has title and sprite_icon7190 defines list of NilMenuItem placeholders7191Gitlab::LoopHelpers7192 #loop_until7193 when limit is not given7194 raises an error7195 when timeout is specified7196 returns false after it's expired7197 executes the block at least once7198 when iteration limit is specified7199 returns false after it's expired7200 executes the block once7201Users::MigrateRecordsToGhostUserInBatchesWorker7202 # order random7203 migrates issue to ghost user7204 is labeled as idempotent7205 performs multiple times sequentially without raising an exception7206 #perform7207 executes service with lease7208Gitlab::Git::HookEnv7209 .set7210 with RequestStore disabled7211 does not store anything7212 with RequestStore enabled7213 whitelist some `GIT_*` variables and stores them using RequestStore7214 .all7215 with RequestStore enabled7216 returns an env hash7217 .to_env_hash7218 with RequestStore enabled7219 input: nil, output: nil7220 puts the right value in the hash7221 input: "foo", output: "foo"7222 puts the right value in the hash7223 input: [], output: ""7224 puts the right value in the hash7225 input: ["foo"], output: "foo"7226 puts the right value in the hash7227 input: ["foo", "bar"], output: "foo:bar"7228 puts the right value in the hash7229 thread-safety7230 with RequestStore enabled7231 is thread-safe7232DesignManagement::CopyDesignCollectionWorker7233 #perform7234 calls DesignManagement::CopyDesignCollection::CopyService7235 logs if there was an error calling the service7236 behaves like an idempotent worker7237 is labeled as idempotent7238 performs multiple times sequentially without raising an exception7239 is expected to receive perform(*(any args)) 2 times7240Gitlab::Nav::TopNavMenuHeader7241 # order random7242 .build7243 builds a hash from with the given header7244Gitlab::Email::Message::InProductMarketing::TrialShort7245 public methods7246 returns value for series7247 #progress7248 on gitlab.com7249 is expected to eq "This is email 1 of 4 in the Trial series."7250 not on gitlab.com7251 is expected to include "This is email 1 of 4 in the Trial series" and "http://localhost/-/profile/notifications"7252InitializerConnections7253 .raise_if_new_database_connection7254 prevents any database connection within the block7255 prevents any database connection re-use within the block7256 does not prevent database connection if SKIP_RAISE_ON_INITIALIZE_CONNECTIONS is set7257 prevents any database connection if SKIP_RAISE_ON_INITIALIZE_CONNECTIONS is false7258 restores original connection handler7259 restores original connection handler even there is an error7260 does not raise if connection_pool is retrieved in the block7261ProtectedBranchAccessPolicy7262 # order random7263 as guests7264 can not be read7265 as maintainers7266 can be read7267Types::MergeRequestReviewStateEnum7268 the correct enum members7269Gitlab::GithubImport::Importer::Attachments::MergeRequestsImporter7270 # order random7271 #sidekiq_worker_class7272 is expected to eq Gitlab::GithubImport::Attachments::ImportMergeRequestWorker7273 #collection_method7274 is expected to eq :merge_request_attachments7275 #id_for_already_imported_cache7276 is expected to eq 10467277 #sequential_import7278 imports each project merge request attachments7279 when merge request is already processed7280 doesn't import this merge request attachments7281 #object_type7282 is expected to eq :merge_request_attachment7283Types::ReleaseSourceType7284 is expected to require graphql authorizations :read_code7285 has the expected fields7286Gitlab::Ci::Build::Releaser7287 #script7288 all nodes7289 generates the script7290 individual nodes7291 node_name: :name, node_value: "Release $CI_COMMIT_SHA", result: "release-cli create --name \"Release $CI_COMMIT_SHA\""7292 generates the script7293 node_name: :description, node_value: "Release-cli $EXTRA_DESCRIPTION", result: "release-cli create --description \"Release-cli $EXTRA_DESCRIPTION\""7294 generates the script7295 node_name: :tag_name, node_value: "release-$CI_COMMIT_SHA", result: "release-cli create --tag-name \"release-$CI_COMMIT_SHA\""7296 generates the script7297 node_name: :tag_message, node_value: "Annotated tag message", result: "release-cli create --tag-message \"Annotated tag message\""7298 generates the script7299 node_name: :ref, node_value: "$CI_COMMIT_SHA", result: "release-cli create --ref \"$CI_COMMIT_SHA\""7300 generates the script7301 node_name: :milestones, node_value: ["m1", "m2", "m3"], result: "release-cli create --milestone \"m1\" --milestone \"m2\" --milestone \"m3\""7302 generates the script7303 node_name: :released_at, node_value: "2020-07-15T08:00:00Z", result: "release-cli create --released-at \"2020-07-15T08:00:00Z\""7304 generates the script7305 node_name: :assets, node_value: {:links=>[{:name=>"asset1", :url=>"https://example.com/assets/1", :link_type=>"other", :filepath=>"/pretty/asset/1"}]}, result: "release-cli create --assets-link \"{\\\"name\\\":\\\"asset1\\\",\\\"url\\\":\\\"https://example.com/assets/1\\\",\\\"link_type\\\":\\\"other\\\",\\\"filepath\\\":\\\"/pretty/asset/1\\\"}\""7306 generates the script7307Namespaces::ScheduleAggregationWorker#perform7308 when group is the root ancestor7309 when aggregation schedule exists7310 does not create a new one7311 when aggregation schedule does not exist7312 creates one7313 when group is not the root ancestor7314 creates an aggregation schedule for the root7315 when namespace does not exist7316 logs the error7317 behaves like an idempotent worker7318 is labeled as idempotent7319 performs multiple times sequentially without raising an exception7320 creates a single aggregation schedule7321Gitlab::Metrics::Subscribers::ActionCable7322 #transmit7323 for transmissions initiated by Channel instance7324 tracks the event with "caller" set to "channel"7325 for transmissions initiated by GraphQL event subscriber7326 tracks the event with correct "caller" and "broadcasting"7327 is indifferent to keys being symbols or strings in result payload7328 when transmission is coming from unknown source7329 tracks the event with "caller" set to "unknown"7330 #broadcast7331 when broadcast is for a GraphQL event7332 tracks the event with broadcasting set to event topic7333 when broadcast is for a GraphQL channel subscription7334 strips out subscription ID from broadcasting7335 when broadcast is something else7336 tracks the event as "unknown"7337 #transmit_subscription_confirmation7338 tracks the subscription confirmation event7339 #transmit_subscription_rejection7340 tracks the subscription rejection event7341ExpireBuildArtifactsWorker7342 #perform7343 executes a service7344Gitlab::Ci::Config::External::Mapper::Normalizer7345 # order random7346 #process7347 converts locations to canonical form7348ApplicationsFinder7349 #execute7350 returns an array of instance applications7351 by_id7352 with existing id7353 returns the application7354 with invalid id7355 returns nil for user application7356 returns nil for group application7357 returns nil for non-existing application7358Keys::RevokeService7359 # order random7360 does not unverifies signatures if destroy fails7361 unverifies associated signatures7362 destroys a key7363Namespaces::ProjectNamespace7364 relationships7365 is expected to have one project inverse_of => project_namespace7366 is expected to eq #<Project id:933 namespace904/project-995>>7367 validations7368 is expected not to validate that :owner cannot be empty/falsy7369 when deleting project namespace7370 also deletes associated project7371ProjectMetricsSetting7372 Associations7373 is expected to belong to project required: false7374 Validations7375 when external_dashboard_url is over 255 chars7376 fails validation7377 with unsafe url7378 is expected to be invalid7379 non ascii chars in external_dashboard_url7380 is expected to be invalid7381 internal url in external_dashboard_url7382 is expected to be valid7383 dashboard_timezone7384 is expected to define :dashboard_timezone as an enum backed by an integer with values ‹{local: 0, utc: 1}›7385 defaults to local7386 #dashboard_timezone=7387 downcases string7388MergeRequestSidebarExtrasEntity7389 #assignees7390 contains assignees attributes7391 #reviewers7392 contains reviewers attributes7393Projects::OpenMergeRequestsCountService7394 behaves like a counter caching service7395 #count7396 caches the count7397 #refresh_cache7398 refreshes the cache7399 #delete_cache7400 removes the cache7401 #uncached_count7402 does not cache the count7403 #count7404 returns the number of open merge requests7405Katalon.gitlab-ci.yml7406 # order random7407 the created pipeline7408 create katalon tests jobs7409Snippets::ScheduleBulkRepositoryShardMovesService7410 behaves like moves repository shard in bulk7411 #execute7412 schedules container repository storage moves7413 read-only repository7414 does not get scheduled7415 .enqueue7416 defers to the worker7417Integrations::EventEntity7418 #as_json7419 with integration without fields7420 exposes correct attributes7421 with integration with fields7422 exposes correct attributes7423BytesizeValidator7424 # order random7425 content: "short⇏", validity: false, errors: {:content=>["is too long (8 Bytes). The maximum size is 7 Bytes."]}7426 is expected to eq false7427 is expected to eq {:content=>["is too long (8 Bytes). The maximum size is 7 Bytes."]}7428 content: "very long", validity: false, errors: {:content=>["is too long (9 Bytes). The maximum size is 7 Bytes."]}7429 is expected to eq false7430 is expected to eq {:content=>["is too long (9 Bytes). The maximum size is 7 Bytes."]}7431 content: "short", validity: true, errors: {}7432 is expected to eq true7433 is expected to eq {}7434 content: "short😁", validity: false, errors: {:content=>["is too long (9 Bytes). The maximum size is 7 Bytes."]}7435 is expected to eq false7436 is expected to eq {:content=>["is too long (9 Bytes). The maximum size is 7 Bytes."]}7437NestedAttributesDuplicatesValidator7438 #validate_each7439 with no scope7440 does not have any errors7441 with duplicates7442 has a duplicate key error7443 with a scope attribute7444 does not have any errors7445 with duplicates7446 has a duplicate key error7447 with a child attribute7448 does not have any errors7449 when name is duplicated7450 has a duplicate error7451 when url is duplicated7452 has a duplicate error7453Gitlab::Pagination::Keyset::RequestContext7454 #page7455 with only order_by given7456 extracts order_by/sorting information7457 with order_by and sort given7458 extracts order_by/sorting information and adds tie breaker7459 with no order_by information given7460 defaults to tie breaker7461 with per_page params given7462 extracts per_page information7463 #apply_headers7464 sets Link header with same host/path as the original request7465 sets Link header with a link to the next page7466 with descending order7467 sets Link header with a link to the next page7468Gitlab::Metrics::Exporter::MetricsMiddleware7469 #call7470 records a total requests metric7471 records a request duration histogram7472Clusters::Cleanup::ServiceAccountWorker7473 #perform7474 when cluster.cleanup_status is cleanup_removing_service_account7475 calls Clusters::Cleanup::ServiceAccountService7476 when cluster.cleanup_status is not cleanup_removing_service_account7477 does not call Clusters::Cleanup::ServiceAccountService7478MergeRequestCurrentUserEntity7479 as json7480 exposes needed attributes7481ProjectCustomAttribute7482 assocations7483 is expected to belong to project required: false7484 validations7485 is expected to validate that :project cannot be empty/falsy7486 is expected to validate that :key cannot be empty/falsy7487 is expected to validate that :value cannot be empty/falsy7488 is expected to validate that :key is case-sensitively unique within the scope of :project_id7489BulkImports::Projects::Pipelines::ExternalPullRequestsPipeline7490 #run7491 imports external pull request7492 when status is closed7493 imports closed external pull request7494 when from fork7495 does not create external pull request7496ContainerTagEntity7497 exposes required informations7498 when user can manage repositories7499 exposes destroy_path7500 when user cannot manage repositories7501 does not expose destroy_path7502Tooling::ParallelRSpecRunner7503 #run7504 without filter_tests_file option7505 behaves like runs node tests7506 runs rspec with tests allocated for this node7507 given filter tests file7508 when filter_tests_file is empty7509 behaves like runs node tests7510 runs rspec with tests allocated for this node7511 when filter_tests_file does not exist7512 behaves like runs node tests7513 runs rspec with tests allocated for this node7514 when filter_tests_file is not empty7515 behaves like runs node tests7516 runs rspec with tests allocated for this node7517 with rspec args7518 behaves like runs node tests7519 runs rspec with tests allocated for this node7520Gitlab::SafeRequestPurger7521 .execute7522 purges an entry from the store7523 #execute7524 when request store is active7525 purges an entry from the store7526 when there are multiple resource_ids to purge7527 purges an entry from the store7528 when there is no matching resource_ids7529 purges an entry from the store7530 when request store is not active7531 does offer the ability to interact with data store7532Types::Ci::JobTraceType7533 # order random7534 has the correct fields7535 shows the correct trace contents7536Gitlab::Kubernetes::RolloutInstances7537 #pod_instances7538 returns an instance for a deployment with one pod7539 returns a pending pod for a missing replica7540 returns instances when there are two stable deployments7541 returns instances for two deployments with different tracks7542 sorts stable tracks after canary tracks7543IssueUserMention7544 associations7545 is expected to belong to issue required: false7546 is expected to belong to note required: false7547 behaves like has user mentions7548 #has_mentions?7549 when no mentions7550 returns false7551 when mentioned_users_ids not null7552 returns true7553 when mentioned projects7554 returns true7555 when mentioned groups7556 returns true7557Ci::DagStageEntity7558 #as_json7559 contains valid name7560 contains the job groups7561 matches schema7562Gitlab::Database::MigrationHelpers::AnnounceDatabase7563 #announce7564 prefixes message with database name7565 #say7566 prefixes message with database name7567 prefixes subitem message with database name7568 #write7569 does not prefix empty write7570Gitlab::DependencyLinker::GoModLinker7571 .support?7572 supports go.mod7573 does not support other files7574 #link7575 links the module name7576 links dependencies7577profiles/keys/_key_details.html.haml7578 # order random7579 displays the usage type7580 usage_type: :auth, usage_type_text: "Authentication"7581 renders usage type text7582 usage_type: :auth_and_signing, usage_type_text: "Authentication & Signing"7583 renders usage type text7584 usage_type: :signing, usage_type_text: "Signing"7585 renders usage type text7586Namespaces::PruneAggregationSchedulesWorker#perform7587 schedules a worker per pending aggregation7588Tooling::Crystalball::CoverageLinesExecutionDetector7589 #detect7590 is expected to eq ["file.rb"]7591 with no changes7592 is expected to eq []7593 with previously uncovered file7594 is expected to eq ["file.rb"]7595 with path outside of root7596 is expected to eq []7597 with path in excluded prefix7598 is expected to eq []7599ExternalLinkHelper7600 returns external link with icon7601 allows options when creating external link with icon7602 sanitizes and returns external link with icon7603Gitlab::MarkdownCache::Redis::Store7604 .bulk_read7605 returns a hash of values from store7606 #save7607 stores updates to html fields and version7608 #read7609 reads the html fields and version from redis if they were stored7610 is mared loaded after reading7611Types::WorkItemType7612 is expected to eq "WorkItem"7613 is expected to require graphql authorizations :read_work_item7614 is expected to expose permissions using Types::PermissionTypes::WorkItem7615 has specific fields7616Types::InvitationInterface7617 exposes the expected fields7618 .resolve_type7619 for project member7620 is expected to equal Types::ProjectInvitationType7621 for group member7622 is expected to equal Types::GroupInvitationType7623 for an unknown type7624 raises an error7625Sidebars::Projects::Menus::SnippetsMenu7626 behaves like serializable as super_sidebar_menu_args7627 returns hash with provided attributes7628 returns hash with an item_id7629 #render?7630 when user cannot access snippets7631 returns false7632 when user can access snippets7633 returns true7634Gitlab::Ci::Reports::TerraformReports7635 initializes plans with and empty hash7636 #add_plan7637 when providing two unique plans7638 returns two plans7639 when providing the same plan twice7640 returns the last added plan7641Tooling::Danger::ConfigFiles7642 # order random7643 #new_config_files7644 returns added, modified, and renamed_after files by default7645 #add_suggestion_for_missing_introduced_by_url7646 when config file has an empty introduced_by_url line7647 adds suggestions at the correct line7648 when config file has an introduced_by_url line with value7649 does not add suggestion7650CsvBuilders::Stream7651 #render7652 returns a lazy enumerator7653 returns all rows up to default max value7654 truncates to max rows7655API::Entities::ProjectJobTokenScope7656 # order random7657 #as_json7658 includes basic fields7659 includes basic fields7660Gitlab::WordDiff::Parser7661 #parse7662 returns a collection of lines7663 restarts object index after several calls to Enumerator7664 when diff is empty7665 is expected to eq []7666Gitlab::ZoomUrlValidator7667 validations7668 when zoom link starts with https7669 passes validation7670 when zoom link does not start with https7671 fails validation7672 when zoom link does not start with a scheme7673 fails validation7674Types::TimeTracking::TimelogCategoryType7675 is expected to eq "TimeTrackingTimelogCategory"7676 is expected to have graphql fields "id", "name", "description", "color", "billable", "billing_rate", "created_at", and "updated_at"7677 is expected to require graphql authorizations :read_timelog_category7678projects/issues/_related_issues.html.haml7679 # order random7680 when current user can read issue link for the project7681 adds the report abuse path as a data attribute7682 when current user cannot read issue link for the project7683 does not render the related issues root node7684Gitlab::Import::Errors7685 # order random7686 .merge_nested_errors7687 merges nested collection errors7688Gitlab::Pagination::Keyset::InOperatorOptimization::OrderByColumnData7689 #arel_column7690 delegates to column_expression7691 #column_for_projection7692 returns the expression with AS using the original column name7693 #projection7694 returns the expression with AS using the specified column lias7695Types::Ci::RecentFailuresType7696 is expected to eq "RecentFailures"7697 contains attributes related to a recent failure history for a test case7698Types::AlertManagement::HttpIntegrationType7699 is expected to eq "AlertManagementHttpIntegration"7700 is expected to require graphql authorizations :admin_operations7701RuboCop::NodePatternHelper7702 # order random7703 #const_pattern7704 returns nested const node patterns7705 returns nested const node patterns with custom parent7706Types::Ci::Config::IncludeTypeEnum7707 is expected to eq "CiConfigIncludeType"7708 exposes all the existing include types7709ResourceEvent7710 # order random7711 raises error on not implemented `issuable` method7712 raises error on not implemented `synthetic_note_class` method7713Types::Ci::Config::ConfigType7714 is expected to eq "CiConfig"7715 exposes the expected fields7716Gitlab::AppLogger7717 is expected to equal Gitlab::AppJsonLogger7718 logs to AppJsonLogger7719Gitlab::Ci::Build::Port7720 when port is defined as an integer7721 populates the object7722 when port is defined as hash7723 populates the object7724Resolvers::PackageDetailsResolver7725 #resolve7726 is expected to eq #<Packages::Package id: 12, project_id: 949, created_at: "2023-06-02 06:48:11.986065866 +0000", updat...on: "1.0.1", package_type: "composer", creator_id: 1850, status: "default", last_downloaded_at: nil>7727Types::AvailabilityEnum7728 is expected to eq "AvailabilityEnum"7729 exposes all the existing access levels7730Gitlab::Memory::ReportsUploader7731 # order random7732 #upload7733 calls fog, logs upload requested and success with duration7734 when Google API responds with an error7735 logs error raised by Fog and do not re-raise7736Types::JiraImportType7737 is expected to eq "JiraImport"7738 has the expected fields7739API::Entities::Projects::Topic7740 exposes correct attributes7741Integrations::BaseSlackNotification7742 # order random7743 #metrics_key_prefix (private method)7744 raises a NotImplementedError error when not defined7745Types::Ci::PipelineScheduleStatusEnum7746 # order random7747 exposes the status of a pipeline schedule7748 is expected to eq "PipelineScheduleStatus"7749layouts/_published_experiments7750 renders out data for all non-excluded, published experiments7751UploaderHelper7752 #extension_match?7753 returns false if file does not exist7754Gitlab::Usage::Metrics::Instrumentations::CountCiRunnersMetric7755 # order random7756 behaves like a correct instrumented metric value7757 has correct value7758Gitlab::Serializer::Ci::Variables7759 converts keys into strings and symbolizes hash7760Gitlab::NoCacheHeaders7761 #no_cache_headers7762 raises a RuntimeError7763Sidebars::UncategorizedMenu7764 # order random7765 has title and sprite_icon7766Gitlab::Kubernetes::ConfigMaps::AwsNodeAuth7767 #generate7768 builds a Kubeclient Resource7769Gitlab::Metrics::Dashboard::Stages::TrackPanelType7770 #transform!7771 creates tracking event7772Gitlab::Graphql::CopyFieldDescription7773 .copy_field_description7774 returns the correct description7775Knapsack report was generated. Preview:7776{7777 "spec/services/merge_requests/push_options_handler_service_spec.rb": 179.36057658600112,7778 "spec/services/issues/update_service_spec.rb": 167.38019761100077,7779 "spec/models/project_team_spec.rb": 120.61484056300105,7780 "spec/lib/gitlab/git/tree_spec.rb": 76.9245883399999,7781 "spec/lib/banzai/filter/references/issue_reference_filter_spec.rb": 57.44608581099965,7782 "spec/models/concerns/mentionable_spec.rb": 58.55129075299919,7783 "spec/lib/gitlab/url_blocker_spec.rb": 20.341104990999156,7784 "spec/services/event_create_service_spec.rb": 37.065535191999516,7785 "spec/helpers/groups_helper_spec.rb": 12.939239733001159,7786 "spec/models/operations/feature_flags/user_list_spec.rb": 9.085817960996792,7787 "spec/lib/gitlab/ci/status/pipeline/factory_spec.rb": 27.734772759002226,7788 "spec/workers/database/batched_background_migration/ci_database_worker_spec.rb": 22.677897507001035,7789 "spec/presenters/merge_request_presenter_spec.rb": 17.29125749100058,7790 "spec/policies/group_member_policy_spec.rb": 20.990929006999067,7791 "spec/lib/gitlab/database/reflection_spec.rb": 19.666398666999157,7792 "spec/lib/gitlab/ci/variables/collection_spec.rb": 3.7394069619986112,7793 "spec/models/concerns/integrations/has_data_fields_spec.rb": 16.944470824997552,7794 "spec/lib/gitlab/ci/pipeline/chain/validate/abilities_spec.rb": 19.529468527998688,7795 "spec/serializers/diffs_entity_spec.rb": 11.445328467998479,7796 "spec/models/pages_domain_spec.rb": 6.3443976509988715,7797 "spec/models/hooks/system_hook_spec.rb": 13.48890512500293,7798 "spec/finders/clusters/knative_services_finder_spec.rb": 16.769310218998726,7799 "spec/workers/projects/after_import_worker_spec.rb": 11.850013929000852,7800 "spec/services/auto_merge_service_spec.rb": 12.860708588999842,7801 "spec/lib/gitlab/ci/runner_upgrade_check_spec.rb": 9.87233338599981,7802 "spec/haml_lint/linter/documentation_links_spec.rb": 3.03191207999771,7803 "spec/models/metrics/dashboard/annotation_spec.rb": 5.811991337999643,7804 "spec/helpers/tree_helper_spec.rb": 6.58762678399944,7805 "spec/models/diff_viewer/base_spec.rb": 11.448190187002183,7806 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb": 2.1300856420020864,7807 "spec/lib/gitlab/prometheus/queries/additional_metrics_environment_query_spec.rb": 12.203110405000189,7808 "spec/graphql/mutations/design_management/upload_spec.rb": 10.647191752999788,7809 "spec/models/merge_request/metrics_spec.rb": 10.052335694002977,7810 "spec/lib/gitlab/import_export/merge_request_parser_spec.rb": 10.139045068000996,7811 "spec/presenters/clusters/cluster_presenter_spec.rb": 8.47456289299953,7812 "spec/lib/gitlab/graphql/queries_spec.rb": 2.196209107998584,7813 "spec/lib/gitlab/application_context_spec.rb": 4.085001157000079,7814 "spec/experiments/application_experiment_spec.rb": 3.569544483001664,7815 "spec/graphql/mutations/issues/set_confidential_spec.rb": 8.100986459001433,7816 "spec/services/system_notes/commit_service_spec.rb": 7.445086464002088,7817 "spec/lib/gitlab_spec.rb": 2.693382962999749,7818 "spec/graphql/resolvers/group_milestones_resolver_spec.rb": 4.771991579000314,7819 "spec/services/work_items/task_list_reference_removal_service_spec.rb": 7.008335943999555,7820 "spec/lib/gitlab/database/query_analyzers/prevent_cross_database_modification_spec.rb": 3.9773439439995855,7821 "spec/graphql/mutations/merge_requests/create_spec.rb": 7.476293781997811,7822 "spec/scripts/review_apps/automated_cleanup_spec.rb": 1.7227710410006694,7823 "spec/services/jira_import/start_import_service_spec.rb": 4.859130564000225,7824 "spec/services/lfs/locks_finder_service_spec.rb": 5.415144744998543,7825 "spec/policies/metrics/dashboard/annotation_policy_spec.rb": 3.9321520580015203,7826 "spec/lib/gitlab/redis/feature_flag_spec.rb": 2.491496978000214,7827 "spec/graphql/mutations/issues/create_spec.rb": 7.018610194001667,7828 "spec/lib/gitlab/ci/status/build/retryable_spec.rb": 7.14643450499716,7829 "spec/lib/sidebars/projects/menus/repository_menu_spec.rb": 2.6472420470017823,7830 "spec/helpers/page_layout_helper_spec.rb": 2.3179848500003573,7831 "spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb": 1.858533251001063,7832 "spec/services/projects/hashed_storage/migration_service_spec.rb": 3.364056847000029,7833 "spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb": 3.434674572003132,7834 "spec/services/service_response_spec.rb": 1.2570489929967152,7835 "spec/services/branches/delete_service_spec.rb": 4.311473280999053,7836 "spec/tooling/graphql/docs/renderer_spec.rb": 1.3179142190019775,7837 "spec/workers/database/batched_background_migration/main_execution_worker_spec.rb": 1.712607202000072,7838 "spec/graphql/types/base_enum_spec.rb": 1.0745290449995082,7839 "spec/initializers/lograge_spec.rb": 2.514146656001685,7840 "spec/models/integrations/custom_issue_tracker_spec.rb": 1.5361610830004793,7841 "spec/services/projects/move_project_group_links_service_spec.rb": 3.9944764640022186,7842 "spec/models/user_interacted_project_spec.rb": 1.3759486649978498,7843 "spec/lib/banzai/filter/image_link_filter_spec.rb": 0.9051010180010053,7844 "spec/workers/gitlab/jira_import/stage/import_attachments_worker_spec.rb": 0.9684302530004061,7845 "spec/rubocop/cop/api/ensure_string_detail_spec.rb": 0.6060572979986318,7846 "spec/views/projects/commit/_commit_box.html.haml_spec.rb": 5.021341072002542,7847 "spec/lib/gitlab/repository_cache_spec.rb": 1.5387772139984008,7848 "spec/models/group_deploy_key_spec.rb": 1.7071895619992574,7849 "spec/services/system_notes/incidents_service_spec.rb": 1.7510815179994097,7850 "spec/rubocop/formatter/todo_formatter_spec.rb": 0.9894661119978991,7851 "spec/workers/ci/drop_pipeline_worker_spec.rb": 3.277012181999453,7852 "spec/graphql/resolvers/ci/config_resolver_spec.rb": 2.0560453069992946,7853 "spec/tasks/gitlab/db/decomposition/rollback/bump_ci_sequences_rake_spec.rb": 4.358651708000252,7854 "spec/lib/unnested_in_filters/rewriter_spec.rb": 0.8420562020000943,7855 "spec/lib/gitlab/security/scan_configuration_spec.rb": 1.4521583790010482,7856 "spec/rubocop/cop/rspec/be_success_matcher_spec.rb": 0.7361384389987506,7857 "spec/lib/gitlab/email/attachment_uploader_spec.rb": 1.7703889969998272,7858 "spec/lib/constraints/project_url_constrainer_spec.rb": 2.5686229819984874,7859 "spec/graphql/types/color_type_spec.rb": 0.530655812999612,7860 "spec/workers/integrations/slack_event_worker_spec.rb": 0.7653325369974482,7861 "spec/lib/gitlab/database/migrations/batched_migration_last_id_spec.rb": 0.8707113989985373,7862 "spec/finders/user_group_notification_settings_finder_spec.rb": 3.2234434570018493,7863 "spec/services/projects/move_project_authorizations_service_spec.rb": 4.343346378998831,7864 "spec/workers/error_tracking_issue_link_worker_spec.rb": 1.0207769389999157,7865 "spec/graphql/resolvers/concerns/caching_array_resolver_spec.rb": 2.2543853640017915,7866 "spec/lib/gitlab/database/schema_validation/schema_inconsistency_spec.rb": 1.456087378999655,7867 "spec/lib/gitlab/harbor/query_spec.rb": 1.6603263650031295,7868 "spec/lib/error_tracking/sentry_client/issue_link_spec.rb": 3.5180000760010444,7869 "spec/initializers/forbid_sidekiq_in_transactions_spec.rb": 0.5934794189997774,7870 "spec/models/users/phone_number_validation_spec.rb": 1.974536352998257,7871 "spec/workers/gitlab/export/prune_project_export_jobs_worker_spec.rb": 3.295258121997904,7872 "spec/services/projects/readme_renderer_service_spec.rb": 0.7146994700015057,7873 "spec/services/integrations/slack_interactions/slack_block_actions/incident_management/project_update_handler_spec.rb": 2.075840495999728,7874 "spec/graphql/mutations/customer_relations/contacts/create_spec.rb": 2.6369895379975787,7875 "spec/lib/gitlab/jira_import/base_importer_spec.rb": 1.8768704200010689,7876 "spec/lib/banzai/filter/service_desk_upload_link_filter_spec.rb": 0.4411286499998823,7877 "spec/services/error_tracking/list_issues_service_spec.rb": 3.57624018199931,7878 "spec/policies/alert_management/alert_policy_spec.rb": 1.8017102150006394,7879 "spec/models/ci/build_pending_state_spec.rb": 3.438623122001445,7880 "spec/lib/gitlab/seeders/ci/variables_project_seeder_spec.rb": 1.302630690002843,7881 "spec/lib/gitlab/github_import/markdown/attachment_spec.rb": 0.9864250219980022,7882 "spec/lib/gitlab/github_import/importer/repository_importer_spec.rb": 0.7296449790010229,7883 "spec/lib/gitlab/webpack/manifest_spec.rb": 0.7453017179977905,7884 "spec/workers/packages/cleanup_package_file_worker_spec.rb": 1.475225017999037,7885 "spec/lib/gitlab/github_import/representation/user_spec.rb": 0.4733882969994738,7886 "spec/lib/gitlab/hook_data/merge_request_builder_spec.rb": 2.991895752998971,7887 "spec/graphql/resolvers/project_pipeline_statistics_resolver_spec.rb": 3.260243654000078,7888 "spec/services/issuable/callbacks/milestone_spec.rb": 2.3108739999988757,7889 "spec/lib/error_tracking/collector/payload_validator_spec.rb": 0.6056303280020074,7890 "spec/views/layouts/_head.html.haml_spec.rb": 2.854580701998202,7891 "spec/lib/gitlab/usage/metrics/instrumentations/numbers_metric_spec.rb": 1.817876733999583,7892 "spec/lib/gitlab/usage/metrics/instrumentations/distinct_count_projects_with_expiration_policy_metric_spec.rb": 2.042047447997902,7893 "spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb": 3.232731285999762,7894 "spec/services/tags/destroy_service_spec.rb": 3.572564522000903,7895 "spec/helpers/whats_new_helper_spec.rb": 2.0204382099982467,7896 "spec/rubocop/cop/migration/datetime_spec.rb": 0.6538663350002025,7897 "spec/lib/gitlab/ci/reports/security/aggregated_report_spec.rb": 1.4964232060010545,7898 "spec/models/tree_spec.rb": 1.3955249129976437,7899 "spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb": 2.691534543999296,7900 "spec/lib/gitlab/prometheus/metric_group_spec.rb": 2.158296839999821,7901 "spec/services/packages/nuget/metadata_extraction_service_spec.rb": 2.3379604579968145,7902 "spec/views/events/event/_common.html.haml_spec.rb": 1.7671224879995862,7903 "spec/workers/wikis/git_garbage_collect_worker_spec.rb": 1.7657476979984494,7904 "spec/experiments/ios_specific_templates_experiment_spec.rb": 1.7765209270000923,7905 "spec/uploaders/object_storage/s3_spec.rb": 1.0542254069987393,7906 "spec/lib/gitlab/ci/reports/coverage_report_spec.rb": 0.5087781849979365,7907 "spec/policies/container_expiration_policy_policy_spec.rb": 1.2419395340002666,7908 "spec/lib/rouge/formatters/html_gitlab_spec.rb": 0.5113525950000621,7909 "spec/graphql/resolvers/commit_pipelines_resolver_spec.rb": 0.836319491998438,7910 "spec/initializers/00_rails_disable_joins_spec.rb": 1.205093136002688,7911 "spec/models/user_agent_detail_spec.rb": 0.8943430280014582,7912 "spec/tasks/gitlab/db/decomposition/connection_status_rake_spec.rb": 2.3298582090028503,7913 "spec/lib/gitlab/diff/line_mapper_spec.rb": 1.9371609549998539,7914 "spec/lib/gitlab/sidekiq_logging/deduplication_logger_spec.rb": 0.3988508330003242,7915 "spec/helpers/form_helper_spec.rb": 0.9693623020029918,7916 "spec/policies/identity_provider_policy_spec.rb": 0.5028054659996997,7917 "spec/workers/issues/close_worker_spec.rb": 1.7502394680013822,7918 "spec/models/achievements/user_achievement_spec.rb": 1.7252633210009662,7919 "spec/lib/gitlab/dependency_linker/go_sum_linker_spec.rb": 0.41518047099816613,7920 "spec/helpers/ci/builds_helper_spec.rb": 1.547494212998572,7921 "spec/finders/packages/helm/packages_finder_spec.rb": 1.4805302969980403,7922 "spec/lib/declarative_enum_spec.rb": 0.7375447589984105,7923 "spec/lib/gitlab/patch/uri_spec.rb": 0.3254543069997453,7924 "spec/lib/sidebars/projects/super_sidebar_menus/analyze_menu_spec.rb": 0.3150188680010615,7925 "spec/lib/gitlab/loop_helpers_spec.rb": 1.4440751190013543,7926 "spec/workers/users/migrate_records_to_ghost_user_in_batches_worker_spec.rb": 1.9867421429989918,7927 "spec/lib/gitlab/git/hook_env_spec.rb": 0.6828379030012002,7928 "spec/workers/design_management/copy_design_collection_worker_spec.rb": 1.4295772709992889,7929 "spec/lib/gitlab/nav/top_nav_menu_header_spec.rb": 0.26697944099942106,7930 "spec/lib/gitlab/email/message/in_product_marketing/trial_short_spec.rb": 0.3597825750002812,7931 "spec/lib/initializer_connections_spec.rb": 0.811247433997778,7932 "spec/policies/protected_branch_access_policy_spec.rb": 1.4288292310011457,7933 "spec/graphql/types/merge_request_review_state_enum_spec.rb": 0.26776146100019105,7934 "spec/lib/gitlab/github_import/importer/attachments/merge_requests_importer_spec.rb": 1.0122999699997308,7935 "spec/graphql/types/release_source_type_spec.rb": 0.36449467499915045,7936 "spec/lib/gitlab/ci/build/releaser_spec.rb": 0.5691305000000284,7937 "spec/workers/namespaces/schedule_aggregation_worker_spec.rb": 0.9136277770012384,7938 "spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb": 0.5602697809990786,7939 "spec/workers/expire_build_artifacts_worker_spec.rb": 1.4257252710012835,7940 "spec/lib/gitlab/ci/config/external/mapper/normalizer_spec.rb": 0.2849187800020445,7941 "spec/finders/applications_finder_spec.rb": 0.9173263470001984,7942 "spec/services/keys/revoke_service_spec.rb": 1.4634849590001977,7943 "spec/models/namespaces/project_namespace_spec.rb": 1.0412897390015132,7944 "spec/models/project_metrics_setting_spec.rb": 0.7614577370004554,7945 "spec/serializers/merge_request_sidebar_extras_entity_spec.rb": 1.3686595949984621,7946 "spec/services/projects/open_merge_requests_count_service_spec.rb": 0.9181554960014182,7947 "spec/lib/gitlab/ci/templates/katalon_gitlab_ci_yaml_spec.rb": 1.234254785002122,7948 "spec/services/snippets/schedule_bulk_repository_shard_moves_service_spec.rb": 0.9778976130000956,7949 "spec/serializers/integrations/event_entity_spec.rb": 1.0683853560003627,7950 "spec/validators/bytesize_validator_spec.rb": 0.6720984230014437,7951 "spec/validators/nested_attributes_duplicates_validator_spec.rb": 0.6156249880004907,7952 "spec/lib/gitlab/pagination/keyset/request_context_spec.rb": 0.5260485130020243,7953 "spec/lib/gitlab/metrics/exporter/metrics_middleware_spec.rb": 1.2022096370019426,7954 "spec/workers/clusters/cleanup/service_account_worker_spec.rb": 0.9335793159989407,7955 "spec/serializers/merge_request_current_user_entity_spec.rb": 1.1284148910017393,7956 "spec/models/project_custom_attribute_spec.rb": 0.7126305099991441,7957 "spec/lib/bulk_imports/projects/pipelines/external_pull_requests_pipeline_spec.rb": 0.8832136989985884,7958 "spec/serializers/container_tag_entity_spec.rb": 0.932987715001218,7959 "spec/tooling/lib/tooling/parallel_rspec_runner_spec.rb": 0.4491011590034759,7960 "spec/lib/gitlab/safe_request_purger_spec.rb": 0.4397296400020423,7961 "spec/graphql/types/ci/job_trace_type_spec.rb": 0.8282339629986382,7962 "spec/lib/gitlab/kubernetes/rollout_instances_spec.rb": 0.41232837200004724,7963 "spec/models/user_mentions/issue_user_mention_spec.rb": 0.45401713799947174,7964 "spec/serializers/ci/dag_stage_entity_spec.rb": 0.8763801189998048,7965 "spec/lib/gitlab/database/migration_helpers/announce_database_spec.rb": 0.3821402430003218,7966 "spec/lib/gitlab/dependency_linker/go_mod_linker_spec.rb": 0.43281131999901845,7967 "spec/views/profiles/keys/_key_details.html.haml_spec.rb": 0.572522160000517,7968 "spec/workers/namespaces/prune_aggregation_schedules_worker_spec.rb": 1.0221911400003592,7969 "spec/tooling/lib/tooling/crystalball/coverage_lines_execution_detector_spec.rb": 0.43721012999958475,7970 "spec/helpers/external_link_helper_spec.rb": 0.3610909349990834,7971 "spec/lib/gitlab/markdown_cache/redis/store_spec.rb": 0.40076042199871154,7972 "spec/graphql/types/work_item_type_spec.rb": 0.390044202998979,7973 "spec/graphql/types/invitation_interface_spec.rb": 0.38224410400289344,7974 "spec/lib/sidebars/projects/menus/snippets_menu_spec.rb": 0.44950263899954734,7975 "spec/lib/gitlab/ci/reports/terraform_reports_spec.rb": 0.3401585659994453,7976 "spec/tooling/danger/config_files_spec.rb": 0.34917272600068827,7977 "spec/lib/csv_builders/stream_spec.rb": 0.3394024059998628,7978 "spec/lib/api/entities/project_job_token_scope_spec.rb": 0.6521116349977092,7979 "spec/lib/gitlab/word_diff/parser_spec.rb": 0.34384009600034915,7980 "spec/validators/gitlab/zoom_url_validator_spec.rb": 0.42204933099856135,7981 "spec/graphql/types/time_tracking/timelog_category_type_spec.rb": 0.35884153499864624,7982 "spec/views/projects/issues/_related_issues.html.haml_spec.rb": 0.4545902079989901,7983 "spec/lib/gitlab/import/errors_spec.rb": 0.5818694599984156,7984 "spec/lib/gitlab/pagination/keyset/in_operator_optimization/order_by_column_data_spec.rb": 0.3425603460018465,7985 "spec/graphql/types/ci/recent_failures_type_spec.rb": 0.3071144489986182,7986 "spec/graphql/types/alert_management/http_integration_type_spec.rb": 0.3086359389999416,7987 "spec/rubocop/node_pattern_helper_spec.rb": 0.3144508980003593,7988 "spec/graphql/types/ci/config/include_type_enum_spec.rb": 0.308036918999278,7989 "spec/models/resource_event_spec.rb": 0.31912621700030286,7990 "spec/graphql/types/ci/config/config_type_spec.rb": 0.3082195489987498,7991 "spec/lib/gitlab/app_logger_spec.rb": 0.3138869079994038,7992 "spec/lib/gitlab/ci/build/port_spec.rb": 0.3136236279970035,7993 "spec/graphql/resolvers/package_details_resolver_spec.rb": 0.5512519820003945,7994 "spec/graphql/types/availability_enum_spec.rb": 0.31326935800098,7995 "spec/lib/gitlab/memory/reports_uploader_spec.rb": 0.3112985590014432,7996 "spec/graphql/types/jira_import_type_spec.rb": 0.32229280799947446,7997 "spec/lib/api/entities/projects/topic_spec.rb": 0.2698435120000795,7998 "spec/models/integrations/base_slack_notification_spec.rb": 0.27542748199994094,7999 "spec/graphql/types/ci/pipeline_schedule_status_enum_spec.rb": 0.306310708001547,8000 "spec/views/layouts/_published_experiments.html.haml_spec.rb": 0.37145042400152306,8001 "spec/uploaders/uploader_helper_spec.rb": 0.25983354300115025,8002 "spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_metric_spec.rb": 0.36461085400151205,8003 "spec/lib/gitlab/serializer/ci/variables_spec.rb": 0.2576417220006988,8004 "spec/lib/gitlab/no_cache_headers_spec.rb": 0.2659370920009678,8005 "spec/lib/sidebars/uncategorized_menu_spec.rb": 0.2793898710006033,8006 "spec/lib/gitlab/kubernetes/config_maps/aws_node_auth_spec.rb": 0.2677997810023953,8007 "spec/lib/gitlab/metrics/dashboard/stages/track_panel_type_spec.rb": 0.2759645209989685,8008 "spec/lib/gitlab/graphql/copy_field_description_spec.rb": 0.280664040998090068009}8010Knapsack global time execution for tests: 22m 38s8011Pending: (Failures listed here are expected and do not affect your suite's status)8012 1) Operations::FeatureFlags::UserList 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 blank8013 # No reason given8014 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:498015 2) Operations::FeatureFlags::UserList 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 blank8016 # No reason given8017 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:578018 3) Database::BatchedBackgroundMigration::CiDatabaseWorker behaves like it runs batched background migration jobs #perform when the base model does not exist does nothing8019 # because the base model for ci exists8020 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:668021 4) Database::BatchedBackgroundMigration::CiDatabaseWorker behaves like it runs batched background migration jobs #perform when the base model does not exist logs a message indicating execution is skipped8022 # because the base model for ci exists8023 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:728024 5) Database::BatchedBackgroundMigration::CiDatabaseWorker behaves like it runs batched background migration jobs #perform when the base model does exist when the tracking database is shared does nothing8025 # Skipping because database ci exists8026 # ./spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb:958027 6) RuboCop::Cop::API::EnsureStringDetail when in_api? == true when detail field uses a constant does not add an offense8028 # No reason given8029 Failure/Error:8030 expect_no_offenses(<<~CODE)8031 class SomeAPI8032 resource :projects do8033 DESCRIPTION = 'A string'8035 desc 'Some API thing related to a project' do8036 detail DESCRIPTION8037 end8038 end8039 end8040 expected: "class SomeAPI\n resource :projects do\n DESCRIPTION = 'A string'\n\n desc 'Some API thing related to a project' do\n detail DESCRIPTION\n end\n end\nend\n"8041 got: "class SomeAPI\n resource :projects do\n DESCRIPTION = 'A string'\n\n desc 'Some API thing rel... ^^^^^^^^^^^^^^^^^^ Only String objects are permitted in API detail field.\n end\n end\nend\n"8042 (compared using ==)8043 Diff:8044 @@ -4,6 +4,7 @@8046 desc 'Some API thing related to a project' do8047 detail DESCRIPTION8048 + ^^^^^^^^^^^^^^^^^^ Only String objects are permitted in API detail field.8049 end8050 end8051 end8052 # ./spec/rubocop/cop/api/ensure_string_detail_spec.rb:61:in `block (4 levels) in <top (required)>'8053 # ./spec/spec_helper.rb:415:in `block (3 levels) in <top (required)>'8054 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'8055 # ./spec/spec_helper.rb:406:in `block (2 levels) in <top (required)>'8056 # ./spec/spec_helper.rb:402:in `block (3 levels) in <top (required)>'8057 # ./lib/gitlab/application_context.rb:61:in `with_raw_context'8058 # ./spec/spec_helper.rb:402:in `block (2 levels) in <top (required)>'8059 # ./spec/spec_helper.rb:243:in `block (2 levels) in <top (required)>'8060 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'8061 # ./spec/support/fast_quarantine.rb:23:in `block (2 levels) in <top (required)>'8062 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <top (required)>'8063 # ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'8064 # ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <top (required)>'8065 7) gitlab:db:decomposition:connection_status when separate ci database is not configured when PostgreSQL max_connections is too low suggests to increase it8066 # Skipping because some of the extra databases [:ci, :main_clusterwide, :embedding, :geo] are setup8067 # ./spec/tasks/gitlab/db/decomposition/connection_status_rake_spec.rb:278068 8) gitlab:db:decomposition:connection_status when separate ci database is not configured when PostgreSQL max_connections is high enough only shows current status8069 # Skipping because some of the extra databases [:ci, :main_clusterwide, :embedding, :geo] are setup8070 # ./spec/tasks/gitlab/db/decomposition/connection_status_rake_spec.rb:418071Finished in 22 minutes 43 seconds (files took 47.96 seconds to load)80723457 examples, 0 failures, 8 pending8073Randomized with seed 486278074[TEST PROF INFO] Time spent in factories: 10:54.033 (47.75% of total time)8075RSpec exited with 0.8076No examples to retry, congrats!8078Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8080Uploading artifacts...8081coverage/: found 5 matching artifact files and directories 8082crystalball/: found 2 matching artifact files and directories 8083deprecations/: found 9 matching artifact files and directories 8084knapsack/: found 4 matching artifact files and directories 8085WARNING: query_recorder/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8086rspec/: found 16 matching artifact files and directories 8087WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8088log/*.log: found 19 matching artifact files and directories 8089WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964254/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8090WARNING: Retrying... context=artifacts-uploader error=request redirected8091Uploading artifacts as "archive" to coordinator... 201 Created id=4400964254 responseStatus=201 Created token=64_PBwyC8092Uploading artifacts...8093rspec/rspec-*.xml: found 1 matching artifact files and directories 8094WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4400964254/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8095WARNING: Retrying... context=artifacts-uploader error=request redirected8096Uploading artifacts as "junit" to coordinator... 201 Created id=4400964254 responseStatus=201 Created token=64_PBwyC8098Job succeeded