rspec unit pg13 8/28
Passed Started
by
@mbobin
Marius Bobin
1Running with gitlab-runner 15.9.0~beta.212.g8ccc65e7 (8ccc65e7)2 on green-1.private.runners-manager.gitlab.com/gitlab.com/gitlab-org 4bq1s9yM, system ID: s_9d15f3e4e7ae3 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...10Using docker image sha256: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 ...11Starting service redis:6.2-alpine ...12Pulling docker image redis:6.2-alpine ...13Using docker image sha256:85fd7bd884b6493c8eb6f4dffbe5406d97cce56aff84f1580a5eb5b9d841f158 for redis:6.2-alpine with digest redis@sha256:87c44d5d9f472e767c8737f4130c765d77bdc95c7472d6427cfc9d4632f12da6 ...14Waiting for services to be up and running (timeout 30 seconds)...15Authenticating with credentials from job payload (GitLab Registry)16Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...17Using docker image sha256:e2241823d5bdc5e6df7c49ebc7b24c52db10bbb41407a5256c7f2d24ff464f7f for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13@sha256:f20112d766000374a74ca341735b93b35180b88d806027d821aa8800d0522906 ...19Running on runner-4bq1s9ym-project-278964-concurrent-0 via runner-4bq1s9ym-private-1684153612-7214952f...21$ eval "$CI_PRE_CLONE_SCRIPT"22Fetching changes with git depth set to 20...23Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/24Created fresh repository.25remote: Enumerating objects: 172010, done. 26remote: Counting objects: 100% (172010/172010), done. 27remote: Compressing objects: 100% (114149/114149), done. 28remote: Total 172010 (delta 83677), reused 113010 (delta 51255), pack-reused 0 29Receiving objects: 100% (172010/172010), 133.76 MiB | 30.56 MiB/s, done.30Resolving deltas: 100% (83677/83677), done.32 * [new ref] refs/pipelines/867893948 -> refs/pipelines/86789394833 * [new branch] master -> origin/master34Checking out 70965bdb as detached HEAD (ref is master)...35Skipping Git submodules setup36$ git remote set-url origin "${CI_REPOSITORY_URL}"38Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...39cache.zip is up to date 40Successfully extracted cache42Downloading artifacts for compile-test-assets (4287782955)...43Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4287782955 responseStatus=200 OK token=64_sso5M44Downloading artifacts for retrieve-tests-metadata (4287782976)...45Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4287782976 responseStatus=200 OK token=64_sso5M46Downloading artifacts for setup-test-env (4287782967)...47Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4287782967 responseStatus=200 OK token=64_sso5M49Using docker image sha256:e2241823d5bdc5e6df7c49ebc7b24c52db10bbb41407a5256c7f2d24ff464f7f for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13@sha256:f20112d766000374a74ca341735b93b35180b88d806027d821aa8800d0522906 ...50$ echo $FOSS_ONLY51$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb52$ export GOPATH=$CI_PROJECT_DIR/.go53$ mkdir -p $GOPATH54$ source scripts/utils.sh55$ source scripts/prepare_build.sh711Using decomposed database config (config/database.yml.decomposed-postgresql)712Geo DB won't be set up.713Embedding DB won't be set up.729$ source ./scripts/rspec_helpers.sh730$ run_timed_command "gem install knapsack --no-document"731$ gem install knapsack --no-document732Successfully installed knapsack-4.0.07331 gem installed734==> 'gem install knapsack --no-document' succeeded in 0 seconds.735$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"737$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"742$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"743$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"744SKIP_FLAKY_TESTS_AUTOMATICALLY: 745RETRY_FAILED_TESTS_IN_NEW_PROCESS: true746KNAPSACK_GENERATE_REPORT: true747FLAKY_RSPEC_GENERATE_REPORT: true748KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb749KNAPSACK_LOG_LEVEL: debug750KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13_8_28_report.json751FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json752FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_8_28_report.json753NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_8_28_report.json754SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests_rspec_unit_pg13_8_28.txt755CRYSTALBALL: 756RSPEC_TESTS_MAPPING_ENABLED: 757RSPEC_TESTS_FILTER_FILE: 758Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format RspecJunitFormatter --out rspec/junit_rspec.xml --tag ~quarantine --tag ~level:background_migration -- spec/lib/gitlab/relative_positioning/mover_spec.rb spec/lib/gitlab/git/repository_spec.rb spec/lib/gitlab/usage_data_metrics_spec.rb spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb spec/models/namespace/package_setting_spec.rb spec/policies/wiki_page_policy_spec.rb spec/services/users/migrate_records_to_ghost_user_service_spec.rb spec/services/issuable/bulk_update_service_spec.rb spec/services/ci/update_build_queue_service_spec.rb spec/lib/gitlab/ci/status/build/factory_spec.rb spec/uploaders/job_artifact_uploader_spec.rb spec/services/files/multi_service_spec.rb spec/models/clusters/agent_spec.rb spec/lib/gitlab/cleanup/project_uploads_spec.rb spec/services/snippets/destroy_service_spec.rb spec/services/bulk_create_integration_service_spec.rb spec/services/design_management/delete_designs_service_spec.rb spec/lib/gitlab/prometheus_client_spec.rb spec/models/label_spec.rb spec/models/clusters/clusters_hierarchy_spec.rb spec/models/integrations/gitlab_slack_application_spec.rb spec/policies/todo_policy_spec.rb spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb spec/models/hooks/system_hook_spec.rb spec/lib/gitlab/database/tables_truncate_spec.rb spec/services/groups/import_export/import_service_spec.rb spec/models/integrations/jenkins_spec.rb spec/lib/gitlab/import_export/import_failure_service_spec.rb spec/lib/gitlab/redis/sessions_spec.rb spec/lib/container_registry/blob_spec.rb spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb spec/lib/banzai/filter/references/work_item_reference_filter_spec.rb spec/lib/gitlab/gitaly_client/commit_service_spec.rb spec/lib/gitlab/ci/build/rules_spec.rb spec/tasks/gitlab/cleanup_rake_spec.rb spec/lib/sbom/package_url/decoder_spec.rb spec/models/ci/runner_manager_spec.rb spec/lib/gitlab/diff/diff_refs_spec.rb spec/helpers/issuables_description_templates_helper_spec.rb spec/lib/gitlab/email/reply_parser_spec.rb spec/routing/import_routing_spec.rb spec/services/issues/reopen_service_spec.rb spec/lib/gitlab/changelog/config_spec.rb spec/finders/context_commits_finder_spec.rb spec/models/plan_limits_spec.rb spec/workers/incident_management/process_alert_worker_v2_spec.rb spec/services/projects/hashed_storage/rollback_attachments_service_spec.rb spec/models/ci/runner_project_spec.rb spec/lib/gitlab/shell_spec.rb spec/helpers/users/group_callouts_helper_spec.rb spec/lib/gitlab/redis/queues_spec.rb spec/workers/deployments/hooks_worker_spec.rb spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb spec/lib/sidebars/projects/menus/analytics_menu_spec.rb spec/lib/gitlab/ci/status/external/common_spec.rb spec/presenters/packages/detail/package_presenter_spec.rb spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb spec/services/users/refresh_authorized_projects_service_spec.rb spec/models/packages/cleanup/policy_spec.rb spec/models/packages/nuget/metadatum_spec.rb spec/models/label_note_spec.rb spec/tasks/gettext_rake_spec.rb spec/models/authentication_event_spec.rb spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb spec/lib/gitlab/middleware/handle_malformed_strings_spec.rb spec/graphql/resolvers/users/groups_resolver_spec.rb spec/lib/gitlab/ci/pipeline/expression/lexeme/pattern_spec.rb spec/lib/gitlab/database/transaction/context_spec.rb spec/components/pajamas/toggle_component_spec.rb spec/lib/sidebars/groups/menus/settings_menu_spec.rb spec/lib/gitlab/import_export/remote_stream_upload_spec.rb spec/lib/gitlab/database/postgres_partitioned_table_spec.rb spec/models/snippet_statistics_spec.rb spec/workers/issues/rebalancing_worker_spec.rb spec/services/groups/group_links/destroy_service_spec.rb spec/views/layouts/_header_search.html.haml_spec.rb spec/workers/gitlab/jira_import/stage/import_issues_worker_spec.rb spec/models/users/in_product_marketing_email_spec.rb spec/lib/gitlab/github_import/importer/events/changed_assignee_spec.rb spec/lib/banzai/pipeline/description_pipeline_spec.rb spec/lib/gitlab/web_hooks/recursion_detection_spec.rb spec/lib/gitlab/security/scan_configuration_spec.rb spec/lib/gitlab/sidekiq_config_spec.rb spec/services/ci/compare_test_reports_service_spec.rb spec/lib/gitlab/error_tracking_spec.rb spec/services/ci/runners/unassign_runner_service_spec.rb spec/lib/gitlab/alert_management/fingerprint_spec.rb spec/lib/gitlab/database/schema_validation/track_inconsistency_spec.rb spec/services/error_tracking/list_issues_service_spec.rb spec/models/bulk_imports/export_status_spec.rb spec/services/pages_domains/create_acme_order_service_spec.rb spec/workers/project_cache_worker_spec.rb spec/services/bulk_update_integration_service_spec.rb spec/lib/gitlab/harbor/client_spec.rb spec/lib/gitlab/usage_data_counters/work_item_activity_unique_counter_spec.rb spec/support_specs/helpers/stub_method_calls_spec.rb spec/initializers/mail_starttls_patch_spec.rb spec/helpers/badges_helper_spec.rb spec/lib/banzai/filter/wiki_link_filter_spec.rb spec/support_specs/graphql/arguments_spec.rb spec/services/deployments/create_service_spec.rb spec/lib/bitbucket_server/representation/activity_spec.rb spec/services/tasks_to_be_done/base_service_spec.rb spec/tasks/tokens_spec.rb spec/lib/gitlab/config/entry/composable_hash_spec.rb spec/lib/gitlab/ci/templates/terraform_module_gitlab_ci_yaml_spec.rb spec/workers/environments/auto_delete_cron_worker_spec.rb spec/lib/declarative_enum_spec.rb spec/tasks/gitlab/feature_categories_rake_spec.rb spec/lib/bulk_imports/common/pipelines/wiki_pipeline_spec.rb spec/lib/gitlab/ci/status/build/manual_spec.rb spec/models/blob_viewer/changelog_spec.rb spec/models/concerns/ci/partitionable_spec.rb spec/lib/gitlab/reactive_cache_set_cache_spec.rb spec/workers/gitlab/github_import/stage/import_attachments_worker_spec.rb spec/presenters/instance_clusterable_presenter_spec.rb spec/services/loose_foreign_keys/cleaner_service_spec.rb spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb spec/services/incident_management/issuable_escalation_statuses/create_service_spec.rb spec/lib/sidebars/your_work/menus/todos_menu_spec.rb spec/lib/gitlab/sidekiq_middleware/worker_context/client_spec.rb spec/lib/gitlab/github_import/single_endpoint_notes_importing_spec.rb spec/workers/ci/build_trace_chunk_flush_worker_spec.rb spec/services/web_hooks/log_destroy_service_spec.rb spec/models/work_items/widget_definition_spec.rb spec/lib/gitlab/metrics/global_search_slis_spec.rb spec/graphql/types/work_item_type_spec.rb spec/lib/gitlab/wiki_pages/front_matter_parser_spec.rb spec/lib/banzai/filter/inline_grafana_metrics_filter_spec.rb spec/services/packages/rubygems/create_dependencies_service_spec.rb spec/lib/banzai/filter/absolute_link_filter_spec.rb spec/lib/gitlab/github_import/representation/collaborator_spec.rb spec/lib/gitlab/background_migration/batching_strategies/base_strategy_spec.rb spec/helpers/cookies_helper_spec.rb spec/workers/x509_certificate_revoke_worker_spec.rb spec/services/google_cloud/enable_cloudsql_service_spec.rb spec/models/concerns/bulk_insertable_associations_spec.rb spec/lib/gitlab/import_export/uploads_saver_spec.rb spec/workers/service_desk_email_receiver_worker_spec.rb spec/services/users/update_canonical_email_service_spec.rb spec/lib/gitlab/global_id_spec.rb spec/models/alert_management/alert_assignee_spec.rb spec/lib/gitlab/metrics/dashboard/stages/variable_endpoint_inserter_spec.rb spec/workers/releases/create_evidence_worker_spec.rb spec/services/keys/expiry_notification_service_spec.rb spec/graphql/types/permission_types/environment_spec.rb spec/lib/google_api/auth_spec.rb spec/helpers/pagination_helper_spec.rb spec/graphql/resolvers/ci/project_pipeline_counts_resolver_spec.rb spec/models/blob_viewer/server_side_spec.rb spec/lib/gitlab/import_export/project/exported_relations_merger_spec.rb spec/lib/gitlab/global_id/deprecations_spec.rb spec/rubocop/cop/gitlab/module_with_instance_variables_spec.rb spec/services/ci/pipeline_schedules/take_ownership_service_spec.rb spec/services/projects/fetch_statistics_increment_service_spec.rb spec/lib/bulk_imports/common/transformers/user_reference_transformer_spec.rb spec/rubocop/cop/migration/schedule_async_spec.rb spec/models/alert_management/metric_image_spec.rb spec/graphql/mutations/boards/lists/create_spec.rb spec/services/clusters/kubernetes_spec.rb spec/serializers/ci/dag_pipeline_serializer_spec.rb spec/finders/user_groups_counter_spec.rb spec/lib/gitlab/import/set_async_jid_spec.rb spec/serializers/test_case_entity_spec.rb spec/serializers/issuable_sidebar_extras_entity_spec.rb spec/lib/gitlab/import_export/attribute_configuration_spec.rb spec/models/namespaces/project_namespace_spec.rb spec/lib/error_tracking/collector/payload_validator_spec.rb spec/lib/gitlab/ci/variables/builder/release_spec.rb spec/models/uploads/local_spec.rb spec/finders/license_template_finder_spec.rb spec/helpers/time_helper_spec.rb spec/lib/gitlab/graphql/known_operations_spec.rb spec/services/projects/batch_open_issues_count_service_spec.rb spec/lib/gitlab/sql/cte_spec.rb spec/initializers/pages_storage_check_spec.rb spec/lib/gitlab/database/background_migration/health_status_spec.rb spec/graphql/types/timeframe_type_spec.rb spec/workers/admin_email_worker_spec.rb spec/workers/gitlab/github_import/import_issue_worker_spec.rb spec/services/bulk_push_event_payload_service_spec.rb spec/lib/gitlab/graphql/calls_gitaly/field_extension_spec.rb spec/graphql/mutations/custom_emoji/create_spec.rb spec/rubocop/cop/gitlab/json_spec.rb spec/graphql/types/commit_type_spec.rb spec/models/packages/helm/file_metadatum_spec.rb spec/lib/gitlab/tracking/destinations/snowplow_spec.rb spec/models/concerns/from_union_spec.rb spec/models/packages/pypi/metadatum_spec.rb spec/services/spam/ham_service_spec.rb spec/graphql/types/ci/status_action_type_spec.rb spec/services/metrics/sample_metrics_service_spec.rb spec/lib/gitlab/buffered_io_spec.rb spec/lib/pager_duty/webhook_payload_parser_spec.rb spec/lib/gitlab/error_tracking/processor/sanitize_error_message_processor_spec.rb spec/rubocop/cop/database/disable_referential_integrity_spec.rb spec/lib/api/entities/ci/job_request/service_spec.rb spec/lib/gitlab/pages/settings_spec.rb spec/models/concerns/stepable_spec.rb spec/rubocop/cop/background_migration/feature_category_spec.rb spec/finders/packages/group_or_project_package_finder_spec.rb spec/serializers/integrations/harbor_serializers/artifact_entity_spec.rb spec/models/oauth_access_grant_spec.rb spec/graphql/mutations/saved_replies/destroy_spec.rb spec/lib/gitlab/memory/reports/jemalloc_stats_spec.rb spec/lib/sidebars/menu_item_spec.rb spec/experiments/force_company_trial_experiment_spec.rb spec/graphql/types/ci/project_variable_type_spec.rb spec/models/packages/rubygems/metadatum_spec.rb spec/lib/api/helpers/common_helpers_spec.rb spec/models/resource_event_spec.rb spec/initializers/rack_VULNDB-255039_patch_spec.rb spec/lib/gitlab/ci/config/external/mapper/filter_spec.rb spec/workers/stuck_ci_jobs_worker_spec.rb spec/lib/gitlab/uploads_transfer_spec.rb spec/graphql/types/projects/branch_rule_type_spec.rb spec/graphql/types/error_tracking/sentry_error_stack_trace_entry_type_spec.rb spec/graphql/mutations/members/bulk_update_base_spec.rb spec/graphql/types/evidence_type_spec.rb spec/lib/gitlab/import_export/error_spec.rb spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb spec/lib/gitlab/net_http_adapter_spec.rb spec/graphql/types/tree/blob_type_spec.rb spec/views/dashboard/projects/_nav.html.haml_spec.rb spec/graphql/types/work_items/widgets/hierarchy_type_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/edition_metric_spec.rb spec/lib/gitlab/database/schema_validation/validators/extra_table_columns_spec.rb spec/models/clusters/cluster_enabled_grant_spec.rb spec/graphql/types/permission_types/snippet_spec.rb spec/lib/gitlab/slash_commands/presenters/incident_management/incident_new_spec.rb spec/lib/api/entities/bulk_import_spec.rb spec/lib/gitlab/ci/status/build/waiting_for_resource_spec.rb spec/serializers/project_mirror_serializer_spec.rb spec/lib/gitlab/github_import/importer/attachments/base_importer_spec.rb spec/graphql/types/packages/package_group_sort_enum_spec.rbKnapsack report generator started!759warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.761Run options: exclude {:quarantine=>true, :level=>"background_migration"}762Test environment set up in 0.673105324 seconds763Gitlab::RelativePositioning::Mover764 #move_to_end765 all positions are taken766 raises an error when placing a new item767 index: 0768 behaves like able to move existing items to the end769 can move any existing item770 index: 1771 behaves like able to move existing items to the end772 can move any existing item773 index: 2774 behaves like able to move existing items to the end775 can move any existing item776 index: 3777 behaves like able to move existing items to the end778 can move any existing item779 index: 4780 behaves like able to move existing items to the end781 can move any existing item782 there are no siblings783 behaves like able to place a new item at the end784 can place any new item785 there is only one sibling786 pos: 101787 behaves like able to place a new item at the end788 can place any new item789 behaves like able to move existing items to the end790 can move any existing item791 pos: 102792 behaves like able to place a new item at the end793 can place any new item794 behaves like able to move existing items to the end795 can move any existing item796 pos: 103797 behaves like able to place a new item at the end798 can place any new item799 behaves like able to move existing items to the end800 can move any existing item801 pos: 104802 behaves like able to place a new item at the end803 can place any new item804 behaves like able to move existing items to the end805 can move any existing item806 pos: 105807 behaves like able to place a new item at the end808 can place any new item809 behaves like able to move existing items to the end810 can move any existing item811 at least one position is free812 free_space: 101, index: 0813 behaves like able to place a new item at the end814 can place any new item815 behaves like able to move existing items to the end816 can move any existing item817 free_space: 101, index: 1818 behaves like able to place a new item at the end819 can place any new item820 behaves like able to move existing items to the end821 can move any existing item822 free_space: 101, index: 2823 behaves like able to place a new item at the end824 can place any new item825 behaves like able to move existing items to the end826 can move any existing item827 free_space: 101, index: 3828 behaves like able to place a new item at the end829 can place any new item830 behaves like able to move existing items to the end831 can move any existing item832 free_space: 102, index: 0833 behaves like able to place a new item at the end834 can place any new item835 behaves like able to move existing items to the end836 can move any existing item837 free_space: 102, index: 1838 behaves like able to place a new item at the end839 can place any new item840 behaves like able to move existing items to the end841 can move any existing item842 free_space: 102, index: 2843 behaves like able to place a new item at the end844 can place any new item845 behaves like able to move existing items to the end846 can move any existing item847 free_space: 102, index: 3848 behaves like able to place a new item at the end849 can place any new item850 behaves like able to move existing items to the end851 can move any existing item852 free_space: 103, index: 0853 behaves like able to place a new item at the end854 can place any new item855 behaves like able to move existing items to the end856 can move any existing item857 free_space: 103, index: 1858 behaves like able to place a new item at the end859 can place any new item860 behaves like able to move existing items to the end861 can move any existing item862 free_space: 103, index: 2863 behaves like able to place a new item at the end864 can place any new item865 behaves like able to move existing items to the end866 can move any existing item867 free_space: 103, index: 3868 behaves like able to place a new item at the end869 can place any new item870 behaves like able to move existing items to the end871 can move any existing item872 free_space: 104, index: 0873 behaves like able to place a new item at the end874 can place any new item875 behaves like able to move existing items to the end876 can move any existing item877 free_space: 104, index: 1878 behaves like able to place a new item at the end879 can place any new item880 behaves like able to move existing items to the end881 can move any existing item882 free_space: 104, index: 2883 behaves like able to place a new item at the end884 can place any new item885 behaves like able to move existing items to the end886 can move any existing item887 free_space: 104, index: 3888 behaves like able to place a new item at the end889 can place any new item890 behaves like able to move existing items to the end891 can move any existing item892 free_space: 105, index: 0893 behaves like able to place a new item at the end894 can place any new item895 behaves like able to move existing items to the end896 can move any existing item897 free_space: 105, index: 1898 behaves like able to place a new item at the end899 can place any new item900 behaves like able to move existing items to the end901 can move any existing item902 free_space: 105, index: 2903 behaves like able to place a new item at the end904 can place any new item905 behaves like able to move existing items to the end906 can move any existing item907 free_space: 105, index: 3908 behaves like able to place a new item at the end909 can place any new item910 behaves like able to move existing items to the end911 can move any existing item912 #move_to_start913 all positions are taken914 raises an error when placing a new item915 index: 0916 behaves like able to move existing items to the start917 can move any existing item918 index: 1919 behaves like able to move existing items to the start920 can move any existing item921 index: 2922 behaves like able to move existing items to the start923 can move any existing item924 index: 3925 behaves like able to move existing items to the start926 can move any existing item927 index: 4928 behaves like able to move existing items to the start929 can move any existing item930 there are no siblings931 behaves like able to place a new item at the start932 can place any new item933 there is only one sibling934 pos: 101935 behaves like able to place a new item at the start936 can place any new item937 behaves like able to move existing items to the start938 can move any existing item939 pos: 102940 behaves like able to place a new item at the start941 can place any new item942 behaves like able to move existing items to the start943 can move any existing item944 pos: 103945 behaves like able to place a new item at the start946 can place any new item947 behaves like able to move existing items to the start948 can move any existing item949 pos: 104950 behaves like able to place a new item at the start951 can place any new item952 behaves like able to move existing items to the start953 can move any existing item954 pos: 105955 behaves like able to place a new item at the start956 can place any new item957 behaves like able to move existing items to the start958 can move any existing item959 at least one position is free960 free_space: 101, index: 0961 behaves like able to place a new item at the start962 can place any new item963 behaves like able to move existing items to the start964 can move any existing item965 free_space: 101, index: 1966 behaves like able to place a new item at the start967 can place any new item968 behaves like able to move existing items to the start969 can move any existing item970 free_space: 101, index: 2971 behaves like able to place a new item at the start972 can place any new item973 behaves like able to move existing items to the start974 can move any existing item975 free_space: 101, index: 3976 behaves like able to place a new item at the start977 can place any new item978 behaves like able to move existing items to the start979 can move any existing item980 free_space: 102, index: 0981 behaves like able to place a new item at the start982 can place any new item983 behaves like able to move existing items to the start984 can move any existing item985 free_space: 102, index: 1986 behaves like able to place a new item at the start987 can place any new item988 behaves like able to move existing items to the start989 can move any existing item990 free_space: 102, index: 2991 behaves like able to place a new item at the start992 can place any new item993 behaves like able to move existing items to the start994 can move any existing item995 free_space: 102, index: 3996 behaves like able to place a new item at the start997 can place any new item998 behaves like able to move existing items to the start999 can move any existing item1000 free_space: 103, index: 01001 behaves like able to place a new item at the start1002 can place any new item1003 behaves like able to move existing items to the start1004 can move any existing item1005 free_space: 103, index: 11006 behaves like able to place a new item at the start1007 can place any new item1008 behaves like able to move existing items to the start1009 can move any existing item1010 free_space: 103, index: 21011 behaves like able to place a new item at the start1012 can place any new item1013 behaves like able to move existing items to the start1014 can move any existing item1015 free_space: 103, index: 31016 behaves like able to place a new item at the start1017 can place any new item1018 behaves like able to move existing items to the start1019 can move any existing item1020 free_space: 104, index: 01021 behaves like able to place a new item at the start1022 can place any new item1023 behaves like able to move existing items to the start1024 can move any existing item1025 free_space: 104, index: 11026 behaves like able to place a new item at the start1027 can place any new item1028 behaves like able to move existing items to the start1029 can move any existing item1030 free_space: 104, index: 21031 behaves like able to place a new item at the start1032 can place any new item1033 behaves like able to move existing items to the start1034 can move any existing item1035 free_space: 104, index: 31036 behaves like able to place a new item at the start1037 can place any new item1038 behaves like able to move existing items to the start1039 can move any existing item1040 free_space: 105, index: 01041 behaves like able to place a new item at the start1042 can place any new item1043 behaves like able to move existing items to the start1044 can move any existing item1045 free_space: 105, index: 11046 behaves like able to place a new item at the start1047 can place any new item1048 behaves like able to move existing items to the start1049 can move any existing item1050 free_space: 105, index: 21051 behaves like able to place a new item at the start1052 can place any new item1053 behaves like able to move existing items to the start1054 can move any existing item1055 free_space: 105, index: 31056 behaves like able to place a new item at the start1057 can place any new item1058 behaves like able to move existing items to the start1059 can move any existing item1060 #move1061 all positions are taken1062 idx_a: 0, idx_b: 11063 raises an error when placing a new item anywhere1064 index: 01065 behaves like able to move an existing item1066 can place any item betwen two others1067 can place any item after another1068 can place any item before another1069 index: 11070 behaves like able to move an existing item1071 can place any item betwen two others1072 can place any item after another1073 can place any item before another1074 index: 21075 behaves like able to move an existing item1076 can place any item betwen two others1077 can place any item after another1078 can place any item before another1079 index: 31080 behaves like able to move an existing item1081 can place any item betwen two others1082 can place any item after another1083 can place any item before another1084 index: 41085 behaves like able to move an existing item1086 can place any item betwen two others1087 can place any item after another1088 can place any item before another1089 idx_a: 0, idx_b: 21090 raises an error when placing a new item anywhere1091 index: 01092 behaves like able to move an existing item1093 can place any item betwen two others1094 can place any item after another1095 can place any item before another1096 index: 11097 behaves like able to move an existing item1098 can place any item betwen two others1099 can place any item after another1100 can place any item before another1101 index: 21102 behaves like able to move an existing item1103 can place any item betwen two others1104 can place any item after another1105 can place any item before another1106 index: 31107 behaves like able to move an existing item1108 can place any item betwen two others1109 can place any item after another1110 can place any item before another1111 index: 41112 behaves like able to move an existing item1113 can place any item betwen two others1114 can place any item after another1115 can place any item before another1116 idx_a: 0, idx_b: 31117 raises an error when placing a new item anywhere1118 index: 01119 behaves like able to move an existing item1120 can place any item betwen two others1121 can place any item after another1122 can place any item before another1123 index: 11124 behaves like able to move an existing item1125 can place any item betwen two others1126 can place any item after another1127 can place any item before another1128 index: 21129 behaves like able to move an existing item1130 can place any item betwen two others1131 can place any item after another1132 can place any item before another1133 index: 31134 behaves like able to move an existing item1135 can place any item betwen two others1136 can place any item after another1137 can place any item before another1138 index: 41139 behaves like able to move an existing item1140 can place any item betwen two others1141 can place any item after another1142 can place any item before another1143 idx_a: 0, idx_b: 41144 raises an error when placing a new item anywhere1145 index: 01146 behaves like able to move an existing item1147 can place any item betwen two others1148 can place any item after another1149 can place any item before another1150 index: 11151 behaves like able to move an existing item1152 can place any item betwen two others1153 can place any item after another1154 can place any item before another1155 index: 21156 behaves like able to move an existing item1157 can place any item betwen two others1158 can place any item after another1159 can place any item before another1160 index: 31161 behaves like able to move an existing item1162 can place any item betwen two others1163 can place any item after another1164 can place any item before another1165 index: 41166 behaves like able to move an existing item1167 can place any item betwen two others1168 can place any item after another1169 can place any item before another1170 idx_a: 1, idx_b: 21171 raises an error when placing a new item anywhere1172 index: 01173 behaves like able to move an existing item1174 can place any item betwen two others1175 can place any item after another1176 can place any item before another1177 index: 11178 behaves like able to move an existing item1179 can place any item betwen two others1180 can place any item after another1181 can place any item before another1182 index: 21183 behaves like able to move an existing item1184 can place any item betwen two others1185 can place any item after another1186 can place any item before another1187 index: 31188 behaves like able to move an existing item1189 can place any item betwen two others1190 can place any item after another1191 can place any item before another1192 index: 41193 behaves like able to move an existing item1194 can place any item betwen two others1195 can place any item after another1196 can place any item before another1197 idx_a: 1, idx_b: 31198 raises an error when placing a new item anywhere1199 index: 01200 behaves like able to move an existing item1201 can place any item betwen two others1202 can place any item after another1203 can place any item before another1204 index: 11205 behaves like able to move an existing item1206 can place any item betwen two others1207 can place any item after another1208 can place any item before another1209 index: 21210 behaves like able to move an existing item1211 can place any item betwen two others1212 can place any item after another1213 can place any item before another1214 index: 31215 behaves like able to move an existing item1216 can place any item betwen two others1217 can place any item after another1218 can place any item before another1219 index: 41220 behaves like able to move an existing item1221 can place any item betwen two others1222 can place any item after another1223 can place any item before another1224 idx_a: 1, idx_b: 41225 raises an error when placing a new item anywhere1226 index: 01227 behaves like able to move an existing item1228 can place any item betwen two others1229 can place any item after another1230 can place any item before another1231 index: 11232 behaves like able to move an existing item1233 can place any item betwen two others1234 can place any item after another1235 can place any item before another1236 index: 21237 behaves like able to move an existing item1238 can place any item betwen two others1239 can place any item after another1240 can place any item before another1241 index: 31242 behaves like able to move an existing item1243 can place any item betwen two others1244 can place any item after another1245 can place any item before another1246 index: 41247 behaves like able to move an existing item1248 can place any item betwen two others1249 can place any item after another1250 can place any item before another1251 idx_a: 2, idx_b: 31252 raises an error when placing a new item anywhere1253 index: 01254 behaves like able to move an existing item1255 can place any item betwen two others1256 can place any item after another1257 can place any item before another1258 index: 11259 behaves like able to move an existing item1260 can place any item betwen two others1261 can place any item after another1262 can place any item before another1263 index: 21264 behaves like able to move an existing item1265 can place any item betwen two others1266 can place any item after another1267 can place any item before another1268 index: 31269 behaves like able to move an existing item1270 can place any item betwen two others1271 can place any item after another1272 can place any item before another1273 index: 41274 behaves like able to move an existing item1275 can place any item betwen two others1276 can place any item after another1277 can place any item before another1278 idx_a: 2, idx_b: 41279 raises an error when placing a new item anywhere1280 index: 01281 behaves like able to move an existing item1282 can place any item betwen two others1283 can place any item after another1284 can place any item before another1285 index: 11286 behaves like able to move an existing item1287 can place any item betwen two others1288 can place any item after another1289 can place any item before another1290 index: 21291 behaves like able to move an existing item1292 can place any item betwen two others1293 can place any item after another1294 can place any item before another1295 index: 31296 behaves like able to move an existing item1297 can place any item betwen two others1298 can place any item after another1299 can place any item before another1300 index: 41301 behaves like able to move an existing item1302 can place any item betwen two others1303 can place any item after another1304 can place any item before another1305 idx_a: 3, idx_b: 41306 raises an error when placing a new item anywhere1307 index: 01308 behaves like able to move an existing item1309 can place any item betwen two others1310 can place any item after another1311 can place any item before another1312 index: 11313 behaves like able to move an existing item1314 can place any item betwen two others1315 can place any item after another1316 can place any item before another1317 index: 21318 behaves like able to move an existing item1319 can place any item betwen two others1320 can place any item after another1321 can place any item before another1322 index: 31323 behaves like able to move an existing item1324 can place any item betwen two others1325 can place any item after another1326 can place any item before another1327 index: 41328 behaves like able to move an existing item1329 can place any item betwen two others1330 can place any item after another1331 can place any item before another1332 there are no siblings1333 raises an ArgumentError when both first and last are nil1334 there are a couple of siblings1335 pos_movable: 101, pos_a: 102, pos_b: 1031336 behaves like able to move a new item1337 can place any new item betwen two others1338 can place any new item after another1339 can place any new item before another1340 behaves like able to move an existing item1341 can place any item betwen two others1342 can place any item after another1343 can place any item before another1344 pos_movable: 101, pos_a: 102, pos_b: 1041345 behaves like able to move a new item1346 can place any new item betwen two others1347 can place any new item after another1348 can place any new item before another1349 behaves like able to move an existing item1350 can place any item betwen two others1351 can place any item after another1352 can place any item before another1353 pos_movable: 101, pos_a: 102, pos_b: 1051354 behaves like able to move a new item1355 can place any new item betwen two others1356 can place any new item after another1357 can place any new item before another1358 behaves like able to move an existing item1359 can place any item betwen two others1360 can place any item after another1361 can place any item before another1362 pos_movable: 101, pos_a: 103, pos_b: 1041363 behaves like able to move a new item1364 can place any new item betwen two others1365 can place any new item after another1366 can place any new item before another1367 behaves like able to move an existing item1368 can place any item betwen two others1369 can place any item after another1370 can place any item before another1371 pos_movable: 101, pos_a: 103, pos_b: 1051372 behaves like able to move a new item1373 can place any new item betwen two others1374 can place any new item after another1375 can place any new item before another1376 behaves like able to move an existing item1377 can place any item betwen two others1378 can place any item after another1379 can place any item before another1380 pos_movable: 101, pos_a: 104, pos_b: 1051381 behaves like able to move a new item1382 can place any new item betwen two others1383 can place any new item after another1384 can place any new item before another1385 behaves like able to move an existing item1386 can place any item betwen two others1387 can place any item after another1388 can place any item before another1389 pos_movable: 102, pos_a: 101, pos_b: 1031390 behaves like able to move a new item1391 can place any new item betwen two others1392 can place any new item after another1393 can place any new item before another1394 behaves like able to move an existing item1395 can place any item betwen two others1396 can place any item after another1397 can place any item before another1398 pos_movable: 102, pos_a: 101, pos_b: 1041399 behaves like able to move a new item1400 can place any new item betwen two others1401 can place any new item after another1402 can place any new item before another1403 behaves like able to move an existing item1404 can place any item betwen two others1405 can place any item after another1406 can place any item before another1407 pos_movable: 102, pos_a: 101, pos_b: 1051408 behaves like able to move a new item1409 can place any new item betwen two others1410 can place any new item after another1411 can place any new item before another1412 behaves like able to move an existing item1413 can place any item betwen two others1414 can place any item after another1415 can place any item before another1416 pos_movable: 102, pos_a: 103, pos_b: 1041417 behaves like able to move a new item1418 can place any new item betwen two others1419 can place any new item after another1420 can place any new item before another1421 behaves like able to move an existing item1422 can place any item betwen two others1423 can place any item after another1424 can place any item before another1425 pos_movable: 102, pos_a: 103, pos_b: 1051426 behaves like able to move a new item1427 can place any new item betwen two others1428 can place any new item after another1429 can place any new item before another1430 behaves like able to move an existing item1431 can place any item betwen two others1432 can place any item after another1433 can place any item before another1434 pos_movable: 102, pos_a: 104, pos_b: 1051435 behaves like able to move a new item1436 can place any new item betwen two others1437 can place any new item after another1438 can place any new item before another1439 behaves like able to move an existing item1440 can place any item betwen two others1441 can place any item after another1442 can place any item before another1443 pos_movable: 103, pos_a: 101, pos_b: 1021444 behaves like able to move a new item1445 can place any new item betwen two others1446 can place any new item after another1447 can place any new item before another1448 behaves like able to move an existing item1449 can place any item betwen two others1450 can place any item after another1451 can place any item before another1452 pos_movable: 103, pos_a: 101, pos_b: 1041453 behaves like able to move a new item1454 can place any new item betwen two others1455 can place any new item after another1456 can place any new item before another1457 behaves like able to move an existing item1458 can place any item betwen two others1459 can place any item after another1460 can place any item before another1461 pos_movable: 103, pos_a: 101, pos_b: 1051462 behaves like able to move a new item1463 can place any new item betwen two others1464 can place any new item after another1465 can place any new item before another1466 behaves like able to move an existing item1467 can place any item betwen two others1468 can place any item after another1469 can place any item before another1470 pos_movable: 103, pos_a: 102, pos_b: 1041471 behaves like able to move a new item1472 can place any new item betwen two others1473 can place any new item after another1474 can place any new item before another1475 behaves like able to move an existing item1476 can place any item betwen two others1477 can place any item after another1478 can place any item before another1479 pos_movable: 103, pos_a: 102, pos_b: 1051480 behaves like able to move a new item1481 can place any new item betwen two others1482 can place any new item after another1483 can place any new item before another1484 behaves like able to move an existing item1485 can place any item betwen two others1486 can place any item after another1487 can place any item before another1488 pos_movable: 103, pos_a: 104, pos_b: 1051489 behaves like able to move a new item1490 can place any new item betwen two others1491 can place any new item after another1492 can place any new item before another1493 behaves like able to move an existing item1494 can place any item betwen two others1495 can place any item after another1496 can place any item before another1497 pos_movable: 104, pos_a: 101, pos_b: 1021498 behaves like able to move a new item1499 can place any new item betwen two others1500 can place any new item after another1501 can place any new item before another1502 behaves like able to move an existing item1503 can place any item betwen two others1504 can place any item after another1505 can place any item before another1506 pos_movable: 104, pos_a: 101, pos_b: 1031507 behaves like able to move a new item1508 can place any new item betwen two others1509 can place any new item after another1510 can place any new item before another1511 behaves like able to move an existing item1512 can place any item betwen two others1513 can place any item after another1514 can place any item before another1515 pos_movable: 104, pos_a: 101, pos_b: 1051516 behaves like able to move a new item1517 can place any new item betwen two others1518 can place any new item after another1519 can place any new item before another1520 behaves like able to move an existing item1521 can place any item betwen two others1522 can place any item after another1523 can place any item before another1524 pos_movable: 104, pos_a: 102, pos_b: 1031525 behaves like able to move a new item1526 can place any new item betwen two others1527 can place any new item after another1528 can place any new item before another1529 behaves like able to move an existing item1530 can place any item betwen two others1531 can place any item after another1532 can place any item before another1533 pos_movable: 104, pos_a: 102, pos_b: 1051534 behaves like able to move a new item1535 can place any new item betwen two others1536 can place any new item after another1537 can place any new item before another1538 behaves like able to move an existing item1539 can place any item betwen two others1540 can place any item after another1541 can place any item before another1542 pos_movable: 104, pos_a: 103, pos_b: 1051543 behaves like able to move a new item1544 can place any new item betwen two others1545 can place any new item after another1546 can place any new item before another1547 behaves like able to move an existing item1548 can place any item betwen two others1549 can place any item after another1550 can place any item before another1551 pos_movable: 105, pos_a: 101, pos_b: 1021552 behaves like able to move a new item1553 can place any new item betwen two others1554 can place any new item after another1555 can place any new item before another1556 behaves like able to move an existing item1557 can place any item betwen two others1558 can place any item after another1559 can place any item before another1560 pos_movable: 105, pos_a: 101, pos_b: 1031561 behaves like able to move a new item1562 can place any new item betwen two others1563 can place any new item after another1564 can place any new item before another1565 behaves like able to move an existing item1566 can place any item betwen two others1567 can place any item after another1568 can place any item before another1569 pos_movable: 105, pos_a: 101, pos_b: 1041570 behaves like able to move a new item1571 can place any new item betwen two others1572 can place any new item after another1573 can place any new item before another1574 behaves like able to move an existing item1575 can place any item betwen two others1576 can place any item after another1577 can place any item before another1578 pos_movable: 105, pos_a: 102, pos_b: 1031579 behaves like able to move a new item1580 can place any new item betwen two others1581 can place any new item after another1582 can place any new item before another1583 behaves like able to move an existing item1584 can place any item betwen two others1585 can place any item after another1586 can place any item before another1587 pos_movable: 105, pos_a: 102, pos_b: 1041588 behaves like able to move a new item1589 can place any new item betwen two others1590 can place any new item after another1591 can place any new item before another1592 behaves like able to move an existing item1593 can place any item betwen two others1594 can place any item after another1595 can place any item before another1596 pos_movable: 105, pos_a: 103, pos_b: 1041597 behaves like able to move a new item1598 can place any new item betwen two others1599 can place any new item after another1600 can place any new item before another1601 behaves like able to move an existing item1602 can place any item betwen two others1603 can place any item after another1604 can place any item before another1605 at least one position is free1606 free_space: 101, index: 3, pos_a: 2, pos_b: 31607 behaves like able to move a new item1608 can place any new item betwen two others1609 can place any new item after another1610 can place any new item before another1611 behaves like able to move an existing item1612 can place any item betwen two others1613 can place any item after another1614 can place any item before another1615 free_space: 101, index: 3, pos_a: 1, pos_b: 31616 behaves like able to move a new item1617 can place any new item betwen two others1618 can place any new item after another1619 can place any new item before another1620 behaves like able to move an existing item1621 can place any item betwen two others1622 can place any item after another1623 can place any item before another1624 free_space: 101, index: 3, pos_a: 1, pos_b: 21625 behaves like able to move a new item1626 can place any new item betwen two others1627 can place any new item after another1628 can place any new item before another1629 behaves like able to move an existing item1630 can place any item betwen two others1631 can place any item after another1632 can place any item before another1633 free_space: 101, index: 3, pos_a: 0, pos_b: 31634 behaves like able to move a new item1635 can place any new item betwen two others1636 can place any new item after another1637 can place any new item before another1638 behaves like able to move an existing item1639 can place any item betwen two others1640 can place any item after another1641 can place any item before another1642 free_space: 101, index: 3, pos_a: 0, pos_b: 21643 behaves like able to move a new item1644 can place any new item betwen two others1645 can place any new item after another1646 can place any new item before another1647 behaves like able to move an existing item1648 can place any item betwen two others1649 can place any item after another1650 can place any item before another1651 free_space: 101, index: 3, pos_a: 0, pos_b: 11652 behaves like able to move a new item1653 can place any new item betwen two others1654 can place any new item after another1655 can place any new item before another1656 behaves like able to move an existing item1657 can place any item betwen two others1658 can place any item after another1659 can place any item before another1660 free_space: 101, index: 2, pos_a: 2, pos_b: 31661 behaves like able to move a new item1662 can place any new item betwen two others1663 can place any new item after another1664 can place any new item before another1665 behaves like able to move an existing item1666 can place any item betwen two others1667 can place any item after another1668 can place any item before another1669 free_space: 101, index: 2, pos_a: 1, pos_b: 31670 behaves like able to move a new item1671 can place any new item betwen two others1672 can place any new item after another1673 can place any new item before another1674 behaves like able to move an existing item1675 can place any item betwen two others1676 can place any item after another1677 can place any item before another1678 free_space: 101, index: 2, pos_a: 1, pos_b: 21679 behaves like able to move a new item1680 can place any new item betwen two others1681 can place any new item after another1682 can place any new item before another1683 behaves like able to move an existing item1684 can place any item betwen two others1685 can place any item after another1686 can place any item before another1687 free_space: 101, index: 2, pos_a: 0, pos_b: 31688 behaves like able to move a new item1689 can place any new item betwen two others1690 can place any new item after another1691 can place any new item before another1692 behaves like able to move an existing item1693 can place any item betwen two others1694 can place any item after another1695 can place any item before another1696 free_space: 101, index: 2, pos_a: 0, pos_b: 21697 behaves like able to move a new item1698 can place any new item betwen two others1699 can place any new item after another1700 can place any new item before another1701 behaves like able to move an existing item1702 can place any item betwen two others1703 can place any item after another1704 can place any item before another1705 free_space: 101, index: 2, pos_a: 0, pos_b: 11706 behaves like able to move a new item1707 can place any new item betwen two others1708 can place any new item after another1709 can place any new item before another1710 behaves like able to move an existing item1711 can place any item betwen two others1712 can place any item after another1713 can place any item before another1714 free_space: 101, index: 1, pos_a: 2, pos_b: 31715 behaves like able to move a new item1716 can place any new item betwen two others1717 can place any new item after another1718 can place any new item before another1719 behaves like able to move an existing item1720 can place any item betwen two others1721 can place any item after another1722 can place any item before another1723 free_space: 101, index: 1, pos_a: 1, pos_b: 31724 behaves like able to move a new item1725 can place any new item betwen two others1726 can place any new item after another1727 can place any new item before another1728 behaves like able to move an existing item1729 can place any item betwen two others1730 can place any item after another1731 can place any item before another1732 free_space: 101, index: 1, pos_a: 1, pos_b: 21733 behaves like able to move a new item1734 can place any new item betwen two others1735 can place any new item after another1736 can place any new item before another1737 behaves like able to move an existing item1738 can place any item betwen two others1739 can place any item after another1740 can place any item before another1741 free_space: 101, index: 1, pos_a: 0, pos_b: 31742 behaves like able to move a new item1743 can place any new item betwen two others1744 can place any new item after another1745 can place any new item before another1746 behaves like able to move an existing item1747 can place any item betwen two others1748 can place any item after another1749 can place any item before another1750 free_space: 101, index: 1, pos_a: 0, pos_b: 21751 behaves like able to move a new item1752 can place any new item betwen two others1753 can place any new item after another1754 can place any new item before another1755 behaves like able to move an existing item1756 can place any item betwen two others1757 can place any item after another1758 can place any item before another1759 free_space: 101, index: 1, pos_a: 0, pos_b: 11760 behaves like able to move a new item1761 can place any new item betwen two others1762 can place any new item after another1763 can place any new item before another1764 behaves like able to move an existing item1765 can place any item betwen two others1766 can place any item after another1767 can place any item before another1768 free_space: 101, index: 0, pos_a: 2, pos_b: 31769 behaves like able to move a new item1770 can place any new item betwen two others1771 can place any new item after another1772 can place any new item before another1773 behaves like able to move an existing item1774 can place any item betwen two others1775 can place any item after another1776 can place any item before another1777 free_space: 101, index: 0, pos_a: 1, pos_b: 31778 behaves like able to move a new item1779 can place any new item betwen two others1780 can place any new item after another1781 can place any new item before another1782 behaves like able to move an existing item1783 can place any item betwen two others1784 can place any item after another1785 can place any item before another1786 free_space: 101, index: 0, pos_a: 1, pos_b: 21787 behaves like able to move a new item1788 can place any new item betwen two others1789 can place any new item after another1790 can place any new item before another1791 behaves like able to move an existing item1792 can place any item betwen two others1793 can place any item after another1794 can place any item before another1795 free_space: 101, index: 0, pos_a: 0, pos_b: 31796 behaves like able to move a new item1797 can place any new item betwen two others1798 can place any new item after another1799 can place any new item before another1800 behaves like able to move an existing item1801 can place any item betwen two others1802 can place any item after another1803 can place any item before another1804 free_space: 101, index: 0, pos_a: 0, pos_b: 21805 behaves like able to move a new item1806 can place any new item betwen two others1807 can place any new item after another1808 can place any new item before another1809 behaves like able to move an existing item1810 can place any item betwen two others1811 can place any item after another1812 can place any item before another1813 free_space: 101, index: 0, pos_a: 0, pos_b: 11814 behaves like able to move a new item1815 can place any new item betwen two others1816 can place any new item after another1817 can place any new item before another1818 behaves like able to move an existing item1819 can place any item betwen two others1820 can place any item after another1821 can place any item before another1822 free_space: 102, index: 3, pos_a: 2, pos_b: 31823 behaves like able to move a new item1824 can place any new item betwen two others1825 can place any new item after another1826 can place any new item before another1827 behaves like able to move an existing item1828 can place any item betwen two others1829 can place any item after another1830 can place any item before another1831 free_space: 102, index: 3, pos_a: 1, pos_b: 31832 behaves like able to move a new item1833 can place any new item betwen two others1834 can place any new item after another1835 can place any new item before another1836 behaves like able to move an existing item1837 can place any item betwen two others1838 can place any item after another1839 can place any item before another1840 free_space: 102, index: 3, pos_a: 1, pos_b: 21841 behaves like able to move a new item1842 can place any new item betwen two others1843 can place any new item after another1844 can place any new item before another1845 behaves like able to move an existing item1846 can place any item betwen two others1847 can place any item after another1848 can place any item before another1849 free_space: 102, index: 3, pos_a: 0, pos_b: 31850 behaves like able to move a new item1851 can place any new item betwen two others1852 can place any new item after another1853 can place any new item before another1854 behaves like able to move an existing item1855 can place any item betwen two others1856 can place any item after another1857 can place any item before another1858 free_space: 102, index: 3, pos_a: 0, pos_b: 21859 behaves like able to move a new item1860 can place any new item betwen two others1861 can place any new item after another1862 can place any new item before another1863 behaves like able to move an existing item1864 can place any item betwen two others1865 can place any item after another1866 can place any item before another1867 free_space: 102, index: 3, pos_a: 0, pos_b: 11868 behaves like able to move a new item1869 can place any new item betwen two others1870 can place any new item after another1871 can place any new item before another1872 behaves like able to move an existing item1873 can place any item betwen two others1874 can place any item after another1875 can place any item before another1876 free_space: 102, index: 2, pos_a: 2, pos_b: 31877 behaves like able to move a new item1878 can place any new item betwen two others1879 can place any new item after another1880 can place any new item before another1881 behaves like able to move an existing item1882 can place any item betwen two others1883 can place any item after another1884 can place any item before another1885 free_space: 102, index: 2, pos_a: 1, pos_b: 31886 behaves like able to move a new item1887 can place any new item betwen two others1888 can place any new item after another1889 can place any new item before another1890 behaves like able to move an existing item1891 can place any item betwen two others1892 can place any item after another1893 can place any item before another1894 free_space: 102, index: 2, pos_a: 1, pos_b: 21895 behaves like able to move a new item1896 can place any new item betwen two others1897 can place any new item after another1898 can place any new item before another1899 behaves like able to move an existing item1900 can place any item betwen two others1901 can place any item after another1902 can place any item before another1903 free_space: 102, index: 2, pos_a: 0, pos_b: 31904 behaves like able to move a new item1905 can place any new item betwen two others1906 can place any new item after another1907 can place any new item before another1908 behaves like able to move an existing item1909 can place any item betwen two others1910 can place any item after another1911 can place any item before another1912 free_space: 102, index: 2, pos_a: 0, pos_b: 21913 behaves like able to move a new item1914 can place any new item betwen two others1915 can place any new item after another1916 can place any new item before another1917 behaves like able to move an existing item1918 can place any item betwen two others1919 can place any item after another1920 can place any item before another1921 free_space: 102, index: 2, pos_a: 0, pos_b: 11922 behaves like able to move a new item1923 can place any new item betwen two others1924 can place any new item after another1925 can place any new item before another1926 behaves like able to move an existing item1927 can place any item betwen two others1928 can place any item after another1929 can place any item before another1930 free_space: 102, index: 1, pos_a: 2, pos_b: 31931 behaves like able to move a new item1932 can place any new item betwen two others1933 can place any new item after another1934 can place any new item before another1935 behaves like able to move an existing item1936 can place any item betwen two others1937 can place any item after another1938 can place any item before another1939 free_space: 102, index: 1, pos_a: 1, pos_b: 31940 behaves like able to move a new item1941 can place any new item betwen two others1942 can place any new item after another1943 can place any new item before another1944 behaves like able to move an existing item1945 can place any item betwen two others1946 can place any item after another1947 can place any item before another1948 free_space: 102, index: 1, pos_a: 1, pos_b: 21949 behaves like able to move a new item1950 can place any new item betwen two others1951 can place any new item after another1952 can place any new item before another1953 behaves like able to move an existing item1954 can place any item betwen two others1955 can place any item after another1956 can place any item before another1957 free_space: 102, index: 1, pos_a: 0, pos_b: 31958 behaves like able to move a new item1959 can place any new item betwen two others1960 can place any new item after another1961 can place any new item before another1962 behaves like able to move an existing item1963 can place any item betwen two others1964 can place any item after another1965 can place any item before another1966 free_space: 102, index: 1, pos_a: 0, pos_b: 21967 behaves like able to move a new item1968 can place any new item betwen two others1969 can place any new item after another1970 can place any new item before another1971 behaves like able to move an existing item1972 can place any item betwen two others1973 can place any item after another1974 can place any item before another1975 free_space: 102, index: 1, pos_a: 0, pos_b: 11976 behaves like able to move a new item1977 can place any new item betwen two others1978 can place any new item after another1979 can place any new item before another1980 behaves like able to move an existing item1981 can place any item betwen two others1982 can place any item after another1983 can place any item before another1984 free_space: 102, index: 0, pos_a: 2, pos_b: 31985 behaves like able to move a new item1986 can place any new item betwen two others1987 can place any new item after another1988 can place any new item before another1989 behaves like able to move an existing item1990 can place any item betwen two others1991 can place any item after another1992 can place any item before another1993 free_space: 102, index: 0, pos_a: 1, pos_b: 31994 behaves like able to move a new item1995 can place any new item betwen two others1996 can place any new item after another1997 can place any new item before another1998 behaves like able to move an existing item1999 can place any item betwen two others2000 can place any item after another2001 can place any item before another2002 free_space: 102, index: 0, pos_a: 1, pos_b: 22003 behaves like able to move a new item2004 can place any new item betwen two others2005 can place any new item after another2006 can place any new item before another2007 behaves like able to move an existing item2008 can place any item betwen two others2009 can place any item after another2010 can place any item before another2011 free_space: 102, index: 0, pos_a: 0, pos_b: 32012 behaves like able to move a new item2013 can place any new item betwen two others2014 can place any new item after another2015 can place any new item before another2016 behaves like able to move an existing item2017 can place any item betwen two others2018 can place any item after another2019 can place any item before another2020 free_space: 102, index: 0, pos_a: 0, pos_b: 22021 behaves like able to move a new item2022 can place any new item betwen two others2023 can place any new item after another2024 can place any new item before another2025 behaves like able to move an existing item2026 can place any item betwen two others2027 can place any item after another2028 can place any item before another2029 free_space: 102, index: 0, pos_a: 0, pos_b: 12030 behaves like able to move a new item2031 can place any new item betwen two others2032 can place any new item after another2033 can place any new item before another2034 behaves like able to move an existing item2035 can place any item betwen two others2036 can place any item after another2037 can place any item before another2038 free_space: 103, index: 3, pos_a: 2, pos_b: 32039 behaves like able to move a new item2040 can place any new item betwen two others2041 can place any new item after another2042 can place any new item before another2043 behaves like able to move an existing item2044 can place any item betwen two others2045 can place any item after another2046 can place any item before another2047 free_space: 103, index: 3, pos_a: 1, pos_b: 32048 behaves like able to move a new item2049 can place any new item betwen two others2050 can place any new item after another2051 can place any new item before another2052 behaves like able to move an existing item2053 can place any item betwen two others2054 can place any item after another2055 can place any item before another2056 free_space: 103, index: 3, pos_a: 1, pos_b: 22057 behaves like able to move a new item2058 can place any new item betwen two others2059 can place any new item after another2060 can place any new item before another2061 behaves like able to move an existing item2062 can place any item betwen two others2063 can place any item after another2064 can place any item before another2065 free_space: 103, index: 3, pos_a: 0, pos_b: 32066 behaves like able to move a new item2067 can place any new item betwen two others2068 can place any new item after another2069 can place any new item before another2070 behaves like able to move an existing item2071 can place any item betwen two others2072 can place any item after another2073 can place any item before another2074 free_space: 103, index: 3, pos_a: 0, pos_b: 22075 behaves like able to move a new item2076 can place any new item betwen two others2077 can place any new item after another2078 can place any new item before another2079 behaves like able to move an existing item2080 can place any item betwen two others2081 can place any item after another2082 can place any item before another2083 free_space: 103, index: 3, pos_a: 0, pos_b: 12084 behaves like able to move a new item2085 can place any new item betwen two others2086 can place any new item after another2087 can place any new item before another2088 behaves like able to move an existing item2089 can place any item betwen two others2090 can place any item after another2091 can place any item before another2092 free_space: 103, index: 2, pos_a: 2, pos_b: 32093 behaves like able to move a new item2094 can place any new item betwen two others2095 can place any new item after another2096 can place any new item before another2097 behaves like able to move an existing item2098 can place any item betwen two others2099 can place any item after another2100 can place any item before another2101 free_space: 103, index: 2, pos_a: 1, pos_b: 32102 behaves like able to move a new item2103 can place any new item betwen two others2104 can place any new item after another2105 can place any new item before another2106 behaves like able to move an existing item2107 can place any item betwen two others2108 can place any item after another2109 can place any item before another2110 free_space: 103, index: 2, pos_a: 1, pos_b: 22111 behaves like able to move a new item2112 can place any new item betwen two others2113 can place any new item after another2114 can place any new item before another2115 behaves like able to move an existing item2116 can place any item betwen two others2117 can place any item after another2118 can place any item before another2119 free_space: 103, index: 2, pos_a: 0, pos_b: 32120 behaves like able to move a new item2121 can place any new item betwen two others2122 can place any new item after another2123 can place any new item before another2124 behaves like able to move an existing item2125 can place any item betwen two others2126 can place any item after another2127 can place any item before another2128 free_space: 103, index: 2, pos_a: 0, pos_b: 22129 behaves like able to move a new item2130 can place any new item betwen two others2131 can place any new item after another2132 can place any new item before another2133 behaves like able to move an existing item2134 can place any item betwen two others2135 can place any item after another2136 can place any item before another2137 free_space: 103, index: 2, pos_a: 0, pos_b: 12138 behaves like able to move a new item2139 can place any new item betwen two others2140 can place any new item after another2141 can place any new item before another2142 behaves like able to move an existing item2143 can place any item betwen two others2144 can place any item after another2145 can place any item before another2146 free_space: 103, index: 1, pos_a: 2, pos_b: 32147 behaves like able to move a new item2148 can place any new item betwen two others2149 can place any new item after another2150 can place any new item before another2151 behaves like able to move an existing item2152 can place any item betwen two others2153 can place any item after another2154 can place any item before another2155 free_space: 103, index: 1, pos_a: 1, pos_b: 32156 behaves like able to move a new item2157 can place any new item betwen two others2158 can place any new item after another2159 can place any new item before another2160 behaves like able to move an existing item2161 can place any item betwen two others2162 can place any item after another2163 can place any item before another2164 free_space: 103, index: 1, pos_a: 1, pos_b: 22165 behaves like able to move a new item2166 can place any new item betwen two others2167 can place any new item after another2168 can place any new item before another2169 behaves like able to move an existing item2170 can place any item betwen two others2171 can place any item after another2172 can place any item before another2173 free_space: 103, index: 1, pos_a: 0, pos_b: 32174 behaves like able to move a new item2175 can place any new item betwen two others2176 can place any new item after another2177 can place any new item before another2178 behaves like able to move an existing item2179 can place any item betwen two others2180 can place any item after another2181 can place any item before another2182 free_space: 103, index: 1, pos_a: 0, pos_b: 22183 behaves like able to move a new item2184 can place any new item betwen two others2185 can place any new item after another2186 can place any new item before another2187 behaves like able to move an existing item2188 can place any item betwen two others2189 can place any item after another2190 can place any item before another2191 free_space: 103, index: 1, pos_a: 0, pos_b: 12192 behaves like able to move a new item2193 can place any new item betwen two others2194 can place any new item after another2195 can place any new item before another2196 behaves like able to move an existing item2197 can place any item betwen two others2198 can place any item after another2199 can place any item before another2200 free_space: 103, index: 0, pos_a: 2, pos_b: 32201 behaves like able to move a new item2202 can place any new item betwen two others2203 can place any new item after another2204 can place any new item before another2205 behaves like able to move an existing item2206 can place any item betwen two others2207 can place any item after another2208 can place any item before another2209 free_space: 103, index: 0, pos_a: 1, pos_b: 32210 behaves like able to move a new item2211 can place any new item betwen two others2212 can place any new item after another2213 can place any new item before another2214 behaves like able to move an existing item2215 can place any item betwen two others2216 can place any item after another2217 can place any item before another2218 free_space: 103, index: 0, pos_a: 1, pos_b: 22219 behaves like able to move a new item2220 can place any new item betwen two others2221 can place any new item after another2222 can place any new item before another2223 behaves like able to move an existing item2224 can place any item betwen two others2225 can place any item after another2226 can place any item before another2227 free_space: 103, index: 0, pos_a: 0, pos_b: 32228 behaves like able to move a new item2229 can place any new item betwen two others2230 can place any new item after another2231 can place any new item before another2232 behaves like able to move an existing item2233 can place any item betwen two others2234 can place any item after another2235 can place any item before another2236 free_space: 103, index: 0, pos_a: 0, pos_b: 22237 behaves like able to move a new item2238 can place any new item betwen two others2239 can place any new item after another2240 can place any new item before another2241 behaves like able to move an existing item2242 can place any item betwen two others2243 can place any item after another2244 can place any item before another2245 free_space: 103, index: 0, pos_a: 0, pos_b: 12246 behaves like able to move a new item2247 can place any new item betwen two others2248 can place any new item after another2249 can place any new item before another2250 behaves like able to move an existing item2251 can place any item betwen two others2252 can place any item after another2253 can place any item before another2254 free_space: 104, index: 3, pos_a: 2, pos_b: 32255 behaves like able to move a new item2256 can place any new item betwen two others2257 can place any new item after another2258 can place any new item before another2259 behaves like able to move an existing item2260 can place any item betwen two others2261 can place any item after another2262 can place any item before another2263 free_space: 104, index: 3, pos_a: 1, pos_b: 32264 behaves like able to move a new item2265 can place any new item betwen two others2266 can place any new item after another2267 can place any new item before another2268 behaves like able to move an existing item2269 can place any item betwen two others2270 can place any item after another2271 can place any item before another2272 free_space: 104, index: 3, pos_a: 1, pos_b: 22273 behaves like able to move a new item2274 can place any new item betwen two others2275 can place any new item after another2276 can place any new item before another2277 behaves like able to move an existing item2278 can place any item betwen two others2279 can place any item after another2280 can place any item before another2281 free_space: 104, index: 3, pos_a: 0, pos_b: 32282 behaves like able to move a new item2283 can place any new item betwen two others2284 can place any new item after another2285 can place any new item before another2286 behaves like able to move an existing item2287 can place any item betwen two others2288 can place any item after another2289 can place any item before another2290 free_space: 104, index: 3, pos_a: 0, pos_b: 22291 behaves like able to move a new item2292 can place any new item betwen two others2293 can place any new item after another2294 can place any new item before another2295 behaves like able to move an existing item2296 can place any item betwen two others2297 can place any item after another2298 can place any item before another2299 free_space: 104, index: 3, pos_a: 0, pos_b: 12300 behaves like able to move a new item2301 can place any new item betwen two others2302 can place any new item after another2303 can place any new item before another2304 behaves like able to move an existing item2305 can place any item betwen two others2306 can place any item after another2307 can place any item before another2308 free_space: 104, index: 2, pos_a: 2, pos_b: 32309 behaves like able to move a new item2310 can place any new item betwen two others2311 can place any new item after another2312 can place any new item before another2313 behaves like able to move an existing item2314 can place any item betwen two others2315 can place any item after another2316 can place any item before another2317 free_space: 104, index: 2, pos_a: 1, pos_b: 32318 behaves like able to move a new item2319 can place any new item betwen two others2320 can place any new item after another2321 can place any new item before another2322 behaves like able to move an existing item2323 can place any item betwen two others2324 can place any item after another2325 can place any item before another2326 free_space: 104, index: 2, pos_a: 1, pos_b: 22327 behaves like able to move a new item2328 can place any new item betwen two others2329 can place any new item after another2330 can place any new item before another2331 behaves like able to move an existing item2332 can place any item betwen two others2333 can place any item after another2334 can place any item before another2335 free_space: 104, index: 2, pos_a: 0, pos_b: 32336 behaves like able to move a new item2337 can place any new item betwen two others2338 can place any new item after another2339 can place any new item before another2340 behaves like able to move an existing item2341 can place any item betwen two others2342 can place any item after another2343 can place any item before another2344 free_space: 104, index: 2, pos_a: 0, pos_b: 22345 behaves like able to move a new item2346 can place any new item betwen two others2347 can place any new item after another2348 can place any new item before another2349 behaves like able to move an existing item2350 can place any item betwen two others2351 can place any item after another2352 can place any item before another2353 free_space: 104, index: 2, pos_a: 0, pos_b: 12354 behaves like able to move a new item2355 can place any new item betwen two others2356 can place any new item after another2357 can place any new item before another2358 behaves like able to move an existing item2359 can place any item betwen two others2360 can place any item after another2361 can place any item before another2362 free_space: 104, index: 1, pos_a: 2, pos_b: 32363 behaves like able to move a new item2364 can place any new item betwen two others2365 can place any new item after another2366 can place any new item before another2367 behaves like able to move an existing item2368 can place any item betwen two others2369 can place any item after another2370 can place any item before another2371 free_space: 104, index: 1, pos_a: 1, pos_b: 32372 behaves like able to move a new item2373 can place any new item betwen two others2374 can place any new item after another2375 can place any new item before another2376 behaves like able to move an existing item2377 can place any item betwen two others2378 can place any item after another2379 can place any item before another2380 free_space: 104, index: 1, pos_a: 1, pos_b: 22381 behaves like able to move a new item2382 can place any new item betwen two others2383 can place any new item after another2384 can place any new item before another2385 behaves like able to move an existing item2386 can place any item betwen two others2387 can place any item after another2388 can place any item before another2389 free_space: 104, index: 1, pos_a: 0, pos_b: 32390 behaves like able to move a new item2391 can place any new item betwen two others2392 can place any new item after another2393 can place any new item before another2394 behaves like able to move an existing item2395 can place any item betwen two others2396 can place any item after another2397 can place any item before another2398 free_space: 104, index: 1, pos_a: 0, pos_b: 22399 behaves like able to move a new item2400 can place any new item betwen two others2401 can place any new item after another2402 can place any new item before another2403 behaves like able to move an existing item2404 can place any item betwen two others2405 can place any item after another2406 can place any item before another2407 free_space: 104, index: 1, pos_a: 0, pos_b: 12408 behaves like able to move a new item2409 can place any new item betwen two others2410 can place any new item after another2411 can place any new item before another2412 behaves like able to move an existing item2413 can place any item betwen two others2414 can place any item after another2415 can place any item before another2416 free_space: 104, index: 0, pos_a: 2, pos_b: 32417 behaves like able to move a new item2418 can place any new item betwen two others2419 can place any new item after another2420 can place any new item before another2421 behaves like able to move an existing item2422 can place any item betwen two others2423 can place any item after another2424 can place any item before another2425 free_space: 104, index: 0, pos_a: 1, pos_b: 32426 behaves like able to move a new item2427 can place any new item betwen two others2428 can place any new item after another2429 can place any new item before another2430 behaves like able to move an existing item2431 can place any item betwen two others2432 can place any item after another2433 can place any item before another2434 free_space: 104, index: 0, pos_a: 1, pos_b: 22435 behaves like able to move a new item2436 can place any new item betwen two others2437 can place any new item after another2438 can place any new item before another2439 behaves like able to move an existing item2440 can place any item betwen two others2441 can place any item after another2442 can place any item before another2443 free_space: 104, index: 0, pos_a: 0, pos_b: 32444 behaves like able to move a new item2445 can place any new item betwen two others2446 can place any new item after another2447 can place any new item before another2448 behaves like able to move an existing item2449 can place any item betwen two others2450 can place any item after another2451 can place any item before another2452 free_space: 104, index: 0, pos_a: 0, pos_b: 22453 behaves like able to move a new item2454 can place any new item betwen two others2455 can place any new item after another2456 can place any new item before another2457 behaves like able to move an existing item2458 can place any item betwen two others2459 can place any item after another2460 can place any item before another2461 free_space: 104, index: 0, pos_a: 0, pos_b: 12462 behaves like able to move a new item2463 can place any new item betwen two others2464 can place any new item after another2465 can place any new item before another2466 behaves like able to move an existing item2467 can place any item betwen two others2468 can place any item after another2469 can place any item before another2470 free_space: 105, index: 3, pos_a: 2, pos_b: 32471 behaves like able to move a new item2472 can place any new item betwen two others2473 can place any new item after another2474 can place any new item before another2475 behaves like able to move an existing item2476 can place any item betwen two others2477 can place any item after another2478 can place any item before another2479 free_space: 105, index: 3, pos_a: 1, pos_b: 32480 behaves like able to move a new item2481 can place any new item betwen two others2482 can place any new item after another2483 can place any new item before another2484 behaves like able to move an existing item2485 can place any item betwen two others2486 can place any item after another2487 can place any item before another2488 free_space: 105, index: 3, pos_a: 1, pos_b: 22489 behaves like able to move a new item2490 can place any new item betwen two others2491 can place any new item after another2492 can place any new item before another2493 behaves like able to move an existing item2494 can place any item betwen two others2495 can place any item after another2496 can place any item before another2497 free_space: 105, index: 3, pos_a: 0, pos_b: 32498 behaves like able to move a new item2499 can place any new item betwen two others2500 can place any new item after another2501 can place any new item before another2502 behaves like able to move an existing item2503 can place any item betwen two others2504 can place any item after another2505 can place any item before another2506 free_space: 105, index: 3, pos_a: 0, pos_b: 22507 behaves like able to move a new item2508 can place any new item betwen two others2509 can place any new item after another2510 can place any new item before another2511 behaves like able to move an existing item2512 can place any item betwen two others2513 can place any item after another2514 can place any item before another2515 free_space: 105, index: 3, pos_a: 0, pos_b: 12516 behaves like able to move a new item2517 can place any new item betwen two others2518 can place any new item after another2519 can place any new item before another2520 behaves like able to move an existing item2521 can place any item betwen two others2522 can place any item after another2523 can place any item before another2524 free_space: 105, index: 2, pos_a: 2, pos_b: 32525 behaves like able to move a new item2526 can place any new item betwen two others2527 can place any new item after another2528 can place any new item before another2529 behaves like able to move an existing item2530 can place any item betwen two others2531 can place any item after another2532 can place any item before another2533 free_space: 105, index: 2, pos_a: 1, pos_b: 32534 behaves like able to move a new item2535 can place any new item betwen two others2536 can place any new item after another2537 can place any new item before another2538 behaves like able to move an existing item2539 can place any item betwen two others2540 can place any item after another2541 can place any item before another2542 free_space: 105, index: 2, pos_a: 1, pos_b: 22543 behaves like able to move a new item2544 can place any new item betwen two others2545 can place any new item after another2546 can place any new item before another2547 behaves like able to move an existing item2548 can place any item betwen two others2549 can place any item after another2550 can place any item before another2551 free_space: 105, index: 2, pos_a: 0, pos_b: 32552 behaves like able to move a new item2553 can place any new item betwen two others2554 can place any new item after another2555 can place any new item before another2556 behaves like able to move an existing item2557 can place any item betwen two others2558 can place any item after another2559 can place any item before another2560 free_space: 105, index: 2, pos_a: 0, pos_b: 22561 behaves like able to move a new item2562 can place any new item betwen two others2563 can place any new item after another2564 can place any new item before another2565 behaves like able to move an existing item2566 can place any item betwen two others2567 can place any item after another2568 can place any item before another2569 free_space: 105, index: 2, pos_a: 0, pos_b: 12570 behaves like able to move a new item2571 can place any new item betwen two others2572 can place any new item after another2573 can place any new item before another2574 behaves like able to move an existing item2575 can place any item betwen two others2576 can place any item after another2577 can place any item before another2578 free_space: 105, index: 1, pos_a: 2, pos_b: 32579 behaves like able to move a new item2580 can place any new item betwen two others2581 can place any new item after another2582 can place any new item before another2583 behaves like able to move an existing item2584 can place any item betwen two others2585 can place any item after another2586 can place any item before another2587 free_space: 105, index: 1, pos_a: 1, pos_b: 32588 behaves like able to move a new item2589 can place any new item betwen two others2590 can place any new item after another2591 can place any new item before another2592 behaves like able to move an existing item2593 can place any item betwen two others2594 can place any item after another2595 can place any item before another2596 free_space: 105, index: 1, pos_a: 1, pos_b: 22597 behaves like able to move a new item2598 can place any new item betwen two others2599 can place any new item after another2600 can place any new item before another2601 behaves like able to move an existing item2602 can place any item betwen two others2603 can place any item after another2604 can place any item before another2605 free_space: 105, index: 1, pos_a: 0, pos_b: 32606 behaves like able to move a new item2607 can place any new item betwen two others2608 can place any new item after another2609 can place any new item before another2610 behaves like able to move an existing item2611 can place any item betwen two others2612 can place any item after another2613 can place any item before another2614 free_space: 105, index: 1, pos_a: 0, pos_b: 22615 behaves like able to move a new item2616 can place any new item betwen two others2617 can place any new item after another2618 can place any new item before another2619 behaves like able to move an existing item2620 can place any item betwen two others2621 can place any item after another2622 can place any item before another2623 free_space: 105, index: 1, pos_a: 0, pos_b: 12624 behaves like able to move a new item2625 can place any new item betwen two others2626 can place any new item after another2627 can place any new item before another2628 behaves like able to move an existing item2629 can place any item betwen two others2630 can place any item after another2631 can place any item before another2632 free_space: 105, index: 0, pos_a: 2, pos_b: 32633 behaves like able to move a new item2634 can place any new item betwen two others2635 can place any new item after another2636 can place any new item before another2637 behaves like able to move an existing item2638 can place any item betwen two others2639 can place any item after another2640 can place any item before another2641 free_space: 105, index: 0, pos_a: 1, pos_b: 32642 behaves like able to move a new item2643 can place any new item betwen two others2644 can place any new item after another2645 can place any new item before another2646 behaves like able to move an existing item2647 can place any item betwen two others2648 can place any item after another2649 can place any item before another2650 free_space: 105, index: 0, pos_a: 1, pos_b: 22651 behaves like able to move a new item2652 can place any new item betwen two others2653 can place any new item after another2654 can place any new item before another2655 behaves like able to move an existing item2656 can place any item betwen two others2657 can place any item after another2658 can place any item before another2659 free_space: 105, index: 0, pos_a: 0, pos_b: 32660 behaves like able to move a new item2661 can place any new item betwen two others2662 can place any new item after another2663 can place any new item before another2664 behaves like able to move an existing item2665 can place any item betwen two others2666 can place any item after another2667 can place any item before another2668 free_space: 105, index: 0, pos_a: 0, pos_b: 22669 behaves like able to move a new item2670 can place any new item betwen two others2671 can place any new item after another2672 can place any new item before another2673 behaves like able to move an existing item2674 can place any item betwen two others2675 can place any item after another2676 can place any item before another2677 free_space: 105, index: 0, pos_a: 0, pos_b: 12678 behaves like able to move a new item2679 can place any new item betwen two others2680 can place any new item after another2681 can place any new item before another2682 behaves like able to move an existing item2683 can place any item betwen two others2684 can place any item after another2685 can place any item before another2686Gitlab::Git::Repository2687 Respond to2688 is expected to respond to #root_ref2689 is expected to respond to #tags2690 #root_ref2691 returns UTF-82692 gets the branch name from GitalyClient2693 behaves like wrapping gRPC errors2694 wraps gRPC not found error2695 wraps gRPC unknown error2696 #create_repository2697 behaves like wrapping gRPC errors2698 wraps gRPC not found error2699 wraps gRPC unknown error2700 #branch_names2701 has TestRepo::BRANCH_SHA.size elements2702 returns UTF-82703 is expected to include "master"2704 is expected not to include "branch-from-space"2705 behaves like wrapping gRPC errors2706 wraps gRPC not found error2707 wraps gRPC unknown error2708 #tag_names2709 is expected to be a kind of Array2710 has some elements2711 returns UTF-82712 is expected to include "v1.0.0"2713 is expected not to include "v5.0.0"2714 #last2715 is expected to eq "v1.1.1"2716 behaves like wrapping gRPC errors2717 wraps gRPC not found error2718 wraps gRPC unknown error2719 #tags2720 behaves like wrapping gRPC errors2721 wraps gRPC not found error2722 wraps gRPC unknown error2723 #archive_metadata2724 sets CommitId to the commit SHA2725 sets ArchivePrefix to the expected prefix2726 sets ArchivePath to the expected globally-unique path2727 path is set2728 appends the path to the prefix2729 append_sha varies archive path and filename2730 append_sha: true, ref: "master", expected_prefix: "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2731 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2732 is expected to eq "/tmp/project-6/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2733 append_sha: true, ref: "b83d6e391c22777fca1ed3012fce84f633d7fed0", expected_prefix: "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0-b83d6e391c22777fca1ed3012fce84f633d7fed0"2734 is expected to eq "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0-b83d6e391c22777fca1ed3012fce84f633d7fed0"2735 is expected to eq "/tmp/project-6/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2736 append_sha: false, ref: "master", expected_prefix: "gitlab-git-test-master"2737 is expected to eq "gitlab-git-test-master"2738 is expected to eq "/tmp/project-6/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master.tar.gz"2739 append_sha: false, ref: "b83d6e391c22777fca1ed3012fce84f633d7fed0", expected_prefix: "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0"2740 is expected to eq "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0"2741 is expected to eq "/tmp/project-6/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2742 append_sha: nil, ref: "master", expected_prefix: "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2743 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2744 is expected to eq "/tmp/project-6/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2745 append_sha: nil, ref: "b83d6e391c22777fca1ed3012fce84f633d7fed0", expected_prefix: "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0"2746 is expected to eq "gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0"2747 is expected to eq "/tmp/project-6/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2748 format varies archive path and filename2749 format: nil, expected_extension: "tar.gz"2750 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2751 is expected to eq "/tmp/project-6/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2752 format: "madeup", expected_extension: "tar.gz"2753 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2754 is expected to eq "/tmp/project-6/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.gz"2755 format: "tbz2", expected_extension: "tar.bz2"2756 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2757 is expected to eq "/tmp/project-6/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.tar.bz2"2758 format: "zip", expected_extension: "zip"2759 is expected to eq "gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0"2760 is expected to eq "/tmp/project-6/b83d6e391c22777fca1ed3012fce84f633d7fed0/@v2/gitlab-git-test-master-b83d6e391c22777fca1ed3012fce84f633d7fed0.zip"2761 when references are ambiguous2762 when tag is ambiguous2763 ref: "refs/heads/branch-merged", expected_commit_id: branch_master_commit_id, desc: "when tag looks like a branch"2764 selects the correct commit2765 ref: "branch-merged", expected_commit_id: branch_master_commit_id, desc: "when tag has the same name as a branch"2766 selects the correct commit2767 ref: branch_merged_commit_id, expected_commit_id: branch_merged_commit_id, desc: "when tag looks like a commit id"2768 selects the correct commit2769 ref: "v0.0.0", expected_commit_id: branch_master_commit_id, desc: "when tag looks like a normal tag"2770 selects the correct commit2771 when resolve_ambiguous_archives is disabled2772 ref: "refs/heads/branch-merged", expected_commit_id: branch_merged_commit_id, desc: "when tag looks like a branch (difference!)"2773 selects the correct commit2774 ref: "branch-merged", expected_commit_id: branch_master_commit_id, desc: "when tag has the same name as a branch"2775 selects the correct commit2776 ref: branch_merged_commit_id, expected_commit_id: branch_merged_commit_id, desc: "when tag looks like a commit id"2777 selects the correct commit2778 ref: "v0.0.0", expected_commit_id: branch_master_commit_id, desc: "when tag looks like a normal tag"2779 selects the correct commit2780 when branch is ambiguous2781 ref: "refs/tags/v1.0.0", expected_commit_id: branch_master_commit_id, desc: "when branch looks like a tag"2782 selects the correct commit2783 ref: "v1.0.0", expected_commit_id: tag_1_0_0_commit_id, desc: "when branch has the same name as a tag"2784 selects the correct commit2785 ref: branch_merged_commit_id, expected_commit_id: branch_merged_commit_id, desc: "when branch looks like a commit id"2786 selects the correct commit2787 ref: "just-a-normal-branch", expected_commit_id: branch_master_commit_id, desc: "when branch looks like a normal branch"2788 selects the correct commit2789 when resolve_ambiguous_archives is disabled2790 ref: "refs/tags/v1.0.0", expected_commit_id: tag_1_0_0_commit_id, desc: "when branch looks like a tag (difference!)"2791 selects the correct commit2792 ref: "v1.0.0", expected_commit_id: tag_1_0_0_commit_id, desc: "when branch has the same name as a tag"2793 selects the correct commit2794 ref: branch_merged_commit_id, expected_commit_id: branch_merged_commit_id, desc: "when branch looks like a commit id"2795 selects the correct commit2796 ref: "just-a-normal-branch", expected_commit_id: branch_master_commit_id, desc: "when branch looks like a normal branch"2797 selects the correct commit2798 when ref is HEAD2799 selects commit id from HEAD ref2800 when ref is not found2801 returns empty metadata2802 #size2803 is expected to be > 02804 #to_s2805 is expected to eq "<Gitlab::Git::Repository: namespace1/project-6>"2806 #object_directory_size2807 is expected to eq 20482808 #empty?2809 is expected not to be empty2810 #ref_names2811 is expected to be a kind of Array2812 #first2813 is expected to eq "'test'"2814 #last2815 is expected to eq "v1.1.1"2816 #submodule_url_for2817 is expected to eq "git://github.com/randx/six.git"2818 is expected to eq "git://github.com/randx/six.git"2819 is expected to eq nil2820 uncommitted submodule dir2821 is expected to eq nil2822 tags2823 is expected to eq "git://github.com/randx/six.git"2824 no .gitmodules at commit2825 is expected to eq nil2826 no gitlink entry2827 is expected to eq nil2828 #submodule_urls_for2829 returns url mappings for submodules2830 #commit_count2831 is expected to eq 372832 is expected to eq 92833 is expected to eq 02834 behaves like wrapping gRPC errors2835 wraps gRPC not found error2836 wraps gRPC unknown error2837 #diverging_commit_count2838 counts 0 for the same branch2839 max count does not truncate results2840 left: 1, right: 1, expected: [1, 1]2841 returns the correct count bounding at max_count2842 left: 4, right: 4, expected: [4, 4]2843 returns the correct count bounding at max_count2844 left: 2, right: 2, expected: [2, 2]2845 returns the correct count bounding at max_count2846 left: 2, right: 4, expected: [2, 4]2847 returns the correct count bounding at max_count2848 left: 4, right: 2, expected: [4, 2]2849 returns the correct count bounding at max_count2850 left: 10, right: 10, expected: [10, 10]2851 returns the correct count bounding at max_count2852 max count truncates results2853 left: 1, right: 1, max_count: 12854 returns the correct count bounding at max_count2855 left: 4, right: 4, max_count: 42856 returns the correct count bounding at max_count2857 left: 2, right: 2, max_count: 32858 returns the correct count bounding at max_count2859 left: 2, right: 4, max_count: 32860 returns the correct count bounding at max_count2861 left: 4, right: 2, max_count: 52862 returns the correct count bounding at max_count2863 left: 10, right: 10, max_count: 102864 returns the correct count bounding at max_count2865 behaves like wrapping gRPC errors2866 wraps gRPC not found error2867 wraps gRPC unknown error2868 #has_local_branches?2869 check for local branches2870 is expected to eq true2871 #delete_branch2872 deletes a branch2873 deletes a fully qualified branch2874 #delete_refs2875 deletes the ref2876 deletes all refs2877 does not fail when deleting an empty list of refs2878 raises an error if it failed2879 #branch_names_contains_sha2880 displays that branch2881 when limit is provided2882 displays limited number of branches2883 #refs_hash2884 has as many entries as branches and tags2885 has valid commit ids as keys2886 does not error when dereferenced_target is nil2887 #fetch_remote2888 delegates to the gitaly RepositoryService2889 behaves like wrapping gRPC errors2890 wraps gRPC not found error2891 wraps gRPC unknown error2892 #search_files_by_content2893 has 2 items2894 has the correct matching line2895 #search_files_by_regexp2896 when sending a valid regexp2897 returns matched files2898 when sending an ivalid regexp2899 raises error2900 when the ref doesn't exist2901 returns an empty array2902 #search_files_by_name2903 when sending a valid name2904 returns matched files2905 when sending a name with space2906 returns matched files2907 when sending a name with special ASCII characters2908 returns matched files2909 when sending a non-existing name2910 raises error2911 #find_remote_root_ref2912 gets the remote root ref from GitalyClient2913 returns UTF-82914 returns nil when remote name is nil2915 returns nil when remote name is empty2916 behaves like wrapping gRPC errors2917 wraps gRPC not found error2918 wraps gRPC unknown error2919 #log2920 when Gitaly find_commits feature is enabled2921 behaves like repository log2922 where 'follow' == true2923 and 'path' is a directory2924 does not follow renames2925 and 'path' is a file that matches the new filename2926 without offset2927 follows renames2928 with offset=12929 follows renames and skip the latest commit2930 with offset=1 and limit=12931 follows renames, skip the latest commit and return only one commit2932 with offset=1 and limit=22933 follows renames, skip the latest commit and return only two commits2934 with offset=22935 follows renames and skip the latest commit2936 with offset=2 and limit=12937 follows renames, skip the two latest commit and return only one commit2938 with offset=2 and limit=22939 follows renames, skip the two latest commit and return only one commit2940 and 'path' is a file that matches the old filename2941 does not follow renames2942 unknown ref2943 returns an empty array2944 where 'follow' == false2945 and 'path' is a directory2946 does not follow renames2947 and 'path' is a file that matches the new filename2948 does not follow renames2949 and 'path' is a file that matches the old filename2950 does not follow renames2951 where provides 'after' timestamp2952 returns commits on or after that timestamp2953 where provides 'before' timestamp2954 returns commits on or before that timestamp2955 when multiple paths are provided2956 only returns commits matching at least one path2957 limit validation2958 limit: 02959 is expected to raise ArgumentError2960 limit: nil2961 is expected to raise ArgumentError2962 limit: ""2963 is expected to raise ArgumentError2964 limit: "foo"2965 is expected to raise ArgumentError2966 with all2967 returns a list of commits2968 #blobs2969 single revision2970 behaves like a blob enumeration2971 enumerates blobs2972 multiple revisions2973 behaves like a blob enumeration2974 enumerates blobs2975 pseudo revisions2976 behaves like a blob enumeration2977 enumerates blobs2978 blank revisions2979 behaves like a blob enumeration2980 enumerates blobs2981 #new_blobs2982 with a single revision2983 behaves like #new_blobs with revisions2984 enumerates new blobs2985 memoizes results2986 with a single-entry array2987 behaves like #new_blobs with revisions2988 enumerates new blobs2989 memoizes results2990 with multiple revisions2991 behaves like #new_blobs with revisions2992 enumerates new blobs2993 memoizes results2994 with partially blank revisions2995 behaves like #new_blobs with revisions2996 enumerates new blobs2997 memoizes results2998 with repeated revisions2999 behaves like #new_blobs with revisions3000 enumerates new blobs3001 memoizes results3002 with preexisting commits3003 behaves like #new_blobs with revisions3004 enumerates new blobs3005 memoizes results3006 with a single nil newrev3007 behaves like #new_blobs without revisions3008 returns an empty array3009 with a single zero newrev3010 behaves like #new_blobs without revisions3011 returns an empty array3012 with an empty array3013 behaves like #new_blobs without revisions3014 returns an empty array3015 with array containing only empty refs3016 behaves like #new_blobs without revisions3017 returns an empty array3018 #new_commits3019 enumerates commits3020 #count_commits_between3021 is expected to eq 293022 #raw_changes_between3023 initial commit3024 returns the changes3025 with an invalid rev3026 returns an error3027 with valid revs3028 returns the changes3029 #merge_base3030 from: "master", to: "feature", result: "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"3031 is expected to eq "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"3032 from: "feature", to: "master", result: "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"3033 is expected to eq "ae73cb07c9eeaf35924a10f713b364d32b2dd34f"3034 from: "master", to: "foobar", result: nil3035 is expected to eq nil3036 from: "foobar", to: "master", result: nil3037 is expected to eq nil3038 #count_commits3039 extended commit counting3040 with after timestamp3041 returns the number of commits after timestamp3042 with before timestamp3043 returns the number of commits before timestamp3044 with max_count3045 returns the number of commits with path3046 with path3047 returns the number of commits with path3048 with option :from and option :to3049 returns the number of commits ahead for master..feature3050 returns the number of commits ahead for feature..master3051 with option :left_right3052 returns the number of commits for master..feature3053 with max_count3054 returns the number of commits3055 with max_count3056 returns the number of commits up to the passed limit3057 with all3058 returns the number of commits in the whole repository3059 without all or ref being specified3060 raises an ArgumentError3061 #find_branch3062 returns a Branch for master3063 handles non-existent branch3064 when branch is ambiguous3065 returns nil for ambiguous branch3066 #branches3067 with local and remote branches3068 returns the local and remote branches3069 behaves like wrapping gRPC errors3070 wraps gRPC not found error3071 wraps gRPC unknown error3072 #branch_count3073 returns the number of branches3074 with local and remote branches3075 returns the count of local branches3076 #merged_branch_names3077 when branch names are passed3078 only returns the names we are asking3079 does not return unmerged branch names3080 when no root ref is available3081 returns empty list3082 when no branch names are specified3083 returns all merged branch names except for identical one3084 #diff_stats3085 returns a DiffStatsCollection3086 yields Gitaly::DiffStats objects3087 returns no Gitaly::DiffStats when SHAs are invalid3088 returns no Gitaly::DiffStats when there is a nil SHA3089 returns no Gitaly::DiffStats when there is a BLANK_SHA3090 #find_changed_paths3091 returns a list of paths3092 returns no paths when SHAs are invalid3093 returns a list of paths even when containing a blank ref3094 returns no paths when the commits are nil3095 #ls_files3096 read every file paths of master branch3097 reads full file paths of master branch3098 does not read submodule directory and empty directory of master branch3099 does not include 'nil'3100 returns empty array when not existed branch3101 returns valid utf-8 data3102 #copy_gitattributes3103 raises an error with invalid ref3104 when forcing encoding issues3105 doesn't raise with a valid unicode ref3106 #gitattribute3107 with gitattributes3108 returns matching language attribute3109 returns matching language attribute with additional options3110 returns nil if nothing matches3111 without gitattributes3112 returns nil3113 #ref_exists?3114 returns true for an existing tag3115 returns false for a non-existing tag3116 raises an ArgumentError for an empty string3117 raises an ArgumentError for an invalid ref3118 #tag_exists?3119 returns true for an existing tag3120 returns false for a non-existing tag3121 #branch_exists?3122 returns true for an existing branch3123 returns false for a non-existing branch3124 returns false when using an invalid branch name3125 #local_branches3126 returns the local branches3127 returns a Branch with UTF-8 fields3128 gets the branches from GitalyClient3129 behaves like wrapping gRPC errors3130 wraps gRPC not found error3131 wraps gRPC unknown error3132 #find_tag3133 returns a tag3134 when asking for a non-existent tag3135 behaves like a nonexistent tag3136 returns nil3137 when Gitaly returns Internal error3138 behaves like a nonexistent tag3139 returns nil3140 when Gitaly returns tag_not_found error3141 behaves like a nonexistent tag3142 returns nil3143 #languages3144 returns exactly the expected results3145 uses the repository's HEAD when no ref is passed3146 #license3147 when no license file can be found3148 is expected to be nil3149 when an mit license is found3150 is expected to have attributes {:key => "mit"}3151 when license is not recognized3152 is expected to have attributes {:key => "other", :nickname => "LICENSE"}3153 #fetch_source_branch!3154 when the branch exists3155 when the commit does not exist locally3156 writes the ref3157 when the commit exists locally3158 writes the ref3159 when the branch does not exist3160 does not write the ref3161 #rm_branch3162 removes the branch from the repo3163 #write_ref3164 writes the HEAD3165 writes other refs3166 validations3167 ref_path: "foo bar", ref: "123"3168 raises ArgumentError3169 ref_path: "foobar", ref: "12\u00003"3170 raises ArgumentError3171 #list_refs3172 returns a list of branches with their head commit3173 filters by pattern3174 with pointing_at_oids and peel_tags options3175 filters by target OIDs3176 returns peeled_target for annotated tags3177 #refs_by_oid3178 returns a list of refs from a OID3179 returns a single ref from a OID3180 returns empty for unknown ID3181 returns nil for an empty repo3182 #set_full_path3183 writes full_path to gitaly3184 it is given an empty path3185 does not write it to disk3186 repository does not exist3187 raises NoRepository and does not call SetFullPath3188 #full_path3189 returns the full path3190 #merge_to_ref3191 generates a commit in the target_ref3192 does not change the right branch HEAD3193 #merge3194 can perform a merge3195 returns nil if there was a concurrent branch update3196 #ff_merge3197 calls Gitaly's OperationService3198 behaves like #ff_merge3199 performs a ff_merge3200 with a non-existing target branch3201 throws an ArgumentError3202 with a non-existing source commit3203 throws an ArgumentError3204 when the source sha is not a descendant of the branch head3205 doesn't perform the ff_merge3206 #delete_all_refs_except3207 deletes all refs except those with the specified prefixes3208 #bundle_to_disk3209 saves a bundle to disk3210 #create_from_bundle3211 creates a repo from a bundle file3212 raises an error if the bundle is an attempted malicious payload3213 #compare_source_branch3214 compares two branches cross repo3215 source ref does not exist in source repo3216 returns an empty comparison3217 #checksum3218 calculates the checksum for non-empty repo3219 returns a blank sha for an empty repo3220 raises NoRepository for a non-existent repo3221 #replicas3222 gets the replica checksum through praefect3223 #disconnect_alternates3224 does not raise an error when disconnecting a non-linked repository3225 can still access objects in the object pool3226 #rename3227 moves the repository3228 #remove3229 removes the repository3230 when the repository does not exist3231 is idempotent3232 #import_repository3233 raises an error if a relative path is provided3234 raises an error if an absolute path is provided3235 delegates to Gitaly3236 behaves like wrapping gRPC errors3237 wraps gRPC not found error3238 wraps gRPC unknown error3239 #replicate3240 destination does not exist3241 mirrors the source repository3242 destination exists3243 mirrors the source repository3244 with keep-around refs3245 includes the temporary and keep-around refs3246 #check_objects_exist3247 returns hash specifying which object exists in repo3248Gitlab::UsageDataMetrics3249 .uncached_data3250 with instrumentation_class3251 includes top level keys3252 includes counts keys3253 includes usage_activity_by_stage keys3254 includes usage_activity_by_stage metrics3255 includes usage_activity_by_stage_monthly keys3256 includes settings keys3257 Redis_HLL_counters3258 is included in the Service Ping hash structure3259Namespace::PackageSetting3260 relationships3261 is expected to belong to namespace required: false3262 validations3263 is expected to validate that :namespace cannot be empty/falsy3264 #maven_duplicates_allowed3265 is expected to allow :maven_duplicates_allowed to be ‹true›3266 is expected to allow :maven_duplicates_allowed to be ‹false›3267 is expected not to allow :maven_duplicates_allowed to be ‹nil›3268 is expected to allow :generic_duplicates_allowed to be ‹true›3269 is expected to allow :generic_duplicates_allowed to be ‹false›3270 is expected not to allow :generic_duplicates_allowed to be ‹nil›3271 regex values3272 is expected to allow :maven_duplicate_exception_regex to be ‹"SNAPSHOT"›3273 is expected to allow :maven_duplicate_exception_regex to be ‹".*"›3274 is expected to allow :maven_duplicate_exception_regex to be ‹"v.+"›3275 is expected to allow :maven_duplicate_exception_regex to be ‹"v10.1.*"›3276 is expected to allow :maven_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP)"›3277 is expected not to allow :maven_duplicate_exception_regex to be ‹"["›3278 is expected not to allow :maven_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP"›3279 is expected to allow :generic_duplicate_exception_regex to be ‹"SNAPSHOT"›3280 is expected to allow :generic_duplicate_exception_regex to be ‹".*"›3281 is expected to allow :generic_duplicate_exception_regex to be ‹"v.+"›3282 is expected to allow :generic_duplicate_exception_regex to be ‹"v10.1.*"›3283 is expected to allow :generic_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP)"›3284 is expected not to allow :generic_duplicate_exception_regex to be ‹"["›3285 is expected not to allow :generic_duplicate_exception_regex to be ‹"(?:v.+|SNAPSHOT|TEMP"›3286 #duplicates_allowed?3287 package types with package_settings3288 with package_type:maven_package3289 duplicates_allowed: true, duplicate_exception_regex: "", result: true3290 for maven_package3291 is expected to equal true3292 duplicates_allowed: false, duplicate_exception_regex: "", result: false3293 for maven_package3294 is expected to equal false3295 duplicates_allowed: false, duplicate_exception_regex: ".*", result: true3296 for maven_package3297 is expected to equal true3298 duplicates_allowed: false, duplicate_exception_regex: "fo.*", result: true3299 for maven_package3300 is expected to equal true3301 duplicates_allowed: false, duplicate_exception_regex: "be.*", result: true3302 for maven_package3303 is expected to equal true3304 with package_type:generic_package3305 duplicates_allowed: true, duplicate_exception_regex: "", result: true3306 for generic_package3307 is expected to equal true3308 duplicates_allowed: false, duplicate_exception_regex: "", result: false3309 for generic_package3310 is expected to equal false3311 duplicates_allowed: false, duplicate_exception_regex: ".*", result: true3312 for generic_package3313 is expected to equal true3314 duplicates_allowed: false, duplicate_exception_regex: "fo.*", result: true3315 for generic_package3316 is expected to equal true3317 duplicates_allowed: false, duplicate_exception_regex: "be.*", result: true3318 for generic_package3319 is expected to equal true3320 package types without package_settings3321 with package_type:npm_package3322 raises an error3323 with package_type:conan_package3324 raises an error3325 with package_type:nuget_package3326 raises an error3327 with package_type:pypi_package3328 raises an error3329 with package_type:composer_package3330 raises an error3331 with package_type:golang_package3332 raises an error3333 with package_type:debian_package3334 raises an error3335 package forwarding attributes3336 behaves like a cascading namespace setting boolean attribute3337 #maven_package_requests_forwarding3338 when there is no parent3339 and the value is not nil3340 returns the local value3341 and the value is nil3342 returns the application settings value3343 when parent does not lock the attribute3344 and value is not nil3345 returns local setting when present3346 returns the parent value when local value is nil3347 returns the correct dirty value3348 does not return the application setting value when parent value is false3349 and the value is nil3350 cascades to the application settings value3351 when multiple ancestors set a value3352 returns the closest ancestor value3353 when parent locks the attribute3354 returns the parent value3355 does not allow the local value to be saved3356 when the application settings locks the attribute3357 returns the application setting value3358 does not allow the local value to be saved3359 when parent locked the attribute then the application settings locks it3360 returns the application setting value3361 #maven_package_requests_forwarding?3362 aliases the method when the attribute is a boolean3363 #maven_package_requests_forwarding=3364 parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil3365 validates starting values from before block3366 does not save the value locally when it matches cascaded value3367 when mass assigned3368 does not save the value locally when it matches cascaded value3369 parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil3370 validates starting values from before block3371 does not save the value locally when it matches cascaded value3372 when mass assigned3373 does not save the value locally when it matches cascaded value3374 parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true3375 validates starting values from before block3376 does not save the value locally when it matches cascaded value3377 when mass assigned3378 does not save the value locally when it matches cascaded value3379 parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true3380 validates starting values from before block3381 does not save the value locally when it matches cascaded value3382 when mass assigned3383 does not save the value locally when it matches cascaded value3384 parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false3385 validates starting values from before block3386 does not save the value locally when it matches cascaded value3387 when mass assigned3388 does not save the value locally when it matches cascaded value3389 parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false3390 validates starting values from before block3391 does not save the value locally when it matches cascaded value3392 when mass assigned3393 does not save the value locally when it matches cascaded value3394 parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil3395 validates starting values from before block3396 does not save the value locally when it matches cascaded value3397 when mass assigned3398 does not save the value locally when it matches cascaded value3399 parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true3400 validates starting values from before block3401 does not save the value locally when it matches cascaded value3402 when mass assigned3403 does not save the value locally when it matches cascaded value3404 parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false3405 validates starting values from before block3406 does not save the value locally when it matches cascaded value3407 when mass assigned3408 does not save the value locally when it matches cascaded value3409 parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true3410 validates starting values from before block3411 does not save the value locally when it matches cascaded value3412 when mass assigned3413 does not save the value locally when it matches cascaded value3414 #maven_package_requests_forwarding_locked?3415 when attribute is locked by self3416 is not locked by default3417 is locked when including self3418 when parent does not lock the attribute3419 behaves like not locked3420 is not locked by an ancestor3421 is not locked by application setting3422 does not return a locked namespace3423 when parent locks the attribute3424 is locked by an ancestor3425 is not locked by application setting3426 returns a locked namespace settings object3427 when not locked by application settings3428 behaves like not locked3429 is not locked by an ancestor3430 is not locked by application setting3431 does not return a locked namespace3432 when locked by application settings3433 is not locked by an ancestor3434 is locked by application setting3435 does not return a locked namespace3436 #lock_maven_package_requests_forwarding=3437 when parent locks the attribute3438 does not allow the attribute to be saved3439 when parent does not lock the attribute3440 allows the lock to be set when the attribute is not nil3441 does not allow the lock to be saved when the attribute is nil3442 copies the cascaded value when locking the attribute if the local value is nil3443 when application settings locks the attribute3444 does not allow the attribute to be saved3445 when application_settings does not lock the attribute3446 allows the attribute to be saved3447 after update callback3448 clears descendant locks3449 behaves like a cascading namespace setting boolean attribute3450 #pypi_package_requests_forwarding3451 when there is no parent3452 and the value is not nil3453 returns the local value3454 and the value is nil3455 returns the application settings value3456 when parent does not lock the attribute3457 and value is not nil3458 returns local setting when present3459 returns the parent value when local value is nil3460 returns the correct dirty value3461 does not return the application setting value when parent value is false3462 and the value is nil3463 cascades to the application settings value3464 when multiple ancestors set a value3465 returns the closest ancestor value3466 when parent locks the attribute3467 returns the parent value3468 does not allow the local value to be saved3469 when the application settings locks the attribute3470 returns the application setting value3471 does not allow the local value to be saved3472 when parent locked the attribute then the application settings locks it3473 returns the application setting value3474 #pypi_package_requests_forwarding?3475 aliases the method when the attribute is a boolean3476 #pypi_package_requests_forwarding=3477 parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil3478 validates starting values from before block3479 does not save the value locally when it matches cascaded value3480 when mass assigned3481 does not save the value locally when it matches cascaded value3482 parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil3483 validates starting values from before block3484 does not save the value locally when it matches cascaded value3485 when mass assigned3486 does not save the value locally when it matches cascaded value3487 parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true3488 validates starting values from before block3489 does not save the value locally when it matches cascaded value3490 when mass assigned3491 does not save the value locally when it matches cascaded value3492 parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true3493 validates starting values from before block3494 does not save the value locally when it matches cascaded value3495 when mass assigned3496 does not save the value locally when it matches cascaded value3497 parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false3498 validates starting values from before block3499 does not save the value locally when it matches cascaded value3500 when mass assigned3501 does not save the value locally when it matches cascaded value3502 parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false3503 validates starting values from before block3504 does not save the value locally when it matches cascaded value3505 when mass assigned3506 does not save the value locally when it matches cascaded value3507 parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil3508 validates starting values from before block3509 does not save the value locally when it matches cascaded value3510 when mass assigned3511 does not save the value locally when it matches cascaded value3512 parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true3513 validates starting values from before block3514 does not save the value locally when it matches cascaded value3515 when mass assigned3516 does not save the value locally when it matches cascaded value3517 parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false3518 validates starting values from before block3519 does not save the value locally when it matches cascaded value3520 when mass assigned3521 does not save the value locally when it matches cascaded value3522 parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true3523 validates starting values from before block3524 does not save the value locally when it matches cascaded value3525 when mass assigned3526 does not save the value locally when it matches cascaded value3527 #pypi_package_requests_forwarding_locked?3528 when attribute is locked by self3529 is not locked by default3530 is locked when including self3531 when parent does not lock the attribute3532 behaves like not locked3533 is not locked by an ancestor3534 is not locked by application setting3535 does not return a locked namespace3536 when parent locks the attribute3537 is locked by an ancestor3538 is not locked by application setting3539 returns a locked namespace settings object3540 when not locked by application settings3541 behaves like not locked3542 is not locked by an ancestor3543 is not locked by application setting3544 does not return a locked namespace3545 when locked by application settings3546 is not locked by an ancestor3547 is locked by application setting3548 does not return a locked namespace3549 #lock_pypi_package_requests_forwarding=3550 when parent locks the attribute3551 does not allow the attribute to be saved3552 when parent does not lock the attribute3553 allows the lock to be set when the attribute is not nil3554 does not allow the lock to be saved when the attribute is nil3555 copies the cascaded value when locking the attribute if the local value is nil3556 when application settings locks the attribute3557 does not allow the attribute to be saved3558 when application_settings does not lock the attribute3559 allows the attribute to be saved3560 after update callback3561 clears descendant locks3562 behaves like a cascading namespace setting boolean attribute3563 #npm_package_requests_forwarding3564 when there is no parent3565 and the value is not nil3566 returns the local value3567 and the value is nil3568 returns the application settings value3569 when parent does not lock the attribute3570 and value is not nil3571 returns local setting when present3572 returns the parent value when local value is nil3573 returns the correct dirty value3574 does not return the application setting value when parent value is false3575 and the value is nil3576 cascades to the application settings value3577 when multiple ancestors set a value3578 returns the closest ancestor value3579 when parent locks the attribute3580 returns the parent value3581 does not allow the local value to be saved3582 when the application settings locks the attribute3583 returns the application setting value3584 does not allow the local value to be saved3585 when parent locked the attribute then the application settings locks it3586 returns the application setting value3587 #npm_package_requests_forwarding?3588 aliases the method when the attribute is a boolean3589 #npm_package_requests_forwarding=3590 parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil3591 validates starting values from before block3592 does not save the value locally when it matches cascaded value3593 when mass assigned3594 does not save the value locally when it matches cascaded value3595 parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil3596 validates starting values from before block3597 does not save the value locally when it matches cascaded value3598 when mass assigned3599 does not save the value locally when it matches cascaded value3600 parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true3601 validates starting values from before block3602 does not save the value locally when it matches cascaded value3603 when mass assigned3604 does not save the value locally when it matches cascaded value3605 parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true3606 validates starting values from before block3607 does not save the value locally when it matches cascaded value3608 when mass assigned3609 does not save the value locally when it matches cascaded value3610 parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false3611 validates starting values from before block3612 does not save the value locally when it matches cascaded value3613 when mass assigned3614 does not save the value locally when it matches cascaded value3615 parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false3616 validates starting values from before block3617 does not save the value locally when it matches cascaded value3618 when mass assigned3619 does not save the value locally when it matches cascaded value3620 parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil3621 validates starting values from before block3622 does not save the value locally when it matches cascaded value3623 when mass assigned3624 does not save the value locally when it matches cascaded value3625 parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true3626 validates starting values from before block3627 does not save the value locally when it matches cascaded value3628 when mass assigned3629 does not save the value locally when it matches cascaded value3630 parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false3631 validates starting values from before block3632 does not save the value locally when it matches cascaded value3633 when mass assigned3634 does not save the value locally when it matches cascaded value3635 parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true3636 validates starting values from before block3637 does not save the value locally when it matches cascaded value3638 when mass assigned3639 does not save the value locally when it matches cascaded value3640 #npm_package_requests_forwarding_locked?3641 when attribute is locked by self3642 is not locked by default3643 is locked when including self3644 when parent does not lock the attribute3645 behaves like not locked3646 is not locked by an ancestor3647 is not locked by application setting3648 does not return a locked namespace3649 when parent locks the attribute3650 is locked by an ancestor3651 is not locked by application setting3652 returns a locked namespace settings object3653 when not locked by application settings3654 behaves like not locked3655 is not locked by an ancestor3656 is not locked by application setting3657 does not return a locked namespace3658 when locked by application settings3659 is not locked by an ancestor3660 is locked by application setting3661 does not return a locked namespace3662 #lock_npm_package_requests_forwarding=3663 when parent locks the attribute3664 does not allow the attribute to be saved3665 when parent does not lock the attribute3666 allows the lock to be set when the attribute is not nil3667 does not allow the lock to be saved when the attribute is nil3668 copies the cascaded value when locking the attribute if the local value is nil3669 when application settings locks the attribute3670 does not allow the attribute to be saved3671 when application_settings does not lock the attribute3672 allows the attribute to be saved3673 after update callback3674 clears descendant locks3675WikiPagePolicy3676 when user is a direct project member3677 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 13678 grants the expected permissions3679 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 13680 grants the expected permissions3681 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 13682 grants the expected permissions3683 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 13684 grants the expected permissions3685 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 13686 grants the expected permissions3687 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 13688 grants the expected permissions3689 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 13690 grants the expected permissions3691 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 03692 grants the expected permissions3693 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 13694 grants the expected permissions3695 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 13696 grants the expected permissions3697 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 03698 grants the expected permissions3699 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 03700 grants the expected permissions3701 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 03702 grants the expected permissions3703 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 03704 grants the expected permissions3705 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 03706 grants the expected permissions3707 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 03708 grants the expected permissions3709 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 13710 grants the expected permissions3711 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 13712 grants the expected permissions3713 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 13714 grants the expected permissions3715 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 13716 grants the expected permissions3717 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 13718 grants the expected permissions3719 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 03720 grants the expected permissions3721 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 13722 grants the expected permissions3723 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 03724 grants the expected permissions3725 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 13726 grants the expected permissions3727 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 13728 grants the expected permissions3729 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 03730 grants the expected permissions3731 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 03732 grants the expected permissions3733 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 03734 grants the expected permissions3735 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 03736 grants the expected permissions3737 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 03738 grants the expected permissions3739 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 03740 grants the expected permissions3741 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 13742 grants the expected permissions3743 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 03744 grants the expected permissions3745 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 13746 grants the expected permissions3747 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 13748 grants the expected permissions3749 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 03750 grants the expected permissions3751 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 03752 grants the expected permissions3753 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 03754 grants the expected permissions3755 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 03756 grants the expected permissions3757 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 03758 grants the expected permissions3759 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 03760 grants the expected permissions3761 when user is an inherited member from the group3762 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 13763 grants the expected permissions3764 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 13765 grants the expected permissions3766 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 13767 grants the expected permissions3768 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 13769 grants the expected permissions3770 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 13771 grants the expected permissions3772 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 13773 grants the expected permissions3774 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 13775 grants the expected permissions3776 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 03777 grants the expected permissions3778 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 13779 grants the expected permissions3780 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 13781 grants the expected permissions3782 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 03783 grants the expected permissions3784 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 03785 grants the expected permissions3786 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 03787 grants the expected permissions3788 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 03789 grants the expected permissions3790 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 03791 grants the expected permissions3792 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 03793 grants the expected permissions3794 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 13795 grants the expected permissions3796 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 13797 grants the expected permissions3798 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 13799 grants the expected permissions3800 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 13801 grants the expected permissions3802 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 13803 grants the expected permissions3804 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 03805 grants the expected permissions3806 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 13807 grants the expected permissions3808 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 03809 grants the expected permissions3810 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 13811 grants the expected permissions3812 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 13813 grants the expected permissions3814 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 03815 grants the expected permissions3816 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 03817 grants the expected permissions3818 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 03819 grants the expected permissions3820 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 03821 grants the expected permissions3822 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 03823 grants the expected permissions3824 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 03825 grants the expected permissions3826 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 13827 grants the expected permissions3828 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 03829 grants the expected permissions3830 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 13831 grants the expected permissions3832 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 13833 grants the expected permissions3834 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 03835 grants the expected permissions3836 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 03837 grants the expected permissions3838 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 03839 grants the expected permissions3840 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 03841 grants the expected permissions3842 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 03843 grants the expected permissions3844 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 03845 grants the expected permissions3846Users::MigrateRecordsToGhostUserService3847 # order random3848 when migrating a user's associated records to the ghost user3849 for issues3850 when deleted user is present as both author and edited_user3851 for a issue the user has created3852 does not delete the issue3853 migrates all associated fields to the "Ghost user"3854 when deleted user is present only as edited_user3855 for a issue the user has created3856 does not delete the issue3857 migrates all associated fields to the "Ghost user"3858 when deleted user is the assignee3859 migrates the issue so that it is "Unassigned"3860 for merge requests3861 when deleted user is present as both author and merge_user3862 for a merge request the user has created3863 does not delete the merge request3864 migrates all associated fields to the "Ghost user"3865 when deleted user is present only as both merge_user3866 for a merge request the user has created3867 does not delete the merge request3868 migrates all associated fields to the "Ghost user"3869 when deleted user is the assignee3870 migrates the merge request so that it is "Unassigned"3871 for notes3872 for a note the user has created3873 does not delete the note3874 migrates all associated fields to the "Ghost user"3875 for abuse reports3876 for a abuse report the user has created3877 does not delete the abuse report3878 migrates all associated fields to the "Ghost user"3879 for award emoji3880 for a award emoji the user has created3881 does not delete the award emoji3882 migrates all associated fields to the "Ghost user"3883 when the awardable already has an award emoji of the same name assigned to the ghost user3884 migrates the award emoji regardless3885 does not leave the migrated award emoji in an invalid state3886 for snippets3887 for a snippet the user has created3888 does not delete the snippet3889 migrates all associated fields to the "Ghost user"3890 for reviews3891 for a review the user has created3892 does not delete the review3893 migrates all associated fields to the "Ghost user"3894 for releases3895 for a release the user has created3896 does not delete the release3897 migrates all associated fields to the "Ghost user"3898 on post-migrate cleanups3899 destroys the user and personal namespace3900 deletes user associations in batches3901 for batched nullify3902 nullifies related associations in batches3903 nullifies associations marked as `dependent: :nullify` anddestroys the associations marked as `dependent: :destroy`, in batches3904 nullifies merge request associations3905 for snippets3906 does not include snippets when deleting in batches3907 calls the bulk snippet destroy service for the user personal snippets3908 calls the bulk snippet destroy service with hard delete option if it is present3909 does not delete project snippets that the user is the author of3910 when an error is raised deleting snippets3911 does not delete user3912 when hard_delete option is given3913 will not ghost certain records3914Issuable::BulkUpdateService3915 with issuables at a project level3916 behaves like bulk update service3917 result count only includes authorized issuables3918 when issuable_ids are passed as an array3919 updates assignees3920 with unpermitted attributes3921 does not update the issues3922 when issuable update service raises an ArgumentError3923 returns an error response3924 close issues3925 succeeds and returns the correct number of issues updated3926 closes all the issues passed3927 behaves like scheduling cached group count clear3928 schedules worker3929 reopen issues3930 succeeds and returns the correct number of issues updated3931 reopens all the issues passed3932 behaves like scheduling cached group count clear3933 schedules worker3934 updating merge request assignee3935 when the new assignee ID is a valid user3936 succeeds3937 updates the assignee to the user ID passed3938 when the new assignee ID is 03939 unassigns the issues3940 when the new assignee IDs array is empty3941 removes all assignees3942 updating issue assignee3943 when the new assignee ID is a valid user3944 succeeds3945 updates the assignee to the user ID passed3946 when the new assignee ID is 03947 unassigns the issues3948 when the new assignee IDs array is empty3949 removes all assignees3950 updating milestones3951 behaves like updates milestones3952 succeeds3953 updates the issuables milestone3954 behaves like not scheduling cached group count clear3955 does not schedule worker3956 updating labels3957 behaves like updating labels3958 when add_label_ids are passed3959 adds those label IDs to all issues passed3960 does not update issues not passed in3961 when remove_label_ids are passed3962 removes those label IDs from all issues passed3963 does not update issues not passed in3964 when add_label_ids and remove_label_ids are passed3965 adds the label IDs to all issues passed3966 removes the label IDs from all issues passed3967 does not update issues not passed in3968 subscribe to issues3969 subscribes the given user3970 unsubscribe from issues3971 unsubscribes the given user3972 updating issues from external project3973 updates only issues that belong to the parent project3974 with issuables at a group level3975 behaves like bulk update service3976 result count only includes authorized issuables3977 when issuable_ids are passed as an array3978 updates assignees3979 updating milestones3980 when issues3981 behaves like updates milestones3982 succeeds3983 updates the issuables milestone3984 when merge requests3985 behaves like updates milestones3986 succeeds3987 updates the issuables milestone3988 updating labels3989 behaves like updating labels3990 when add_label_ids are passed3991 adds those label IDs to all issues passed3992 does not update issues not passed in3993 when remove_label_ids are passed3994 removes those label IDs from all issues passed3995 does not update issues not passed in3996 when add_label_ids and remove_label_ids are passed3997 adds the label IDs to all issues passed3998 removes the label IDs from all issues passed3999 does not update issues not passed in4000 with issues from external group4001 updates issues that belong to the parent group or descendants4002 when no parent is provided4003 returns an unscoped update error4004Ci::UpdateBuildQueueService4005 pending builds queue push / pop4006 #push4007 when pending build can be created4008 creates a new pending build in transaction4009 increments queue push metric4010 when invalid transition is detected4011 raises an error4012 when duplicate entry exists4013 does nothing and returns build id4014 #pop4015 when pending build exists4016 removes pending build in a transaction4017 increments queue pop metric4018 when pending build does not exist4019 does nothing if there is no pending build to remove4020 when invalid transition is detected4021 raises an error4022 #remove!4023 when pending build exists4024 removes pending build in a transaction4025 when pending build does not exist4026 does nothing if there is no pending build to remove4027 shared runner builds tracking4028 #track4029 when a shared runner build can be tracked4030 creates a new shared runner build tracking entry4031 increments new shared runner build metric4032 when invalid transition is detected4033 raises an error4034 when duplicate entry exists4035 does nothing and returns build id4036 #untrack4037 when shared runner build tracking entry exists4038 removes shared runner build4039 increments shared runner build done metric4040 when tracking entry does not exist4041 does nothing if there is no tracking entry to remove4042 when invalid transition is detected4043 raises an error4044 #tick4045 when updating project runners4046 behaves like matching build4047 when there is a online runner that can pick build4048 avoids running redundant queries4049 behaves like refreshes runner4050 ticks runner queue value4051 behaves like mismatching tags4052 when there is no runner that can pick build due to tag mismatch4053 behaves like does not refresh runner4054 ticks runner queue value4055 behaves like recent runner queue4056 when there is runner with expired cache4057 behaves like does not refresh runner4058 ticks runner queue value4059 when the runner is assigned to another project4060 behaves like does not refresh runner4061 ticks runner queue value4062 when updating shared runners4063 behaves like matching build4064 when there is a online runner that can pick build4065 avoids running redundant queries4066 behaves like refreshes runner4067 ticks runner queue value4068 behaves like mismatching tags4069 when there is no runner that can pick build due to tag mismatch4070 behaves like does not refresh runner4071 ticks runner queue value4072 behaves like recent runner queue4073 when there is runner with expired cache4074 behaves like does not refresh runner4075 ticks runner queue value4076 when there is no runner that can pick build due to being disabled on project4077 behaves like does not refresh runner4078 ticks runner queue value4079 when updating group runners4080 behaves like matching build4081 when there is a online runner that can pick build4082 avoids running redundant queries4083 behaves like refreshes runner4084 ticks runner queue value4085 behaves like mismatching tags4086 when there is no runner that can pick build due to tag mismatch4087 behaves like does not refresh runner4088 ticks runner queue value4089 behaves like recent runner queue4090 when there is runner with expired cache4091 behaves like does not refresh runner4092 ticks runner queue value4093 when there is no runner that can pick build due to being disabled on project4094 behaves like does not refresh runner4095 ticks runner queue value4096 avoids N+1 queries4097 does execute the same amount of queries regardless of number of runners4098Gitlab::Ci::Status::Build::Factory4099 when build is successful4100 matches correct core status4101 matches correct extended statuses4102 fabricates a retryable build status4103 fabricates status with correct details4104 when build is erased4105 matches correct core status4106 matches correct extended statuses4107 fabricates a retryable build status4108 fabricates status with correct details4109 when build is failed4110 when build is not allowed to fail4111 matches correct core status4112 matches correct extended statuses4113 fabricates a failed build status4114 fabricates status with correct details4115 when build is allowed to fail4116 matches correct core status4117 matches correct extended statuses4118 fabricates a failed but allowed build status4119 fabricates status with correct details4120 when build has unmet prerequisites4121 matches correct core status4122 matches correct extended statuses4123 fabricates a failed with unmet prerequisites build status4124 fabricates status with correct details4125 when build is a canceled4126 matches correct core status4127 matches correct extended statuses4128 fabricates a retryable build status4129 fabricates status with correct details4130 when build is running4131 matches correct core status4132 matches correct extended statuses4133 fabricates a canceable build status4134 fabricates status with correct details4135 when build is pending4136 matches correct core status4137 matches correct extended statuses4138 fabricates a cancelable build status4139 fabricates status with correct details4140 when build is skipped4141 matches correct core status4142 matches correct extended statuses4143 fabricates a skipped build status4144 fabricates status with correct details4145 when build is a manual action4146 when build is a play action4147 matches correct core status4148 matches correct extended statuses4149 fabricates action detailed status4150 fabricates status with correct details4151 when user has ability to play action4152 fabricates status that has action4153 when user does not have ability to play action4154 fabricates status that has no action4155 when build is an environment stop action4156 matches correct core status4157 matches correct extended statuses4158 fabricates action detailed status4159 when user is not allowed to execute manual action4160 fabricates status with correct details4161 when build is a delayed action4162 matches correct core status4163 matches correct extended statuses4164 fabricates action detailed status4165 fabricates status with correct details4166 when user has ability to play action4167 fabricates status that has action4168 when user does not have ability to play action4169 fabricates status that has no action4170JobArtifactUploader4171 behaves like builds correct paths4172 #store_dir4173 behaves like matches the method pattern4174 is expected to match /\h{2}\/\h{2}\/\h{64}\/\d{4}_\d{1,2}_\d{1,2}\/\d+\/\d+\z/4175 #cache_dir4176 behaves like matches the method pattern4177 is expected to match /artifacts\/tmp\/cache/4178 #work_dir4179 behaves like matches the method pattern4180 is expected to match /artifacts\/tmp\/work/4181 #upload_path4182 behaves like matches the method pattern4183 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4184 #relative_path4185 is relative (PENDING: Path not set, skipping.)4186 .absolute_path4187 behaves like matches the method pattern4188 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4189 .base_dir4190 behaves like matches the method pattern4191 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4192 path traversal exploits4193 throws an exception4194 object store is REMOTE4195 behaves like builds correct paths4196 #store_dir4197 behaves like matches the method pattern4198 is expected to match /\h{2}\/\h{2}\/\h{64}\/\d{4}_\d{1,2}_\d{1,2}\/\d+\/\d+\z/4199 #cache_dir4200 behaves like matches the method pattern4201 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4202 #work_dir4203 behaves like matches the method pattern4204 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4205 #upload_path4206 behaves like matches the method pattern4207 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4208 #relative_path4209 is relative (PENDING: Path not set, skipping.)4210 .absolute_path4211 behaves like matches the method pattern4212 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4213 .base_dir4214 behaves like matches the method pattern4215 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4216 path traversal exploits4217 throws an exception4218 #cdn_enabled_url4219 returns URL and false4220 file is stored in valid local_path4221 is expected to start with "/builds/gitlab-org/gitlab/tmp/tests/artifacts/"4222 is expected to include "/2023_05_15/"4223 is expected to include "/106/28/"4224 is expected to end with "ci_build_artifacts.zip"4225 #dynamic_segment4226 when a job artifact is stored in legacy_path4227 behaves like Read file from legacy path4228 store_path returns the legacy path4229 has exactly the same content4230 when the artifact file is stored in hashed_path4231 behaves like Read file from hashed path4232 store_path returns hashed path4233 has exactly the same content4234 when file_location column is empty4235 behaves like Read file from hashed path4236 store_path returns hashed path4237 has exactly the same content4238 #migrate!4239 does not set Content-Type4240 behaves like migrates4241 returns corresponding file type4242 does nothing when migrating to the current store4243 migrate to the specified store4244 removes the original file after the migration4245 can access to the original file during migration4246 when migrate! is not occupied by another process4247 executes migrate!4248 executes use_file4249 when migrate! is occupied by another process4250 does not execute migrate!4251 does not execute use_file4252 migration is unsuccessful4253 when the store is not supported4254 does not update the object_store4255 does not delete the original file4256 upon a fog failure4257 does not update the object_store4258 does not delete the original file4259 upon a database failure4260 does not update the object_store4261 does not delete the original file4262 behaves like migrates4263 returns corresponding file type4264 does nothing when migrating to the current store4265 migrate to the specified store4266 removes the original file after the migration4267 can access to the original file during migration4268 when migrate! is not occupied by another process4269 executes migrate!4270 executes use_file4271 when migrate! is occupied by another process4272 does not execute migrate!4273 does not execute use_file4274 migration is unsuccessful4275 when the store is not supported4276 does not update the object_store4277 does not delete the original file4278 upon a fog failure4279 does not update the object_store4280 does not delete the original file4281 upon a database failure4282 does not update the object_store4283 does not delete the original file4284Files::MultiService4285 #execute4286 with a valid action4287 returns a hash with the :success status4288 with an invalid action4289 returns a hash with the :error status4290 Updating files4291 when the file has been previously updated4292 rejects the commit4293 when file not changed, but later commit id is used4294 accepts the commit4295 when the file have not been modified4296 accepts the commit4297 changing execute_filemode of a file4298 accepts the commit4299 updates the execute_filemode of the file4300 when the file doesn't exists4301 rejects the commit4302 when moving a file4303 when original file has been updated4304 rejects the commit4305 when original file has not been updated4306 moves the file4307 when content is nil4308 moves the existing content untouched4309 when content is an empty string4310 moves the file and empties it4311 when creating a file matching an LFS filter4312 creates an LFS pointer4313 creates an LfsObject with the file's content4314 links the LfsObject to the project4315 with base64 encoded content4316 creates an LFS pointer4317 creates an LfsObject with the file's content4318 when file status validation is skipped4319 does not check the last commit4320 creates the file4321 when force is set to true and branch already exists4322 is still a success4323Clusters::Agent4324 is expected to belong to created_by_user class_name => User optional: true4325 is expected to belong to project class_name => ::Project required: false4326 is expected to have many agent_tokens class_name => Clusters::AgentToken order => #<Arel::Nodes::NullsLast:0x00007fa9e11bf020>4327 is expected to have many active_agent_tokens class_name => Clusters::AgentToken order => #<Arel::Nodes::NullsLast:0x00007faa1baaac68>4328 is expected to have many ci_access_group_authorizations class_name => Clusters::Agents::Authorizations::CiAccess::GroupAuthorization4329 is expected to have many ci_access_authorized_groups through ci_access_group_authorizations4330 is expected to have many ci_access_project_authorizations class_name => Clusters::Agents::Authorizations::CiAccess::ProjectAuthorization4331 is expected to have many ci_access_authorized_projects class_name => ::Project through ci_access_project_authorizations4332 is expected to validate that :name cannot be empty/falsy4333 is expected to validate that the length of :name is at most 634334 is expected to validate that :name is case-sensitively unique within the scope of :project_id4335 scopes4336 .ordered_by_name4337 is expected to eq ["agent-a", "agent-b", "agent-c", "agent-d"]4338 .with_name4339 is expected to contain exactly #<Clusters::Agent id: 16, created_at: "2023-05-15 17:15:19.799190007 +0000", updated_at: "2023-05-15 ...+0000", project_id: 425, name: "matching-name", created_by_user_id: 737, has_vulnerabilities: false>4340 .has_vulnerabilities4341 when value is not provided4342 returns agents which have vulnerabilities4343 when value is provided4344 as true4345 returns agents which have vulnerabilities4346 as false4347 returns agents which do not have vulnerabilities4348 validation4349 name validation4350 rejects names that do not conform to RFC 11234351 accepts valid names4352 #has_access_to?4353 has access to own project4354 does not have access to other projects4355 #connected?4356 agent has never connected4357 is expected to be falsey4358 agent has connected, but not recently4359 is expected to be falsey4360 agent has connected recently4361 is expected to be truthy4362 agent token has been revoked4363 is expected to be falsey4364 agent has multiple tokens4365 is expected to be truthy4366 #activity_event_deletion_cutoff4367 is expected to within one second of 2023-05-15 15:15:25 UTC4368 #ci_access_authorized_for?4369 is expected to eq false4370 with project-level authorization4371 user_role: :guest, allowed: false4372 is expected to eq false4373 user_role: :reporter, allowed: false4374 is expected to eq false4375 user_role: :developer, allowed: true4376 is expected to eq true4377 user_role: :maintainer, allowed: true4378 is expected to eq true4379 user_role: :owner, allowed: true4380 is expected to eq true4381 when expose_authorized_cluster_agents feature flag is disabled4382 is expected to eq false4383 with group-level authorization4384 user_role: :guest, allowed: false4385 is expected to eq false4386 user_role: :reporter, allowed: false4387 is expected to eq false4388 user_role: :developer, allowed: true4389 is expected to eq true4390 user_role: :maintainer, allowed: true4391 is expected to eq true4392 user_role: :owner, allowed: true4393 is expected to eq true4394 when expose_authorized_cluster_agents feature flag is disabled4395 is expected to eq false4396 #user_access_authorized_for?4397 is expected to eq false4398 with project-level authorization4399 user_role: :guest, allowed: false4400 is expected to eq false4401 user_role: :reporter, allowed: false4402 is expected to eq false4403 user_role: :developer, allowed: true4404 is expected to eq true4405 user_role: :maintainer, allowed: true4406 is expected to eq true4407 user_role: :owner, allowed: true4408 is expected to eq true4409 when expose_authorized_cluster_agents feature flag is disabled4410 is expected to eq false4411 with group-level authorization4412 user_role: :guest, allowed: false4413 is expected to eq false4414 user_role: :reporter, allowed: false4415 is expected to eq false4416 user_role: :developer, allowed: true4417 is expected to eq true4418 user_role: :maintainer, allowed: true4419 is expected to eq true4420 user_role: :owner, allowed: true4421 is expected to eq true4422 when expose_authorized_cluster_agents feature flag is disabled4423 is expected to eq false4424 #user_access_config4425 is expected to be nil4426 with user_access project authorizations4427 is expected to eq {}4428 when access_as keyword exists4429 is expected to eq {"access_as"=>{"agent"=>{}}}4430 with user_access group authorizations4431 is expected to eq {}4432 when access_as keyword exists4433 is expected to eq {"access_as"=>{"agent"=>{}}}4434Gitlab::Cleanup::ProjectUploads4435 #run!4436 orphaned project upload file4437 when an upload record matching the secret and filename is found4438 when the project is still in legacy storage4439 behaves like fixes the file4440 behaves like moves the file4441 when dry_run is false4442 behaves like a real run4443 moves the file to its proper location4444 logs action as done4445 when dry_run is nil4446 behaves like a real run4447 moves the file to its proper location4448 logs action as done4449 when dry_run is true4450 behaves like a dry run4451 does not move the file4452 logs action as able to be done4453 with dry_run not specified4454 behaves like a dry run4455 does not move the file4456 logs action as able to be done4457 when the project was moved to hashed storage4458 behaves like fixes the file4459 behaves like moves the file4460 when dry_run is false4461 behaves like a real run4462 moves the file to its proper location4463 logs action as done4464 when dry_run is nil4465 behaves like a real run4466 moves the file to its proper location4467 logs action as done4468 when dry_run is true4469 behaves like a dry run4470 does not move the file4471 logs action as able to be done4472 with dry_run not specified4473 behaves like a dry run4474 does not move the file4475 logs action as able to be done4476 when the project is missing (the upload *record* is an orphan)4477 behaves like moves the file to lost and found4478 behaves like moves the file4479 when dry_run is false4480 behaves like a real run4481 moves the file to its proper location4482 logs action as done4483 when dry_run is nil4484 behaves like a real run4485 moves the file to its proper location4486 logs action as done4487 when dry_run is true4488 behaves like a dry run4489 does not move the file4490 logs action as able to be done4491 with dry_run not specified4492 behaves like a dry run4493 does not move the file4494 logs action as able to be done4495 when the file should be in object storage4496 when the file otherwise has the correct local path4497 does not move the file4498 when the file has the wrong local path4499 behaves like moves the file to lost and found4500 behaves like moves the file4501 when dry_run is false4502 behaves like a real run4503 moves the file to its proper location4504 logs action as done4505 when dry_run is nil4506 behaves like a real run4507 moves the file to its proper location4508 logs action as done4509 when dry_run is true4510 behaves like a dry run4511 does not move the file4512 logs action as able to be done4513 with dry_run not specified4514 behaves like a dry run4515 does not move the file4516 logs action as able to be done4517 when a matching upload record can not be found4518 when the file path fits the known pattern4519 behaves like moves the file to lost and found4520 behaves like moves the file4521 when dry_run is false4522 behaves like a real run4523 moves the file to its proper location4524 logs action as done4525 when dry_run is nil4526 behaves like a real run4527 moves the file to its proper location4528 logs action as done4529 when dry_run is true4530 behaves like a dry run4531 does not move the file4532 logs action as able to be done4533 with dry_run not specified4534 behaves like a dry run4535 does not move the file4536 logs action as able to be done4537 when the file path does not fit the known pattern4538 behaves like moves the file to lost and found4539 behaves like moves the file4540 when dry_run is false4541 behaves like a real run4542 moves the file to its proper location4543 logs action as done4544 when dry_run is nil4545 behaves like a real run4546 moves the file to its proper location4547 logs action as done4548 when dry_run is true4549 behaves like a dry run4550 does not move the file4551 logs action as able to be done4552 with dry_run not specified4553 behaves like a dry run4554 does not move the file4555 logs action as able to be done4556 non-orphaned project upload file4557 does not move the file4558 ignorable cases4559 does not move any non-project (FileUploader) uploads4560 does not move any uploads in tmp (which would interfere with ongoing upload activity)4561 when the file is already in hashed storage4562 does not move even an orphan file4563Snippets::DestroyService4564 #execute4565 when snippet is nil4566 returns a ServiceResponse error4567 when ProjectSnippet4568 when user is able to admin_project_snippet4569 behaves like a successful destroy4570 deletes the snippet4571 returns ServiceResponse success4572 behaves like deletes the snippet repository4573 removes the snippet repository4574 when the repository deletion service raises an error4575 behaves like an unsuccessful destroy4576 does not delete the snippet4577 returns ServiceResponse error4578 when a destroy error is raised4579 behaves like an unsuccessful destroy4580 does not delete the snippet4581 returns ServiceResponse error4582 when repository is nil4583 does not schedule anything and return success4584 project statistics4585 updates stats after deletion4586 schedules a namespace statistics update4587 when user is not able to admin_project_snippet4588 behaves like an unsuccessful destroy4589 does not delete the snippet4590 returns ServiceResponse error4591 when PersonalSnippet4592 when user is able to admin_personal_snippet4593 schedules a namespace statistics update4594 behaves like a successful destroy4595 deletes the snippet4596 returns ServiceResponse success4597 behaves like deletes the snippet repository4598 removes the snippet repository4599 when the repository deletion service raises an error4600 behaves like an unsuccessful destroy4601 does not delete the snippet4602 returns ServiceResponse error4603 when a destroy error is raised4604 behaves like an unsuccessful destroy4605 does not delete the snippet4606 returns ServiceResponse error4607 when repository is nil4608 does not schedule anything and return success4609 when user is not able to admin_personal_snippet4610 behaves like an unsuccessful destroy4611 does not delete the snippet4612 returns ServiceResponse error4613 when the repository does not exist4614 does not schedule anything and return success4615BulkCreateIntegrationService4616 passing an instance-level integration4617 with a project association4618 behaves like creates integration successfully4619 updates the inherited integrations4620 updates inherit_from_id attributes4621 sets created_at and updated_at timestamps4622 integration with data fields4623 updates the data fields from inherited integrations4624 sets created_at and updated_at timestamps4625 with a group association4626 behaves like creates integration successfully4627 updates the inherited integrations4628 updates inherit_from_id attributes4629 sets created_at and updated_at timestamps4630 integration with data fields4631 updates the data fields from inherited integrations4632 sets created_at and updated_at timestamps4633 passing a group integration4634 with a project association4635 behaves like creates integration successfully4636 updates the inherited integrations4637 updates inherit_from_id attributes4638 sets created_at and updated_at timestamps4639 integration with data fields4640 updates the data fields from inherited integrations4641 sets created_at and updated_at timestamps4642 with different foreign key of data_fields4643 behaves like creates integration successfully4644 updates the inherited integrations4645 updates inherit_from_id attributes4646 sets created_at and updated_at timestamps4647 integration with data fields4648 updates the data fields from inherited integrations4649 sets created_at and updated_at timestamps4650 with a group association4651 behaves like creates integration successfully4652 updates the inherited integrations4653 updates inherit_from_id attributes4654 sets created_at and updated_at timestamps4655 integration with data fields4656 updates the data fields from inherited integrations4657 sets created_at and updated_at timestamps4658 with different foreign key of data_fields4659 behaves like creates integration successfully4660 updates the inherited integrations4661 updates inherit_from_id attributes4662 sets created_at and updated_at timestamps4663 integration with data fields4664 updates the data fields from inherited integrations4665 sets created_at and updated_at timestamps4666DesignManagement::DeleteDesignsService4667 #execute4668 when the feature is not available4669 does not create any events in the activity stream4670 behaves like a service error4671 returns an error4672 when the feature is available4673 is able to delete designs4674 no designs were passed4675 does not log any events4676 does not log any UsageData metrics4677 behaves like a top-level error4678 raises an en expected error4679 one design is passed4680 removes that design4681 logs a deletion event4682 updates UsageData for removed designs4683 creates an event in the activity stream4684 informs the new-version-worker4685 creates a new version4686 returns the new version4687 removes the design from the current design list4688 marks the design as deleted4689 schedules deleting todos for that design4690 behaves like a success4691 returns successfully4692 saves the user as the author4693 behaves like issue_edit snowplow tracking4694 behaves like Snowplow event tracking with RedisHLL context4695 behaves like Snowplow event tracking4696 is emitted4697 more than one design is passed4698 makes the correct changes4699 schedules deleting todos for that design4700 behaves like a success4701 returns successfully4702 saves the user as the author4703 after executing the service4704 removes the removed designs from the current design list4705 does not make the designs impossible to find4706 associates the new version with all the designs4707 marks all deleted designs as deleted4708 marks all deleted designs with the same deletion version4709 scalability4710 makes the same number of DB requests for one design as for several4711Gitlab::PrometheusClient4712 #ping4713 issues a "query" request to the API endpoint4714 #healthy?4715 returns true when status code is 200 and healthy response body4716 returns false when status code is 200 and unhealthy response body4717 raises error when status code not 2004718 #ready?4719 returns true when status code is 2004720 returns false when status code is not 2004721 raises error when ready api throws exception4722 failure to reach a provided prometheus url4723 ping4724 behaves like exceptions are raised4725 raises a Gitlab::PrometheusClient::ConnectionError when a Net::OpenTimeout is rescued4726 raises a Gitlab::PrometheusClient::ConnectionError when a Net::ReadTimeout is rescued4727 raises a Gitlab::PrometheusClient::ConnectionError when a Net::WriteTimeout is rescued4728 raises a Gitlab::PrometheusClient::ConnectionError when a Gitlab::HTTP::ReadTotalTimeout is rescued4729 raises a Gitlab::PrometheusClient::ConnectionError when a EOFError is rescued4730 raises a Gitlab::PrometheusClient::ConnectionError when a SocketError is rescued4731 raises a Gitlab::PrometheusClient::ConnectionError when a OpenSSL::SSL::SSLError is rescued4732 raises a Gitlab::PrometheusClient::ConnectionError when a OpenSSL::OpenSSLError is rescued4733 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::ECONNRESET is rescued4734 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::ECONNREFUSED is rescued4735 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::EHOSTUNREACH is rescued4736 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::ENETUNREACH is rescued4737 raises a Gitlab::PrometheusClient::ConnectionError when a Gitlab::HTTP::BlockedUrlError is rescued4738 raises a Gitlab::PrometheusClient::ConnectionError when a Gitlab::HTTP::RedirectionTooDeep is rescued4739 raises a Gitlab::PrometheusClient::ConnectionError when a Net::HTTPBadResponse is rescued4740 proxy4741 behaves like exceptions are raised4742 raises a Gitlab::PrometheusClient::ConnectionError when a Net::OpenTimeout is rescued4743 raises a Gitlab::PrometheusClient::ConnectionError when a Net::ReadTimeout is rescued4744 raises a Gitlab::PrometheusClient::ConnectionError when a Net::WriteTimeout is rescued4745 raises a Gitlab::PrometheusClient::ConnectionError when a Gitlab::HTTP::ReadTotalTimeout is rescued4746 raises a Gitlab::PrometheusClient::ConnectionError when a EOFError is rescued4747 raises a Gitlab::PrometheusClient::ConnectionError when a SocketError is rescued4748 raises a Gitlab::PrometheusClient::ConnectionError when a OpenSSL::SSL::SSLError is rescued4749 raises a Gitlab::PrometheusClient::ConnectionError when a OpenSSL::OpenSSLError is rescued4750 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::ECONNRESET is rescued4751 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::ECONNREFUSED is rescued4752 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::EHOSTUNREACH is rescued4753 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::ENETUNREACH is rescued4754 raises a Gitlab::PrometheusClient::ConnectionError when a Gitlab::HTTP::BlockedUrlError is rescued4755 raises a Gitlab::PrometheusClient::ConnectionError when a Gitlab::HTTP::RedirectionTooDeep is rescued4756 raises a Gitlab::PrometheusClient::ConnectionError when a Net::HTTPBadResponse is rescued4757 #query4758 when request returns vector results4759 returns data from the API call4760 when request returns matrix results4761 returns nil4762 when request returns no data4763 returns []4764 behaves like failure response4765 when request returns 400 with an error message4766 raises a Gitlab::PrometheusClient::QueryError error4767 when request returns 400 without an error message4768 raises a Gitlab::PrometheusClient::QueryError error4769 when request returns 5004770 raises a Gitlab::PrometheusClient::UnexpectedResponseError error4771 when request returns non json data4772 raises a Gitlab::PrometheusClient::UnexpectedResponseError error4773 #aggregate4774 when request returns vector results4775 returns data from the API call grouped by labels4776 when request returns no data4777 returns {}4778 behaves like failure response4779 when request returns 400 with an error message4780 raises a Gitlab::PrometheusClient::QueryError error4781 when request returns 400 without an error message4782 raises a Gitlab::PrometheusClient::QueryError error4783 when request returns 5004784 raises a Gitlab::PrometheusClient::UnexpectedResponseError error4785 when request returns non json data4786 raises a Gitlab::PrometheusClient::UnexpectedResponseError error4787 #series4788 calls endpoint and returns list of series4789 #label_values4790 calls endpoint and returns label values4791 #query_range4792 when non utc time is passed4793 passed dates are properly converted to utc4794 when a start time is passed4795 passed it in the requested URL4796 when request returns vector results4797 returns nil4798 when request returns matrix results4799 returns data from the API call4800 when request returns no data4801 returns []4802 behaves like failure response4803 when request returns 400 with an error message4804 raises a Gitlab::PrometheusClient::QueryError error4805 when request returns 400 without an error message4806 raises a Gitlab::PrometheusClient::QueryError error4807 when request returns 5004808 raises a Gitlab::PrometheusClient::UnexpectedResponseError error4809 when request returns non json data4810 raises a Gitlab::PrometheusClient::UnexpectedResponseError error4811 .compute_step4812 time_interval_in_seconds: 0, step: 604813 is expected to eq 604814 time_interval_in_seconds: 10 hours, step: 604815 is expected to eq 604816 time_interval_in_seconds: 10 hours and 1 second, step: 614817 is expected to eq 614818 time_interval_in_seconds: 30 minutes, step: 604819 is expected to eq 604820 time_interval_in_seconds: 3 hours, step: 604821 is expected to eq 604822 time_interval_in_seconds: 8 hours, step: 604823 is expected to eq 604824 time_interval_in_seconds: 1 day, step: 1444825 is expected to eq 1444826 time_interval_in_seconds: 3 days, step: 4324827 is expected to eq 4324828 time_interval_in_seconds: 1 week, step: 10084829 is expected to eq 10084830 proxy4831 get API4832 when response status code is 2004833 returns response object4834 when response status code is not 2004835 returns response object4836 when Gitlab::HTTP::ResponseError is raised4837 without response code4838 raises PrometheusClient::ConnectionError4839 with response code4840 raises Gitlab::PrometheusClient::QueryError4841Label4842 modules4843 is expected to includes the Referable module4844 is expected to includes the Subscribable module4845 associations4846 is expected to have many issues through label_links source => target4847 is expected to have many label_links dependent => destroy4848 is expected to have many lists dependent => destroy4849 is expected to have many priorities class_name => LabelPriority4850 validation4851 is expected to validate that :title is case-sensitively unique within the scope of :group_id and :project_id4852 validates color code4853 validates title4854 scopes4855 .on_board4856 returns only the board labels4857 #color4858 strips color4859 uses default color if color is missing4860 #text_color4861 uses default color if color is missing4862 #title4863 sanitizes title4864 strips title4865 #description4866 sanitizes description4867 accepts an empty string4868 priorization4869 #prioritize!4870 when label is not prioritized4871 creates a label priority4872 sets label priority4873 when label is prioritized4874 does not create a label priority4875 updates label priority4876 #unprioritize!4877 removes label priority4878 #priority4879 when label is not prioritized4880 returns nil4881 when label is prioritized4882 returns label priority4883 .search4884 returns labels with a partially matching title4885 returns labels with a partially matching description4886 returns nothing4887 .subscribed_by4888 returns subscribed labels4889 returns nothing4890 .top_labels_by_target4891 returns distinct labels, ordered by usage in the given target relation4892 excludes labels that are not assigned to any records in the given target relation4893 .optionally_subscribed_by4894 returns subscribed labels4895 returns all labels if user_id is nil4896 #templates4897 with invalid template labels4898 returns only valid template labels4899 .pluck_titles4900 returns the audit event type of the event type filter4901Clusters::ClustersHierarchy4902 #base_and_ancestors4903 project in nested group with clusters at every level4904 returns clusters for project4905 returns clusters for child_group4906 returns clusters for parent_group4907 returns clusters for ancestor_group4908 project in a namespace4909 returns clusters for project4910 cluster has management project4911 management_project is in same namespace as cluster4912 returns cluster for management_project4913 management_project is in a different namespace from cluster4914 returns nothing4915 cluster has management project4916 returns clusters for management_project4917 returns clusters for project4918 returns clusters for group4919 project in nested group with clusters at some levels4920 returns clusters for management_project4921 returns clusters for project4922 returns clusters for child_group4923 returns clusters for parent_group4924 returns clusters for ancestor_group4925Integrations::GitlabSlackApplication4926 # order random4927 #test4928 when all channels can be posted to4929 is successful4930 when the same channel is used for multiple events4931 only tests the channel once4932 when there are channels that cannot be posted to4933 returns an error message informing which channels cannot be posted to4934 when integration is not configured for notifications4935 is successful4936 when integration is using legacy version of Slack app4937 returns an error to inform the user to update their integration4938 when the integration is active4939 is editable, and presents editable fields4940 includes the expected sections4941 behaves like Integrations::BaseSlackNotification4942 #execute4943 uses only known events4944 when hook data includes a user object4945 when event is not supported for usage log4946 does not increase the usage data counter4947 for issue notification4948 behaves like increases the usage data counter4949 increases the usage data counter4950 behaves like Snowplow event tracking with RedisHLL context4951 behaves like Snowplow event tracking4952 is emitted4953 for push notification4954 behaves like increases the usage data counter4955 increases the usage data counter4956 behaves like Snowplow event tracking with RedisHLL context4957 behaves like Snowplow event tracking4958 is emitted4959 for deployment notification4960 behaves like increases the usage data counter4961 increases the usage data counter4962 behaves like Snowplow event tracking with RedisHLL context4963 behaves like Snowplow event tracking4964 is emitted4965 for wiki_page notification4966 behaves like increases the usage data counter4967 increases the usage data counter4968 behaves like Snowplow event tracking with RedisHLL context4969 behaves like Snowplow event tracking4970 is emitted4971 for merge_request notification4972 behaves like increases the usage data counter4973 increases the usage data counter4974 behaves like Snowplow event tracking with RedisHLL context4975 behaves like Snowplow event tracking4976 is emitted4977 for note notification4978 behaves like increases the usage data counter4979 increases the usage data counter4980 behaves like Snowplow event tracking with RedisHLL context4981 behaves like Snowplow event tracking4982 is emitted4983 for tag_push notification4984 behaves like increases the usage data counter4985 increases the usage data counter4986 behaves like Snowplow event tracking with RedisHLL context4987 behaves like Snowplow event tracking4988 is emitted4989 for confidential note notification4990 behaves like increases the usage data counter4991 increases the usage data counter4992 behaves like Snowplow event tracking with RedisHLL context4993 behaves like Snowplow event tracking4994 is emitted4995 for confidential issue notification4996 behaves like increases the usage data counter4997 increases the usage data counter4998 behaves like Snowplow event tracking with RedisHLL context4999 behaves like Snowplow event tracking5000 is emitted5001 when hook data does not include a user5002 does not increase the usage data counter5003 validations5004 is expected not to validate that :webhook cannot be empty/falsy5005 when the integration is not active5006 is not editable, and presents no editable fields5007 does not include sections5008 default values5009 is expected to eq :chat5010 is expected not to be alert events5011 is expected not to be commit events5012 is expected not to be confidential issues events5013 is expected not to be confidential note events5014 is expected not to be deployment events5015 is expected not to be issues events5016 is expected not to be job events5017 is expected not to be merge requests events5018 is expected not to be note events5019 is expected not to be pipeline events5020 is expected not to be push events5021 is expected not to be tag push events5022 is expected not to be vulnerability events5023 is expected not to be wiki page events5024 #upgrade_needed?5025 with all_features_supported5026 is false5027 without all_features_supported5028 is true5029 without slack_integration5030 is false5031 #description5032 is expected to be present5033 #execute5034 notifies Slack5035 when the integration is not configured for event5036 does not notify Slack5037 when Slack API responds with an error5038 logs the error and API response5039 when there is an HTTP error5040 logs the error5041 when configured to post to multiple Slack channels5042 posts to both Slack channels and returns true5043 when one of the posts responds with an error5044 posts to both channels and returns true5045 when both of the posts respond with an error5046 posts to both channels and returns false5047 when one of the posts raises an HTTP exception5048 posts to one channel and returns true5049 when both of the posts raise an HTTP exception5050 posts to one channel and returns true5051TodoPolicy5052 own_todo5053 user: user1, todo: todo1, allowed: true5054 behaves like grants the expected permissions5055 is expected to be allowed :read_todo5056 user: user2, todo: todo2, allowed: true5057 behaves like grants the expected permissions5058 is expected to be allowed :read_todo5059 user: user1, todo: todo2, allowed: false5060 behaves like grants the expected permissions5061 is expected to be disallowed :read_todo5062 user: user1, todo: todo3, allowed: false5063 behaves like grants the expected permissions5064 is expected to be disallowed :read_todo5065 user: user2, todo: todo1, allowed: false5066 behaves like grants the expected permissions5067 is expected to be disallowed :read_todo5068 user: user2, todo: todo4, allowed: false5069 behaves like grants the expected permissions5070 is expected to be disallowed :read_todo5071 user: user3, todo: todo1, allowed: false5072 behaves like grants the expected permissions5073 is expected to be disallowed :read_todo5074 user: user3, todo: todo2, allowed: false5075 behaves like grants the expected permissions5076 is expected to be disallowed :read_todo5077 user: user3, todo: todo3, allowed: false5078 behaves like grants the expected permissions5079 is expected to be disallowed :read_todo5080 user: user3, todo: todo4, allowed: false5081 behaves like grants the expected permissions5082 is expected to be disallowed :read_todo5083 user: user2, todo: todo3, allowed: false5084 behaves like grants the expected permissions5085 is expected to be disallowed :read_todo5086 read_note5087 user: reporter, todo: no_note_todo1, allowed: true5088 behaves like grants the expected permissions5089 is expected to be allowed :read_todo5090 behaves like grants the expected permissions5091 is expected to be allowed :update_todo5092 user: reporter, todo: note_todo1, allowed: true5093 behaves like grants the expected permissions5094 is expected to be allowed :read_todo5095 behaves like grants the expected permissions5096 is expected to be allowed :update_todo5097 user: reporter, todo: internal_note_todo1, allowed: true5098 behaves like grants the expected permissions5099 is expected to be allowed :read_todo5100 behaves like grants the expected permissions5101 is expected to be allowed :update_todo5102 user: guest, todo: no_note_todo2, allowed: true5103 behaves like grants the expected permissions5104 is expected to be allowed :read_todo5105 behaves like grants the expected permissions5106 is expected to be allowed :update_todo5107 user: guest, todo: note_todo2, allowed: true5108 behaves like grants the expected permissions5109 is expected to be allowed :read_todo5110 behaves like grants the expected permissions5111 is expected to be allowed :update_todo5112 user: guest, todo: internal_note_todo2, allowed: false5113 behaves like grants the expected permissions5114 is expected to be disallowed :read_todo5115 behaves like grants the expected permissions5116 is expected to be disallowed :update_todo5117 user: non_member, todo: no_note_todo3, allowed: false5118 behaves like grants the expected permissions5119 is expected to be disallowed :read_todo5120 behaves like grants the expected permissions5121 is expected to be disallowed :update_todo5122 user: non_member, todo: note_todo3, allowed: false5123 behaves like grants the expected permissions5124 is expected to be disallowed :read_todo5125 behaves like grants the expected permissions5126 is expected to be disallowed :update_todo5127 user: non_member, todo: internal_note_todo3, allowed: false5128 behaves like grants the expected permissions5129 is expected to be disallowed :read_todo5130 behaves like grants the expected permissions5131 is expected to be disallowed :update_todo5132Gitlab::Gpg::InvalidGpgSignatureUpdater5133 #run5134 gpg signature did have an associated gpg key which was removed later5135 assigns the gpg key to the signature when the missing gpg key is added5136 does not assign the gpg key when an unrelated gpg key is added5137 gpg signature did not have an associated gpg key5138 updates the signature to being valid when the missing gpg key is added5139 keeps the signature at being invalid when an unrelated gpg key is added5140 gpg signature did have an associated unverified gpg key5141 updates the signature to being valid when the user updates the email address5142 keeps the signature at being invalid when the changed email address is still unrelated5143 gpg signature did not have an associated gpg subkey5144 updates the signature to being valid when the missing gpg key is added5145SystemHook5146 behaves like a hook that does not get automatically disabled on failure5147 .executable/.disabled5148 finds the correct set of project hooks5149 #executable?5150 recent_failures: 0, not_until: :not_set5151 has the correct state5152 recent_failures: 0, not_until: :past5153 has the correct state5154 recent_failures: 0, not_until: :future5155 has the correct state5156 recent_failures: 0, not_until: :now5157 has the correct state5158 recent_failures: 1, not_until: :not_set5159 has the correct state5160 recent_failures: 1, not_until: :past5161 has the correct state5162 recent_failures: 1, not_until: :future5163 has the correct state5164 recent_failures: 3, not_until: :not_set5165 has the correct state5166 recent_failures: 3, not_until: :past5167 has the correct state5168 recent_failures: 3, not_until: :future5169 has the correct state5170 recent_failures: 4, not_until: :not_set5171 has the correct state5172 recent_failures: 4, not_until: :past5173 has the correct state5174 recent_failures: 4, not_until: :now5175 has the correct state5176 recent_failures: 4, not_until: :future5177 has the correct state5178 #enable!5179 makes a hook executable if it was marked as failed5180 makes a hook executable if it is currently backed off5181 does not update hooks unless necessary5182 #backoff!5183 when we have not backed off before5184 does not disable the hook5185 when we have exhausted the grace period5186 does not disable the hook5187 #disable!5188 does not disable a group hook5189 #temporarily_disabled?5190 is false5191 #permanently_disabled?5192 is false5193 #alert_status5194 is expected to eq :executable5195 when hook has been disabled5196 is expected to eq :executable5197 when hook has been backed off5198 is expected to eq :executable5199 default attributes5200 sets defined default parameters5201 validations5202 url5203 is expected not to allow :url to be ‹"http://localhost:9000"›5204 is valid if application settings allow local requests from system hooks5205 execute5206 project_create hook5207 project_destroy hook5208 user_create hook5209 user_destroy hook5210 project member create hook5211 project member destroy hook5212 project member update hook5213 group create hook5214 group destroy hook5215 group member create hook5216 group member destroy hook5217 group member update hook5218 .repository_update_hooks5219 returns hooks for repository update events only5220 execute WebHookService5221 #execute5222 #async_execute5223 #application_context5224 includes the type5225Gitlab::Database::TablesTruncate5226 # order random5227 when truncating gitlab_main tables on the ci database5228 behaves like truncating legacy tables on a database5229 when the truncated tables are not locked for writes5230WARNING: Active Record does not support composite primary key.5231_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5232WARNING: Active Record does not support composite primary key.5233gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5234WARNING: Active Record does not support composite primary key.5235_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5236WARNING: Active Record does not support composite primary key.5237gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5238 raises an error that the tables are not locked for writes5239 when the truncated tables are locked for writes5240WARNING: Active Record does not support composite primary key.5241_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5242WARNING: Active Record does not support composite primary key.5243gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5244WARNING: Active Record does not support composite primary key.5245_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5246WARNING: Active Record does not support composite primary key.5247gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5248 truncates the legacy tables5249WARNING: Active Record does not support composite primary key.5250_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5251WARNING: Active Record does not support composite primary key.5252gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5253WARNING: Active Record does not support composite primary key.5254_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5255WARNING: Active Record does not support composite primary key.5256gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5257 does not affect the other tables5258WARNING: Active Record does not support composite primary key.5259_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5260WARNING: Active Record does not support composite primary key.5261gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5262WARNING: Active Record does not support composite primary key.5263_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5264WARNING: Active Record does not support composite primary key.5265gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5266 logs the sql statements to the logger5267 when running in dry_run mode5268WARNING: Active Record does not support composite primary key.5269_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5270WARNING: Active Record does not support composite primary key.5271gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5272WARNING: Active Record does not support composite primary key.5273_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5274WARNING: Active Record does not support composite primary key.5275gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5276 does not truncate the legacy tables if running in dry run mode5277 when passing until_table parameter5278 with a table that exists5279WARNING: Active Record does not support composite primary key.5280_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5281WARNING: Active Record does not support composite primary key.5282gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5283WARNING: Active Record does not support composite primary key.5284_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5285WARNING: Active Record does not support composite primary key.5286gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5287 only truncates until the table specified5288 with a table that does not exist5289WARNING: Active Record does not support composite primary key.5290_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5291WARNING: Active Record does not support composite primary key.5292gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5293WARNING: Active Record does not support composite primary key.5294_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5295WARNING: Active Record does not support composite primary key.5296gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5297 raises an error if the specified table does not exist5298 when one of the attached partitions happened to be locked for writes5299WARNING: Active Record does not support composite primary key.5300_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5301WARNING: Active Record does not support composite primary key.5302gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5303WARNING: Active Record does not support composite primary key.5304_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5305WARNING: Active Record does not support composite primary key.5306gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5307 truncates the locked partition successfully5308 with geo configured5309WARNING: Active Record does not support composite primary key.5310_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5311WARNING: Active Record does not support composite primary key.5312gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5313WARNING: Active Record does not support composite primary key.5314_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5315WARNING: Active Record does not support composite primary key.5316gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5317 does not truncate gitlab_geo tables (PENDING: No reason given)5318 when running in a single database mode5319 raises an error when truncating the main database that it is a single database setup (PENDING: Skipping because some of the extra databases [:ci] are setup)5320 raises an error when truncating the ci database that it is a single database setup (PENDING: Skipping because some of the extra databases [:ci] are setup)5321 when running with multiple shared databases5322 raises an error when truncating the main database that it is a single database setup (PENDING: Skipping because database ci exists)5323 raises an error when truncating the ci database that it is a single database setup (PENDING: Skipping because database ci exists)5324 when truncating gitlab_ci tables on the main database5325 behaves like truncating legacy tables on a database5326 when the truncated tables are not locked for writes5327WARNING: Active Record does not support composite primary key.5328_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5329WARNING: Active Record does not support composite primary key.5330gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5331WARNING: Active Record does not support composite primary key.5332_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5333WARNING: Active Record does not support composite primary key.5334gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5335 raises an error that the tables are not locked for writes5336 when the truncated tables are locked for writes5337WARNING: Active Record does not support composite primary key.5338_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5339WARNING: Active Record does not support composite primary key.5340gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5341WARNING: Active Record does not support composite primary key.5342_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5343WARNING: Active Record does not support composite primary key.5344gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5345 truncates the legacy tables5346WARNING: Active Record does not support composite primary key.5347_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5348WARNING: Active Record does not support composite primary key.5349gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5350WARNING: Active Record does not support composite primary key.5351_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5352WARNING: Active Record does not support composite primary key.5353gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5354 does not affect the other tables5355WARNING: Active Record does not support composite primary key.5356_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5357WARNING: Active Record does not support composite primary key.5358gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5359WARNING: Active Record does not support composite primary key.5360_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5361WARNING: Active Record does not support composite primary key.5362gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5363 logs the sql statements to the logger5364 when running in dry_run mode5365WARNING: Active Record does not support composite primary key.5366_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5367WARNING: Active Record does not support composite primary key.5368gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5369WARNING: Active Record does not support composite primary key.5370_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5371WARNING: Active Record does not support composite primary key.5372gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5373 does not truncate the legacy tables if running in dry run mode5374 when passing until_table parameter5375 with a table that exists5376WARNING: Active Record does not support composite primary key.5377_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5378WARNING: Active Record does not support composite primary key.5379gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5380WARNING: Active Record does not support composite primary key.5381_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5382WARNING: Active Record does not support composite primary key.5383gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5384 only truncates until the table specified5385 with a table that does not exist5386WARNING: Active Record does not support composite primary key.5387_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5388WARNING: Active Record does not support composite primary key.5389gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5390WARNING: Active Record does not support composite primary key.5391_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5392WARNING: Active Record does not support composite primary key.5393gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5394 raises an error if the specified table does not exist5395 when one of the attached partitions happened to be locked for writes5396WARNING: Active Record does not support composite primary key.5397_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5398WARNING: Active Record does not support composite primary key.5399gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5400WARNING: Active Record does not support composite primary key.5401_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5402WARNING: Active Record does not support composite primary key.5403gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5404 truncates the locked partition successfully (PENDING: No reason given)5405 with geo configured5406WARNING: Active Record does not support composite primary key.5407_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5408WARNING: Active Record does not support composite primary key.5409gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5410WARNING: Active Record does not support composite primary key.5411_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.5412WARNING: Active Record does not support composite primary key.5413gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.5414 does not truncate gitlab_geo tables (PENDING: No reason given)5415Groups::ImportExport::ImportService5416 #async_execute5417 when the job can be successfully scheduled5418 creates group import state5419 enqueues an import job5420 marks the group import as in progress5421 returns truthy5422 when the job cannot be scheduled5423 returns falsey5424 does not mark the group import as created5425 when importing a ndjson export5426 when user has correct permissions5427 imports group structure successfully5428 tracks the event5429 removes import file5430 removes tmp files5431 logs the import success5432 when user does not have correct permissions5433 logs the error and raises an exception5434 tracks the error5435 when there are errors with the import file5436 logs the error and raises an exception5437 when there are errors with the sub-relations5438 successfully imports the group5439 logs the import success5440 when importing a json export5441 logs the error and raises an exception5442 tracks the error5443Integrations::Jenkins5444 sets the default values5445 behaves like Integrations::BaseCi5446 default values5447 is expected to eq :ci5448 behaves like Integrations::ResetSecretFields5449 #exposing_secrets_fields5450 returns an array of strings5451 #reset_secret_fields?5452 returns false if no exposing field has changed5453 returns true if any exposing field has changed5454 validation callback5455 when an exposing field has changed5456 clears all secret fields5457 when a secret field has been updated5458 does not clear this secret field5459 when a secret field has been updated with the same value5460 does not clear this secret field5461 when no exposing field has changed5462 does not clear any secret fields5463 accessors5464 is expected to respond to #enable_ssl_verification5465 is expected to respond to #enable_ssl_verification?5466 #initialize_properties5467 enables the setting by default5468 does not enable the setting if the record is already persisted5469 does not enable the setting if a custom value was set5470 #fields5471 inserts the checkbox field after the first URL field, or at the end5472 does not insert the field repeatedly5473 behaves like Integrations::HasWebHook5474 associations5475 is expected to have one service_hook inverse_of => integration5476 callbacks5477 calls #update_web_hook! when enabled5478 does not call #update_web_hook! when disabled5479 does not call #update_web_hook! when validation fails5480 #hook_url5481 returns a string5482 #url_variables5483 returns a hash5484 #hook_ssl_verification5485 returns a boolean5486 delegates to #enable_ssl_verification if the concern is included5487 #update_web_hook!5488 creates or updates a service hook5489 raises an error if the service hook could not be saved5490 does not attempt to save the service hook if there are no changes5491 #execute_web_hook!5492 creates the webhook if necessary and executes it5493 raises an error if the service hook could not be saved5494 Validations5495 when the integration is active5496 #username5497 when password was not touched5498 is expected not to validate that :username cannot be empty/falsy5499 when password was touched5500 is expected to validate that :username cannot be empty/falsy5501 when password is blank5502 does not validate the username5503 #password5504 does not validate the presence of password if username is nil5505 validates the presence of password if username is present5506 when the integration is inactive5507 is expected not to validate that :username cannot be empty/falsy5508 is expected not to validate that :password cannot be empty/falsy5509 #hook_url5510 when the jenkins_url has no relative path5511 is expected to eq "http://jenkins.example.com/project/my_project"5512 when the jenkins_url has relative path5513 is expected to eq "http://organization.example.com/jenkins/project/my_project"5514 userinfo is missing and username and password are set5515 is expected to eq "http://u%24ername:pas%24%20word@organization.example.com/jenkins/project/my_project"5516 userinfo is provided and username and password are set5517 is expected to eq "http://username:password@organization.example.com/jenkins/project/my_project"5518 userinfo is provided username and password are not set5519 is expected to eq "http://u:p@organization.example.com/jenkins/project/my_project"5520 #test5521 returns the right status5522 #execute5523 invokes the Jenkins API5524 adds default web hook headers to the request5525 request url contains properly serialized username and password5526Gitlab::ImportExport::ImportFailureService5527 #log_import_failure5528 when importable is a group5529 behaves like log import failure5530 tracks error5531 saves data to ImportFailure5532 when importable is a project5533 behaves like log import failure5534 tracks error5535 saves data to ImportFailure5536 when ImportFailure does not support importable class5537 raise exception5538 #with_retry5539 when exceptions are retriable5540 exception: GRPC::DeadlineExceeded5541 when retry succeeds5542 retries and logs import failure once with correct params5543 when retry continues to fail with intermittent errors5544 retries the number of times allowed and raise exception5545 logs import failure each time and raise exception5546 exception: ActiveRecord::QueryCanceled5547 when retry succeeds5548 retries and logs import failure once with correct params5549 when retry continues to fail with intermittent errors5550 retries the number of times allowed and raise exception5551 logs import failure each time and raise exception5552 when exception is not retriable5553 raise the exception5554Gitlab::Redis::Sessions5555 behaves like redis_new_instance_shared_examples5556 behaves like redis_shared_examples5557 .config_file_name5558 when there is no config file anywhere5559 is expected to be nil5560 .store5561 with old format5562 behaves like redis store5563 instantiates Redis::Store5564 with the namespace5565 uses specified namespace5566 with new format5567 behaves like redis store5568 instantiates Redis::Store5569 with the namespace5570 uses specified namespace5571 .params5572 withstands mutation5573 when url contains unix socket reference5574 with old format5575 returns path key instead5576 with new format5577 returns path key instead5578 when url is host based5579 with old format5580 returns hash with host, port, db, and password5581 with new format5582 rails_env: "development", host: "development-host"5583 returns hash with host, port, db, and password5584 rails_env: "test", host: "test-host"5585 returns hash with host, port, db, and password5586 rails_env: "production", host: "production-host"5587 returns hash with host, port, db, and password5588 with redis cluster format5589 rails_env: "development", host: "development-master"5590 returns hash with cluster and password5591 rails_env: "test", host: "test-master"5592 returns hash with cluster and password5593 rails_env: "production", host: "production-master"5594 returns hash with cluster and password5595 .url5596 withstands mutation5597 when yml file with env variable5598 reads redis url from env variable5599 .version5600 returns a version5601 .with5602 when running on single-threaded runtime5603 instantiates a connection pool with size 55604 when running on multi-threaded runtime5605 instantiates a connection pool with a size based on the concurrency of the worker5606 when there is no config at all5607 can run an empty block5608 #db5609 with old format5610 returns the correct db5611 with new format5612 returns the correct db5613 with cluster-mode5614 returns the correct db5615 #sentinels5616 when sentinels are defined5617 rails_env: "development", hosts: ["development-replica1", "development-replica2"]5618 returns an array of hashes with host and port keys5619 rails_env: "test", hosts: ["test-replica1", "test-replica2"]5620 returns an array of hashes with host and port keys5621 rails_env: "production", hosts: ["production-replica1", "production-replica2"]5622 returns an array of hashes with host and port keys5623 when sentinels are not defined5624 returns nil5625 when cluster is defined5626 returns nil5627 #sentinels?5628 when sentinels are defined5629 returns true5630 when sentinels are not defined5631 is expected to eq nil5632 when cluster is defined5633 returns false5634 #raw_config_hash5635 returns old-style single url config in a hash5636 returns cluster config without url key in a hash5637 #fetch_config5638 raises an exception when the config file contains invalid yaml5639 when redis.yml exists5640 uses config/redis.yml5641 when no config file exsits5642 returns nil5643 when resque.yml exists5644 returns the config from resque.yml5645 #fetch_config5646 when redis.yml exists5647 when the fallback has a redis.yml entry5648 is expected to eq {"fallback redis.yml"=>123}5649 and an instance config file exists5650 is expected to eq {"instance specific file"=>456}5651 and the instance has a redis.yml entry5652 is expected to eq {"instance redis.yml"=>789}5653 when no redis config file exsits5654 returns nil5655 when resque.yml exists5656 returns the config from resque.yml5657 redis instance used in connection pool5658 uses ::Redis instance5659 #store5660 instantiates an instance of Redis::Store5661ContainerRegistry::Blob5662 is expected to respond to #repository5663 is expected to delegate #registry to the #repository object5664 is expected to delegate #client to the #repository object5665 #path5666 returns a valid path to the blob5667 #digest5668 return correct digest value5669 #type5670 returns a correct type5671 #revision5672 returns a correct blob SHA5673 #short_revision5674 return a short SHA5675 #delete5676 returns true when blob has been successfully deleted5677 #data5678 when locally stored5679 returns a correct blob data5680 when externally stored5681 for a valid address5682 returns correct data5683 for a relative address5684 returns correct data5685 for invalid file5686 raises an error5687Gitlab::SidekiqConfig::WorkerMatcher5688 #match?5689 with valid input5690 query: "worker_name=WorkerA", expected_metadatas: ["WorkerA"]5691 is expected to contain exactly "WorkerA"5692 query: "worker_name=WorkerA2", expected_metadatas: ["WorkerA2"]5693 is expected to contain exactly "WorkerA2"5694 query: "worker_name=WorkerB|worker_name=WorkerD", expected_metadatas: ["WorkerB"]5695 is expected to contain exactly "WorkerB"5696 query: "worker_name!=WorkerA", expected_metadatas: ["WorkerA2", "WorkerB", "WorkerC"]5697 is expected to contain exactly "WorkerA2", "WorkerB", and "WorkerC"5698 query: "feature_category=category_a", expected_metadatas: ["WorkerA", "WorkerA2"]5699 is expected to contain exactly "WorkerA" and "WorkerA2"5700 query: "feature_category=category_a,category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]5701 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"5702 query: "feature_category=category_a|feature_category=category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]5703 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"5704 query: "feature_category!=category_a", expected_metadatas: ["WorkerB", "WorkerC"]5705 is expected to contain exactly "WorkerB" and "WorkerC"5706 query: "has_external_dependencies=true", expected_metadatas: ["WorkerB"]5707 is expected to contain exactly "WorkerB"5708 query: "has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]5709 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"5710 query: "has_external_dependencies=true,false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]5711 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"5712 query: "has_external_dependencies=true|has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]5713 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"5714 query: "has_external_dependencies!=true", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]5715 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"5716 query: "urgency=high", expected_metadatas: ["WorkerA2", "WorkerB"]5717 is expected to contain exactly "WorkerA2" and "WorkerB"5718 query: "urgency=low", expected_metadatas: ["WorkerA"]5719 is expected to contain exactly "WorkerA"5720 query: "urgency=high,low,throttled", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]5721 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"5722 query: "urgency=low|urgency=throttled", expected_metadatas: ["WorkerA", "WorkerC"]5723 is expected to contain exactly "WorkerA" and "WorkerC"5724 query: "urgency!=high", expected_metadatas: ["WorkerA", "WorkerC"]5725 is expected to contain exactly "WorkerA" and "WorkerC"5726 query: "name=a", expected_metadatas: ["WorkerA"]5727 is expected to contain exactly "WorkerA"5728 query: "name=a,b", expected_metadatas: ["WorkerA", "WorkerB"]5729 is expected to contain exactly "WorkerA" and "WorkerB"5730 query: "name=a,a:2|name=b", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]5731 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"5732 query: "name!=a,a:2", expected_metadatas: ["WorkerB", "WorkerC"]5733 is expected to contain exactly "WorkerB" and "WorkerC"5734 query: "resource_boundary=memory", expected_metadatas: ["WorkerB", "WorkerC"]5735 is expected to contain exactly "WorkerB" and "WorkerC"5736 query: "resource_boundary=memory,cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]5737 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"5738 query: "resource_boundary=memory|resource_boundary=cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]5739 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"5740 query: "resource_boundary!=memory,cpu", expected_metadatas: ["WorkerA2"]5741 is expected to contain exactly "WorkerA2"5742 query: "tags=no_disk_io", expected_metadatas: ["WorkerA", "WorkerB"]5743 is expected to contain exactly "WorkerA" and "WorkerB"5744 query: "tags=no_disk_io,git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]5745 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"5746 query: "tags=no_disk_io|tags=git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]5747 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"5748 query: "tags=no_disk_io&tags=git_access", expected_metadatas: ["WorkerA"]5749 is expected to contain exactly "WorkerA"5750 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]5751 is expected to contain exactly "WorkerA2" and "WorkerC"5752 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]5753 is expected to contain exactly "WorkerC"5754 query: "tags=unknown_tag", expected_metadatas: []5755 is expected to contain exactly5756 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]5757 is expected to contain exactly "WorkerA2" and "WorkerC"5758 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]5759 is expected to contain exactly "WorkerC"5760 query: "tags!=unknown_tag", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]5761 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"5762 query: "feature_category=category_a&urgency=high", expected_metadatas: ["WorkerA2"]5763 is expected to contain exactly "WorkerA2"5764 query: "feature_category=category_a&urgency=high|feature_category=category_c", expected_metadatas: ["WorkerA2", "WorkerC"]5765 is expected to contain exactly "WorkerA2" and "WorkerC"5766 query: "*", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]5767 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"5768 with invalid input5769 query: "feature_category=\"category_a\"", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm5770 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm5771 query: "feature_category=", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm5772 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm5773 query: "feature_category~category_a", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm5774 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm5775 query: "invalid_term=a", error: Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate5776 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate5777Banzai::Filter::References::WorkItemReferenceFilter5778 # order random5779 subclasses from IssueReferenceFilter5780 performance5781 does not have a N+1 query problem5782 when cross-project reference in link href5783 is handled by IssueReferenceFilter, not WorkItemReferenceFilter5784 when cross-project URL reference with comment anchor5785 links to a valid reference5786 link with trailing slash5787 links with adjacent text5788 behaves like a reference containing an element node5789 does not escape inner html5790 behaves like a reference with work item type information5791 contains work-item-type as a data attribute5792 when cross-project / cross-namespace complete reference5793 is handled by IssueReferenceFilter, not WorkItemReferenceFilter5794 when cross-project / same-namespace shorthand reference5795 is handled by IssueReferenceFilter, not WorkItemReferenceFilter5796 when cross-project URL reference5797 behaves like a work item reference5798 links to a valid reference5799 links with adjacent text5800 includes a title attribute5801 escapes the title attribute5802 renders non-HTML tooltips5803 includes default classes5804 includes a data-project attribute5805 includes a data-issue attribute5806 includes data attributes for issuable popover5807 includes a data-original attribute5808 does not escape the data-original attribute5809 includes a data-reference-format attribute5810 includes a data-reference-format attribute for URL references5811 includes a data-reference-format attribute for extended summary URL references5812 does not process links containing issue numbers followed by text5813 behaves like a reference containing an element node5814 does not escape inner html5815 behaves like a reference with work item type information5816 contains work-item-type as a data attribute5817 when cross-project / same-namespace complete reference5818 is handled by IssueReferenceFilter, not WorkItemReferenceFilter5819 for group context5820 links to a valid reference for url cross-namespace5821 links to a valid reference for cross-namespace in link href5822 when standard internal reference5823 is handled by IssueReferenceFilter, not WorkItemReferenceFilter5824 when cross-project URL in link href5825 behaves like a work item reference5826 links to a valid reference5827 links with adjacent text5828 includes a title attribute5829 escapes the title attribute5830 renders non-HTML tooltips5831 includes default classes5832 includes a data-project attribute5833 includes a data-issue attribute5834 includes data attributes for issuable popover5835 includes a data-original attribute5836 does not escape the data-original attribute (PENDING: No reason given)5837 includes a data-reference-format attribute (PENDING: No reason given)5838 includes a data-reference-format attribute for URL references5839 includes a data-reference-format attribute for extended summary URL references5840 does not process links containing issue numbers followed by text5841 behaves like a reference containing an element node5842 does not escape inner html5843 behaves like a reference with work item type information5844 contains work-item-type as a data attribute5845Gitlab::GitalyClient::CommitService5846 #diff_from_parent5847 returns a Gitlab::GitalyClient::DiffStitcher5848 encodes paths correctly5849 when a commit has a parent5850 sends an RPC request with the parent ID as left commit5851 when a commit does not have a parent5852 sends an RPC request with empty tree ref as left commit5853 when given a whitespace param5854 and the param is true5855 uses the ignore all white spaces const5856 and the param is false5857 does not set a whitespace param5858 when given no whitespace param5859 does not set a whitespace param5860 #commit_deltas5861 when a commit has a parent5862 sends an RPC request with the parent ID as left commit5863 when a commit does not have a parent5864 sends an RPC request with empty tree ref as left commit5865 #diff_stats5866 sends an RPC request and returns the stats5867 #find_changed_paths5868 sends an RPC request and returns the stats5869 #tree_entries5870 sends a get_tree_entries message with default limit5871 with UTF-8 params strings5872 handles string encodings correctly5873 with pagination parameters5874 responds with a pagination cursor5875 #commit_count5876 sends a commit_count message5877 with UTF-8 params strings5878 handles string encodings correctly5879 #find_commit5880 sends an RPC request5881 caching5882 when passed revision is a branch name5883 calls Gitaly5884 when passed revision is a commit ID5885 returns a cached commit5886 when caching of the ref name is enabled5887 caches negative entries5888 returns a cached commit5889 #list_commits5890 behaves like a ListCommits request5891 sends a list_commits message5892 with multiple revisions5893 behaves like a ListCommits request5894 sends a list_commits message5895 with reverse: true5896 behaves like a ListCommits request5897 sends a list_commits message5898 with commit message, author, before and after5899 behaves like a ListCommits request5900 sends a list_commits message5901 #list_new_commits5902 with hook environment5903 reject commits which exist in target repository5904 behaves like a #list_all_commits message5905 sends a list_all_commits message5906 keep commits which do not exist in target repository5907 behaves like a #list_all_commits message5908 sends a list_all_commits message5909 mixed existing and nonexisting commits5910 behaves like a #list_all_commits message5911 sends a list_all_commits message5912 with more than 100 commits5913 behaves like a #list_all_commits message5914 sends a list_all_commits message5915 without hook environment5916 behaves like a #list_commits message5917 sends a list_commits message5918 #commit_stats5919 sends an RPC request5920 #find_commits5921 sends an RPC request with NONE when default5922 sends an RPC request5923 sends an RPC request with an author5924 #object_existence_map5925 with empty request5926 doesnt call for Gitaly5927 when revision exists5928 behaves like a CheckObjectsExistRequest5929 returns expected results5930 when revision does not exist5931 behaves like a CheckObjectsExistRequest5932 returns expected results5933 when request contains mixed revisions5934 behaves like a CheckObjectsExistRequest5935 returns expected results5936 when requesting many revisions5937 behaves like a CheckObjectsExistRequest5938 returns expected results5939 #commits_by_message5940 when only the query is provided5941 sends an RPC request with the correct payload5942 when all arguments are provided5943 sends an RPC request with the correct payload5944 when limit and offset are not integers5945 sends an RPC request with the correct payload5946 when revision and path contain non-ASCII characters5947 sends an RPC request with the correct payload5948 #list_commits_by_ref_name5949 lists latest commits grouped by a ref name5950 #raw_blame5951 without a range5952 blames a whole file5953 with a range5954 blames part of a file5955Gitlab::Ci::Build::Rules5956 .new5957 with no rules5958 sets @rule_list to an empty array5959 sets @default_when to "on_success"5960 with one rule5961 sets @rule_list to an array of a single rule5962 sets @default_when to "on_success"5963 with multiple rules5964 sets @rule_list to an array of a single rule5965 sets @default_when to "on_success"5966 with a specified default when:5967 sets @rule_list to an array of a single rule5968 sets @default_when to "manual"5969 #evaluate5970 with nil rules5971 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="on_success", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>5972 and when:manual set as the default5973 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="manual", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>5974 with no rules5975 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="never", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>5976 and when:manual set as the default5977 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="never", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>5978 with one rule without any clauses5979 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="manual", start_in=nil, allow_failure=true, variables=nil, needs=nil, errors=nil>5980 with one matching rule5981 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="always", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>5982 with two matching rules5983 returns the value of the first matched rule in the list5984 with a non-matching and matching rule5985 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="always", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>5986 with a matching and non-matching rule5987 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="delayed", start_in="1 day", allow_failure=nil, variables=nil, needs=nil, errors=nil>5988 with non-matching rules5989 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="never", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>5990 and when:manual set as the default5991 does not return the default when:5992 with only allow_failure5993 with matching rule5994 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="on_success", start_in=nil, allow_failure=true, variables=nil, needs=nil, errors=nil>5995 with non-matching rule5996 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="never", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>5997 with needs5998 when single needs is specified5999 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="on_success", start_in=nil, allow_failure=nil, variables=nil, needs=[{:name=>"test", :artifacts=>true, :optional=>false}], errors=nil>6000 when multiple needs are specified6001 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="on_success", start_in=nil, allow_failure=nil, variabl...tifacts=>true, :optional=>false}, {:name=>"rspec", :artifacts=>true, :optional=>false}], errors=nil>6002 when there are no needs specified6003 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="on_success", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>6004 when need is specified with additional attibutes6005 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="on_success", start_in=nil, allow_failure=nil, variables=nil, needs=[{:artifacts=>true, :name=>"test", :optional=>false, :when=>"never"}], errors=nil>6006 when feature flag is disabled6007 with needs6008 when single needs is specified6009 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="on_success", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>6010 when multiple needs are specified6011 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="on_success", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>6012 when there are no needs specified6013 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="on_success", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>6014 when need is specified with additional attibutes6015 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="on_success", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>6016 with variables6017 with matching rule6018 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="on_success", start_in=nil, allow_failure=nil, variables={:MY_VAR=>"my var"}, needs=nil, errors=nil>6019 with a regexp variable matching rule6020 is expected to eq #<struct Gitlab::Ci::Build::Rules::Result when="on_success", start_in=nil, allow_failure=nil, variables=nil, needs=nil, errors=nil>6021 Gitlab::Ci::Build::Rules::Result6022 #build_attributes6023 compacts nil values6024 scheduling_type6025 when rules have needs6026 single need6027 saves needs6028 adds schedule type to the build_attributes6029 multiple needs6030 saves needs6031 adds schedule type to the build_attributes6032 when rules do not have needs6033 does not add schedule type to the build_attributes6034 #pass?6035 'when' is 'never'6036 returns false6037 'when' is 'on_success'6038 returns true6039gitlab:cleanup rake tasks6040 cleanup:project_uploads6041 with a fixable orphaned project upload file6042 with DRY_RUN disabled6043 moves the file to its proper location6044 logs action as done6045 with DRY_RUN explicitly enabled6046 behaves like does not move the file6047 does not move the file6048 logs action as able to be done6049 with DRY_RUN set to an unknown value6050 behaves like does not move the file6051 does not move the file6052 logs action as able to be done6053 with DRY_RUN unset6054 behaves like does not move the file6055 does not move the file6056 logs action as able to be done6057 gitlab:cleanup:orphan_job_artifact_files6058 runs the task without errors6059 with DRY_RUN set to false6060 passes dry_run correctly6061 gitlab:cleanup:orphan_lfs_file_references6062 runs the task without errors6063 with DRY_RUN set to false6064 passes dry_run correctly6065 gitlab:cleanup:orphan_lfs_files6066 runs RemoveUnreferencedLfsObjectsWorker6067 sessions6068 gitlab:cleanup:sessions:active_sessions_lookup_keys6069 runs the task without errors6070 removes expired active session lookup keys6071Sbom::PackageUrl::Decoder6072 # order random6073 #decode6074 valid maven purl6075 is expected to have attributes {:name => "io", :namespace => "org.apache.commons", :qualifiers => nil, :subpath => nil, :type => "maven", :version => "1.3.4"}6076 basic valid maven purl without version6077 is expected to have attributes {:name => "io", :namespace => "org.apache.commons", :qualifiers => nil, :subpath => nil, :type => "maven", :version => nil}6078 valid go purl without version and with subpath6079 is expected to have attributes {:name => "genproto", :namespace => "google.golang.org", :qualifiers => nil, :subpath => "googleapis/api/annotations", :type => "golang", :version => nil}6080 valid go purl with version and subpath6081 is expected to have attributes {:name => "genproto", :namespace => "google.golang.org", :qualifiers => nil, :subpath => "googleapis/api/annotations", :type => "golang", :version => "abcdedf"}6082 bitbucket namespace and name should be lowercased6083 is expected to have attributes {:name => "pygments-main", :namespace => "birkenfeld", :qualifiers => nil, :subpath => nil, :type => "bitbucket", :version => "244fd47e07d1014f0aed9c"}6084 github namespace and name should be lowercased6085 is expected to have attributes {:name => "purl-spec", :namespace => "package-url", :qualifiers => nil, :subpath => nil, :type => "github", :version => "244fd47e07d1004f0aed9c"}6086 debian can use qualifiers6087 is expected to have attributes {:name => "curl", :namespace => "debian", :qualifiers => {"arch" => "i386", "distro" => "jessie"}, :subpath => nil, :type => "deb", :version => "7.50.3-1"}6088 docker uses qualifiers and hash image id as versions6089 is expected to have attributes {:name => "dockerimage", :namespace => "customer", :qualifiers => {"repository_url" => "gcr.io"}, :subpath => nil, :type => "docker", :version => "sha256:244fd47e07d1004f0aed9c"}6090 Java gem can use a qualifier6091 is expected to have attributes {:name => "jruby-launcher", :namespace => nil, :qualifiers => {"platform" => "java"}, :subpath => nil, :type => "gem", :version => "1.1.2"}6092 maven often uses qualifiers6093 is expected to have attributes {:name => "batik-anim", :namespace => "org.apache.xmlgraphics", :qualifiers => {"classifier" => "sources", "repository_url" => "repo.spring.io/release"}, :subpath => nil, :type => "maven", :version => "1.9.1"}6094 maven pom reference6095 is expected to have attributes {:name => "batik-anim", :namespace => "org.apache.xmlgraphics", :qualifiers => {"extension" => "pom", "repository_url" => "repo.spring.io/release"}, :subpath => nil, :type => "maven", :version => "1.9.1"}6096 maven can come with a type qualifier6097 is expected to have attributes {:name => "jacob", :namespace => "net.sf.jacob-project", :qualifiers => {"classifier" => "x86", "type" => "dll"}, :subpath => nil, :type => "maven", :version => "1.14.3"}6098 npm can be scoped6099 is expected to have attributes {:name => "animation", :namespace => "@angular", :qualifiers => nil, :subpath => nil, :type => "npm", :version => "12.3.1"}6100 nuget names are case sensitive6101 is expected to have attributes {:name => "EnterpriseLibrary.Common", :namespace => nil, :qualifiers => nil, :subpath => nil, :type => "nuget", :version => "6.0.1304"}6102 pypi names have special rules and not case sensitive6103 is expected to have attributes {:name => "django-package", :namespace => nil, :qualifiers => nil, :subpath => nil, :type => "pypi", :version => "1.11.1.dev1"}6104 rpm often use qualifiers6105 is expected to have attributes {:name => "curl", :namespace => "fedora", :qualifiers => {"arch" => "i386", "distro" => "fedora-25"}, :subpath => nil, :type => "rpm", :version => "7.50.3-1.fc25"}6106 slash / after scheme is not significant6107 is expected to have attributes {:name => "io", :namespace => "org.apache.commons", :qualifiers => nil, :subpath => nil, :type => "maven", :version => nil}6108 double slash // after scheme is not significant6109 is expected to have attributes {:name => "io", :namespace => "org.apache.commons", :qualifiers => nil, :subpath => nil, :type => "maven", :version => nil}6110 slash /// after type is not significant6111 is expected to have attributes {:name => "io", :namespace => "org.apache.commons", :qualifiers => nil, :subpath => nil, :type => "maven", :version => nil}6112 valid maven purl with case sensitive namespace and name6113 is expected to have attributes {:name => "HTTPClient", :namespace => "HTTPClient", :qualifiers => nil, :subpath => nil, :type => "maven", :version => "0.3-3"}6114 valid maven purl containing a space in the version and qualifier6115 is expected to have attributes {:name => "myartifact", :namespace => "mygroup", :qualifiers => {"mykey" => "my value"}, :subpath => nil, :type => "maven", :version => "1.0.0 Final"}6116 valid conan purl6117 is expected to have attributes {:name => "cctz", :namespace => nil, :qualifiers => nil, :subpath => nil, :type => "conan", :version => "2.3"}6118 valid conan purl with namespace and qualifier channel6119 is expected to have attributes {:name => "cctz", :namespace => "bincrafters", :qualifiers => {"channel" => "stable"}, :subpath => nil, :type => "conan", :version => "2.3"}6120 valid conda purl with qualifiers6121 is expected to have attributes {:name => "absl-py", :namespace => nil, :qualifiers => {"build" => "py36h06a4308_0", "channel" => "main", "subdir" => "linux-64", "type" => "tar.bz2"}, :subpath => nil, :type => "conda", :version => "0.4.1"}6122 valid cran purl6123 is expected to have attributes {:name => "A3", :namespace => nil, :qualifiers => nil, :subpath => nil, :type => "cran", :version => "0.9.1"}6124 valid swift purl6125 is expected to have attributes {:name => "Alamofire", :namespace => "github.com/Alamofire", :qualifiers => nil, :subpath => nil, :type => "swift", :version => "5.4.3"}6126 valid hackage purl6127 is expected to have attributes {:name => "AC-HalfInteger", :namespace => nil, :qualifiers => nil, :subpath => nil, :type => "hackage", :version => "1.2.1"}6128 when no argument is passed6129 raises an error6130 when an invalid package URL string is passed6131 a scheme is always required6132 raises an error6133 a type is always required6134 raises an error6135 a name is required6136 raises an error6137 checks for invalid qualifier keys6138 raises an error6139 invalid conan purl only namespace6140 raises an error6141 invalid conan purl only channel qualifier6142 raises an error6143 invalid cran purl without name6144 raises an error6145 invalid cran purl without version6146 raises an error6147 invalid swift purl without namespace6148 raises an error6149 invalid swift purl without name6150 raises an error6151 invalid swift purl without version6152 raises an error6153 name and version are always required6154 raises an error6155 when namespace or subpath contains an encoded slash6156 purl: "pkg:golang/google.org/golang/genproto#googleapis%2fapi%2fannotations"6157 is expected to raise Sbom::PackageUrl::InvalidPackageUrl6158 purl: "pkg:golang/google.org%2fgolang/genproto#googleapis/api/annotations"6159 is expected to raise Sbom::PackageUrl::InvalidPackageUrl6160 when name contains an encoded slash6161 is expected to have attributes {:name => "golang/genproto", :namespace => "google.org", :qualifiers => nil, :subpath => "googleapis/api/annotations", :type => "golang", :version => nil}6162 with URL encoded segments6163 decodes them6164 when segments contain empty values6165 removes them from the segments6166 when qualifiers have no value6167 they are ignored6168Ci::RunnerManager6169 # order random6170 is expected to belong to runner required: false6171 is expected to have many builds through runner_manager_builds6172 is expected to belong to runner_version required: false6173 is expected to have many runner_manager_builds6174 .online_contact_time_deadline6175 is expected to eq 2023-05-15 15:19:37.000000000 +00006176 .stale6177 returns stale runner managers6178 validation6179 is expected to validate that :runner cannot be empty/falsy6180 is expected to validate that :system_xid cannot be empty/falsy6181 is expected to validate that the length of :system_xid is at most 646182 is expected to validate that the length of :version is at most 20486183 is expected to validate that the length of :revision is at most 2556184 is expected to validate that the length of :platform is at most 2556185 is expected to validate that the length of :architecture is at most 2556186 is expected to validate that the length of :ip_address is at most 10246187 when runner has config6188 is valid6189 when runner has an invalid config6190 is invalid6191 .stale_deadline6192 is expected to eq 2023-05-08 17:19:38.000000000 +00006193 behaves like having unique enum values6194 has unique values in "executor_type"6195 #status6196 if never connected6197 is expected to eq :stale6198 if created recently6199 is expected to eq :never_contacted6200 if contacted 1s ago6201 is expected to eq :online6202 if contacted recently6203 is expected to eq :offline6204 if contacted long time ago6205 is expected to eq :stale6206 behaves like it has loose foreign keys6207 has at least one loose foreign key definition6208 has the deletion trigger present6209 records record deletions6210 cleans up record deletions6211 #heartbeat6212 when database was updated recently6213 when version is changed6214 schedules version information update6215 updates cache6216 when fetching runner releases is disabled6217 does not schedule version information update6218 with only ip_address specified6219 updates only ip_address6220 with new version having been cached6221 does not lose cached version value6222 when database was not updated recently6223 when version is changed6224 updates redis cache and database6225 with invalid runner_manager6226 still updates redis cache and database6227 with unchanged runner_manager version6228 does not schedule ci_runner_versions update6229 with unknown executor6230 updates with expected executor type6231 with custom executor6232 updates with expected executor type6233 with shell executor6234 updates with expected executor type6235 with docker executor6236 updates with expected executor type6237 with docker-windows executor6238 updates with expected executor type6239 with docker-ssh executor6240 updates with expected executor type6241 with ssh executor6242 updates with expected executor type6243 with parallels executor6244 updates with expected executor type6245 with virtualbox executor6246 updates with expected executor type6247 with docker+machine executor6248 updates with expected executor type6249 with docker-ssh+machine executor6250 updates with expected executor type6251 with kubernetes executor6252 updates with expected executor type6253 with an unknown executor type6254 updates with unknown executor type6255Gitlab::Diff::DiffRefs6256 #==6257 when shas are missing6258 returns false6259 when shas are equal6260 returns true6261 when shas are unequal6262 returns false6263 when shas are truncated6264 when sha prefixes are too short6265 returns false6266 when sha prefixes are equal6267 returns true6268 when sha prefixes are unequal6269 returns false6270 #compare_in6271 with diff refs for the initial commit6272 returns an appropriate comparison6273 with diff refs for a commit6274 returns an appropriate comparison6275 with diff refs for a comparison through the base6276 returns an appropriate comparison6277 with diff refs for a straight comparison6278 returns an appropriate comparison6279IssuablesDescriptionTemplatesHelper6280 #issuable_templates6281 returns empty hash when template type does not exist6282 with cached issuable templates6283 does not call TemplateFinder6284 when project has no parent group6285 behaves like project issuable templates6286 issuable templates6287 returns only md files as issue templates6288 returns only md files as merge_request templates6289 when project has parent group6290 when project parent group does not have a file template project6291 behaves like project issuable templates6292 issuable templates6293 returns only md files as issue templates6294 returns only md files as merge_request templates6295 #available_service_desk_templates_for6296 with project templates6297 returns project templates6298 when there are no templates in the project6299 returns empty array6300 #selected_template_name6301 when no issuable_template parameter is provided6302 does not select a template6303 when an issuable_template parameter has been provided6304 when param matches existing templates6305 returns the matching issuable template6306 when param does not match any templates6307 returns nil6308 #default_template_name6309 when a default template is available6310 returns the default template6311 returns nil when issuable has a description set6312 returns nil when issuable is persisted6313 when there is no default template6314 returns nil6315 #template_names6316 returns unique list of template names6317Gitlab::Email::ReplyParser6318 #execute6319 returns an empty string if the message is blank6320 returns an empty string if the message is not an email6321 returns an empty string if there is no reply content6322 properly renders plaintext-only email6323 properly renders html-only email with table and blockquote6324 supports a Dutch reply6325 removes an 'on date wrote' quoting line6326 handles multiple paragraphs6327 handles multiple paragraphs when parsing html6328 handles newlines6329 handles inline reply6330 properly renders email reply from gmail web client6331 properly renders email reply from iOS default mail client6332 properly renders email reply from Android 5 gmail client6333 properly renders email reply from Windows 8.1 Metro default mail client6334 properly renders email reply from MS Outlook client6335 properly renders html-only email from MS Outlook6336 does not wrap links with no href in unnecessary brackets6337 does not trim reply if trim_reply option is false6338 appends trimmed reply when when append_reply option is true6339 when allow_only_quotes is true6340 returns quoted text from email6341 properly renders email reply from gmail web client6342 is expected to eq "### This is a reply from standard GMail in Google Chrome.\n\nThe quick brown fox jumps over the lazy...ary>\nTwo</summary>\nSome details</details>\n\nTest reply.\n\nFirst paragraph.\n\nSecond paragraph."6343 non-UTF-8 content6344 parses body under UTF-8 encoding6345 charset is absent and reply trimming is disabled6346 parses body under UTF-8 encoding6347 multipart email6348 parses body under UTF-8 encoding6349Import::GithubController routing6350 to #personal_access_token6351 to #cancel_all6352 to #counts6353 behaves like importer routing6354 to #create6355 to #new6356 to #status6357 to #callback6358 to #jobs6359 to #realtime_changes6360Import::GiteaController routing6361 to #personal_access_token6362 behaves like importer routing6363 to #create6364 to #new6365 to #status6366 to #callback6367 to #jobs6368 to #realtime_changes6369Import::BitbucketController routing6370 behaves like importer routing6371 to #create6372 to #new6373 to #status6374 to #callback6375 to #jobs6376 to #realtime_changes6377Import::BitbucketServerController routing6378 behaves like importer routing6379 to #create6380 to #new6381 to #status6382 to #callback6383 to #jobs6384 to #realtime_changes6385Import::FogbugzController routing6386 to #callback6387 to #new_user_map6388 to #create_user_map6389 behaves like importer routing6390 to #create6391 to #new6392 to #status6393 to #callback6394 to #jobs6395 to #realtime_changes6396Import::GitlabProjectsController routing6397 to #create6398 to #new6399Import::GithubGroupsController routing6400 to #status6401Issues::ReopenService6402 #execute6403 when user is not authorized to reopen issue6404 does not reopen the issue6405 when skip_authorization is true6406 does close the issue even if user is not authorized6407 when user is authorized to reopen issue6408 invalidates counter cache for assignees6409 refreshes the number of opened issues6410 deletes milestone issue counters cache6411 does not create timeline event6412 issue is incident type6413 creates a timeline event6414 behaves like an incident management tracked event6415 .track_event6416 tracks the event using redis6417 behaves like Snowplow event tracking with RedisHLL context6418 behaves like Snowplow event tracking6419 is emitted6420 when issue is not confidential6421 executes issue hooks6422 when issue is confidential6423 executes confidential issue hooks6424Gitlab::Changelog::Config6425 .from_git6426 retrieves the configuration from Git6427 retrieves the specified configuration from git6428 returns the default configuration when no YAML file exists in Git6429 when changelog is empty6430 returns the default configuration6431 .from_hash6432 sets the configuration according to a Hash6433 raises Error when the categories are not a Hash6434 raises a Gitlab::Changelog::Error when the template is invalid6435 #contributor?6436 when user is a member of project6437 is expected to eq false6438 when user has at least one merge request merged into default_branch6439 is expected to eq true6440 is expected to eq false6441 #category6442 returns the name of a category6443 returns the raw category name when no alternative name is configured6444 #format_date6445 formats a date according to the configured date format6446 #always_credit_author?6447 when include_groups is defined6448 when user generating changelog has access to group6449 returns whether author should always be credited6450 when user generating changelog has no access to group6451 always returns false6452 when include_groups is not defined6453 always returns false6454ContextCommitsFinder6455 #execute6456 filters commits by valid sha/commit message6457 returns nothing when searched by invalid sha/commit message6458 returns commits based in author filter6459 returns commits based in committed before and after filter6460 returns commits from target branch if no filter is applied6461PlanLimits6462 #exceeded?6463 when given limit subject is an integer6464 behaves like comparing limits6465 when limit for given name results to a disabled value6466 is expected to eq false6467 when limit for given name results to a non-disabled value6468 and given count is smaller than limit6469 is expected to eq false6470 and given count is equal to the limit6471 is expected to eq true6472 and given count is greater than the limit6473 is expected to eq true6474 when given limit subject is an ActiveRecord::Relation6475 behaves like comparing limits6476 when limit for given name results to a disabled value6477 is expected to eq false6478 when limit for given name results to a non-disabled value6479 and given count is smaller than limit6480 is expected to eq false6481 and given count is equal to the limit6482 is expected to eq true6483 and given count is greater than the limit6484 is expected to eq true6485 when given limit subject is something else6486 raises an error6487 #limit_for6488 when given limit name does not exist6489 raises an error6490 when given limit name is disabled6491 is expected to eq nil6492 and alternate_limit is a non-zero integer6493 is expected to eq 16494 and alternate_limit is zero6495 is expected to eq nil6496 and alternate_limit is a proc that returns non-zero integer6497 is expected to eq 16498 and alternate_limit is a proc that returns zero6499 is expected to eq nil6500 and alternate_limit is a proc that returns nil6501 is expected to eq nil6502 when given limit name is enabled6503 and alternate_limit is a non-zero integer that is bigger than the plan limit6504 is expected to eq 26505 and alternate_limit is a non-zero integer that is smaller than the plan limit6506 is expected to eq 16507 and alternate_limit is zero6508 is expected to eq 26509 and alternate_limit is a proc that returns non-zero integer that is bigger than the plan limit6510 is expected to eq 26511 and alternate_limit is a proc that returns non-zero integer that is smaller than the plan limit6512 is expected to eq 16513 and alternate_limit is a proc that returns zero6514 is expected to eq 26515 and alternate_limit is a proc that returns nil6516 is expected to eq 26517 validates default values6518 has positive values for enabled limits6519 has zero values for disabled limits6520IncidentManagement::ProcessAlertWorkerV26521 # order random6522 #perform6523 with valid alert6524 behaves like creates issue successfully6525 creates an issue6526 updates AlertManagement::Alert#issue_id6527 does not write a warning to log6528 behaves like an idempotent worker6529 is labeled as idempotent6530 performs multiple times sequentially without raising an exception6531 does not create a second issue6532 when alert cannot be updated6533 updates AlertManagement::Alert#issue_id6534 logs a warning6535 prometheus alert6536 behaves like creates issue successfully6537 creates an issue6538 updates AlertManagement::Alert#issue_id6539 does not write a warning to log6540 behaves like an idempotent worker6541 is labeled as idempotent6542 performs multiple times sequentially without raising an exception6543 does not create a second issue6544 with invalid alert6545 does not create issues6546Projects::HashedStorage::RollbackAttachmentsService6547 #execute6548 works even when project validation fails6549 when succeeds6550 moves attachments to legacy storage layout6551 returns true6552 sets skipped to false6553 when original folder does not exist anymore6554 skips moving folders and go to next6555 returns true6556 sets skipped to true6557 when target folder already exists6558 raises AttachmentCannotMoveError6559 #old_disk_path6560 returns old disk_path for project6561 #new_disk_path6562 returns new disk_path for project6563Ci::RunnerProject6564 behaves like includes Limitable concern6565 #exceeds_limits?6566 without plan limits configured6567 is expected to eq false6568 without plan limits configured6569 is expected to eq false6570 with an existing model6571 is expected to eq true6572 validations6573 is expected to be a kind of Limitable6574 without plan limits configured6575 can create new models6576 with plan limits configured6577 can create new models6578 with an existing model6579 cannot create new models exceeding the plan limits6580 loose foreign key on ci_runner_projects.project_id6581 behaves like cleanup by a loose foreign key6582 cleans up (delete or nullify) the model6583Gitlab::Shell6584 is expected to respond to #remove_repository6585 .secret_token6586 memoized secret_token6587 behaves like creates and links the secret token file6588 creates and links the secret token file6589 when link_file is a broken symbolic link6590 behaves like creates and links the secret token file6591 creates and links the secret token file6592 when secret_file exists6593 reads the token from the existing file6594 behaves like creates and links the secret token file6595 creates and links the secret token file6596 projects commands6597 #remove_repository6598 returns true when the command succeeds6599 #mv_repository6600 returns true when the command succeeds6601 returns false when the command fails6602 namespace actions6603 #add_namespace6604 creates a namespace6605 #repository_exists?6606 when the repository does not exist6607 returns false6608 when the repository exists6609 returns true6610 #remove6611 removes the namespace6612 #mv_namespace6613 renames the namespace6614Users::GroupCalloutsHelper6615 .show_invite_banner?6616 when user has the admin ability for the group6617 when the invite_members_banner has not been dismissed6618 is expected to eq true6619 when the group was just created6620 is expected to eq false6621 with concerning multiple members6622 on current group6623 is expected to eq false6624 on current group that is a subgroup6625 with only one user on parent and this group6626 is expected to eq true6627 when another user is on this group6628 is expected to eq false6629 when another user is on the parent group6630 is expected to eq false6631 when the invite_members_banner has been dismissed6632 is expected to eq false6633 when user does not have admin ability for the group6634 is expected to eq false6635Gitlab::Redis::Queues6636 .config_file_name6637 when there is no config file anywhere6638 is expected to be nil6639 .store6640 with old format6641 behaves like redis store6642 instantiates Redis::Store6643 with the namespace6644 uses specified namespace6645 with new format6646 behaves like redis store6647 instantiates Redis::Store6648 with the namespace6649 uses specified namespace6650 .params6651 withstands mutation6652 when url contains unix socket reference6653 with old format6654 returns path key instead6655 with new format6656 returns path key instead6657 when url is host based6658 with old format6659 returns hash with host, port, db, and password6660 with new format6661 rails_env: "development", host: "development-host"6662 returns hash with host, port, db, and password6663 rails_env: "test", host: "test-host"6664 returns hash with host, port, db, and password6665 rails_env: "production", host: "production-host"6666 returns hash with host, port, db, and password6667 with redis cluster format6668 rails_env: "development", host: "development-master"6669 returns hash with cluster and password6670 rails_env: "test", host: "test-master"6671 returns hash with cluster and password6672 rails_env: "production", host: "production-master"6673 returns hash with cluster and password6674 .url6675 withstands mutation6676 when yml file with env variable6677 reads redis url from env variable6678 .version6679 returns a version6680 .with6681 when running on single-threaded runtime6682 instantiates a connection pool with size 56683 when running on multi-threaded runtime6684 instantiates a connection pool with a size based on the concurrency of the worker6685 when there is no config at all6686 can run an empty block6687 #db6688 with old format6689 returns the correct db6690 with new format6691 returns the correct db6692 with cluster-mode6693 returns the correct db6694 #sentinels6695 when sentinels are defined6696 rails_env: "development", hosts: ["development-replica1", "development-replica2"]6697 returns an array of hashes with host and port keys6698 rails_env: "test", hosts: ["test-replica1", "test-replica2"]6699 returns an array of hashes with host and port keys6700 rails_env: "production", hosts: ["production-replica1", "production-replica2"]6701 returns an array of hashes with host and port keys6702 when sentinels are not defined6703 returns nil6704 when cluster is defined6705 returns nil6706 #sentinels?6707 when sentinels are defined6708 returns true6709 when sentinels are not defined6710 is expected to eq nil6711 when cluster is defined6712 returns false6713 #raw_config_hash6714 returns old-style single url config in a hash6715 returns cluster config without url key in a hash6716 #fetch_config6717 raises an exception when the config file contains invalid yaml6718 when redis.yml exists6719 uses config/redis.yml6720 when no config file exsits6721 returns nil6722 when resque.yml exists6723 returns the config from resque.yml6724 #raw_config_hash6725 when the config url is present6726 sets the configured url6727Deployments::HooksWorker6728 #perform6729 logs deployment and project IDs as metadata6730 executes project services for deployment_hooks6731 does not execute an inactive service6732 does not execute if a deployment does not exist6733 execute webhooks6734 behaves like worker with data consistency6735 .get_data_consistency_feature_flag_enabled?6736 returns true6737 .get_data_consistency6738 returns correct data consistency6739layouts/nav/sidebar/_admin6740 on home page6741 behaves like page has active tab6742 activates Overview tab6743 behaves like has nav sidebar6744 has collapsed nav sidebar on mobile6745 on projects6746 behaves like page has active tab6747 activates Overview tab6748 behaves like page has active sub tab6749 activates Projects sub tab6750 on groups6751 behaves like page has active tab6752 activates Overview tab6753 behaves like page has active sub tab6754 activates Groups sub tab6755 on users6756 behaves like page has active tab6757 activates Overview tab6758 behaves like page has active sub tab6759 activates Users sub tab6760 on topics6761 behaves like page has active tab6762 activates Overview tab6763 behaves like page has active sub tab6764 activates Topics sub tab6765 on runners6766 behaves like page has active tab6767 activates CI/CD tab6768 behaves like page has active sub tab6769 activates Runners sub tab6770 on jobs6771 behaves like page has active tab6772 activates CI/CD tab6773 behaves like page has active sub tab6774 activates Jobs sub tab6775 on messages6776 behaves like page has active tab6777 activates Messages tab6778 on analytics6779 behaves like page has active tab6780 activates Analytics tab6781 on hooks6782 behaves like page has active tab6783 activates Hooks tab6784 on background jobs6785 behaves like page has active tab6786 activates Monitoring tab6787 behaves like page has active sub tab6788 activates Background Jobs sub tab6789 on settings6790 includes General link6791 when GitLab.com6792 does not include Integrations link6793 when not GitLab.com6794 includes Integrations link6795 when GitLab FOSS6796 does not include Templates link6797Sidebars::Projects::Menus::AnalyticsMenu6798 # order random6799 Menu items6800 CI/CD6801 is expected not to be nil6802 when the project repository is empty6803 is expected to be nil6804 when builds access level is DISABLED6805 is expected to be nil6806 when the user does not have access6807 is expected to be nil6808 Repository6809 is expected not to be nil6810 when the project repository is empty6811 is expected to be nil6812 when a user does not have access to repository graphs6813 is expected to be nil6814 when the user does not have access6815 is expected to be nil6816 Value Stream6817 is expected not to be nil6818 when the user does not have access6819 is expected to be nil6820 when issues are disabled6821 is expected not to be nil6822 when merge requests are disabled6823 is expected not to be nil6824 when the issues and merge requests are disabled6825 is expected to be nil6826 #render?6827 whe user cannot read analytics6828 returns false6829 whe user can read analytics6830 returns true6831 when menu does not have any menu items6832 returns false6833 when menu has menu items6834 returns true6835 #link6836 returns link to the value stream page6837 when Value Stream is not visible6838 returns link to the the first visible menu item6839Gitlab::Ci::Status::External::Common6840 #label6841 returns description6842 when description is nil6843 uses core status label6844 when description is empty string6845 uses core status label6846 #has_action?6847 is expected not to have action6848 #has_details?6849 when user has access to read commit status6850 is expected to have details6851 when user does not have access to read commit status6852 is expected not to have details6853 #details_path6854 links to the external target URL6855Packages::Detail::PackagePresenter6856 #detail_view6857 with build_info6858 returns details with pipeline6859 with multiple build_infos6860 returns details with two pipelines6861 with package_file_build_infos6862 returns details with package_file pipeline6863 without build info6864 returns details without pipeline6865 with conan metadata6866 returns conan_metadatum6867 with composer metadata6868 returns composer_metadatum6869 with nuget_metadatum6870 returns nuget_metadatum6871 with dependency_links6872 returns the correct dependency link6873 with package files pending destruction6874 is expected not to include 326875Gitlab::Database::LoadBalancing::SidekiqServerMiddleware6876 #call6877 when worker class does not include WorkerAttributes6878 sticks to the primary6879 sets load balancing strategy to primary6880 when job contains wrapped worker class6881 uses wrapped job if available6882 when worker data consistency is :always6883 sticks to the primary6884 sets load balancing strategy to primary6885 when delay interval has not elapsed6886 does not sleep6887 when worker data consistency is :delayed6888 when database wal location is set6889 behaves like replica is up to date6890 does not stick to the primary6891 sets load balancing strategy to replica6892 when deduplication wal location is set6893 behaves like replica is up to date6894 does not stick to the primary6895 sets load balancing strategy to replica6896 when database location is not set6897 sticks to the primary6898 sets load balancing strategy to primary_no_wal6899 when WAL locations are blank6900 does not sleep6901 when WAL locations are present6902 when delay interval has not elapsed6903 when replica is up to date6904 does not sleep6905 when replica is not up to date6906 sleeps until the minimum delay is reached6907 when replica is never not up to date6908 sleeps until the maximum delay is reached6909 when replica is not up to date6910 when job is executed first6911 raises an error and retries6912 sets load balancing strategy to retry6913 when job is retried6914 and replica still lagging behind6915 sticks to the primary6916 sets load balancing strategy to primary6917 and replica is now up-to-date6918 does not stick to the primary6919 sets load balancing strategy to replica_retried6920 when worker data consistency is :sticky6921 when database wal location is set6922 behaves like replica is up to date6923 does not stick to the primary6924 sets load balancing strategy to replica6925 when deduplication wal location is set6926 behaves like replica is up to date6927 does not stick to the primary6928 sets load balancing strategy to replica6929 when database location is not set6930 sticks to the primary6931 sets load balancing strategy to primary_no_wal6932 when WAL locations are blank6933 does not sleep6934 when WAL locations are present6935 when delay interval has not elapsed6936 when replica is up to date6937 does not sleep6938 when replica is not up to date6939 sleeps until the minimum delay is reached6940 when replica is never not up to date6941 sleeps until the maximum delay is reached6942 when replica is not up to date6943 sticks to the primary6944 sets load balancing strategy to primary6945 #databases_in_sync?6946 treats load balancers without WAL entries as in sync6947 returns true when all load balancers are in sync6948 returns false when the load balancers are not in sync6949 when locations have string keys6950 returns false when the load balancers are not in sync6951Users::RefreshAuthorizedProjectsService6952 #execute6953 refreshes the authorizations using a lease6954 callbacks6955 incorrect_auth_found_callback callback6956 is called6957 missing_auth_found_callback callback6958 is called6959 #execute_without_lease6960 updates the authorized projects of the user6961 sets the access level of a project to the highest available level6962 returns a User6963 #update_authorizations6964 removes authorizations that should be removed6965 inserts authorizations that should be added6966 logs the details of the refresh6967 when there are no rows to add and remove6968 does not change authorizations6969Packages::Cleanup::Policy6970 relationships6971 is expected to belong to project required: false6972 validations6973 is expected to validate that :project cannot be empty/falsy6974 is expected to validate that :keep_n_duplicated_package_files is either ‹"all"›, ‹"1"›, ‹"10"›, ‹"20"›, ‹"30"›, ‹"40"›, or ‹"50"›, producing a custom validation error on failure6975 .active6976 is expected to contain exactly #<Packages::Cleanup::Policy created_at: "2023-05-15 17:21:29.866117509 +0000", updated_at: "2023-05-1..._id: 743, next_run_at: "2023-05-16 05:21:29.865871359 +0000", keep_n_duplicated_package_files: "10">6977 .with_packages6978 is expected to contain exactly #<Packages::Cleanup::Policy created_at: "2023-05-15 17:21:30.346783465 +0000", updated_at: "2023-05-1..._id: 745, next_run_at: "2023-05-16 05:21:30.346649025 +0000", keep_n_duplicated_package_files: "10">6979 .runnable6980 is expected to contain exactly #<Packages::Cleanup::Policy created_at: "2023-05-15 17:21:30.864855426 +0000", updated_at: "2023-05-1..._id: 747, next_run_at: "2023-05-14 17:21:30.868154105 +0000", keep_n_duplicated_package_files: "10">6981 #keep_n_duplicated_package_files_disabled?6982 with value set to all6983 is expected to eq true6984 with value set to 16985 is expected to eq false6986Packages::Nuget::Metadatum6987 relationships6988 is expected to belong to package required: false inverse_of => nuget_metadatum6989 validations6990 is expected to validate that :package cannot be empty/falsy6991 #license_url6992 is expected to allow :license_url to be ‹"http://sandbox.com"›6993 is expected to allow :license_url to be ‹"https://sandbox.com"›6994 is expected not to allow :license_url to be ‹"123"›6995 is expected not to allow :license_url to be ‹"sandbox.com"›6996 #ensure_at_least_one_field_supplied6997 rejects unfilled metadatum6998 #ensure_nuget_package_type6999 rejects if not linked to a nuget package7000 #project_url7001 is expected to allow :project_url to be ‹"http://sandbox.com"›7002 is expected to allow :project_url to be ‹"https://sandbox.com"›7003 is expected not to allow :project_url to be ‹"123"›7004 is expected not to allow :project_url to be ‹"sandbox.com"›7005 #ensure_at_least_one_field_supplied7006 rejects unfilled metadatum7007 #ensure_nuget_package_type7008 rejects if not linked to a nuget package7009 #icon_url7010 is expected to allow :icon_url to be ‹"http://sandbox.com"›7011 is expected to allow :icon_url to be ‹"https://sandbox.com"›7012 is expected not to allow :icon_url to be ‹"123"›7013 is expected not to allow :icon_url to be ‹"sandbox.com"›7014 #ensure_at_least_one_field_supplied7015 rejects unfilled metadatum7016 #ensure_nuget_package_type7017 rejects if not linked to a nuget package7018LabelNote7019 when resource is issue7020 includes a link to the list of issues filtered by the label7021 behaves like label note created from events7022 .from_events7023 returns system note with expected attributes7024 updates markdown cache if reference is not set yet7025 updates markdown cache if label was deleted7026 returns html note7027 returns text note for added labels7028 returns text note for removed labels7029 returns text note for added and removed labels7030 returns text note for cross-project label7031 returns text note for cross-group label7032 when resource is merge request7033 includes a link to the list of merge requests filtered by the label7034 behaves like label note created from events7035 .from_events7036 returns system note with expected attributes7037 updates markdown cache if reference is not set yet7038 updates markdown cache if label was deleted7039 returns html note7040 returns text note for added labels7041 returns text note for removed labels7042 returns text note for added and removed labels7043 returns text note for cross-project label7044 returns text note for cross-group label7045gettext7046 # order random7047 :regenerate7048 when the locale folder is not found7049 raises an error7050 when the gitlab.pot file cannot be generated7051 prints an error7052 :lint7053 when all PO files are valid7054Linting po files: |============================================================|7055 completes without error7056 when there are invalid PO files7057Linting po files: |============================================================|7058 raises an error7059 when the .pot file is invalid7060Linting po files: |============================================================|7061 raises an error7062 :compile7063 creates a pot file and runs po-to-json conversion via node script7064 aborts with non-successful po-to-json conversion via node script7065AuthenticationEvent7066 associations7067 is expected to belong to user optional: true7068 validations7069 is expected to validate that :provider cannot be empty/falsy7070 is expected to validate that :user_name cannot be empty/falsy7071 is expected to validate that :result cannot be empty/falsy7072 is expected to allow :ip_address to be ‹"192.168.17.43"›7073 is expected to allow :ip_address to be ‹"2001:0db8:85a3:0000:0000:8a2e:0370:7334"›7074 is expected not to allow :ip_address to be ‹"invalid IP"›7075 scopes7076 .for_provider7077 returns events only for the specified provider7078 .ldap7079 returns all events for an LDAP provider7080 .providers7081 returns an array of distinct providers7082 .initial_login_or_known_ip_address?7083 on first login, when no record exists yet7084 is expected to eq true7085 on second login from the same ip address7086 is expected to eq true7087 on second login from another ip address7088 is expected to eq false7089 .most_used_ip_address_for_user7090 is expected to eq "::1"7091Gitlab::Ci::Config::Entry::Inherit::Default7092 validations7093 config: true, valid: true7094 is expected to eq true7095 config: false, valid: true7096 is expected to eq true7097 config: ["image"], valid: true7098 is expected to eq true7099 config: ["unknown"], valid: false7100 is expected to eq false7101 config: [:image], valid: false7102 is expected to eq false7103 config: [true], valid: false7104 is expected to eq false7105 config: "string", valid: false7106 is expected to eq false7107 #inherit?7108 config: true, inherit: true7109 is expected to eq true7110 config: false, inherit: false7111 is expected to eq false7112 config: ["image"], inherit: true7113 is expected to eq true7114 config: ["before_script"], inherit: false7115 is expected to eq false7116Gitlab::Middleware::HandleMalformedStrings7117 does not modify the env7118 in the URL7119 rejects null bytes7120 rejects escaped null bytes7121 rejects malformed strings7122 rejects escaped malformed strings7123 in authorization headers7124 does not reject correct non-basic-auth tokens7125 does not reject correct encoded password with special characters7126 behaves like rejecting invalid input7127 rejects problematic input in the password7128 rejects problematic input in the username7129 rejects problematic input in non-basic-auth tokens7130 behaves like rejecting invalid input7131 rejects problematic input in the password7132 rejects problematic input in the username7133 rejects problematic input in non-basic-auth tokens7134 behaves like rejecting invalid input7135 rejects problematic input in the password7136 rejects problematic input in the username7137 rejects problematic input in non-basic-auth tokens7138 in params7139 with null byte7140 gives up and does not reject too deeply nested params7141 behaves like checks params7142 rejects bad params in a top level param7143 rejects bad params for hashes with strings7144 rejects bad params for arrays with strings7145 rejects bad params for arrays containing hashes with string values7146 with malformed strings7147 behaves like checks params7148 rejects bad params in a top level param7149 rejects bad params for hashes with strings7150 rejects bad params for arrays with strings7151 rejects bad params for arrays containing hashes with string values7152 without problematic input7153 does not error for strings7154 does not error with no params7155Resolvers::Users::GroupsResolver7156 #resolve7157 when resolver object is current user7158 is expected to match [#<Group id:2240 @a-public-maintainer>, #<Group id:2241 @a-public-owner>, #<Group id:2238 @b-private-maintainer>, #<Group id:2239 @c-public-developer>, #<Group id:2237 @public-guest>]7159 when permission is :create_projects7160 is expected to match [#<Group id:2240 @a-public-maintainer>, #<Group id:2241 @a-public-owner>, #<Group id:2238 @b-private-maintainer>, #<Group id:2239 @c-public-developer>]7161 when permission is :transfer_projects7162 is expected to match [#<Group id:2240 @a-public-maintainer>, #<Group id:2241 @a-public-owner>, #<Group id:2238 @b-private-maintainer>]7163 when search is provided7164 is expected to match [#<Group id:2240 @a-public-maintainer>, #<Group id:2238 @b-private-maintainer>]7165 when resolver object is different from current user7166 is expected to be nil7167 when current_user is admin7168 is expected to match [#<Group id:2240 @a-public-maintainer>, #<Group id:2241 @a-public-owner>, #<Group id:2238 @b-private-maintainer>, #<Group id:2239 @c-public-developer>, #<Group id:2237 @public-guest>]7169Gitlab::Ci::Pipeline::Expression::Lexeme::Pattern7170 #initialize7171 when the value is a valid regular expression7172 initializes the pattern7173 when the value is a valid regular expression with escaped slashes7174 initializes the pattern7175 when the value is not a valid regular expression7176 raises an error7177 .build7178 creates a new instance of the token7179 raises an error if pattern is invalid7180 .build_and_evaluate7181 when the value is a valid regular expression7182 returns the value as a Gitlab::UntrustedRegexp7183 when the value is a Gitlab::UntrustedRegexp7184 returns the value itself7185 when the value is not a valid regular expression7186 returns the value itself7187 .type7188 is a value lexeme7189 .scan7190 correctly identifies a pattern token7191 does not allow to use an empty pattern7192 support single flag7193 support multiple flags7194 ignores unsupported flags7195 is an eager scanner for regexp boundaries7196 does not match on escaped regexp boundaries7197 recognizes \ as an escape character for /7198 does not recognize \ as an escape character for $7199 #evaluate7200 returns a regular expression7201 raises error if evaluated regexp is not valid7202Gitlab::Database::Transaction::Context7203 #set_start_time7204 sets start_time7205 #increment_savepoints7206 is expected to eq 27207 #increment_rollbacks7208 is expected to eq 37209 #increment_releases7210 is expected to eq 47211 #set_depth7212 is expected to eq 27213 #track_sql7214 is expected to eq ["SELECT 1", "SELECT * FROM users"]7215 #track_backtrace7216 is expected to be a kind of Array7217 is expected to all be a kind of Array7218 is expected to eq 17219 is expected to be a kind of String7220 appends the backtrace7221 #duration7222 is expected to be >= 07223 when savepoints count exceeds threshold7224 behaves like logs transaction data7225 logs once upon COMMIT7226 logs once upon ROLLBACK7227 logs again when log throttle duration passes7228 #should_log? returns true7229 when duration exceeds threshold7230 behaves like logs transaction data7231 logs once upon COMMIT7232 logs once upon ROLLBACK7233 logs again when log throttle duration passes7234 #should_log? returns true7235 when there are too many external HTTP requests7236 behaves like logs transaction data7237 logs once upon COMMIT7238 logs once upon ROLLBACK7239 logs again when log throttle duration passes7240 #should_log? returns true7241 when there are too many too long external HTTP requests7242 behaves like logs transaction data7243 logs once upon COMMIT7244 logs once upon ROLLBACK7245 logs again when log throttle duration passes7246 #should_log? returns true7247Pajamas::ToggleComponent7248 with defaults7249 renders a toggle container with provided class7250 does not set a name7251 sets default is-checked attributes7252 sets default disabled attributes7253 sets default is-loading attributes7254 does not set a label7255 does not set a label position7256 with custom options7257 sets the custom class7258 sets the custom name7259 sets the custom is-checked attributes7260 sets the custom disabled attributes7261 sets the custom is-loading attributes7262 sets the custom label7263 sets the custom label position7264 sets custom data attributes7265 with setting label_position7266 position: :top, count: 17267 is expected to have visible css "[data-label-position='top']"7268 position: :left, count: 17269 is expected to have visible css "[data-label-position='left']"7270 position: :hidden, count: 17271 is expected to have visible css "[data-label-position='hidden']"7272 position: :bogus, count: 07273 is expected to have visible css "[data-label-position='bogus']"7274 position: "bogus", count: 07275 is expected to have visible css "[data-label-position='bogus']"7276 position: nil, count: 07277 is expected to have visible css "[data-label-position='']"7278Sidebars::Groups::Menus::SettingsMenu7279 #render?7280 when user cannot admin group7281 returns false7282 Menu items7283 General menu7284 behaves like access rights checks7285 is expected not to be nil7286 when the user does not have access7287 is expected to be nil7288 Integrations menu7289 behaves like access rights checks7290 is expected not to be nil7291 when the user does not have access7292 is expected to be nil7293 Projects menu7294 behaves like access rights checks7295 is expected not to be nil7296 when the user does not have access7297 is expected to be nil7298 Access Tokens7299 behaves like access rights checks7300 is expected not to be nil7301 when the user does not have access7302 is expected to be nil7303 Repository menu7304 behaves like access rights checks7305 is expected not to be nil7306 when the user does not have access7307 is expected to be nil7308 CI/CD menu7309 behaves like access rights checks7310 is expected not to be nil7311 when the user does not have access7312 is expected to be nil7313 Applications menu7314 behaves like access rights checks7315 is expected not to be nil7316 when the user does not have access7317 is expected to be nil7318 Packages and registries7319 when packages feature is disabled7320 is expected to be nil7321 when packages feature is enabled7322 behaves like access rights checks7323 is expected not to be nil7324 when the user does not have access7325 is expected to be nil7326Gitlab::ImportExport::RemoteStreamUpload7327 #execute7328 when download request and upload request return 2007329 uploads the downloaded content7330 when upload method is put7331 uploads using the put method7332 when download request does not return 2007333 is expected to raise Gitlab::ImportExport::RemoteStreamUpload::StreamError with "Invalid response code while downloading file. Code: 404"7334 when upload request does not returns 2007335 is expected to raise Gitlab::ImportExport::RemoteStreamUpload::StreamError with "Invalid response code while uploading file. Code: 403"7336 when download URL is a local address7337 raises error7338 when local requests are allowed7339 raises does not error7340 when download URL is a local network7341 raises error7342 when local network requests are allowed7343 raises does not error7344 when upload URL is a local address7345 raises error7346 when local requests are allowed7347 raises does not error7348 when upload URL it is a request to local network7349 raises error7350 when local network requests are allowed7351 raises does not error7352 when upload URL resolves to a local address7353 raises error7354 Gitlab::ImportExport::RemoteStreamUpload::ChunkStream7355 StringIO#copy_stream compatibility7356 copies all chunks7357 with chunks smaller and bigger than buffer size7358 copies all chunks7359Gitlab::Database::PostgresPartitionedTable7360 associations7361 is expected to have many postgres_partitions7362 behaves like a postgres model7363 .by_identifier7364 finds the Gitlab::Database::PostgresPartitionedTable7365 raises an error if not found7366 raises ArgumentError if given a non-fully qualified identifier7367 #to_s7368 returns the name7369 #schema7370 returns the schema7371 #name7372 returns the name7373 .find_by_name_in_current_schema7374 finds the partitioned tables in the current schema by name7375 does not find partitioned tables in a different schema7376 .each_partition7377 without partitions7378 does not yield control7379 with partitions7380 yields control with partition as argument7381 #dynamic?7382 returns true for tables partitioned by range7383 returns true for tables partitioned by list7384 returns false for tables partitioned by hash7385 #static?7386 returns false for tables partitioned by range7387 returns false for tables partitioned by list7388 returns true for tables partitioned by hash7389 #strategy7390 returns the partitioning strategy7391 #key_columns7392 returns the partitioning key columns7393SnippetStatistics7394 is expected to belong to snippet required: false7395 is expected to validate that :snippet cannot be empty/falsy7396 #update_commit_count7397 updates the count of commits7398 when the snippet does not have a repository7399 returns 07400 #update_file_count7401 updates the count of files7402 when the snippet does not have a repository7403 returns 07404 #update_repository_size7405 updates the repository_size7406 when the snippet does not have a repository7407 returns 07408 #refresh!7409 retrieves and saves statistic data from repository7410 when the database is read-only7411 does nothing7412 with a PersonalSnippet7413 when creating7414 behaves like personal snippet statistics updates7415 schedules a namespace statistics worker7416 does not try to update project stats7417 when updating7418 behaves like personal snippet statistics updates7419 schedules a namespace statistics worker7420 does not try to update project stats7421 with a ProjectSnippet7422 does not call personal snippet callbacks7423 behaves like UpdateProjectStatistics7424 is expected to be a new record7425Issues::RebalancingWorker7426 has the `until_executed` deduplicate strategy7427 #perform7428 without root_namespace param7429 is labeled as idempotent7430 performs multiple times sequentially without raising an exception7431 is labeled as idempotent7432 performs multiple times sequentially without raising an exception7433 behaves like running the worker7434 runs an instance of Issues::RelativePositionRebalancingService7435 anticipates there being too many concurent rebalances7436 takes no action if the value is nil7437 does not schedule a new rebalance if it finished under 1h ago7438 behaves like safely handles non-existent ids7439 anticipates the inability to find the issue7440 with root_namespace param7441 is labeled as idempotent7442 performs multiple times sequentially without raising an exception7443 is labeled as idempotent7444 performs multiple times sequentially without raising an exception7445 behaves like running the worker7446 runs an instance of Issues::RelativePositionRebalancingService7447 anticipates there being too many concurent rebalances7448 takes no action if the value is nil7449 does not schedule a new rebalance if it finished under 1h ago7450 behaves like safely handles non-existent ids7451 anticipates the inability to find the issue7452Groups::GroupLinks::DestroyService#execute7453 when authorizing by user7454 single link7455 destroys the link7456 with skip_group_share_unlink_auth_refresh feature flag disabled7457 revokes project authorization7458 with skip_group_share_unlink_auth_refresh feature flag enabled7459 maintains project authorization7460 multiple links7461 with skip_group_share_unlink_auth_refresh feature flag disabled7462 updates project authorization once per group7463 with skip_group_share_unlink_auth_refresh feature flag enabled7464 does not update project authorization once per group7465 when skipping authorization7466 with provided group and owner7467 destroys the link7468 without providing group or owner7469 destroys the link7470layouts/_header_search7471 when doing a project level search7472 sets project_id field7473 behaves like hidden fields are properly set7474 when search_context has a scope value7475 sets scope input to issues7476 when search_context has a code_search value7477 sets search_code input to true7478 when search_context has a ref value7479 sets repository_ref input to test-branch7480 when search_context has a for_snippets value7481 sets for_snippets input to true7482 nav_source7483 always set to navbar7484 submit button7485 always renders for specs7486 when doing a group level search7487 sets group_id field7488 behaves like hidden fields are properly set7489 when search_context has a scope value7490 sets scope input to issues7491 when search_context has a code_search value7492 sets search_code input to true7493 when search_context has a ref value7494 sets repository_ref input to test-branch7495 when search_context has a for_snippets value7496 sets for_snippets input to true7497 nav_source7498 always set to navbar7499 submit button7500 always renders for specs7501Gitlab::JiraImport::Stage::ImportIssuesWorker7502 modules7503 behaves like include import workers modules7504 is expected to includes the ApplicationWorker module7505 is expected to includes the Gitlab::JiraImport::QueueOptions module7506 is expected to includes the Gitlab::JiraImport::ImportWorker module7507 #perform7508 when import did not start7509 behaves like cannot do Jira import7510 does not advance to next stage7511 behaves like does not advance to next stage7512 does not advance to next stage7513 when import started7514 when start_at is nil7515 behaves like advance to next stage7516 advances to attachments stage7517 when start_at is zero7518 behaves like advance to next stage7519 advances to issues stage7520 when start_at is greater than zero7521 behaves like advance to next stage7522 advances to issues stage7523 when start_at is below zero7524 behaves like advance to next stage7525 advances to attachments stage7526Users::InProductMarketingEmail7527 associations7528 is expected to belong to user required: false7529 validations7530 is expected to validate that :user cannot be empty/falsy7531 for a track+series email7532 is expected to validate that :track cannot be empty/falsy7533 is expected to validate that :series cannot be empty/falsy7534 is expected to validate that :user_id is case-sensitively unique within the scope of :track and :series, producing a custom validation error on failure7535 for a campaign email7536 is expected to validate that :campaign cannot be empty/falsy7537 is expected not to validate that :track cannot be empty/falsy7538 is expected not to validate that :series cannot be empty/falsy7539 is expected to validate that :user_id is case-sensitively unique within the scope of :campaign, producing a custom validation error on failure7540 is expected to validate that :campaign is ‹"build_ios_app_guide"›7541 when mixing campaign and track+series7542 is not valid7543 .without_track_and_series7544 when given track and series already exists7545 is expected to be empty7546 when track does not exist7547 is expected to eq [#<User id:1308 @user763>]7548 when series does not exist7549 is expected to eq [#<User id:1308 @user763>]7550 when no track or series for a user exists7551 is expected to eq [#<User id:1309 @user764>]7552 .without_campaign7553 when record for campaign already exists7554 is expected to contain exactly #<User id:1311 @user766>7555 when record for campaign does not exist7556 is expected to contain exactly #<User id:1310 @user765> and #<User id:1311 @user766>7557 .for_user_with_track_and_series7558 when record for user with given track and series exists7559 is expected to eq #<Users::InProductMarketingEmail id: 16, user_id: 1312, cta_clicked_at: nil, track: "create", series:...3-05-15 17:22:10.899498791 +0000", updated_at: "2023-05-15 17:22:10.899498791 +0000", campaign: nil>7560 when user is different7561 is expected to be nil7562 when track is different7563 is expected to be nil7564 when series is different7565 is expected to be nil7566 .save_cta_click7567 when there is no record7568 does not error7569 when there is no record for the track and series7570 does not perform an update7571 when there is a record for the track and series7572 saves the cta click date7573 cta_clicked_at is already set7574 does not update7575 .ACTIVE_TRACKS7576 has an entry for every track7577 does not include INACTIVE_TRACK_NAMES7578Gitlab::GithubImport::Importer::Events::ChangedAssignee7579 #execute7580 with Issue7581 behaves like process assigned & unassigned events7582 when importing an assigned event7583 behaves like create expected notes7584 creates expected note7585 creates expected system note metadata7586 when importing an unassigned event7587 behaves like create expected notes7588 creates expected note7589 creates expected system note metadata7590 with MergeRequest7591 behaves like process assigned & unassigned events7592 when importing an assigned event7593 behaves like create expected notes7594 creates expected note7595 creates expected system note metadata7596 when importing an unassigned event7597 behaves like create expected notes7598 creates expected note7599 creates expected system note metadata7600Banzai::Pipeline::DescriptionPipeline7601 uses a limited allowlist7602 removes 'pre' elements7603 removes 'code' elements7604 removes 'img' elements7605 removes 'ol' elements7606 removes 'ul' elements7607 removes 'li' elements7608 still allows 'b' elements7609 still allows 'i' elements7610 still allows 'strong' elements7611 still allows 'em' elements7612 still allows 'a' elements7613 still allows 'ins' elements7614 still allows 'del' elements7615 still allows 'sup' elements7616 still allows 'sub' elements7617 still allows 'p' elements7618Gitlab::WebHooks::RecursionDetection7619 .set_from_headers7620 when the detection header is present7621 sets the request UUID value from the headers7622 when detection header is not present7623 does not set the request UUID7624 .set_request_uuid7625 sets the request UUID value7626 .register!7627 stores IDs in the same cache when a request UUID is set, until the request UUID changes7628 stores IDs in unique caches when no request UUID is present7629 touches the storage ttl each time it is called7630 block?7631 returns false if webhook should not be blocked7632 when the webhook has previously fired7633 returns true7634 when the request UUID changes again7635 returns false7636 when the count limit has been reached7637 returns true7638 when the request UUID changes again7639 returns false7640 .header7641 returns a header with the UUID value7642 .to_log7643 returns the UUID value and all registered webhook IDs in a Hash7644Gitlab::Security::ScanConfiguration7645 #available?7646 with a core scanner7647 type: :sast7648 is expected to be truthy7649 type: :sast_iac7650 is expected to be truthy7651 type: :secret_detection7652 is expected to be truthy7653 type: :container_scanning7654 is expected to be truthy7655 with custom scanner7656 is expected to be falsey7657 #configured?7658 is expected to be falsey7659 #configuration_path7660 is expected to be nil7661 #meta_info_path7662 is expected to be nil7663 #can_enable_by_merge_request?7664 with a core scanner7665 type: :sast7666 is expected to be truthy7667 type: :sast_iac7668 is expected to be truthy7669 type: :secret_detection7670 is expected to be truthy7671 with a custom scanner7672 is expected to be falsey7673Gitlab::SidekiqConfig7674 .workers7675 includes all workers7676 .cron_jobs7677 renames job_class to class and removes incomplete jobs7678 .worker_queues7679 includes all queues7680 .workers_for_all_queues_yml7681 returns a tuple with FOSS workers first7682 .all_queues_yml_outdated?7683 returns true if the YAML file does not match the application code7684 returns false if the YAML file matches the application code7685 .queues_for_sidekiq_queues_yml7686 returns queues and weights, aggregating namespaces with the same weight7687 .sidekiq_queues_yml_outdated?7688 returns true if the YAML file does not match the application code7689 returns false if the YAML file matches the application code7690 .worker_queue_mappings7691 returns the worker class => queue mappings based on the current routing configuration7692 .current_worker_queue_mappings7693 returns worker queue mappings that have queues in the current Sidekiq options7694 .routing_queues7695 returns worker queue mappings that have queues in the current Sidekiq options7696Ci::CompareTestReportsService7697 #execute7698 when head pipeline has test reports7699 returns status and data7700 when base and head pipelines have test reports7701 returns status and data7702 when head pipeline has corrupted test reports7703 returns a parsed TestReports success status and failure on the individual suite7704 test failure history7705 loads recent failures on limited test cases to avoid building up a huge DB query7706Gitlab::ErrorTracking7707 # order random7708 .track_and_raise_exception7709 always raises the exception7710 calls Gitlab::ErrorTracking::Logger.error with formatted payload7711 .track_and_raise_for_dev_exception7712 when exceptions for dev should be raised7713 raises the exception7714 when exceptions for dev should not be raised7715 logs the exception with all attributes passed7716 calls Gitlab::ErrorTracking::Logger.error with formatted payload7717 event processors7718 with custom GitLab context when using Raven.capture_exception directly7719 merges a default set of tags into the existing tags7720 merges the current user information into the existing user information7721 with custom GitLab context when using Sentry.capture_exception directly7722 merges a default set of tags into the existing tags7723 merges the current user information into the existing user information7724 with sidekiq args7725 when the args does not have anything sensitive7726 ensures extra.sidekiq.args is a string7727 does not filter parameters when sending to Sentry7728 when the args has sensitive information7729 filters sensitive arguments before sending and logging7730 when the error is a GRPC error7731 when the GRPC error contains a debug_error_string value7732 sets the GRPC debug error string in the Sentry event and adds a custom fingerprint7733 when the GRPC error does not contain a debug_error_string value7734 does not do any processing on the event7735 when exception is excluded7736 with Gitlab::SidekiqMiddleware::RetryError exception7737 does not report exception to Sentry7738 with SubclassRetryError exception7739 does not report exception to Sentry7740 when processing invalid URI exceptions7741 when the error is a URI::InvalidURIError7742 filters the URI from the error message7743 when the error is a Addressable::URI::InvalidURIError7744 filters the URI from the error message7745 when request contains sensitive information7746 filters sensitive data7747 Sentry performance monitoring7748 when ENABLE_SENTRY_PERFORMANCE_MONITORING env is disabled7749 does not set traces_sample_rate7750 when ENABLE_SENTRY_PERFORMANCE_MONITORING env is enabled7751 sets traces_sample_rate7752 .log_and_raise_exception7753 only logs and raises the exception7754 when extra details are provided7755 filters parameters7756 .track_exception7757 calls Raven.capture_exception7758 calls Gitlab::ErrorTracking::Logger.error with formatted payload7759 with filterable parameters7760 filters parameters7761 when the exception implements :sentry_extra_data7762 includes the extra data from the exception in the tracking information7763 when the exception implements :sentry_extra_data, which returns nil7764 just includes the other extra info7765Ci::Runners::UnassignRunnerService#execute7766 without user7767 does not destroy runner_project7768 with unauthorized user7769 does not call destroy on runner_project7770 with admin user7771 with destroy returning false7772 returns error response7773 with destroy returning true7774 returns success response7775Gitlab::AlertManagement::Fingerprint7776 .generate7777 when data is an array7778 returns the hashed fingerprint7779 with a variety of data7780 data: 1117781 performs like a hashed fingerprint7782 data: "fingerprint"7783 performs like a hashed fingerprint7784 data: :fingerprint7785 performs like a hashed fingerprint7786 data: true7787 performs like a hashed fingerprint7788 when data is a hash7789 behaves like fingerprinted Hash7790 performs like a hashed fingerprint7791 hashes with different order7792 calculates the same result7793 hash is too large7794 raises an error7795Gitlab::Database::SchemaValidation::TrackInconsistency7796 # order random7797 #execute7798 when is not GitLab.com7799 does not create a schema inconsistency record7800 when the issue creation fails7801 does not create a schema inconsistency record7802 when a new inconsistency is found7803 creates a new schema inconsistency record7804 when the schema inconsistency already exists7805 does not create a schema inconsistency record7806ErrorTracking::ListIssuesService7807 #execute7808 Sentry backend7809 with authorized user7810 returns the issues with resolved issue_status7811 returns the issues with unresolved issue_status7812 returns the issues with ignored issue_status7813 returns the issues with no issue_status7814 returns bad request for an issue_status not on the whitelist7815 when list_sentry_issues returns nil7816 result is not ready7817 when list_sentry_issues returns error7818 returns the error7819 when list_sentry_issues returns error with http_status7820 returns the error with correct http_status7821 with unauthorized user7822 returns error7823 with error tracking disabled7824 raises error7825 GitLab backend7826 returns the error in expected format7827 #external_url7828 calls the project setting sentry_external_url7829BulkImports::ExportStatus7830 #started?7831 when export status is started7832 returns true7833 when export status is not started7834 returns false7835 when export status is not present7836 returns false7837 when something goes wrong during export status fetch7838 returns false7839 #failed?7840 when export status is failed7841 returns true7842 when export status is not failed7843 returns false7844 when export status is not present7845 returns false7846 when something goes wrong during export status fetch7847 returns false7848 #empty?7849 when export status is present7850 is expected to eq false7851 when export status is not present7852 returns true7853 when export status is empty7854 returns true7855 when something goes wrong during export status fetch7856 returns false7857 #error7858 returns error message7859 when something goes wrong during export status fetch7860 raises RetryPipelineError7861 when error is not retriable7862 returns exception class as error7863 when error raised is not a network error7864 returns exception class as error7865PagesDomains::CreateAcmeOrderService7866 saves order to database before requesting validation7867 generates and saves private key7868 properly saves order attributes7869 properly saves challenge attributes7870ProjectCacheWorker7871 #perform7872 with a non-existing project7873 does nothing7874 with an existing project without a repository7875 updates statistics but does not refresh the method cashes7876 with an existing project7877 refreshes the method caches7878 with statistics disabled7879 does not update the project statistics7880 with statistics7881 updates the project statistics7882 with plain readme7883 refreshes the method caches7884 #update_statistics7885 when a lease could not be obtained7886 does not update the project statistics7887 when a lease could be obtained7888 updates the project statistics twice7889 behaves like an idempotent worker7890 is labeled as idempotent7891 performs multiple times sequentially without raising an exception7892 calls Projects::UpdateStatisticsService service twice7893BulkUpdateIntegrationService7894 works with batch as an ActiveRecord::Relation7895 works with batch as an array of ActiveRecord objects7896 with inherited integration7897 updates the integration7898 does not change the created_at timestamp7899 sets the updated_at timestamp to the current time7900 with integration with data fields7901 updates the data fields from the integration7902 does not change the created_at timestamp7903 sets the updated_at timestamp to the current time7904 with different foreign key of data_fields7905 works with batch as an array of ActiveRecord objects7906Gitlab::Harbor::Client7907 #initialize7908 if integration is nil7909 raises ConfigError7910 integration is provided7911 is initialized successfully7912 #get_repositories7913 with valid params7914 get repositories7915 when harbor project does not exist7916 raises Gitlab::Harbor::Client::Error7917 with invalid response7918 raises Gitlab::Harbor::Client::Error7919 #get_artifacts7920 with valid params7921 get artifacts7922 when harbor repository does not exist7923 raises Gitlab::Harbor::Client::Error7924 with invalid response7925 raises Gitlab::Harbor::Client::Error7926 #get_tags7927 with valid params7928 get tags7929 when harbor artifact does not exist7930 raises Gitlab::Harbor::Client::Error7931 with invalid response7932 raises Gitlab::Harbor::Client::Error7933 #check_project_availability7934 calls api/v2.0/projects successfully7935Gitlab::UsageDataCounters::WorkItemActivityUniqueCounter7936 .track_work_item_created_action7937 behaves like work item unique counter7938 when track_work_items_activity FF is enabled7939 tracks a unique event only once7940 when author is nil7941 behaves like counter that does not track the event7942 does not track the event7943 when track_work_items_activity FF is disabled7944 behaves like counter that does not track the event7945 does not track the event7946 .track_work_item_title_changed_action7947 behaves like work item unique counter7948 when track_work_items_activity FF is enabled7949 tracks a unique event only once7950 when author is nil7951 behaves like counter that does not track the event7952 does not track the event7953 when track_work_items_activity FF is disabled7954 behaves like counter that does not track the event7955 does not track the event7956 .track_work_item_date_changed_action7957 behaves like work item unique counter7958 when track_work_items_activity FF is enabled7959 tracks a unique event only once7960 when author is nil7961 behaves like counter that does not track the event7962 does not track the event7963 when track_work_items_activity FF is disabled7964 behaves like counter that does not track the event7965 does not track the event7966 .track_work_item_labels_changed_action7967 behaves like work item unique counter7968 when track_work_items_activity FF is enabled7969 tracks a unique event only once7970 when author is nil7971 behaves like counter that does not track the event7972 does not track the event7973 when track_work_items_activity FF is disabled7974 behaves like counter that does not track the event7975 does not track the event7976 .track_work_item_milestone_changed_action7977 behaves like work item unique counter7978 when track_work_items_activity FF is enabled7979 tracks a unique event only once7980 when author is nil7981 behaves like counter that does not track the event7982 does not track the event7983 when track_work_items_activity FF is disabled7984 behaves like counter that does not track the event7985 does not track the event7986StubMethodCalls7987 #stub_method7988 stubs the method response7989 when calling it on an already stubbed method7990 stubs correctly7991 methods that accept arguments7992 stubs correctly7993 methods that use named arguments7994 stubs correctly7995 stubbing non-existent method7996 stubs correctly7997 #restore_original_method7998 restores original behaviour7999 method is not stubbed8000 is expected to raise NotImplementedError with "some_other_method has not been stubbed on #<Class:0x00007fa9e12acd48>"8001 #restore_original_methods8002 restores original behaviour8003Mail STARTTLS patch8004 # order random8005 ssl: false, tls: false, enable_starttls: false, enable_starttls_auto: nil, smtp_tls: false, smtp_starttls_mode: false8006 sets TLS and STARTTLS settings properly8007 ssl: true, tls: nil, enable_starttls: nil, enable_starttls_auto: nil, smtp_tls: true, smtp_starttls_mode: false8008 sets TLS and STARTTLS settings properly8009 ssl: nil, tls: false, enable_starttls: nil, enable_starttls_auto: true, smtp_tls: false, smtp_starttls_mode: :auto8010 sets TLS and STARTTLS settings properly8011 when enable_starttls and tls are enabled8012 raises an argument exception8013 ssl: false, tls: nil, enable_starttls: :always, enable_starttls_auto: nil, smtp_tls: false, smtp_starttls_mode: :always8014 sets TLS and STARTTLS settings properly8015 ssl: nil, tls: false, enable_starttls: nil, enable_starttls_auto: nil, smtp_tls: false, smtp_starttls_mode: :auto8016 sets TLS and STARTTLS settings properly8017 ssl: false, tls: nil, enable_starttls: false, enable_starttls_auto: false, smtp_tls: false, smtp_starttls_mode: false8018 sets TLS and STARTTLS settings properly8019 ssl: false, tls: false, enable_starttls: true, enable_starttls_auto: false, smtp_tls: false, smtp_starttls_mode: :always8020 sets TLS and STARTTLS settings properly8021 ssl: false, tls: nil, enable_starttls: :auto, enable_starttls_auto: nil, smtp_tls: false, smtp_starttls_mode: :auto8022 sets TLS and STARTTLS settings properly8023BadgesHelper8024 #gl_badge_tag8025 creates a badge with given text8026 adds style classes8027 adds custom classes8028 applies custom html attributes8029 block content8030 renders block content8031 changes the function signature8032 variants8033 defaults to muted8034 falls back to default given an unknown variant8035 variant: :muted8036 sets the variant class8037 variant: :neutral8038 sets the variant class8039 variant: :info8040 sets the variant class8041 variant: :success8042 sets the variant class8043 variant: :warning8044 sets the variant class8045 variant: :danger8046 sets the variant class8047 sizes8048 defaults to md8049 falls back to default given an unknown size8050 size: :sm8051 sets the size class8052 size: :md8053 sets the size class8054 size: :lg8055 sets the size class8056 icons8057 with text8058 renders an icon8059 adds a spacing class and any custom classes to the icon8060 icon only8061 adds an img role to element8062 adds aria-label to element8063 does not add a spacing class to the icon8064 given an href8065 creates a badge link8066Banzai::Filter::WikiLinkFilter8067 doesn't rewrite absolute links8068 doesn't rewrite links to project uploads8069 when links are rewritable8070 stores original url in the data-canonical-src attribute8071 when links are not rewritable8072 does not store original url in the data-canonical-src attribute8073 when links point to the relative wiki path8074 does not rewrite links8075 does not rewrite links to old relative wiki path8076 when links point to the uploads folder8077 with an "a" html tag8078 rewrites links8079 with "img" html tag8080 inside an "a" html tag8081 rewrites links8082 outside an "a" html tag8083 rewrites links8084 with "video" html tag8085 rewrites links8086 with "audio" html tag8087 rewrites links8088 invalid links8089 doesn't rewrite invalid invalid_links like http://:80808090 doesn't rewrite invalid invalid_links like http://8091 doesn't rewrite invalid invalid_links like http://:8080/path8092Graphql::Arguments8093 returns a blank string if the arguments are blank8094 returns a serialized arguments if the arguments are not blank8095 supports merge with +8096 supports merge with + and a string8097 supports merge with + and a string when empty8098 supports merge with + and an empty string8099 serializes all values correctly8100Deployments::CreateService8101 #execute8102 creates a deployment8103 does not change the status if no status is given8104 when the last deployment has the same parameters8105 does not create a new deployment8106 #deployment_attributes8107 only includes attributes that we want to persist8108BitbucketServer::Representation::Activity8109 regular comment8110 is expected to be truthy8111 is expected to be falsey8112 is expected to be a kind of BitbucketServer::Representation::Comment8113 is expected to be a kind of Time8114 inline comment8115 is expected to be truthy8116 is expected to be truthy8117 is expected to be a kind of BitbucketServer::Representation::PullRequestComment8118 is expected to be a kind of Time8119 merge event8120 is expected to be falsey8121 is expected to be falsey8122 is expected to eq "root"8123 is expected to eq "test.user@example.com"8124 is expected to be a kind of Time8125 is expected to be a kind of Time8126 is expected to eq "839fa9a2d434eb697815b8fcafaecc51accfdbbc"8127TasksToBeDone::BaseService8128 no existing task issue8129 creates an issue8130 an open issue with the same label already exists8131 assigns the user to the existing issue8132tokens rake tasks8133 reset_all_email task8134 changes the incoming email token8135 reset_all_feed task8136 changes the feed token for the user8137Gitlab::Config::Entry::ComposableHash8138 when ComposableHash is instantiated8139 behaves like composes a hash8140 #valid?8141 is valid8142 is invalid8143 is expected not to be valid8144 #value8145 when config is a hash8146 returns key value8147 #compose!8148 composes child entry with configured value8149 composes child entries with configured values8150 #descendants8151 creates descendant nodes8152 when ComposableHash entry is configured in the parent class8153 creates entry with configuration from parent class8154 behaves like composes a hash8155 #valid?8156 is valid8157 is invalid8158 is expected not to be valid8159 #value8160 when config is a hash8161 returns key value8162 #compose!8163 composes child entry with configured value8164 composes child entries with configured values8165 #descendants8166 creates descendant nodes8167Terraform-Module.gitlab-ci.yml8168 # order random8169 the created pipeline8170 when on default branch8171 behaves like on any branch8172 creates fmt and kics job8173 does not create a deploy job8174 when outside the default branch8175 behaves like on any branch8176 creates fmt and kics job8177 does not create a deploy job8178 when on tag8179 creates fmt and deploy job8180Environments::AutoDeleteCronWorker8181 #perform8182 deletes the environment8183 when environment is not stopped8184 does not delete the environment8185 when auto_delete_at is null8186 does not delete the environment8187 with multiple deletable environments8188 deletes all deletable environments8189 when loop reached loop limit8190 deletes only one deletable environment8191 when batch size is less than the number of environments8192 deletes all deletable environments8193 with multiple deployments8194 deletes the deployment records and refs8195 when loop reached timeout8196 does not delete the environment8197 with idempotent flag8198 is labeled as idempotent8199 performs multiple times sequentially without raising an exception8200 deletes the environment8201DeclarativeEnum8202 .key8203 when the argument is set8204 changes the key8205 when the argument is `nil`8206 is expected to eq :my_enum8207 .name8208 when the argument is set8209 changes the name8210 when the argument is `nil`8211 is expected to eq "MyEnumName"8212 .description8213 when the argument is set8214 changes the description8215 when the argument is `nil`8216 is expected to eq "Enum description"8217 .define8218 when there is a block given8219 when the given block tries to register the same key8220 raises a `KeyCollisionError`8221 when the given block does not try to register the same key8222 appends the new definition8223 when there is no block given8224 raises a LocalJumpError8225 .definition8226 is expected to eq {:bar=>{:description=>"description of bar", :value=>1}, :foo=>{:description=>"description of foo", :value=>0}}8227 extending the enum module8228 extends the values of the base enum module8229gitlab:feature_categories:index8230 # order random8231 outputs objects by stage group8232BulkImports::Common::Pipelines::WikiPipeline8233 #run8234 behaves like wiki pipeline imports a wiki for an entity8235 #run8236 when wiki exists8237 imports new wiki into destination project8238 when wiki does not exist8239 does not import wiki8240 when scheme is blocked8241 prevents import8242 when wiki is disabled8243 unsuccessful response8244 when response is forbidden8245 does not raise an error8246 when response is not found8247 does not raise an error8248 when response is not 4038249 marks tracker as failed8250Gitlab::Ci::Status::Build::Manual8251 #illustration8252 is expected to include :image, :size, :title, and :content8253 when the user can trigger the job8254 when the job has not been played8255 instructs the user about possible actions8256 when the job is retryable8257 instructs the user about possible actions8258 when the user can not trigger the job because of outdated deployment8259 is expected to match /This deployment job does not run automatically and must be started manually, but it's older than the latest deployment, and therefore can't run/8260 when the user can not trigger the job due to another reason8261 informs the user8262 .matches?8263 when build is manual8264 is a correct match8265 when build is not manual8266 does not match8267BlobViewer::Changelog8268 #render_error8269 when there are no tags8270 returns :no_tags8271 when there are tags8272 returns nil8273Ci::Partitionable8274 # order random8275 with through options8276 is expected to eq :_test_table_name8277 is expected to eq :some_flag8278 is expected to include Ci::Partitionable::Switch8279 with partitioned options8280 when partitioned is true8281 is expected to include PartitionedTable8282 is expected to be a kind of Gitlab::Database::Partitioning::CiSlidingListStrategy8283 is expected to eq :partition_id8284 when partitioned is false8285 is expected not to include PartitionedTable8286 is expected not to respond to #partitioning_strategy8287 partitionable models inclusion8288 raises an exception8289 when is included in the models list8290 does not raise exceptions8291Gitlab::ReactiveCacheSetCache8292 #cache_key8293 includes the suffix8294 #read8295 is expected to be empty8296 after item added8297 is expected to contain exactly "test_item"8298 #write8299 writes the value to the cache8300 sets the expiry of the set8301 #clear_cache!8302 when featuer flag disabled8303 behaves like clears cache8304 deletes the cached items8305 behaves like clears cache8306 deletes the cached items8307 #include?8308 is expected to equal false8309 item added8310 is expected to equal true8311 count8312 is expected to equal 08313 item added8314 is expected to equal 18315Gitlab::GithubImport::Stage::ImportAttachmentsWorker8316 # order random8317 #import8318 imports attachments8319 when stage is disabled8320 skips release attachments import and calls next stage8321InstanceClusterablePresenter8322 #connect_path8323 is expected to eq "/admin/clusters/connect"8324 #clear_cluster_cache_path8325 is expected to eq "/admin/clusters/41/clear_cache"8326 #metrics_dashboard_path8327 is expected to eq "/admin/clusters/44/metrics_dashboard"8328 #learn_more_link8329 is expected to include "user/instance/clusters/index"8330LooseForeignKeys::CleanerService8331 when invalid foreign key definition is passed8332 when invalid on_delete argument was given8333 raises KeyError8334 query generation8335 when single primary key is used8336 generates an IN query for nullifying the rows8337 generates an IN query for deleting the rows8338 when composite primary key is used8339 generates an IN query for deleting the rows8340 when the query generation is incorrect (paranoid check)8341 raises error if the foreign key condition is missing8342 when with_skip_locked parameter is true8343 generates a query with the SKIP LOCKED clause8344Atlassian::JiraConnect::Serializers::BuildEntity8345 when the pipeline does not belong to any Jira issue8346 #issue_keys8347 is empty8348 #to_json8349 can encode the object8350 is invalid, since it has no issue keys8351 when the pipeline does belong to a Jira issue8352 because it belongs to an MR with a jira_branch8353 #issue_keys8354 is not empty8355 #to_json8356 is valid according to the build info schema8357 because it belongs to an MR with a jira_title8358 #issue_keys8359 is not empty8360 #to_json8361 is valid according to the build info schema8362 because it belongs to an MR with a jira_description8363 #issue_keys8364 is not empty8365 #to_json8366 is valid according to the build info schema8367 in the pipeline's commit message8368 #issue_keys8369 is expected to contain exactly "PROJ-1234"8370 #to_json8371 is expected to be valid json and match schema {"additionalProperties"=>false, "properties"=>{"buildNumber"=>{"type"=>"integer"}, "displayName"=>{"t...splayName", "url", "state", "issueKeys", "testInfo", "references", "lastUpdated"], "type"=>"object"}8372IncidentManagement::IssuableEscalationStatuses::CreateService8373 # order random8374 creates an escalation status for the incident with no policy set8375 existing escalation status8376 exits without changing anything8377Sidebars::YourWork::Menus::TodosMenu8378 # order random8379 #pill_count8380 returns the todos_pending_count of the user8381 memoizes the query8382 #has_pill?8383 when count is zero8384 returns false8385 when count is larger than zero8386 returns true8387Gitlab::SidekiqMiddleware::WorkerContext::Client8388 #call8389 applies a context for jobs scheduled in batch8390 root_caller_id8391 uses caller_id of the current context8392 uses root_caller_id instead of caller_id of the current context8393 when the feature category is set in the context_proc8394 takes the feature category from the worker, not the caller8395 takes the feature category from the caller if the worker is not owned8396 does not set any explicit feature category for mailers8397 when the feature category is already set in the surrounding block8398 takes the feature category from the worker, not the caller8399 takes the feature category from the caller if the worker is not owned8400Gitlab::GithubImport::SingleEndpointNotesImporting8401 #parent_collection8402 is expected to raise NotImplementedError8403 #parent_imported_cache_key8404 is expected to raise NotImplementedError8405 #page_counter_id8406 is expected to raise NotImplementedError8407Ci::BuildTraceChunkFlushWorker8408 migrates chunk to a permanent store8409 #perform8410 behaves like an idempotent worker8411 is labeled as idempotent8412 performs multiple times sequentially without raising an exception8413 migrates build trace chunk to a safe store8414WebHooks::LogDestroyService8415 #execute8416 with system hook8417 behaves like deletes web hook logs for hook8418 deletes the logs8419 when the data-set exceeds the batch size8420 deletes the logs8421 when it encounters an error8422 reports the error8423 with project hook8424 behaves like deletes web hook logs for hook8425 deletes the logs8426 when the data-set exceeds the batch size8427 deletes the logs8428 when it encounters an error8429 reports the error8430WorkItems::WidgetDefinition8431 # order random8432 #widget_class8433 returns widget class based on widget_type8434 returns nil if there is no class for the widget_type8435 returns nil if there is no class for the widget_type8436 validations8437 is expected to validate that :name cannot be empty/falsy8438 is expected to validate that :name is case-insensitively unique within the scope of :namespace_id and :work_item_type_id8439 is expected to validate that the length of :name is at most 2558440 associations8441 is expected to belong to namespace required: false8442 is expected to belong to work_item_type required: false8443 with some widgets disabled8444 .available_widgets8445 returns all global widgets excluding the disabled ones8446 returns all global widgets if there is at least one global widget definition which is enabled8447 .widget_classes8448 returns all widget classes no matter if disabled or not8449Gitlab::Metrics::GlobalSearchSlis8450 # order random8451 #record_error_rate8452 calls increment on the error rate SLI8453 #record_apdex8454 search_type: "basic", code_search: false, duration_target: 8.8128455 increments the global_search SLI as a success if the elapsed time is within the target8456 increments the global_search SLI as a failure if the elapsed time is not within the target8457 search_type: "basic", code_search: true, duration_target: 27.5388458 increments the global_search SLI as a success if the elapsed time is within the target8459 increments the global_search SLI as a failure if the elapsed time is not within the target8460 search_type: "advanced", code_search: false, duration_target: 2.4528461 increments the global_search SLI as a success if the elapsed time is within the target8462 increments the global_search SLI as a failure if the elapsed time is not within the target8463 search_type: "advanced", code_search: true, duration_target: 15.528464 increments the global_search SLI as a success if the elapsed time is within the target8465 increments the global_search SLI as a failure if the elapsed time is not within the target8466 #initialize_slis!8467 initializes Apdex SLIs for global_search8468 initializes ErrorRate SLIs for global_search8469 when initializeing for limited types8470 api: true, web: true8471 only initializes for the relevant endpoints8472 api: true, web: false8473 only initializes for the relevant endpoints8474 api: false, web: true8475 only initializes for the relevant endpoints8476 api: false, web: false8477 only initializes for the relevant endpoints8478Types::WorkItemType8479 is expected to eq "WorkItem"8480 is expected to require graphql authorizations :read_work_item8481 is expected to expose permissions using Types::PermissionTypes::WorkItem8482 has specific fields8483Gitlab::WikiPages::FrontMatterParser8484 #parse8485 there is front matter8486 is expected to have attributes {:content => "This is the content\n", :error => (be nil), :front_matter => (include {:a => 1, :b => 2, :c => ["foo", "bar"]})}8487 there is no content8488 is expected to have attributes {:content => "", :error => (be nil), :front_matter => {}}8489 there is no front_matter8490 is expected to have attributes {:content => "This is the content", :front_matter => (be empty)}8491 is expected to have attributes {:reason => :no_match}8492 the feature flag is disabled8493 is expected to have attributes {:content => "---\na: 1\nb: 2\nc:\n - foo\n - bar\ndate: I am safe. Not actually a date\n---\nThis is the content\n", :front_matter => (be empty)}8494 the feature flag is enabled for the gated object8495 is expected to have attributes {:content => "This is the content\n", :front_matter => (include {:a => 1, :b => 2, :c => ["foo", "bar"]}), :reason => (be nil)}8496 the end divider is ...8497 is expected to have attributes {:front_matter => (include {:a => 1, :b => 2, :c => ["foo", "bar"]})}8498 the front-matter is not a mapping8499 is expected to have attributes {:reason => :not_mapping}8500 there is nothing in the front-matter block8501 is expected to have attributes {:reason => :no_match}8502 there is a string in the YAML block8503 is expected to have attributes {:reason => :not_mapping}8504 there is dangerous YAML in the block8505 is expected to have attributes {:error => (be present), :reason => :parse_error}8506 there is acceptably long YAML in the front-matter block8507 is expected to have attributes {:front_matter => (include {:title => (be present)})}8508 there is suspiciously long YAML in the front-matter block8509 is expected to have attributes {:reason => :too_long}8510 TOML front matter8511 is expected to have attributes {:reason => :not_yaml}8512 TOML style fences, advertised as YAML8513 is expected to have attributes {:front_matter => (include {:title => "My title"})}8514 YAML, advertised as something else8515 is expected to have attributes {:reason => :not_yaml}8516 there is text content in the YAML block, in comments8517 is expected to have attributes {:front_matter => (include {:foo => 1})}8518 there is text content in the YAML block8519 is expected to have attributes {:reason => :not_mapping}8520Banzai::Filter::InlineGrafanaMetricsFilter8521 behaves like a metrics embed filter8522 when the document has an external link8523 leaves regular non-metrics links unchanged8524 when the document contains an embeddable link8525 leaves the original link unchanged8526 appends a metrics charts placeholder8527 in a paragraph8528 appends a metrics charts placeholder after the enclosing paragraph8529 when metrics dashboard feature is unavailable8530 does not append a metrics chart placeholder8531 when grafana is not configured8532 leaves the markdown unchanged8533 when "panelId" parameter is missing8534 behaves like a metrics embed filter8535 when the document has an external link8536 leaves regular non-metrics links unchanged8537 when the document contains an embeddable link8538 leaves the original link unchanged8539 appends a metrics charts placeholder8540 in a paragraph8541 appends a metrics charts placeholder after the enclosing paragraph8542 when metrics dashboard feature is unavailable8543 does not append a metrics chart placeholder8544 when time window parameters are missing8545 sets the window to the last 8 hrs8546 when "to" parameter is missing8547 sets "to" to 8 hrs after "from"8548 when "from" parameter is missing8549 sets "from" to 8 hrs before "to"8550 when no parameters are provided8551 inserts a placeholder8552Packages::Rubygems::CreateDependenciesService8553 #execute8554 creates dependencies8555 links dependencies to the package8556Banzai::Filter::AbsoluteLinkFilter8557 with html links8558 if only_path is false8559 has the .gfm class8560 converts a relative url into absolute8561 does not change the url if it already absolute8562 if relative_url_root is set8563 joins the url without doubling the path8564 has not the .gfm class8565 does not convert a relative url into absolute8566 if only_path is not false8567 does not convert a relative url into absolute8568Gitlab::GithubImport::Representation::Collaborator8569 # order random8570 .from_json_hash8571 behaves like a Collaborator8572 returns an instance of Collaborator8573 with Collaborator8574 includes the user ID8575 includes the username8576 includes the role8577 #github_identifiers8578 returns a hash with needed identifiers8579 .from_api_response8580 behaves like a Collaborator8581 returns an instance of Collaborator8582 with Collaborator8583 includes the user ID8584 includes the username8585 includes the role8586 #github_identifiers8587 returns a hash with needed identifiers8588CookiesHelper8589 #set_secure_cookie8590 creates an encrypted cookie with expected attributes8591 creates a permanent cookie with expected attributes8592 creates a regular cookie with expected attributes8593X509CertificateRevokeWorker8594 #perform8595 with a revoked certificate8596 is labeled as idempotent8597 performs multiple times sequentially without raising an exception8598 executes the revoke service8599 executes the revoke service8600GoogleCloud::EnableCloudsqlService8601 when a project does not have any GCP_PROJECT_IDs configured8602 creates GCP_PROJECT_ID project var8603 when a project has GCP_PROJECT_IDs configured8604 enables cloudsql, compute and service networking Google APIs8605 when Google APIs raise an error8606 returns error result8607BulkInsertableAssociations8608-- create_table(:_test_bulk_parents, {:force=>true})8609 -> 0.0120s8610-- create_table(:_test_bulk_foos, {:force=>true})8611 -> 0.0095s8612-- create_table(:_test_bulk_bars, {:force=>true})8613 -> 0.0049s8614-- create_table(:_test_simple_bars, {:force=>true})8615 -> 0.0046s8616 saving bulk insertable associations8617 can disable bulk-inserts within a bulk-insert block8618 when items already have IDs8619 stores nothing and raises an error8620 when items have no IDs set8621 stores them all and updates items with IDs8622 when items are empty8623 does nothing8624 when relation name does not match class name8625 stores them all8626 with multiple threads8627 isolates bulk insert behavior between threads8628 with multiple associations8629 isolates writes between associations8630 passing bulk insert arguments8631 disables validations on target association8632 when association is not bulk-insert safe8633 saves it normally8634 when association is not has_many8635 saves it normally8636 when an item is not valid8637 .save8638 invalidates the parent and returns false8639 .save!8640 invalidates the parent and raises error8641-- drop_table(:_test_bulk_foos, {:force=>true})8642 -> 0.0205s8643-- drop_table(:_test_bulk_bars, {:force=>true})8644 -> 0.0023s8645-- drop_table(:_test_simple_bars, {:force=>true})8646 -> 0.0020s8647-- drop_table(:_test_bulk_parents, {:force=>true})8648 -> 0.0018s8649Gitlab::ImportExport::UploadsSaver8650 bundle a project Git repo8651 legacy storage8652 saves the uploads successfully8653 copies the uploads to the export path8654 hashed storage8655 saves the uploads successfully8656 copies the uploads to the export path8657ServiceDeskEmailReceiverWorker8658 #perform8659 when service_desk_email config is enabled8660 does not ignore the email8661 when service desk receiver raises an exception8662 sends a rejection email8663 when service_desk_email config is disabled8664 ignores the email8665Users::UpdateCanonicalEmailService8666 #initialize8667 unsuccessful8668 raises an error if there is no user8669 raises an error if the object is not a User8670 when a user is provided8671 does not error8672 #canonicalize_email8673 when the email domain is included8674 strips out any . or anything after + in the agent for included domains8675 raw_email: "user@includeddomain.com", expected_result: "user@includeddomain.com"8676 is expected to eq "user@includeddomain.com"8677 raw_email: "u.s.e.r@includeddomain.com", expected_result: "user@includeddomain.com"8678 is expected to eq "user@includeddomain.com"8679 raw_email: "user+123@includeddomain.com", expected_result: "user@includeddomain.com"8680 is expected to eq "user@includeddomain.com"8681 raw_email: "us.er+123@includeddomain.com", expected_result: "user@includeddomain.com"8682 is expected to eq "user@includeddomain.com"8683 when the user has an existing canonical email8684 updates the user canonical email record8685 when the email domain is not included8686 returns nil8687 destroys any existing UserCanonicalEmail record8688 when the user email is not processable8689 with8690 is expected to be nil8691 preserves any existing record8692 with nonsense8693 is expected to be nil8694 preserves any existing record8695Gitlab::GlobalId8696 .build8697 returns a standard GlobalId if only object is passed8698 returns a GlobalId from params8699 returns a GlobalId from object and `id` param8700 returns a GlobalId from object and `model_name` param8701 returns an error if model_name and id are not able to be determined8702 .as_global_id8703 is the identify function on GlobalID instances8704 wraps URI::GID in GlobalID8705 cannot coerce Integers without a model name8706 can coerce Integers with a model name8707 rejects any other value8708AlertManagement::AlertAssignee8709 associations8710 is expected to belong to alert required: false8711 is expected to belong to assignee class_name => User required: false inverse_of => alert_assignees8712 validations8713 is expected to validate that :alert cannot be empty/falsy8714 is expected to validate that :assignee cannot be empty/falsy8715 is expected to validate that :assignee is case-sensitively unique within the scope of :alert_id8716Gitlab::Metrics::Dashboard::Stages::VariableEndpointInserter8717 #transform!8718 when dashboard variables are present8719 assigns prometheus_endpoint_path to metric_label_values variable type8720 does not modify other variable types8721 when variable does not have the required series_selector8722 adds prometheus_endpoint_path without match parameter8723 when no variables are present8724 does not fail8725 with no environment8726 raises error8727Releases::CreateEvidenceWorker8728 creates a new Evidence record8729 creates a new Evidence record with pipeline8730Keys::ExpiryNotificationService8731 with key expiring today8732 when user has permission to receive notification8733 updates notified column8734 behaves like sends a notification8735 is expected to eq 18736 behaves like uses notification service to send email to the user8737 is expected to receive ssh_key_expired(#<User id:1431 @user847>, ["3b:b7:3a:26:a3:28:41:06:44:1e:3c:57:34:92:0e:15"]) 1 time8738 when user does NOT have permission to receive notification8739 does not update notified column8740 behaves like does not send notification8741 is expected to eq 08742 with key expiring soon8743 when user has permission to receive notification8744 updates notified column8745 behaves like sends a notification8746 is expected to eq 18747 behaves like uses notification service to send email to the user8748 is expected to receive ssh_key_expiring_soon(#<User id:1431 @user847>, ["ec:7f:e4:9e:c8:4a:60:60:8d:a6:ae:15:d3:92:65:e4"]) 1 time8749 when user does NOT have permission to receive notification8750 does not update notified column8751 behaves like does not send notification8752 is expected to eq 08753Types::PermissionTypes::Environment8754 # order random8755 is expected to have graphql field :stop_environment8756GoogleApi::Auth8757 #authorize_url8758 returns authorize_url8759 #get_token8760 returns token and expires_at8761 expects the client to receive default options8762PaginationHelper8763 #paginate_collection8764 paginates a collection without using a COUNT8765 paginates a collection using a COUNT8766Resolvers::Ci::ProjectPipelineCountsResolver8767 #resolve8768 counts pipelines8769 counts by ref8770 counts by sha8771 counts by source8772BlobViewer::ServerSide8773 #prepare!8774 loads all blob data8775 #render_error8776 when the blob is stored externally8777 return :server_side_but_stored_externally8778Gitlab::ImportExport::Project::ExportedRelationsMerger8779 # order random8780 #save8781 downloads, extracts, and merges all files into export_path8782 when exception occurs8783 registers the exception messages and returns false8784Gitlab::GlobalId::Deprecations8785 .deprecated?8786 returns a boolean to signal if model name has a deprecation8787 .deprecation_for8788 returns the deprecation for the model if it exists8789 .deprecation_by8790 returns the deprecation by the model if it exists8791 .apply_to_graphql_name8792 returns the corresponding graphql_name of the GID for the new model8793 returns the same value if there is no deprecation8794RuboCop::Cop::Gitlab::ModuleWithInstanceVariables8795 # order random8796 when source is using simple or ivar assignment with other ivar8797 behaves like registering offense8798 registers an offense when instance variable is used in a module8799 when source is using simple ivar8800 behaves like not registering offense8801 does not register offenses8802 when source is using or ivar assignment with something else8803 behaves like registering offense8804 registers an offense when instance variable is used in a module8805 when source is using simple or ivar assignment8806 behaves like not registering offense8807 does not register offenses8808 when source is a nested module with multiple offenses8809 behaves like registering offense8810 registers an offense when instance variable is used in a module8811 when source is a nested module8812 behaves like registering offense8813 registers an offense when instance variable is used in a module8814 when source is a regular module8815 behaves like registering offense8816 registers an offense when instance variable is used in a module8817 when source is defining initialize8818 behaves like not registering offense8819 does not register offenses8820Ci::PipelineSchedules::TakeOwnershipService8821 # order random8822 #execute8823 when user does not have permission8824 returns ServiceResponse.error8825 when user has permission8826 returns ServiceResponse.success8827 when schedule update fails8828 returns ServiceResponse.error8829Projects::FetchStatisticsIncrementService8830 #execute8831 creates a new record for today with count == 18832 doesn't increment previous days statistics8833 when the record already exists for today8834 increments the today record count by 18835BulkImports::Common::Transformers::UserReferenceTransformer8836 #transform8837 when user can be found by email8838 sets found user_id and removes user key8839 when user cannot be found by email8840 sets found user_id and removes user key8841 when there is no data to transform8842 returns8843 when custom reference is provided8844 updates provided reference8845 updates provided reference8846RuboCop::Cop::Migration::ScheduleAsync8847 # order random8848 in a migration8849 in an old migration8850 behaves like a disabled cop8851 does not register any offenses8852 that is recent8853 BackgroundMigrationWorker.perform_async8854 adds an offense when calling `BackgroundMigrationWorker.peform_async`8855 CiDatabaseWorker.perform_async8856 adds an offense when calling `CiDatabaseWorker.peform_async`8857 BackgroundMigrationWorker.perform_in8858 adds an offense8859 CiDatabaseWorker.perform_in8860 adds an offense8861 BackgroundMigrationWorker.bulk_perform_async8862 adds an offense8863 CiDatabaseWorker.bulk_perform_async8864 adds an offense8865 BackgroundMigrationWorker.bulk_perform_in8866 adds an offense8867 CiDatabaseWorker.bulk_perform_in8868 adds an offense8869 outside of a migration8870 behaves like a disabled cop8871 does not register any offenses8872AlertManagement::MetricImage8873 associations8874 is expected to belong to alert required: false8875 validations8876 is expected to be valid8877 is expected to validate that :file cannot be empty/falsy8878 is expected to validate that the length of :url is at most 2558879 is expected to validate that the length of :url_text is at most 1288880Mutations::Boards::Lists::Create8881 behaves like board lists create mutation8882 #ready?8883 raises an error if required arguments are missing8884 raises an error if too many required arguments are specified8885 #resolve8886 with proper permissions8887 backlog list8888 creates one and only one backlog8889 label list8890 creates a new label board list8891 when label not found8892 returns an error8893 without proper permissions8894 raises an error8895Clusters::Kubernetes8896 is expected to be const defined :GITLAB_SERVICE_ACCOUNT_NAME8897 is expected to be const defined :GITLAB_SERVICE_ACCOUNT_NAMESPACE8898 is expected to be const defined :GITLAB_ADMIN_TOKEN_NAME8899 is expected to be const defined :GITLAB_CLUSTER_ROLE_BINDING_NAME8900 is expected to be const defined :GITLAB_CLUSTER_ROLE_NAME8901 is expected to be const defined :PROJECT_CLUSTER_ROLE_NAME8902 is expected to be const defined :GITLAB_KNATIVE_SERVING_ROLE_NAME8903 is expected to be const defined :GITLAB_KNATIVE_SERVING_ROLE_BINDING_NAME8904 is expected to be const defined :GITLAB_CROSSPLANE_DATABASE_ROLE_NAME8905 is expected to be const defined :GITLAB_CROSSPLANE_DATABASE_ROLE_BINDING_NAME8906Ci::DagPipelineSerializer8907 #represent8908 includes stages8909 matches schema8910UserGroupsCounter8911 #execute8912 returns authorized group count for the user8913 when request to join group is pending8914 does not include pending group in the count8915 when user is part of sub group8916 includes sub group in the count8917 when user is part of namespaced project8918 includes the project group8919Gitlab::Import::SetAsyncJid8920 .set_jid8921 sets the JID in Redis8922 updates the import JID of the project8923TestCaseEntity8924 #as_json8925 when test case is success8926 contains correct test case details8927 when test case is failed8928 contains correct test case details8929 when no test name is entered8930 contains correct test case details8931 when attachment is present8932 returns the attachment_url8933 when attachment is not present8934 returns a nil attachment_url8935IssuableSidebarExtrasEntity8936 have assignee attribute8937Import/Export attribute configuration8938 has no new columns8939Namespaces::ProjectNamespace8940 relationships8941 is expected to have one project inverse_of => project_namespace8942 is expected to eq #<Project id:840 namespace913/project-904>>8943 validations8944 is expected not to validate that :owner cannot be empty/falsy8945 when deleting project namespace8946 also deletes associated project8947ErrorTracking::Collector::PayloadValidator8948 #valid?8949 with event fixtures8950 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/browser_event.json"8951 behaves like valid payload8952 is expected to be valid8953 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/go_parsed_event.json"8954 behaves like valid payload8955 is expected to be valid8956 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/go_two_exception_event.json"8957 behaves like valid payload8958 is expected to be valid8959 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/parsed_event.json"8960 behaves like valid payload8961 is expected to be valid8962 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/parsed_event_nullbytes.json"8963 behaves like valid payload8964 is expected to be valid8965 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/python_event.json"8966 behaves like valid payload8967 is expected to be valid8968 event_fixture: "/builds/gitlab-org/gitlab/spec/fixtures/error_tracking/python_event_repl.json"8969 behaves like valid payload8970 is expected to be valid8971 when empty8972 behaves like invalid payload8973 is expected not to be valid8974 when invalid8975 behaves like invalid payload8976 is expected not to be valid8977Gitlab::Ci::Variables::Builder::Release8978 # order random8979 #variables8980 when the release is present8981 contains all the variables8982 for large description8983 truncates8984 when description is nil8985 returns without error8986 when the release is not present8987 contains no variables8988Uploads::Local8989 model with uploads8990 #keys8991 returns keys8992 #delete_keys8993 deletes multiple data8994LicenseTemplateFinder8995 #execute8996 behaves like filters by popular category8997 popular: true8998 only returns popular licenses8999 popular: false9000 only returns unpopular licenses9001 popular: nil9002 returns all licenses known by the Licensee gem9003 correctly copies all attributes9004 #template_names9005 behaves like filters by popular category9006 popular: true9007 only returns popular licenses9008 popular: false9009 only returns unpopular licenses9010 popular: nil9011 returns all licenses known by the Licensee gem9012 template names hash keys9013 has all the expected keys9014TimeHelper9015 #time_interval_in_words9016 returns minutes and seconds9017 #duration_in_numbers9018 duration: 0, formatted_string: "00:00"9019 is expected to eq "00:00"9020 duration: 1 second, formatted_string: "00:01"9021 is expected to eq "00:01"9022 duration: 42 seconds, formatted_string: "00:42"9023 is expected to eq "00:42"9024 duration: 2 minutes and 1 second, formatted_string: "02:01"9025 is expected to eq "02:01"9026 duration: 3 hours, 2 minutes, and 1 second, formatted_string: "03:02:01"9027 is expected to eq "03:02:01"9028 duration: 30 hours, formatted_string: "30:00:00"9029 is expected to eq "30:00:00"9030 #time_in_milliseconds9031 returns the time in milliseconds9032Gitlab::Graphql::KnownOperations9033 #from_query9034 query_string: "query { helloWorld }", expected: #<struct Gitlab::Graphql::KnownOperations::Operation name="unknown">9035 returns known operation name from GraphQL Query9036 query_string: "query fuzzyyy { helloWorld }", expected: #<struct Gitlab::Graphql::KnownOperations::Operation name="unknown">9037 returns known operation name from GraphQL Query9038 query_string: "query foo { helloWorld }", expected: #<struct Gitlab::Graphql::KnownOperations::Operation name="foo">9039 returns known operation name from GraphQL Query9040 #operations9041 returns array of known operations9042 Operation#to_caller_id9043 query_string: "query { helloWorld }", expected: "graphql:unknown"9044 formats operation name for caller_id metric property9045 query_string: "query foo { helloWorld }", expected: "graphql:foo"9046 formats operation name for caller_id metric property9047 Opeartion#query_urgency9048 returns the associated query urgency9049 .default9050 returns a memoization of values from webpack9051Projects::BatchOpenIssuesCountService9052 #refresh_cache_and_retrieve_data9053 when cache is clean9054 refreshes cache keys correctly9055Gitlab::SQL::CTE9056 #to_arel9057 when relation is an ActiveRecord::Relation9058 generates an Arel relation for the CTE body9059 when relation is a String9060 generates an Arel relation for the CTE body9061 #alias_to9062 returns an alias for the CTE9063 #apply_to9064 applies a CTE to an ActiveRecord::Relation9065 behaves like CTE with MATERIALIZED keyword examples9066 adding MATERIALIZE to the CTE9067 when PG version is <129068 does not add MATERIALIZE keyword9069 when PG version is >=129070 adds MATERIALIZE keyword9071 when version is higher than 129072 adds MATERIALIZE keyword9073 when materialized is disabled9074 does not add MATERIALIZE keyword9075pages storage check9076 when local store does not exist yet9077 is expected to be truthy9078 when pages is not enabled9079 is expected to be truthy9080 when pages is enabled9081 local_storage_enabled: false, object_storage_enabled: false, raises_exception: true9082 validates pages storage configuration9083 local_storage_enabled: false, object_storage_enabled: true, raises_exception: false9084 validates pages storage configuration9085 local_storage_enabled: true, object_storage_enabled: false, raises_exception: false9086 validates pages storage configuration9087 local_storage_enabled: true, object_storage_enabled: true, raises_exception: false9088 validates pages storage configuration9089 local_storage_enabled: 1, object_storage_enabled: 0, raises_exception: false9090 validates pages storage configuration9091 local_storage_enabled: nil, object_storage_enabled: nil, raises_exception: true9092 validates pages storage configuration9093Gitlab::Database::BackgroundMigration::HealthStatus9094 .evaluate9095 returns a collection of signals9096 logs interesting signals9097 does not log signals of no interest9098 with default indicators9099 returns a collection of signals9100 on indicator error9101 does not fail9102 returns Unknown signal9103 reports the exception to error tracking9104Types::TimeframeInputType9105 coerces ISO-dates into Time objects9106 rejects invalid input9107 accepts times as input9108 requires both ends of the range9109 rejects invalid range9110AdminEmailWorker9111 .perform9112 does not attempt to send repository check mail when they are disabled9113 repository_checks enabled9114 checks if repository check mail should be sent9115 does not send mail when there are no failed repos9116 send mail when there is a failed repo9117Gitlab::GithubImport::ImportIssueWorker9118 #import9119 imports an issue9120 #increment_object_counter?9121 when github issue is a pull request9122 returns false9123BulkPushEventPayloadService9124 creates a PushEventPayload9125Gitlab::Graphql::CallsGitaly::FieldExtension9126 when the field calls gitaly9127 when the field has a constant complexity9128 allows the call9129 when the field declares that it calls gitaly9130 allows the call9131 when the field does not have these arguments9132 notices, and raises, mentioning the field9133 when it does not call gitaly9134 does not raise9135 when some field calls gitaly while we were waiting9136 is acceptable if all are accounted for9137 is unacceptable if some of the calls are unaccounted for9138Mutations::CustomEmoji::Create9139 #resolve9140 creates the custom emoji9141 sets the creator to be the user who added the emoji9142RuboCop::Cop::Gitlab::Json9143 # order random9144 when ::JSON is called9145 registers an offense and autocorrects9146 when ::JSON is called in EE9147 registers an offense and autocorrects9148 when ActiveSupport::JSON is called9149 registers an offense and autocorrects9150Types::CommitType9151 is expected to eq "Commit"9152 is expected to require graphql authorizations :read_code9153 is expected to include Types::TodoableInterface9154 contains attributes related to commit9155Packages::Helm::FileMetadatum9156 relationships9157 is expected to belong to package_file required: false9158 validations9159 #package_file9160 is expected to validate that :package_file cannot be empty/falsy9161 #valid_helm_package_type9162 validates package of type helm9163 #channel9164 validates #channel9165 #metadata9166 validates #metadata9167Gitlab::Tracking::Destinations::Snowplow9168 when snowplow is enabled9169 #event9170 sends event to tracker9171 increase total snowplow events counter9172 when snowplow is not enabled9173 #event9174 does not send event to tracker9175 callbacks9176 on success9177 increase gitlab_successful_snowplow_events_total counter9178 on failure9179 increase gitlab_failed_snowplow_events_total counter and logs failures9180FromUnion9181 behaves like from set operator9182 #from_union9183 selects from the results of the UNION9184 returns empty set when passing empty array9185 supports the use of a custom alias for the sub query9186 supports keeping duplicate rows9187Packages::Pypi::Metadatum9188 relationships9189 is expected to belong to package required: false9190 validations9191 is expected to validate that :package cannot be empty/falsy9192 is expected to allow :required_python to be ‹""›9193 is expected not to allow :required_python to be ‹nil›9194 is expected not to allow :required_python to be ‹"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"›9195 #pypi_package_type9196 will not allow a package with a different package_type9197Spam::HamService9198 #execute9199 AkismetService returns false (Akismet cannot be reached, etc)9200 returns false9201 does not update the record9202 if spam log record has already been marked as spam9203 does not update the record9204 Akismet ham submission is successful9205 returns true9206 updates the record9207Types::Ci::StatusActionType9208 is expected to eq "StatusAction"9209 exposes the expected fields9210 id field9211 correctly renders the field9212Metrics::SampleMetricsService9213 query9214 when the file is not found9215 is expected to be nil9216 when the file is found9217 loads data from the sample file correctly9218 when the identifier is for a path outside of sample_metrics9219 is expected to be nil9220Gitlab::BufferedIo9221 #readuntil9222 does not raise a timeout error9223 when the response contains infinitely long headers9224 raises a timeout error9225 when not passing start_time9226 raises a timeout error9227PagerDuty::WebhookPayloadParser9228 .call9229 when payload is a correct PagerDuty payload9230 returns parsed payload9231 when assignments summary and html_url are blank9232 returns parsed payload with blank assignees9233 when impacted_services summary and html_url are blank9234 returns parsed payload with blank impacted service9235 when payload schema is invalid9236 returns payload with blank incident9237 when event is unknown9238 returns empty payload9239Gitlab::ErrorTracking::Processor::SanitizeErrorMessageProcessor9240 .call9241 with Raven event9242 behaves like processes the exception9243 cleans the exception message9244 with Sentry event9245 behaves like processes the exception9246 cleans the exception message9247 with invalid event9248 does nothing9249RuboCop::Cop::Database::DisableReferentialIntegrity9250 # order random9251 flags the use of disable_referential_integrity with a nil receiver9252 flags the use of disable_referential_integrity when passing a block9253 does not flag the use of disable_referential_integrity with a send receiver9254 flags the use of disable_referential_integrity with a full definition9255API::Entities::Ci::JobRequest::Service9256 exposes attributes9257 when the ports param is nil9258 does not return the ports9259Gitlab::Pages::Settings9260 #path9261 is expected to eq "the path"9262 when running under a web server outside of test mode9263 logs a DiskAccessDenied error9264 when local_store settings does not exist yet9265 is expected to eq "the path"9266 when local store exists but legacy storage is disabled9267 logs a DiskAccessDenied error9268Stepable9269 stops after the first non success status9270 when all methods return success9271 calls all methods in order9272 merges variables returned by all steps9273 can modify results of previous steps9274 with multiple stepable classes9275 does not leak steps9276RuboCop::Cop::BackgroundMigration::FeatureCategory9277 # order random9278 for background migrations9279 throws offense on not defining the feature_category9280 throws offense on not defining a valid feature_category9281 will not throw offense on defining a valid feature_category9282 for non background migrations9283 does not throw any offense9284Packages::GroupOrProjectPackageFinder9285 execute9286 is expected to raise NotImplementedError9287 execute!9288 is expected to raise NotImplementedError9289Integrations::HarborSerializers::ArtifactEntity9290 returns the Harbor artifact9291OauthAccessGrant9292 #delete9293 cascades to oauth_openid_requests9294Mutations::SavedReplies::Destroy9295 #resolve9296 when feature is disabled9297 raises Gitlab::Graphql::Errors::ResourceNotAvailable9298 when feature is enabled for current user9299 when service fails to delete a new saved reply9300 raises Gitlab::Graphql::Errors::ResourceNotAvailable9301 when service successfully deletes the saved reply9302 is expected to be empty9303Gitlab::Memory::Reports::JemallocStats9304 .run9305 when :report_jemalloc_stats ops FF is enabled9306 dumps jemalloc stats to the given writer9307 when :report_jemalloc_stats ops FF is disabled9308 does not run the report9309 .active?9310 when :report_jemalloc_stats ops FF is enabled9311 is expected to equal true9312 when :report_jemalloc_stats ops FF is disabled9313 is expected to equal false9314Sidebars::MenuItem9315 includes by default aria-label attribute set to the title9316 when aria-label is overridde during initialization9317 sets the aria-label to the new attribute9318 #serialize_for_super_sidebar9319 includes custom CSS classes9320ForceCompanyTrialExperiment9321 when a user is setup_for_company9322 is not excluded9323 when a user is not setup_for_company9324 is excluded9325Types::Ci::ProjectVariableType9326 is expected to contain exactly Types::Ci::VariableInterface9327 is expected to have graphql fields :environment_scope, :masked, and :protected9328Packages::Rubygems::Metadatum9329 relationships9330 is expected to belong to package required: false9331 validations9332 is expected to validate that :package cannot be empty/falsy9333 #rubygems_package_type9334 will not allow a package with a different package_type9335API::Helpers::CommonHelpers9336 .coerce_nil_params_to_array!9337 converts all nil parameters to empty arrays9338 leaves non-nil parameters alone9339ResourceEvent9340 # order random9341 raises error on not implemented `issuable` method9342 raises error on not implemented `synthetic_note_class` method9343Rack VULNDB-2550399344 # order random9345 when handling query params in GET requests9346 does not treat semicolons as query delimiters9347Gitlab::Ci::Config::External::Mapper::Filter9348 # order random9349 #process9350 filters locations according to rules9351StuckCiJobsWorker9352 #perform9353 enqueues a Ci::StuckBuilds::DropRunningWorker job9354 enqueues a Ci::StuckBuilds::DropScheduledWorker job9355 executes an instance of Ci::StuckBuilds::DropPendingService9356Gitlab::UploadsTransfer9357 leaves avatar uploads where they are9358Types::Projects::BranchRuleType9359 # order random9360 is expected to require graphql authorizations :read_protected_branch9361 is expected to have graphql fields :name, :isDefault, :branch_protection, :matching_branches_count, :created_at, and :updated_at9362Types::ErrorTracking::SentryErrorStackTraceEntryType9363 is expected to eq "SentryErrorStackTraceEntry"9364 exposes the expected fields9365Mutations::Members::BulkUpdateBase9366 # order random9367 raises a NotImplementedError error if the source_type method is called on the base class9368Types::EvidenceType9369 is expected to require graphql authorizations :read_release_evidence9370 has the expected fields9371Gitlab::ImportExport::Error9372 .permission_error9373 when supplied a project9374 returns an error with the correct message9375 when supplied a group9376 returns an error with the correct message9377Sidebars::Projects::SuperSidebarMenus::MonitorMenu9378 # order random9379 has title and sprite_icon9380 defines list of NilMenuItem placeholders9381Gitlab::NetHttpAdapter9382 #connect9383 uses a Gitlab::BufferedIo instance as @socket9384Types::Tree::BlobType9385 is expected to eq "Blob"9386 is expected to have graphql fields :id, :sha, :name, :type, :path, :flat_path, :web_url, :web_path, :lfs_oid, and :mode9387dashboard/projects/_nav.html.haml9388 highlights All tab by default9389 highlights Personal tab personal param is present9390Types::WorkItems::Widgets::HierarchyType9391 exposes the expected fields9392Gitlab::Usage::Metrics::Instrumentations::EditionMetric9393 # order random9394 behaves like a correct instrumented metric value9395 has correct value9396Gitlab::Database::SchemaValidation::Validators::ExtraTableColumns9397 # order random9398 returns table inconsistencies9399Clusters::ClusterEnabledGrant9400 is expected to belong to namespace required: false9401Types::PermissionTypes::Snippet9402 returns the snippets permissions9403Gitlab::SlashCommands::Presenters::IncidentManagement::IncidentNew9404 # order random9405 returns the ephemeral message9406API::Entities::BulkImport9407 has the correct attributes9408Gitlab::Ci::Status::Build::WaitingForResource9409 is expected to be < Gitlab::Ci::Status::Processable::WaitingForResource9410ProjectMirrorSerializer9411 represents ProjectMirror entities9412Gitlab::GithubImport::Importer::Attachments::BaseImporter9413 # order random9414 #each_object_to_import9415 with not implemented #collection interface9416 raises NotImplementedError9417Types::Packages::PackageGroupSortEnum9418 exposes all package group sort values9419Knapsack report was generated. Preview:9420{9421 "spec/lib/gitlab/relative_positioning/mover_spec.rb": 179.7107920660019,9422 "spec/lib/gitlab/git/repository_spec.rb": 84.04611465299968,9423 "spec/lib/gitlab/usage_data_metrics_spec.rb": 104.04288737400202,9424 "spec/models/namespace/package_setting_spec.rb": 17.715298027000244,9425 "spec/policies/wiki_page_policy_spec.rb": 45.571116265000455,9426 "spec/services/users/migrate_records_to_ghost_user_service_spec.rb": 42.849017317999824,9427 "spec/services/issuable/bulk_update_service_spec.rb": 45.08198791399991,9428 "spec/services/ci/update_build_queue_service_spec.rb": 29.2998478720001,9429 "spec/lib/gitlab/ci/status/build/factory_spec.rb": 35.271078275000036,9430 "spec/uploaders/job_artifact_uploader_spec.rb": 31.42548791000081,9431 "spec/services/files/multi_service_spec.rb": 23.78786294600286,9432 "spec/models/clusters/agent_spec.rb": 25.708830758001568,9433 "spec/lib/gitlab/cleanup/project_uploads_spec.rb": 21.20995501699872,9434 "spec/services/snippets/destroy_service_spec.rb": 17.06682454700058,9435 "spec/services/bulk_create_integration_service_spec.rb": 15.59069931400154,9436 "spec/services/design_management/delete_designs_service_spec.rb": 18.020742959000927,9437 "spec/lib/gitlab/prometheus_client_spec.rb": 7.257610716998897,9438 "spec/models/label_spec.rb": 14.229694327001198,9439 "spec/models/clusters/clusters_hierarchy_spec.rb": 16.645695184000942,9440 "spec/models/integrations/gitlab_slack_application_spec.rb": 10.865174359001685,9441 "spec/policies/todo_policy_spec.rb": 11.378510381000524,9442 "spec/lib/gitlab/gpg/invalid_gpg_signature_updater_spec.rb": 17.250167187001352,9443 "spec/models/hooks/system_hook_spec.rb": 11.337316674998874,9444 "spec/lib/gitlab/database/tables_truncate_spec.rb": 15.09649902000092,9445 "spec/services/groups/import_export/import_service_spec.rb": 11.863936447000015,9446 "spec/models/integrations/jenkins_spec.rb": 6.257954540000355,9447 "spec/lib/gitlab/import_export/import_failure_service_spec.rb": 13.330219408999255,9448 "spec/lib/gitlab/redis/sessions_spec.rb": 2.22228314899985,9449 "spec/lib/container_registry/blob_spec.rb": 7.060654279997834,9450 "spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb": 1.93787483000051,9451 "spec/lib/banzai/filter/references/work_item_reference_filter_spec.rb": 4.777564398998948,9452 "spec/lib/gitlab/gitaly_client/commit_service_spec.rb": 5.227779288001329,9453 "spec/lib/gitlab/ci/build/rules_spec.rb": 2.200764850000269,9454 "spec/tasks/gitlab/cleanup_rake_spec.rb": 7.467529654000828,9455 "spec/lib/sbom/package_url/decoder_spec.rb": 1.9476727199980814,9456 "spec/models/ci/runner_manager_spec.rb": 2.8456038479998824,9457 "spec/lib/gitlab/diff/diff_refs_spec.rb": 8.163276276001852,9458 "spec/helpers/issuables_description_templates_helper_spec.rb": 3.396900925999944,9459 "spec/lib/gitlab/email/reply_parser_spec.rb": 1.3361342579992197,9460 "spec/routing/import_routing_spec.rb": 4.033180293001351,9461 "spec/services/issues/reopen_service_spec.rb": 9.385542217001785,9462 "spec/lib/gitlab/changelog/config_spec.rb": 7.710309236001194,9463 "spec/finders/context_commits_finder_spec.rb": 8.922156568998616,9464 "spec/models/plan_limits_spec.rb": 6.122940765999374,9465 "spec/workers/incident_management/process_alert_worker_v2_spec.rb": 8.227854757999012,9466 "spec/services/projects/hashed_storage/rollback_attachments_service_spec.rb": 10.143564530997537,9467 "spec/models/ci/runner_project_spec.rb": 7.059009230000811,9468 "spec/lib/gitlab/shell_spec.rb": 4.40157974199974,9469 "spec/helpers/users/group_callouts_helper_spec.rb": 2.6078803450000123,9470 "spec/lib/gitlab/redis/queues_spec.rb": 1.8261464429997432,9471 "spec/workers/deployments/hooks_worker_spec.rb": 4.458055085000524,9472 "spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb": 3.151037562998681,9473 "spec/lib/sidebars/projects/menus/analytics_menu_spec.rb": 3.106514448998496,9474 "spec/lib/gitlab/ci/status/external/common_spec.rb": 4.558623384000384,9475 "spec/presenters/packages/detail/package_presenter_spec.rb": 3.9826143690006575,9476 "spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb": 2.2186544579999463,9477 "spec/services/users/refresh_authorized_projects_service_spec.rb": 4.449481427000137,9478 "spec/models/packages/cleanup/policy_spec.rb": 2.5476427210014663,9479 "spec/models/packages/nuget/metadatum_spec.rb": 1.917476982001972,9480 "spec/models/label_note_spec.rb": 4.515945078997902,9481 "spec/tasks/gettext_rake_spec.rb": 4.948335590001079,9482 "spec/models/authentication_event_spec.rb": 1.9592836580013682,9483 "spec/lib/gitlab/ci/config/entry/inherit/default_spec.rb": 0.7185004080020008,9484 "spec/lib/gitlab/middleware/handle_malformed_strings_spec.rb": 1.181157366001571,9485 "spec/graphql/resolvers/users/groups_resolver_spec.rb": 1.5756744020000042,9486 "spec/lib/gitlab/ci/pipeline/expression/lexeme/pattern_spec.rb": 1.137619231001736,9487 "spec/lib/gitlab/database/transaction/context_spec.rb": 1.1593950289970962,9488 "spec/components/pajamas/toggle_component_spec.rb": 1.1225477230000251,9489 "spec/lib/sidebars/groups/menus/settings_menu_spec.rb": 1.7993584070027282,9490 "spec/lib/gitlab/import_export/remote_stream_upload_spec.rb": 1.8605082989997754,9491 "spec/lib/gitlab/database/postgres_partitioned_table_spec.rb": 1.1430738999988534,9492 "spec/models/snippet_statistics_spec.rb": 4.381242704002943,9493 "spec/workers/issues/rebalancing_worker_spec.rb": 1.4027267810015474,9494 "spec/services/groups/group_links/destroy_service_spec.rb": 3.2409157019974373,9495 "spec/views/layouts/_header_search.html.haml_spec.rb": 1.695001828000386,9496 "spec/workers/gitlab/jira_import/stage/import_issues_worker_spec.rb": 1.74535895200097,9497 "spec/models/users/in_product_marketing_email_spec.rb": 2.6038299149986415,9498 "spec/lib/gitlab/github_import/importer/events/changed_assignee_spec.rb": 3.1813535100009176,9499 "spec/lib/banzai/pipeline/description_pipeline_spec.rb": 1.2968797339999583,9500 "spec/lib/gitlab/web_hooks/recursion_detection_spec.rb": 3.5691403450000507,9501 "spec/lib/gitlab/security/scan_configuration_spec.rb": 1.4586822749988642,9502 "spec/lib/gitlab/sidekiq_config_spec.rb": 1.4084832810003718,9503 "spec/services/ci/compare_test_reports_service_spec.rb": 4.3088146619993495,9504 "spec/lib/gitlab/error_tracking_spec.rb": 1.7228824449994136,9505 "spec/services/ci/runners/unassign_runner_service_spec.rb": 0.9729452600004151,9506 "spec/lib/gitlab/alert_management/fingerprint_spec.rb": 0.7628003739991982,9507 "spec/lib/gitlab/database/schema_validation/track_inconsistency_spec.rb": 2.217048848997365,9508 "spec/services/error_tracking/list_issues_service_spec.rb": 3.260685740999179,9509 "spec/models/bulk_imports/export_status_spec.rb": 1.168422697999631,9510 "spec/services/pages_domains/create_acme_order_service_spec.rb": 2.4246629459994438,9511 "spec/workers/project_cache_worker_spec.rb": 1.7514256709982874,9512 "spec/services/bulk_update_integration_service_spec.rb": 2.0818136039997626,9513 "spec/lib/gitlab/harbor/client_spec.rb": 1.4353082480010926,9514 "spec/lib/gitlab/usage_data_counters/work_item_activity_unique_counter_spec.rb": 1.0375011719988834,9515 "spec/support_specs/helpers/stub_method_calls_spec.rb": 0.6316556689998833,9516 "spec/initializers/mail_starttls_patch_spec.rb": 0.6477752559985674,9517 "spec/helpers/badges_helper_spec.rb": 1.51796522800214,9518 "spec/lib/banzai/filter/wiki_link_filter_spec.rb": 1.1782846470014192,9519 "spec/support_specs/graphql/arguments_spec.rb": 0.47689511600037804,9520 "spec/services/deployments/create_service_spec.rb": 3.204718547000084,9521 "spec/lib/bitbucket_server/representation/activity_spec.rb": 0.8000062589999288,9522 "spec/services/tasks_to_be_done/base_service_spec.rb": 2.7976753229995666,9523 "spec/tasks/tokens_spec.rb": 2.550353990998701,9524 "spec/lib/gitlab/config/entry/composable_hash_spec.rb": 0.8459969440009445,9525 "spec/lib/gitlab/ci/templates/terraform_module_gitlab_ci_yaml_spec.rb": 4.124089692999405,9526 "spec/workers/environments/auto_delete_cron_worker_spec.rb": 2.067677166000067,9527 "spec/lib/declarative_enum_spec.rb": 0.839911764000135,9528 "spec/tasks/gitlab/feature_categories_rake_spec.rb": 4.088156027999503,9529 "spec/lib/bulk_imports/common/pipelines/wiki_pipeline_spec.rb": 1.3534737159970973,9530 "spec/lib/gitlab/ci/status/build/manual_spec.rb": 2.1798780229983095,9531 "spec/models/blob_viewer/changelog_spec.rb": 1.7168324859994755,9532 "spec/models/concerns/ci/partitionable_spec.rb": 0.8688459419972787,9533 "spec/lib/gitlab/reactive_cache_set_cache_spec.rb": 0.869658581999829,9534 "spec/workers/gitlab/github_import/stage/import_attachments_worker_spec.rb": 0.6462976959992375,9535 "spec/presenters/instance_clusterable_presenter_spec.rb": 2.221288459000789,9536 "spec/services/loose_foreign_keys/cleaner_service_spec.rb": 2.717501502000232,9537 "spec/lib/atlassian/jira_connect/serializers/build_entity_spec.rb": 2.3284051359987643,9538 "spec/services/incident_management/issuable_escalation_statuses/create_service_spec.rb": 0.86821208100082,9539 "spec/lib/sidebars/your_work/menus/todos_menu_spec.rb": 0.9877549390002969,9540 "spec/lib/gitlab/sidekiq_middleware/worker_context/client_spec.rb": 1.0240204840010847,9541 "spec/lib/gitlab/github_import/single_endpoint_notes_importing_spec.rb": 0.37060361800104147,9542 "spec/workers/ci/build_trace_chunk_flush_worker_spec.rb": 1.9757684260002861,9543 "spec/services/web_hooks/log_destroy_service_spec.rb": 2.219873638001445,9544 "spec/models/work_items/widget_definition_spec.rb": 1.2209202519989049,9545 "spec/lib/gitlab/metrics/global_search_slis_spec.rb": 0.9581267809990095,9546 "spec/graphql/types/work_item_type_spec.rb": 0.44375831999786897,9547 "spec/lib/gitlab/wiki_pages/front_matter_parser_spec.rb": 0.9876814480012399,9548 "spec/lib/banzai/filter/inline_grafana_metrics_filter_spec.rb": 1.1134555440003169,9549 "spec/services/packages/rubygems/create_dependencies_service_spec.rb": 1.1139038740002434,9550 "spec/lib/banzai/filter/absolute_link_filter_spec.rb": 0.42546316200241563,9551 "spec/lib/gitlab/github_import/representation/collaborator_spec.rb": 0.6366676479992748,9552 "spec/helpers/cookies_helper_spec.rb": 0.6422713370011479,9553 "spec/workers/x509_certificate_revoke_worker_spec.rb": 0.8137498879987106,9554 "spec/services/google_cloud/enable_cloudsql_service_spec.rb": 1.2429357880027965,9555 "spec/models/concerns/bulk_insertable_associations_spec.rb": 1.282943284000794,9556 "spec/lib/gitlab/import_export/uploads_saver_spec.rb": 1.9341394010007207,9557 "spec/workers/service_desk_email_receiver_worker_spec.rb": 0.628201748997526,9558 "spec/services/users/update_canonical_email_service_spec.rb": 0.9660455400007777,9559 "spec/lib/gitlab/global_id_spec.rb": 1.1896999060008966,9560 "spec/models/alert_management/alert_assignee_spec.rb": 2.103437481000583,9561 "spec/lib/gitlab/metrics/dashboard/stages/variable_endpoint_inserter_spec.rb": 0.536276689999795,9562 "spec/workers/releases/create_evidence_worker_spec.rb": 2.282013541997003,9563 "spec/services/keys/expiry_notification_service_spec.rb": 1.3450990170022123,9564 "spec/graphql/types/permission_types/environment_spec.rb": 0.4900221349998901,9565 "spec/lib/google_api/auth_spec.rb": 0.5499464180029463,9566 "spec/helpers/pagination_helper_spec.rb": 0.5120156009979837,9567 "spec/graphql/resolvers/ci/project_pipeline_counts_resolver_spec.rb": 1.9124405630027468,9568 "spec/models/blob_viewer/server_side_spec.rb": 0.4783348759992805,9569 "spec/lib/gitlab/import_export/project/exported_relations_merger_spec.rb": 2.0804097239997645,9570 "spec/lib/gitlab/global_id/deprecations_spec.rb": 0.5288453799985291,9571 "spec/rubocop/cop/gitlab/module_with_instance_variables_spec.rb": 0.8086209579996648,9572 "spec/services/ci/pipeline_schedules/take_ownership_service_spec.rb": 1.5575203040025372,9573 "spec/services/projects/fetch_statistics_increment_service_spec.rb": 1.5760630209988449,9574 "spec/lib/bulk_imports/common/transformers/user_reference_transformer_spec.rb": 1.2868095249978069,9575 "spec/rubocop/cop/migration/schedule_async_spec.rb": 0.7126785990003555,9576 "spec/models/alert_management/metric_image_spec.rb": 0.8488324130012188,9577 "spec/graphql/mutations/boards/lists/create_spec.rb": 1.1238477629995032,9578 "spec/services/clusters/kubernetes_spec.rb": 0.9232134060002863,9579 "spec/serializers/ci/dag_pipeline_serializer_spec.rb": 1.5763735709988396,9580 "spec/finders/user_groups_counter_spec.rb": 2.740378780003084,9581 "spec/lib/gitlab/import/set_async_jid_spec.rb": 1.0936263860021427,9582 "spec/serializers/test_case_entity_spec.rb": 1.1227758530003484,9583 "spec/serializers/issuable_sidebar_extras_entity_spec.rb": 1.403950891999557,9584 "spec/lib/gitlab/import_export/attribute_configuration_spec.rb": 1.6172041469981195,9585 "spec/models/namespaces/project_namespace_spec.rb": 1.0564164110001002,9586 "spec/lib/error_tracking/collector/payload_validator_spec.rb": 0.8041194690013072,9587 "spec/lib/gitlab/ci/variables/builder/release_spec.rb": 1.4701840140005515,9588 "spec/models/uploads/local_spec.rb": 1.1036590749972675,9589 "spec/finders/license_template_finder_spec.rb": 0.7470328149975103,9590 "spec/helpers/time_helper_spec.rb": 0.8813682200016046,9591 "spec/lib/gitlab/graphql/known_operations_spec.rb": 0.6075820610021765,9592 "spec/services/projects/batch_open_issues_count_service_spec.rb": 1.3345509089995176,9593 "spec/lib/gitlab/sql/cte_spec.rb": 0.653893896000227,9594 "spec/initializers/pages_storage_check_spec.rb": 0.7467459559993586,9595 "spec/lib/gitlab/database/background_migration/health_status_spec.rb": 0.6392742370007909,9596 "spec/graphql/types/timeframe_type_spec.rb": 0.40791657400041004,9597 "spec/workers/admin_email_worker_spec.rb": 0.8209578869973484,9598 "spec/workers/gitlab/github_import/import_issue_worker_spec.rb": 0.7858002610009862,9599 "spec/services/bulk_push_event_payload_service_spec.rb": 1.0078118660021573,9600 "spec/lib/gitlab/graphql/calls_gitaly/field_extension_spec.rb": 0.6283834180030681,9601 "spec/graphql/mutations/custom_emoji/create_spec.rb": 0.9762621200025023,9602 "spec/rubocop/cop/gitlab/json_spec.rb": 0.4843437149975216,9603 "spec/graphql/types/commit_type_spec.rb": 0.41874927199751255,9604 "spec/models/packages/helm/file_metadatum_spec.rb": 1.0007057069997245,9605 "spec/lib/gitlab/tracking/destinations/snowplow_spec.rb": 0.6107865410012892,9606 "spec/models/concerns/from_union_spec.rb": 0.4173575120003079,9607 "spec/models/packages/pypi/metadatum_spec.rb": 0.5015485139992961,9608 "spec/services/spam/ham_service_spec.rb": 0.5766027539975767,9609 "spec/graphql/types/ci/status_action_type_spec.rb": 0.6683282740013965,9610 "spec/services/metrics/sample_metrics_service_spec.rb": 0.430152980999992,9611 "spec/lib/gitlab/buffered_io_spec.rb": 0.7969423989998177,9612 "spec/lib/pager_duty/webhook_payload_parser_spec.rb": 0.43887066100069205,9613 "spec/lib/gitlab/error_tracking/processor/sanitize_error_message_processor_spec.rb": 0.617768681000598,9614 "spec/rubocop/cop/database/disable_referential_integrity_spec.rb": 0.42598071199972765,9615 "spec/lib/api/entities/ci/job_request/service_spec.rb": 0.49091644500003895,9616 "spec/lib/gitlab/pages/settings_spec.rb": 0.49657841400039615,9617 "spec/models/concerns/stepable_spec.rb": 1.214406063001661,9618 "spec/rubocop/cop/background_migration/feature_category_spec.rb": 0.5082013030005328,9619 "spec/finders/packages/group_or_project_package_finder_spec.rb": 0.7646403329999885,9620 "spec/serializers/integrations/harbor_serializers/artifact_entity_spec.rb": 0.7590211239985365,9621 "spec/models/oauth_access_grant_spec.rb": 0.7392002369997499,9622 "spec/graphql/mutations/saved_replies/destroy_spec.rb": 0.641272568002023,9623 "spec/lib/gitlab/memory/reports/jemalloc_stats_spec.rb": 0.6261932689994865,9624 "spec/lib/sidebars/menu_item_spec.rb": 0.6331713480030885,9625 "spec/experiments/force_company_trial_experiment_spec.rb": 0.5559790369989059,9626 "spec/graphql/types/ci/project_variable_type_spec.rb": 0.48670149499957915,9627 "spec/models/packages/rubygems/metadatum_spec.rb": 0.3609109790013463,9628 "spec/lib/api/helpers/common_helpers_spec.rb": 0.47023191699918243,9629 "spec/models/resource_event_spec.rb": 0.40748867400179734,9630 "spec/initializers/rack_VULNDB-255039_patch_spec.rb": 0.2958273559997906,9631 "spec/lib/gitlab/ci/config/external/mapper/filter_spec.rb": 0.4281733509997139,9632 "spec/workers/stuck_ci_jobs_worker_spec.rb": 0.4939986030003638,9633 "spec/lib/gitlab/uploads_transfer_spec.rb": 0.7562618750016554,9634 "spec/graphql/types/projects/branch_rule_type_spec.rb": 0.29619363600068027,9635 "spec/graphql/types/error_tracking/sentry_error_stack_trace_entry_type_spec.rb": 0.3990555249984027,9636 "spec/graphql/mutations/members/bulk_update_base_spec.rb": 0.6524691259983229,9637 "spec/graphql/types/evidence_type_spec.rb": 0.29903194600046845,9638 "spec/lib/gitlab/import_export/error_spec.rb": 0.35903354899710394,9639 "spec/lib/sidebars/projects/super_sidebar_menus/monitor_menu_spec.rb": 0.4722605970018776,9640 "spec/lib/gitlab/net_http_adapter_spec.rb": 0.3619754190003732,9641 "spec/graphql/types/tree/blob_type_spec.rb": 0.944057373002579,9642 "spec/views/dashboard/projects/_nav.html.haml_spec.rb": 0.6319684180016338,9643 "spec/graphql/types/work_items/widgets/hierarchy_type_spec.rb": 0.3257094530017639,9644 "spec/lib/gitlab/usage/metrics/instrumentations/edition_metric_spec.rb": 0.31602654400194297,9645 "spec/lib/gitlab/database/schema_validation/validators/extra_table_columns_spec.rb": 0.3601914790015144,9646 "spec/models/clusters/cluster_enabled_grant_spec.rb": 0.33682334200057085,9647 "spec/graphql/types/permission_types/snippet_spec.rb": 0.40505038400078774,9648 "spec/lib/gitlab/slash_commands/presenters/incident_management/incident_new_spec.rb": 0.3171274140004243,9649 "spec/lib/api/entities/bulk_import_spec.rb": 0.6176962499994261,9650 "spec/lib/gitlab/ci/status/build/waiting_for_resource_spec.rb": 0.3200018639981863,9651 "spec/serializers/project_mirror_serializer_spec.rb": 0.35243223999714246,9652 "spec/lib/gitlab/github_import/importer/attachments/base_importer_spec.rb": 0.4046477040028549,9653 "spec/graphql/types/packages/package_group_sort_enum_spec.rb": 0.42968398100128989654}9655Knapsack global time execution for tests: 20m 30s9656Pending: (Failures listed here are expected and do not affect your suite's status)9657 1) JobArtifactUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 9658 # No pattern provided, skipping.9659 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89660 2) JobArtifactUploader behaves like builds correct paths #relative_path is relative9661 # Path not set, skipping.9662 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:409663 3) JobArtifactUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 9664 # No pattern provided, skipping.9665 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89666 4) JobArtifactUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 9667 # No pattern provided, skipping.9668 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89669 5) JobArtifactUploader object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 9670 # No pattern provided, skipping.9671 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89672 6) JobArtifactUploader object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 9673 # No pattern provided, skipping.9674 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89675 7) JobArtifactUploader object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 9676 # No pattern provided, skipping.9677 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89678 8) JobArtifactUploader object store is REMOTE behaves like builds correct paths #relative_path is relative9679 # Path not set, skipping.9680 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:409681 9) JobArtifactUploader object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 9682 # No pattern provided, skipping.9683 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89684 10) JobArtifactUploader object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 9685 # No pattern provided, skipping.9686 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:89687 11) Gitlab::Database::TablesTruncate when truncating gitlab_main tables on the ci database behaves like truncating legacy tables on a database when the truncated tables are locked for writes with geo configured does not truncate gitlab_geo tables9688 # No reason given9689 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2679690 12) Gitlab::Database::TablesTruncate when running in a single database mode raises an error when truncating the main database that it is a single database setup9691 # Skipping because some of the extra databases [:ci] are setup9692 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:3379693 13) Gitlab::Database::TablesTruncate when running in a single database mode raises an error when truncating the ci database that it is a single database setup9694 # Skipping because some of the extra databases [:ci] are setup9695 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:3439696 14) Gitlab::Database::TablesTruncate when running with multiple shared databases raises an error when truncating the main database that it is a single database setup9697 # Skipping because database ci exists9698 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:3199699 15) Gitlab::Database::TablesTruncate when running with multiple shared databases raises an error when truncating the ci database that it is a single database setup9700 # Skipping because database ci exists9701 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:3259702 16) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are locked for writes when one of the attached partitions happened to be locked for writes truncates the locked partition successfully9703 # No reason given9704 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2519705 17) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are locked for writes with geo configured does not truncate gitlab_geo tables9706 # No reason given9707 # ./spec/lib/gitlab/database/tables_truncate_spec.rb:2679708 18) Banzai::Filter::References::WorkItemReferenceFilter when cross-project URL in link href behaves like a work item reference does not escape the data-original attribute9709 # No reason given9710 # ./spec/lib/banzai/filter/references/work_item_reference_filter_spec.rb:1069711 19) Banzai::Filter::References::WorkItemReferenceFilter when cross-project URL in link href behaves like a work item reference includes a data-reference-format attribute9712 # No reason given9713 # ./spec/lib/banzai/filter/references/work_item_reference_filter_spec.rb:1159714Finished in 20 minutes 34 seconds (files took 43.56 seconds to load)97154478 examples, 0 failures, 19 pending9716Randomized with seed 624959717[TEST PROF INFO] Time spent in factories: 08:42.381 (42.09% of total time)9718RSpec exited with 0.9719No examples to retry, congrats!9721Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy9723Uploading artifacts...9724coverage/: found 5 matching artifact files and directories 9725WARNING: crystalball/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9726WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9727knapsack/: found 4 matching artifact files and directories 9728query_recorder/: found 2 matching artifact files and directories 9729rspec/: found 9 matching artifact files and directories 9730WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 9731log/*.log: found 14 matching artifact files and directories 9732WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4287783160/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com9733WARNING: Retrying... context=artifacts-uploader error=request redirected9734Uploading artifacts as "archive" to coordinator... 201 Created id=4287783160 responseStatus=201 Created token=64_sso5M9735Uploading artifacts...9736rspec/junit_rspec.xml: found 1 matching artifact files and directories 9737WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4287783160/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com9738WARNING: Retrying... context=artifacts-uploader error=request redirected9739Uploading artifacts as "junit" to coordinator... 201 Created id=4287783160 responseStatus=201 Created token=64_sso5M9741Job succeeded