rspec unit pg12 1/22
Passed Started
by
@lamportsapprentice

Hannes Moser
1Running with gitlab-runner 15.2.0~beta.17.g34ae4a68 (34ae4a68)2 on green-2.private.runners-manager.gitlab.com/gitlab.com/gitlab-org GaSD-S1F3 feature flags: FF_USE_FASTZIP:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service postgres:12 ...8Pulling docker image postgres:12 ...9Using docker image sha256:ac3b8cd6a8b42e839456256bc514d6230b5a2538c738b3d522e1384a2a172b96 for postgres:12 with digest postgres@sha256:e6ffad42c91a4d5a29257a27ac4e160c3ae7196696b37bf2e80410024ed95951 ...10Starting service redis:6.0-alpine ...11Pulling docker image redis:6.0-alpine ...12Using docker image sha256:09401fed2a421bf0019f96dcec70c85f82ec7b76beb1ae589547b0dc302d6b76 for redis:6.0-alpine with digest redis@sha256:217a9db40a914cc3f6206a143a4d750da0607500cc013a147a4979e08e40beff ...13Waiting for services to be up and running (timeout 30 seconds)...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 ...16Using docker image sha256:642191311550aaa03aba1d11d8d921042ead8ee5afeb833fc7e4e3f933b7ed04 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12@sha256:f0990c59018be757dd56365bb2cc6791d65f3f4bf99a431c3b26e3df08260f6a ...18Running on runner-gasd-s1f-project-278964-concurrent-0 via runner-gasd-s1f-private-1656919389-5ca90817...20$ eval "$CI_PRE_CLONE_SCRIPT"21Fetching changes with git depth set to 20...22Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/23Created fresh repository.24remote: Enumerating objects: 116039, done. 25remote: Counting objects: 100% (116039/116039), done. 26remote: Compressing objects: 100% (81230/81230), done. 27remote: Total 116039 (delta 48550), reused 75347 (delta 30398), pack-reused 0 28Receiving objects: 100% (116039/116039), 108.46 MiB | 33.33 MiB/s, done.29Resolving deltas: 100% (48550/48550), done.31 * [new ref] refs/pipelines/579240176 -> refs/pipelines/57924017632Checking out ad477312 as refs/merge-requests/90914/merge...33Skipping Git submodules setup34$ git remote set-url origin "${CI_REPOSITORY_URL}"36Checking cache for ruby-gems-debian-bullseye-ruby-2.7-10...37Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-2.7-10 38Successfully extracted cache39Checking cache for gitaly-ruby-gems-debian-bullseye-ruby-2.7-10...40Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/gitaly-ruby-gems-debian-bullseye-ruby-2.7-10 41Successfully extracted cache43Downloading artifacts for compile-test-assets (2673682644)...44Downloading artifacts from coordinator... ok id=2673682644 responseStatus=200 OK token=BMjPw6dA45Downloading artifacts for detect-tests (2673682683)...46Downloading artifacts from coordinator... ok id=2673682683 responseStatus=200 OK token=BMjPw6dA47Downloading artifacts for retrieve-tests-metadata (2673682698)...48Downloading artifacts from coordinator... ok id=2673682698 responseStatus=200 OK token=BMjPw6dA49Downloading artifacts for setup-test-env (2673682668)...50Downloading artifacts from coordinator... ok id=2673682668 responseStatus=200 OK token=BMjPw6dA52Using docker image sha256:642191311550aaa03aba1d11d8d921042ead8ee5afeb833fc7e4e3f933b7ed04 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12:rubygems-3.2-git-2.36-lfs-2.9-chrome-101-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7.patched-golang-1.17-node-16.14-postgresql-12@sha256:f0990c59018be757dd56365bb2cc6791d65f3f4bf99a431c3b26e3df08260f6a ...53$ echo $FOSS_ONLY54$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb55$ export GOPATH=$CI_PROJECT_DIR/.go56$ mkdir -p $GOPATH57$ source scripts/utils.sh58$ source scripts/prepare_build.sh593.2.3360Bundler version 2.2.3361Successfully installed bundler-2.3.15621 gem installed63production:development64Settings are listed in order of priority. The top value will be used.65clean66Set for your local app (/builds/gitlab-org/gitlab/.bundle/config): true67frozen68Set via BUNDLE_FROZEN: true69install_flags70Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"71path72Set for your local app (/builds/gitlab-org/gitlab/.bundle/config): "/builds/gitlab-org/gitlab/vendor"73without74Set via BUNDLE_WITHOUT: [:production, :development]75$ bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check76Don't run Bundler as root. Bundler can ask for sudo if it is needed, and77installing your bundle as root will break this application for all non-root78users on this machine.79The Gemfile's dependencies are satisfied80==> 'bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check' succeeded in 1 seconds.81$ bundle pristine pg82Installing pg 1.3.5 with native extensions83==> 'bundle pristine pg' succeeded in 7 seconds.84Using decomposed database config (config/database.yml.decomposed-postgresql)85$ setup_db_user_only86CREATE ROLE87GRANT88==> 'setup_db_user_only' succeeded in 1 seconds.89$ bundle exec rake db:drop db:create db:schema:load db:migrate90Dropped database 'gitlabhq_test'91Dropped database 'gitlabhq_test_ci'92Dropped database 'gitlabhq_geo_test'93Created database 'gitlabhq_test'94Created database 'gitlabhq_test_ci'95Created database 'gitlabhq_geo_test'96==> 'bundle exec rake db:drop db:create db:schema:load db:migrate' succeeded in 30 seconds.97$ setup_db_praefect98SELECT pg_catalog.set_config('search_path', '', false);99CREATE DATABASE praefect_test ENCODING 'UTF8';100==> 'setup_db_praefect' succeeded in 0 seconds.101$ run_timed_command "gem install knapsack --no-document"102$ gem install knapsack --no-document103Successfully installed knapsack-4.0.01041 gem installed105==> 'gem install knapsack --no-document' succeeded in 0 seconds.106$ run_timed_command "scripts/gitaly-test-spawn"107$ scripts/gitaly-test-spawn108find: ‘/builds/gitlab-org/gitlab/tmp/tests/gitaly/cmd’: No such file or directory109Don't run Bundler as root. Bundler can ask for sudo if it is needed, and110installing your bundle as root will break this application for all non-root111users on this machine.112Using abstract_type 0.0.7113Using concurrent-ruby 1.1.10114Using i18n 1.10.0115Using minitest 5.15.0116Using tzinfo 2.0.4117Using zeitwerk 2.5.4118Using activesupport 6.1.4.7119Using builder 3.2.4120Using erubi 1.10.0121Using mini_portile2 2.8.0122Using racc 1.6.0123Using nokogiri 1.13.6 (x86_64-linux)124Using rails-dom-testing 2.0.3125Using crass 1.0.6126Using loofah 2.16.0127Using rails-html-sanitizer 1.4.2128Using actionview 6.1.4.7129Using rack 2.2.3130Using rack-test 1.1.0131Using actionpack 6.1.4.7132Using ice_nine 0.11.2133Using thread_safe 0.3.6134Using memoizable 0.4.2135Using adamantium 0.2.0136Using public_suffix 4.0.6137Using addressable 2.7.0138Using ast 2.4.2139Using binding_ninja 0.2.3140Using bundler 2.3.15141Using charlock_holmes 0.7.7142Using coderay 1.1.2143Using equalizer 0.0.11144Using concord 0.1.5145Using diff-lcs 1.3146Using dotenv 2.7.6147Using escape_utils 1.2.1148Using factory_bot 5.0.2149Using multipart-post 2.1.1150Using faraday 1.0.1151Using ffi 1.15.3152Using json 2.5.1153Using gemojione 3.3.0154Using mini_mime 1.0.2155Using rugged 1.2.0156Using github-linguist 7.12.1157Using github-markup 1.7.0158Using mime-types-data 3.2020.1104159Using mime-types 3.3.1160Using gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.1161Using rouge 3.27.0162Using sanitize 6.0.0163Using stringex 2.8.5164Using gitlab-gollum-lib 4.2.7.10.gitlab.2165Using google-protobuf 3.19.1 (x86_64-linux)166Using googleapis-common-protos-types 1.3.0167Using grpc 1.42.0 (x86_64-linux)168Using opentracing 0.5.0169Using thrift 0.15.0170Using jaeger-client 1.1.0171Using pg_query 2.1.1172Using redis 4.4.0173Using gitlab-labkit 0.23.0174Using rubyzip 2.3.2175Using thor 1.1.0176Using tomlrb 2.0.1177Using with_env 1.1.0178Using rexml 3.2.5179Using xml-simple 1.1.9180Using gitlab-license_finder 6.14.2.1181Using gitlab-markup 1.7.1182Using grpc-tools 1.42.0183Using sawyer 0.8.2184Using octokit 4.20.0185Using reverse_markdown 1.4.0186Using licensee 9.14.1187Using method_source 0.9.2188Using msgpack 1.3.3189Using optimist 3.0.1190Using parallel 1.19.2191Using parser 3.0.3.2192Using procto 0.0.3193Using unparser 0.4.7194Using proc_to_ast 0.1.0195Using pry 0.12.2196Using rainbow 3.0.0197Using rbtrace 0.4.14198Using rdoc 6.3.2199Using regexp_parser 1.8.1200Using rspec-support 3.8.0201Using rspec-core 3.8.0202Using rspec-expectations 3.8.3203Using rspec-mocks 3.8.0204Using rspec 3.8.0205Using rspec-parameterized 0.4.2206Using rubocop-ast 0.2.0207Using ruby-progressbar 1.10.1208Using unicode-display_width 1.7.0209Using rubocop 0.86.0210Using sentry-raven 3.0.4211Using timecop 0.9.1212Bundle complete! 22 Gemfile dependencies, 100 gems now installed.213Gems in the groups 'production' and 'development' were not installed.214Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`215Checking gitaly-ruby Gemfile...216Checking gitaly-ruby bundle...217The Gemfile's dependencies are satisfied218Trying to connect to gitaly: ................................... OK219Trying to connect to gitaly2: ................................................. OK220Starting Praefect with in-memory election strategyTrying to connect to praefect: ....... OK221==> 'scripts/gitaly-test-spawn' succeeded in 10 seconds.222$ source ./scripts/rspec_helpers.sh223$ rspec_paralellized_job "--tag ~quarantine --tag ~level:migration"224SKIP_FLAKY_TESTS_AUTOMATICALLY: true225RETRY_FAILED_TESTS_IN_NEW_PROCESS: true226KNAPSACK_GENERATE_REPORT: true227FLAKY_RSPEC_GENERATE_REPORT: true228KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,db,dependencies,elastic,elastic_integration,experiments,events,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,components}{,/**/}*_spec.rb229KNAPSACK_LOG_LEVEL: debug230KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg12_1_22_report.json231FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json232FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg12_1_22_report.json233NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg12_1_22_report.json234SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg12_1_22_report.txt235RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_rspec_unit_pg12_1_22_report.txt236CRYSTALBALL: 237Knapsack node specs:238spec/services/notification_service_spec.rb239spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb240spec/models/commit_spec.rb241spec/lib/banzai/filter/references/milestone_reference_filter_spec.rb242spec/lib/gitlab/background_migration/backfill_namespace_traversal_ids_children_spec.rb243spec/lib/gitlab/gfm/reference_rewriter_spec.rb244spec/lib/gitlab/background_migration/migrate_project_taggings_context_from_tags_to_topics_spec.rb245spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb246spec/finders/todos_finder_spec.rb247spec/services/resource_access_tokens/create_service_spec.rb248spec/lib/gitlab/bitbucket_server_import/importer_spec.rb249spec/lib/service_ping/build_payload_spec.rb250spec/lib/gitlab/url_builder_spec.rb251spec/uploaders/avatar_uploader_spec.rb252spec/services/projects/lfs_pointers/lfs_download_service_spec.rb253spec/lib/gitlab/gitaly_client/repository_service_spec.rb254spec/finders/user_recent_events_finder_spec.rb255spec/models/projects/build_artifacts_size_refresh_spec.rb256spec/services/post_receive_service_spec.rb257spec/models/resource_label_event_spec.rb258spec/lib/gitlab/git/tree_spec.rb259spec/models/merge_request_diff_commit_spec.rb260spec/graphql/resolvers/board_list_issues_resolver_spec.rb261spec/services/lfs/file_transformer_spec.rb262spec/serializers/issue_entity_spec.rb263spec/lib/gitlab/ci/config/entry/reports_spec.rb264spec/models/hooks/system_hook_spec.rb265spec/lib/gitlab/background_migration/backfill_group_features_spec.rb266spec/lib/gitlab/version_info_spec.rb267spec/models/merge_request_diff_file_spec.rb268spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb269spec/workers/remove_expired_group_links_worker_spec.rb270spec/graphql/mutations/releases/create_spec.rb271spec/models/import_export_upload_spec.rb272spec/lib/gitlab/ci/config/entry/bridge_spec.rb273spec/services/merge_requests/post_merge_service_spec.rb274spec/services/merge_requests/retarget_chain_service_spec.rb275spec/models/user_preference_spec.rb276spec/lib/gitlab/git/diff_spec.rb277spec/models/ci/resource_spec.rb278spec/lib/gitlab/redis/duplicate_jobs_spec.rb279spec/lib/api/helpers/caching_spec.rb280spec/models/concerns/schedulable_spec.rb281spec/helpers/packages_helper_spec.rb282spec/models/plan_limits_spec.rb283spec/services/ci/pipeline_artifacts/destroy_all_expired_service_spec.rb284spec/services/clusters/applications/uninstall_service_spec.rb285spec/models/concerns/redactable_spec.rb286spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb287spec/services/clusters/applications/install_service_spec.rb288spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb289spec/services/issues/resolve_discussions_spec.rb290spec/lib/gitlab/ci/config/entry/release_spec.rb291spec/services/metrics/dashboard/annotations/delete_service_spec.rb292spec/lib/gitlab/ci/pipeline/chain/ensure_resource_groups_spec.rb293spec/lib/gitlab/performance_bar_spec.rb294spec/finders/packages/tags_finder_spec.rb295spec/models/diff_viewer/base_spec.rb296spec/uploaders/file_mover_spec.rb297spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb298spec/services/clusters/applications/upgrade_service_spec.rb299spec/workers/new_merge_request_worker_spec.rb300spec/finders/design_management/versions_finder_spec.rb301spec/lib/gitlab/repository_cache_spec.rb302spec/lib/gitlab/ci/config/external/context_spec.rb303spec/models/packages/maven/metadatum_spec.rb304spec/services/users/create_service_spec.rb305spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb306spec/serializers/deployment_cluster_entity_spec.rb307spec/graphql/resolvers/board_resolver_spec.rb308spec/lib/gitlab/database/background_migration/prometheus_metrics_spec.rb309spec/views/notify/pipeline_success_email.html.haml_spec.rb310spec/workers/merge_requests/close_issue_worker_spec.rb311spec/services/error_tracking/issue_details_service_spec.rb312spec/services/lfs/unlock_file_service_spec.rb313spec/lib/gitlab/robots_txt/parser_spec.rb314spec/lib/gitlab/object_hierarchy_spec.rb315spec/graphql/resolvers/user_notes_count_resolver_spec.rb316spec/lib/gitlab/quick_actions/command_definition_spec.rb317spec/lib/gitlab/database/query_analyzer_spec.rb318spec/services/merge_requests/add_context_service_spec.rb319spec/lib/gitlab/database/gitlab_schema_spec.rb320spec/presenters/group_member_presenter_spec.rb321spec/graphql/resolvers/group_issues_resolver_spec.rb322spec/lib/gitlab/diff/rendered/notebook/diff_file_helper_spec.rb323spec/lib/api/entities/ci/pipeline_spec.rb324spec/serializers/evidences/evidence_entity_spec.rb325spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_first_mentioned_in_commit_spec.rb326spec/workers/stage_update_worker_spec.rb327spec/workers/merge_request_mergeability_check_worker_spec.rb328spec/lib/gitlab/ci/ansi2json/line_spec.rb329spec/lib/gitlab/ci/pipeline/seed/build/cache_spec.rb330spec/models/project_deploy_token_spec.rb331spec/lib/gitlab/ci/status/stage/common_spec.rb332spec/services/two_factor/destroy_service_spec.rb333spec/workers/background_migration/ci_database_worker_spec.rb334spec/services/concerns/rate_limited_service_spec.rb335spec/lib/sidebars/menu_spec.rb336spec/lib/gitlab/database/postgres_hll/batch_distinct_counter_spec.rb337spec/models/custom_emoji_spec.rb338spec/views/projects/jobs/show.html.haml_spec.rb339spec/lib/bulk_imports/common/pipelines/badges_pipeline_spec.rb340spec/lib/gitlab/ci/templates/5_minute_production_app_ci_yaml_spec.rb341spec/services/packages/maven/create_package_service_spec.rb342spec/lib/api/entities/project_import_status_spec.rb343spec/lib/gitlab/marker_range_spec.rb344spec/lib/gitlab/usage/metrics/name_suggestion_spec.rb345spec/services/ci/create_pipeline_service/parallel_spec.rb346spec/services/namespaces/statistics_refresher_service_spec.rb347spec/lib/gitlab/jira_import/base_importer_spec.rb348spec/serializers/rollout_status_entity_spec.rb349spec/graphql/mutations/incident_management/timeline_event/create_spec.rb350spec/finders/bulk_imports/imports_finder_spec.rb351spec/lib/gitlab/config/entry/factory_spec.rb352spec/serializers/label_serializer_spec.rb353spec/services/design_management/move_designs_service_spec.rb354spec/workers/expire_build_artifacts_worker_spec.rb355spec/uploaders/gitlab_uploader_spec.rb356spec/models/integrations/chat_message/push_message_spec.rb357spec/tasks/gitlab/gitaly_rake_spec.rb358spec/views/projects/issues/_issue.html.haml_spec.rb359spec/policies/clusters/agent_token_policy_spec.rb360spec/views/projects/settings/integrations/edit.html.haml_spec.rb361spec/workers/hashed_storage/rollbacker_worker_spec.rb362spec/lib/gitlab/health_checks/probes/collection_spec.rb363spec/lib/gitlab/web_ide/config_spec.rb364spec/lib/gitlab/ci/trace/remote_checksum_spec.rb365spec/tasks/gitlab/x509/update_rake_spec.rb366spec/lib/gitlab/ci/pipeline/expression/lexeme/equals_spec.rb367spec/services/packages/terraform_module/create_package_service_spec.rb368spec/lib/gitlab/container_repository/tags/cache_spec.rb369spec/workers/pipeline_notification_worker_spec.rb370spec/lib/gitlab/allowable_spec.rb371spec/lib/gitlab/template/metrics_dashboard_template_spec.rb372spec/lib/banzai/filter/table_of_contents_tag_filter_spec.rb373spec/services/events/destroy_service_spec.rb374spec/lib/gitlab/auth/atlassian/identity_linker_spec.rb375spec/lib/gitlab/ci/status/build/canceled_spec.rb376spec/lib/gitlab/kubernetes/config_map_spec.rb377spec/tasks/tokens_spec.rb378spec/lib/gitlab/import_export/avatar_restorer_spec.rb379spec/workers/build_success_worker_spec.rb380spec/graphql/types/alert_management/status_enum_spec.rb381spec/lib/gitlab/ci/config/entry/caches_spec.rb382spec/views/shared/projects/_project.html.haml_spec.rb383spec/lib/gitlab/kubernetes/helm/v2/certificate_spec.rb384spec/lib/gitlab/color_schemes_spec.rb385spec/models/fork_network_member_spec.rb386spec/lib/gitlab/fips_spec.rb387spec/services/resource_events/synthetic_state_notes_builder_service_spec.rb388spec/services/lfs/push_service_spec.rb389spec/workers/packages/cleanup_package_registry_worker_spec.rb390spec/validators/branch_filter_validator_spec.rb391spec/lib/gitlab/database/postgres_partition_spec.rb392spec/policies/timelog_policy_spec.rb393spec/workers/concerns/packages/cleanup_artifact_worker_spec.rb394spec/services/users/dismiss_group_callout_service_spec.rb395spec/graphql/resolvers/metrics/dashboards/annotation_resolver_spec.rb396spec/views/admin/sessions/new.html.haml_spec.rb397spec/graphql/types/group_invitation_type_spec.rb398spec/graphql/types/diff_refs_type_spec.rb399spec/services/merge_requests/mergeability/check_discussions_status_service_spec.rb400spec/lib/bitbucket/representation/comment_spec.rb401spec/lib/gitlab/metrics/dashboard/stages/url_validator_spec.rb402spec/lib/gitlab/routing_spec.rb403spec/services/resource_events/merge_into_notes_service_spec.rb404spec/lib/bulk_imports/projects/pipelines/project_attributes_pipeline_spec.rb405spec/views/projects/jobs/_generic_commit_status.html.haml_spec.rb406spec/views/admin/application_settings/repository.html.haml_spec.rb407spec/views/projects/environments/terminal.html.haml_spec.rb408spec/lib/gitlab/hook_data/project_builder_spec.rb409spec/services/personal_access_tokens/revoke_service_spec.rb410spec/helpers/sidekiq_helper_spec.rb411spec/finders/packages/helm/packages_finder_spec.rb412spec/services/snippets/repository_validation_service_spec.rb413spec/workers/gitlab/github_import/import_pull_request_review_worker_spec.rb414spec/models/approval_spec.rb415spec/serializers/project_serializer_spec.rb416spec/lib/gitlab/ci/build/releaser_spec.rb417spec/services/metrics/users_starred_dashboards/delete_service_spec.rb418spec/lib/gitlab/backtrace_cleaner_spec.rb419spec/policies/identity_provider_policy_spec.rb420spec/workers/propagate_integration_group_worker_spec.rb421spec/graphql/types/packages/composer/json_type_spec.rb422spec/lib/api/entities/plan_limit_spec.rb423spec/graphql/types/design_management/design_at_version_type_spec.rb424spec/lib/bulk_imports/projects/graphql/get_project_query_spec.rb425spec/workers/analytics/usage_trends/counter_job_worker_spec.rb426spec/lib/gitlab/code_navigation_path_spec.rb427spec/helpers/stat_anchors_helper_spec.rb428spec/routing/uploads_routing_spec.rb429spec/graphql/types/ci/runner_web_url_edge_spec.rb430spec/lib/gitlab/service_desk_spec.rb431spec/lib/peek/views/rugged_spec.rb432spec/serializers/merge_request_sidebar_basic_entity_spec.rb433spec/workers/auto_merge_process_worker_spec.rb434spec/models/packages/composer/metadatum_spec.rb435spec/helpers/tracking_helper_spec.rb436spec/lib/gitlab/import_export/design_repo_restorer_spec.rb437spec/graphql/resolvers/commit_pipelines_resolver_spec.rb438spec/models/chat_team_spec.rb439spec/lib/gitlab/auth/atlassian/auth_hash_spec.rb440spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb441spec/initializers/settings_spec.rb442spec/models/bulk_imports/configuration_spec.rb443spec/lib/banzai/filter/kroki_filter_spec.rb444spec/graphql/types/grafana_integration_type_spec.rb445spec/models/gpg_key_subkey_spec.rb446spec/graphql/types/issue_sort_enum_spec.rb447spec/serializers/ci/variable_entity_spec.rb448spec/lib/gitlab/repository_archive_rate_limiter_spec.rb449spec/graphql/types/permission_types/merge_request_type_spec.rb450spec/lib/gitlab/email/message/in_product_marketing/verify_spec.rb451spec/models/namespace/admin_note_spec.rb452spec/models/concerns/token_authenticatable_strategies/base_spec.rb453spec/lib/sidebars/groups/menus/kubernetes_menu_spec.rb454spec/rubocop/cop/graphql/graphql_name_position_spec.rb455spec/lib/api/entities/branch_spec.rb456spec/lib/gitlab/import_export/version_checker_spec.rb457spec/services/protected_tags/destroy_service_spec.rb458spec/graphql/types/award_emojis/award_emoji_type_spec.rb459spec/graphql/types/permission_types/snippet_spec.rb460spec/serializers/analytics_issue_serializer_spec.rb461spec/serializers/feature_flags_client_serializer_spec.rb462spec/support_specs/time_travel_spec.rb463spec/lib/gitlab/kroki_spec.rb464spec/lib/banzai/filter_array_spec.rb465spec/services/keys/destroy_service_spec.rb466spec/serializers/import/bitbucket_server_provider_repo_entity_spec.rb467spec/lib/gitlab/lazy_spec.rb468spec/workers/disallow_two_factor_for_subgroups_worker_spec.rb469spec/serializers/evidences/issue_entity_spec.rb470spec/lib/mattermost/command_spec.rb471spec/graphql/types/ci/runner_platform_type_spec.rb472spec/graphql/types/customer_relations/organization_type_spec.rb473spec/graphql/types/snippets/blob_action_enum_spec.rb474spec/lib/gitlab/with_request_store_spec.rb475spec/graphql/types/ci/job_artifact_file_type_enum_spec.rb476spec/services/users/validate_push_otp_service_spec.rb477spec/graphql/types/ci/test_report_summary_type_spec.rb478spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy_spec.rb479spec/graphql/types/alert_management/severity_enum_spec.rb480spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb481spec/workers/todos_destroyer/group_private_worker_spec.rb482spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb483spec/rubocop/cop/sidekiq_options_queue_spec.rb484spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb485spec/lib/gitlab/graphql/tracers/logger_tracer_spec.rb486spec/lib/gitlab/auth/otp/strategies/devise_spec.rb487spec/lib/api/entities/projects/repository_storage_move_spec.rb488spec/graphql/types/work_items/widgets/hierarchy_type_spec.rb489spec/serializers/project_mirror_serializer_spec.rb490spec/models/awareness_session_spec.rb491Filter specs:492Running specs:493Running all node tests without filter494spec/services/notification_service_spec.rb495spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb496spec/models/commit_spec.rb497spec/lib/banzai/filter/references/milestone_reference_filter_spec.rb498spec/lib/gitlab/background_migration/backfill_namespace_traversal_ids_children_spec.rb499spec/lib/gitlab/gfm/reference_rewriter_spec.rb500spec/lib/gitlab/background_migration/migrate_project_taggings_context_from_tags_to_topics_spec.rb501spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb502spec/finders/todos_finder_spec.rb503spec/services/resource_access_tokens/create_service_spec.rb504spec/lib/gitlab/bitbucket_server_import/importer_spec.rb505spec/lib/service_ping/build_payload_spec.rb506spec/lib/gitlab/url_builder_spec.rb507spec/uploaders/avatar_uploader_spec.rb508spec/services/projects/lfs_pointers/lfs_download_service_spec.rb509spec/lib/gitlab/gitaly_client/repository_service_spec.rb510spec/finders/user_recent_events_finder_spec.rb511spec/models/projects/build_artifacts_size_refresh_spec.rb512spec/services/post_receive_service_spec.rb513spec/models/resource_label_event_spec.rb514spec/lib/gitlab/git/tree_spec.rb515spec/models/merge_request_diff_commit_spec.rb516spec/graphql/resolvers/board_list_issues_resolver_spec.rb517spec/services/lfs/file_transformer_spec.rb518spec/serializers/issue_entity_spec.rb519spec/lib/gitlab/ci/config/entry/reports_spec.rb520spec/models/hooks/system_hook_spec.rb521spec/lib/gitlab/background_migration/backfill_group_features_spec.rb522spec/lib/gitlab/version_info_spec.rb523spec/models/merge_request_diff_file_spec.rb524spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb525spec/workers/remove_expired_group_links_worker_spec.rb526spec/graphql/mutations/releases/create_spec.rb527spec/models/import_export_upload_spec.rb528spec/lib/gitlab/ci/config/entry/bridge_spec.rb529spec/services/merge_requests/post_merge_service_spec.rb530spec/services/merge_requests/retarget_chain_service_spec.rb531spec/models/user_preference_spec.rb532spec/lib/gitlab/git/diff_spec.rb533spec/models/ci/resource_spec.rb534spec/lib/gitlab/redis/duplicate_jobs_spec.rb535spec/lib/api/helpers/caching_spec.rb536spec/models/concerns/schedulable_spec.rb537spec/helpers/packages_helper_spec.rb538spec/models/plan_limits_spec.rb539spec/services/ci/pipeline_artifacts/destroy_all_expired_service_spec.rb540spec/services/clusters/applications/uninstall_service_spec.rb541spec/models/concerns/redactable_spec.rb542spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb543spec/services/clusters/applications/install_service_spec.rb544spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb545spec/services/issues/resolve_discussions_spec.rb546spec/lib/gitlab/ci/config/entry/release_spec.rb547spec/services/metrics/dashboard/annotations/delete_service_spec.rb548spec/lib/gitlab/ci/pipeline/chain/ensure_resource_groups_spec.rb549spec/lib/gitlab/performance_bar_spec.rb550spec/finders/packages/tags_finder_spec.rb551spec/models/diff_viewer/base_spec.rb552spec/uploaders/file_mover_spec.rb553spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb554spec/services/clusters/applications/upgrade_service_spec.rb555spec/workers/new_merge_request_worker_spec.rb556spec/finders/design_management/versions_finder_spec.rb557spec/lib/gitlab/repository_cache_spec.rb558spec/lib/gitlab/ci/config/external/context_spec.rb559spec/models/packages/maven/metadatum_spec.rb560spec/services/users/create_service_spec.rb561spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb562spec/serializers/deployment_cluster_entity_spec.rb563spec/graphql/resolvers/board_resolver_spec.rb564spec/lib/gitlab/database/background_migration/prometheus_metrics_spec.rb565spec/views/notify/pipeline_success_email.html.haml_spec.rb566spec/workers/merge_requests/close_issue_worker_spec.rb567spec/services/error_tracking/issue_details_service_spec.rb568spec/services/lfs/unlock_file_service_spec.rb569spec/lib/gitlab/robots_txt/parser_spec.rb570spec/lib/gitlab/object_hierarchy_spec.rb571spec/graphql/resolvers/user_notes_count_resolver_spec.rb572spec/lib/gitlab/quick_actions/command_definition_spec.rb573spec/lib/gitlab/database/query_analyzer_spec.rb574spec/services/merge_requests/add_context_service_spec.rb575spec/lib/gitlab/database/gitlab_schema_spec.rb576spec/presenters/group_member_presenter_spec.rb577spec/graphql/resolvers/group_issues_resolver_spec.rb578spec/lib/gitlab/diff/rendered/notebook/diff_file_helper_spec.rb579spec/lib/api/entities/ci/pipeline_spec.rb580spec/serializers/evidences/evidence_entity_spec.rb581spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_first_mentioned_in_commit_spec.rb582spec/workers/stage_update_worker_spec.rb583spec/workers/merge_request_mergeability_check_worker_spec.rb584spec/lib/gitlab/ci/ansi2json/line_spec.rb585spec/lib/gitlab/ci/pipeline/seed/build/cache_spec.rb586spec/models/project_deploy_token_spec.rb587spec/lib/gitlab/ci/status/stage/common_spec.rb588spec/services/two_factor/destroy_service_spec.rb589spec/workers/background_migration/ci_database_worker_spec.rb590spec/services/concerns/rate_limited_service_spec.rb591spec/lib/sidebars/menu_spec.rb592spec/lib/gitlab/database/postgres_hll/batch_distinct_counter_spec.rb593spec/models/custom_emoji_spec.rb594spec/views/projects/jobs/show.html.haml_spec.rb595spec/lib/bulk_imports/common/pipelines/badges_pipeline_spec.rb596spec/lib/gitlab/ci/templates/5_minute_production_app_ci_yaml_spec.rb597spec/services/packages/maven/create_package_service_spec.rb598spec/lib/api/entities/project_import_status_spec.rb599spec/lib/gitlab/marker_range_spec.rb600spec/lib/gitlab/usage/metrics/name_suggestion_spec.rb601spec/services/ci/create_pipeline_service/parallel_spec.rb602spec/services/namespaces/statistics_refresher_service_spec.rb603spec/lib/gitlab/jira_import/base_importer_spec.rb604spec/serializers/rollout_status_entity_spec.rb605spec/graphql/mutations/incident_management/timeline_event/create_spec.rb606spec/finders/bulk_imports/imports_finder_spec.rb607spec/lib/gitlab/config/entry/factory_spec.rb608spec/serializers/label_serializer_spec.rb609spec/services/design_management/move_designs_service_spec.rb610spec/workers/expire_build_artifacts_worker_spec.rb611spec/uploaders/gitlab_uploader_spec.rb612spec/models/integrations/chat_message/push_message_spec.rb613spec/tasks/gitlab/gitaly_rake_spec.rb614spec/views/projects/issues/_issue.html.haml_spec.rb615spec/policies/clusters/agent_token_policy_spec.rb616spec/views/projects/settings/integrations/edit.html.haml_spec.rb617spec/workers/hashed_storage/rollbacker_worker_spec.rb618spec/lib/gitlab/health_checks/probes/collection_spec.rb619spec/lib/gitlab/web_ide/config_spec.rb620spec/lib/gitlab/ci/trace/remote_checksum_spec.rb621spec/tasks/gitlab/x509/update_rake_spec.rb622spec/lib/gitlab/ci/pipeline/expression/lexeme/equals_spec.rb623spec/services/packages/terraform_module/create_package_service_spec.rb624spec/lib/gitlab/container_repository/tags/cache_spec.rb625spec/workers/pipeline_notification_worker_spec.rb626spec/lib/gitlab/allowable_spec.rb627spec/lib/gitlab/template/metrics_dashboard_template_spec.rb628spec/lib/banzai/filter/table_of_contents_tag_filter_spec.rb629spec/services/events/destroy_service_spec.rb630spec/lib/gitlab/auth/atlassian/identity_linker_spec.rb631spec/lib/gitlab/ci/status/build/canceled_spec.rb632spec/lib/gitlab/kubernetes/config_map_spec.rb633spec/tasks/tokens_spec.rb634spec/lib/gitlab/import_export/avatar_restorer_spec.rb635spec/workers/build_success_worker_spec.rb636spec/graphql/types/alert_management/status_enum_spec.rb637spec/lib/gitlab/ci/config/entry/caches_spec.rb638spec/views/shared/projects/_project.html.haml_spec.rb639spec/lib/gitlab/kubernetes/helm/v2/certificate_spec.rb640spec/lib/gitlab/color_schemes_spec.rb641spec/models/fork_network_member_spec.rb642spec/lib/gitlab/fips_spec.rb643spec/services/resource_events/synthetic_state_notes_builder_service_spec.rb644spec/services/lfs/push_service_spec.rb645spec/workers/packages/cleanup_package_registry_worker_spec.rb646spec/validators/branch_filter_validator_spec.rb647spec/lib/gitlab/database/postgres_partition_spec.rb648spec/policies/timelog_policy_spec.rb649spec/workers/concerns/packages/cleanup_artifact_worker_spec.rb650spec/services/users/dismiss_group_callout_service_spec.rb651spec/graphql/resolvers/metrics/dashboards/annotation_resolver_spec.rb652spec/views/admin/sessions/new.html.haml_spec.rb653spec/graphql/types/group_invitation_type_spec.rb654spec/graphql/types/diff_refs_type_spec.rb655spec/services/merge_requests/mergeability/check_discussions_status_service_spec.rb656spec/lib/bitbucket/representation/comment_spec.rb657spec/lib/gitlab/metrics/dashboard/stages/url_validator_spec.rb658spec/lib/gitlab/routing_spec.rb659spec/services/resource_events/merge_into_notes_service_spec.rb660spec/lib/bulk_imports/projects/pipelines/project_attributes_pipeline_spec.rb661spec/views/projects/jobs/_generic_commit_status.html.haml_spec.rb662spec/views/admin/application_settings/repository.html.haml_spec.rb663spec/views/projects/environments/terminal.html.haml_spec.rb664spec/lib/gitlab/hook_data/project_builder_spec.rb665spec/services/personal_access_tokens/revoke_service_spec.rb666spec/helpers/sidekiq_helper_spec.rb667spec/finders/packages/helm/packages_finder_spec.rb668spec/services/snippets/repository_validation_service_spec.rb669spec/workers/gitlab/github_import/import_pull_request_review_worker_spec.rb670spec/models/approval_spec.rb671spec/serializers/project_serializer_spec.rb672spec/lib/gitlab/ci/build/releaser_spec.rb673spec/services/metrics/users_starred_dashboards/delete_service_spec.rb674spec/lib/gitlab/backtrace_cleaner_spec.rb675spec/policies/identity_provider_policy_spec.rb676spec/workers/propagate_integration_group_worker_spec.rb677spec/graphql/types/packages/composer/json_type_spec.rb678spec/lib/api/entities/plan_limit_spec.rb679spec/graphql/types/design_management/design_at_version_type_spec.rb680spec/lib/bulk_imports/projects/graphql/get_project_query_spec.rb681spec/workers/analytics/usage_trends/counter_job_worker_spec.rb682spec/lib/gitlab/code_navigation_path_spec.rb683spec/helpers/stat_anchors_helper_spec.rb684spec/routing/uploads_routing_spec.rb685spec/graphql/types/ci/runner_web_url_edge_spec.rb686spec/lib/gitlab/service_desk_spec.rb687spec/lib/peek/views/rugged_spec.rb688spec/serializers/merge_request_sidebar_basic_entity_spec.rb689spec/workers/auto_merge_process_worker_spec.rb690spec/models/packages/composer/metadatum_spec.rb691spec/helpers/tracking_helper_spec.rb692spec/lib/gitlab/import_export/design_repo_restorer_spec.rb693spec/graphql/resolvers/commit_pipelines_resolver_spec.rb694spec/models/chat_team_spec.rb695spec/lib/gitlab/auth/atlassian/auth_hash_spec.rb696spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb697spec/initializers/settings_spec.rb698spec/models/bulk_imports/configuration_spec.rb699spec/lib/banzai/filter/kroki_filter_spec.rb700spec/graphql/types/grafana_integration_type_spec.rb701spec/models/gpg_key_subkey_spec.rb702spec/graphql/types/issue_sort_enum_spec.rb703spec/serializers/ci/variable_entity_spec.rb704spec/lib/gitlab/repository_archive_rate_limiter_spec.rb705spec/graphql/types/permission_types/merge_request_type_spec.rb706spec/lib/gitlab/email/message/in_product_marketing/verify_spec.rb707spec/models/namespace/admin_note_spec.rb708spec/models/concerns/token_authenticatable_strategies/base_spec.rb709spec/lib/sidebars/groups/menus/kubernetes_menu_spec.rb710spec/rubocop/cop/graphql/graphql_name_position_spec.rb711spec/lib/api/entities/branch_spec.rb712spec/lib/gitlab/import_export/version_checker_spec.rb713spec/services/protected_tags/destroy_service_spec.rb714spec/graphql/types/award_emojis/award_emoji_type_spec.rb715spec/graphql/types/permission_types/snippet_spec.rb716spec/serializers/analytics_issue_serializer_spec.rb717spec/serializers/feature_flags_client_serializer_spec.rbKnapsack report generator started!718DEPRECATION WARNING: /builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/activerecord-6.1.4.7/lib/active_record/connection_adapters/postgresql_adapter.rb:78: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call719/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/pg-1.3.5/lib/pg.rb:68: warning: The called method `connect' is defined here720 (called from new_client at /builds/gitlab-org/gitlab/config/initializers/00_connection_logger.rb:21)721Run options: exclude {:quarantine=>true, :level=>"migration"}722Test environment set up in 0.53248855 seconds723NotificationService724 #async725 returns an Async object with the correct parent726 when receiving a public method727 schedules a MailScheduler::NotificationServiceWorker728 when receiving a private method729 raises NoMethodError730 when receiving a non-existent method731 raises NoMethodError732 Keys733 #new_key734 sends email to key owner735 never emails the ghost user736 does not send email to key owner737 GpgKeys738 #new_gpg_key739 sends email to key owner740 never emails the ghost user741 does not send email to key owner742 AccessToken743 #access_token_created744 sends email to the token owner745 when user is not allowed to receive notifications746 does not send email to the token owner747 #access_token_about_to_expire748 sends email to the token owner749 #access_token_expired750 sends email to the token owner751 when user is not allowed to receive notifications752 does not send email to the token owner753 SSH Keys754 #ssh_key_expired755 sends email to the token owner756 when user is not allowed to receive notifications757 does not send email to the token owner758 #ssh_key_expiring_soon759 sends email to the token owner760 when user is not allowed to receive notifications761 does not send email to the token owner762 #unknown_sign_in763 sends email to the user764 #disabled_two_factor765 sends email to the user766 #new_email_address_added767 sends email to the user768 Notes769 issue note770 issue_email_participants771 behaves like no participants are notified772 does not send the email773 behaves like notification with exact metric events774 adds metric event775 do exist and note not confidential776 sends the email777 behaves like notification with exact metric events778 adds metric event779 do exist and note is confidential780 behaves like no participants are notified781 does not send the email782 behaves like notification with exact metric events783 adds metric event784 #new_note785 filters out "mentioned in" notes786 with users787 sends emails to recipients788 emails the note author if they've opted into notifications about their activity789 behaves like project emails are disabled790 sends no emails with project emails disabled791 sends emails to someone792 participating793 by note794 is expected not to have enqueued job795 in project that belongs to a group796 which is a top-level group797 behaves like new note notifications798 sends notifications799 behaves like project emails are disabled800 sends no emails with project emails disabled801 sends emails to someone802 which is a subgroup803 overrides child objects with global level804 behaves like new note notifications805 sends notifications806 confidential issue note807 filters out users that can not read the issue808 on project that belongs to subgroup809 when user is group guest member810 does not email guest user811 issue note mention812 #new_note813 notifies the team members814 notifies parent group members with mention level815 filters out "mentioned in" notes816 behaves like project emails are disabled817 sends no emails with project emails disabled818 sends emails to someone819 when note is confidential820 does not notify users that cannot read note821 project snippet note822 #new_note823 notifies the team members824 personal snippet note825 #new_note826 notifies the participants827 commit note828 #new_note, #perform_enqueued_jobs829 is expected to eq 0830 is expected to eq 0831 is expected to eq 0832 behaves like project emails are disabled833 sends no emails with project emails disabled834 sends emails to someone835 merge request diff note836 #new_note837 records sent notifications838 behaves like project emails are disabled839 sends no emails with project emails disabled840 sends emails to someone841 design diff note842 design management is enabled843 sends new note notifications844 design management is disabled845 does not notify anyone846 #send_new_release_notifications847 when release author is blocked848 does not send any notification849 when release author is a ghost850 does not send any notification851 when recipients for a new release exist852 notifies the expected users853 Participating project notification settings have priority over group and global settings if available854 custom on group855 does not send an email to user1 when a new issue is created and new_issue is set to nil856 does not send an email to user1 when a new issue is created and new_issue is set to true857 watch on group858 does not send an email859 custom on global, global on group860 does not send an email861 watch on global, global on group862 does not send an email863 Issues864 #new_issue865 notifies the expected users866 is expected to eq 0867 properly prioritizes notification reason868 adds "assigned" reason for assignees if any869 emails any mentioned users with the mention level870 emails the author if they've opted into notifications about their activity871 doesn't email the author if they haven't opted into notifications about their activity872 emails subscribers of the issue's labels873 adds "subscribed" reason to subscriber emails874 behaves like project emails are disabled875 sends no emails with project emails disabled876 sends emails to someone877 confidential issues878 emails subscribers of the issue's labels that can read the issue879 when the author is not allowed to trigger notifications880 because they are blocked881 does not send any notification882 because they are a ghost883 does not send any notification884 #new_mentions_in_issue885 sends no emails when no new mentions are present886 emails new mentions with a watch level higher than mention887 does not email new mentions with a watch level equal to or less than mention888 emails new mentions despite being unsubscribed889 sends the proper notification reason header890 behaves like project emails are disabled891 sends no emails with project emails disabled892 sends emails to someone893 where current_user is blocked894 does not send any notification895 where current_user is a ghost896 does not send any notification897 #reassigned_issue898 emails new assignee899 adds "assigned" reason for new assignee900 emails previous assignee even if they have the "on mention" notif level901 emails new assignee even if they have the "on mention" notif level902 does not email new assignee if they are the current user903 behaves like participating notifications904 behaves like participating by note notification905 emails the participant906 for subgroups907 emails the participant908 behaves like participating by author notification909 emails the participant910 behaves like participating by assignee notification911 emails the participant912 behaves like participating by confidential note notification913 when user is mentioned on confidential note914 only emails authorized users915 behaves like project emails are disabled916 sends no emails with project emails disabled917 sends emails to someone918 #relabeled_issue919 emails the current user if they've opted into notifications about their activity920 doesn't email the current user if they haven't opted into notifications about their activity921 doesn't send email to anyone but subscribers of the given labels922 doesn't send multiple email when a user is subscribed to multiple given labels923 behaves like project emails are disabled924 sends no emails with project emails disabled925 sends emails to someone926 confidential issues927 emails subscribers of the issue's labels that can read the issue928 #removed_milestone_issue930 behaves like altered milestone notification on issue931 sends the email to the correct people932 behaves like project emails are disabled933 sends no emails with project emails disabled934 sends emails to someone935 behaves like participating by confidential note notification936 when user is mentioned on confidential note937 only emails authorized users938 confidential issues939 emails subscribers of the issue's milestone that can read the issue940 #changed_milestone_issue942 behaves like altered milestone notification on issue943 sends the email to the correct people944 behaves like project emails are disabled945 sends no emails with project emails disabled946 sends emails to someone947 confidential issues948 emails subscribers of the issue's milestone that can read the issue949 #close_issue950 sends email to issue assignee and issue author951 adds "subscribed" reason to subscriber emails952 behaves like participating notifications953 behaves like participating by note notification954 emails the participant955 for subgroups956 emails the participant957 behaves like participating by author notification958 emails the participant959 behaves like participating by assignee notification960 emails the participant961 behaves like project emails are disabled962 sends no emails with project emails disabled963 sends emails to someone964 behaves like participating by confidential note notification965 when user is mentioned on confidential note966 only emails authorized users967 #reopen_issue968 sends email to issue notification recipients969 behaves like participating notifications970 behaves like participating by note notification971 emails the participant972 for subgroups973 emails the participant974 behaves like participating by author notification975 emails the participant976 behaves like participating by assignee notification977 emails the participant978 behaves like participating by confidential note notification979 when user is mentioned on confidential note980 only emails authorized users981 behaves like project emails are disabled982 sends no emails with project emails disabled983 sends emails to someone984 #issue_moved985 sends email to issue notification recipients986 behaves like participating notifications987 behaves like participating by note notification988 emails the participant989 for subgroups990 emails the participant991 behaves like participating by author notification992 emails the participant993 behaves like participating by assignee notification994 emails the participant995 behaves like participating by confidential note notification996 when user is mentioned on confidential note997 only emails authorized users998 behaves like project emails are disabled999 sends no emails with project emails disabled1000 sends emails to someone1001 #issue_cloned1002 sends email to issue notification recipients1003 behaves like participating notifications1004 behaves like participating by note notification1005 emails the participant1006 for subgroups1007 emails the participant1008 behaves like participating by author notification1009 emails the participant1010 behaves like participating by assignee notification1011 emails the participant1012 behaves like participating by confidential note notification1013 when user is mentioned on confidential note1014 only emails authorized users1015 behaves like project emails are disabled1016 sends no emails with project emails disabled1017 sends emails to someone1018 #issue_due1019 sends email to issue notification recipients, excluding watchers1020 sends the email from the author1021 behaves like participating notifications1022 behaves like participating by note notification1023 emails the participant1024 for subgroups1025 emails the participant1026 behaves like participating by author notification1027 emails the participant1028 behaves like participating by assignee notification1029 emails the participant1030 behaves like participating by confidential note notification1031 when user is mentioned on confidential note1032 only emails authorized users1033 behaves like project emails are disabled1034 sends no emails with project emails disabled1035 sends emails to someone1036 Merge Requests1037 #new_merge_request1038 is expected to eq 01039 adds "assigned" reason for assignee, if any1040 emails any mentioned users with the mention level1041 emails the author if they've opted into notifications about their activity1042 doesn't email the author if they haven't opted into notifications about their activity1043 emails subscribers of the merge request's labels1044 behaves like project emails are disabled1045 sends no emails with project emails disabled1046 sends emails to someone1047 Approvals1048 #approve_mr1049 will notify the author, subscribers, and assigned users1050 #unapprove_mr1051 will notify the author, subscribers, and assigned users1052 participating1053 behaves like participating by assignee notification1054 emails the participant1055 behaves like participating by note notification1056 emails the participant1057 for subgroups1058 emails the participant1059 by author1060 is expected to eq 01061 when the author is not allowed to trigger notifications1062 because they are blocked1063 behaves like is not able to send notifications1064 does not send any notification1065 because they are a ghost1066 behaves like is not able to send notifications1067 does not send any notification1068 #new_mentions_in_merge_request1069 sends no emails when no new mentions are present1070 emails new mentions with a watch level higher than mention1071 does not email new mentions with a watch level equal to or less than mention1072 emails new mentions despite being unsubscribed1073 sends the proper notification reason header1074 behaves like project emails are disabled1075 sends no emails with project emails disabled1076 sends emails to someone1077 where current_user is blocked1078 does not send any notification1079 where current_user is a ghost1080 does not send any notification1081 #reassigned_merge_request1082 is expected to eq 01083 adds "assigned" reason for new assignee1084 behaves like participating notifications1085 behaves like participating by note notification1086 emails the participant1087 for subgroups1088 emails the participant1089 behaves like participating by author notification1090 emails the participant1091 behaves like participating by assignee notification1092 emails the participant1093 behaves like project emails are disabled1094 sends no emails with project emails disabled1095 sends emails to someone1096 #changed_reviewer_of_merge_request1097 sends emails to relevant users only1098 adds "review requested" reason for new reviewer1099 participating notifications with reviewers1100 behaves like participating notifications1101 behaves like participating by note notification1102 emails the participant1103 for subgroups1104 emails the participant1105 behaves like participating by author notification1106 emails the participant1107 behaves like participating by assignee notification1108 emails the participant1109 behaves like participating by reviewer notification1110 emails the participant1111 behaves like project emails are disabled1112 sends no emails with project emails disabled1113 sends emails to someone1114 #change_in_merge_request_draft_status1115 sends emails to relevant users only1116 behaves like participating notifications1117 behaves like participating by note notification1118 emails the participant1119 for subgroups1120 emails the participant1121 behaves like participating by author notification1122 emails the participant1123 behaves like participating by assignee notification1124 emails the participant1125 behaves like project emails are disabled1126 sends no emails with project emails disabled1127 sends emails to someone1128 #push_to_merge_request1129 is expected to eq 01130 triggers push_to_merge_request_email with corresponding email1131 number_of_new_commits: 0, number_of_new_commits_displayed: 01132 triggers the corresponding mailer method with list of stripped commits1133 number_of_new_commits: 18, number_of_new_commits_displayed: 181134 triggers the corresponding mailer method with list of stripped commits1135 number_of_new_commits: 19, number_of_new_commits_displayed: 191136 triggers the corresponding mailer method with list of stripped commits1137 number_of_new_commits: 20, number_of_new_commits_displayed: 201138 triggers the corresponding mailer method with list of stripped commits1139 number_of_new_commits: 21, number_of_new_commits_displayed: 201140 triggers the corresponding mailer method with list of stripped commits1141 number_of_new_commits: 22, number_of_new_commits_displayed: 201142 triggers the corresponding mailer method with list of stripped commits1143 there is only one existing commit1144 triggers corresponding mailer method with only one existing commit1145 behaves like participating notifications1146 behaves like participating by note notification1147 emails the participant1148 for subgroups1149 emails the participant1150 behaves like participating by author notification1151 emails the participant1152 behaves like participating by assignee notification1153 emails the participant1154 behaves like project emails are disabled1155 sends no emails with project emails disabled1156 sends emails to someone1157 #relabel_merge_request1158 doesn't send email to anyone but subscribers of the given labels1159 behaves like project emails are disabled1160 sends no emails with project emails disabled1161 sends emails to someone1162 #removed_milestone_merge_request1163 behaves like altered milestone notification on merge request1164 sends the email to the correct people1165 behaves like project emails are disabled1166 sends no emails with project emails disabled1167 sends emails to someone1168 #changed_milestone_merge_request1169 behaves like altered milestone notification on merge request1170 sends the email to the correct people1171 behaves like project emails are disabled1172 sends no emails with project emails disabled1173 sends emails to someone1174 #merge_request_unmergeable1175 sends email to merge request author1176 behaves like project emails are disabled1177 sends no emails with project emails disabled1178 sends emails to someone1179 when merge_when_pipeline_succeeds is true1180 sends email to merge request author and merge_user1181 #closed_merge_request1182 is expected to eq 01183 behaves like participating notifications1184 behaves like participating by note notification1185 emails the participant1186 for subgroups1187 emails the participant1188 behaves like participating by author notification1189 emails the participant1190 behaves like participating by assignee notification1191 emails the participant1192 behaves like project emails are disabled1193 sends no emails with project emails disabled1194 sends emails to someone1195 #merged_merge_request1196 is expected to eq 01197 notifies the merger when the pipeline succeeds is true1198 does not notify the merger when the pipeline succeeds is false1199 notifies the merger when the pipeline succeeds is false but they've opted into notifications about their activity1200 behaves like participating notifications1201 behaves like participating by note notification1202 emails the participant1203 for subgroups1204 emails the participant1205 behaves like participating by author notification1206 emails the participant1207 behaves like participating by assignee notification1208 emails the participant1209 behaves like project emails are disabled1210 sends no emails with project emails disabled1211 sends emails to someone1212 #reopen_merge_request1213 is expected to eq 01214 behaves like participating notifications1215 behaves like participating by note notification1216 emails the participant1217 for subgroups1218 emails the participant1219 behaves like participating by author notification1220 emails the participant1221 behaves like participating by assignee notification1222 emails the participant1223 behaves like project emails are disabled1224 sends no emails with project emails disabled1225 sends emails to someone1226 #resolve_all_discussions1227 is expected to eq 01228 behaves like participating notifications1229 behaves like participating by note notification1230 emails the participant1231 for subgroups1232 emails the participant1233 behaves like participating by author notification1234 emails the participant1235 behaves like participating by assignee notification1236 emails the participant1237 behaves like project emails are disabled1238 sends no emails with project emails disabled1239 sends emails to someone1240 #merge_when_pipeline_succeeds1241 send notification that merge will happen when pipeline succeeds1242 does not send notification if the custom event is disabled1243 sends notification to participants even if the custom event is disabled1244 behaves like participating notifications1245 behaves like participating by note notification1246 emails the participant1247 for subgroups1248 emails the participant1249 behaves like participating by author notification1250 emails the participant1251 behaves like participating by assignee notification1252 emails the participant1253 behaves like project emails are disabled1254 sends no emails with project emails disabled1255 sends emails to someone1256 #review_requested_of_merge_request1257 sends email to reviewer1258 adds "review requested" reason for new reviewer1259 behaves like project emails are disabled1260 sends no emails with project emails disabled1261 sends emails to someone1262 #attention_requested_of_merge_request1263 sends email to reviewer1264 adds "attention requested" reason1265 behaves like project emails are disabled1266 sends no emails with project emails disabled1267 sends emails to someone1268 Projects1269 #project_was_moved1270 when notifications are disabled1271 does not send a notification1272 with users at both project and group level1273 notifies the expected users1274 behaves like project emails are disabled1275 sends no emails with project emails disabled1276 sends emails to someone1277 users not having access to the new location1278 does not send email1279 user with notifications disabled1280 #project_exported1281 is expected to be empty1282 #project_not_exported1283 is expected to be empty1284 user with notifications enabled1285 #project_exported1286 is expected to eq 11287 behaves like project emails are disabled1288 sends no emails with project emails disabled1289 sends emails to someone1290 #project_not_exported1291 is expected to eq 11292 behaves like project emails are disabled1293 sends no emails with project emails disabled1294 sends emails to someone1295 #invite_member_reminder1296 calls the Notify.invite_member_reminder method with the right params1297 sends exactly one email1298 #new_instance_access_request1299 sends notification only to a maximum of ten most recently active instance admins1300 #user_admin_rejection1301 sends the user a rejection email1302 #user_deactivated1303 sends the user an email1304 GroupMember1305 #new_access_request1306 recipients1307 sends notification only to group owners1308 behaves like group emails are disabled1309 sends no emails with group emails disabled1310 sends emails to someone1311 behaves like sends notification only to a maximum of ten, most recently active group owners1312 limit notification emails1313 sends notification only to a maximum of ten, most recently active group owners1314 #decline_group_invite1315 is expected to change `ActionMailer::Base.deliveries.size` by 11316 #new_group_member1317 sends a notification1318 when notifications are disabled1319 does not send a notification1320 behaves like group emails are disabled1321 sends no emails with group emails disabled1322 sends emails to someone1323 #updated_group_member_expiration1324 emails the user that their group membership expiry has changed1325 ProjectMember1326 #new_access_request1327 for a project in a user namespace1328 recipients1329 sends notification only to project maintainers1330 behaves like project emails are disabled1331 sends no emails with project emails disabled1332 sends emails to someone1333 behaves like sends notification only to a maximum of ten, most recently active project maintainers1334 limit notification emails1335 sends notification only to a maximum of ten, most recently active project maintainers1336 for a project in a group1337 when the project has no maintainers1338 when the group has at least one owner1339 recipients1340 sends notifications to the group owners1341 behaves like sends notification only to a maximum of ten, most recently active group owners1342 limit notification emails1343 sends notification only to a maximum of ten, most recently active group owners1344 when the group does not have any owners1345 recipients1346 does not send any notifications1347 when the project has maintainers1348 recipients1349 sends notifications only to project maintainers1350 behaves like sends notification only to a maximum of ten, most recently active project maintainers1351 limit notification emails1352 sends notification only to a maximum of ten, most recently active project maintainers1353 #decline_project_invite1354 is expected to change `ActionMailer::Base.deliveries.size` by 11355 #new_project_member1356 is expected to eq 11357 behaves like project emails are disabled1358 sends no emails with project emails disabled1359 sends emails to someone1360 when notifications are disabled1361 is expected to be empty1362 guest user in private project1363 filters out guests when new note is created1364 filters out guests when new merge request is created1365 filters out guests when merge request is closed1366 filters out guests when merge request is reopened1367 filters out guests when merge request is merged1368 Pipelines1369 #pipeline_finished1370 with a successful pipeline1371 when the creator has default settings1372 notifies nobody1373 when the creator has watch set1374 notifies nobody1375 when the creator has custom notifications, but without any set1376 notifies nobody1377 when the creator has custom notifications disabled1378 notifies nobody1379 when the creator has custom notifications enabled1380 emails only the creator1381 behaves like project emails are disabled1382 sends no emails with project emails disabled1383 sends emails to someone1384 when the creator has group notification email set1385 sends to group notification email1386 with a failed pipeline1387 when the creator has no custom notification set1388 emails only the creator1389 behaves like project emails are disabled1390 sends no emails with project emails disabled1391 sends emails to someone1392 when the creator has group notification email set1393 sends to group notification email1394 when the creator has watch set1395 emails only the creator1396 when the creator has custom notifications, but without any set1397 emails only the creator1398 when the creator has custom notifications disabled1399 notifies nobody1400 when the creator has custom notifications set1401 emails only the creator1402 when the creator has no read_build access1403 does not send emails1404 with a fixed pipeline1405 when the creator has no custom notification set1406 emails only the creator1407 behaves like project emails are disabled1408 sends no emails with project emails disabled1409 sends emails to someone1410 when the creator has group notification email set1411 sends to group notification email1412 when the creator has watch set1413 emails only the creator1414 when the creator has custom notifications, but without any set1415 emails only the creator1416 when the creator has custom notifications disabled1417 notifies nobody1418 when the creator has custom notifications set1419 emails only the creator1420 Pages domains1421 #pages_domain_enabled1422 emails current watching maintainers and owners1423 emails nobody if the project is missing1424 behaves like project emails are disabled1425 sends no emails with project emails disabled1426 sends emails to someone1427 #pages_domain_disabled1428 emails current watching maintainers and owners1429 emails nobody if the project is missing1430 behaves like project emails are disabled1431 sends no emails with project emails disabled1432 sends emails to someone1433 #pages_domain_verification_succeeded1434 emails current watching maintainers and owners1435 emails nobody if the project is missing1436 behaves like project emails are disabled1437 sends no emails with project emails disabled1438 sends emails to someone1439 #pages_domain_verification_failed1440 emails current watching maintainers and owners1441 emails nobody if the project is missing1442 behaves like project emails are disabled1443 sends no emails with project emails disabled1444 sends emails to someone1445 #pages_domain_auto_ssl_failed1446 emails current watching maintainers and owners1447 emails nobody if the project is missing1448 behaves like project emails are disabled1449 sends no emails with project emails disabled1450 sends emails to someone1451 Auto DevOps notifications1452 #autodevops_disabled1453 emails project owner and user that triggered the pipeline1454 behaves like project emails are disabled1455 sends no emails with project emails disabled1456 sends emails to someone1457 Repository cleanup1458 #repository_cleanup_success1459 emails the specified user only1460 behaves like project emails are disabled1461 sends no emails with project emails disabled1462 sends emails to someone1463 #repository_cleanup_failure1464 emails the specified user only1465 behaves like project emails are disabled1466 sends no emails with project emails disabled1467 sends emails to someone1468 Remote mirror notifications1469 #remote_mirror_update_failed1470 emails current watching maintainers and owners1471 behaves like project emails are disabled1472 sends no emails with project emails disabled1473 sends emails to someone1474 with external authorization service1475 sends email when the service is not enabled1476 when the service is enabled1477 does not send an email1478 with admin user1479 when admin mode is enabled1480 still delivers email to admins1481 when admin mode is disabled1482 does not send an email1483 #prometheus_alerts_fired1484 sends the email to owners and masters1485 behaves like project emails are disabled1486 sends no emails with project emails disabled1487 sends emails to someone1488 #new_review1489 sends emails1490 behaves like project emails are disabled1491 sends no emails with project emails disabled1492 sends emails to someone1493 #inactive_project_deletion_warning1494 sends email to project owners and maintainers1495Commit1496 modules1497 is expected to includes the Mentionable module1498 is expected to includes the Participable module1499 is expected to includes the Referable module1500 is expected to includes the StaticModel module1501 is expected to includes the Presentable module1502 .lazy1503 with project1504 behaves like .lazy checks1505 when the commits are found1506 batches requests for commits1507 maintains ordering1508 does not attempt to replace methods via BatchLoader1509 when not found1510 returns nil as commit1511 with personal snippet1512 behaves like .lazy checks1513 when the commits are found1514 batches requests for commits1515 maintains ordering1516 does not attempt to replace methods via BatchLoader1517 when not found1518 returns nil as commit1519 with project snippet1520 behaves like .lazy checks1521 when the commits are found1522 batches requests for commits1523 maintains ordering1524 does not attempt to replace methods via BatchLoader1525 when not found1526 returns nil as commit1527 #diff_refs1528 is equal to itself1529 from a factory1530 is equal to itself1531 #author1532 looks up the author in a case-insensitive way1533 caches the author1534 with a user with an unconfirmed e-mail1535 returns no user1536 using eager loading1537 executes only two SQL queries1538 preloads the authors for Commits matching a user's primary Email1539 preloads the authors for Commits using a User's alternative Email1540 preloads the authors for Commits using a User's private commit Email1541 preloads the authors for Commits using a User's outdated private commit Email1542 sets the author to Nil if an author could not be found for a Commit1543 does not execute SQL queries once the authors are preloaded1544 #committer1545 with a confirmed e-mail1546 returns the user1547 with an unconfirmed e-mail1548 returns no user1549 returns the user1550 #to_reference1551 with project1552 returns a String reference to the object1553 supports a cross-project reference1554 with personal snippet1555 returns a String reference to the object1556 supports a cross-snippet reference1557 with project snippet1558 returns a String reference to the object1559 supports a cross-snippet project reference1560 .reference_valid?1561 ref: "1234567", result: true1562 is expected to eq true1563 ref: "123456", result: false1564 is expected to eq false1565 ref: "1", result: false1566 is expected to eq false1567 ref: "0000000000000000000000000000000000000000", result: true1568 is expected to eq true1569 ref: "c1acaa58bbcbc3eafe538cb8274ba387047b69f8", result: true1570 is expected to eq true1571 ref: "H1acaa58bbcbc3eafe538cb8274ba387047b69f8", result: false1572 is expected to eq false1573 ref: nil, result: false1574 is expected to eq false1575 #reference_link_text1576 with project1577 returns a String reference to the object1578 supports a cross-project reference1579 with personal snippet1580 returns a String reference to the object1581 supports a cross-snippet reference1582 with project snippet1583 returns a String reference to the object1584 supports a cross-snippet project reference1585 #title1586 returns no_commit_message when safe_message is blank1587 truncates a message without a newline at natural break to 80 characters1588 truncates a message with a newline before 80 characters at the newline1589 does not truncates a message with a newline after 80 but less 100 characters1590 #full_title1591 returns no_commit_message when safe_message is blank1592 returns entire message if there is no newline1593 returns first line of message if there is a newLine1594 truncates html representation if more than 1KiB1595 description1596 returns no_commit_message when safe_message is blank1597 returns description of commit message if title less than 100 characters1598 returns full commit message if commit title more than 100 characters1599 truncates html representation if more than 1Mib1600 delegation1601 is expected to respond to #message1602 is expected to respond to #authored_date1603 is expected to respond to #committed_date1604 is expected to respond to #committer_email1605 is expected to respond to #author_email1606 is expected to respond to #parents1607 is expected to respond to #date1608 is expected to respond to #diffs1609 is expected to respond to #id1610 behaves like a mentionable1611 generates a descriptive back-reference1612 extracts references from its reference property1613 creates cross-reference notes1614 uses the CachedMarkdownField cache instead of the Mentionable cache1615 when there are cached markdown fields1616 sends in cached markdown fields when appropriate1617 #hook_attrs1618 is expected to be a kind of Hash1619 is expected to include "adds bar folder and branch-test text file to check Repository merged_to_root_ref method"1620 is expected to eq "2016-09-27T14:37:46+00:00"1621 is expected to contain exactly "bar/branch-test.txt"1622 is expected to eq []1623 is expected to eq []1624 #cherry_pick_message1625 of a regular commit1626 is expected to include "\n\n(cherry picked from commit 88790590ed1337ab189bccaa355f068481c90bec)"1627 of a merge commit1628 that is found1629 is expected to include "\n(cherry picked from commit 20f7edfbbf356254121d6b4fcd8f8f7c37df04e6)\n\n467dc98f Add new 'videos' directory\n88790590 Upload new video file"1630 that is existing but not found1631 does not include details of the merged commits1632 #reverts_commit?1633 is expected to be falsy1634 commit has no description1635 is expected to be falsy1636 another_commit's description does not revert commit1637 is expected to be falsy1638 another_commit's description reverts commit1639 is expected to be truthy1640 another_commit's description reverts merged merge request1641 is expected to be truthy1642 #participants1643 includes the commit author1644 includes the committer1645 includes the authors of the commit notes1646 #uri_type with Gitaly enabled1647 behaves like #uri_type1648 returns the URI type at the given path1649 returns nil if the path doesn't exists1650 is nil if the path is nil or empty1651 #uri_type with Rugged enabled1652 calls out to the Rugged implementation1653 behaves like #uri_type1654 returns the URI type at the given path1655 returns nil if the path doesn't exists1656 is nil if the path is nil or empty1657 .diff_max_files1658 returns the current settings1659 .diff_max_lines1660 returns the current settings1661 .diff_safe_max_files1662 returns the commit diff max divided by the limit factor of 101663 .diff_safe_max_lines1664 returns the commit diff max divided by the limit factor of 101665 .from_hash1666 with project1667 behaves like returns Commit1668 returns a Commit1669 wraps a Gitlab::Git::Commit1670 stores the correct commit fields1671 with personal snippet1672 behaves like returns Commit1673 returns a Commit1674 wraps a Gitlab::Git::Commit1675 stores the correct commit fields1676 with project snippet1677 behaves like returns Commit1678 returns a Commit1679 wraps a Gitlab::Git::Commit1680 stores the correct commit fields1681 #draft?1682 detects the 'squash! ' prefix1683 detects the 'fixup! ' prefix1684 detects the 'draft: ' prefix1685 detects the '[Draft] ' prefix1686 detects the '(draft) ' prefix1687 detects the 'Draft: ' prefix1688 does not detect a commit just saying 'draft' as draft? == true1689 doesn't detect 'FIXUP!' at the start of the title as a draft1690 doesn't detect 'Draft - ' at the start of the title as a draft1691 doesn't detect 'Wipeout' at the start of the title as a draft1692 doesn't detect 'WIP: ' at the start of the title as a draft1693 doesn't detect '[WIP] ' at the start of the title as a draft1694 doesn't detect 'wip: ' at the start of the title as a draft1695 .valid_hash?1696 checks hash contents1697 checks hash length1698 signed commits1699 returns signature_type properly1700 returns has_signature? properly1701 #has_been_reverted?1702 returns true if the commit has been reverted1703 returns false if the commit has not been reverted1704Banzai::Filter::References::MilestoneReferenceFilter1705 requires project context1706 group context1707 when project milestone1708 links to a valid reference1709 ignores internal references1710 when group milestone1711 ignores internal references1712 for subgroups1713 links to a valid reference of subgroup and group milestones1714 when referencing both project and group milestones1715 links to valid references1716 when milestone is open1717 project milestones1718 ignores valid references contained inside 'pre' element1719 ignores valid references contained inside 'code' element1720 ignores valid references contained inside 'a' element1721 ignores valid references contained inside 'style' element1722 includes default classes1723 includes a data-project attribute1724 includes a data-milestone attribute1725 supports an :only_path context1726 behaves like Integer-based references1727 links to a valid reference1728 links with adjacent text1729 ignores invalid milestone IIDs1730 behaves like String-based single-word references1731 links to a valid reference1732 links with adjacent text1733 links with adjacent html tags1734 ignores invalid milestone names1735 behaves like String-based multi-word references in quotes1736 links to a valid reference1737 links with adjacent text1738 ignores invalid milestone names1739 behaves like referencing a milestone in a link href1740 links to a valid reference1741 links with adjacent text1742 includes a data-project attribute1743 includes a data-milestone attribute1744 behaves like linking to a milestone as the entire link1745 replaces the link text with the milestone reference1746 includes a data-project attribute1747 includes a data-milestone attribute1748 behaves like cross-project / cross-namespace complete reference1749 points to referenced project milestone page1750 link has valid text1751 has valid text1752 escapes the name attribute1753 behaves like cross-project / same-namespace complete reference1754 points to referenced project milestone page1755 link has valid text1756 has valid text1757 escapes the name attribute1758 behaves like cross project shorthand reference1759 points to referenced project milestone page1760 link has valid text1761 has valid text1762 escapes the name attribute1763 behaves like references with HTML entities1764 links to a valid reference1765 ignores invalid milestone names and escapes entities1766 behaves like HTML text with references1767 preserves escaped HTML text and adds valid references1768 preserves escaped HTML text if there are no valid references1769 group milestones1770 ignores valid references contained inside 'pre' element1771 ignores valid references contained inside 'code' element1772 ignores valid references contained inside 'a' element1773 ignores valid references contained inside 'style' element1774 includes default classes1775 includes a data-project attribute1776 includes a data-milestone attribute1777 supports an :only_path context1778 does not support references by IID1779 does not support references by link1780 does not support cross-project references1781 supports parent group references1782 behaves like String-based single-word references1783 links to a valid reference1784 links with adjacent text1785 links with adjacent html tags1786 ignores invalid milestone names1787 behaves like String-based multi-word references in quotes1788 links to a valid reference1789 links with adjacent text1790 ignores invalid milestone names1791 behaves like referencing a milestone in a link href1792 links to a valid reference1793 links with adjacent text1794 includes a data-project attribute1795 includes a data-milestone attribute1796 behaves like references with HTML entities1797 links to a valid reference1798 ignores invalid milestone names and escapes entities1799 behaves like HTML text with references1800 preserves escaped HTML text and adds valid references1801 preserves escaped HTML text if there are no valid references1802 when milestone is closed1803 project milestones1804 ignores valid references contained inside 'pre' element1805 ignores valid references contained inside 'code' element1806 ignores valid references contained inside 'a' element1807 ignores valid references contained inside 'style' element1808 includes default classes1809 includes a data-project attribute1810 includes a data-milestone attribute1811 supports an :only_path context1812 behaves like Integer-based references1813 links to a valid reference1814 links with adjacent text1815 ignores invalid milestone IIDs1816 behaves like String-based single-word references1817 links to a valid reference1818 links with adjacent text1819 links with adjacent html tags1820 ignores invalid milestone names1821 behaves like String-based multi-word references in quotes1822 links to a valid reference1823 links with adjacent text1824 ignores invalid milestone names1825 behaves like referencing a milestone in a link href1826 links to a valid reference1827 links with adjacent text1828 includes a data-project attribute1829 includes a data-milestone attribute1830 behaves like linking to a milestone as the entire link1831 replaces the link text with the milestone reference1832 includes a data-project attribute1833 includes a data-milestone attribute1834 behaves like cross-project / cross-namespace complete reference1835 points to referenced project milestone page1836 link has valid text1837 has valid text1838 escapes the name attribute1839 behaves like cross-project / same-namespace complete reference1840 points to referenced project milestone page1841 link has valid text1842 has valid text1843 escapes the name attribute1844 behaves like cross project shorthand reference1845 points to referenced project milestone page1846 link has valid text1847 has valid text1848 escapes the name attribute1849 behaves like references with HTML entities1850 links to a valid reference1851 ignores invalid milestone names and escapes entities1852 behaves like HTML text with references1853 preserves escaped HTML text and adds valid references1854 preserves escaped HTML text if there are no valid references1855 group milestones1856 ignores valid references contained inside 'pre' element1857 ignores valid references contained inside 'code' element1858 ignores valid references contained inside 'a' element1859 ignores valid references contained inside 'style' element1860 includes default classes1861 includes a data-project attribute1862 includes a data-milestone attribute1863 supports an :only_path context1864 does not support references by IID1865 does not support references by link1866 does not support cross-project references1867 supports parent group references1868 behaves like String-based single-word references1869 links to a valid reference1870 links with adjacent text1871 links with adjacent html tags1872 ignores invalid milestone names1873 behaves like String-based multi-word references in quotes1874 links to a valid reference1875 links with adjacent text1876 ignores invalid milestone names1877 behaves like referencing a milestone in a link href1878 links to a valid reference1879 links with adjacent text1880 includes a data-project attribute1881 includes a data-milestone attribute1882 behaves like references with HTML entities1883 links to a valid reference1884 ignores invalid milestone names and escapes entities1885 behaves like HTML text with references1886 preserves escaped HTML text and adds valid references1887 preserves escaped HTML text if there are no valid references1888 checking N+11889 does not have N+1 per multiple references per project1890 has N+1 for multiple unique project/group references1891Gitlab::Gfm::ReferenceRewriter1892 #rewrite1893 multiple issues and merge requests referenced1894 plain text description1895 is expected to include "old-project#1"1896 is expected to include "old-project#2"1897 is expected to include "old-project!1"1898 description with ignored elements1899 is expected to include "old-project#1"1900 is expected not to include "old-project#2"1901 is expected not to include "old-project!1"1902 rewrite ambigous references1903 url1904 is expected to include "http://gitlab.com/#1"1905 code1906 is expected to eq "old-project#1, but not `[#1]`"1907 code reverse1908 is expected to eq "not `#1`, but old-project#1"1909 code in random order1910 is expected to eq "old-project#1, `#1`, old-project#1, `#1`"1911 description with project labels1912 label referenced by id1913 is expected to eq "old-project#1 and old-project~123"1914 label referenced by text1915 is expected to eq "old-project#1 and old-project~123"1916 description with group labels1917 label referenced by id1918 is expected to eq "group84/old-project#1 and group84/old-project~321"1919 label referenced by text1920 is expected to eq "group85/old-project#1 and group85/old-project~321"1921 when description contains a local reference1922 is expected to eq "See old-project#1"1923 when description contains a cross reference1924 is expected to eq "See namespace130/project126!1"1925 with a commit1926 reference to an absolute URL to a commit1927 is expected to eq "http://localhost/group83/old-project/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"1928 reference to a commit1929 is expected to eq "old-project@b83d6e391c22777fca1ed3012fce84f633d7fed0"1930 reference contains project milestone1931 is expected to eq "milestone: old-project%\"9.0\""1932 when referring to group milestone1933 is expected to eq "milestone %\"10.0\""1934 when referring to a group1935 is expected to eq "group @group83"1936 when referring to a user1937 is expected to eq "user @user527"1938 when referable has a nil reference1939 raises an error that should be fixed1940Gitlab::CycleAnalytics::StageSummary1941 #identifier1942 returns identifiers for each metric1943 #new_issues1944 doesn't find issues from other projects1945 when from date is given1946 finds the number of issues created after the 'from date'1947 returns the localized title1948 when `to` parameter is given1949 doesn't find any record1950 finds records created between `from` and `to` range1951 #commits1952 doesn't find commits from other projects1953 finds a large (> 100) number of commits if present1954 when from date is given1955 finds the number of commits created after the 'from date'1956 returns the localized title1957 when `to` parameter is given1958 doesn't find any record1959 finds records created between `from` and `to` range1960 when a guest user is signed in1961 does not include commit stats1962 behaves like deployment metrics examples1963 #deploys1964 doesn't find commits from other projects1965 when from date is given1966 finds the number of deploys made created after the 'from date'1967 returns the localized title1968 when `to` parameter is given1969 doesn't find any record1970 finds records created between `from` and `to` range1971 #deployment_frequency1972 includes the unit: `/day`1973 returns 0.0 when there were deploys but the frequency was too low1974 returns `-` when there were no deploys1975 when `to` is nil1976 includes range until now1977 when `to` is given1978 finds records created between `from` and `to` range1979 when `from` and `to` are within a day1980 returns the number of deployments made on that day1981TodosFinder1982 #execute1983 #execute1984 returns no todos if user is nil1985 filtering1986 returns correct todos when filtered by a project1987 returns correct todos when filtered by a group1988 when filtering by type1989 returns todos by type when filtered by a single type1990 returns todos by type when filtered by multiple types1991 returns all todos when type is nil1992 returns all todos when type is an empty collection1993 returns all todos when type is blank1994 returns todos by type when blank type is in type collection1995 returns todos of all types when only blanks are in a collection1996 returns all todos when no type param1997 raises an argument error when invalid type is passed1998 when filtering for actions1999 by action ids2000 returns the expected todos2001 returns the expected todos when filtering for multiple action ids2002 by action names2003 returns the expected todos2004 returns the expected todos when filtering for multiple action names2005 when filtering by author2006 returns correct todos when filtering by an author2007 querying for multiple authors2008 returns the correct todo items2009 by groups2010 with subgroups2011 returns todos from subgroups when filtered by a group2012 filtering for multiple groups2013 returns the expected groups2014 by state2015 returns the expected items when no state is provided2016 returns the expected items when a state is provided2017 returns the expected items when multiple states are provided2018 by project2019 returns the expected todos for one project2020 returns the expected todos for many projects2021 when filtering by target id2022 returns the expected todos for the target2023 returns the expected todos for multiple target ids2024 returns the expected todos for empty target id collection2025 external authorization2026 behaves like a finder with external authorization service2027 finds the subject2028 with an external authorization service2029 does not include the subject when no project was given2030 includes the subject when a project id was given2031 #sort2032 sorts by priority2033 by date2034 sorts with oldest created first2035 sorts with newest created first2036 .todo_types2037 returns the expected types2038 #any_for_target?2039 returns true if there are any todos for the given target2040 returns false if there are no todos for the given target2041ResourceAccessTokens::CreateService2042 #execute2043 when resource is a project2044 behaves like when user does not have permission to create a resource bot2045 returns the permission error message2046 behaves like token creation fails2047 does not add the project bot as a member2048 immediately destroys the bot user if one was created2049 user with valid permission2050 behaves like allows creation of bot with valid params2051 is expected to change `User.count` by 12052 creates resource bot user2053 logs the event2054 email confirmation status2055 when created by an admin2056 when admin mode is enabled2057 behaves like creates a user that has their email confirmed2058 creates a user that has their email confirmed2059 when admin mode is disabled2060 returns error2061 when created by a non-admin2062 behaves like creates a user that has their email confirmed2063 creates a user that has their email confirmed2064 bot name2065 when no name is passed2066 uses default name2067 when user provides name2068 overrides the default name value2069 bot email2070 check email domain2071 access level2072 when user does not specify an access level2073 adds the bot user as a maintainer in the resource2074 when user specifies an access level2075 adds the bot user with the specified access level in the resource2076 when user is external2077 creates resource bot user with external status2078 personal access token2079 is expected to change `PersonalAccessToken.count` by 12080 when user does not provide scope2081 has default scopes2082 when user provides scope explicitly2083 overrides the default scope value2084 expires_at2085 when no expiration value is passed2086 uses nil expiration value2087 expiry of the project bot member2088 project bot membership does not expire2089 when user provides expiration value2090 overrides the default expiration value2091 expiry of the project bot member2092 sets the project bot to expire on the same day as the token2093 when invalid scope is passed2094 returns the scope error message2095 behaves like token creation fails2096 does not add the project bot as a member2097 immediately destroys the bot user if one was created2098 when access provisioning fails2099 returns the provisioning error message2100 behaves like token creation fails2101 does not add the project bot as a member2102 immediately destroys the bot user if one was created2103 when user specifies an access level of OWNER for the bot2104 when the executor is a MAINTAINER2105 does not add the bot user with the specified access level in the resource2106 when the executor is an OWNER2107 adds the bot user with the specified access level in the resource2108 when resource is a group2109 behaves like when user does not have permission to create a resource bot2110 returns the permission error message2111 behaves like token creation fails2112 does not add the project bot as a member2113 immediately destroys the bot user if one was created2114 user with valid permission2115 behaves like allows creation of bot with valid params2116 is expected to change `User.count` by 12117 creates resource bot user2118 logs the event2119 email confirmation status2120 when created by an admin2121 when admin mode is enabled2122 behaves like creates a user that has their email confirmed2123 creates a user that has their email confirmed2124 when admin mode is disabled2125 returns error2126 when created by a non-admin2127 behaves like creates a user that has their email confirmed2128 creates a user that has their email confirmed2129 bot name2130 when no name is passed2131 uses default name2132 when user provides name2133 overrides the default name value2134 bot email2135 check email domain2136 access level2137 when user does not specify an access level2138 adds the bot user as a maintainer in the resource2139 when user specifies an access level2140 adds the bot user with the specified access level in the resource2141 when user is external2142 creates resource bot user with external status2143 personal access token2144 is expected to change `PersonalAccessToken.count` by 12145 when user does not provide scope2146 has default scopes2147 when user provides scope explicitly2148 overrides the default scope value2149 expires_at2150 when no expiration value is passed2151 uses nil expiration value2152 expiry of the project bot member2153 project bot membership does not expire2154 when user provides expiration value2155 overrides the default expiration value2156 expiry of the project bot member2157 sets the project bot to expire on the same day as the token2158 when invalid scope is passed2159 returns the scope error message2160 behaves like token creation fails2161 does not add the project bot as a member2162 immediately destroys the bot user if one was created2163 when access provisioning fails2164 returns the provisioning error message2165 behaves like token creation fails2166 does not add the project bot as a member2167 immediately destroys the bot user if one was created2168 when user specifies an access level of OWNER for the bot2169 adds the bot user with the specified access level in the resource2170Gitlab::BitbucketServerImport::Importer2171 #import_repository2172 adds a remote2173 raises a Gitlab::Git::CommandError in the fetch2174 raises an unhandled exception in the fetch2175 #import_pull_requests2176 imports merge event2177 falls back to comments if diff comments fail to validate2178 reports an error if an exception is raised2179 pull request author user mapping2180 when bitbucket_server_user_mapping_by_username feature flag is disabled2181 when email is not present2182 maps user2183 when email is present2184 maps user2185 when bitbucket_server_user_mapping_by_username feature flag is enabled2186 when username is not present2187 maps user2188 when username is present2189 maps user2190 when user is not found2191 maps importer user2192 comments2193 when bitbucket_server_user_mapping_by_username feature flag is disabled2194 imports comments2195 when bitbucket_server_user_mapping_by_username feature flag is enabled2196 imports comments2197 when username is not present2198 defaults to import user2199 when username is present2200 maps by username2201 metrics2202 counts and measures duration of imported projects2203 counts imported pull requests2204 threaded discussions2205 when bitbucket_server_user_mapping_by_username feature flag is disabled2206 imports threaded discussions2207 when bitbucket_server_user_mapping_by_username feature flag is enabled2208 imports threaded discussions2209 when username is not present2210 defaults to import user2211 when user is not found2212 maps importer user2213 import pull requests with caching2214 only imports one Merge Request, as the other on is in the cache2215 inaccessible branches2216 #restore_branches2217 #delete_temp_branches2218 lfs files2219 downloads lfs objects if lfs_enabled is enabled for project2220 adds the error message when the lfs download fails2221ServicePing::BuildPayload2222 #execute2223 behaves like complete service ping payload2224 behaves like service ping payload with all expected metrics2225 is expected to have usage metric "topology"2226Gitlab::UrlBuilder2227 #build2228 delegates to the class method2229 .build2230 factory: :project, path_generator: ->(project) { "/#{project.full_path}" }2231 returns the full URL2232 returns only the path if only_path is given2233 factory: :board, path_generator: ->(board) { "/#{board.project.full_path}/-/boards/#{board.id}" }2234 returns the full URL2235 returns only the path if only_path is given2236 factory: :group_board, path_generator: ->(board) { "/groups/#{board.group.full_path}/-/boards/#{board.id}" }2237 returns the full URL2238 returns only the path if only_path is given2239 factory: :commit, path_generator: ->(commit) { "/#{commit.project.full_path}/-/commit/#{commit.id}" }2240 returns the full URL2241 returns only the path if only_path is given2242 factory: :issue, path_generator: ->(issue) { "/#{issue.project.full_path}/-/issues/#{issue.iid}" }2243 returns the full URL2244 returns only the path if only_path is given2245 factory: [:issue, :task], path_generator: ->(issue) { "/#{issue.project.full_path}/-/work_items/#{issue.id}" }2246 returns the full URL2247 returns only the path if only_path is given2248 factory: :work_item, path_generator: ->(work_item) { "/#{work_item.project.full_path}/-/work_items/#{work_item.id}" }2249 returns the full URL2250 returns only the path if only_path is given2251 factory: :merge_request, path_generator: ->(merge_request) { "/#{merge_request.project.full_path}/-/merge_requests/#{merge_request.iid}" }2252 returns the full URL2253 returns only the path if only_path is given2254 factory: :project_milestone, path_generator: ->(milestone) { "/#{milestone.project.full_path}/-/milestones/#{milestone.iid}" }2255 returns the full URL2256 returns only the path if only_path is given2257 factory: :project_snippet, path_generator: ->(snippet) { "/#{snippet.project.full_path}/-/snippets/#{snippet.id}" }2258 returns the full URL2259 returns only the path if only_path is given2260 factory: :project_wiki, path_generator: ->(wiki) { "/#{wiki.container.full_path}/-/wikis/home" }2261 returns the full URL2262 returns only the path if only_path is given2263 factory: :release, path_generator: ->(release) { "/#{release.project.full_path}/-/releases/#{release.tag}" }2264 returns the full URL2265 returns only the path if only_path is given2266 factory: :ci_build, path_generator: ->(build) { "/#{build.project.full_path}/-/jobs/#{build.id}" }2267 returns the full URL2268 returns only the path if only_path is given2269 factory: :design, path_generator: ->(design) { "/#{design.project.full_path}/-/design_management/designs/#{design.id}/raw_image" }2270 returns the full URL2271 returns only the path if only_path is given2272 factory: :group, path_generator: ->(group) { "/groups/#{group.full_path}" }2273 returns the full URL2274 returns only the path if only_path is given2275 factory: :group_milestone, path_generator: ->(milestone) { "/groups/#{milestone.group.full_path}/-/milestones/#{milestone.iid}" }2276 returns the full URL2277 returns only the path if only_path is given2278 factory: :user, path_generator: ->(user) { "/#{user.full_path}" }2279 returns the full URL2280 returns only the path if only_path is given2281 factory: :personal_snippet, path_generator: ->(snippet) { "/-/snippets/#{snippet.id}" }2282 returns the full URL2283 returns only the path if only_path is given2284 factory: :wiki_page, path_generator: ->(wiki_page) { "#{wiki_page.wiki.wiki_base_path}/#{wiki_page.slug}" }2285 returns the full URL2286 returns only the path if only_path is given2287 factory: :note_on_commit, path_generator: ->(note) { "/#{note.project.full_path}/-/commit/#{note.commit_id}#note_#{note.id}" }2288 returns the full URL2289 returns only the path if only_path is given2290 factory: :diff_note_on_commit, path_generator: ->(note) { "/#{note.project.full_path}/-/commit/#{note.commit_id}#note_#{note.id}" }2291 returns the full URL2292 returns only the path if only_path is given2293 factory: :discussion_note_on_commit, path_generator: ->(note) { "/#{note.project.full_path}/-/commit/#{note.commit_id}#note_#{note.id}" }2294 returns the full URL2295 returns only the path if only_path is given2296 factory: :legacy_diff_note_on_commit, path_generator: ->(note) { "/#{note.project.full_path}/-/commit/#{note.commit_id}#note_#{note.id}" }2297 returns the full URL2298 returns only the path if only_path is given2299 factory: :note_on_issue, path_generator: ->(note) { "/#{note.project.full_path}/-/issues/#{note.noteable.iid}#note_#{note.id}" }2300 returns the full URL2301 returns only the path if only_path is given2302 factory: :discussion_note_on_issue, path_generator: ->(note) { "/#{note.project.full_path}/-/issues/#{note.noteable.iid}#note_#{note.id}" }2303 returns the full URL2304 returns only the path if only_path is given2305 factory: :note_on_merge_request, path_generator: ->(note) { "/#{note.project.full_path}/-/merge_requests/#{note.noteable.iid}#note_#{note.id}" }2306 returns the full URL2307 returns only the path if only_path is given2308 factory: :diff_note_on_merge_request, path_generator: ->(note) { "/#{note.project.full_path}/-/merge_requests/#{note.noteable.iid}#note_#{note.id}" }2309 returns the full URL2310 returns only the path if only_path is given2311 factory: :discussion_note_on_merge_request, path_generator: ->(note) { "/#{note.project.full_path}/-/merge_requests/#{note.noteable.iid}#note_#{note.id}" }2312 returns the full URL2313 returns only the path if only_path is given2314 factory: :legacy_diff_note_on_merge_request, path_generator: ->(note) { "/#{note.project.full_path}/-/merge_requests/#{note.noteable.iid}#note_#{note.id}" }2315 returns the full URL2316 returns only the path if only_path is given2317 factory: :note_on_project_snippet, path_generator: ->(note) { "/#{note.project.full_path}/-/snippets/#{note.noteable_id}#note_#{note.id}" }2318 returns the full URL2319 returns only the path if only_path is given2320 factory: :discussion_note_on_project_snippet, path_generator: ->(note) { "/#{note.project.full_path}/-/snippets/#{note.noteable_id}#note_#{note.id}" }2321 returns the full URL2322 returns only the path if only_path is given2323 factory: :discussion_note_on_personal_snippet, path_generator: ->(note) { "/-/snippets/#{note.noteable_id}#note_#{note.id}" }2324 returns the full URL2325 returns only the path if only_path is given2326 factory: :note_on_personal_snippet, path_generator: ->(note) { "/-/snippets/#{note.noteable_id}#note_#{note.id}" }2327 returns the full URL2328 returns only the path if only_path is given2329 when work_items feature flag is disabled2330 returns an issue path for an issue of type task2331 when passing a compare2332 returns the full URL2333 returns only the path if only_path is given2334 returns an empty string for missing project2335 when passing a commit without a project2336 returns an empty string2337 when passing a commit note without a project2338 returns an empty string2339 when passing a Snippet2340 for a PersonalSnippet2341 returns a raw snippet URL if requested2342 returns a raw snippet blob URL if requested2343 for a ProjectSnippet2344 returns a raw snippet URL if requested2345 returns a raw snippet blob URL if requested2346 when passing a Wiki2347 #wiki_url2348 uses the default collection action2349 supports a custom collection action2350 #wiki_page_url2351 uses the default member action2352 supports a custom member action2353 when passing a DesignManagement::Design2354 uses the given ref and size in the URL2355 when passing an unsupported class2356 raises an exception2357 when passing a batch loaded model2358 returns the URL for the real object2359AvatarUploader2360 behaves like builds correct paths2361 #store_dir2362 behaves like matches the method pattern2363 is expected to match /uploads\/-\/system\/user\/avatar\//2364 #cache_dir2365 behaves like matches the method pattern2366 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2367 #work_dir2368 behaves like matches the method pattern2369 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2370 #upload_path2371 behaves like matches the method pattern2372 is expected to match /uploads\/-\/system\/user\/avatar\//2373 #relative_path2374 is relative (PENDING: Path not set, skipping.)2375 .absolute_path2376 behaves like matches the method pattern2377 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/-\/system\/user\/avatar\//2378 .base_dir2379 behaves like matches the method pattern2380 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2381 path traversal exploits2382 throws an exception2383 object_store is REMOTE2384 behaves like builds correct paths2385 #store_dir2386 behaves like matches the method pattern2387 is expected to match /user\/avatar\//2388 #cache_dir2389 behaves like matches the method pattern2390 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2391 #work_dir2392 behaves like matches the method pattern2393 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2394 #upload_path2395 behaves like matches the method pattern2396 is expected to match /user\/avatar\//2397 #relative_path2398 is relative (PENDING: Path not set, skipping.)2399 .absolute_path2400 behaves like matches the method pattern2401 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2402 .base_dir2403 behaves like matches the method pattern2404 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)2405 path traversal exploits2406 throws an exception2407 with a file2408 sets the right absolute path2409 behaves like migrates2410 returns corresponding file type2411 does nothing when migrating to the current store2412 migrate to the specified store2413 removes the original file after the migration2414 can access to the original file during migration2415 when migrate! is not occupied by another process2416 executes migrate!2417 executes use_file2418 when migrate! is occupied by another process2419 does not execute migrate!2420 does not execute use_file2421 migration is unsuccessful2422 when the store is not supported2423 does not update the object_store2424 does not delete the original file2425 upon a fog failure2426 does not update the object_store2427 does not delete the original file2428 upon a database failure2429 does not update the object_store2430 does not delete the original file2431 behaves like migrates2432 returns corresponding file type2433 does nothing when migrating to the current store2434 migrate to the specified store2435 removes the original file after the migration2436 can access to the original file during migration2437 when migrate! is not occupied by another process2438 executes migrate!2439 executes use_file2440 when migrate! is occupied by another process2441 does not execute migrate!2442 does not execute use_file2443 migration is unsuccessful2444 when the store is not supported2445 does not update the object_store2446 does not delete the original file2447 upon a fog failure2448 does not update the object_store2449 does not delete the original file2450 upon a database failure2451 does not update the object_store2452 does not delete the original file2453 accept whitelist file content type2454 mime_type: "image/png"2455 behaves like accepted carrierwave upload2456 will accept upload2457 will cache uploaded file2458 mime_type: "image/jpeg"2459 behaves like accepted carrierwave upload2460 will accept upload2461 will cache uploaded file2462 mime_type: "image/gif"2463 behaves like accepted carrierwave upload2464 will accept upload2465 will cache uploaded file2466 mime_type: "image/bmp"2467 behaves like accepted carrierwave upload2468 will accept upload2469 will cache uploaded file2470 mime_type: "image/tiff"2471 behaves like accepted carrierwave upload2472 will accept upload2473 will cache uploaded file2474 mime_type: "image/vnd.microsoft.icon"2475 behaves like accepted carrierwave upload2476 will accept upload2477 will cache uploaded file2478 upload non-whitelisted file content type2479 behaves like denied carrierwave upload2480 will deny upload2481 upload misnamed non-whitelisted file content type2482 behaves like denied carrierwave upload2483 will deny upload2484Projects::LfsPointers::LfsDownloadService2485 #execute2486 when file download succeeds2487 has the same oid2488 has the same size2489 stores the content2490 streams the download2491 skips read_total_timeout2492 behaves like lfs object is created2493 creates and associate the LFS object to project2494 returns success result2495 behaves like lfs temporal file is removed2496 is expected to equal false2497 when file download fails2498 raise StandardError exception2499 behaves like no lfs object is created2500 is expected not to change `LfsObject.count`2501 returns error result2502 an error is logged2503 behaves like lfs temporal file is removed2504 is expected to equal false2505 when file download returns a redirect2506 correctly stores lfs object2507 behaves like lfs object is created2508 creates and associate the LFS object to project2509 returns success result2510 behaves like lfs temporal file is removed2511 is expected to equal false2512 when downloaded lfs file has a different size2513 raise SizeError exception2514 behaves like no lfs object is created2515 is expected not to change `LfsObject.count`2516 returns error result2517 an error is logged2518 behaves like lfs temporal file is removed2519 is expected to equal false2520 when downloaded lfs file has a different oid2521 raise OidError exception2522 behaves like no lfs object is created2523 is expected not to change `LfsObject.count`2524 returns error result2525 an error is logged2526 behaves like lfs temporal file is removed2527 is expected to equal false2528 when an lfs object with the same oid already exists2529 does not update the file attached to the existing LfsObject2530 behaves like no lfs object is created2531 is expected not to change `LfsObject.count`2532 returns error result2533 an error is logged2534 behaves like lfs temporal file is removed2535 is expected to equal false2536 when credentials present2537 the request adds authorization headers2538 when Authorization header is present2539 request uses the header auth2540 when localhost requests are allowed2541 behaves like lfs object is created2542 creates and associate the LFS object to project2543 returns success result2544 behaves like lfs temporal file is removed2545 is expected to equal false2546 when a bad URL is used2547 download_link: "/etc/passwd"2548 does not download the file2549 download_link: "ftp://example.com"2550 does not download the file2551 download_link: "http://127.0.0.2"2552 does not download the file2553 download_link: "http://192.168.2.120"2554 does not download the file2555 when the URL points to a redirected URL2556 that is blocked2557 redirect_link: "ftp://example.com"2558 behaves like no lfs object is created2559 is expected not to change `LfsObject.count`2560 returns error result2561 an error is logged2562 behaves like lfs temporal file is removed2563 is expected to equal false2564 redirect_link: "http://127.0.0.2"2565 behaves like no lfs object is created2566 is expected not to change `LfsObject.count`2567 returns error result2568 an error is logged2569 behaves like lfs temporal file is removed2570 is expected to equal false2571 redirect_link: "http://192.168.2.120"2572 behaves like no lfs object is created2573 is expected not to change `LfsObject.count`2574 returns error result2575 an error is logged2576 behaves like lfs temporal file is removed2577 is expected to equal false2578 that is not blocked2579 behaves like lfs object is created2580 creates and associate the LFS object to project2581 returns success result2582 behaves like lfs temporal file is removed2583 is expected to equal false2584 when the lfs object attributes are invalid2585 does not download the file2586 behaves like no lfs object is created2587 is expected not to change `LfsObject.count`2588 returns error result2589 an error is logged2590 behaves like lfs temporal file is removed2591 is expected to equal false2592 when a large lfs object with the same oid already exists2593 and first fragments are the same2594 returns success2595 links existing lfs object to the project2596 when lfs_link_existing_object feature flag disabled2597 does not call link_existing_lfs_object!2598 and first fragments diverges2599 raises oid mismatch error2600 does not change lfs objects2601Gitlab::GitalyClient::RepositoryService2602 #exists?2603 sends a repository_exists message2604 #garbage_collect2605 sends a garbage_collect message2606 #repack_full2607 sends a repack_full message2608 #repack_incremental2609 sends a repack_incremental message2610 #optimize_repository2611 sends a optimize_repository message2612 #prune_unreachable_objects2613 sends a prune_unreachable_objects message2614 #repository_size2615 sends a repository_size message2616 #get_object_directory_size2617 sends a get_object_directory_size message2618 #apply_gitattributes2619 sends an apply_gitattributes message2620 #info_attributes2621 reads the info attributes2622 #has_local_branches?2623 sends a has_local_branches message2624 #fetch_remote2625 sends a fetch_remote_request message2626 SSH auth2627 ssh_mirror_url: false, ssh_key_auth: false, ssh_private_key: "key", ssh_known_hosts: "known_hosts", expected_params: {}2628 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:1852629 ssh_mirror_url: false, ssh_key_auth: true, ssh_private_key: "key", ssh_known_hosts: "known_hosts", expected_params: {}2630 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:1852631 ssh_mirror_url: true, ssh_key_auth: false, ssh_private_key: "key", ssh_known_hosts: "known_hosts", expected_params: {:known_hosts=>"known_hosts"}2632 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:1852633 ssh_mirror_url: true, ssh_key_auth: true, ssh_private_key: "key", ssh_known_hosts: "known_hosts", expected_params: {:ssh_key=>"key", :known_hosts=>"known_hosts"}2634 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:1852635 ssh_mirror_url: true, ssh_key_auth: true, ssh_private_key: "key", ssh_known_hosts: nil, expected_params: {:ssh_key=>"key"}2636 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:1852637 ssh_mirror_url: true, ssh_key_auth: true, ssh_private_key: nil, ssh_known_hosts: "known_hosts", expected_params: {:known_hosts=>"known_hosts"}2638 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:1852639 ssh_mirror_url: true, ssh_key_auth: true, ssh_private_key: nil, ssh_known_hosts: nil, expected_params: {}2640 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:1852641 ssh_mirror_url: true, ssh_key_auth: true, ssh_private_key: "", ssh_known_hosts: "", expected_params: {}2642 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:1852643 #calculate_checksum2644 sends a calculate_checksum message2645 #create_repository2646 sends a create_repository message without arguments2647 sends a create_repository message with default branch2648 #create_from_snapshot2649 sends a create_repository_from_snapshot message2650 #raw_changes_between2651 sends a create_repository_from_snapshot message2652 #search_files_by_regexp2653 sends a search_files_by_name message and returns a flatten array2654 #disconnect_alternates2655 deletes the alternates file2656 when called twice2657 doesn't raise an error2658 #rename2659 sends a rename_repository message2660 #remove2661 sends a remove_repository message2662 #replicate2663 sends a replicate_repository message2664 #set_full_path2665 sends a set_full_path message2666UserRecentEventsFinder2667 when the optimized_followed_users_queries FF is on2668 behaves like UserRecentEventsFinder examples2669 #execute2670 does not include the events if the user cannot read cross project2671 when profile is public2672 returns all the events2673 when profile is private2674 returns no event2675 events from multiple users2676 includes events from all users2677 does not include events from users with private profile2678 selected events2679 event_filter: #<EventFilter:0x00007fa83b19fb78 @filter="push">, ordered_expected_events: lazy { [push_event1, push_event2] }2680 only returns selected events from all users (id DESC)2681 event_filter: #<EventFilter:0x00007fa83b19f880 @filter="merged">, ordered_expected_events: lazy { [merge_event1, merge_event2] }2682 only returns selected events from all users (id DESC)2683 event_filter: #<EventFilter:0x00007fa83b19f5d8 @filter="comments">, ordered_expected_events: lazy { [comment_event1, comment_event2, comment_event3] }2684 only returns selected events from all users (id DESC)2685 event_filter: #<EventFilter:0x00007fa83b19f3a8 @filter="team">, ordered_expected_events: lazy { [private_event, internal_event, public_event, private_event_second_user, internal_event_second_user, public_event_second_user] }2686 only returns selected events from all users (id DESC)2687 event_filter: #<EventFilter:0x00007fa83b19f150 @filter="issue">, ordered_expected_events: lazy { [issue_event1, issue_event2, issue_event3] }2688 only returns selected events from all users (id DESC)2689 event_filter: #<EventFilter:0x00007fa83b19eef8 @filter="wiki">, ordered_expected_events: lazy { [wiki_event1, wiki_event2] }2690 only returns selected events from all users (id DESC)2691 event_filter: #<EventFilter:0x00007fa83b19eca0 @filter="designs">, ordered_expected_events: lazy { [design_event1, design_event2] }2692 only returns selected events from all users (id DESC)2693 with pagination params2694 limit: nil, offset: nil, ordered_expected_events: lazy { [public_event_second_user, internal_event_second_user, private_event_second_user, public_event, internal_event, private_event] }2695 returns paginated events sorted by id (DESC)2696 limit: 2, offset: nil, ordered_expected_events: lazy { [public_event_second_user, internal_event_second_user] }2697 returns paginated events sorted by id (DESC)2698 limit: nil, offset: 4, ordered_expected_events: lazy { [internal_event, private_event] }2699 returns paginated events sorted by id (DESC)2700 limit: 2, offset: 2, ordered_expected_events: lazy { [private_event_second_user, public_event] }2701 returns paginated events sorted by id (DESC)2702 filter activity events2703 includes all events2704 only includes push events2705 only includes merge events2706 only includes issue events2707 only includes comments events2708 only includes wiki events2709 only includes design events2710 only includes team events2711 when unknown filter is given2712 includes returns all events2713 issue activity events2714 includes all issue related events2715 limits2716 when limit is not set2717 returns events limited to DEFAULT_LIMIT2718 when limit is set2719 returns events limited to specified limit2720 when limit is set to a number that exceeds maximum limit2721 returns events limited to MAX_LIMIT2722 when the optimized_followed_users_queries FF is off2723 behaves like UserRecentEventsFinder examples2724 #execute2725 does not include the events if the user cannot read cross project2726 when profile is public2727 returns all the events2728 when profile is private2729 returns no event2730 events from multiple users2731 includes events from all users2732 does not include events from users with private profile2733 selected events2734 event_filter: #<EventFilter:0x00007fa83afd1968 @filter="push">, ordered_expected_events: lazy { [push_event1, push_event2] }2735 only returns selected events from all users (id DESC)2736 event_filter: #<EventFilter:0x00007fa83afd1698 @filter="merged">, ordered_expected_events: lazy { [merge_event1, merge_event2] }2737 only returns selected events from all users (id DESC)2738 event_filter: #<EventFilter:0x00007fa83afd14b8 @filter="comments">, ordered_expected_events: lazy { [comment_event1, comment_event2, comment_event3] }2739 only returns selected events from all users (id DESC)2740 event_filter: #<EventFilter:0x00007fa83afd12d8 @filter="team">, ordered_expected_events: lazy { [private_event, internal_event, public_event, private_event_second_user, internal_event_second_user, public_event_second_user] }2741 only returns selected events from all users (id DESC)2742 event_filter: #<EventFilter:0x00007fa83afd10a8 @filter="issue">, ordered_expected_events: lazy { [issue_event1, issue_event2, issue_event3] }2743 only returns selected events from all users (id DESC)2744 event_filter: #<EventFilter:0x00007fa83afd0ec8 @filter="wiki">, ordered_expected_events: lazy { [wiki_event1, wiki_event2] }2745 only returns selected events from all users (id DESC)2746 event_filter: #<EventFilter:0x00007fa83afd0ce8 @filter="designs">, ordered_expected_events: lazy { [design_event1, design_event2] }2747 only returns selected events from all users (id DESC)2748 with pagination params2749 limit: nil, offset: nil, ordered_expected_events: lazy { [public_event_second_user, internal_event_second_user, private_event_second_user, public_event, internal_event, private_event] }2750 returns paginated events sorted by id (DESC)2751 limit: 2, offset: nil, ordered_expected_events: lazy { [public_event_second_user, internal_event_second_user] }2752 returns paginated events sorted by id (DESC)2753 limit: nil, offset: 4, ordered_expected_events: lazy { [internal_event, private_event] }2754 returns paginated events sorted by id (DESC)2755 limit: 2, offset: 2, ordered_expected_events: lazy { [private_event_second_user, public_event] }2756 returns paginated events sorted by id (DESC)2757 filter activity events2758 includes all events2759 only includes push events2760 only includes merge events2761 only includes issue events2762 only includes comments events2763 only includes wiki events2764 only includes design events2765 only includes team events2766 when unknown filter is given2767 includes returns all events2768 issue activity events2769 includes all issue related events2770 limits2771 when limit is not set2772 returns events limited to DEFAULT_LIMIT2773 when limit is set2774 returns events limited to specified limit2775 when limit is set to a number that exceeds maximum limit2776 returns events limited to MAX_LIMIT2777Projects::BuildArtifactsSizeRefresh2778 associations2779 is expected to belong to project required: false2780 validations2781 is expected to validate that :project cannot be empty/falsy2782 scopes2783 stale2784 returns records in running state and has not been updated for more than 2 hours2785 remaining2786 returns stale, created, and pending records2787 processing_queue2788 prioritizes pending -> stale -> created2789 state machine2790 initial state2791 defaults to created2792 #process!2793 when refresh state is created2794 transitions the state to running2795 sets the refresh_started_at2796 sets last_job_artifact_id_on_refresh_start2797 bumps the updated_at2798 resets the build artifacts size stats2799 resets the counter attribute to zero2800 when refresh state is pending2801 transitions the state to running2802 bumps the updated_at2803 when refresh state is running2804 keeps the state at running2805 bumps the updated_at2806 #requeue!2807 transitions refresh state from running to pending2808 bumps updated_at2809 updates last_job_artifact_id2810 .process_next_refresh!2811 picks the first record from the remaining work2812 .enqueue_refresh2813 creates refresh records for each given project, skipping duplicates2814 #next_batch2815 returns the job artifact records that were created not later than the refresh_started_at and IDs greater than the last_job_artifact_id2816 when created_at is set before artifact id is persisted2817 returns ordered job artifacts2818 #started?2819 refresh_state: :created, result: false2820 is expected to eq false2821 refresh_state: :pending, result: true2822 is expected to eq true2823 refresh_state: :running, result: true2824 is expected to eq true2825PostReceiveService2826 when project is nil2827 does not return error2828 behaves like does not record an onboarding progress action2829 is expected not to receive new(*(any args)) 0 times2830 when repository is nil2831 does not return error2832 when both repository and project are nil2833 does not return error2834 with Project2835 returns link to create new merge request2836 returns the link to an existing merge request when it exists2837 does not invoke MergeRequests::PushOptionsHandlerService2838 behaves like post_receive_service actions2839 enqueues a PostReceive worker job2840 decreases the reference counter and returns the result2841 behaves like records an onboarding progress action2842 is expected to receive execute({:action=>:git_write}) 1 time2843 when printing_merge_request_link_enabled is false2844 returns no merge request messages2845 when there are merge_request push options2846 invalidates the branch name cache2847 invokes MergeRequests::PushOptionsHandlerService2848 creates a new merge request2849 links to the newly created merge request2850 adds errors on the service instance to warnings2851 adds ActiveRecord errors on invalid MergeRequest records to warnings2852 with PersonalSnippet2853 does not return link to create new merge request2854 does not return the link to an existing merge request when it exists2855 behaves like post_receive_service actions2856 enqueues a PostReceive worker job2857 decreases the reference counter and returns the result2858 behaves like records an onboarding progress action2859 is expected to receive execute({:action=>:git_write}) 1 time2860 with ProjectSnippet2861 does not return link to create new merge request2862 does not return the link to an existing merge request when it exists2863 behaves like post_receive_service actions2864 enqueues a PostReceive worker job2865 decreases the reference counter and returns the result2866 behaves like records an onboarding progress action2867 is expected to receive execute({:action=>:git_write}) 1 time2868 broadcast message banner exists2869 outputs a broadcast message2870 broadcast message notification exists2871 does not output a broadcast message2872 broadcast message does not exist2873 does not output a broadcast message2874 nil broadcast message2875 does not output a broadcast message2876 broadcast message has a target_path2877 no project path matches2878 does not output the scoped broadcast messages2879 does output another message that doesn't have a target_path2880 project path matches2881 does output the latest scoped broadcast message2882 does not output the older scoped broadcast message2883 does not output another message that doesn't have a target_path2884 with a redirected data2885 returns redirected message on the response2886 with new project data2887 returns new project message on the response2888 #process_mr_push_options2889 when repository belongs to a snippet2890 with PersonalSnippet2891 returns an error message2892 with ProjectSnippet2893 returns an error message2894 #merge_request_urls2895 when repository belongs to a snippet2896 with PersonalSnippet2897 returns an empty array2898 with ProjectSnippet2899 returns an empty array2900ResourceLabelEvent2901 behaves like having unique enum values2902 has unique values in "action"2903 behaves like a resource event2904 importable2905 is expected to respond to #importing?2906 is expected to respond to #imported?2907 validations2908 is expected not to allow :user to be ‹nil›2909 when importing2910 is expected to allow :user to be ‹nil›2911 associations2912 is expected to belong to user required: false2913 .created_after2914 returns the expected events2915 returns no events if time is after last record time2916 behaves like a resource event for issues2917 associations2918 is expected to belong to issue required: false2919 .by_issue2920 returns the expected records for an issue with events2921 returns the expected records for an issue with no events2922 .by_issue_ids2923 returns the expected events2924 .by_created_at_earlier_or_equal_to2925 returns the expected events2926 returns the expected events2927 #issuable2928 returns the expected issuable2929 behaves like a resource event for merge requests2930 associations2931 is expected to belong to merge_request required: false2932 .by_merge_request2933 returns the expected records for an issue with events2934 returns the expected records for an issue with no events2935 #issuable2936 returns the expected issuable2937 associations2938 is expected to belong to label required: false2939 validations2940 is expected to be valid2941 Issuable validation2942 is invalid if issue_id and merge_request_id are missing2943 is invalid if issue_id and merge_request_id are set2944 is valid if only issue_id is set2945 is valid if only merge_request_id is set2946 callbacks2947 #expire_etag_cache2948 expires resource note etag cache on event save2949 expires resource note etag cache on event destroy2950 #outdated_markdown?2951 returns true if label is missing and reference is not empty2952 returns true if reference is not set yet2953 returns true if markdown is outdated2954 returns false if label and reference are set2955 .visible_to_user?2956 returns events with labels accessible by user2957 filters events with public project labels if issues and MRs are private2958 filters events with project labels not accessible by user2959 filters events with group labels not accessible by user2960Gitlab::Git::Tree2961 .where with Gitaly enabled2962 behaves like repo2963 is expected to be a kind of Array2964 is expected to be falsey2965 is expected to eq 22966 is expected to eq 102967 is expected to eq 22968 is expected to be blank2969 with an invalid ref2970 is expected to eq []2971 is expected to be nil2972 when path is provided2973 returns a list of tree objects2974 #dir?2975 is expected to be a kind of Gitlab::Git::Tree2976 is expected to eq "3c122d2b7830eca25235131070602575cf8b41a1"2977 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"2978 is expected to eq "encoding"2979 is expected to eq "encoding"2980 is expected to eq "40000"2981 is expected to eq "encoding"2982 subdir2983 is expected to be a kind of Gitlab::Git::Tree2984 is expected to eq "a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba"2985 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"2986 is expected to eq "html"2987 is expected to eq "files/html"2988 is expected to eq "files/html"2989 subdir_file2990 is expected to be a kind of Gitlab::Git::Tree2991 is expected to eq "7e3e39ebb9b2bf433b4ad17313770fbe4051649c"2992 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"2993 is expected to eq "popen.rb"2994 is expected to eq "files/ruby/popen.rb"2995 is expected to eq "files/ruby/popen.rb"2996 flat_path2997 is expected to eq "files/flat/path/correct"2998 #file?2999 is expected to be a kind of Gitlab::Git::Tree3000 is expected to eq "dfaa3f97ca337e20154a98ac9d0be76ddd1fcc82"3001 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"3002 is expected to eq ".gitignore"3003 #readme?3004 is expected to be a kind of Gitlab::Git::Tree3005 is expected to eq "README.md"3006 #contributing?3007 is expected to be a kind of Gitlab::Git::Tree3008 is expected to eq "CONTRIBUTING.md"3009 #submodule?3010 is expected to be a kind of Gitlab::Git::Tree3011 is expected to eq "79bceae69cb5750d6567b223597999bfa91cb3b9"3012 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"3013 is expected to eq "gitlab-shell"3014 with pagination parameters3015 returns paginated list of tree objects3016 .where with Rugged enabled3017 calls out to the Rugged implementation3018 behaves like repo3019 is expected to be a kind of Array3020 is expected to be falsey3021 is expected to eq 23022 is expected to eq 103023 is expected to eq 23024 is expected to be blank3025 with an invalid ref3026 is expected to eq []3027 is expected to be nil3028 when path is provided3029 returns a list of tree objects3030 #dir?3031 is expected to be a kind of Gitlab::Git::Tree3032 is expected to eq "3c122d2b7830eca25235131070602575cf8b41a1"3033 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"3034 is expected to eq "encoding"3035 is expected to eq "encoding"3036 is expected to eq "40000"3037 is expected to eq "encoding"3038 subdir3039 is expected to be a kind of Gitlab::Git::Tree3040 is expected to eq "a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba"3041 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"3042 is expected to eq "html"3043 is expected to eq "files/html"3044 is expected to eq "files/html"3045 subdir_file3046 is expected to be a kind of Gitlab::Git::Tree3047 is expected to eq "7e3e39ebb9b2bf433b4ad17313770fbe4051649c"3048 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"3049 is expected to eq "popen.rb"3050 is expected to eq "files/ruby/popen.rb"3051 is expected to eq "files/ruby/popen.rb"3052 flat_path3053 is expected to eq "files/flat/path/correct"3054 #file?3055 is expected to be a kind of Gitlab::Git::Tree3056 is expected to eq "dfaa3f97ca337e20154a98ac9d0be76ddd1fcc82"3057 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"3058 is expected to eq ".gitignore"3059 #readme?3060 is expected to be a kind of Gitlab::Git::Tree3061 is expected to eq "README.md"3062 #contributing?3063 is expected to be a kind of Gitlab::Git::Tree3064 is expected to eq "CONTRIBUTING.md"3065 #submodule?3066 is expected to be a kind of Gitlab::Git::Tree3067 is expected to eq "79bceae69cb5750d6567b223597999bfa91cb3b9"3068 is expected to eq "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"3069 is expected to eq "gitlab-shell"3070 Pagination3071 returns all tree entries in specific order during cursor pagination3072 with restrictive limit3073 returns limited paginated list of tree objects3074 when limit is equal to number of entries3075 returns all entries without a cursor3076 when limit is 03077 returns empty result3078 when limit is missing3079 returns empty result3080 when limit is negative3081 returns all entries3082 when token is provided3083 returns all entries after token3084 when token does not exist3085 raises a command error3086 when limit is bigger than number of entries3087 returns only available entries3088MergeRequestDiffCommit3089 behaves like a BulkInsertSafe model3090 when calling class methods directly3091 raises an error when method is not bulk-insert safe3092 does not raise an error when method is bulk-insert safe3093 .bulk_insert!3094 when all items are valid3095 inserts them all3096 returns an empty array3097 when some items are invalid3098 does not insert any of them and raises an error3099 inserts them anyway when bypassing validations3100 associations3101 is expected to belong to commit_author required: false3102 is expected to belong to committer required: false3103 #to_hash3104 returns the same results as Commit#to_hash, except for parent_ids3105 .create_bulk3106 inserts the commits into the database en masse3107 creates diff commit users3108 with dates larger than the DB limit3109 uses a sanitized date3110 .prepare_commits_for_bulk_insert3111 returns the commit hashes and unique user tuples3112Resolvers::BoardListIssuesResolver3113 #resolve3114 when project boards3115 behaves like group and project board list issues resolver3116 when authorized3117 generates a mutually exclusive filter error when milestone wildcard and title are provided3118 returns the issues in the correct order3119 finds only issues matching filters3120 finds only issues filtered by milestone wildcard3121 finds only issues matching search param3122 filters issues by negated issue type3123 generates an error if both assignee_username and assignee_wildcard_id are present3124 accepts assignee wildcard id NONE3125 accepts assignee wildcard id ANY3126 when filtering by confidential3127 returns matching issue3128 when group boards3129 behaves like group and project board list issues resolver3130 when authorized3131 generates a mutually exclusive filter error when milestone wildcard and title are provided3132 returns the issues in the correct order3133 finds only issues matching filters3134 finds only issues filtered by milestone wildcard3135 finds only issues matching search param3136 filters issues by negated issue type3137 generates an error if both assignee_username and assignee_wildcard_id are present3138 accepts assignee wildcard id NONE3139 accepts assignee wildcard id ANY3140 when filtering by confidential3141 returns matching issue3142Lfs::FileTransformer3143 #new_file3144 with lfs disabled3145 skips gitattributes check3146 returns untransformed content3147 returns untransformed encoding3148 with lfs enabled3149 reuses cached gitattributes3150 creates an LfsObject with the file's content3151 returns an LFS pointer3152 returns LFS pointer encoding as text3153 links LfsObjects to project3154 saves the repository_type to LfsObjectsProject3155 when an actual file is passed3156 creates an LfsObject with the file's content3157 when repository is a design repository3158 creates an LfsObject with the file's content3159 saves the correct repository_type to LfsObjectsProject3160 when doesn't use LFS3161 doesn't create LFS pointers3162 when LfsObject already exists3163 links LfsObjects to project3164 when the LfsObject is already linked to project3165 and the service is called again with the same repository type3166 is expected not to change `project.lfs_objects.count`3167 does not create a new LfsObjectsProject record3168 and the service is called again with a different repository type3169 is expected not to change `project.lfs_objects.count`3170 creates a new LfsObjectsProject record3171 sets the correct repository_type on the new LfsObjectsProject record3172IssueEntity3173 has Issuable attributes3174 has time estimation attributes3175 web_url3176 when issue is of type task3177 has a work item path3178 type3179 has an issue type3180 when issue got moved3181 when user cannot read target project3182 does not return moved_to_id3183 when user can read target project3184 returns moved moved_to_id3185 when issue got duplicated3186 when user cannot read new issue3187 does not return duplicated_to_id3188 when user can read target project3189 returns duplicated duplicated_to_id3190 when issuable in active or archived project3191 when project is active3192 returns archived false3193 returns nil for archived project doc3194 when project is archived3195 returns archived true3196 returns archived project doc3197Gitlab::Ci::Config::Entry::Reports3198 validates ALLOWED_KEYS3199 expects ALLOWED_KEYS to be an artifact file_type or coverage_report3200 validation3201 when entry config value is correct3202 keyword: :junit, file: "junit.xml"3203 when value is an array3204 behaves like a valid entry3205 #value3206 returns artifacts configuration3207 #valid?3208 is valid3209 when value is not array3210 behaves like a valid entry3211 #value3212 returns artifacts configuration3213 #valid?3214 is valid3215 keyword: :codequality, file: "gl-code-quality-report.json"3216 when value is an array3217 behaves like a valid entry3218 #value3219 returns artifacts configuration3220 #valid?3221 is valid3222 when value is not array3223 behaves like a valid entry3224 #value3225 returns artifacts configuration3226 #valid?3227 is valid3228 keyword: :sast, file: "gl-sast-report.json"3229 when value is an array3230 behaves like a valid entry3231 #value3232 returns artifacts configuration3233 #valid?3234 is valid3235 when value is not array3236 behaves like a valid entry3237 #value3238 returns artifacts configuration3239 #valid?3240 is valid3241 keyword: :secret_detection, file: "gl-secret-detection-report.json"3242 when value is an array3243 behaves like a valid entry3244 #value3245 returns artifacts configuration3246 #valid?3247 is valid3248 when value is not array3249 behaves like a valid entry3250 #value3251 returns artifacts configuration3252 #valid?3253 is valid3254 keyword: :dependency_scanning, file: "gl-dependency-scanning-report.json"3255 when value is an array3256 behaves like a valid entry3257 #value3258 returns artifacts configuration3259 #valid?3260 is valid3261 when value is not array3262 behaves like a valid entry3263 #value3264 returns artifacts configuration3265 #valid?3266 is valid3267 keyword: :container_scanning, file: "gl-container-scanning-report.json"3268 when value is an array3269 behaves like a valid entry3270 #value3271 returns artifacts configuration3272 #valid?3273 is valid3274 when value is not array3275 behaves like a valid entry3276 #value3277 returns artifacts configuration3278 #valid?3279 is valid3280 keyword: :cluster_image_scanning, file: "gl-cluster-image-scanning-report.json"3281 when value is an array3282 behaves like a valid entry3283 #value3284 returns artifacts configuration3285 #valid?3286 is valid3287 when value is not array3288 behaves like a valid entry3289 #value3290 returns artifacts configuration3291 #valid?3292 is valid3293 keyword: :dast, file: "gl-dast-report.json"3294 when value is an array3295 behaves like a valid entry3296 #value3297 returns artifacts configuration3298 #valid?3299 is valid3300 when value is not array3301 behaves like a valid entry3302 #value3303 returns artifacts configuration3304 #valid?3305 is valid3306 keyword: :license_scanning, file: "gl-license-scanning-report.json"3307 when value is an array3308 behaves like a valid entry3309 #value3310 returns artifacts configuration3311 #valid?3312 is valid3313 when value is not array3314 behaves like a valid entry3315 #value3316 returns artifacts configuration3317 #valid?3318 is valid3319 keyword: :performance, file: "performance.json"3320 when value is an array3321 behaves like a valid entry3322 #value3323 returns artifacts configuration3324 #valid?3325 is valid3326 when value is not array3327 behaves like a valid entry3328 #value3329 returns artifacts configuration3330 #valid?3331 is valid3332 keyword: :browser_performance, file: "browser-performance.json"3333 when value is an array3334 behaves like a valid entry3335 #value3336 returns artifacts configuration3337 #valid?3338 is valid3339 when value is not array3340 behaves like a valid entry3341 #value3342 returns artifacts configuration3343 #valid?3344 is valid3345 keyword: :browser_performance, file: "performance.json"3346 when value is an array3347 behaves like a valid entry3348 #value3349 returns artifacts configuration3350 #valid?3351 is valid3352 when value is not array3353 behaves like a valid entry3354 #value3355 returns artifacts configuration3356 #valid?3357 is valid3358 keyword: :load_performance, file: "load-performance.json"3359 when value is an array3360 behaves like a valid entry3361 #value3362 returns artifacts configuration3363 #valid?3364 is valid3365 when value is not array3366 behaves like a valid entry3367 #value3368 returns artifacts configuration3369 #valid?3370 is valid3371 keyword: :lsif, file: "lsif.json"3372 when value is an array3373 behaves like a valid entry3374 #value3375 returns artifacts configuration3376 #valid?3377 is valid3378 when value is not array3379 behaves like a valid entry3380 #value3381 returns artifacts configuration3382 #valid?3383 is valid3384 keyword: :dotenv, file: "build.dotenv"3385 when value is an array3386 behaves like a valid entry3387 #value3388 returns artifacts configuration3389 #valid?3390 is valid3391 when value is not array3392 behaves like a valid entry3393 #value3394 returns artifacts configuration3395 #valid?3396 is valid3397 keyword: :terraform, file: "tfplan.json"3398 when value is an array3399 behaves like a valid entry3400 #value3401 returns artifacts configuration3402 #valid?3403 is valid3404 when value is not array3405 behaves like a valid entry3406 #value3407 returns artifacts configuration3408 #valid?3409 is valid3410 keyword: :accessibility, file: "gl-accessibility.json"3411 when value is an array3412 behaves like a valid entry3413 #value3414 returns artifacts configuration3415 #valid?3416 is valid3417 when value is not array3418 behaves like a valid entry3419 #value3420 returns artifacts configuration3421 #valid?3422 is valid3423 when coverage_report is specified3424 is valid3425 returns artifacts configuration3426 and another report is specified3427 is valid3428 returns artifacts configuration3429 when entry value is not correct3430 #errors3431 when there is an unknown key present3432 reports error3433SystemHook3434 default attributes3435 sets defined default parameters3436 validations3437 url3438 is expected not to allow :url to be ‹"http://localhost:9000"›3439 is valid if application settings allow local requests from system hooks3440 execute3441 project_create hook3442 project_destroy hook3443 user_create hook3444 user_destroy hook3445 project member create hook3446 project member destroy hook3447 project member update hook3448 group create hook3449 group destroy hook3450 group member create hook3451 group member destroy hook3452 group member update hook3453 .repository_update_hooks3454 returns hooks for repository update events only3455 execute WebHookService3456 #execute3457 #async_execute3458 #application_context3459 includes the type3460Gitlab::VersionInfo3461 >3462 is expected to be > 1.1.03463 is expected to be > 1.0.13464 is expected to be > 1.0.03465 is expected to be > 1.0.03466 is expected to be > 1.0.1-b13467 is expected to be > 1.0.1-rc13468 is expected to be > 1.0.1-rc13469 is expected to be > 1.0.1-rc23470 is expected to be > 1.0.03471 is expected to be > 0.1.03472 is expected to be > 1.0.1-rc23473 is expected to be > 1.1.0-beta13474 is expected to be > 0.0.13475 >=3476 is expected to be >= 2.0.03477 is expected to be >= 1.1.03478 is expected to be >= 1.0.1-rc13479 <3480 is expected to be < 0.1.03481 is expected to be < 1.0.03482 is expected to be < 1.0.13483 is expected to be < 1.1.03484 is expected to be < 1.0.1-rc23485 is expected to be < 1.0.13486 is expected to be < 1.0.1-rc23487 is expected to be < 1.0.13488 is expected to be < 2.0.03489 is expected to be < 13.10.1~beta.1575.gf6ea93893490 is expected to be < 13.10.1~beta.1575.gf6ea93903491 <=3492 is expected to be <= 0.0.13493 is expected to be <= 0.1.03494 is expected to be <= 1.0.1-rc13495 is expected to be <= 1.0.1-rc23496 is expected to be <= 1.1.03497 ==3498 is expected to eq #<Gitlab::VersionInfo:0x00007fa81aa31ac8 @major=0, @minor=0, @patch=1, @suffix_s="", @suffix=[]>3499 is expected to eq #<Gitlab::VersionInfo:0x00007fa81a7a9c60 @major=0, @minor=1, @patch=0, @suffix_s="", @suffix=[]>3500 is expected to eq #<Gitlab::VersionInfo:0x00007fa81a545fa0 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>3501 is expected to eq #<Gitlab::VersionInfo:0x00007fa83a365850 @major=1, @minor=0, @patch=1, @suffix_s="-rc1", @suffix=["pre", "rc", 1]>3502 !=3503 is expected not to eq #<Gitlab::VersionInfo:0x00007fa839820f30 @major=0, @minor=1, @patch=0, @suffix_s="">3504 is expected not to eq #<Gitlab::VersionInfo:0x00007fa839375fa8 @major=1, @minor=0, @patch=1, @suffix_s="-rc2", @suffix=["pre", "rc", 2]>3505 .unknown3506 is expected not to equal #<Gitlab::VersionInfo:0x00007fa83913d088 @major=0, @minor=0, @patch=1, @suffix_s="">3507 is expected not to equal #<Gitlab::VersionInfo:0x00007fa838e3d900 @major=0, @minor=0, @patch=0, @suffix_s="">3508 is expected to raise ArgumentError3509 is expected to raise ArgumentError3510 .parse3511 is expected to eq #<Gitlab::VersionInfo:0x00007fa8388735d8 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>3512 is expected to eq #<Gitlab::VersionInfo:0x00007fa837c38e80 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>3513 is expected to eq #<Gitlab::VersionInfo:0x00007fa837b53bc8 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>3514 is expected to eq #<Gitlab::VersionInfo:0x00007fa837d949a0 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>3515 is expected to eq #<Gitlab::VersionInfo:0x00007fa8377e5810 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>3516 is expected to eq #<Gitlab::VersionInfo:0x00007fa837549408 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>3517 is expected not to be valid3518 with parse_suffix: true3519 versions are returned in a correct order3520 .to_s3521 is expected to eq "1.0.0"3522 is expected to eq "1.0.1-rc1"3523 is expected to eq "Unknown"3524 .hash3525 is expected to eq 8290292771903048843526 is expected to eq 8290292771903048843527 is expected to eq -40232735063148575753528 is expected to eq 29623659435825821493529 .eql?3530 is expected to be truthy3531 is expected to be truthy3532 is expected to be truthy3533 is expected to be falsey3534 is expected to be falsey3535 is expected to be falsey3536 is expected to be falsey3537 is expected to be truthy3538 is expected to eq [#<Gitlab::VersionInfo:0x00007fa834c99378 @major=1, @minor=0, @patch=0, @suffix_s="">, #<Gitlab::Vers...fix_s="">, #<Gitlab::VersionInfo:0x00007fa834c99300 @major=1, @minor=0, @patch=1, @suffix_s="-rc1">]3539 .same_minor_version?3540 is expected to be falsey3541 is expected to be truthy3542 is expected to be truthy3543 is expected to be truthy3544 is expected to be falsey3545 is expected to be falsey3546 .without_patch3547 is expected to eq #<Gitlab::VersionInfo:0x00007fa83fb22ac0 @major=0, @minor=1, @patch=0, @suffix_s="", @suffix=[]>3548 is expected to eq #<Gitlab::VersionInfo:0x00007fa83f12e640 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>3549 is expected to eq #<Gitlab::VersionInfo:0x00007fa83e7ecdc0 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>3550 is expected to eq #<Gitlab::VersionInfo:0x00007fa83e07d670 @major=1, @minor=0, @patch=0, @suffix_s="", @suffix=[]>3551MergeRequestDiffFile3552 behaves like a BulkInsertSafe model3553 when calling class methods directly3554 raises an error when method is not bulk-insert safe3555 does not raise an error when method is bulk-insert safe3556 .bulk_insert!3557 when all items are valid3558 inserts them all3559 returns an empty array3560 when some items are invalid3561 does not insert any of them and raises an error3562 inserts them anyway when bypassing validations3563 #diff3564 when diff is not stored3565 when the diff is marked as binary3566 unpacks from base 643567 invalid base643568 returns the raw diff3569 when the diff is not marked as binary3570 returns the raw diff3571 when diff is stored in DB3572 returns UTF-8 string3573 when diff is stored in external storage3574 returns UTF-8 string3575 #utf8_diff3576 does not raise error when the diff is binary3577 calls #diff once3578Gitlab::Database::RenameReservedPathsMigration::V13579 #rename_child_paths3580 behaves like renames child namespaces3581 renames namespaces3582 #rename_wildcard_paths3583 renames projects3584 behaves like renames child namespaces3585 renames namespaces3586 #rename_root_paths3587 renames namespaces3588 #revert_renames3589 renames namespaces3590 renames projects3591RemoveExpiredGroupLinksWorker3592 #perform3593 ProjectGroupLinks3594 removes expired group links3595 leaves group links that expire in the future3596 leaves group links that do not expire at all3597 removes project authorization3598 GroupGroupLinks3599 expired GroupGroupLink exists3600 calls Groups::GroupLinks::DestroyService3601 with skip_group_share_unlink_auth_refresh feature flag disabled3602 removes project authorization3603 with skip_group_share_unlink_auth_refresh feature flag enabled3604 does not remove project authorization3605 expired GroupGroupLink does not exist3606 does not call Groups::GroupLinks::DestroyService3607Mutations::Releases::Create3608 #resolve3609 when the current user has access to create releases3610 returns no errors3611 creates the release with the correct tag3612 creates the release with the correct name3613 creates the release with the correct description3614 creates the release with the correct released_at3615 creates the release with the correct created_at3616 creates the release with the correct milestone associations3617 asset links3618 creates a single asset link3619 creates the link with the correct name3620 creates the link with the correct url3621 creates the link with the correct link type3622 creates the link with the correct direct filepath3623 with protected tag3624 when user has access to the protected tag3625 does not have errors3626 when user does not have access to the protected tag3627 has an access error3628 when the current user doesn't have access to create releases3629 raises an error3630ImportExportUpload3631 import3632 behaves like stores the Import/Export file3633 stores the import file3634 export3635 behaves like stores the Import/Export file3636 stores the import file3637 scopes3638 .with_export_file3639 returns uploads with export file3640 .updated_before3641 returns uploads for a specified date3642 ActiveRecord callbacks3643 export file is stored in after_commit callback3644 import file is stored in after_save callback3645 export file3646 #export_file_exists? returns false3647 #export_archive_exists? returns false3648 with export3649 #export_file_exists? returns true3650 #export_archive_exists? returns false3651 when object file does not exist3652 #export_file_exists? returns true3653 #export_archive_exists? returns false3654 when checking object existence raises a error3655 #export_file_exists? returns true3656 #export_archive_exists? returns false3657Gitlab::Ci::Config::Entry::Bridge3658 behaves like with inheritable CI config3659 does prepend an Inheritable mixin3660 all inheritable entries are covered3661 all entries do have inherit flag3662 for non-inheritable entries3663 entry_key: :stage3664 inheritable_class does not define entry3665 entry_key: :only3666 inheritable_class does not define entry3667 entry_key: :except3668 inheritable_class does not define entry3669 entry_key: :rules3670 inheritable_class does not define entry3671 entry_key: :variables3672 inheritable_class does not define entry3673 entry_key: :inherit3674 inheritable_class does not define entry3675 entry_key: :trigger3676 inheritable_class does not define entry3677 entry_key: :needs3678 inheritable_class does not define entry3679 entry_key: :parallel3680 inheritable_class does not define entry3681 .matching?3682 when config is not a hash3683 is expected to be falsey3684 when config is a regular job3685 is expected to be falsey3686 with rules3687 is expected to be falsey3688 when config is a bridge job3689 is expected to be truthy3690 with rules3691 is expected to be truthy3692 when config is a hidden job3693 is expected to be falsey3694 .new3695 when trigger config is a non-empty string3696 #valid?3697 is expected to be valid3698 #value3699 is returns a bridge job configuration3700 when bridge trigger is a hash3701 #valid?3702 is expected to be valid3703 #value3704 is returns a bridge job configuration hash3705 when bridge configuration contains trigger, when, extends, stage, only, except, and variables3706 is expected to be valid3707 when bridge configuration uses rules3708 is expected to be valid3709 when bridge configuration uses rules with job:when3710 is expected to be valid3711 when bridge configuration uses rules with only3712 is expected not to be valid3713 when bridge configuration uses rules with except3714 is expected not to be valid3715 when bridge has only job needs3716 #valid?3717 is expected not to be valid3718 when bridge config contains unknown keys3719 #valid?3720 is expected not to be valid3721 #errors3722 is returns an error about unknown config key3723 when bridge config contains build-specific attributes3724 #valid?3725 is expected not to be valid3726 #errors3727 returns an error message3728 when bridge config contains exit_codes3729 #valid?3730 is expected not to be valid3731 #errors3732 returns an error message3733 when bridge config contains parallel3734 when parallel config is a number3735 #valid?3736 is expected not to be valid3737 #errors3738 returns an error message3739 when parallel config is a matrix3740 #valid?3741 is expected to be valid3742 #value3743 is returns a bridge job configuration3744 when bridge trigger contains forward3745 #valid?3746 is expected to be valid3747 #value3748 returns a bridge job configuration hash3749 #manual_action?3750 when job is a manual action3751 is expected to be manual action3752 when job is not a manual action3753 is expected not to be manual action3754 #ignored?3755 when job is a manual action3756 when it is not specified if job is allowed to fail3757 is expected to be ignored3758 when job is allowed to fail3759 is expected to be ignored3760 when job is not allowed to fail3761 is expected not to be ignored3762 when job is not a manual action3763 when it is not specified if job is allowed to fail3764 is expected not to be ignored3765 when job is allowed to fail3766 is expected to be ignored3767 when job is not allowed to fail3768 is expected not to be ignored3769MergeRequests::PostMergeService3770 #execute3771 refreshes the number of open merge requests for a valid MR3772 updates metrics3773 calls the merge request activity counter3774 deletes non-latest diffs3775 clean up environments for the merge request3776 schedules CleanupRefsService3777 behaves like cache counters invalidator3778 invalidates counter cache for assignees3779 behaves like merge request reviewers cache counters invalidator3780 invalidates counter cache for reviewers3781 when there are issues to be closed3782 performs MergeRequests::CloseIssueWorker asynchronously3783 when issue is an external issue3784 executes Issues::CloseService3785 when the merge request has review apps3786 cancels all review app deployments3787MergeRequests::RetargetChainService3788 #execute3789 when there is another MR3790 in the same project3791 and current is merged3792 behaves like retargets merge request3793 another merge request is retargeted3794 and current is closed3795 behaves like does not retarget merge request3796 another merge request is unchanged3797 and another is closed3798 behaves like does not retarget merge request3799 another merge request is unchanged3800 and another is merged3801 behaves like does not retarget merge request3802 another merge request is unchanged3803 in forked project3804 when user has access to source project3805 behaves like retargets merge request3806 another merge request is retargeted3807 when user does not have access to source project3808 behaves like does not retarget merge request3809 another merge request is unchanged3810 and current and another MR is from a fork3811 behaves like does not retarget merge request3812 another merge request is unchanged3813 when many merge requests are to be retargeted3814 retargets only 4 of them3815UserPreference3816 validations3817 diffs_deletion_color and diffs_addition_color3818 color: "#000000"3819 is expected to allow :diffs_deletion_color to be ‹"#000000"›3820 is expected to allow :diffs_addition_color to be ‹"#000000"›3821 color: "#123456"3822 is expected to allow :diffs_deletion_color to be ‹"#123456"›3823 is expected to allow :diffs_addition_color to be ‹"#123456"›3824 color: "#abcdef"3825 is expected to allow :diffs_deletion_color to be ‹"#abcdef"›3826 is expected to allow :diffs_addition_color to be ‹"#abcdef"›3827 color: "#AbCdEf"3828 is expected to allow :diffs_deletion_color to be ‹"#AbCdEf"›3829 is expected to allow :diffs_addition_color to be ‹"#AbCdEf"›3830 color: "#ffffff"3831 is expected to allow :diffs_deletion_color to be ‹"#ffffff"›3832 is expected to allow :diffs_addition_color to be ‹"#ffffff"›3833 color: "#fFfFfF"3834 is expected to allow :diffs_deletion_color to be ‹"#fFfFfF"›3835 is expected to allow :diffs_addition_color to be ‹"#fFfFfF"›3836 color: "#000"3837 is expected to allow :diffs_deletion_color to be ‹"#000"›3838 is expected to allow :diffs_addition_color to be ‹"#000"›3839 color: "#123"3840 is expected to allow :diffs_deletion_color to be ‹"#123"›3841 is expected to allow :diffs_addition_color to be ‹"#123"›3842 color: "#abc"3843 is expected to allow :diffs_deletion_color to be ‹"#abc"›3844 is expected to allow :diffs_addition_color to be ‹"#abc"›3845 color: "#AbC"3846 is expected to allow :diffs_deletion_color to be ‹"#AbC"›3847 is expected to allow :diffs_addition_color to be ‹"#AbC"›3848 color: "#fff"3849 is expected to allow :diffs_deletion_color to be ‹"#fff"›3850 is expected to allow :diffs_addition_color to be ‹"#fff"›3851 color: "#fFf"3852 is expected to allow :diffs_deletion_color to be ‹"#fFf"›3853 is expected to allow :diffs_addition_color to be ‹"#fFf"›3854 color: ""3855 is expected to allow :diffs_deletion_color to be ‹""›3856 is expected to allow :diffs_addition_color to be ‹""›3857 color: "#1"3858 is expected not to allow :diffs_deletion_color to be ‹"#1"›3859 is expected not to allow :diffs_addition_color to be ‹"#1"›3860 color: "#12"3861 is expected not to allow :diffs_deletion_color to be ‹"#12"›3862 is expected not to allow :diffs_addition_color to be ‹"#12"›3863 color: "#1234"3864 is expected not to allow :diffs_deletion_color to be ‹"#1234"›3865 is expected not to allow :diffs_addition_color to be ‹"#1234"›3866 color: "#12345"3867 is expected not to allow :diffs_deletion_color to be ‹"#12345"›3868 is expected not to allow :diffs_addition_color to be ‹"#12345"›3869 color: "#1234567"3870 is expected not to allow :diffs_deletion_color to be ‹"#1234567"›3871 is expected not to allow :diffs_addition_color to be ‹"#1234567"›3872 color: "123456"3873 is expected not to allow :diffs_deletion_color to be ‹"123456"›3874 is expected not to allow :diffs_addition_color to be ‹"123456"›3875 color: "#12345x"3876 is expected not to allow :diffs_deletion_color to be ‹"#12345x"›3877 is expected not to allow :diffs_addition_color to be ‹"#12345x"›3878 notes filters global keys3879 contains expected values3880 #set_notes_filter3881 when filter is set to all notes3882 behaves like setting system notes3883 returns updated discussion filter3884 updates discussion filter for issuable class3885 when filter is set to only comments3886 behaves like setting system notes3887 returns updated discussion filter3888 updates discussion filter for issuable class3889 when filter is set to only activity3890 behaves like setting system notes3891 returns updated discussion filter3892 updates discussion filter for issuable class3893 when notes_filter parameter is invalid3894 returns the current notes filter3895 sort_by preferences3896 merge_requests_sort attribute3897 behaves like a sort_by preference3898 allows nil sort fields3899 issues_sort attribute3900 behaves like a sort_by preference3901 allows nil sort fields3902 #tab_width3903 is set to 8 by default3904 is expected to validate that :tab_width looks like an integer greater than or equal to 1 and less than or equal to 123905Gitlab::Git::Diff3906 .new3907 using a Hash3908 with a small diff3909 initializes the diff3910 does not prune the diff3911 using a diff that is too large3912 prunes the diff3913 using a GitalyClient::Diff3914 with a small diff3915 initializes the diff3916 does not prune the diff3917 using a diff that is too large3918 prunes the diff3919 logs the event3920 using a collapsable diff that is too large3921 prunes the diff as a large diff instead of as a collapsed diff3922 when the patch passed is not UTF-8-encoded3923 encodes diff patch to UTF-83924 using a Gitaly::CommitDelta3925 initializes the diff3926 is not too large3927 has an empty diff3928 is not a binary3929 when diff contains invalid characters3930 when replace_invalid_utf8_chars is true3931 will convert invalid characters and not cause an encoding error3932 when the diff is binary3933 will not try to replace characters3934 when convert_diff_to_utf8_with_replacement_symbol feature flag is disabled3935 will not try to convert invalid characters3936 when replace_invalid_utf8_chars is false3937 will not try to convert invalid characters3938 straight diffs3939 has the correct size3940 diff3941 is an instance of Diff3942 has the correct new_path3943 has the correct diff3944 .between3945 is expected to be a kind of Gitlab::Git::DiffCollection3946 #size3947 is expected to eq 13948 diff3949 is expected to be a kind of Gitlab::Git::Diff3950 #new_path3951 is expected to eq "files/ruby/feature.rb"3952 #diff3953 is expected to include "+class Feature"3954 .filter_diff_options3955 without default options3956 filters invalid options3957 with default options3958 filters invalid options3959 merges with default options3960 overrides default options3961 #json_safe_diff3962 fake binary message when it detects binary3963 leave non-binary diffs as-is3964 #submodule?3965 is expected to eq false3966 is expected to eq true3967 #line_count3968 returns the correct number of lines3969 #diff_bytesize3970 returns the size of the diff in bytes3971 #too_large?3972 returns true for a diff that is too large3973 returns false for a diff that is small enough3974 returns true for a diff that was explicitly marked as being too large3975 #collapsed?3976 returns false by default even on quite big diff3977 returns false by default for a diff that is small enough3978 returns true for a diff that was explicitly marked as being collapsed3979 #collapsed?3980 returns true for a diff that is quite large3981 returns false for a diff that is small enough3982 #collapse!3983 prunes the diff3984Ci::Resource3985 .free3986 returns free resources3987 .retained3988 returns the resource if it's retained3989 returns empty if it's not retained3990 .retained_by3991 returns retained resources3992 .stale_processables3993 when the processable is running3994 returns empty3995 and doomed3996 returns empty3997 returns the stale prosessable a few minutes later3998Gitlab::Redis::DuplicateJobs3999 .config_file_name4000 when there is no config file anywhere4001 is expected to be nil4002 but resque.yml exists4003 is expected to eq "/tmp/redis_shared_examples20220704-464-1l5gybv/config/resque.yml"4004 returns a path that exists4005 and there is a global env override4006 is expected to eq "global override"4007 and there is an instance specific config file4008 is expected to eq "/tmp/redis_shared_examples20220704-464-1dmcgec/config/redis.shared_state.yml"4009 returns a path that exists4010 and there is a specific env override4011 is expected to eq "instance specific override"4012 .store4013 with old format4014 behaves like redis store4015 instantiates Redis::Store4016 with the namespace4017 uses specified namespace4018 with new format4019 behaves like redis store4020 instantiates Redis::Store4021 with the namespace4022 uses specified namespace4023 .params4024 withstands mutation4025 when url contains unix socket reference4026 with old format4027 returns path key instead4028 with new format4029 returns path key instead4030 when url is host based4031 with old format4032 returns hash with host, port, db, and password4033 with new format4034 rails_env: "development", host: "development-host"4035 returns hash with host, port, db, and password4036 rails_env: "test", host: "test-host"4037 returns hash with host, port, db, and password4038 rails_env: "production", host: "production-host"4039 returns hash with host, port, db, and password4040 .url4041 withstands mutation4042 when yml file with env variable4043 reads redis url from env variable4044 .version4045 returns a version4046 ._raw_config4047 is frozen4048 returns false when the file does not exist4049 returns false when the filename can't be determined4050 .with4051 when running on single-threaded runtime4052 instantiates a connection pool with size 54053 when running on multi-threaded runtime4054 instantiates a connection pool with a size based on the concurrency of the worker4055 when there is no config at all4056 can run an empty block4057 #db4058 with old format4059 returns the correct db4060 with new format4061 returns the correct db4062 #sentinels4063 when sentinels are defined4064 rails_env: "development", hosts: ["development-replica1", "development-replica2"]4065 returns an array of hashes with host and port keys4066 rails_env: "test", hosts: ["test-replica1", "test-replica2"]4067 returns an array of hashes with host and port keys4068 rails_env: "production", hosts: ["production-replica1", "production-replica2"]4069 returns an array of hashes with host and port keys4070 when sentinels are not defined4071 returns nil4072 #sentinels?4073 when sentinels are defined4074 returns true4075 when sentinels are not defined4076 returns false4077 #raw_config_hash4078 returns old-style single url config in a hash4079 #fetch_config4080 returns false when no config file is present4081 returns false when config file is present but has invalid YAML4082 has a value for the legacy default URL4083 #pool4084 store connection settings4085 instantiates an instance of MultiStore4086 key namespaces4087 writes keys to SharedState with no prefix, and to Queues with the "resque:gitlab:" prefix4088 behaves like multi store feature flags4089 with feature flag :use_primary_and_secondary_stores_for_duplicate_jobs is enabled4090 multi store is enabled4091 with feature flag :use_primary_and_secondary_stores_for_duplicate_jobs is disabled4092 multi store is disabled4093 with feature flag :use_primary_store_as_default_for_duplicate_jobs is enabled4094 primary store is enabled4095 with feature flag :use_primary_store_as_default_for_duplicate_jobs is disabled4096 primary store is disabled4097 #raw_config_hash4098 has a legacy default URL4099 #store_name4100 returns the name of the SharedState store4101API::Helpers::Caching4102 #present_cached4103 single object4104 behaves like object cache helper4105 is expected to be a kind of Gitlab::Json::PrecompiledJson4106 uses the presenter4107 is valid JSON4108 fetches from the cache4109 when a cache context is supplied4110 uses the context to augment the cache key4111 when expires_in is supplied4112 sets the expiry when accessing the cache4113 collection of objects4114 behaves like collection cache helper4115 is expected to be a kind of Gitlab::Json::PrecompiledJson4116 uses the presenter4117 is valid JSON4118 fetches from the cache4119 when a cache context is supplied4120 uses the context to augment the cache key4121 expires_in is supplied4122 sets the expiry when accessing the cache4123 #cache_action4124 is expected to be a kind of Gitlab::Json::PrecompiledJson4125 represents the correct data4126 only calls the expensive action once4127 handles nested cache calls4128 Cache versioning4129 returns cache based on version parameter4130 Cache for pagination headers4131 X-Per-Page4132 stores and recovers pagination headers from cache4133 prefers headers from request than from cache4134 X-Page4135 stores and recovers pagination headers from cache4136 prefers headers from request than from cache4137 X-Next-Page4138 stores and recovers pagination headers from cache4139 prefers headers from request than from cache4140 X-Prev-Page4141 stores and recovers pagination headers from cache4142 prefers headers from request than from cache4143 Link4144 stores and recovers pagination headers from cache4145 prefers headers from request than from cache4146 X-Total4147 stores and recovers pagination headers from cache4148 prefers headers from request than from cache4149 X-Total-Pages4150 stores and recovers pagination headers from cache4151 prefers headers from request than from cache4152 #cache_action_if4153 conditional is truthy4154 is expected to be a kind of Gitlab::Json::PrecompiledJson4155 caches the block4156 conditional is falsey4157 is expected to eq {:foo=>"bar"}4158 doesn't cache the block4159 #cache_action_unless4160 conditional is truthy4161 is expected to eq {:foo=>"bar"}4162 doesn't cache the block4163 conditional is falsey4164 is expected to be a kind of Gitlab::Json::PrecompiledJson4165 caches the block4166Schedulable4167 for a pipeline_schedule4168 behaves like #schedule_next_run!4169 saves the object and sets next_run_at4170 sets next_run_at to nil on error4171 behaves like before_save callback4172 updates next_run_at4173 behaves like .runnable_schedules4174 returns the runnable schedules4175 for a container_expiration_policy4176 behaves like #schedule_next_run!4177 saves the object and sets next_run_at4178 sets next_run_at to nil on error4179 behaves like before_save callback4180 updates next_run_at4181 behaves like .runnable_schedules4182 returns the runnable schedules4183 for a packages cleanup policy4184 behaves like #schedule_next_run!4185 saves the object and sets next_run_at4186 sets next_run_at to nil on error4187 behaves like before_save callback4188 updates next_run_at4189 behaves like .runnable_schedules4190 returns the runnable schedules4191 #next_run_at4192 works4193PackagesHelper4194 #package_registry_instance_url4195 returns conan instance url when registry_type is conant4196 returns npm instance url when registry_type is npm4197 #package_registry_project_url4198 returns maven registry url when registry_type is not provided4199 returns specified registry url when registry_type is provided4200 #pypi_registry_url4201 returns the pypi registry url4202 #composer_registry_url4203 return the composer registry url4204 #composer_config_repository_name4205 return global unique composer registry id4206 #show_cleanup_policy_link4207 com: false, config_registry: false, project_registry: false, nil_policy: false, container_repositories_exist: false, expected_result: false4208 is expected to eq false4209 com: false, config_registry: false, project_registry: false, nil_policy: false, container_repositories_exist: true, expected_result: false4210 is expected to eq false4211 com: false, config_registry: false, project_registry: false, nil_policy: true, container_repositories_exist: false, expected_result: false4212 is expected to eq false4213 com: false, config_registry: false, project_registry: false, nil_policy: true, container_repositories_exist: true, expected_result: false4214 is expected to eq false4215 com: false, config_registry: false, project_registry: true, nil_policy: false, container_repositories_exist: false, expected_result: false4216 is expected to eq false4217 com: false, config_registry: false, project_registry: true, nil_policy: false, container_repositories_exist: true, expected_result: false4218 is expected to eq false4219 com: false, config_registry: false, project_registry: true, nil_policy: true, container_repositories_exist: false, expected_result: false4220 is expected to eq false4221 com: false, config_registry: false, project_registry: true, nil_policy: true, container_repositories_exist: true, expected_result: false4222 is expected to eq false4223 com: false, config_registry: true, project_registry: false, nil_policy: false, container_repositories_exist: false, expected_result: false4224 is expected to eq false4225 com: false, config_registry: true, project_registry: false, nil_policy: false, container_repositories_exist: true, expected_result: false4226 is expected to eq false4227 com: false, config_registry: true, project_registry: false, nil_policy: true, container_repositories_exist: false, expected_result: false4228 is expected to eq false4229 com: false, config_registry: true, project_registry: false, nil_policy: true, container_repositories_exist: true, expected_result: false4230 is expected to eq false4231 com: false, config_registry: true, project_registry: true, nil_policy: false, container_repositories_exist: false, expected_result: false4232 is expected to eq false4233 com: false, config_registry: true, project_registry: true, nil_policy: false, container_repositories_exist: true, expected_result: false4234 is expected to eq false4235 com: false, config_registry: true, project_registry: true, nil_policy: true, container_repositories_exist: false, expected_result: false4236 is expected to eq false4237 com: false, config_registry: true, project_registry: true, nil_policy: true, container_repositories_exist: true, expected_result: false4238 is expected to eq false4239 com: true, config_registry: false, project_registry: false, nil_policy: false, container_repositories_exist: false, expected_result: false4240 is expected to eq false4241 com: true, config_registry: false, project_registry: false, nil_policy: false, container_repositories_exist: true, expected_result: false4242 is expected to eq false4243 com: true, config_registry: false, project_registry: false, nil_policy: true, container_repositories_exist: false, expected_result: false4244 is expected to eq false4245 com: true, config_registry: false, project_registry: false, nil_policy: true, container_repositories_exist: true, expected_result: false4246 is expected to eq false4247 com: true, config_registry: false, project_registry: true, nil_policy: false, container_repositories_exist: false, expected_result: false4248 is expected to eq false4249 com: true, config_registry: false, project_registry: true, nil_policy: false, container_repositories_exist: true, expected_result: false4250 is expected to eq false4251 com: true, config_registry: false, project_registry: true, nil_policy: true, container_repositories_exist: false, expected_result: false4252 is expected to eq false4253 com: true, config_registry: false, project_registry: true, nil_policy: true, container_repositories_exist: true, expected_result: false4254 is expected to eq false4255 com: true, config_registry: true, project_registry: false, nil_policy: false, container_repositories_exist: false, expected_result: false4256 is expected to eq false4257 com: true, config_registry: true, project_registry: false, nil_policy: false, container_repositories_exist: true, expected_result: false4258 is expected to eq false4259 com: true, config_registry: true, project_registry: false, nil_policy: true, container_repositories_exist: false, expected_result: false4260 is expected to eq false4261 com: true, config_registry: true, project_registry: false, nil_policy: true, container_repositories_exist: true, expected_result: false4262 is expected to eq false4263 com: true, config_registry: true, project_registry: true, nil_policy: false, container_repositories_exist: false, expected_result: false4264 is expected to eq false4265 com: true, config_registry: true, project_registry: true, nil_policy: false, container_repositories_exist: true, expected_result: false4266 is expected to eq false4267 com: true, config_registry: true, project_registry: true, nil_policy: true, container_repositories_exist: false, expected_result: false4268 is expected to eq false4269 com: true, config_registry: true, project_registry: true, nil_policy: true, container_repositories_exist: true, expected_result: true4270 is expected to eq true4271PlanLimits4272 #exceeded?4273 when given limit subject is an integer4274 behaves like comparing limits4275 when limit for given name results to a disabled value4276 is expected to eq false4277 when limit for given name results to a non-disabled value4278 and given count is smaller than limit4279 is expected to eq false4280 and given count is equal to the limit4281 is expected to eq true4282 and given count is greater than the limit4283 is expected to eq true4284 when given limit subject is an ActiveRecord::Relation4285 behaves like comparing limits4286 when limit for given name results to a disabled value4287 is expected to eq false4288 when limit for given name results to a non-disabled value4289 and given count is smaller than limit4290 is expected to eq false4291 and given count is equal to the limit4292 is expected to eq true4293 and given count is greater than the limit4294 is expected to eq true4295 when given limit subject is something else4296 raises an error4297 #limit_for4298 when given limit name does not exist4299 raises an error4300 when given limit name is disabled4301 is expected to eq nil4302 and alternate_limit is a non-zero integer4303 is expected to eq 14304 and alternate_limit is zero4305 is expected to eq nil4306 and alternate_limit is a proc that returns non-zero integer4307 is expected to eq 14308 and alternate_limit is a proc that returns zero4309 is expected to eq nil4310 and alternate_limit is a proc that returns nil4311 is expected to eq nil4312 when given limit name is enabled4313 and alternate_limit is a non-zero integer that is bigger than the plan limit4314 is expected to eq 24315 and alternate_limit is a non-zero integer that is smaller than the plan limit4316 is expected to eq 14317 and alternate_limit is zero4318 is expected to eq 24319 and alternate_limit is a proc that returns non-zero integer that is bigger than the plan limit4320 is expected to eq 24321 and alternate_limit is a proc that returns non-zero integer that is smaller than the plan limit4322 is expected to eq 14323 and alternate_limit is a proc that returns zero4324 is expected to eq 24325 and alternate_limit is a proc that returns nil4326 is expected to eq 24327 validates default values4328 has positive values for enabled limits4329 has zero values for disabled limits4330Ci::PipelineArtifacts::DestroyAllExpiredService4331 .execute4332 when timeout happens4333 returns 0 and does not continue destroying4334 when there are no artifacts4335 does not raise error4336 when the loop limit is reached4337 destroys one artifact4338 reports the number of destroyed artifacts4339 when there are artifacts more than batch sizes4340 destroys all expired artifacts4341 reports the number of destroyed artifacts4342 when artifacts are not expired4343 does not destroy pipeline artifacts4344 reports the number of destroyed artifacts4345 when pipeline is locked4346 does not destroy pipeline artifacts4347 reports the number of destroyed artifacts4348 .destroy_artifacts_batch4349 returns a falsy value without artifacts4350Clusters::Applications::UninstallService#execute4351 when there are no errors4352 make the application to be uninstalling4353 schedule async installation status check4354 when k8s cluster communication fails4355 logs into kubernetes.log and Sentry4356 make the application errored4357 a non kubernetes error happens4358 logs into kubernetes.log and Sentry4359 make the application errored4360Redactable4361 when model is an issue4362 behaves like model with redactable field4363 redacts unsubscribe token4364 ignores not hexadecimal tokens4365 ignores not matching texts4366 redacts the field when saving the model before creating markdown cache4367 when model is a merge request4368 behaves like model with redactable field4369 redacts unsubscribe token4370 ignores not hexadecimal tokens4371 ignores not matching texts4372 redacts the field when saving the model before creating markdown cache4373 when model is a note4374 behaves like model with redactable field4375 redacts unsubscribe token4376 ignores not hexadecimal tokens4377 ignores not matching texts4378 redacts the field when saving the model before creating markdown cache4379 when model is a snippet4380 behaves like model with redactable field4381 redacts unsubscribe token4382 ignores not hexadecimal tokens4383 ignores not matching texts4384 redacts the field when saving the model before creating markdown cache4385Gitlab::Ci::Pipeline::Seed::Stage4386 #size4387 returns a number of jobs in the stage4388 #attributes4389 returns hash attributes of a stage4390 #included?4391 when it contains builds seeds4392 is expected to be included4393 when it does not contain build seeds4394 is expected not to be included4395 #seeds4396 returns build seeds4397 returns build seeds including valid attributes4398 filters seeds using only/except policies4399 when a legacy trigger exists4400 returns build seeds including legacy trigger4401 when a ref is protected4402 returns protected builds4403 when a ref is not protected4404 returns unprotected builds4405 #seeds_names4406 returns all job names4407 returns a set4408 #seeds_errors4409 returns all errors from seeds4410 #to_resource4411 builds a valid stage object with all builds4412 can not be persisted without explicit pipeline assignment4413Clusters::Applications::InstallService4414 #execute4415 when there are no errors4416 make the application installing4417 schedule async installation status check4418 when k8s cluster communication fails4419 logs into kubernetes.log and Sentry4420 make the application errored4421 a non kubernetes error happens4422 logs into kubernetes.log and Sentry4423 make the application errored4424Projects::LfsPointers::LfsDownloadLinkListService4425 #execute4426 retrieves each download link of every non existent lfs object4427 stores headers4428 when lfs objects size is larger than the batch size4429 when batch size4430 retreives them in batches4431 when request fails with PayloadTooLarge error4432 when the smaller batch eventually works4433 retreives them eventually and logs exceptions4434 when batch size cannot be any smaller4435 raises an error and logs exceptions4436 credentials4437 when the download link and the lfs_endpoint have the same host4438 when lfs_endpoint has credentials4439 adds credentials to the download_link4440 when lfs_endpoint does not have any credentials4441 does not add any credentials4442 when the download link and the lfs_endpoint have different hosts4443 downloads without any credentials4444 #get_download_links4445 if request fails4446 raises an error4447 behaves like JSON parse errors4448 raises an error4449 behaves like JSON parse errors4450 raises an error4451 behaves like JSON parse errors4452 raises an error4453 #parse_response_links4454 does not add oid entry if href not found4455Issues::ResolveDiscussions4456 for resolving discussions4457 #merge_request_for_resolving_discussion4458 finds the merge request4459 only queries for the merge request once4460 #discussions_to_resolve4461 contains a single discussion when matching merge request and discussion are passed4462 contains all discussions when only a merge request is passed4463 contains only unresolved discussions4464 is empty when a discussion and another merge request are passed4465Gitlab::Ci::Config::Entry::Release4466 validation4467 when entry config value is correct4468 behaves like a valid entry4469 #value4470 returns release configuration4471 #valid?4472 is valid4473 when value includes 'assets' keyword4474 behaves like a valid entry4475 #value4476 returns release configuration4477 #valid?4478 is valid4479 when value includes 'name' keyword4480 behaves like a valid entry4481 #value4482 returns release configuration4483 #valid?4484 is valid4485 when value includes 'ref' keyword4486 behaves like a valid entry4487 #value4488 returns release configuration4489 #valid?4490 is valid4491 when value includes 'released_at' keyword4492 behaves like a valid entry4493 #value4494 returns release configuration4495 #valid?4496 is valid4497 when value includes 'milestones' keyword4498 for an array of milestones4499 behaves like a valid entry4500 #value4501 returns release configuration4502 #valid?4503 is valid4504 for a single milestone4505 behaves like a valid entry4506 #value4507 returns release configuration4508 #valid?4509 is valid4510 when value includes 'ref' keyword4511 when 'ref' is a full commit SHA4512 behaves like a valid entry4513 #value4514 returns release configuration4515 #valid?4516 is valid4517 when 'ref' is a short commit SHA4518 behaves like a valid entry4519 #value4520 returns release configuration4521 #valid?4522 is valid4523 when 'ref' is a branch name4524 behaves like a valid entry4525 #value4526 returns release configuration4527 #valid?4528 is valid4529 when 'ref' is a semantic versioning tag4530 behaves like a valid entry4531 #value4532 returns release configuration4533 #valid?4534 is valid4535 when 'ref' is a semantic versioning tag rc4536 behaves like a valid entry4537 #value4538 returns release configuration4539 #valid?4540 is valid4541 when value includes 'released_at' keyword4542 behaves like a valid entry4543 #value4544 returns release configuration4545 #valid?4546 is valid4547 when value includes 'milestones' keyword4548 for an array of milestones4549 behaves like a valid entry4550 #value4551 returns release configuration4552 #valid?4553 is valid4554 for a single milestone4555 behaves like a valid entry4556 #value4557 returns release configuration4558 #valid?4559 is valid4560 when entry value is not correct4561 #errors4562 when value of attribute is invalid4563 behaves like reports error4564 reports error4565 when release description is missing4566 behaves like reports error4567 reports error4568 when release tag_name is missing4569 behaves like reports error4570 reports error4571 when there is an unknown key present4572 behaves like reports error4573 reports error4574 when `released_at` is not a valid date4575 behaves like reports error4576 reports error4577 when `ref` is not valid4578 behaves like reports error4579 reports error4580 when `milestones` is not an array of strings4581 behaves like reports error4582 reports error4583Metrics::Dashboard::Annotations::DeleteService4584 .execute4585 with specific environment4586 with anonymous user4587 behaves like prevented annotation deletion4588 returns error response4589 does not change db state4590 with maintainer user4591 behaves like executed annotation deletion4592 returns success response4593 annotation failed to delete4594 returns error response4595 with specific cluster4596 with anonymous user4597 behaves like prevented annotation deletion4598 returns error response4599 does not change db state4600 with maintainer user4601 behaves like executed annotation deletion4602 returns success response4603 with owner user4604 behaves like executed annotation deletion4605 returns success response4606Gitlab::Ci::Pipeline::Chain::EnsureResourceGroups4607 #perform!4608 when a pipeline contains a job that requires a resource group4609 ensures the resource group existence4610 when a resource group has already been existed4611 ensures the resource group existence4612 when a resource group key contains an invalid character4613 does not create any resource groups4614 when a pipeline does not contain a job that requires a resource group4615 does not create any resource groups4616Gitlab::PerformanceBar4617 is expected to eq #<ActiveSupport::Cache::MemoryStore entries=0, size=0, options={:compress=>false}>4618 is expected to eq <ActiveSupport::Cache::NullStore>4619 .allowed_for_user?4620 returns false when given user is nil4621 returns true when given user is an admin4622 returns false when allowed_group_id is nil4623 when allowed group ID does not exist4624 returns false4625 when allowed group exists4626 when user is not a member of the allowed group4627 returns false4628 caching of allowed user IDs4629 behaves like allowed user IDs are cached4630 caches the allowed user IDs in cache4631 caches the allowed user IDs in L1 cache for 1 minute4632 caches the allowed user IDs in L2 cache for 5 minutes4633 when user is a member of the allowed group4634 returns true4635 caching of allowed user IDs4636 behaves like allowed user IDs are cached4637 caches the allowed user IDs in cache4638 caches the allowed user IDs in L1 cache for 1 minute4639 caches the allowed user IDs in L2 cache for 5 minutes4640 when allowed group is nested4641 returns the nested group4642 when a nested group has the same path4643 returns false4644Packages::TagsFinder4645 #execute4646 is expected to contain exactly #<Packages::Tag id: 1, package_id: 1, name: "tag-1", created_at: "2022-07-04 08:52:18.577913171 +0000", updated_at: "2022-07-04 08:52:18.577913171 +0000"> and #<Packages::Tag id: 2, package_id: 1, name: "tag-2", created_at: "2022-07-04 08:52:18.585371580 +0000", updated_at: "2022-07-04 08:52:18.585371580 +0000">4647 with package type4648 is expected to contain exactly #<Packages::Tag id: 5, package_id: 4, name: "tag-5", created_at: "2022-07-04 08:52:19.630355653 +0000", updated_at: "2022-07-04 08:52:19.630355653 +0000">4649 with blank package type4650 is expected to contain exactly #<Packages::Tag id: 6, package_id: 5, name: "tag-6", created_at: "2022-07-04 08:52:20.098651001 +0000", updated_at: "2022-07-04 08:52:20.098651001 +0000"> and #<Packages::Tag id: 7, package_id: 5, name: "tag-7", created_at: "2022-07-04 08:52:20.105256450 +0000", updated_at: "2022-07-04 08:52:20.105256450 +0000">4651 with nil package type4652 is expected to contain exactly #<Packages::Tag id: 8, package_id: 6, name: "tag-8", created_at: "2022-07-04 08:52:20.619036702 +0000", updated_at: "2022-07-04 08:52:20.619036702 +0000"> and #<Packages::Tag id: 9, package_id: 6, name: "tag-9", created_at: "2022-07-04 08:52:20.625316982 +0000", updated_at: "2022-07-04 08:52:20.625316982 +0000">4653 with unknown package name4654 is expected to be empty4655 #find_by_name4656 is expected to eq #<Packages::Tag id: 12, package_id: 8, name: "tag-12", created_at: "2022-07-04 08:52:21.695735031 +0000", updated_at: "2022-07-04 08:52:21.695735031 +0000">4657 with package type4658 is expected to eq #<Packages::Tag id: 16, package_id: 11, name: "tag-16", created_at: "2022-07-04 08:52:22.781106478 +0000", updated_at: "2022-07-04 08:52:22.781106478 +0000">4659 with unknown tag_name4660 is expected to be nil4661DiffViewer::Base4662 .can_render?4663 when the extension is supported4664 when the binaryness matches4665 returns true4666 when the binaryness does not match4667 returns false4668 when the extension and file type are not supported4669 returns false4670 when the file was renamed and only the old blob is supported4671 returns false4672 #collapsed?4673 when the combined blob size is larger than the collapse limit4674 returns true4675 when the combined blob size is smaller than the collapse limit4676 returns false4677 #too_large?4678 when the combined blob size is larger than the size limit4679 returns true4680 when the blob size is smaller than the size limit4681 returns false4682 #render_error4683 when the combined blob size is larger than the size limit4684 returns :too_large4685 when the combined blob size is smaller than the size limit4686 returns nil4687 #render_error_message4688 returns nothing when no render_error4689 when render_error error4690 returns an error message4691 includes a "view the blob" link4692FileMover4693 #execute4694 local storage4695 when move and field update successful4696 updates the description correctly4697 updates existing upload record4698 schedules a background migration4699 when update_markdown fails4700 does not update the description4701 does not change the upload record4702 when tmp uploader is not local storage4703 when move and field update successful4704 updates the description correctly4705 creates new target upload record an delete the old upload4706 when update_markdown fails4707 does not update the description4708 does not change the upload record4709 security4710 when relative path is involved4711 does not trigger move if path is outside designated directory4712 when symlink is involved4713 does not trigger move if path is outside designated directory4714Gitlab::Email::Handler::UnsubscribeHandler4715 when email key4716 matches the new format4717 matches the legacy format4718 doesn't match either format4719 when notification concerns a commit4720 handler does not raise an error4721 user is unsubscribed4722 leaves user unsubscribed4723 user is subscribed4724 unsubscribes user from notable4725 when using old style unsubscribe link4726 unsubscribes user from notable4727 when the noteable could not be found4728 raises a NoteableNotFoundError4729 when no sent notification for the mail key could be found4730 raises a SentNotificationNotFoundError4731Clusters::Applications::UpgradeService4732 #execute4733 when there are no errors4734 make the application updating4735 schedule async installation status check4736 when kubernetes cluster communication fails4737 logs into kubernetes.log and Sentry4738 make the application errored4739 a non kubernetes error happens4740 logs into kubernetes.log and Sentry4741 make the application errored4742NewMergeRequestWorker4743 #perform4744 when a merge request not found4745 does not call Services4746 logs an error4747 when a user not found4748 does not call Services4749 logs an error4750 with a user4751 when the merge request author is blocked4752 behaves like a new merge request where the author cannot trigger notifications4753 does not create a notification for the mentioned user4754 when the merge request author is a ghost4755 behaves like a new merge request where the author cannot trigger notifications4756 does not create a notification for the mentioned user4757 when everything is ok4758 creates a new event record4759 creates a notification for the mentioned user4760DesignManagement::VersionsFinder4761 #execute4762 when user cannot read designs of an issue4763 returns no results when passed a DesignCollection4764 when passed a Design4765 returns no results when passed a Design4766 when user can read designs of an issue4767 when design management feature is disabled4768 returns no results when passed a DesignCollection4769 when passed a Design4770 returns no results when passed a Design4771 when design management feature is enabled4772 passing a DesignCollection or a Design for the initial scoping4773 returns the versions scoped to the DesignCollection4774 when passed a Design4775 returns the versions scoped to the Design4776 returning versions earlier or equal to a version4777 when argument is the first version4778 is expected to eq [#<DesignManagement::Version id: 2, sha: "3032849e250d346cfd6fa441802a7548c74bafb6", issue_id: 378, created_at: "2022-07-04 08:52:57.249675000 +0000", author_id: 1909>]4779 when argument is the second version4780 is expected to contain exactly #<DesignManagement::Version id: 2, sha: "3032849e250d346cfd6fa441802a7548c74bafb6", issue_id: 378, created_at: "2022-07-04 08:52:57.249675000 +0000", author_id: 1909> and #<DesignManagement::Version id: 3, sha: "da470d99c0c532645be907f40e218e7cf50c5b84", issue_id: 378, created_at: "2022-07-04 08:52:57.304584000 +0000", author_id: 1909>4781 returning versions by SHA4782 when argument is the first version4783 is expected to contain exactly #<DesignManagement::Version id: 2, sha: "3032849e250d346cfd6fa441802a7548c74bafb6", issue_id: 378, created_at: "2022-07-04 08:52:57.249675000 +0000", author_id: 1909>4784 when argument is the second version4785 is expected to contain exactly #<DesignManagement::Version id: 3, sha: "da470d99c0c532645be907f40e218e7cf50c5b84", issue_id: 378, created_at: "2022-07-04 08:52:57.304584000 +0000", author_id: 1909>4786 returning versions by ID4787 when argument is the first version4788 is expected to contain exactly #<DesignManagement::Version id: 2, sha: "3032849e250d346cfd6fa441802a7548c74bafb6", issue_id: 378, created_at: "2022-07-04 08:52:57.249675000 +0000", author_id: 1909>4789 when argument is the second version4790 is expected to contain exactly #<DesignManagement::Version id: 3, sha: "da470d99c0c532645be907f40e218e7cf50c5b84", issue_id: 378, created_at: "2022-07-04 08:52:57.304584000 +0000", author_id: 1909>4791 mixing id and sha4792 when arguments are consistent4793 is expected to contain exactly #<DesignManagement::Version id: 2, sha: "3032849e250d346cfd6fa441802a7548c74bafb6", issue_id: 378, created_at: "2022-07-04 08:52:57.249675000 +0000", author_id: 1909>4794 when arguments are in-consistent4795 is expected to be empty4796Gitlab::RepositoryCache4797 #cache_key4798 project repository4799 behaves like cache_key examples4800 includes the namespace4801 with a given namespace4802 includes the full namespace4803 personal snippet repository4804 behaves like cache_key examples4805 includes the namespace4806 with a given namespace4807 includes the full namespace4808 project snippet repository4809 behaves like cache_key examples4810 includes the namespace4811 with a given namespace4812 includes the full namespace4813 #expire4814 expires the given key from the cache4815 #fetch4816 fetches the given key from the cache4817 accepts a block4818 #write4819 writes the given key and value to the cache4820 passes additional options to the backend4821 #fetch_without_caching_false4822 requires a block4823 when the key does not exist in the cache4824 when the result of the block is truthy4825 returns the result of the block4826 caches the value4827 when the result of the block is falsey4828 returns the result of the block4829 does not cache the value4830 when the cached value is truthy4831 returns the cached value4832 does not execute the block4833 does not write to the cache4834 when the cached value is falsey4835 returns the result of the block4836 writes the truthy value to the cache4837Gitlab::Ci::Config::External::Context4838 attributes4839 with values4840 is expected to have attributes {:project => #<Double "Project">, :sha => "12345", :user => #<Double "User">, :variables => #<Gitlab::Ci::Var...{:key => "a", :value => "b", :public => true, :file => false, :masked => false, :raw => false}>]}, @errors=nil>}4841 is expected to eq #<Set: {}>4842 is expected to eq 04843 is expected to be an instance of Gitlab::Ci::Variables::Collection4844 is expected to be an instance of ActiveSupport::HashWithIndifferentAccess4845 is expected to include {"a" => "b"}4846 without values4847 is expected to have attributes {:project => nil, :sha => nil, :user => nil}4848 is expected to eq #<Set: {}>4849 is expected to eq 04850 is expected to be an instance of Gitlab::Ci::Variables::Collection4851 is expected to be an instance of ActiveSupport::HashWithIndifferentAccess4852 #set_deadline4853 with a float value4854 updates execution_deadline4855 with nil as a value4856 updates execution_deadline4857 #check_execution_time!4858 when execution is expired4859 raises an error4860 when execution is not expired4861 does not raises any errors4862 without setting a deadline4863 does not raises any errors4864 #mutate4865 with attributes4866 behaves like a mutated context4867 is expected not to eq #<Gitlab::Ci::Config::External::Context:0x00007fa81df06708 @project=#<Double "Project">, @sha="12345"...=nil>, @expandset=#<Set: {:a_file}>, @execution_deadline=5397.166643583, @logger=#<Double "logger">>4868 is expected to be a kind of Gitlab::Ci::Config::External::Context4869 is expected to have attributes {:project => #<Double (anonymous)>, :sha => "56789", :user => #<Double (anonymous)>}4870 is expected to eq #<Set: {:a_file}>4871 is expected to eq 5397.3095816644872 is expected to eq #<Double "logger">4873 without attributes4874 behaves like a mutated context4875 is expected not to eq #<Gitlab::Ci::Config::External::Context:0x00007fa81b40edc0 @project=#<Double "Project">, @sha="12345"...=nil>, @expandset=#<Set: {:a_file}>, @execution_deadline=5397.378643225, @logger=#<Double "logger">>4876 is expected to be a kind of Gitlab::Ci::Config::External::Context4877 is expected to have attributes {}4878 is expected to eq #<Set: {:a_file}>4879 is expected to eq 5397.5142613874880 is expected to eq #<Double "logger">4881 #sentry_payload4882 is expected to match (a hash including :project and :user)4883Packages::Maven::Metadatum4884 relationships4885 is expected to belong to package required: false4886 validations4887 is expected to validate that :package cannot be empty/falsy4888 #app_name4889 is expected to allow :app_name to be ‹"my-app"›4890 is expected not to allow :app_name to be ‹"my/app"›4891 is expected not to allow :app_name to be ‹"my(app)"›4892 #app_group4893 is expected to allow :app_group to be ‹"my.domain.com"›4894 is expected not to allow :app_group to be ‹"my/domain/com"›4895 is expected not to allow :app_group to be ‹"my(domain)"›4896 #path4897 is expected to allow :path to be ‹"my/domain/com/my-app"›4898 is expected to allow :path to be ‹"my/domain/com/my-app/1.0-SNAPSHOT"›4899 is expected not to allow :path to be ‹"my(domain)com.my-app"›4900 #maven_package_type4901 will not allow a package with a different package_type4902 with a package4903 .for_package_ids4904 is expected to contain exactly #<Packages::Maven::Metadatum id: 3, package_id: 13, created_at: "2022-07-04 08:53:02.174974189 +0000"...y.app", app_name: "my-app", app_version: "1.0-SNAPSHOT", path: "my/company/app/my-app/1.0-SNAPSHOT">, #<Packages::Maven::Metadatum id: 4, package_id: 13, created_at: "2022-07-04 08:53:02.178980529 +0000"...y.app", app_name: "my-app", app_version: "1.0-SNAPSHOT", path: "my/company/app/my-app/1.0-SNAPSHOT">, and #<Packages::Maven::Metadatum id: 5, package_id: 13, created_at: "2022-07-04 08:53:02.181602209 +0000"...y.app", app_name: "my-app", app_version: "1.0-SNAPSHOT", path: "my/company/app/my-app/1.0-SNAPSHOT">4905 .order_created4906 is expected to eq [#<Packages::Maven::Metadatum id: 6, package_id: 13, created_at: "2022-07-04 08:53:02.219867344 +0000....app", app_name: "my-app", app_version: "1.0-SNAPSHOT", path: "my/company/app/my-app/1.0-SNAPSHOT">]4907 .pluck_app_name4908 is expected to contain exactly "one", "two", and "three"4909 .with_path4910 is expected to contain exactly #<Packages::Maven::Metadatum id: 14, package_id: 13, created_at: "2022-07-04 08:53:02.326676369 +0000...9 +0000", app_group: "my.company.app", app_name: "my-app", app_version: "1.0-SNAPSHOT", path: "two">4911Users::CreateService4912 #execute4913 with an admin user4914 when required parameters are provided4915 returns a persisted user4916 persists the given attributes4917 user is not confirmed if skip_confirmation param is not present4918 logs the user creation4919 executes system hooks4920 does not send a notification email4921 when the current_user is not persisted4922 persists the given attributes and sets created_by_id to nil4923 when force_random_password parameter is true4924 generates random password4925 when password_automatically_set parameter is true4926 persists the given attributes4927 when skip_confirmation parameter is true4928 confirms the user4929 when reset_password parameter is true4930 resets password even if a password parameter is given4931 sends a notification email4932 with nil user4933 persists the given attributes4934Gitlab::SidekiqDaemon::MemoryKiller4935 #run_thread4936 not invoke restart_sidekiq when rss in range4937 invoke restart_sidekiq when rss not in range4938 when structured logging is used4939 logs start message once4940 logs StandardError message twice4941 logs exception message once and raise exception and log stop message4942 logs stop message once4943 #stop_working4944 changes enable? to false4945 #rss_within_range?4946 return true when everything is within limit4947 return false when rss exceeds hard_limit_rss4948 return false when rss exceed hard_limit_rss after a while4949 return true when rss below soft_limit_rss after a while within GRACE_BALLOON_SECONDS4950 when exceeding GRACE_BALLOON_SECONDS4951 return false when rss exceed soft_limit_rss4952 #restart_sidekiq4953 send signal4954 #signal_and_wait4955 send signal and return when all jobs finished4956 send signal and wait till deadline if any job not finished4957 #signal_pgroup4958 send signal to this proces if it is not group leader4959 send signal to whole process group as group leader4960 #log_rss_out_of_range4961 invoke sidekiq logger warn4962 #out_of_range_description4963 when rss > hard_limit4964 tells reason4965 when rss <= hard_limit4966 tells reason4967 #rss_increase_by_jobs4968 adds up individual rss_increase_by_job4969 return 0 if no job4970 #rss_increase_by_job4971 return 0 if memory_growth_kb return 04972 return time factored growth value when it does not exceed max growth limit for whilited job4973 return max growth limit when time factored growth value exceed max growth limit for whilited job4974 #get_job_options4975 return default if key is not defined4976 return default if get StandardError when retrieve sidekiq_options4977 return right value if sidekiq_options has the key4978 #refresh_state4979 calls gitlab metrics gauge set methods4980DeploymentClusterEntity4981 #as_json4982 matches deployment_cluster entity schema4983 exposes the cluster details4984 when the user does not have permission to view the cluster4985 does not include the path nor the namespace4986Resolvers::BaseResolver.single4987 #resolve4988 when there is no parent4989 returns nil if parent is nil4990 when project boards4991 behaves like group and project boards resolver4992 does not create a default board4993 calls Boards::BoardsFinder4994 requires an ID4995 when querying for a single board4996 returns specified board4997 returns nil if board not found4998 when group boards4999 behaves like group and project boards resolver5000 does not create a default board5001 calls Boards::BoardsFinder5002 requires an ID5003 when querying for a single board5004 returns specified board5005 returns nil if board not found5006Gitlab::Database::BackgroundMigration::PrometheusMetrics5007 #track5008 reports batch_size5009 reports sub_batch_size5010 reports interval5011 reports job duration5012 increments updated tuples (currently based on batch_size)5013 reports migrated tuples5014 reports the total tuple count for the migration5015 reports last updated at timestamp5016 reports summary of query timings5017 when the tracking record does not having timing metrics5018 does not attempt to report query timings5019notify/pipeline_success_email.html.haml5020 behaves like pipeline status changes email5021 when the pipeline contains a failed job5022 behaves like renders the pipeline status changes email correctly5023 pipeline with user5024 renders the email correctly5025 behaves like correct pipeline information for pipelines for merge requests5026 when pipeline for merge request5027 renders a source ref of the pipeline5028 pipeline without user5029 renders the email correctly5030 when the latest failed job is a bridge job5031 behaves like renders the pipeline status changes email correctly5032 pipeline with user5033 renders the email correctly5034 behaves like correct pipeline information for pipelines for merge requests5035 when pipeline for merge request5036 renders a source ref of the pipeline5037 pipeline without user5038 renders the email correctly5039MergeRequests::CloseIssueWorker5040 #perform5041 calls the close issue service5042 when the project does not exist5043 behaves like when object does not exist5044 does not call the close issue service5045 when the user does not exist5046 behaves like when object does not exist5047 does not call the close issue service5048 when the issue does not exist5049 behaves like when object does not exist5050 does not call the close issue service5051 when the merge request does not exist5052 behaves like when object does not exist5053 does not call the close issue service5054ErrorTracking::IssueDetailsService5055 #execute5056 with authorized user5057 when issue_details returns a detailed error5058 returns the detailed error5059 returns the gitlab_issue when the error has a sentry_issue5060 returns the gitlab_issue path from sentry when the error has no sentry_issue5061 when issue_details returns nil5062 result is not ready5063 when issue_details returns error5064 returns the error5065 when issue_details returns error with http_status5066 returns the error with correct http_status5067 with integrated error tracking5068 returns the error in detailed format5069 when error does not exist5070 returns the error in detailed format5071 with unauthorized user5072 returns error5073 with error tracking disabled5074 raises error5075Lfs::UnlockFileService5076 #execute5077 when not authorized5078 doesn't succeed5079 when authorized5080 when lock does not exists5081 doesn't succeed5082 when unlocked by the author5083 succeeds5084 when unlocked by a different user5085 doesn't succeed5086 when forced5087 by a regular user5088 doesn't succeed5089 by a maintainer user5090 succeeds5091Gitlab::RobotsTxt::Parser5092 #disallowed?5093 a simple robots.txt file5094 path: "/autocomplete/users", result: true5095 is expected to eq true5096 path: "/autocomplete/users/a.html", result: true5097 is expected to eq true5098 path: "/search", result: true5099 is expected to eq true5100 path: "/search.html", result: true5101 is expected to eq true5102 path: "/api", result: true5103 is expected to eq true5104 path: "/api/grapql", result: true5105 is expected to eq true5106 path: "/api/index.html", result: true5107 is expected to eq true5108 path: "/projects", result: false5109 is expected to eq false5110 path: "/users", result: false5111 is expected to eq false5112 path: "/help", result: false5113 is expected to eq false5114 path: "/test", result: true5115 is expected to eq true5116 path: "/testfoo", result: false5117 is expected to eq false5118 path: "/ex$mple", result: true5119 is expected to eq true5120 path: "/ex$mplefoo", result: false5121 is expected to eq false5122 robots.txt file with wildcard5123 path: "/search", result: true5124 is expected to eq true5125 path: "/namespace/project.git", result: true5126 is expected to eq true5127 path: "/project/archive/", result: true5128 is expected to eq true5129 path: "/project/archive/file.gz", result: true5130 is expected to eq true5131 path: "/project/repository/archive", result: true5132 is expected to eq true5133 path: "/project/repository/archive.gz", result: true5134 is expected to eq true5135 path: "/project/repository/archive/file.gz", result: true5136 is expected to eq true5137 path: "/projects", result: false5138 is expected to eq false5139 path: "/git", result: false5140 is expected to eq false5141 path: "/projects/git", result: false5142 is expected to eq false5143 path: "/project/repository/archive/foo", result: false5144 is expected to eq false5145Gitlab::ObjectHierarchy5146 #base_and_ancestors5147 includes the base rows5148 includes all of the ancestors5149 can find ancestors upto a certain level5150 uses ancestors_base #initialize argument5151 does not allow the use of #update_all5152 hierarchy_order option5153 :asc5154 orders by child to parent5155 :desc5156 orders by parent to child5157 #base_and_descendants5158 includes the base rows5159 includes all the descendants5160 uses descendants_base #initialize argument5161 does not allow the use of #update_all5162 when with_depth is true5163 includes depth in the results5164 #descendants5165 includes only the descendants5166 #max_descendants_depth5167 when base relation is empty5168 is expected to be nil5169 when base has no children5170 is expected to eq 15171 when base has grandchildren5172 is expected to eq 35173 #ancestors5174 includes only the ancestors5175 can find ancestors upto a certain level5176 #all_objects5177 includes the base rows5178 includes the ancestors5179 includes the descendants5180 uses ancestors_base #initialize argument for ancestors5181 uses descendants_base #initialize argument for descendants5182 does not allow the use of #update_all5183Resolvers::UserNotesCountResolver5184 #resolve5185 is expected to have nullable GraphQL type Int5186 when counting notes from an issue5187 when counting notes from a public issue5188 returns the number of non-system notes for the issue5189 when a user has permission to view notes5190 returns the number of notes for the issue5191 when a user does not have permission to view notes5192 generates an error5193 when counting notes from a merge request5194 when counting notes from a public merge request5195 returns the number of non-system notes for the merge request5196 when a user has permission to view notes5197 returns the number of notes for the merge request5198 when a user does not have permission to view notes5199 generates an error5200Gitlab::QuickActions::CommandDefinition5201 #all_names5202 when the command has aliases5203 returns an array with the name and aliases5204 when the command doesn't have aliases5205 returns an array with the name5206 #noop?5207 when the command has an action block5208 returns false5209 when the command doesn't have an action block5210 returns true5211 #available?5212 when the command has a condition block5213 when the condition block returns true5214 returns true5215 when the condition block returns false5216 returns false5217 when the command doesn't have a condition block5218 returns true5219 when the command has types5220 when the command target type is allowed5221 returns true5222 when the command target type is not allowed5223 returns true5224 when the command has no types5225 any target type is allowed5226 #execute5227 when the command is a noop5228 doesn't execute the command5229 when the command is not a noop5230 when the command is not available5231 counts the command as executed5232 when the command is available5233 when the commnd has no arguments5234 when the command is provided an argument5235 executes the command5236 when the command is not provided an argument5237 executes the command5238 when the command has 1 required argument5239 when the command is provided an argument5240 executes the command5241 when the command is not provided an argument5242 doesn't execute the command5243 when the command has 1 optional argument5244 when the command is provided an argument5245 executes the command5246 when the command is not provided an argument5247 executes the command5248 when the command defines parse_params block5249 executes the command passing the parsed param5250 #execute_message5251 when the command is a noop5252 returns nil5253 when the command is not a noop5254 when the command is not available5255 returns an error message5256 when the command is available5257 when the execution_message is a static string5258 returns this static string5259 when the explanation is dynamic5260 invokes the proc5261 #explain5262 when the command is not available5263 returns nil5264 when the explanation is a static string5265 returns this static string5266 when warning is set5267 returns this static string5268 when the explanation is dynamic5269 invokes the proc5270Gitlab::Database::QueryAnalyzer5271 the hook is enabled by default in specs5272 does process queries and gets normalized SQL5273 does prevent recursive execution5274 #within5275 when it is already initialized5276 does initialize analyzer only once5277 does initialize user analyzer when enabled5278 does initialize user analyzer only once5279 does not initializer user analyzer when disabled5280 when initializer is enabled5281 calls begin! and end!5282 when begin! raises the end! is not called5283 when user analyzers are used5284 calls begin! and end!5285 #process_sql5286 does not analyze query if not enabled5287 does analyze query if enabled5288 does track exception if query cannot be parsed5289 does track exception if analyzer raises exception on enabled?5290 does track exception if analyzer raises exception on analyze5291 does call analyze only on enabled initializers5292 does not call analyze on suppressed analyzers5293 does call analyze on suppressed analyzers if some queries require tracking5294MergeRequests::AddContextService5295 #execute5296 when admin mode is enabled5297 adds context commit5298 when admin mode is disabled5299 doesn't add context commit5300 when user doesn't have permission to update merge request5301 doesn't add context commit5302 when the commits array is empty5303 doesn't add context commit5304Gitlab::Database::GitlabSchema5305 .tables_to_schema5306 all tables have assigned a known gitlab_schema5307 for main using ActiveRecord::Base5308 new data sources are added5309 non-existing data sources are removed5310 for ci using Ci::ApplicationRecord5311 new data sources are added5312 non-existing data sources are removed5313 .table_schema5314 name: "ci_builds", classification: :gitlab_ci5315 is expected to eq :gitlab_ci5316 name: "my_schema.ci_builds", classification: :gitlab_ci5317 is expected to eq :gitlab_ci5318 name: "information_schema.columns", classification: :gitlab_internal5319 is expected to eq :gitlab_internal5320 name: "audit_events_part_5fc467ac26", classification: :gitlab_main5321 is expected to eq :gitlab_main5322 name: "_test_gitlab_main_table", classification: :gitlab_main5323 is expected to eq :gitlab_main5324 name: "_test_gitlab_ci_table", classification: :gitlab_ci5325 is expected to eq :gitlab_ci5326 name: "_test_my_table", classification: :gitlab_shared5327 is expected to eq :gitlab_shared5328 name: "pg_attribute", classification: :gitlab_internal5329 is expected to eq :gitlab_internal5330 name: "my_other_table", classification: :undefined_my_other_table5331 is expected to eq :undefined_my_other_table5332GroupMemberPresenter5333 #can_resend_invite?5334 when group_member is invited5335 and user can admin_group_member5336 is expected to eq true5337 and user cannot admin_group_member5338 is expected to eq false5339 when group_member is not invited5340 and user can admin_group_member5341 is expected to eq false5342 and user cannot admin_group_member5343 is expected to eq false5344 #can_update?5345 when user can update_group_member5346 is expected to eq true5347 when user cannot update_group_member5348 is expected to eq false5349 #can_remove?5350 when user can destroy_group_member5351 is expected to eq true5352 when user cannot destroy_group_member5353 is expected to eq false5354 #can_approve?5355 when group_member has request an invite5356 when user can update_group_member5357 is expected to eq true5358 when user cannot update_group_member5359 is expected to eq false5360 when group_member did not request an invite5361 when user can update_group_member5362 is expected to eq false5363 when user cannot update_group_member5364 is expected to eq false5365 behaves like #valid_level_roles5366 returns all roles when no parent member is present5367 returns higher roles when a parent member is present5368Resolvers::GroupIssuesResolver5369 #resolve5370 finds all group issues5371 finds all group and subgroup issues5372 returns issues without the specified issue_type5373 confidential issues5374 when user is allowed to view confidential issues5375 returns all viewable issues by default5376 filtering for confidential issues5377 returns only the non-confidential issues for the group when filter is set to false5378 returns only the confidential issues for the group when filter is set to true5379 when user is not allowed to see confidential issues5380 returns all viewable issues by default5381 filtering for confidential issues5382 does not return the confidential issues when filter is set to false5383 does not return the confidential issues when filter is set to true5384 release_tag filter5385 generates an error when trying to filter by negated release_tag5386Gitlab::Diff::Rendered::Notebook::DiffFileHelper5387 #strip_diff_frontmatter5388 diff: "FileLine1\nFileLine2\n@@ -1,76 +1,74 @@\nhello\n", result: "@@ -1,76 +1,74 @@\nhello\n"5389 is expected to eq "@@ -1,76 +1,74 @@\nhello\n"5390 diff: "", result: nil5391 is expected to eq nil5392 diff: nil, result: nil5393 is expected to eq nil5394 #map_transformed_line_to_source5395 case: "if transformed diff is empty", transformed_blocks: [], result: 05396 is expected to eq 05397 case: "if the transformed line does not map to any in the original file", transformed_blocks: [{:source_line=>nil}], result: 05398 is expected to eq 05399 case: "if the transformed line maps to a line in the source file", transformed_blocks: [{:source_line=>2}], result: 35400 is expected to eq 35401 #image_as_rich_text5402 text does not contain image5403 is expected to be nil5404 text contains image5405 is expected to eq "<img src=\"data:image/png;base64,some_image_here\">"5406 text contains image that has malicious html5407 sanitizes the html5408 adds image to src5409 #line_positions_at_source_diff5410 case: " A A", index: 0, transformed_positions: [1, 1], mapped_positions: [1, 1]5411 is expected to eq [1, 1]5412 case: "- C ", index: 1, transformed_positions: [2, 2], mapped_positions: [3, 2]5413 is expected to eq [3, 2]5414 case: "- B ", index: 2, transformed_positions: [3, 2], mapped_positions: [2, 2]5415 is expected to eq [2, 2]5416 case: "- L ", index: 3, transformed_positions: [4, 2], mapped_positions: [0, 0]5417 is expected to eq [0, 0]5418 case: "+ D", index: 4, transformed_positions: [5, 2], mapped_positions: [4, 2]5419 is expected to eq [4, 2]5420 case: "+ J", index: 5, transformed_positions: [5, 3], mapped_positions: [0, 0]5421 is expected to eq [0, 0]5422 case: "+ E", index: 6, transformed_positions: [5, 4], mapped_positions: [4, 3]5423 is expected to eq [4, 3]5424 case: " K K", index: 7, transformed_positions: [5, 5], mapped_positions: [0, 0]5425 is expected to eq [0, 0]5426 case: " F F", index: 8, transformed_positions: [6, 6], mapped_positions: [4, 4]5427 is expected to eq [4, 4]5428 #lines_in_source_diff5429 old_lines: [1, 2, 2], new_lines: [1, 1, 4], is_deleted: false, is_new: false, existing_lines: {:from=>#<Set: {1, 2}>, :to=>#<Set: {1, 4}>}5430 is expected to eq {:from=>#<Set: {1, 2}>, :to=>#<Set: {1, 4}>}5431 old_lines: [1, 2, 2], new_lines: [1, 1, 4], is_deleted: true, is_new: false, existing_lines: {:from=>#<Set: {1, 2}>, :to=>#<Set: {}>}5432 is expected to eq {:from=>#<Set: {1, 2}>, :to=>#<Set: {}>}5433 old_lines: [1, 2, 2], new_lines: [1, 1, 4], is_deleted: false, is_new: true, existing_lines: {:from=>#<Set: {}>, :to=>#<Set: {1, 4}>}5434 is expected to eq {:from=>#<Set: {}>, :to=>#<Set: {1, 4}>}5435API::Entities::Ci::Pipeline5436 exposes pipeline before_sha5437 exposes pipeline tag5438 exposes pipeline yaml_errors5439 exposes pipeline created_at5440 exposes pipeline updated_at5441 exposes pipeline started_at5442 exposes pipeline finished_at5443 exposes pipeline committed_at5444 exposes pipeline duration5445 exposes pipeline queued_duration5446 exposes pipeline user basic information5447 exposes pipeline detailed status5448 exposes pipeline coverage as a string5449Evidences::EvidenceEntity5450 exposes the expected fields5451 when a release is associated to a milestone5452 when a milestone has no issue associated with it5453 creates a valid JSON object5454 when a milestone has no description5455 creates a valid JSON object5456 when a milestone has no due_date5457 creates a valid JSON object5458 when a milestone has an issue5459 when the issue has no description5460 creates a valid JSON object5461 when a release is not associated to any milestone5462 creates a valid JSON object5463Gitlab::Analytics::CycleAnalytics::StageEvents::IssueFirstMentionedInCommit5464 behaves like value stream analytics event5465 is expected to be a kind of String5466 is expected to be a kind of Symbol5467 is expected to include ApplicationRecord(abstract)5468 is expected to respond to #timestamp_projection5469 is expected to respond to #html_description5470 is expected to be a kind of Array5471 #apply_query_customization5472 expects an ActiveRecord::Relation object as argument and returns a modified version of it5473 #hash_code5474 returns a hash that uniquely identifies an event5475 does not differ when the same object is built with the same params5476 behaves like LEFT JOIN-able value stream analytics event5477 can use the event as LEFT JOIN5478 when looking at the record with data5479 contains the timestamp expression5480 when looking at the record without data5481 returns nil for the timestamp expression5482StageUpdateWorker5483 #perform5484 when stage exists5485 updates stage status5486 behaves like an idempotent worker5487 is labeled as idempotent5488 performs multiple times sequentially without raising an exception5489 results in the stage getting the skipped status5490 when stage does not exist5491 does not raise exception5492MergeRequestMergeabilityCheckWorker5493 #perform5494 when merge request does not exist5495 does not execute MergeabilityCheckService5496 when merge request exists5497 executes MergeabilityCheckService5498 structurally logs a failed mergeability check5499 behaves like an idempotent worker5500 is labeled as idempotent5501 performs multiple times sequentially without raising an exception5502 is mergeable5503Gitlab::Ci::Ansi2json::Line5504 #<<5505 appends new data to the current segment5506 #style5507 when style is passed to the initializer5508 returns the same style5509 when style is not passed to the initializer5510 returns the default style5511 #update_style5512 sets the style5513 #add_section5514 appends a new section to the list5515 #set_section_options5516 sets the current section's options5517 #set_as_section_header5518 change the section_header to true5519 #set_section_duration5520 duration: nil, result: "00:00"5521 is expected to eq "00:00"5522 duration: "string", result: "00:00"5523 is expected to eq "00:00"5524 duration: 0 seconds, result: "00:00"5525 is expected to eq "00:00"5526 duration: 7 seconds, result: "00:07"5527 is expected to eq "00:07"5528 duration: 75, result: "01:15"5529 is expected to eq "01:15"5530 duration: 1 minute and 15 seconds, result: "01:15"5531 is expected to eq "01:15"5532 duration: 13 hours, 14 minutes, and 15 seconds, result: "13:14:15"5533 is expected to eq "13:14:15"5534 duration: 1 day, 13 hours, 14 minutes, and 15 seconds, result: "37:14:15"5535 is expected to eq "37:14:15"5536 #flush_current_segment!5537 when current segment is not empty5538 adds the segment to the list5539 updates the current segment pointer propagating the style5540 when current segment is empty5541 does not add any segments to the list5542 does not change the current segment5543 #to_h5544 when sections are present5545 when section header is set5546 serializes the attributes set5547 when section duration is set5548 serializes the attributes set5549 when there are no sections5550 serializes the attributes set5551Gitlab::Ci::Pipeline::Seed::Build::Cache5552 #attributes5553 with cache:key5554 is expected to include {:key => "a-key", :paths => ["vendor/ruby"]}5555 with cache:key as a symbol5556 is expected to include {:key => "a_key", :paths => ["vendor/ruby"]}5557 with cache:key:files5558 with existing files5559 behaves like version and gemfile files5560 builds a string key5561 with files starting with ./5562 behaves like version and gemfile files5563 builds a string key5564 with files ending with /5565 behaves like default key5566 uses default key5567 with new line in filenames5568 behaves like default key5569 uses default key5570 with missing files5571 behaves like default key5572 uses default key5573 with directories5574 with directory5575 behaves like foo/bar directory key5576 builds a string key5577 with directory ending in slash5578 behaves like foo/bar directory key5579 builds a string key5580 with directories ending in slash star5581 behaves like foo/bar directory key5582 builds a string key5583 with cache:key:prefix5584 without files5585 adds prefix to default key5586 with existing files5587 adds prefix key5588 with missing files5589 adds prefix to default key5590 with all cache option keys5591 is expected to include {:key => "a-key", :paths => ["vendor/ruby"], :untracked => true, :policy => "push", :when => "on_success"}5592 with unknown cache option keys5593 is expected to raise ArgumentError with message matching /unknown_key/5594ProjectDeployToken5595 is expected to belong to project required: false5596 is expected to belong to deploy_token required: false5597 is expected to validate that :deploy_token cannot be empty/falsy5598 is expected to validate that :project cannot be empty/falsy5599 is expected to validate that :deploy_token_id is case-sensitively unique within the scope of :project_id5600Gitlab::Ci::Status::Stage::Common5601 does not have action5602 links to the pipeline details page5603 when user has permission to read pipeline5604 has details5605 when user does not have permission to read pipeline5606 does not have details5607TwoFactor::DestroyService5608 disabling two-factor authentication5609 when the user does not have two-factor authentication enabled5610 returns error5611 behaves like does not send notification email5612 notification5613 does not send a notification5614 when the user has two-factor authentication enabled5615 when the executor is not authorized to disable two-factor authentication5616 disabling the two-factor authentication of another user5617 returns error5618 does not disable two-factor authentication5619 behaves like does not send notification email5620 notification5621 does not send a notification5622 when the executor is authorized to disable two-factor authentication5623 disabling their own two-factor authentication5624 behaves like disables two-factor authentication5625 returns success5626 disables the two-factor authentication of the user5627 notification5628 sends a notification5629 admin disables the two-factor authentication of another user5630 behaves like disables two-factor authentication5631 returns success5632 disables the two-factor authentication of the user5633 notification5634 sends a notification5635BackgroundMigration::CiDatabaseWorker5636 behaves like it runs background migration jobs5637 defining the job attributes5638 defines the data_consistency as always5639 defines the retry count in sidekiq_options5640 defines the feature_category as database5641 defines the urgency as throttled5642 defines the loggable_arguments5643 .tracking_database5644 does not raise an error5645 overrides the method to return the tracking database5646 .minimum_interval5647 returns 2 minutes5648 #perform5649 when execute_background_migrations feature flag is disabled5650 does not perform the job, reschedules it in the future, and logs a message5651 when execute_background_migrations feature flag is enabled5652 performs jobs using the coordinator for the worker5653 when lease can be obtained5654 sets up the shared connection before checking replication5655 performs a background migration5656 can run scheduled job and retried job concurrently5657 sets the class that will be executed as the caller_id5658 when lease_attempts is 15659 performs a background migration5660 when lease not obtained (migration of same class was performed recently)5661 reschedules the migration and decrements the lease_attempts5662 when lease_attempts is 15663 reschedules the migration and decrements the lease_attempts5664 when lease_attempts is 05665 gives up performing the migration5666 when database is not healthy5667 reschedules a migration if the database is not healthy5668 increments the unhealthy counter5669 when lease_attempts is 05670 gives up performing the migration5671RateLimitedService5672 RateLimitedError5673 #headers5674 returns a Hash of HTTP headers5675 #log_request5676 logs the request5677 RateLimiterScopedAndKeyed5678 #rate_limit!5679 when rate limiting is not in effect5680 does not raise an exception5681 when rate limiting is in effect5682 raises a RateLimitedError exception5683 #execute_without_rate_limiting5684 bypasses rate limiting5685 calls super5686 #execute5687 when rate_limit has not been called5688 raises an RateLimitedNotSetupError exception5689 when rate_limit has been called5690 and applies rate limiting5691 raises an RateLimitedService::RateLimitedError exception5692 but does not apply rate limiting5693 calls super5694Sidebars::Menu5695 #all_active_routes5696 gathers all active routes of items and the current menu5697 #render?5698 when the menus has no items5699 returns false5700 when menu has a partial5701 returns true5702 when the menu has items5703 returns true5704 when menu items are NilMenuItem5705 returns false5706 #has_items?5707 returns true when there are regular menu items5708 returns true when there are nil menu items5709 #has_renderable_items?5710 returns true when there are regular menu items5711 returns false when there are nil menu items5712 returns true when there are both regular and nil menu items5713 #renderable_items5714 returns only regular menu items5715 #insert_element_before5716 adds element before the specific element class5717 does not add nil elements5718 when reference element does not exist5719 adds the element to the top of the list5720 #insert_element_after5721 adds element after the specific element class5722 does not add nil elements5723 when reference element does not exist5724 adds the element to the end of the list5725 #remove_element5726 removes specific element5727 does not remove nil elements5728 #container_html_options5729 when menu can be rendered5730 when menu has renderable items5731 contains the special class5732 when menu already has other classes5733 appends special class5734 when menu does not have renderable items5735 does not contain the special class5736 when menu cannot be rendered5737 does not contain special class5738 #link5739 returns first visible menu item link5740 returns nil if there are no visible menu items5741Gitlab::Database::PostgresHll::BatchDistinctCounter5742 unit test for different counting parameters5743 #execute5744 builds hll buckets5745 defaults batch size to 100005746 when a transaction is open5747 raises an error5748 disallowed configurations5749 raises WRONG_CONFIGURATION_ERROR if start is bigger than finish5750 raises WRONG_CONFIGURATION_ERROR if data volume exceeds upper limit5751 raises WRONG_CONFIGURATION_ERROR if batch size is less than min required5752CustomEmoji5753 Associations5754 is expected to belong to namespace required: false inverse_of => custom_emoji5755 is expected to belong to creator required: false inverse_of => created_custom_emoji5756 is expected to have db column named file5757 is expected to validate that :creator cannot be empty/falsy5758 is expected to validate that the length of :name is at most 365759 is expected to validate that :name cannot be empty/falsy5760 is expected to have db column named external5761 exclusion of duplicated emoji5762 disallows emoji names of built-in emoji5763 disallows very long invalid emoji name without regular expression backtracking issues5764 disallows duplicate custom emoji names within namespace5765 disallows non http and https file value5766projects/jobs/show5767 when showing a CI build5768 shows job vue app5769 when job is running5770 does not show retry button5771 does not show New issue button5772 when showing a bridge job5773 shows bridge vue app5774BulkImports::Common::Pipelines::BadgesPipeline5775 #run5776 imports a group badge5777 when project entity5778 imports a project badge & skips group badge5779 #transform5780 return transformed badge hash5781 when data is blank5782 does nothing when the data is blank5783 when project entity & group badge5784 returns57855-Minute-Production-App.gitlab-ci.yml5786 the created pipeline5787 creates only build job5788 when AWS variables are set5789 creates all jobs5790 pipeline branch is protected5791 does not create a destroy job5792Packages::Maven::CreatePackageService5793 #execute5794 with version5795 creates a new package with metadatum5796 behaves like assigns the package creator5797 assigns the package creator5798 without version5799 creates a new package with metadatum5800 behaves like assigns the package creator5801 assigns the package creator5802 path is missing5803 raises an error5804API::Entities::ProjectImportStatus5805 #as_json5806 when no import state exists5807 includes basic fields and no failures5808 when import has not finished yet5809 includes basic fields and no failures5810 when import has finished with failed relations5811 includes basic fields with failed relations5812 when import has failed5813 includes basic fields with import error5814 when importing from github5815 exposes the import stats5816Gitlab::MarkerRange5817 is expected to eq 1..105818 behaves like a Range5819 #mode5820 is expected to be nil5821 when mode is provided5822 is expected to eq :deletion5823 #to_range5824 is expected to eq 1..105825 when mode is provided5826 is omitted during transformation5827 .from_range5828 converts Range to MarkerRange object5829 keeps correct range5830 when range excludes end5831 keeps correct range5832 when range is already a MarkerRange5833 is expected to equal 1, 2, 3, 4, 5, 6, 7, 8, 9, and 105834 #==5835 is expected to be truthy5836 when marker ranges have different modes5837 is expected to be falsey5838 when marker ranges have different ranges5839 is expected to be falsey5840 when marker ranges is a simple range5841 is expected to be falsey5842Gitlab::Usage::Metrics::NameSuggestion5843 #for5844 for count with nil column5845 behaves like name suggestion5846 return correct name5847 for count with column :id5848 behaves like name suggestion5849 return correct name5850 for count distinct with column defined metrics5851 behaves like name suggestion5852 return correct name5853 joined relations5854 counted attribute comes from source relation5855 behaves like name suggestion5856 return correct name5857 strips off time period constraint5858 behaves like name suggestion5859 return correct name5860 for sum metrics5861 behaves like name suggestion5862 return correct name5863 for average metrics5864 behaves like name suggestion5865 return correct name5866 for redis metrics5867 behaves like name suggestion5868 return correct name5869 for alt_usage_data metrics5870 behaves like name suggestion5871 return correct name5872Ci::CreatePipelineService5873 job:parallel5874 numeric5875 creates the pipeline5876 creates 3 jobs5877 matrix5878 creates the pipeline5879 creates 4 builds with the corresponding matrix variables5880 when a bridge is using parallel:matrix5881 creates the pipeline5882 creates 1 build and 4 bridges with the corresponding matrix variables5883Namespaces::StatisticsRefresherService#execute5884 without a root storage statistics relation5885 creates one5886 recalculate the namespace statistics5887 with a root storage statistics relation5888 does not create one5889 recalculate the namespace statistics5890 when something goes wrong5891 raises RefreshError5892Gitlab::JiraImport::BaseImporter5893 with any inheriting class5894 when project validation is ok5895 when Jira service exists5896 when Jira import data is not present5897 raises exception5898 when import data exists5899 when #imported_items_cache_key is not implemented5900 is expected to raise NotImplementedError5901 when #imported_items_cache_key is implemented5902 #imported_items_cache_key5903 is expected to eq "dumb-importer-key"5904 #mark_as_imported5905 stores id in redis cache5906 #already_imported?5907 returns false if value is not in cache5908 returns true if value already stored in cache5909RolloutStatusEntity5910 exposes status5911 exposes has_legacy_app_label5912 when kube deployment is valid5913 exposes deployment data5914 does not expose canary ingress if it does not exist5915 when canary ingress exists5916 expose canary ingress5917 when kube deployment is empty5918 exposes status5919 does not expose deployment data5920Mutations::IncidentManagement::TimelineEvent::Create5921 is expected to require graphql authorizations :admin_incident_management_timeline_event5922 #resolve5923 when a user has permissions to create a timeline event5924 behaves like creating an incident timeline event5925 creates a timeline event5926 responds with a timeline event5927 when TimelineEvents::CreateService responds with an error5928 behaves like responding with an incident timeline errors5929 returns errors5930 behaves like failing to create an incident timeline event5931 when a user has no permissions to create timeline event5932 raises an error5933BulkImports::ImportsFinder5934 #execute5935 returns a list of imports associated with user5936 when status is specified5937 returns a list of import entities filtered by status5938 when invalid status is specified5939 does not filter entities by status5940 when order is specifed5941 when order is specified as asc5942 returns entities sorted ascending5943 when order is specified as desc5944 returns entities sorted descending5945Gitlab::Config::Entry::Factory5946 #create!5947 when setting a concrete value5948 creates entry with valid value5949 when setting description5950 configures description5951 creates entry with description5952 when setting inherit5953 makes object inheritable5954 when setting key5955 creates entry with custom key5956 when setting a parent5957 creates entry with valid parent5958 when not setting a value5959 raises error5960 when creating entry with nil value5961 creates an unspecified entry5962 when passing metadata5963 passes metadata as a parameter5964 when setting deprecation information5965 passes deprecation as a parameter5966LabelSerializer5967 #represent5968 when a single object is being serialized5969 serializes the label object5970 when multiple objects are being serialized5971 serializes the array of labels5972 #represent_appearance5973 when represents only appearance5974 serializes only attributes used for appearance5975DesignManagement::MoveDesignsService5976 #execute5977 the user cannot move designs5978 raises cannot_move5979 the designs are not distinct5980 raises not_distinct5981 the designs are not on the same issue5982 raises not_same_issue5983 no focus is passed5984 raises no_focus5985 no neighbours are passed5986 raises no_neighbors5987 moving a design with neighbours5988 repositions existing designs and correctly places the given design5989ExpireBuildArtifactsWorker5990 #perform5991 executes a service5992GitlabUploader5993 #file_storage?5994 when file storage is used5995 is expected to be file storage5996 when is remote storage5997 is expected not to be file storage5998 #file_cache_storage?5999 when file storage is used6000 is expected to be file cache storage6001 when is remote storage6002 is expected not to be file cache storage6003 #move_to_cache6004 is true6005 #move_to_store6006 is true6007 #cache!6008 moves the file from the working directory to the cache directory6009 #replace_file_without_saving!6010 allows file to be replaced without triggering any callbacks6011 #open6012 when trace is stored in File storage6013 when file exists6014 returns io stream6015 when passing block it yields6016 when file does not exist6017 returns nil6018 when passing block it does not yield6019 when trace is stored in Object storage6020 when file exists6021 returns http io stream6022 when passing block it yields6023 when file does not exist6024 returns nil6025 when passing block it does not yield6026 #url_or_file_path6027 returns url when in remote storage6028 returns url when in remote storage6029 .version6030 is expected to raise RuntimeError with message matching /not supported/6031Integrations::ChatMessage::PushMessage6032 behaves like Integrations::ChatMessage6033 when input contains link markup6034 strips all link markup characters6035 push6036 without markdown6037 returns a message regarding pushes6038 with markdown6039 returns a message regarding pushes6040 tag push6041 without markdown6042 returns a message regarding pushes6043 with markdown6044 returns a message regarding pushes6045 removed tag6046 without markdown6047 returns a message regarding removal of tags6048 with markdown6049 returns a message regarding removal of tags6050 new branch6051 without markdown6052 returns a message regarding a new branch6053 with markdown6054 returns a message regarding a new branch6055 removed branch6056 without markdown6057 returns a message regarding a removed branch6058 with markdown6059 returns a message regarding a removed branch6060gitlab:gitaly namespace rake task6061 clone6062 no dir given6063 aborts and display a help message6064 no storage path given6065 aborts and display a help message6066 when an underlying Git command fail6067 aborts and display a help message6068 checkout or clone6069 calls checkout_or_clone_version with the right arguments6070 install6071 gmake/make6072 gmake is available6073 calls gmake in the gitaly directory6074 when gmake fails6075 aborts process6076 gmake is not available6077 calls make in the gitaly directory6078 when Rails.env is test6079 calls make in the gitaly directory with BUNDLE_DEPLOYMENT and GEM_HOME variables6080projects/issues/_issue.html.haml6081 timestamp6082 when issue is open6083 shows last updated date6084 when issue is closed6085 shows closed date6086 when issue is closed but closed_at is empty6087 shows last updated date6088Clusters::AgentTokenPolicy6089 rules6090 when reporter6091 is expected to be disallowed :admin_cluster6092 is expected to be disallowed :read_cluster6093 when developer6094 is expected to be disallowed :admin_cluster6095 is expected to be allowed :read_cluster6096 when maintainer6097 is expected to be allowed :admin_cluster6098 is expected to be allowed :read_cluster6099projects/settings/integrations/edit6100 is expected not to have text "Recent events"6101 integration using WebHooks6102 is expected to have text "Recent events"6103HashedStorage::RollbackerWorker6104 #perform6105 delegates to MigratorService6106 rollsback projects in the specified range6107Gitlab::HealthChecks::Probes::Collection6108 #execute6109 with all checks6110 responds with readiness checks data6111 when Redis fails6112 responds with failure6113 when check raises exception not handled inside the check6114 responds with failure including the exception info6115 when some checks are not available6116 asks for check availability6117 does not call `readiness` on checks that are not available6118 does not fail collection check6119 without checks6120 responds with success6121Gitlab::WebIde::Config6122 when config is valid6123 #to_hash6124 returns hash created from string6125 #valid?6126 is valid6127 has no errors6128 when config is invalid6129 when yml is incorrect6130 .new6131 raises error6132 when config logic is incorrect6133 #valid?6134 is not valid6135 has errors6136 #errors6137 returns an array of strings6138Gitlab::Ci::Trace::RemoteChecksum6139 #md5_checksum6140 when the file is stored locally6141 is expected to be nil6142 when object store is enabled6143 with local files6144 is expected to be nil6145 with remote files6146 with AWS as provider6147 is expected to eq "ebde71c229ce37275c8708b4e3ae5eec"6148 with Google as provider6149 when the response does not include :content_md56150 raises an exception6151 when the response include :content_md56152 is expected to eq "ebde71c229ce37275c8708b4e3ae5eec"6153 with unsupported providers6154 is expected to be nil6155gitlab:x509 namespace rake task6156 update_signatures6157 changes from unverified to verified if the certificate store contains the root certificate6158 returns if no signature is available6159Gitlab::Ci::Pipeline::Expression::Lexeme::Equals6160 .build6161 with non-evaluable operands6162 creates a new instance of the token6163 with evaluable operands6164 creates a new instance of the token6165 .type6166 is an operator6167 .precedence6168 has a precedence6169 #evaluate6170 when left and right are equal6171 left_value: "string", right_value: "string"6172 is expected to eq true6173 when left and right are not equal6174 left_value: "one string", right_value: "two string"6175 is expected to eq false6176 left_value: "two string", right_value: "one string"6177 is expected to eq false6178Packages::TerraformModule::CreatePackageService6179 #execute6180 valid package6181 behaves like creating a package6182 creates a package6183 package already exists elsewhere6184 is expected to eq 4036185 is expected to equal "Access Denied"6186 marked as pending_destruction6187 behaves like creating a package6188 creates a package6189 version already exists6190 is expected to eq 4036191 is expected to equal "Package version already exists."6192 marked as pending_destruction6193 behaves like creating a package6194 creates a package6195 with empty version6196 is expected to eq 4006197 is expected to eq "Version is empty."6198Gitlab::ContainerRepository::Tags::Cache6199 #populate6200 with tags6201 gets values from redis6202 with cached values6203 gets values from redis6204 with no tags6205 behaves like not interacting with redis6206 does not interact with redis6207 #insert6208 with tags6209 inserts values in redis6210 with some of them already cached6211 behaves like not interacting with redis6212 does not interact with redis6213 with no tags6214 behaves like not interacting with redis6215 does not interact with redis6216 with no expires_in6217 behaves like not interacting with redis6218 does not interact with redis6219PipelineNotificationWorker6220 #execute6221 calls NotificationService#pipeline_finished when the pipeline exists6222 does nothing when the pipeline does not exist6223 when the user is blocked6224 does nothing6225 behaves like worker with data consistency6226 .get_data_consistency_feature_flag_enabled?6227 returns true6228 .get_data_consistency6229 returns correct data consistency6230Gitlab::Allowable6231 #can?6232 when user is allowed to do something6233 reports correct ability to perform action6234 when user is not allowed to do something6235 reports correct ability to perform action6236Gitlab::Template::MetricsDashboardTemplate6237 .all6238 combines the globals and rest6239 #content6240 loads the full file6241 behaves like file template shared examples6242 .all6243 strips the .metrics-dashboard.yml suffix6244 ensures that the template name is used exactly once6245 .by_category6246 returns sorted results6247 .find6248 returns nil if the file does not exist6249 returns the corresponding object of a valid file6250 #<=>6251 sorts lexicographically6252Banzai::Filter::TableOfContentsTagFilter6253 table of contents6254 [[_TOC_]] as tag6255 behaves like table of contents tag6256 replaces toc tag with ToC result6257 handles an empty ToC result6258 [[_toc_]] as tag6259 behaves like table of contents tag6260 replaces toc tag with ToC result6261 handles an empty ToC result6262 [TOC] as tag6263 behaves like table of contents tag6264 replaces toc tag with ToC result6265 handles an empty ToC result6266 [toc] as tag6267 behaves like table of contents tag6268 replaces toc tag with ToC result6269 handles an empty ToC result6270Events::DestroyService6271 #execute6272 deletes the events6273 batch delete6274 splits delete queries into batches6275 when an error is raised while deleting the records6276 returns error6277 does not delete events6278Gitlab::Auth::Atlassian::IdentityLinker6279 linked identity exists6280 sets #changed? to false6281 does not mark as failed6282 identity already linked to different user6283 sets #changed? to false6284 exposes error message6285 identity needs to be created6286 sets #changed? to true6287 behaves like an atlassian identity6288 sets the proper values6289Gitlab::Ci::Status::Build::Canceled6290 #illustration6291 is expected to include :image, :size, and :title6292 .matches?6293 when build is canceled6294 is a correct match6295 when build is not canceled6296 does not match6297Gitlab::Kubernetes::ConfigMap6298 #generate6299 builds a Kubeclient Resource6300 #config_map_name6301 returns the config_map name6302tokens rake tasks6303 reset_all_email task6304 changes the incoming email token6305 reset_all_feed task6306 changes the feed token for the user6307Gitlab::ImportExport::AvatarRestorer6308/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil6309 does not break if there is just a directory6310 with avatar6311/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil6312 restores a project avatar6313/builds/gitlab-org/gitlab/vendor/ruby/2.7.0/gems/carrierwave-1.3.2/lib/carrierwave/mounter.rb:113: warning: deprecated Object#=~ is called on TrueClass; it always returns nil6314 saves the avatar into the project6315BuildSuccessWorker6316 #perform6317 when build exists6318 when the build will stop an environment6319 stops the environment6320 when the build fails6321 does not stop the environment6322 when build does not exist6323 does not raise exception6324Types::AlertManagement::StatusEnum6325 is expected to eq "AlertManagementStatus"6326 statuses6327 status_name: "TRIGGERED", status_value: :triggered6328 exposes a status with the correct value6329 status_name: "ACKNOWLEDGED", status_value: :acknowledged6330 exposes a status with the correct value6331 status_name: "RESOLVED", status_value: :resolved6332 exposes a status with the correct value6333 status_name: "IGNORED", status_value: :ignored6334 exposes a status with the correct value6335Gitlab::Ci::Config::Entry::Caches6336 #valid?6337 with an empty hash as cache6338 is valid6339 when configuration is valid with a single cache6340 is valid6341 when configuration is valid with multiple caches6342 is valid6343 when configuration is not a Hash or Array6344 is invalid6345 when entry values contain more than four caches6346 is invalid6347shared/projects/_project.html.haml6348 renders creator avatar if project has a creator6349 renders a generic avatar if project does not have a creator6350Gitlab::Kubernetes::Helm::V2::Certificate6351 .generate_root6352 generates a root CA that expires a long way in the future6353 #issue6354 generates a cert that expires soon6355 passing in INFINITE_EXPIRY6356 generates a cert that expires a long way in the future6357Gitlab::ColorSchemes6358 .body_classes6359 returns a space-separated list of class names6360 .by_id6361 returns a scheme by its ID6362 .default6363 returns the default scheme6364 .each6365 passes the block to the SCHEMES Array6366 .for_user6367 returns default when user is nil6368 returns user's preferred color scheme6369ForkNetworkMember6370 validations6371 is expected to validate that :project cannot be empty/falsy6372 is expected to validate that :fork_network cannot be empty/falsy6373 destroying a ForkNetworkMember6374 removes the fork network if it was the last member6375 does not destroy the fork network if there are members left6376Gitlab::FIPS6377 .enabled?6378 OpenSSL auto-detection6379 OpenSSL is in FIPS mode6380 is expected to be truthy6381 OpenSSL is not in FIPS mode6382 is expected to be falsey6383 manual configuration via env var6384 env var is not set6385 is expected to be falsey6386 env var is set to true6387 is expected to be truthy6388 env var is set to false6389 is expected to be falsey6390ResourceEvents::SyntheticStateNotesBuilderService6391 #execute6392 behaves like filters by paginated notes6393 only returns given notes6394 when paginated notes is empty6395 does not return any notes6396Lfs::PushService6397 does nothing if there are no LFS objects6398 #execute6399 uploads the object when upload is requested6400 does not upload the object when upload is not requested6401 verifies the upload if requested6402 skips verification if requested but upload fails6403 returns a failure when submitting a batch fails6404 returns a failure when submitting an upload fails6405 non-project-repository LFS objects6406 only tries to upload the project-repository LFS object6407Packages::CleanupPackageRegistryWorker6408 #perform6409 with package files pending destruction6410 queues the cleanup job6411 behaves like an idempotent worker6412 is labeled as idempotent6413 performs multiple times sequentially without raising an exception6414 with no package files pending destruction6415 does not queue the cleanup job6416 behaves like an idempotent worker6417 is labeled as idempotent6418 performs multiple times sequentially without raising an exception6419 counts logging6420 logs all the counts6421 with load balancing enabled6422 reads the count from the replica6423BranchFilterValidator6424 #validates_each6425 allows valid branch names6426 disallows bad branch names6427 allows wildcards6428 gets rid of whitespace6429 limits length to 4000 chars6430Gitlab::Database::PostgresPartition6431 associations6432 is expected to belong to postgres_partitioned_table required: false6433 behaves like a postgres model6434 .by_identifier6435 finds the Gitlab::Database::PostgresPartition6436 raises an error if not found6437 raises ArgumentError if given a non-fully qualified identifier6438 #to_s6439 returns the name6440 #schema6441 returns the schema6442 #name6443 returns the name6444 .for_parent_table6445 returns partitions for the parent table in the current schema6446 does not return partitions for tables not in the current schema6447 #parent_identifier6448 returns the parent table identifier6449 #condition6450 returns the condition for the partitioned values6451TimelogPolicy6452 #rules6453 when user is anonymus6454 prevents adimistration of timelog6455 when user is the author of the timelog6456 allows adimistration of timelog6457 when user is not the author of the timelog but maintainer of the project6458 allows adimistration of timelog6459 when user is not the timelog's author, not a maintainer but an administrator6460 allows adimistration of timelog6461 when user is not the author of the timelog nor a maintainer of the project nor an administrator6462 prevents adimistration of timelog6463Packages::CleanupArtifactWorker6464 #model6465 is expected to raise NotImplementedError6466 #log_metadata6467 is expected to raise NotImplementedError6468 #log_cleanup_item6469 is expected to raise NotImplementedError6470Users::DismissGroupCalloutService6471 #execute6472 sets the group_id6473 behaves like dismissing user callout6474 creates a new user callout6475 returns a user callout6476 sets the dismissed_at attribute to current time6477 updates an existing callout dismissed_at time6478 does not update an invalid record with dismissed_at time6479Resolvers::Metrics::Dashboards::AnnotationResolver6480 #resolve6481 user with developer access6482 with annotation records6483 loads annotations with usage of finder class6484 dashboard is missing6485 returns empty array6486 there are no annotations records6487 returns empty array6488admin/sessions/new.html.haml6489 internal admin user6490 shows enter password form6491 warns authentication not possible if password not set6492 omniauth authentication enabled6493 shows omniauth form6494 ldap authentication6495 is shown when enabled6496 is not shown when LDAP sign in is disabled6497Types::GroupInvitationType6498 is expected to expose permissions using Types::PermissionTypes::Group6499 is expected to eq "GroupInvitation"6500 is expected to require graphql authorizations :admin_group6501 has the expected fields6502Types::DiffRefsType6503 is expected to eq "DiffRefs"6504 is expected to have graphql fields :head_sha, :base_sha, and :start_sha6505 is expected to be non null6506 is expected not to be non null6507 is expected to be non null6508MergeRequests::Mergeability::CheckDiscussionsStatusService6509 #execute6510 when the merge request is in a mergable state6511 returns a check result with status success6512 when the merge request is not in a mergeable state6513 returns a check result with status failed6514 #skip?6515 when skip check is true6516 returns true6517 when skip check is false6518 returns false6519 #cacheable?6520 returns false6521Bitbucket::Representation::Comment6522 #author6523 is expected to eq "Ben"6524 is expected to be nil6525 #note6526 is expected to eq "Text"6527 is expected to be nil6528 #created_at6529 is expected to eq Mon, 04 Jul 20226530 #updated_at6531 is expected to eq Mon, 04 Jul 20226532 is expected to eq Mon, 04 Jul 20226533Gitlab::Metrics::Dashboard::Stages::UrlValidator6534 #transform!6535 when the links contain a blocked url6536 dashboard related links6537 replaces the blocked url with an empty string6538 chart links6539 replaces the blocked url with an empty string6540 when local requests are not allowed6541 replaces the blocked url with an empty string6542 when the links are an array of strings instead of hashes6543 prevents an invalid link definition from erroring out6544Gitlab::Routing6545 when module is included6546 makes it possible to access url helpers6547 when module is not included6548 exposes url helpers module through a method6549 Gitlab::Routing::LegacyRedirector6550 returns "-" scoped url6551 invalid uri characters6552 raises error6553ResourceEvents::MergeIntoNotesService6554 #execute6555 merges label events into notes in order of created_at6556 squashes events with same time and author into single note6557 fetches only notes created after last_fetched_at6558 preloads the note author's status6559BulkImports::Projects::Pipelines::ProjectAttributesPipeline6560 #run6561 imports project attributes6562 when project is archived6563 sets project as archived6564 #transform6565 removes prohibited attributes from hash6566 #load6567 assigns attributes, drops visibility and reconciles shared runner setting6568 #after_run6569 calls extractor#remove_tmpdir6570 .relation6571 is expected to eq "self"6572projects/generic_commit_statuses/_generic_commit_status.html.haml6573 won't include a column with a link to its pipeline by default6574 can include a column with a link to its pipeline6575admin/application_settings/repository.html.haml6576 default initial branch name6577 has the setting section6578 renders the correct setting section content6579projects/environments/terminal6580 when environment has external URL6581 shows external URL button6582 when environment does not have external URL6583 shows external URL button6584Gitlab::HookData::ProjectBuilder6585 #build6586 data6587 on create6588 is expected to eq "project_create"6589 behaves like includes the required attributes6590 includes the required attributes6591 behaves like does not include `old_path_with_namespace` attribute6592 does not include `old_path_with_namespace` attribute6593 on destroy6594 is expected to eq "project_destroy"6595 behaves like includes the required attributes6596 includes the required attributes6597 behaves like does not include `old_path_with_namespace` attribute6598 does not include `old_path_with_namespace` attribute6599 on rename6600 is expected to eq "project_rename"6601 behaves like includes the required attributes6602 includes the required attributes6603 behaves like includes `old_path_with_namespace` attribute6604 includes `old_path_with_namespace` attribute6605 on transfer6606 is expected to eq "project_transfer"6607 behaves like includes the required attributes6608 includes the required attributes6609 behaves like includes `old_path_with_namespace` attribute6610 includes `old_path_with_namespace` attribute6611PersonalAccessTokens::RevokeService6612 #execute6613 when current_user is an administrator6614 when admin mode is enabled6615 behaves like a successfully revoked token6616 is expected to equal true6617 is expected to equal true6618 logs the event6619 when admin mode is disabled6620 behaves like an unsuccessfully revoked token6621 is expected to equal false6622 is expected to equal false6623 when current_user is not an administrator6624 token belongs to a different user6625 behaves like an unsuccessfully revoked token6626 is expected to equal false6627 is expected to equal false6628 token belongs to current_user6629 behaves like a successfully revoked token6630 is expected to equal true6631 is expected to equal true6632 logs the event6633SidekiqHelper6634 parse_sidekiq_ps6635 parses line with time6636 parses line with date6637 parses line with two digit date6638 parses line with dot as float separator6639 parses OSX output6640 parses Ubuntu output6641 parses Debian output6642 parses OpenBSD output6643 does fail gracefully on line not matching the format6644Packages::Helm::PackagesFinder6645 #execute6646 with project6647 with channel6648 is expected to eq [#<Packages::Package id: 30, project_id: 880, created_at: "2022-07-04 08:56:01.087037915 +0000", upda...", name: "package-1", version: "v1.0.1", package_type: "helm", creator_id: 2237, status: "default">]6649 ignores duplicate package files6650 is expected to eq [#<Packages::Package id: 30, project_id: 880, created_at: "2022-07-04 08:56:01.087037915 +0000", upda...", name: "package-1", version: "v1.0.1", package_type: "helm", creator_id: 2237, status: "default">]6651 let clients use select id6652 is expected to eq [30]6653 with not existing channel6654 is expected to be empty6655 with no channel6656 is expected to be empty6657 with no helm packages6658 is expected to be empty6659 with no project6660 is expected to be empty6661 when the limit is hit6662 is expected to eq [#<Packages::Package id: 35, project_id: 880, created_at: "2022-07-04 08:56:01.441400789 +0000", upda...", name: "package-3", version: "v1.0.3", package_type: "helm", creator_id: 2237, status: "default">]6663Snippets::RepositoryValidationService6664 #execute6665 returns error when the repository has more than one branch6666 returns error when existing branch name is not the default one6667 returns error when the repository has tags6668 returns error when the repository has more file than the limit6669 returns error when the repository has no files6670 returns error when the repository size is over the limit6671 returns success when no validation errors are raised6672Gitlab::GithubImport::ImportPullRequestReviewWorker6673 is expected to includes the Gitlab::GithubImport::ObjectImporter module6674 #representation_class6675 is expected to eq Gitlab::GithubImport::Representation::PullRequestReview6676 #importer_class6677 is expected to eq Gitlab::GithubImport::Importer::PullRequestReviewImporter6678Approval6679 presence validation6680 is expected to validate that :merge_request_id cannot be empty/falsy6681 is expected to validate that :user_id cannot be empty/falsy6682 uniqueness validation6683 is expected to validate that :user_id is case-sensitively unique within the scope of :merge_request_id6684ProjectSerializer6685 when serializer option is :import6686 represents with ProjectImportEntity6687 when serializer option is omitted6688 represents with ProjectEntity6689Gitlab::Ci::Build::Releaser6690 #script6691 all nodes6692 generates the script6693 individual nodes6694 node_name: :name, node_value: "Release $CI_COMMIT_SHA", result: "release-cli create --name \"Release $CI_COMMIT_SHA\""6695 generates the script6696 node_name: :description, node_value: "Release-cli $EXTRA_DESCRIPTION", result: "release-cli create --description \"Release-cli $EXTRA_DESCRIPTION\""6697 generates the script6698 node_name: :tag_name, node_value: "release-$CI_COMMIT_SHA", result: "release-cli create --tag-name \"release-$CI_COMMIT_SHA\""6699 generates the script6700 node_name: :ref, node_value: "$CI_COMMIT_SHA", result: "release-cli create --ref \"$CI_COMMIT_SHA\""6701 generates the script6702 node_name: :milestones, node_value: ["m1", "m2", "m3"], result: "release-cli create --milestone \"m1\" --milestone \"m2\" --milestone \"m3\""6703 generates the script6704 node_name: :released_at, node_value: "2020-07-15T08:00:00Z", result: "release-cli create --released-at \"2020-07-15T08:00:00Z\""6705 generates the script6706 node_name: :assets, node_value: {:links=>[{:name=>"asset1", :url=>"https://example.com/assets/1", :link_type=>"other", :filepath=>"/pretty/asset/1"}]}, result: "release-cli create --assets-link \"{\\\"name\\\":\\\"asset1\\\",\\\"url\\\":\\\"https://example.com/assets/1\\\",\\\"link_type\\\":\\\"other\\\",\\\"filepath\\\":\\\"/pretty/asset/1\\\"}\""6707 generates the script6708Metrics::UsersStarredDashboards::DeleteService6709 #execute6710 without dashboard_path6711 does not scope user starred dashboards by dashboard path6712 with dashboard_path6713 does scope user starred dashboards by dashboard path6714Gitlab::BacktraceCleaner6715 .clean_backtrace6716 uses the Rails backtrace cleaner6717 removes lines from IGNORE_BACKTRACES6718IdentityProviderPolicy6719 #rules6720 is expected to be allowed :link6721 is expected to be allowed :unlink6722 when user is anonymous6723 is expected not to be allowed :link6724 is expected not to be allowed :unlink6725 when provider is saml6726 is expected to be allowed :link6727 is expected not to be allowed :unlink6728 when provider is cas36729 is expected to be allowed :link6730 is expected not to be allowed :unlink6731PropagateIntegrationGroupWorker6732 #perform6733 behaves like an idempotent worker6734 is labeled as idempotent6735 performs multiple times sequentially without raising an exception6736 calls to BulkCreateIntegrationService6737 with a group integration6738 calls to BulkCreateIntegrationService6739 with an invalid integration id6740 returns without failure6741Types::Packages::Composer::JsonType6742 is expected to eq "PackageComposerJsonType"6743 includes composer json files6744API::Entities::PlanLimit6745 exposes correct attributes6746 does not expose id and plan_id6747Types::DesignManagement::DesignAtVersionType6748 behaves like a GraphQL type with design fields6749 is expected to require graphql authorizations :read_design6750 exposes the expected design fields6751 #image6752 resolves to the design image URL6753 has better than O(N) peformance6754BulkImports::Projects::Graphql::GetProjectQuery6755 has a valid query6756 queries project based on source_full_path6757Analytics::UsageTrends::CounterJobWorker6758 is labeled as idempotent6759 performs multiple times sequentially without raising an exception6760 counts a scope and stores the result6761 does not raise error when inserting duplicated measurement6762 does not insert anything when BatchCount returns error6763 when no records are in the database6764 sets 0 as the count6765 when pipelines_succeeded identifier is passed6766 counts successful pipelines6767Gitlab::CodeNavigationPath6768 when there is an artifact with code navigation data6769 when a pipeline exist for a sha6770 returns path to a file in the artifact6771 when passed commit sha is nil6772 returns path to a file in the artifact6773 when a pipeline exist for the latest commits6774 returns path to a file in the artifact6775StatAnchorsHelper6776 #stat_anchor_attrs6777 when anchor is a link6778 returns the proper attributes6779 when anchor is not a link6780 when class_modifier is set6781 returns the proper attributes6782 when class_modifier is not set6783 returns the proper attributes6784 when itemprop is not set6785 returns the itemprop attributes6786 when itemprop is set set6787 returns the itemprop attributes6788 when data is not set6789 returns the data attributes6790 when itemprop is set6791 returns the data attributes6792Uploads routing6793 allows creating uploads for personal snippets6794 allows creating uploads for users6795 allows fetching alert metric metric images6796 does not allow creating uploads for other models6797 legacy paths6798 redirects project uploads to canonical path under project namespace6799Types::Ci::RunnerWebUrlEdge6800 is expected to eq "RunnerWebUrlEdge"6801 contains URL attributes6802Gitlab::ServiceDesk6803 enabled?6804 is expected to be truthy6805 when service desk is not supported6806 is expected to be falsy6807 when service desk is disabled for project6808 is expected to be falsy6809 supported?6810 is expected to be truthy6811 when incoming emails are disabled6812 is expected to be falsy6813 when email key is not supported6814 is expected to be falsy6815Peek::Views::Rugged6816 returns no results6817 returns aggregated results6818MergeRequestSidebarBasicEntity6819 #current_user6820 contains attributes related to the current user6821AutoMergeProcessWorker6822 #perform6823 when merge request is found6824 executes AutoMergeService6825 when merge request is not found6826 does not execute AutoMergeService6827Packages::Composer::Metadatum6828 relationships6829 is expected to belong to package required: false6830 validations6831 is expected to validate that :package cannot be empty/falsy6832 is expected to validate that :target_sha cannot be empty/falsy6833 is expected to validate that :composer_json cannot be empty/falsy6834 scopes6835 .for_package6836 is expected to eq [#<Packages::Composer::Metadatum package_id: 36, target_sha: "704979401d7fb1366d3433fe2fefdc38509596e3", composer_json: {"name"=>"sample-project"}, version_cache_sha: nil>]6837TrackingHelper6838 #tracking_attrs6839 returns no data if snowplow is disabled6840 returns data hash6841 can return data directly6842Gitlab::ImportExport::DesignRepoRestorer6843 bundle a design Git repo6844 restores the repo successfully6845Resolvers::CommitPipelinesResolver6846 resolves pipelines for commit and ref6847ChatTeam6848 is expected to belong to namespace required: false6849 is expected to validate that :namespace is case-sensitively unique6850 is expected to respond to #name6851 is expected to respond to #team_id6852Gitlab::Auth::Atlassian::AuthHash6853 #uid6854 returns the correct uid6855 #token6856 returns the correct token6857 #refresh_token6858 returns the correct refresh token6859 #token6860 returns the correct expires boolean6861 #token6862 returns the correct expiration6863RuboCop::Cop::UsageData::DistinctCountByLargeForeignKey6864 when counting by disallowed key6865 registers an offense6866 does not register an offense when batch is false6867 registers an offense when batch is true6868 when calling by allowed key6869 does not register an offense with symbol6870 does not register an offense with string6871Settings6872 #ldap6873 can be accessed with dot syntax all the way down6874 can be accessed in a very specific way that breaks without reassigning each element with Settingslogic6875 #host_without_www6876 URL with protocol6877 returns the host6878 URL without protocol6879 returns the host6880 URL with user/port6881 returns the host6882BulkImports::Configuration6883 associations6884 is expected to belong to bulk_import required: true6885 validations6886 is expected to validate that the length of :url is at most 2556887 is expected to validate that the length of :access_token is at most 2556888 is expected to validate that :url cannot be empty/falsy6889 is expected to validate that :access_token cannot be empty/falsy6890Banzai::Filter::KrokiFilter6891 replaces nomnoml pre tag with img tag if kroki is enabled6892 replaces nomnoml pre tag with img tag if both kroki and plantuml are enabled6893 does not replace nomnoml pre tag with img tag if kroki is disabled6894 does not replace plantuml pre tag with img tag if both kroki and plantuml are enabled6895 adds hidden attribute when content size is large6896Types::GrafanaIntegrationType6897 is expected to eq "GrafanaIntegration"6898 is expected to require graphql authorizations :admin_operations6899 is expected to have graphql fields :id, :grafana_url, :enabled, :created_at, and :updated_at6900GpgKeySubkey6901 associations6902 is expected to belong to gpg_key required: false6903 validations6904 is expected to validate that :gpg_key_id cannot be empty/falsy6905 is expected to validate that :fingerprint cannot be empty/falsy6906 is expected to validate that :keyid cannot be empty/falsy6907Types::IssueSortEnum6908 is expected to eq "IssueSort"6909 exposes all the existing issue sort values6910 behaves like common sort values6911 exposes all the existing common sort values6912Ci::VariableEntity6913 #as_json6914 contains required fields6915Gitlab::RepositoryArchiveRateLimiter6916 #check_archive_rate_limit!6917 when archive_rate_limit feature flag is disabled6918 does not check rate limit6919 when archive_rate_limit feature flag is enabled6920 when current user exists6921 checks for project_repositories_archive rate limiting with default threshold6922 when current user does not exist6923 checks for project_repositories_archive rate limiting with threshold 1006924Types::MergeRequestType6925 is expected to expose permissions using Types::PermissionTypes::MergeRequest6926Gitlab::Email::Message::InProductMarketing::Verify6927 public methods6928 with series 06929 returns value for series6930 with series 16931 returns value for series6932 with series 26933 returns value for series6934Namespace::AdminNote6935 associations6936 is expected to belong to namespace required: false6937 validations6938 is expected to validate that :namespace cannot be empty/falsy6939 is expected to validate that the length of :note is at most 10006940TokenAuthenticatableStrategies::Base6941 #token_fields6942 includes the token field6943 with expires_at option6944 includes the token_expires_at field6945 .fabricate6946 when digest stragegy is specified6947 fabricates digest strategy object6948 when encrypted strategy is specified6949 fabricates encrypted strategy object6950 when no strategy is specified6951 fabricates insecure strategy object6952 when incompatible options are provided6953 raises an error6954Sidebars::Groups::Menus::KubernetesMenu6955 #render?6956 when user can read clusters6957 returns true6958 when user cannot read clusters rules6959 returns false6960 :certificate_based_clusters feature flag is disabled6961 returns false6962RuboCop::Cop::Graphql::GraphqlNamePosition6963 adds an offense when graphql_name is not on the first line6964 does not add an offense for classes that have no call to graphql_name6965 does not add an offense for classes that only call graphql_name6966API::Entities::Branch6967 #as_json6968 includes basic fields6969Gitlab::ImportExport::VersionChecker6970 bundle a project Git repo6971 returns true if Import/Export have the same version6972 newer version6973 returns false if export version is newer6974 shows the correct error message6975 version file access check6976 does not read a symlink6977ProtectedTags::DestroyService6978 #execute6979 destroy a protected tag6980Types::AwardEmojis::AwardEmojiType6981 is expected to eq "AwardEmoji"6982 is expected to require graphql authorizations :read_emoji6983 is expected to have graphql fields :description, :unicode_version, :emoji, :name, :unicode, and :user6984Types::PermissionTypes::Snippet6985 returns the snippets permissions6986AnalyticsIssueSerializer6987 when there is a single object provided6988 contains important elements of the issue6989FeatureFlagsClientSerializer6990 #represent_token6991 includes feature flags client token6992time travel6993 :freeze_time6994 freezes time around a spec example6995 :time_travel_to6996 time-travels to the specified date6997 time-travels to the specified date & time6998Gitlab::Kroki6999 .formats7000 enabled_formats: "", expected_formats: ["bytefield", "c4plantuml", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "svgbob", "umlet", "vega", "vegalite", "wavedrom"]7001 returns the expected formats7002 enabled_formats: "blockdiag", expected_formats: ["bytefield", "c4plantuml", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "actdiag", "blockdiag", "nwdiag", "packetdiag", "rackdiag", "seqdiag"]7003 returns the expected formats7004 enabled_formats: "bpmn", expected_formats: ["bytefield", "c4plantuml", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "bpmn"]7005 returns the expected formats7006 enabled_formats: "excalidraw", expected_formats: ["bytefield", "c4plantuml", "ditaa", "erd", "graphviz", "nomnoml", "pikchr", "plantuml", "svgbob", "umlet", "vega", "vegalite", "wavedrom", "excalidraw"]7007 returns the expected formats7008Banzai::FilterArray7009 #insert_after7010 inserts an element after a provided element7011 inserts an element at the end when the provided element does not exist7012 #insert_before7013 inserts an element before a provided element7014 inserts an element at the beginning when the provided element does not exist7015Keys::DestroyService7016 destroys a key7017Import::BitbucketServerProviderRepoEntity7018 behaves like exposes required fields for import entity7019 exposes required fields7020 correctly exposes id7021 correctly exposes full name7022 correctly exposes sanitized name7023 correctly exposes provider link7024Gitlab::Lazy7025 when not calling any methods7026 does not call the supplied block7027 when calling a method on the object7028 lazy loads the value returned by the block7029 #respond_to?7030 returns true for a method defined on the wrapped object7031 returns false for a method not defined on the wrapped object7032DisallowTwoFactorForSubgroupsWorker7033 schedules updating subgroups7034Evidences::IssueEntity7035 exposes the expected fields7036Mattermost::Command7037 #create7038 for valid trigger word7039 returns a token7040 for error message7041 raises an error with message7042Types::Ci::RunnerPlatformType7043 is expected to eq "RunnerPlatform"7044 exposes the expected fields7045Types::CustomerRelations::OrganizationType7046 is expected to eq "CustomerRelationsOrganization"7047 is expected to have graphql fields :id, :name, :default_rate, :description, :active, :created_at, and :updated_at7048 is expected to require graphql authorizations :read_crm_organization7049Types::Snippets::BlobActionEnum7050 is expected to eq "SnippetBlobActionEnum"7051 exposes all file input action types7052Gitlab::WithRequestStore7053 #with_request_store7054 starts a request store and yields control7055 only starts a request store once when nested7056Types::Ci::JobArtifactFileTypeEnum7057 exposes all job artifact file types7058Users::ValidatePushOtpService7059 FortiAuthenticator7060 calls PushOtp strategy7061 unexpected error7062 returns error7063Types::Ci::TestReportSummaryType7064 is expected to eq "TestReportSummary"7065 contains attributes related to a pipeline test report summary7066Gitlab::Pagination::Keyset::InOperatorOptimization::Strategies::RecordLoaderStrategy7067 #initializer_columns7068 returns a NULL table row as the result column7069 #columns7070 uses the finder query to load the row in the result column7071Types::AlertManagement::SeverityEnum7072 is expected to eq "AlertManagementSeverity"7073 exposes all the severity values7074BulkImports::Groups::Transformers::SubgroupToEntityTransformer7075 #transform7076 transforms subgroups data in entity params7077TodosDestroyer::GroupPrivateWorker7078 calls the Todos::Destroy::GroupPrivateService with the params it was given7079Gitlab::GrapeLogging::Loggers::QueueDurationLogger7080 .parameters7081 when no proxy duration is available7082 returns an empty hash7083 when a proxy duration is available7084 adds the duration to log parameters7085RuboCop::Cop::SidekiqOptionsQueue7086 registers an offense when `sidekiq_options` is used with the `queue` option7087 does not register an offense when `sidekiq_options` is used with another option7088Gitlab::ErrorTracking::Processor::ContextPayloadProcessor7089 .call7090 merges the context payload into event payload7091Gitlab::Graphql::Tracers::LoggerTracer7092 logs every query7093 logs exceptions for breaking queries7094Gitlab::Auth::Otp::Strategies::Devise7095 calls Devise7096API::Entities::Projects::RepositoryStorageMove7097 #as_json7098 includes basic fields7099Types::WorkItems::Widgets::HierarchyType7100 exposes the expected fields7101ProjectMirrorSerializer7102 represents ProjectMirror entities7103AwarenessSession7104 when a user joins a session7105 changes number of session members7106 returns user as member of session with last_activity timestamp7107 reports user as present7108 reports user as away after a certain time on inactivity7109 reports user as present still when there was some activity7110 creates user and session awareness keys in store7111 sets a timeout for user and session key7112 when a user leaves a session7113 changes number of session members7114 destroys the session when it was the last user7115 when last user leaves a session7116 session and user keys are removed7117Knapsack report was generated. Preview:7118{7119 "spec/services/notification_service_spec.rb": 747.8297215860002,7120 "spec/models/commit_spec.rb": 31.063064018999285,7121 "spec/lib/banzai/filter/references/milestone_reference_filter_spec.rb": 17.054883515000256,7122 "spec/lib/gitlab/gfm/reference_rewriter_spec.rb": 30.01274703099989,7123 "spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb": 29.849624675000086,7124 "spec/finders/todos_finder_spec.rb": 26.827243894000276,7125 "spec/services/resource_access_tokens/create_service_spec.rb": 21.345545395000045,7126 "spec/lib/gitlab/bitbucket_server_import/importer_spec.rb": 30.919467081999755,7127 "spec/lib/service_ping/build_payload_spec.rb": 28.12627739099935,7128 "spec/lib/gitlab/url_builder_spec.rb": 7.190228207000473,7129 "spec/uploaders/avatar_uploader_spec.rb": 12.157860731000255,7130 "spec/services/projects/lfs_pointers/lfs_download_service_spec.rb": 10.834336449000148,7131 "spec/lib/gitlab/gitaly_client/repository_service_spec.rb": 15.742899840999598,7132 "spec/finders/user_recent_events_finder_spec.rb": 8.822509954999987,7133 "spec/models/projects/build_artifacts_size_refresh_spec.rb": 12.015802769999937,7134 "spec/services/post_receive_service_spec.rb": 7.373515305999717,7135 "spec/models/resource_label_event_spec.rb": 15.274425949000033,7136 "spec/lib/gitlab/git/tree_spec.rb": 4.853590689999692,7137 "spec/models/merge_request_diff_commit_spec.rb": 20.068498297000588,7138 "spec/graphql/resolvers/board_list_issues_resolver_spec.rb": 13.807492820999869,7139 "spec/services/lfs/file_transformer_spec.rb": 14.480614733000039,7140 "spec/serializers/issue_entity_spec.rb": 12.209055911999712,7141 "spec/lib/gitlab/ci/config/entry/reports_spec.rb": 3.390454903000318,7142 "spec/models/hooks/system_hook_spec.rb": 8.516891809000299,7143 "spec/lib/gitlab/version_info_spec.rb": 2.5411986660001276,7144 "spec/models/merge_request_diff_file_spec.rb": 19.017207865999808,7145 "spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb": 12.32392875700043,7146 "spec/workers/remove_expired_group_links_worker_spec.rb": 9.190396269000303,7147 "spec/graphql/mutations/releases/create_spec.rb": 7.471663706000072,7148 "spec/models/import_export_upload_spec.rb": 7.2344505569999455,7149 "spec/lib/gitlab/ci/config/entry/bridge_spec.rb": 2.1148951920004038,7150 "spec/services/merge_requests/post_merge_service_spec.rb": 7.916166037000039,7151 "spec/services/merge_requests/retarget_chain_service_spec.rb": 9.49347729999954,7152 "spec/models/user_preference_spec.rb": 2.3292197029995805,7153 "spec/lib/gitlab/git/diff_spec.rb": 2.9694872789996225,7154 "spec/models/ci/resource_spec.rb": 7.084369277000405,7155 "spec/lib/gitlab/redis/duplicate_jobs_spec.rb": 2.4033728430003976,7156 "spec/lib/api/helpers/caching_spec.rb": 5.183994547000111,7157 "spec/models/concerns/schedulable_spec.rb": 5.991233602000648,7158 "spec/helpers/packages_helper_spec.rb": 4.127304167000148,7159 "spec/models/plan_limits_spec.rb": 5.175830568000492,7160 "spec/services/ci/pipeline_artifacts/destroy_all_expired_service_spec.rb": 6.547261487000469,7161 "spec/services/clusters/applications/uninstall_service_spec.rb": 6.167848756999774,7162 "spec/models/concerns/redactable_spec.rb": 9.74799358600012,7163 "spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb": 11.138344902999961,7164 "spec/services/clusters/applications/install_service_spec.rb": 6.517766792000657,7165 "spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb": 5.728413255000305,7166 "spec/services/issues/resolve_discussions_spec.rb": 8.384236236000106,7167 "spec/lib/gitlab/ci/config/entry/release_spec.rb": 1.869857922999472,7168 "spec/services/metrics/dashboard/annotations/delete_service_spec.rb": 6.909306288999687,7169 "spec/lib/gitlab/ci/pipeline/chain/ensure_resource_groups_spec.rb": 4.691610932999538,7170 "spec/lib/gitlab/performance_bar_spec.rb": 5.148016880999421,7171 "spec/finders/packages/tags_finder_spec.rb": 5.558849317999375,7172 "spec/models/diff_viewer/base_spec.rb": 9.428521988000284,7173 "spec/uploaders/file_mover_spec.rb": 4.2415848219998225,7174 "spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb": 5.525747851999768,7175 "spec/services/clusters/applications/upgrade_service_spec.rb": 6.636930556000152,7176 "spec/workers/new_merge_request_worker_spec.rb": 7.538772826999775,7177 "spec/finders/design_management/versions_finder_spec.rb": 2.110065681999913,7178 "spec/lib/gitlab/repository_cache_spec.rb": 1.293639928999255,7179 "spec/lib/gitlab/ci/config/external/context_spec.rb": 1.205641421999644,7180 "spec/models/packages/maven/metadatum_spec.rb": 1.083118636999643,7181 "spec/services/users/create_service_spec.rb": 2.619789994999337,7182 "spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb": 1.412191743999756,7183 "spec/serializers/deployment_cluster_entity_spec.rb": 5.1512613909999345,7184 "spec/graphql/resolvers/board_resolver_spec.rb": 2.6469291620005606,7185 "spec/lib/gitlab/database/background_migration/prometheus_metrics_spec.rb": 4.444776293999894,7186 "spec/views/notify/pipeline_success_email.html.haml_spec.rb": 8.432617488999313,7187 "spec/workers/merge_requests/close_issue_worker_spec.rb": 4.034537329000159,7188 "spec/services/error_tracking/issue_details_service_spec.rb": 2.7303650200001357,7189 "spec/services/lfs/unlock_file_service_spec.rb": 3.6740209859999595,7190 "spec/lib/gitlab/robots_txt/parser_spec.rb": 1.353176452000298,7191 "spec/lib/gitlab/object_hierarchy_spec.rb": 1.9559119920004377,7192 "spec/graphql/resolvers/user_notes_count_resolver_spec.rb": 3.5935980269996435,7193 "spec/lib/gitlab/quick_actions/command_definition_spec.rb": 1.19931815200016,7194 "spec/lib/gitlab/database/query_analyzer_spec.rb": 0.8454003679999005,7195 "spec/services/merge_requests/add_context_service_spec.rb": 4.369769494000138,7196 "spec/lib/gitlab/database/gitlab_schema_spec.rb": 0.9665516629993363,7197 "spec/presenters/group_member_presenter_spec.rb": 2.4448518380004316,7198 "spec/graphql/resolvers/group_issues_resolver_spec.rb": 3.309204604000115,7199 "spec/lib/gitlab/diff/rendered/notebook/diff_file_helper_spec.rb": 0.9568145840003126,7200 "spec/lib/api/entities/ci/pipeline_spec.rb": 1.1538729379999495,7201 "spec/serializers/evidences/evidence_entity_spec.rb": 2.1337172390003616,7202 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_first_mentioned_in_commit_spec.rb": 1.5616784240000925,7203 "spec/workers/stage_update_worker_spec.rb": 2.675948027999766,7204 "spec/workers/merge_request_mergeability_check_worker_spec.rb": 4.260181768999246,7205 "spec/lib/gitlab/ci/ansi2json/line_spec.rb": 0.9937980289996631,7206 "spec/lib/gitlab/ci/pipeline/seed/build/cache_spec.rb": 1.5073775720002232,7207 "spec/models/project_deploy_token_spec.rb": 2.07707317600034,7208 "spec/lib/gitlab/ci/status/stage/common_spec.rb": 2.5213987679999263,7209 "spec/services/two_factor/destroy_service_spec.rb": 2.8628223629993954,7210 "spec/workers/background_migration/ci_database_worker_spec.rb": 0.8116515229994548,7211 "spec/services/concerns/rate_limited_service_spec.rb": 1.2447934359997817,7212 "spec/lib/sidebars/menu_spec.rb": 1.1408937599999263,7213 "spec/lib/gitlab/database/postgres_hll/batch_distinct_counter_spec.rb": 1.9248123059996942,7214 "spec/models/custom_emoji_spec.rb": 1.5293264989995805,7215 "spec/views/projects/jobs/show.html.haml_spec.rb": 3.8958578169995235,7216 "spec/lib/bulk_imports/common/pipelines/badges_pipeline_spec.rb": 1.8320348790002754,7217 "spec/lib/gitlab/ci/templates/5_minute_production_app_ci_yaml_spec.rb": 2.711642672999915,7218 "spec/services/packages/maven/create_package_service_spec.rb": 2.672679688000244,7219 "spec/lib/api/entities/project_import_status_spec.rb": 2.2914739179996104,7220 "spec/lib/gitlab/marker_range_spec.rb": 0.7339850139996997,7221 "spec/lib/gitlab/usage/metrics/name_suggestion_spec.rb": 0.660940553000728,7222 "spec/services/ci/create_pipeline_service/parallel_spec.rb": 3.1768172319998484,7223 "spec/services/namespaces/statistics_refresher_service_spec.rb": 1.1558465580001211,7224 "spec/lib/gitlab/jira_import/base_importer_spec.rb": 1.6034200489993964,7225 "spec/serializers/rollout_status_entity_spec.rb": 0.34583773400026985,7226 "spec/graphql/mutations/incident_management/timeline_event/create_spec.rb": 1.873376763000124,7227 "spec/finders/bulk_imports/imports_finder_spec.rb": 0.4826462069995614,7228 "spec/lib/gitlab/config/entry/factory_spec.rb": 0.33089606600060506,7229 "spec/serializers/label_serializer_spec.rb": 1.9839335590004339,7230 "spec/services/design_management/move_designs_service_spec.rb": 1.7168898540003283,7231 "spec/workers/expire_build_artifacts_worker_spec.rb": 1.9724188800000775,7232 "spec/uploaders/gitlab_uploader_spec.rb": 1.2016037809999034,7233 "spec/models/integrations/chat_message/push_message_spec.rb": 0.6658134229992356,7234 "spec/tasks/gitlab/gitaly_rake_spec.rb": 2.7137948720001077,7235 "spec/views/projects/issues/_issue.html.haml_spec.rb": 1.7666612069997427,7236 "spec/policies/clusters/agent_token_policy_spec.rb": 2.368190518999654,7237 "spec/views/projects/settings/integrations/edit.html.haml_spec.rb": 1.265880083000411,7238 "spec/workers/hashed_storage/rollbacker_worker_spec.rb": 1.3565208709997023,7239 "spec/lib/gitlab/health_checks/probes/collection_spec.rb": 0.24508564799998567,7240 "spec/lib/gitlab/web_ide/config_spec.rb": 0.29192611100006616,7241 "spec/lib/gitlab/ci/trace/remote_checksum_spec.rb": 0.8022994249995463,7242 "spec/tasks/gitlab/x509/update_rake_spec.rb": 3.136999276000097,7243 "spec/lib/gitlab/ci/pipeline/expression/lexeme/equals_spec.rb": 0.5192340019993935,7244 "spec/services/packages/terraform_module/create_package_service_spec.rb": 1.8473653359997115,7245 "spec/lib/gitlab/container_repository/tags/cache_spec.rb": 0.7039814970003135,7246 "spec/workers/pipeline_notification_worker_spec.rb": 0.6774919899999077,7247 "spec/lib/gitlab/allowable_spec.rb": 0.8559364270004153,7248 "spec/lib/gitlab/template/metrics_dashboard_template_spec.rb": 0.5499698679996072,7249 "spec/lib/banzai/filter/table_of_contents_tag_filter_spec.rb": 0.40444155700060946,7250 "spec/services/events/destroy_service_spec.rb": 1.541297726999801,7251 "spec/lib/gitlab/auth/atlassian/identity_linker_spec.rb": 1.0060270769999988,7252 "spec/lib/gitlab/ci/status/build/canceled_spec.rb": 1.0273920640001961,7253 "spec/lib/gitlab/kubernetes/config_map_spec.rb": 2.656803440000658,7254 "spec/tasks/tokens_spec.rb": 2.5745391509999536,7255 "spec/lib/gitlab/import_export/avatar_restorer_spec.rb": 1.4157654240007105,7256 "spec/workers/build_success_worker_spec.rb": 2.578757059999589,7257 "spec/graphql/types/alert_management/status_enum_spec.rb": 0.16434831800052052,7258 "spec/lib/gitlab/ci/config/entry/caches_spec.rb": 0.35946020299979864,7259 "spec/views/shared/projects/_project.html.haml_spec.rb": 0.6646357519994126,7260 "spec/lib/gitlab/kubernetes/helm/v2/certificate_spec.rb": 2.925429195000106,7261 "spec/lib/gitlab/color_schemes_spec.rb": 0.3520479040007558,7262 "spec/models/fork_network_member_spec.rb": 1.8633548349998819,7263 "spec/lib/gitlab/fips_spec.rb": 0.7228152550005689,7264 "spec/services/resource_events/synthetic_state_notes_builder_service_spec.rb": 1.1359580799999094,7265 "spec/services/lfs/push_service_spec.rb": 1.0417170130003797,7266 "spec/workers/packages/cleanup_package_registry_worker_spec.rb": 1.7986358830003155,7267 "spec/validators/branch_filter_validator_spec.rb": 0.5686628850007764,7268 "spec/lib/gitlab/database/postgres_partition_spec.rb": 0.5094026130000202,7269 "spec/policies/timelog_policy_spec.rb": 1.0772319280004012,7270 "spec/workers/concerns/packages/cleanup_artifact_worker_spec.rb": 0.34976439399997616,7271 "spec/services/users/dismiss_group_callout_service_spec.rb": 0.47252542799924413,7272 "spec/graphql/resolvers/metrics/dashboards/annotation_resolver_spec.rb": 1.1921022830001675,7273 "spec/views/admin/sessions/new.html.haml_spec.rb": 1.3099106869995012,7274 "spec/graphql/types/group_invitation_type_spec.rb": 0.5808384339998156,7275 "spec/graphql/types/diff_refs_type_spec.rb": 0.3027220700005273,7276 "spec/services/merge_requests/mergeability/check_discussions_status_service_spec.rb": 0.4322444330000508,7277 "spec/lib/bitbucket/representation/comment_spec.rb": 0.43296155300049577,7278 "spec/lib/gitlab/metrics/dashboard/stages/url_validator_spec.rb": 1.2655349229999047,7279 "spec/lib/gitlab/routing_spec.rb": 0.25382633699973667,7280 "spec/services/resource_events/merge_into_notes_service_spec.rb": 1.6283826260005299,7281 "spec/lib/bulk_imports/projects/pipelines/project_attributes_pipeline_spec.rb": 1.1161891929996273,7282 "spec/views/projects/jobs/_generic_commit_status.html.haml_spec.rb": 2.259212701999786,7283 "spec/views/admin/application_settings/repository.html.haml_spec.rb": 0.835820760000388,7284 "spec/views/projects/environments/terminal.html.haml_spec.rb": 2.3433394319999934,7285 "spec/lib/gitlab/hook_data/project_builder_spec.rb": 0.6775496800000838,7286 "spec/services/personal_access_tokens/revoke_service_spec.rb": 0.9673325730000215,7287 "spec/helpers/sidekiq_helper_spec.rb": 0.33799161499973707,7288 "spec/finders/packages/helm/packages_finder_spec.rb": 0.9994959080004264,7289 "spec/services/snippets/repository_validation_service_spec.rb": 0.6120689990002575,7290 "spec/workers/gitlab/github_import/import_pull_request_review_worker_spec.rb": 0.2820021530005761,7291 "spec/models/approval_spec.rb": 1.4005989659999614,7292 "spec/serializers/project_serializer_spec.rb": 0.412815015999513,7293 "spec/lib/gitlab/ci/build/releaser_spec.rb": 0.485538416000054,7294 "spec/services/metrics/users_starred_dashboards/delete_service_spec.rb": 0.7876461759997255,7295 "spec/lib/gitlab/backtrace_cleaner_spec.rb": 0.23752896899986808,7296 "spec/policies/identity_provider_policy_spec.rb": 0.725354234000406,7297 "spec/workers/propagate_integration_group_worker_spec.rb": 0.7744463079998241,7298 "spec/graphql/types/packages/composer/json_type_spec.rb": 0.17782466700009536,7299 "spec/lib/api/entities/plan_limit_spec.rb": 0.2811174239996035,7300 "spec/graphql/types/design_management/design_at_version_type_spec.rb": 1.0920621260002008,7301 "spec/lib/bulk_imports/projects/graphql/get_project_query_spec.rb": 0.5301697099994271,7302 "spec/workers/analytics/usage_trends/counter_job_worker_spec.rb": 1.032982833999995,7303 "spec/lib/gitlab/code_navigation_path_spec.rb": 1.1515993180000805,7304 "spec/helpers/stat_anchors_helper_spec.rb": 0.21071155199933855,7305 "spec/routing/uploads_routing_spec.rb": 0.8389370209997651,7306 "spec/graphql/types/ci/runner_web_url_edge_spec.rb": 0.1742012579998118,7307 "spec/lib/gitlab/service_desk_spec.rb": 0.5470530510001481,7308 "spec/lib/peek/views/rugged_spec.rb": 0.7902281790002235,7309 "spec/serializers/merge_request_sidebar_basic_entity_spec.rb": 1.1596382120005728,7310 "spec/workers/auto_merge_process_worker_spec.rb": 1.1486474929997712,7311 "spec/models/packages/composer/metadatum_spec.rb": 0.8984698260001096,7312 "spec/helpers/tracking_helper_spec.rb": 0.244908439000028,7313 "spec/lib/gitlab/import_export/design_repo_restorer_spec.rb": 0.9647169470008521,7314 "spec/graphql/resolvers/commit_pipelines_resolver_spec.rb": 0.5830838159999985,7315 "spec/models/chat_team_spec.rb": 0.6104709119999825,7316 "spec/lib/gitlab/auth/atlassian/auth_hash_spec.rb": 0.22011905199997273,7317 "spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb": 0.36948528199991415,7318 "spec/initializers/settings_spec.rb": 0.2919917629997144,7319 "spec/models/bulk_imports/configuration_spec.rb": 0.359879443999489,7320 "spec/lib/banzai/filter/kroki_filter_spec.rb": 0.31166668999958347,7321 "spec/graphql/types/grafana_integration_type_spec.rb": 0.4573486919998686,7322 "spec/models/gpg_key_subkey_spec.rb": 0.410357787999601,7323 "spec/graphql/types/issue_sort_enum_spec.rb": 0.2671377950000533,7324 "spec/serializers/ci/variable_entity_spec.rb": 0.8181404160004604,7325 "spec/lib/gitlab/repository_archive_rate_limiter_spec.rb": 0.37269326299974637,7326 "spec/graphql/types/permission_types/merge_request_type_spec.rb": 0.1358176519997869,7327 "spec/lib/gitlab/email/message/in_product_marketing/verify_spec.rb": 0.6101839520006251,7328 "spec/models/namespace/admin_note_spec.rb": 0.6737582539999494,7329 "spec/models/concerns/token_authenticatable_strategies/base_spec.rb": 0.5030139259997668,7330 "spec/lib/sidebars/groups/menus/kubernetes_menu_spec.rb": 0.6782339330002287,7331 "spec/rubocop/cop/graphql/graphql_name_position_spec.rb": 0.3254899490002572,7332 "spec/lib/api/entities/branch_spec.rb": 1.12066153700016,7333 "spec/lib/gitlab/import_export/version_checker_spec.rb": 0.38650999999936175,7334 "spec/services/protected_tags/destroy_service_spec.rb": 0.5673989280003298,7335 "spec/graphql/types/award_emojis/award_emoji_type_spec.rb": 0.16384887899948808,7336 "spec/graphql/types/permission_types/snippet_spec.rb": 0.13160272299955977,7337 "spec/serializers/analytics_issue_serializer_spec.rb": 0.8857850869999311,7338 "spec/serializers/feature_flags_client_serializer_spec.rb": 0.6716598749999321,7339 "spec/support_specs/time_travel_spec.rb": 0.4591784510002981,7340 "spec/lib/gitlab/kroki_spec.rb": 0.6284833899999285,7341 "spec/lib/banzai/filter_array_spec.rb": 0.2794717839997247,7342 "spec/services/keys/destroy_service_spec.rb": 0.36103234399979556,7343 "spec/serializers/import/bitbucket_server_provider_repo_entity_spec.rb": 0.49388175700005377,7344 "spec/lib/gitlab/lazy_spec.rb": 0.3226689789999,7345 "spec/workers/disallow_two_factor_for_subgroups_worker_spec.rb": 0.5749914060006631,7346 "spec/serializers/evidences/issue_entity_spec.rb": 0.19589085499956127,7347 "spec/lib/mattermost/command_spec.rb": 0.25723250700048084,7348 "spec/graphql/types/ci/runner_platform_type_spec.rb": 0.31494091999957163,7349 "spec/graphql/types/customer_relations/organization_type_spec.rb": 0.34848162599973875,7350 "spec/graphql/types/snippets/blob_action_enum_spec.rb": 0.20957440300026065,7351 "spec/lib/gitlab/with_request_store_spec.rb": 0.21482760300023074,7352 "spec/graphql/types/ci/job_artifact_file_type_enum_spec.rb": 0.26875312500033033,7353 "spec/services/users/validate_push_otp_service_spec.rb": 0.2346988600002078,7354 "spec/graphql/types/ci/test_report_summary_type_spec.rb": 0.31306608999966556,7355 "spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy_spec.rb": 0.12217393500031903,7356 "spec/graphql/types/alert_management/severity_enum_spec.rb": 0.19138666499929968,7357 "spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb": 0.3463964759994269,7358 "spec/workers/todos_destroyer/group_private_worker_spec.rb": 0.10286455700043007,7359 "spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb": 0.1535930100008045,7360 "spec/rubocop/cop/sidekiq_options_queue_spec.rb": 0.22974702099963906,7361 "spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb": 0.20209020400034206,7362 "spec/lib/gitlab/graphql/tracers/logger_tracer_spec.rb": 0.32410534900009225,7363 "spec/lib/gitlab/auth/otp/strategies/devise_spec.rb": 0.28008679400045366,7364 "spec/lib/api/entities/projects/repository_storage_move_spec.rb": 0.1955032249998112,7365 "spec/graphql/types/work_items/widgets/hierarchy_type_spec.rb": 0.3706056830005764,7366 "spec/serializers/project_mirror_serializer_spec.rb": 0.09660626699951536,7367 "spec/models/awareness_session_spec.rb": 1.77045039400036337368}7369Knapsack global time execution for tests: 26m 17s7370Pending: (Failures listed here are expected and do not affect your suite's status)7371 1) AvatarUploader behaves like builds correct paths #cache_dir behaves like matches the method pattern 7372 # No pattern provided, skipping.7373 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:87374 2) AvatarUploader behaves like builds correct paths #work_dir behaves like matches the method pattern 7375 # No pattern provided, skipping.7376 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:87377 3) AvatarUploader behaves like builds correct paths #relative_path is relative7378 # Path not set, skipping.7379 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:407380 4) AvatarUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 7381 # No pattern provided, skipping.7382 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:87383 5) AvatarUploader object_store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 7384 # No pattern provided, skipping.7385 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:87386 6) AvatarUploader object_store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 7387 # No pattern provided, skipping.7388 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:87389 7) AvatarUploader object_store is REMOTE behaves like builds correct paths #relative_path is relative7390 # Path not set, skipping.7391 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:407392 8) AvatarUploader object_store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 7393 # No pattern provided, skipping.7394 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:87395 9) AvatarUploader object_store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 7396 # No pattern provided, skipping.7397 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:87398Finished in 26 minutes 21 seconds (files took 54.92 seconds to load)73993309 examples, 0 failures, 9 pending7400RSpec exited with 0.7401No examples to retry, congrats!7403Not uploading cache ruby-gems-debian-bullseye-ruby-2.7-10 due to policy7404Not uploading cache gitaly-ruby-gems-debian-bullseye-ruby-2.7-10 due to policy7406Uploading artifacts...7407coverage/: found 5 matching files and directories 7408crystalball/: found 2 matching files and directories 7409WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory 7410knapsack/: found 3 matching files and directories 7411rspec/: found 8 matching files and directories 7412WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory 7413log/*.log: found 20 matching files and directories 7414WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2673682841/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com7415WARNING: Retrying... context=artifacts-uploader error=request redirected7416Uploading artifacts as "archive" to coordinator... 201 Created id=2673682841 responseStatus=201 Created token=BMjPw6dA7417Uploading artifacts...7418rspec/junit_rspec.xml: found 1 matching files and directories 7419WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/2673682841/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com7420WARNING: Retrying... context=artifacts-uploader error=request redirected7421Uploading artifacts as "junit" to coordinator... 201 Created id=2673682841 responseStatus=201 Created token=BMjPw6dA7423Job succeeded