rspec unit pg11 13/20
Passed Started
by
@gitlab-bot

🤖 GitLab Bot 🤖
1Running with gitlab-runner 13.3.1 (738bbe5a)2 on docker-auto-scale-com d5ae8d254Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.28-lfs-2.9-chrome-84-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34 ...5Starting service postgres:11.6 ...6Pulling docker image postgres:11.6 ...7Using docker image sha256:2c963c0eb8c6efa49bb8352ea446f248d208d674cfc34fc9ea275b5f99f8dedd for postgres:11.6 ...8Starting service redis:4.0-alpine ...9Pulling docker image redis:4.0-alpine ...10Using docker image sha256:e3dd0e49bca555d559ca2e97f06a1efa108ebd230fddcb17606723994f18ae3b for redis:4.0-alpine ...11Waiting for services to be up and running...12Authenticating with credentials from job payload (GitLab Registry)13Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.28-lfs-2.9-chrome-84-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34 ...14Using docker image sha256:cd688957c9207f55272d81be6d4908692d78233833e3f09a9c0899b2f24eb3ff for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.28-lfs-2.9-chrome-84-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34 ...16Running on runner-d5ae8d25-project-278964-concurrent-0 via runner-d5ae8d25-gsrm-1598712432-4c3edd59...18$ eval "$CI_PRE_CLONE_SCRIPT"19Downloading archived master...20Connecting to storage.googleapis.com (172.217.204.128:443)21saving to '/tmp/gitlab.tar.gz'22gitlab.tar.gz 2% | | 22.3M 0:00:44 ETA23gitlab.tar.gz 41% |************* | 417M 0:00:02 ETA24gitlab.tar.gz 80% |************************* | 806M 0:00:00 ETA25gitlab.tar.gz 100% |********************************| 1007M 0:00:00 ETA26'/tmp/gitlab.tar.gz' saved27Extracting tarball into /builds/gitlab-org/gitlab...28Fetching changes with git depth set to 20...29Reinitialized existing Git repository in /builds/gitlab-org/gitlab/.git/30Created fresh repository.31Checking out 4e12f87c as master...32Skipping Git submodules setup34Checking cache for rails-v2-3...35cache.zip is up to date 36Successfully extracted cache38Downloading artifacts for compile-test-assets (710020301)...39Downloading artifacts from coordinator... ok id=710020301 responseStatus=200 OK token=dz2RyhAg40Downloading artifacts for retrieve-tests-metadata (710020310)...41Downloading artifacts from coordinator... ok id=710020310 responseStatus=200 OK token=LNgn8mU-42Downloading artifacts for setup-test-env (710020306)...43Downloading artifacts from coordinator... ok id=710020306 responseStatus=200 OK token=wSxhzuKE44WARNING: tmp/tests/gitlab-shell/.gitlab_shell_secret: chmod tmp/tests/gitlab-shell/.gitlab_shell_secret: no such file or directory (suppressing repeats) 46$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb47$ export GOPATH=$CI_PROJECT_DIR/.go48$ mkdir -p $GOPATH49$ source scripts/utils.sh50$ source scripts/prepare_build.sh51Bundler version 1.17.252$ bundle install --clean --without=production --without=development --jobs=2 --path=vendor --retry=3 --quiet53==> 'bundle install --clean --without=production --without=development --jobs=2 --path=vendor --retry=3 --quiet' succeeded in 1 seconds.54$ bundle check55Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.56The Gemfile's dependencies are satisfied57==> 'bundle check' succeeded in 1 seconds.58$ bundle pristine pg59Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.60Installing pg 1.2.2 with native extensions61==> 'bundle pristine pg' succeeded in 9 seconds.62$ gem install knapsack --no-document63Successfully installed knapsack-1.18.0641 gem installed65==> 'gem install knapsack --no-document' succeeded in 0 seconds.66$ setup_db_user_only67CREATE ROLE68GRANT69==> 'setup_db_user_only' succeeded in 1 seconds.70$ bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee71Dropped database 'gitlabhq_test'72Created database 'gitlabhq_test'73Dropped database 'gitlabhq_geo_test'74Created database 'gitlabhq_geo_test'75$ run_timed_command "scripts/gitaly-test-build"76==> 'bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee' succeeded in 24 seconds.77$ scripts/gitaly-test-build78Settings are listed in order of priority. The top value will be used.79retry80Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config/config): 381path82Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config/config): "/builds/gitlab-org/gitlab/vendor/gitaly-ruby"83jobs84Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config/config): 485app_config86Set via BUNDLE_APP_CONFIG: "/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config"87gemfile88Set via BUNDLE_GEMFILE: "/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/Gemfile"89flags90Set via BUNDLE_FLAGS: "--jobs=4 --retry=3 --quiet --path=/builds/gitlab-org/gitlab/vendor/gitaly-ruby"91silence_root_warning92Set via BUNDLE_SILENCE_ROOT_WARNING: true93go install -ldflags '-X gitlab.com/gitlab-org/gitaly/internal/version.version=13.3.0-rc5 -X gitlab.com/gitlab-org/gitaly/internal/version.buildtime=20200829.163007' -tags "tracer_static,tracer_static_jaeger,continuous_profiler_stackdriver" gitlab.com/gitlab-org/gitaly/cmd/praefect gitlab.com/gitlab-org/gitaly/cmd/gitaly-hooks gitlab.com/gitlab-org/gitaly/cmd/gitaly-blackbox gitlab.com/gitlab-org/gitaly/cmd/gitaly gitlab.com/gitlab-org/gitaly/cmd/gitaly-debug gitlab.com/gitlab-org/gitaly/cmd/gitaly-ssh gitlab.com/gitlab-org/gitaly/cmd/gitaly-wrapper94install /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/praefect /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-hooks /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-blackbox /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-debug /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-ssh /builds/gitlab-org/gitlab/tmp/tests/gitaly/_build/bin/gitaly-wrapper /builds/gitlab-org/gitlab/tmp/tests/gitaly95Checking gitaly-ruby Gemfile...96Checking gitaly-ruby bundle...97Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.98The Gemfile's dependencies are satisfied99Trying to connect to gitaly: ....... OK100Trying to connect to praefect: ...... OK101==> 'scripts/gitaly-test-build' succeeded in 35 seconds.102$ run_timed_command "scripts/gitaly-test-spawn"103$ scripts/gitaly-test-spawn104Checking gitaly-ruby Gemfile...105Checking gitaly-ruby bundle...106Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.107The Gemfile's dependencies are satisfied108Trying to connect to gitaly: ...... OK109Trying to connect to praefect: ...... OK110==> 'scripts/gitaly-test-spawn' succeeded in 2 seconds.111$ source scripts/rspec_helpers.sh112$ rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"113KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,db,dependencies,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,models,policies,presenters,rack_servers,replicators,routing,rubocop,serializers,services,sidekiq,support_specs,tasks,uploaders,validators,views,workers,elastic_integration,tooling}{,/**/}*_spec.rb114Report specs:115spec/models/repository_spec.rb116spec/lib/gitlab/background_migration/legacy_upload_mover_spec.rb117spec/lib/banzai/filter/milestone_reference_filter_spec.rb118spec/services/merge_requests/build_service_spec.rb119spec/models/project_services/slack_service_spec.rb120spec/lib/gitlab/bare_repository_import/importer_spec.rb121spec/models/member_spec.rb122spec/serializers/job_entity_spec.rb123spec/lib/banzai/filter/merge_request_reference_filter_spec.rb124spec/services/projects/lfs_pointers/lfs_download_service_spec.rb125spec/uploaders/job_artifact_uploader_spec.rb126spec/policies/wiki_page_policy_spec.rb127spec/services/merge_requests/reopen_service_spec.rb128spec/serializers/stage_entity_spec.rb129spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb130spec/services/boards/lists/update_service_spec.rb131spec/lib/gitlab/ci/status/external/factory_spec.rb132spec/finders/projects/serverless/functions_finder_spec.rb133spec/lib/banzai/filter/project_reference_filter_spec.rb134spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb135spec/services/event_create_service_spec.rb136spec/lib/banzai/reference_parser/issue_parser_spec.rb137spec/lib/gitlab/ci/status/build/play_spec.rb138spec/services/snippets/bulk_destroy_service_spec.rb139spec/models/packages/package_file_spec.rb140spec/lib/gitlab/search/found_blob_spec.rb141spec/lib/gitlab/ci/yaml_processor_spec.rb142spec/models/design_management/design_spec.rb143spec/services/clusters/kubernetes/configure_istio_ingress_service_spec.rb144spec/views/projects/merge_requests/creations/_new_submit.html.haml_spec.rb145spec/graphql/mutations/merge_requests/set_labels_spec.rb146spec/services/projects/update_remote_mirror_service_spec.rb147spec/services/packages/npm/create_package_service_spec.rb148spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb149spec/services/ci/external_pull_requests/create_pipeline_service_spec.rb150spec/models/user_interacted_project_spec.rb151spec/services/issuable/common_system_notes_service_spec.rb152spec/workers/ci/pipeline_success_unlock_artifacts_worker_spec.rb153spec/lib/container_registry/path_spec.rb154spec/finders/contributed_projects_finder_spec.rb155spec/services/projects/hashed_storage/rollback_repository_service_spec.rb156spec/models/concerns/project_features_compatibility_spec.rb157spec/lib/banzai/reference_redactor_spec.rb158spec/services/boards/list_service_spec.rb159spec/services/packages/npm/create_tag_service_spec.rb160spec/services/releases/update_service_spec.rb161spec/lib/gitlab/ci/status/stage/play_manual_spec.rb162spec/models/project_services/bamboo_service_spec.rb163spec/models/cycle_analytics/project_level_spec.rb164spec/services/projects/auto_devops/disable_service_spec.rb165spec/lib/gitlab/github_import/importer/pull_requests_importer_spec.rb166spec/lib/gitlab/sanitizers/exif_spec.rb167spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb168spec/services/metrics/dashboard/update_dashboard_service_spec.rb169spec/uploaders/import_export_uploader_spec.rb170spec/lib/gitlab/chat/output_spec.rb171spec/services/lfs/unlock_file_service_spec.rb172spec/services/milestones/closed_issues_count_service_spec.rb173spec/workers/new_merge_request_worker_spec.rb174spec/services/milestones/close_service_spec.rb175spec/finders/packages/maven/package_finder_spec.rb176spec/graphql/types/issue_type_spec.rb177spec/lib/gitlab/ci/cron_parser_spec.rb178spec/services/clusters/applications/uninstall_service_spec.rb179spec/services/metrics/dashboard/custom_metric_embed_service_spec.rb180spec/lib/gitlab/ci/pipeline/seed/environment_spec.rb181spec/models/ci/build_dependencies_spec.rb182spec/lib/gitlab/bitbucket_import/project_creator_spec.rb183spec/lib/gitlab/ci/status/build/retried_spec.rb184spec/views/projects/notes/_more_actions_dropdown.html.haml_spec.rb185spec/models/ci/build_metadata_spec.rb186spec/models/hooks/web_hook_log_spec.rb187spec/workers/concerns/project_import_options_spec.rb188spec/models/project_services/chat_message/alert_message_spec.rb189spec/lib/gitlab/ci/status/stage/common_spec.rb190spec/views/projects/deployments/_confirm_rollback_modal_spec.html_spec.rb191spec/lib/gitlab/application_rate_limiter_spec.rb192spec/lib/gitlab/otp_key_rotator_spec.rb193spec/services/jira/requests/projects/list_service_spec.rb194spec/graphql/resolvers/board_lists_resolver_spec.rb195spec/models/metrics/users_starred_dashboard_spec.rb196spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb197spec/models/pool_repository_spec.rb198spec/presenters/project_member_presenter_spec.rb199spec/models/project_services/issue_tracker_service_spec.rb200spec/lib/gitlab/ci/trace/stream_spec.rb201spec/services/boards/issues/create_service_spec.rb202spec/lib/gitlab/jira_import_spec.rb203spec/services/chat_names/find_user_service_spec.rb204spec/graphql/resolvers/last_commit_resolver_spec.rb205spec/services/error_tracking/issue_details_service_spec.rb206spec/models/issue_assignee_spec.rb207spec/views/projects/jobs/show.html.haml_spec.rb208spec/services/ci/find_exposed_artifacts_service_spec.rb209spec/lib/gitlab/bitbucket_import/wiki_formatter_spec.rb210spec/presenters/tree_entry_presenter_spec.rb211spec/lib/gitlab/phabricator_import/issues/importer_spec.rb212spec/lib/gitlab/background_migration/set_null_external_diff_store_to_local_value_spec.rb213spec/validators/sha_validator_spec.rb214spec/views/projects/clusters/clusters/gcp/_form.html.haml_spec.rb215spec/services/jira_import/users_importer_spec.rb216spec/services/metrics/dashboard/default_embed_service_spec.rb217spec/views/projects/jobs/_generic_commit_status.html.haml_spec.rb218spec/serializers/test_report_entity_spec.rb219spec/services/update_container_registry_info_service_spec.rb220spec/workers/gitlab/github_import/stage/finish_import_worker_spec.rb221spec/workers/build_success_worker_spec.rb222spec/models/merge_request/metrics_spec.rb223spec/lib/gitlab/doctor/secrets_spec.rb224spec/models/wiki_page/slug_spec.rb225spec/views/profiles/show.html.haml_spec.rb226spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb227spec/views/projects/ci/lints/show.html.haml_spec.rb228spec/models/spam_log_spec.rb229spec/models/blob_viewer/base_spec.rb230spec/views/projects/services/edit.html.haml_spec.rb231spec/services/ci/process_pipeline_service_spec.rb232spec/presenters/packages/detail/package_presenter_spec.rb233spec/models/project_custom_attribute_spec.rb234spec/lib/grafana/client_spec.rb235spec/graphql/mutations/concerns/mutations/resolves_issuable_spec.rb236spec/lib/gitlab/auth/ldap/person_spec.rb237spec/lib/gitlab/ci/status/build/canceled_spec.rb238spec/workers/namespaces/prune_aggregation_schedules_worker_spec.rb239spec/services/users/activity_service_spec.rb240spec/models/subscription_spec.rb241spec/models/ci/group_variable_spec.rb242spec/lib/gitlab/allowable_spec.rb243spec/workers/concerns/gitlab/github_import/rescheduling_methods_spec.rb244spec/routing/import_routing_spec.rb245spec/graphql/resolvers/project_merge_requests_resolver_spec.rb246spec/models/deploy_key_spec.rb247spec/services/branches/create_service_spec.rb248spec/lib/gitlab/git/repository_cleaner_spec.rb249spec/lib/gitlab/background_migration/mailers/unconfirm_mailer_spec.rb250spec/workers/clusters/applications/wait_for_uninstall_app_worker_spec.rb251spec/models/push_event_payload_spec.rb252spec/lib/sentry/client/issue_link_spec.rb253spec/services/wiki_pages/event_create_service_spec.rb254spec/lib/gitlab/polling_interval_spec.rb255spec/finders/autocomplete/acts_as_taggable_on/tags_finder_spec.rb256spec/presenters/ci/trigger_presenter_spec.rb257spec/serializers/issuable_sidebar_extras_entity_spec.rb258spec/services/releases/create_evidence_service_spec.rb259spec/services/namespaces/statistics_refresher_service_spec.rb260spec/rubocop/cop/rspec/be_success_matcher_spec.rb261spec/lib/gitlab/git/push_spec.rb262spec/lib/gitlab/ci/variables/collection/item_spec.rb263spec/lib/gitlab/uploads_transfer_spec.rb264spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb265spec/workers/prune_web_hook_logs_worker_spec.rb266spec/workers/gitlab/jira_import/stage/import_labels_worker_spec.rb267spec/serializers/analytics_build_serializer_spec.rb268spec/lib/banzai/pipeline/post_process_pipeline_spec.rb269spec/services/markdown_content_rewriter_service_spec.rb270spec/lib/gitlab/github_import/importer/lfs_object_importer_spec.rb271spec/lib/gitlab/import_sources_spec.rb272spec/initializers/zz_metrics_spec.rb273spec/services/packages/nuget/create_dependency_service_spec.rbKnapsack report generator started!274RSpec's reporter has already been initialized with #<IO:<STDERR>> as the deprecation stream, so your change to `deprecation_stream` will be ignored. You should configure it earlier for it to take effect, or use the `--deprecation-out` CLI option. (Called from /builds/gitlab-org/gitlab/spec/support/rspec.rb:12:in `block in <top (required)>')275Run options:276 include {:focus=>true}277 exclude {:quarantine=>true, :geo=>true, :level=>"migration"}278All examples were filtered out; ignoring {:focus=>true}279==> Setting up gitlab-test bare repository in /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare...280 /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.034047445 seconds...281Repository282 #branch_names_contains283 is expected to include "master"284 is expected not to include "feature"285 is expected not to include "fix"286 when storage is broken287 raises a storage error288 #tag_names_contains289 is expected to include "v1.1.0"290 is expected not to include "v1.0.0"291 tags_sorted_by292 name_desc293 is expected to eq ["v1.1.0", "v1.0.0"]294 name_asc295 is expected to eq ["v1.0.0", "v1.1.0"]296 updated297 desc298 is expected to eq ["v1.0.0", "v1.1.0"]299 asc300 is expected to eq ["v1.1.0", "v1.0.0"]301 annotated tag pointing to a blob302 is expected to eq ["v1.1.0", "v1.0.0", "annotated-tag"]303 #ref_name_for_sha304 returns the ref305 #ref_exists?306 when ref exists307 returns true308 when ref does not exist309 returns false310 when ref format is incorrect311 returns false312 #list_last_commits_for_tree313 returns the last commits for every entry in the current path314 returns the last commits for every entry in the current path starting from the offset315 returns a limited number of last commits for every entry in the current path starting from the offset316 returns an empty hash when offset is out of bounds317 with a commit with invalid UTF-8 path318 does not raise an error319 #last_commit_for_path320 is expected to eq "c1acaa58bbcbc3eafe538cb8274ba387047b69f8"321 when storage is broken322 raises a storage error323 with filename with pathspec characters324 returns a commit SHA325 #last_commit_id_for_path326 returns last commit id for a given path327 caches last commit id for a given path328 when storage is broken329 raises a storage error330 with filename with pathspec characters331 returns a commit SHA332 #commits333 when neither the all flag nor a ref are specified334 returns every commit from default branch335 when ref is passed336 returns every commit from the specified ref337 when all338 returns every commit from the repository339 with path340 sets follow when it is a single path341 does not set follow when it is multiple paths342 without path343 does not set follow344 when 'author' is set345 returns commits from that author346 doesn't returns commits from an unknown author347 when 'all' flag is set348 returns every commit from the repository349 when 'order' flag is set350 passes order option to perform the query351 #new_commits352 when there are no new commits353 returns an empty array354 when new commits are found355 returns the commits356 #commits_by357 finds each commit358 returns only Commit instances359 when some commits are not found360 returns only found commits361 when no oids are passed362 does not call #batch_by_oid363 #find_commits_by_message364 returns commits with messages containing a given string365 is case insensitive366 when storage is broken367 raises a storage error368 #blob_at369 blank sha370 is expected to be nil371 regular blob372 is expected to be an instance of Blob373 readme blob on HEAD374 is expected to be an instance of ReadmeBlob375 readme blob not on HEAD376 is expected to be an instance of Blob377 #merged_to_root_ref?378 merged branch without ff379 is expected to be truthy380 merged with ff381 is expected to be truthy382 not merged branch383 is expected to be falsey384 default branch385 is expected to be falsey386 non merged branch387 is expected to be falsey388 non existent branch389 is expected to be nil390 #root_ref_sha391 is expected to eq "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"392 #merged_branch_names393 is expected to eq #<Set: {"definitely_merged"}>394 is expected to be a kind of Set395 cache expiry396 is expired when the branches caches are expired397 is expired when the repository caches are expired398 cache is empty399 is expected to eq #<Set: {"definitely_merged"}>400 cache values401 writes the values to redis402 matches the supplied hash403 cache is not empty404 is expected to eq #<Set: {"definitely_merged"}>405 doesn't fetch from the disk406 cache is partially complete407 is expected to eq #<Set: {"definitely_merged"}>408 does fetch from the disk409 requested branches array is empty410 is expected to eq #<Set: {"definitely_merged"}>411 #can_be_merged?412 mergeable branches413 is expected to be truthy414 non-mergeable branches without conflict sides missing415 is expected to be falsey416 non-mergeable branches with conflict sides missing417 is expected to be falsey418 submodule changes that confuse rugged419 is expected to be falsey420 #commit421 when ref exists422 returns commit object423 when ref does not exist424 returns nil425 when ref is not specified426 is using a root ref427 when ref is not valid428 when preceding tree element exists429 returns nil430 when preceding tree element does not exist431 returns nil432 #create_dir433 commits a change that creates a new directory434 when committing to another project435 creates a fork and commit to the forked project436 when an author is specified437 uses the given email/name to set the commit's author438 #create_file439 commits new file successfully440 creates new file and dir when file_path has a forward slash441 respects the autocrlf setting442 when an author is specified443 uses the given email/name to set the commit's author444 #update_file445 updates file successfully446 updates filename successfully447 when an author is specified448 uses the given email/name to set the commit's author449 #delete_file450 removes file successfully451 when an author is specified452 uses the given email/name to set the commit's author453 search_files_by_content454 is expected to be a kind of Array455 regex-escapes the query string456 properly handles an unmatched parenthesis457 properly handles when query is not present458 properly handles query when repo is empty459 when storage is broken460 raises a storage error461 result462 is expected to be a kind of String463 is expected to eq "master:CHANGELOG\u0000190\u0000 - Feature: Replace teams with group membership\n"464 search_files_by_name465 returns result466 ignores leading slashes467 properly handles when query is only slashes468 properly handles when query is not present469 properly handles query when repo is empty470 when storage is broken471 raises a storage error472 #async_remove_remote473 when worker is scheduled successfully474 returns job_id475 when worker does not schedule successfully476 returns nil477 #fetch_ref478 when storage is broken479 raises a storage error480 #get_raw_changes481 with non-UTF8 bytes in paths482 returns the changes483 #create_ref484 redirects the call to write_ref485 #changelog486 accepts changelog487 accepts news instead of changelog488 accepts history instead of changelog489 accepts changes instead of changelog490 is case-insensitive491 #license_blob492 handles when HEAD points to non-existent ref493 looks in the root_ref only494 detects license file with no recognizable open-source license content495 detects 'LICENSE'496 detects 'LICENCE'497 detects 'LiCensE'498 detects 'LICENSE.md'499 detects 'LICENSE.foo'500 detects 'COPYING'501 detects 'COPYING.md'502 #license_key503 returns nil when no license is detected504 returns nil when the repository does not exist505 returns nil when the content is not recognizable506 returns nil when the commit SHA does not exist507 returns nil when master does not exist508 returns the license key509 #license510 returns nil when no license is detected511 returns nil when the repository does not exist512 returns nil when the content is not recognizable513 returns the license514 #gitlab_ci_yml515 returns valid file516 returns nil if not exists517 returns nil for empty repository518 #ambiguous_ref?519 when ref is ambiguous520 is true521 when ref is not ambiguous522 is false523 #has_ambiguous_refs?524 branch_names: nil, tag_names: nil, result: false525 is expected to eq false526 branch_names: [], tag_names: [], result: false527 is expected to eq false528 branch_names: ["a", "b"], tag_names: [], result: false529 is expected to eq false530 branch_names: [], tag_names: ["c", "d"], result: false531 is expected to eq false532 branch_names: ["a", "b"], tag_names: ["c", "d"], result: false533 is expected to eq false534 branch_names: ["a/b"], tag_names: ["c/d"], result: false535 is expected to eq false536 branch_names: ["a", "b"], tag_names: ["c", "d", "a/z"], result: true537 is expected to eq true538 branch_names: ["a", "b", "c/z"], tag_names: ["c", "d"], result: true539 is expected to eq true540 branch_names: ["a/b/z"], tag_names: ["a/b"], result: false541 is expected to eq false542 branch_names: ["a/b/z"], tag_names: ["a/b", "a"], result: true543 is expected to eq true544 branch_names: ["ab"], tag_names: ["abc/d", "a", "b"], result: false545 is expected to eq false546 #expand_ref547 when ref is not tag or branch name548 returns nil549 when ref is tag name550 returns the tag ref551 when ref is branch name552 returns the branch ref553 #add_branch554 calls Gitaly's OperationService555 creates_the_branch556 with a non-existing target557 returns false and doesn't create the branch558 #exists?559 returns true when a repository exists560 returns false if no full path can be constructed561 with broken storage562 raises a storage error563 behaves like asymmetric cached method564 asymmetric caching565 when it returns true566 caches the output in RequestStore567 caches the output in RepositoryCache568 when it returns false569 caches the output in RequestStore570 does NOT cache the output in RepositoryCache571 #has_visible_content?572 delegates to raw_repository when true573 delegates to raw_repository when false574 behaves like asymmetric cached method575 asymmetric caching576 when it returns true577 caches the output in RequestStore578 caches the output in RepositoryCache579 when it returns false580 caches the output in RequestStore581 does NOT cache the output in RepositoryCache582 #branch_exists?583 delegates to branch_names when the cache is empty584 uses redis set caching when the cache is filled585 #tag_exists?586 delegates to tag_names when the cache is empty587 uses redis set caching when the cache is filled588 #branch_names589 gets cached across Repository instances590 #empty?591 returns true for an empty repository592 returns false for a non-empty repository593 caches the output594 #blobs_at595 returns empty array for an empty repository596 returns blob array for a non-empty repository597 #root_ref598 returns a branch name599 caches the output600 returns nil if the repository does not exist601 behaves like asymmetric cached method602 asymmetric caching603 when it returns true604 caches the output in RequestStore605 caches the output in RepositoryCache606 when it returns false607 caches the output in RequestStore608 does NOT cache the output in RepositoryCache609 #expire_root_ref_cache610 expires the root reference cache611 #expire_branch_cache612 expires the cache for all branches613 expires the cache for all branches when the root branch is given614 expires the cache for a specific branch615 #expire_emptiness_caches616 expires the caches for an empty repository617 does not expire the cache for a non-empty repository618 expires the memoized repository cache619 skip_merges option620 is expected not to include "e56497bb5f03a90a51293fc6d516788730953899"621 #merge622 merges the code and returns the commit id623 sets the `in_progress_merge_commit_sha` flag for the given merge request624 removes carriage returns from commit message625 #merge_to_ref626 writes merge of source SHA and first parent ref to MR merge_ref_path627 #ff_merge628 merges the code and return the commit id629 sets the `in_progress_merge_commit_sha` flag for the given merge request630 #rebase631 executes the new Gitaly RPC632 behaves like a method that can rebase successfully633 returns the rebase commit sha634 sets the `rebase_commit_sha` for the given merge request635 rolling back the `rebase_commit_sha`636 does not rollback when there are no errors637 does rollback when a PreReceiveError is encountered in the second step638 does rollback when a GitError is encountered in the second step639 #revert640 when there is a conflict641 raises an error642 when commit was already reverted643 raises an error644 when commit can be reverted645 reverts the changes646 reverting a merge commit647 reverts the changes648 #cherry_pick649 when there is a conflict650 raises an error651 when commit was already cherry-picked652 raises an error653 when commit can be cherry-picked654 cherry-picks the changes655 cherry-picking a merge commit656 cherry-picks the changes657 #before_delete658 when a repository does not exist659 does not flush caches that depend on repository data660 flushes the tags cache661 flushes the branches cache662 flushes the root ref cache663 flushes the emptiness caches664 flushes the exists cache665 when a repository exists666 flushes the tags cache667 flushes the branches cache668 flushes the root ref cache669 flushes the emptiness caches670 #before_change_head671 flushes the branch cache672 flushes the root ref cache673 #after_change_head674 flushes the method caches675 #expires_caches_for_tags676 flushes the cache677 #before_push_tag678 logs an event679 #after_push_commit680 expires statistics caches681 #after_create_branch682 expires the branch caches683 does not expire the branch caches when specified684 #after_remove_branch685 expires the branch caches686 does not expire the branch caches when specified687 #after_create688 calls expire_status_cache689 logs an event690 #expire_status_cache691 flushes the exists cache692 flushes the root ref cache693 flushes the emptiness caches694 #copy_gitattributes695 returns true with a valid ref696 returns false with an invalid ref697 #before_remove_tag698 flushes the tag cache699 #branch_count700 returns the number of branches701 #tag_count702 returns the number of tags703 #expire_branches_cache704 expires the cache705 #expire_tags_cache706 expires the cache707 #add_tag708 with a valid target709 creates the tag710 returns a Gitlab::Git::Tag object711 with an invalid target712 returns false713 #rm_branch714 removes a branch715 when pre hooks failed716 gets an error and does not delete the branch717 #rm_tag718 removes a tag719 #avatar720 returns nil if repo does not exist721 returns the first avatar file found in the repository722 caches the output723 #expire_exists_cache724 expires the cache725 expires the request store cache726 #xcode_project?727 when the root contains a *.xcodeproj directory728 returns true729 when the root contains a *.xcworkspace directory730 returns true731 when the root contains no Xcode config directory732 returns false733 #contribution_guide734 returns and caches the output735 #gitignore736 returns and caches the output737 #readme738 with a non-existing repository739 returns nil740 with an existing repository741 when no README exists742 returns nil743 when a README exists744 returns the README745 #readme_path746 with a non-existing repository747 returns nil748 with an existing repository749 when no README exists750 returns nil751 when a README exists752 returns the README753 caches the response754 #expire_statistics_caches755 expires the caches756 #expire_all_method_caches757 expires the caches of all methods758 all cache_method definitions are in the lists of method caches759 #file_on_head760 with a non-existing repository761 returns nil762 with a repository that has no blobs763 returns nil764 with an existing repository765 returns a Gitlab::Git::Tree766 #head_tree767 with an existing repository768 returns a Tree769 with a non-existing repository770 returns nil771 behaves like #tree772 using a non-existing repository773 returns nil774 returns nil when using a path775 using an existing repository776 returns a Tree777 #tree? with Rugged enabled778 behaves like #tree779 using a non-existing repository780 returns nil781 returns nil when using a path782 using an existing repository783 returns a Tree784 #size785 with a non-existing repository786 returns 0787 with an existing repository788 returns the repository size as a Float789 #local_branches790 returns the local branches791 #commit_count792 with a non-existing repository793 returns 0794 with an existing repository795 returns the commit count796 #commit_count_for_ref797 with a non-existing repository798 returns 0799 with empty repository800 returns 0801 when searching for the root ref802 returns the same count as #commit_count803 #refresh_method_caches804 refreshes the caches of the given types805 #gitlab_ci_yml_for806 when there is a .gitlab-ci.yml at the commit807 returns the content808 when there is no .gitlab-ci.yml at the commit809 returns nil810 #route_map_for811 when there is a .gitlab/route-map.yml at the commit812 returns the content813 when there is no .gitlab/route-map.yml at the commit814 returns nil815 #ancestor? with Gitaly enabled816 behaves like #ancestor?817 is an ancestor818 is not an ancestor819 returns false on nil-values820 returns false for invalid commit IDs821 caching822 only calls out to Gitaly once823 returns the value from the request store824 returns the value from the redis cache825 #ancestor? with Rugged enabled826 calls out to the Rugged implementation827 behaves like #ancestor?828 is an ancestor829 is not an ancestor830 returns false on nil-values831 returns false for invalid commit IDs832 #archive_metadata833 with hashed storage disabled834 uses the project path to generate the filename835 with hashed storage enabled836 uses the project path to generate the filename837 commit cache838 caches based on SHA839 caches nil values840 #raw_repository841 returns a Gitlab::Git::Repository representation of the repository842 with a wiki repository843 creates a Gitlab::Git::Repository with the proper attributes844 #contributors845 returns the array of Gitlab::Contributor for the repository846 order_by email847 asc848 returns all the contributors ordered by email asc case insensitive849 desc850 returns all the contributors ordered by email desc case insensitive851 order_by name852 asc853 returns all the contributors ordered by name asc case insensitive854 desc855 returns all the contributors ordered by name desc case insensitive856 order_by commits857 asc858 returns all the contributors ordered by commits asc859 desc860 returns all the contributors ordered by commits desc861 invalid ordering862 returns the contributors unsorted863 invalid sorting864 returns the contributors unsorted865 #merge_base866 only makes one gitaly call867 #create_if_not_exists868 creates the repository if it did not exist869 returns true870 calls out to the repository client to create a repo871 it does nothing if the repository already existed872 does nothing if the repository already existed873 returns nil874 when the repository exists but the cache is not up to date875 does not raise errors876 returns nil877 #create_from_bundle878 calls out to the raw_repository to create a repo from bundle879 calls after_create880 when exception is raised881 after_create is not executed882 #blobs_metadata883 returns blob metadata in batch for HEAD884 returns blob metadata for a specified ref885 performs a single gitaly call886 #project887 returns the project for a project snippet888 returns nil for a personal snippet889 returns the container if it is a project890 returns nil if the container is not a project891 #submodule_links892 returns an instance of Gitlab::SubmoduleLinks893 #lfs_enabled?894 for a project repository895 returns true when LFS is enabled896 returns false when LFS is disabled897 for a project wiki repository898 returns true when LFS is enabled899 returns false when LFS is disabled900 for a project snippet repository901 returns false when LFS is enabled902 for a personal snippet repository903 returns false when LFS is enabled904 for a design repository905 returns true when LFS is enabled906 returns false when LFS is disabled907Banzai::Filter::MilestoneReferenceFilter908 requires project context909 group context910 when project milestone911 links to a valid reference912 ignores internal references913 when group milestone914 ignores internal references915 for subgroups916 links to a valid reference of subgroup and group milestones917 when milestone is open918 project milestones919 ignores valid references contained inside 'pre' element920 ignores valid references contained inside 'code' element921 ignores valid references contained inside 'a' element922 ignores valid references contained inside 'style' element923 includes default classes924 includes a data-project attribute925 includes a data-milestone attribute926 supports an :only_path context927 behaves like Integer-based references928 links to a valid reference929 links with adjacent text930 ignores invalid milestone IIDs931 behaves like String-based single-word references932 links to a valid reference933 links with adjacent text934 ignores invalid milestone names935 behaves like String-based multi-word references in quotes936 links to a valid reference937 links with adjacent text938 ignores invalid milestone names939 behaves like referencing a milestone in a link href940 links to a valid reference941 links with adjacent text942 includes a data-project attribute943 includes a data-milestone attribute944 behaves like cross-project / cross-namespace complete reference945 points to referenced project milestone page946 link has valid text947 has valid text948 escapes the name attribute949 behaves like cross-project / same-namespace complete reference950 points to referenced project milestone page951 link has valid text952 has valid text953 escapes the name attribute954 behaves like cross project shorthand reference955 points to referenced project milestone page956 link has valid text957 has valid text958 escapes the name attribute959 behaves like references with HTML entities960 links to a valid reference961 ignores invalid milestone names and escapes entities962 behaves like HTML text with references963 preserves escaped HTML text and adds valid references964 preserves escaped HTML text if there are no valid references965 group milestones966 ignores valid references contained inside 'pre' element967 ignores valid references contained inside 'code' element968 ignores valid references contained inside 'a' element969 ignores valid references contained inside 'style' element970 includes default classes971 includes a data-project attribute972 includes a data-milestone attribute973 supports an :only_path context974 does not support references by IID975 does not support references by link976 does not support cross-project references977 supports parent group references978 behaves like String-based single-word references979 links to a valid reference980 links with adjacent text981 ignores invalid milestone names982 behaves like String-based multi-word references in quotes983 links to a valid reference984 links with adjacent text985 ignores invalid milestone names986 behaves like referencing a milestone in a link href987 links to a valid reference988 links with adjacent text989 includes a data-project attribute990 includes a data-milestone attribute991 behaves like references with HTML entities992 links to a valid reference993 ignores invalid milestone names and escapes entities994 behaves like HTML text with references995 preserves escaped HTML text and adds valid references996 preserves escaped HTML text if there are no valid references997 when milestone is closed998 project milestones999 ignores valid references contained inside 'pre' element1000 ignores valid references contained inside 'code' element1001 ignores valid references contained inside 'a' element1002 ignores valid references contained inside 'style' element1003 includes default classes1004 includes a data-project attribute1005 includes a data-milestone attribute1006 supports an :only_path context1007 behaves like Integer-based references1008 links to a valid reference1009 links with adjacent text1010 ignores invalid milestone IIDs1011 behaves like String-based single-word references1012 links to a valid reference1013 links with adjacent text1014 ignores invalid milestone names1015 behaves like String-based multi-word references in quotes1016 links to a valid reference1017 links with adjacent text1018 ignores invalid milestone names1019 behaves like referencing a milestone in a link href1020 links to a valid reference1021 links with adjacent text1022 includes a data-project attribute1023 includes a data-milestone attribute1024 behaves like cross-project / cross-namespace complete reference1025 points to referenced project milestone page1026 link has valid text1027 has valid text1028 escapes the name attribute1029 behaves like cross-project / same-namespace complete reference1030 points to referenced project milestone page1031 link has valid text1032 has valid text1033 escapes the name attribute1034 behaves like cross project shorthand reference1035 points to referenced project milestone page1036 link has valid text1037 has valid text1038 escapes the name attribute1039 behaves like references with HTML entities1040 links to a valid reference1041 ignores invalid milestone names and escapes entities1042 behaves like HTML text with references1043 preserves escaped HTML text and adds valid references1044 preserves escaped HTML text if there are no valid references1045 group milestones1046 ignores valid references contained inside 'pre' element1047 ignores valid references contained inside 'code' element1048 ignores valid references contained inside 'a' element1049 ignores valid references contained inside 'style' element1050 includes default classes1051 includes a data-project attribute1052 includes a data-milestone attribute1053 supports an :only_path context1054 does not support references by IID1055 does not support references by link1056 does not support cross-project references1057 supports parent group references1058 behaves like String-based single-word references1059 links to a valid reference1060 links with adjacent text1061 ignores invalid milestone names1062 behaves like String-based multi-word references in quotes1063 links to a valid reference1064 links with adjacent text1065 ignores invalid milestone names1066 behaves like referencing a milestone in a link href1067 links to a valid reference1068 links with adjacent text1069 includes a data-project attribute1070 includes a data-milestone attribute1071 behaves like references with HTML entities1072 links to a valid reference1073 ignores invalid milestone names and escapes entities1074 behaves like HTML text with references1075 preserves escaped HTML text and adds valid references1076 preserves escaped HTML text if there are no valid references1077MergeRequests::BuildService1078 #execute1079 calls the compare service with the correct arguments1080 does not assign force_remove_source_branch1081 with force_remove_source_branch parameter when the user is authorized1082 assigns force_remove_source_branch1083 with project setting remove_source_branch_after_merge false1084 assigns force_remove_source_branch1085 with project setting remove_source_branch_after_merge true1086 assigns force_remove_source_branch1087 with force_remove_source_branch parameter false1088 does not assign force_remove_source_branch1089 missing source branch1090 behaves like forbids the merge request from being created1091 returns that the merge request cannot be created1092 adds an error message to the merge request1093 when target branch is missing1094 when source branch1095 is not the repository default branch1096 creates compare object with target branch as default branch1097 behaves like allows the merge request to be created1098 is expected to eq true1099 the repository default branch1100 behaves like forbids the merge request from being created1101 returns that the merge request cannot be created1102 adds an error message to the merge request1103 when source project is different from the target project1104 creates compare object with target branch as default branch1105 behaves like allows the merge request to be created1106 is expected to eq true1107 same source and target branch1108 behaves like forbids the merge request from being created1109 returns that the merge request cannot be created1110 adds an error message to the merge request1111 no commits in the diff1112 adds a Draft prefix to the merge request title1113 behaves like allows the merge request to be created1114 is expected to eq true1115 one commit in the diff1116 uses the title of the commit as the title of the merge request1117 uses the description of the commit as the description of the merge request1118 behaves like allows the merge request to be created1119 is expected to eq true1120 merge request already has a description set1121 keeps the description from the initial params1122 commit has no description1123 uses the title of the commit as the title of the merge request1124 sets the description to nil1125 when the source branch matches an issue1126 issue_tracker: :jira, source_branch: "FOO-123-fix-issue", closing_message: "Closes FOO-123"1127 uses the title of the commit as the title of the merge request1128 appends the closing description1129 issue_tracker: :jira, source_branch: "fix-issue", closing_message: nil1130 uses the title of the commit as the title of the merge request1131 appends the closing description1132 issue_tracker: :custom_issue_tracker, source_branch: "123-fix-issue", closing_message: "Closes #123"1133 uses the title of the commit as the title of the merge request1134 appends the closing description1135 issue_tracker: :custom_issue_tracker, source_branch: "fix-issue", closing_message: nil1136 uses the title of the commit as the title of the merge request1137 appends the closing description1138 issue_tracker: :internal, source_branch: "123-fix-issue", closing_message: "Closes #123"1139 uses the title of the commit as the title of the merge request1140 appends the closing description1141 issue_tracker: :internal, source_branch: "fix-issue", closing_message: nil1142 uses the title of the commit as the title of the merge request1143 appends the closing description1144 when the source branch matches an internal issue1145 assigns the issue label and milestone1146 when milestone_id and label_ids are shared in the params1147 assigns milestone_id and label_ids instead of issue labels and milestone1148 when a milestone is from another project1149 sets milestone to nil1150 more than one commit in the diff1151 uses the title of the branch as the merge request title1152 does not add a description1153 behaves like allows the merge request to be created1154 is expected to eq true1155 merge request already has a description set1156 keeps the description from the initial params1157 when the source branch matches an issue1158 issue_tracker: :jira, source_branch: "FOO-123-fix-issue", title: "Resolve FOO-123 \"Fix issue\"", closing_message: "Closes FOO-123"1159 sets the correct title1160 sets the closing description1161 issue_tracker: :jira, source_branch: "fix-issue", title: "Fix issue", closing_message: nil1162 sets the correct title1163 sets the closing description1164 issue_tracker: :custom_issue_tracker, source_branch: "123-fix-issue", title: "Resolve #123 \"Fix issue\"", closing_message: "Closes #123"1165 sets the correct title1166 sets the closing description1167 issue_tracker: :custom_issue_tracker, source_branch: "fix-issue", title: "Fix issue", closing_message: nil1168 sets the correct title1169 sets the closing description1170 issue_tracker: :internal, source_branch: "123-fix-issue", title: "Resolve \"A bug\"", closing_message: "Closes #123"1171 sets the correct title1172 sets the closing description1173 issue_tracker: :internal, source_branch: "fix-issue", title: "Fix issue", closing_message: nil1174 sets the correct title1175 sets the closing description1176 issue_tracker: :internal, source_branch: "124-fix-issue", title: "124 fix issue", closing_message: nil1177 sets the correct title1178 sets the closing description1179 when the issue is not accessible to user1180 uses branch title as the merge request title1181 does not set a description1182 when the issue is confidential1183 uses the title of the branch as the merge request title1184 does not set a description1185 source branch does not exist1186 behaves like forbids the merge request from being created1187 returns that the merge request cannot be created1188 adds an error message to the merge request1189 target branch does not exist1190 behaves like forbids the merge request from being created1191 returns that the merge request cannot be created1192 adds an error message to the merge request1193 both source and target branches do not exist1194 behaves like forbids the merge request from being created1195 returns that the merge request cannot be created1196 adds an error message to the merge request1197 upstream project has disabled merge requests1198 sets target project correctly1199 target_project is set and accessible by current_user1200 sets target project correctly1201 target_project is set but not accessible by current_user1202 sets target project correctly1203 target_project is set but repo is not accessible by current_user1204 sets target project correctly1205 source_project is set and accessible by current_user1206 sets source project correctly1207 source_project is set but not accessible by current_user1208 sets source project correctly1209 source_project is set but the user cannot create merge requests from the project1210 sets the source_project correctly1211 target_project is not in the fork network of source_project1212 adds an error to the merge request1213 target_project is in the fork network of source project but no longer accessible1214 sets the target_project correctly1215 when specifying target branch in the description1216 sets the attribute from the quick actions1217 when assigning labels1218 for members with less than developer access1219 is not allowed1220 for users allowed to assign labels1221 for labels in the project1222 is allowed for developers1223 for unrelated labels1224 only assigns related labels1225SlackService1226 behaves like slack or mattermost notifications1227 Associations1228 is expected to belong to project required:1229 is expected to have one service_hook1230 Validations1231 when service is active1232 is expected to validate that :webhook cannot be empty/falsy1233 behaves like issue tracker service URL attribute1234 is expected to allow :webhook to be ‹"https://example.com"›1235 is expected not to allow :webhook to be ‹"example.com"›1236 is expected not to allow :webhook to be ‹"ftp://example.com"›1237 is expected not to allow :webhook to be ‹"herp-and-derp"›1238 when service is inactive1239 is expected not to validate that :webhook cannot be empty/falsy1240 #execute1241 calls Slack API for push events1242 calls Slack API for issue events1243 calls Slack API for merge requests events1244 calls Slack API for wiki page events1245 calls Slack API for deployment events1246 uses the username as an option for slack when configured1247 uses the channel as an option when it is configured1248 event channels1249 uses the right channel for push event1250 uses the right channel for merge request event1251 uses the right channel for issue event1252 uses the right channel for wiki event1253 for confidential issues1254 uses confidential issue channel1255 falls back to issue channel1256 note event1257 uses the right channel1258 for confidential notes1259 uses confidential channel1260 falls back to note channel1261 Push events1262 on default branch1263 pushing tags1264 behaves like triggered Slack service1265 notifies about push events1266 notification enabled only for default branch1267 behaves like triggered Slack service1268 notifies about push events1269 notification enabled only for protected branches1270 behaves like untriggered Slack service1271 notifies about push events1272 notification enabled only for default and protected branches1273 behaves like triggered Slack service1274 notifies about push events1275 notification enabled for all branches1276 behaves like triggered Slack service1277 notifies about push events1278 on a protected branch1279 pushing tags1280 behaves like triggered Slack service1281 notifies about push events1282 notification enabled only for default branch1283 behaves like untriggered Slack service1284 notifies about push events1285 notification enabled only for protected branches1286 behaves like triggered Slack service1287 notifies about push events1288 notification enabled only for default and protected branches1289 behaves like triggered Slack service1290 notifies about push events1291 notification enabled for all branches1292 behaves like triggered Slack service1293 notifies about push events1294 on a protected branch with protected branches defined using wildcards1295 pushing tags1296 behaves like triggered Slack service1297 notifies about push events1298 notification enabled only for default branch1299 behaves like untriggered Slack service1300 notifies about push events1301 notification enabled only for protected branches1302 behaves like triggered Slack service1303 notifies about push events1304 notification enabled only for default and protected branches1305 behaves like triggered Slack service1306 notifies about push events1307 notification enabled for all branches1308 behaves like triggered Slack service1309 notifies about push events1310 on a neither protected nor default branch1311 pushing tags1312 behaves like triggered Slack service1313 notifies about push events1314 notification enabled only for default branch1315 behaves like untriggered Slack service1316 notifies about push events1317 notification enabled only for protected branches1318 behaves like untriggered Slack service1319 notifies about push events1320 notification enabled only for default and protected branches1321 behaves like untriggered Slack service1322 notifies about push events1323 notification enabled for all branches1324 behaves like triggered Slack service1325 notifies about push events1326 Note events1327 when commit comment event executed1328 behaves like triggered Slack service1329 notifies about commit comment events1330 when merge request comment event executed1331 behaves like triggered Slack service1332 notifies about merge request comment events1333 when issue comment event executed1334 behaves like triggered Slack service1335 notifies about issue comment events1336 when snippet comment event executed1337 behaves like triggered Slack service1338 notifies about snippet comment events1339 Pipeline events1340 with succeeded pipeline1341 with default to notify_only_broken_pipelines1342 behaves like untriggered Slack service1343 notifies about pipeline events1344 with setting notify_only_broken_pipelines to false1345 behaves like triggered Slack service1346 notifies about pipeline events1347 with failed pipeline1348 on default branch1349 notification enabled only for default branch1350 behaves like triggered Slack service1351 notifies about pipeline events1352 notification enabled only for protected branches1353 behaves like untriggered Slack service1354 notifies about pipeline events1355 notification enabled only for default and protected branches1356 behaves like triggered Slack service1357 notifies about pipeline events1358 notification enabled for all branches1359 behaves like triggered Slack service1360 notifies about pipeline events1361 on a protected branch1362 notification enabled only for default branch1363 behaves like untriggered Slack service1364 notifies about pipeline events1365 notification enabled only for protected branches1366 behaves like triggered Slack service1367 notifies about pipeline events1368 notification enabled only for default and protected branches1369 behaves like triggered Slack service1370 notifies about pipeline events1371 notification enabled for all branches1372 behaves like triggered Slack service1373 notifies about pipeline events1374 on a protected branch with protected branches defined usin wildcards1375 notification enabled only for default branch1376 behaves like untriggered Slack service1377 notifies about pipeline events1378 notification enabled only for protected branches1379 behaves like triggered Slack service1380 notifies about pipeline events1381 notification enabled only for default and protected branches1382 behaves like triggered Slack service1383 notifies about pipeline events1384 notification enabled for all branches1385 behaves like triggered Slack service1386 notifies about pipeline events1387 on a neither protected nor default branch1388 notification enabled only for default branch1389 behaves like untriggered Slack service1390 notifies about pipeline events1391 notification enabled only for protected branches1392 behaves like untriggered Slack service1393 notifies about pipeline events1394 notification enabled only for default and protected branches1395 behaves like untriggered Slack service1396 notifies about pipeline events1397 notification enabled for all branches1398 behaves like triggered Slack service1399 notifies about pipeline events1400Gitlab::BareRepositoryImport::Importer1401 with subgroups1402 behaves like importing a repository1403 .execute1404 creates a project for a repository in storage1405 skips wiki repos1406 without admin users1407 raises an error1408 #create_project_if_needed1409 starts an import for a project that did not exist1410 skips importing when the project already exists1411 creates a project with the correct path in the database1412 does not schedule an import1413 creates the Git repo on disk1414 hashed storage enabled1415 creates a project with the correct path in the database1416 without subgroups1417 behaves like importing a repository1418 .execute1419 creates a project for a repository in storage1420 skips wiki repos1421 without admin users1422 raises an error1423 #create_project_if_needed1424 starts an import for a project that did not exist1425 skips importing when the project already exists1426 creates a project with the correct path in the database1427 does not schedule an import1428 creates the Git repo on disk1429 hashed storage enabled1430 creates a project with the correct path in the database1431 without groups1432 starts an import for a project that did not exist1433 creates a project with the correct path in the database1434 creates the Git repo in disk1435 with a repository already on disk1436 moves an existing project to the correct path1437 with Wiki1438 creates the Wiki git repo in disk1439 behaves like importing a repository1440 .execute1441 creates a project for a repository in storage1442 skips wiki repos1443 without admin users1444 raises an error1445 #create_project_if_needed1446 starts an import for a project that did not exist1447 skips importing when the project already exists1448 creates a project with the correct path in the database1449 does not schedule an import1450 creates the Git repo on disk1451 hashed storage enabled1452 creates a project with the correct path in the database1453Member1454 Associations1455 is expected to belong to user required:1456 Validation1457 is expected to validate that :user cannot be empty/falsy1458 is expected to validate that :source cannot be empty/falsy1459 is expected to validate that :access_level is either ‹10›, ‹20›, ‹30›, ‹40›, or ‹50›1460 behaves like an object with email-formated attributes1461 specifically its :invite_email attribute1462 with a value of 'info@example.com'1463 is valid1464 with a value of 'info+test@example.com'1465 is valid1466 with a value of 'o'reilly@example.com'1467 is valid1468 with a value of 'mailto:test@example.com'1469 is valid1470 with a value of 'lol!'+=?><#$%^&*()@gmail.com'1471 is valid1472 with a value of 'foobar'1473 is invalid1474 with a value of 'test@test@example.com'1475 is invalid1476 when an invite email is provided1477 doesn't require a user1478 requires a valid invite email1479 requires a unique invite email scoped to this source1480 when an invite email is not provided1481 requires a user1482 is valid otherwise1483 when a child member inherits its access level1484 requires a higher level1485 is valid with an equal level1486 is valid with a higher level1487 project bots1488 not a member of any group or project1489 is valid1490 already member of a project1491 is not valid1492 Scopes & finders1493 .access_for_user_ids1494 returns the right access levels1495 .invite1496 is expected not to include #<ProjectMember id: 711, access_level: 40, source_id: 733, source_type: "Project", user_id: 1056, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1497 is expected to include #<ProjectMember id: 713, access_level: 30, source_id: 733, source_type: "Project", user_id: 1058, not...ILTERED], invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1498 is expected not to include #<ProjectMember id: 714, access_level: 30, source_id: 733, source_type: "Project", user_id: 1060, not...ccepted_at: "2020-08-29 16:36:03", requested_at: nil, expires_at: nil, ldap: false, override: false>1499 is expected not to include #<ProjectMember id: 715, access_level: 30, source_id: 733, source_type: "Project", user_id: 1061, not...ccepted_at: nil, requested_at: "2020-08-29 16:36:03", expires_at: nil, ldap: false, override: false>1500 is expected not to include #<ProjectMember id: 716, access_level: 30, source_id: 733, source_type: "Project", user_id: 1062, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1501 .non_invite1502 is expected to include #<ProjectMember id: 711, access_level: 40, source_id: 733, source_type: "Project", user_id: 1056, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1503 is expected not to include #<ProjectMember id: 713, access_level: 30, source_id: 733, source_type: "Project", user_id: 1058, not...ILTERED], invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1504 is expected to include #<ProjectMember id: 714, access_level: 30, source_id: 733, source_type: "Project", user_id: 1060, not...ccepted_at: "2020-08-29 16:36:03", requested_at: nil, expires_at: nil, ldap: false, override: false>1505 is expected to include #<ProjectMember id: 715, access_level: 30, source_id: 733, source_type: "Project", user_id: 1061, not...ccepted_at: nil, requested_at: "2020-08-29 16:36:03", expires_at: nil, ldap: false, override: false>1506 is expected to include #<ProjectMember id: 716, access_level: 30, source_id: 733, source_type: "Project", user_id: 1062, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1507 .request1508 is expected not to include #<ProjectMember id: 711, access_level: 40, source_id: 733, source_type: "Project", user_id: 1056, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1509 is expected not to include #<ProjectMember id: 713, access_level: 30, source_id: 733, source_type: "Project", user_id: 1058, not...ILTERED], invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1510 is expected not to include #<ProjectMember id: 714, access_level: 30, source_id: 733, source_type: "Project", user_id: 1060, not...ccepted_at: "2020-08-29 16:36:03", requested_at: nil, expires_at: nil, ldap: false, override: false>1511 is expected to include #<ProjectMember id: 715, access_level: 30, source_id: 733, source_type: "Project", user_id: 1061, not...ccepted_at: nil, requested_at: "2020-08-29 16:36:03", expires_at: nil, ldap: false, override: false>1512 is expected not to include #<ProjectMember id: 716, access_level: 30, source_id: 733, source_type: "Project", user_id: 1062, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1513 .non_request1514 is expected to include #<ProjectMember id: 711, access_level: 40, source_id: 733, source_type: "Project", user_id: 1056, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1515 is expected to include #<ProjectMember id: 713, access_level: 30, source_id: 733, source_type: "Project", user_id: 1058, not...ILTERED], invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1516 is expected to include #<ProjectMember id: 714, access_level: 30, source_id: 733, source_type: "Project", user_id: 1060, not...ccepted_at: "2020-08-29 16:36:03", requested_at: nil, expires_at: nil, ldap: false, override: false>1517 is expected not to include #<ProjectMember id: 715, access_level: 30, source_id: 733, source_type: "Project", user_id: 1061, not...ccepted_at: nil, requested_at: "2020-08-29 16:36:03", expires_at: nil, ldap: false, override: false>1518 is expected to include #<ProjectMember id: 716, access_level: 30, source_id: 733, source_type: "Project", user_id: 1062, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1519 .search_invite_email1520 returns only members the matching e-mail1521 .developers1522 is expected not to include #<GroupMember id: 710, access_level: 50, source_id: 1311, source_type: "Namespace", user_id: 1055, no...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1523 is expected not to include #<ProjectMember id: 711, access_level: 40, source_id: 733, source_type: "Project", user_id: 1056, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1524 is expected to include #<ProjectMember id: 713, access_level: 30, source_id: 733, source_type: "Project", user_id: 1058, not...ILTERED], invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1525 is expected to include #<ProjectMember id: 714, access_level: 30, source_id: 733, source_type: "Project", user_id: 1060, not...ccepted_at: "2020-08-29 16:36:03", requested_at: nil, expires_at: nil, ldap: false, override: false>1526 is expected not to include #<ProjectMember id: 715, access_level: 30, source_id: 733, source_type: "Project", user_id: 1061, not...ccepted_at: nil, requested_at: "2020-08-29 16:36:03", expires_at: nil, ldap: false, override: false>1527 is expected to include #<ProjectMember id: 716, access_level: 30, source_id: 733, source_type: "Project", user_id: 1062, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1528 is expected not to include nil1529 is expected not to include #<ProjectMember id: 712, access_level: 30, source_id: 733, source_type: "Project", user_id: 1057, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1530 .owners_and_maintainers1531 is expected to include #<GroupMember id: 710, access_level: 50, source_id: 1311, source_type: "Namespace", user_id: 1055, no...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1532 is expected to include #<ProjectMember id: 711, access_level: 40, source_id: 733, source_type: "Project", user_id: 1056, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1533 is expected not to include #<ProjectMember id: 713, access_level: 30, source_id: 733, source_type: "Project", user_id: 1058, not...ILTERED], invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1534 is expected not to include #<ProjectMember id: 714, access_level: 30, source_id: 733, source_type: "Project", user_id: 1060, not...ccepted_at: "2020-08-29 16:36:03", requested_at: nil, expires_at: nil, ldap: false, override: false>1535 is expected not to include #<ProjectMember id: 715, access_level: 30, source_id: 733, source_type: "Project", user_id: 1061, not...ccepted_at: nil, requested_at: "2020-08-29 16:36:03", expires_at: nil, ldap: false, override: false>1536 is expected not to include #<ProjectMember id: 716, access_level: 30, source_id: 733, source_type: "Project", user_id: 1062, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1537 is expected not to include nil1538 .has_access1539 is expected to include #<GroupMember id: 710, access_level: 50, source_id: 1311, source_type: "Namespace", user_id: 1055, no...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1540 is expected to include #<ProjectMember id: 711, access_level: 40, source_id: 733, source_type: "Project", user_id: 1056, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1541 is expected to include #<ProjectMember id: 713, access_level: 30, source_id: 733, source_type: "Project", user_id: 1058, not...ILTERED], invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1542 is expected to include #<ProjectMember id: 714, access_level: 30, source_id: 733, source_type: "Project", user_id: 1060, not...ccepted_at: "2020-08-29 16:36:03", requested_at: nil, expires_at: nil, ldap: false, override: false>1543 is expected not to include #<ProjectMember id: 715, access_level: 30, source_id: 733, source_type: "Project", user_id: 1061, not...ccepted_at: nil, requested_at: "2020-08-29 16:36:03", expires_at: nil, ldap: false, override: false>1544 is expected to include #<ProjectMember id: 716, access_level: 30, source_id: 733, source_type: "Project", user_id: 1062, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1545 is expected not to include nil1546 is expected not to include #<ProjectMember id: 712, access_level: 30, source_id: 733, source_type: "Project", user_id: 1057, not...ken: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>1547 Delegate methods1548 is expected to respond to #user_name1549 is expected to respond to #user_email1550 .add_user1551 when source is a project1552 returns a <Source>Member object1553 sets members.expires_at to the given expires_at1554 accepts the :guest symbol as access level1555 accepts the 10 integer as access level1556 accepts the :reporter symbol as access level1557 accepts the 20 integer as access level1558 accepts the :developer symbol as access level1559 accepts the 30 integer as access level1560 accepts the :maintainer symbol as access level1561 accepts the 40 integer as access level1562 when admin mode is enabled1563 sets members.created_by to the given admin current_user1564 when admin mode is disabled1565 rejects setting members.created_by to the given admin current_user (PENDING: Temporarily skipped with xit)1566 with no current_user1567 when called with a known user id1568 adds the user as a member1569 when called with an unknown user id1570 adds the user as a member1571 when called with a user object1572 adds the user as a member1573 when called with a requester user object1574 adds the requester as a member1575 when called with a known user email1576 adds the user as a member1577 when called with an unknown user email1578 creates an invited member1579 when called with an unknown user email starting with a number1580 creates an invited member1581 when current_user can update member1582 creates the member1583 when called with a requester user object1584 adds the requester as a member1585 when current_user cannot update member1586 does not create the member1587 when called with a requester user object1588 does not destroy the requester1589 when member already exists1590 with no current_user1591 updates the member1592 when current_user can update member1593 updates the member1594 when current_user cannot update member1595 does not update the member1596 when source is a group1597 returns a <Source>Member object1598 sets members.expires_at to the given expires_at1599 accepts the :guest symbol as access level1600 accepts the 10 integer as access level1601 accepts the :reporter symbol as access level1602 accepts the 20 integer as access level1603 accepts the :developer symbol as access level1604 accepts the 30 integer as access level1605 accepts the :maintainer symbol as access level1606 accepts the 40 integer as access level1607 when admin mode is enabled1608 sets members.created_by to the given admin current_user1609 when admin mode is disabled1610 rejects setting members.created_by to the given admin current_user (PENDING: Temporarily skipped with xit)1611 with no current_user1612 when called with a known user id1613 adds the user as a member1614 when called with an unknown user id1615 adds the user as a member1616 when called with a user object1617 adds the user as a member1618 when called with a requester user object1619 adds the requester as a member1620 when called with a known user email1621 adds the user as a member1622 when called with an unknown user email1623 creates an invited member1624 when called with an unknown user email starting with a number1625 creates an invited member1626 when current_user can update member1627 creates the member1628 when called with a requester user object1629 adds the requester as a member1630 when current_user cannot update member1631 does not create the member1632 when called with a requester user object1633 does not destroy the requester1634 when member already exists1635 with no current_user1636 updates the member1637 when current_user can update member1638 updates the member1639 when current_user cannot update member1640 does not update the member1641 .add_users1642 when source is a project1643 returns a <Source>Member objects1644 returns an empty array1645 supports differents formats1646 when source is a group1647 returns a <Source>Member objects1648 returns an empty array1649 supports differents formats1650 #accept_request1651 is expected to be truthy1652 clears requested_at1653 calls #after_accept_request1654 #invite?1655 is expected to be invite1656 #request?1657 is expected to be request1658 #pending?1659 is expected to be invite1660 is expected to be pending1661 #accept_invite!1662 resets the invite token1663 sets the invite accepted timestamp1664 sets the user1665 calls #after_accept_invite1666 refreshes user's authorized projects1667 #decline_invite!1668 destroys the member1669 calls #after_decline_invite1670 #generate_invite_token1671 sets the invite token1672 #invite_to_unknown_user?1673 when user is nil1674 is expected to eq true1675 when user is set1676 is expected to eq false1677 destroying a record1678 refreshes user's authorized projects1679 when after_commit :update_highest_role1680 member_type: :project_member, source_type: :project1681 create member1682 when lease is obtained1683 takes the lease but does not release it1684 schedules a job in the future1685 when lease cannot be obtained1686 only schedules one job1687 when member exists1688 update member1689 when access level was changed1690 when lease is obtained1691 takes the lease but does not release it1692 schedules a job in the future1693 when lease cannot be obtained1694 only schedules one job1695 when access level was not changed1696 does not obtain an exclusive lease1697 destroy member1698 when lease is obtained1699 takes the lease but does not release it1700 schedules a job in the future1701 when lease cannot be obtained1702 only schedules one job1703 member_type: :group_member, source_type: :group1704 create member1705 when lease is obtained1706 takes the lease but does not release it1707 schedules a job in the future1708 when lease cannot be obtained1709 only schedules one job1710 when member exists1711 update member1712 when access level was changed1713 when lease is obtained1714 takes the lease but does not release it1715 schedules a job in the future1716 when lease cannot be obtained1717 only schedules one job1718 when access level was not changed1719 does not obtain an exclusive lease1720 destroy member1721 when lease is obtained1722 takes the lease but does not release it1723 schedules a job in the future1724 when lease cannot be obtained1725 only schedules one job1726JobEntity1727 contains paths to job page action1728 does not contain sensitive information1729 contains whether it is playable1730 contains timestamps1731 contains details1732 when job is retryable1733 contains cancel path1734 when job is cancelable1735 contains cancel path1736 when job is a regular job1737 does not contain path to play action1738 is not a playable build1739 when job is a manual action1740 when user is allowed to trigger action1741 contains path to play action1742 is a playable action1743 when user is not allowed to trigger action1744 does not contain path to play action1745 is not a playable action1746 when job is scheduled1747 contains path to unschedule action1748 contains scheduled_at1749 when job is generic commit status1750 contains paths to target action1751 does not contain paths to other action paths1752 contains timestamps1753 contains details1754 when job failed1755 contains details1756 states that it failed1757 indicates the failure reason on tooltip1758 includes a callout message with a verbose output1759 states that it is not recoverable1760 when job is allowed to fail1761 contains details1762 states that it failed1763 indicates the failure reason on tooltip1764 includes a callout message with a verbose output1765 states that it is not recoverable1766 when the job failed with a script failure1767 does not include callout message or recoverable keys1768 when job failed and is recoverable1769 states it is recoverable1770 when job passed1771 does not include callout message or recoverable keys1772Banzai::Filter::MergeRequestReferenceFilter1773 requires project context1774 ignores valid references contained inside 'pre' element1775 ignores valid references contained inside 'code' element1776 ignores valid references contained inside 'a' element1777 ignores valid references contained inside 'style' element1778 performance1779 does not have a N+1 query problem1780 all references1781 adds merge request iid1782 adds project data attribute with project id1783 does not add `has-tooltip` class1784 internal reference1785 links to a valid reference1786 links with adjacent text1787 ignores invalid merge IDs1788 ignores out-of-bounds merge request IDs on the referenced project1789 has no title1790 escapes the title attribute1791 includes default classes, without tooltip1792 includes a data-project attribute1793 includes a data-merge-request attribute1794 supports an :only_path context1795 cross-project / cross-namespace complete reference1796 links to a valid reference1797 link has valid text1798 has valid text1799 ignores invalid merge IDs on the referenced project1800 cross-project / same-namespace complete reference1801 links to a valid reference1802 link has valid text1803 has valid text1804 ignores invalid merge IDs on the referenced project1805 cross-project shorthand reference1806 links to a valid reference1807 link has valid text1808 has valid text1809 ignores invalid merge IDs on the referenced project1810 URL reference for a commit1811 links to a valid reference1812 commit ref tag is valid1813 has valid text1814 has valid title attribute1815 ignores invalid commit short_ids on link text1816 cross-project URL reference1817 links to a valid reference1818 links with adjacent text1819 group context1820 links to a valid reference1821Projects::LfsPointers::LfsDownloadService1822 #execute1823 when file download succeeds1824 has the same oid1825 has the same size1826 stores the content1827 behaves like lfs object is created1828 creates and associate the LFS object to project1829 returns success result1830 behaves like lfs temporal file is removed1831 is expected to equal false1832 when file download fails1833 raise StandardError exception1834 behaves like no lfs object is created1835 is expected not to change `LfsObject.count`1836 returns error result1837 an error is logged1838 behaves like lfs temporal file is removed1839 is expected to equal false1840 when downloaded lfs file has a different size1841 raise SizeError exception1842 behaves like no lfs object is created1843 is expected not to change `LfsObject.count`1844 returns error result1845 an error is logged1846 behaves like lfs temporal file is removed1847 is expected to equal false1848 when downloaded lfs file has a different oid1849 raise OidError exception1850 behaves like no lfs object is created1851 is expected not to change `LfsObject.count`1852 returns error result1853 an error is logged1854 behaves like lfs temporal file is removed1855 is expected to equal false1856 when an lfs object with the same oid already exists1857 does not update the file attached to the existing LfsObject1858 behaves like no lfs object is created1859 is expected not to change `LfsObject.count`1860 returns error result1861 an error is logged1862 behaves like lfs temporal file is removed1863 is expected to equal false1864 when credentials present1865 the request adds authorization headers1866 when localhost requests are allowed1867 behaves like lfs object is created1868 creates and associate the LFS object to project1869 returns success result1870 behaves like lfs temporal file is removed1871 is expected to equal false1872 when a bad URL is used1873 download_link: "/etc/passwd"1874 does not download the file1875 download_link: "ftp://example.com"1876 does not download the file1877 download_link: "http://127.0.0.2"1878 does not download the file1879 download_link: "http://192.168.2.120"1880 does not download the file1881 when the URL points to a redirected URL1882 that is blocked1883 redirect_link: "ftp://example.com"1884 behaves like no lfs object is created1885 is expected not to change `LfsObject.count`1886 returns error result1887 an error is logged1888 behaves like lfs temporal file is removed1889 is expected to equal false1890 redirect_link: "http://127.0.0.2"1891 behaves like no lfs object is created1892 is expected not to change `LfsObject.count`1893 returns error result1894 an error is logged1895 behaves like lfs temporal file is removed1896 is expected to equal false1897 redirect_link: "http://192.168.2.120"1898 behaves like no lfs object is created1899 is expected not to change `LfsObject.count`1900 returns error result1901 an error is logged1902 behaves like lfs temporal file is removed1903 is expected to equal false1904 that is not blocked1905 behaves like lfs object is created1906 creates and associate the LFS object to project1907 returns success result1908 behaves like lfs temporal file is removed1909 is expected to equal false1910 when the lfs object attributes are invalid1911 does not download the file1912 behaves like no lfs object is created1913 is expected not to change `LfsObject.count`1914 returns error result1915 an error is logged1916 behaves like lfs temporal file is removed1917 is expected to equal false1918JobArtifactUploader1919 behaves like builds correct paths1920 #store_dir1921 behaves like matches the method pattern1922 is expected to match /\h{2}\/\h{2}\/\h{64}\/\d{4}_\d{1,2}_\d{1,2}\/\d+\/\d+\z/1923 #cache_dir1924 behaves like matches the method pattern1925 is expected to match /artifacts\/tmp\/cache/1926 #work_dir1927 behaves like matches the method pattern1928 is expected to match /artifacts\/tmp\/work/1929 #upload_path1930 behaves like matches the method pattern1931 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1932 #relative_path1933 is relative (PENDING: Path not set, skipping.)1934 .absolute_path1935 behaves like matches the method pattern1936 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1937 .base_dir1938 behaves like matches the method pattern1939 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1940 object store is REMOTE1941 behaves like builds correct paths1942 #store_dir1943 behaves like matches the method pattern1944 is expected to match /\h{2}\/\h{2}\/\h{64}\/\d{4}_\d{1,2}_\d{1,2}\/\d+\/\d+\z/1945 #cache_dir1946 behaves like matches the method pattern1947 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1948 #work_dir1949 behaves like matches the method pattern1950 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1951 #upload_path1952 behaves like matches the method pattern1953 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1954 #relative_path1955 is relative (PENDING: Path not set, skipping.)1956 .absolute_path1957 behaves like matches the method pattern1958 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1959 .base_dir1960 behaves like matches the method pattern1961 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)1962 file is stored in valid local_path1963 is expected to start with "/builds/gitlab-org/gitlab/tmp/tests/artifacts/"1964 is expected to include "/2020_08_29/"1965 is expected to include "/49/17/"1966 is expected to end with "ci_build_artifacts.zip"1967 #dynamic_segment1968 when a job artifact is stored in legacy_path1969 behaves like Read file from legacy path1970 store_path returns the legacy path1971 has exactly the same content1972 when the artifact file is stored in hashed_path1973 behaves like Read file from hashed path1974 store_path returns hashed path1975 has exactly the same content1976 when file_location column is empty1977 behaves like Read file from hashed path1978 store_path returns hashed path1979 has exactly the same content1980 #migrate!1981 does not set Content-Type1982 behaves like migrates1983 returns corresponding file type1984 does nothing when migrating to the current store1985 migrate to the specified store1986 removes the original file after the migration1987 can access to the original file during migration1988 when migrate! is not occupied by another process1989 executes migrate!1990 executes use_file1991 when migrate! is occupied by another process1992 does not execute migrate!1993 does not execute use_file1994 migration is unsuccessful1995 when the store is not supported1996 does not update the object_store1997 does not delete the original file1998 upon a fog failure1999 does not update the object_store2000 does not delete the original file2001 upon a database failure2002 does not update the object_store2003 does not delete the original file2004 behaves like migrates2005 returns corresponding file type2006 does nothing when migrating to the current store2007 migrate to the specified store2008 removes the original file after the migration2009 can access to the original file during migration2010 when migrate! is not occupied by another process2011 executes migrate!2012 executes use_file2013 when migrate! is occupied by another process2014 does not execute migrate!2015 does not execute use_file2016 migration is unsuccessful2017 when the store is not supported2018 does not update the object_store2019 does not delete the original file2020 upon a fog failure2021 does not update the object_store2022 does not delete the original file2023 upon a database failure2024 does not update the object_store2025 does not delete the original file2026WikiPagePolicy2027 project_level: :public, feature_access_level: :enabled, membership: :admin, expected_count: 12028 grants permission2029 project_level: :public, feature_access_level: :enabled, membership: :reporter, expected_count: 12030 grants permission2031 project_level: :public, feature_access_level: :enabled, membership: :guest, expected_count: 12032 grants permission2033 project_level: :public, feature_access_level: :enabled, membership: :non_member, expected_count: 12034 grants permission2035 project_level: :public, feature_access_level: :enabled, membership: :anonymous, expected_count: 12036 grants permission2037 project_level: :public, feature_access_level: :private, membership: :admin, expected_count: 12038 grants permission2039 project_level: :public, feature_access_level: :private, membership: :reporter, expected_count: 12040 grants permission2041 project_level: :public, feature_access_level: :private, membership: :guest, expected_count: 12042 grants permission2043 project_level: :public, feature_access_level: :private, membership: :non_member, expected_count: 02044 grants permission2045 project_level: :public, feature_access_level: :private, membership: :anonymous, expected_count: 02046 grants permission2047 project_level: :public, feature_access_level: :disabled, membership: :reporter, expected_count: 02048 grants permission2049 project_level: :public, feature_access_level: :disabled, membership: :guest, expected_count: 02050 grants permission2051 project_level: :public, feature_access_level: :disabled, membership: :non_member, expected_count: 02052 grants permission2053 project_level: :public, feature_access_level: :disabled, membership: :anonymous, expected_count: 02054 grants permission2055 project_level: :internal, feature_access_level: :enabled, membership: :admin, expected_count: 12056 grants permission2057 project_level: :internal, feature_access_level: :enabled, membership: :reporter, expected_count: 12058 grants permission2059 project_level: :internal, feature_access_level: :enabled, membership: :guest, expected_count: 12060 grants permission2061 project_level: :internal, feature_access_level: :enabled, membership: :non_member, expected_count: 12062 grants permission2063 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, expected_count: 02064 grants permission2065 project_level: :internal, feature_access_level: :private, membership: :admin, expected_count: 12066 grants permission2067 project_level: :internal, feature_access_level: :private, membership: :reporter, expected_count: 12068 grants permission2069 project_level: :internal, feature_access_level: :private, membership: :guest, expected_count: 12070 grants permission2071 project_level: :internal, feature_access_level: :private, membership: :non_member, expected_count: 02072 grants permission2073 project_level: :internal, feature_access_level: :private, membership: :anonymous, expected_count: 02074 grants permission2075 project_level: :internal, feature_access_level: :disabled, membership: :reporter, expected_count: 02076 grants permission2077 project_level: :internal, feature_access_level: :disabled, membership: :guest, expected_count: 02078 grants permission2079 project_level: :internal, feature_access_level: :disabled, membership: :non_member, expected_count: 02080 grants permission2081 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, expected_count: 02082 grants permission2083 project_level: :private, feature_access_level: :private, membership: :admin, expected_count: 12084 grants permission2085 project_level: :private, feature_access_level: :private, membership: :reporter, expected_count: 12086 grants permission2087 project_level: :private, feature_access_level: :private, membership: :guest, expected_count: 12088 grants permission2089 project_level: :private, feature_access_level: :private, membership: :non_member, expected_count: 02090 grants permission2091 project_level: :private, feature_access_level: :private, membership: :anonymous, expected_count: 02092 grants permission2093 project_level: :private, feature_access_level: :disabled, membership: :reporter, expected_count: 02094 grants permission2095 project_level: :private, feature_access_level: :disabled, membership: :guest, expected_count: 02096 grants permission2097 project_level: :private, feature_access_level: :disabled, membership: :non_member, expected_count: 02098 grants permission2099 project_level: :private, feature_access_level: :disabled, membership: :anonymous, expected_count: 02100 grants permission2101MergeRequests::ReopenService2102 #execute2103 caches merge request closing issues2104 updates metrics2105 refreshes the number of open merge requests for a valid MR2106 behaves like cache counters invalidator2107 invalidates counter cache for assignees2108 valid params2109 is expected to be valid2110 is expected to be opened2111 executes hooks with reopen action2112 sends email to user2 about reopen of merge_request2113 note creation2114 when state event tracking is disabled2115 creates system note about merge_request reopen2116 when state event tracking is enabled2117 creates resource state event about merge_request reopen2118 current user is not authorized to reopen merge request2119 does not reopen the merge request2120StageEntity2121 #as_json2122 contains relevant fields2123 contains detailed status2124 contains valid name2125 contains path to the stage2126 contains path to the stage dropdown2127 contains stage title2128 does not contain play_details info2129 when the jobs should be grouped2130 exposes the group key2131 and contains commit status2132 contains commit status2133 with a skipped stage2134 contains play_all_manual2135 with a scheduled stage2136 contains play_all_manual2137 with a manual stage2138 contains play_all_manual2139Gitlab::LegacyGithubImport::PullRequestFormatter2140 when importing a GitHub project2141 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#attributes2142 when pull request is open2143 returns formatted attributes2144 when pull request is closed2145 returns formatted attributes2146 when pull request is merged2147 returns formatted attributes2148 when it is assigned to someone2149 returns nil as assignee_id when is not a GitLab user2150 returns GitLab user id associated with GitHub id as assignee_id2151 returns GitLab user id associated with GitHub email as assignee_id2152 when author is a GitLab user2153 returns project creator_id as author_id when is not a GitLab user2154 returns GitLab user id associated with GitHub id as author_id2155 returns GitLab user id associated with GitHub email as author_id2156 returns description without created at tag line2157 when it has a milestone2158 returns nil when milestone does not exist2159 returns milestone when it exists2160 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#number2161 returns pull request number2162 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#source_branch_name2163 when source branch exists2164 returns branch ref2165 when source branch does not exist2166 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision2167 when source branch is from a fork2168 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision2169 when source branch is from a deleted fork2170 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision2171 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#target_branch_name2172 when target branch exists2173 returns branch ref2174 when target branch does not exist2175 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision2176 when importing a Gitea project2177 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#attributes2178 when pull request is open2179 returns formatted attributes2180 when pull request is closed2181 returns formatted attributes2182 when pull request is merged2183 returns formatted attributes2184 when it is assigned to someone2185 returns nil as assignee_id when is not a GitLab user2186 returns GitLab user id associated with GitHub id as assignee_id2187 returns GitLab user id associated with GitHub email as assignee_id2188 when author is a GitLab user2189 returns project creator_id as author_id when is not a GitLab user2190 returns GitLab user id associated with GitHub id as author_id2191 returns GitLab user id associated with GitHub email as author_id2192 returns description without created at tag line2193 when it has a milestone2194 returns nil when milestone does not exist2195 returns milestone when it exists2196 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#number2197 returns pull request number2198 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#source_branch_name2199 when source branch exists2200 returns branch ref2201 when source branch does not exist2202 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision2203 when source branch is from a fork2204 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision2205 when source branch is from a deleted fork2206 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision2207 behaves like Gitlab::LegacyGithubImport::PullRequestFormatter#target_branch_name2208 when target branch exists2209 returns branch ref2210 when target branch does not exist2211 prefixes branch name with gh-:short_sha/:number/:user pattern to avoid collision2212 #valid?2213 when source, and target repos are not a fork2214 returns true2215 when source repo is a fork2216 returns true2217 when target repo is a fork2218 returns true2219 #cross_project?2220 when source and target repositories are different2221 returns true2222 when source repository does not exist anymore2223 returns true2224 when source and target repositories are the same2225 returns false2226 #source_branch_exists?2227 returns false when is a cross_project2228 #url2229 return raw url2230 #opened?2231 returns true when state is "open"2232Boards::Lists::UpdateService2233 #execute2234 when position parameter is present2235 for projects2236 behaves like moving list2237 when user can admin list2238 calls Lists::MoveService to update list position2239 when user cannot admin list2240 does not call Lists::MoveService to update list position2241 for groups2242 behaves like moving list2243 when user can admin list2244 calls Lists::MoveService to update list position2245 when user cannot admin list2246 does not call Lists::MoveService to update list position2247 when collapsed parameter is present2248 for projects2249 behaves like updating list preferences2250 when user can read list2251 updates list preference for user2252 when user cannot read list2253 does not update list preference for user2254 for groups2255 behaves like updating list preferences2256 when user can read list2257 updates list preference for user2258 when user cannot read list2259 does not update list preference for user2260 when position and collapsed are both present2261 for projects2262 behaves like moving list2263 when user can admin list2264 calls Lists::MoveService to update list position2265 when user cannot admin list2266 does not call Lists::MoveService to update list position2267 behaves like updating list preferences2268 when user can read list2269 updates list preference for user2270 when user cannot read list2271 does not update list preference for user2272 for groups2273 behaves like moving list2274 when user can admin list2275 calls Lists::MoveService to update list position2276 when user cannot admin list2277 does not call Lists::MoveService to update list position2278 behaves like updating list preferences2279 when user can read list2280 updates list preference for user2281 when user cannot read list2282 does not update list preference for user2283Gitlab::Ci::Status::External::Factory2284 when external status has a simple core status2285 when core status is created2286 fabricates a core status created2287 extends core status with common methods2288 when core status is waiting_for_resource2289 fabricates a core status waiting_for_resource2290 extends core status with common methods2291 when core status is preparing2292 fabricates a core status preparing2293 extends core status with common methods2294 when core status is pending2295 fabricates a core status pending2296 extends core status with common methods2297 when core status is running2298 fabricates a core status running2299 extends core status with common methods2300 when core status is success2301 fabricates a core status success2302 extends core status with common methods2303 when core status is failed2304 fabricates a core status failed2305 extends core status with common methods2306 when core status is canceled2307 fabricates a core status canceled2308 extends core status with common methods2309 when core status is skipped2310 fabricates a core status skipped2311 extends core status with common methods2312 when core status is manual2313 fabricates a core status manual2314 extends core status with common methods2315 when core status is scheduled2316 fabricates a core status scheduled2317 extends core status with common methods2318Projects::Serverless::FunctionsFinder2319 #knative_installed2320 when environment does not exist yet2321 when project level cluster is present and enabled2322 behaves like before first deployment2323 returns true if Knative is installed on cluster2324 returns false if Knative is not installed on cluster2325 when group level cluster is present and enabled2326 behaves like before first deployment2327 returns true if Knative is installed on cluster2328 returns false if Knative is not installed on cluster2329 when instance level cluster is present and enabled2330 behaves like before first deployment2331 returns true if Knative is installed on cluster2332 returns false if Knative is not installed on cluster2333 when project level cluster is present, but disabled2334 returns false even if Knative is installed on cluster2335 when reactive_caching is still fetching data2336 returns "checking"2337 when reactive_caching has finished2338 when knative is not installed2339 returns false2340 reactive_caching is finished and knative is installed2341 returns true2342 retrieve data from knative2343 does not have knative installed2344 is expected to be empty2345 has knative installed2346 there are no functions2347 there are functions2348 has a function2349 has metrics2350 has prometheus2351 is available2352 has query data2353Banzai::Filter::ProjectReferenceFilter2354 ignores invalid projects2355 allows references with text after the > character2356 ignores valid references contained inside 'pre' element2357 ignores valid references contained inside 'code' element2358 ignores valid references contained inside 'a' element2359 ignores valid references contained inside 'style' element2360 includes default classes2361 behaves like user reference or project reference2362 supports an :only_path context2363 mentioning a resource2364 links to a resource2365 links to a resource with a period2366 links to a resource with an underscore2367 links to a resource with different case-sensitivity2368 behaves like a reference containing an element node2369 does not escape inner html2370 behaves like it contains a data- attribute2371 includes a data- attribute2372 referencing a resource in a link href2373 links to the resource2374 links with adjacent text2375 behaves like it contains a data- attribute2376 includes a data- attribute2377 when invalid reference strings are very long2378 behaves like fails fast2379 fails fast for long strings2380 behaves like fails fast2381 fails fast for long strings2382 in group context2383 supports mentioning a project2384 supports mentioning a project in a nested group2385 #projects_hash2386 returns a Hash containing all Projects2387 #projects2388 returns the projects mentioned in a document2389Gitlab::Diff::FileCollection::MergeRequestDiffBatch2390 initialize2391 memoizes pagination_data2392 #diff_files2393 returns paginated diff files2394 returns a valid instance of a DiffCollection2395 first page2396 returns correct diff files2397 another page2398 returns correct diff files2399 nil batch_page2400 returns correct diff files2401 nil batch_size2402 returns correct diff files2403 invalid page2404 returns correct diff files2405 last page2406 returns correct diff files2407 behaves like unfoldable diff2408 calls Gitlab::Diff::File#unfold_diff_lines with correct position2409 behaves like diff statistics2410 when include_stats is true2411 Repository#diff_stats is called2412 Gitlab::Diff::File is initialized with diff stats2413 when should not request diff stats2414 Repository#diff_stats is not called2415 behaves like cacheable diff collection2416 #write_cache2417 calls Gitlab::Diff::HighlightCache#write_if_empty2418 calls Gitlab::Diff::StatsCache#write_if_empty with diff stats2419 #clear_cache2420 calls Gitlab::Diff::HighlightCache#clear2421 calls Gitlab::Diff::StatsCache#clear2422 #diff_files2423 calls Gitlab::Diff::HighlightCache#decorate2424 when there are stats cached2425 does not make a diff stats rpc call2426 when there are no stats cached2427 makes a diff stats rpc call2428EventCreateService2429 Issues2430 #open_issue2431 is expected to be truthy2432 creates new event2433 #close_issue2434 is expected to be truthy2435 creates new event2436 #reopen_issue2437 is expected to be truthy2438 creates new event2439 Merge Requests2440 #open_mr2441 is expected to be truthy2442 creates new event2443 #close_mr2444 is expected to be truthy2445 creates new event2446 #merge_mr2447 is expected to be truthy2448 creates new event2449 #reopen_mr2450 is expected to be truthy2451 creates new event2452 #approve_mr2453 is expected to be truthy2454 creates new event2455 Milestone2456 #open_milestone2457 is expected to be truthy2458 creates new event2459 #close_mr2460 is expected to be truthy2461 creates new event2462 #destroy_mr2463 is expected to be truthy2464 creates new event2465 #wiki_event2466 action: :created2467 creates the event2468 is idempotent2469 records the event in the event counter2470 action: :updated2471 creates the event2472 is idempotent2473 records the event in the event counter2474 action: :destroyed2475 creates the event2476 is idempotent2477 records the event in the event counter2478 The action is created2479 raises an error2480 The action is updated2481 raises an error2482 The action is closed2483 raises an error2484 The action is reopened2485 raises an error2486 The action is pushed2487 raises an error2488 The action is commented2489 raises an error2490 The action is merged2491 raises an error2492 The action is joined2493 raises an error2494 The action is left2495 raises an error2496 The action is destroyed2497 raises an error2498 The action is expired2499 raises an error2500 The action is approved2501 raises an error2502 The action is archived2503 raises an error2504 #push2505 records the event in the event counter2506 behaves like service for creating a push event2507 creates a new event2508 creates the push event payload2509 updates user last activity2510 caches the last push event for the user2511 does not create any event data when an error is raised2512 #bulk_push2513 records the event in the event counter2514 behaves like service for creating a push event2515 creates a new event2516 creates the push event payload2517 updates user last activity2518 caches the last push event for the user2519 does not create any event data when an error is raised2520 Project2521 #join_project2522 is expected to be truthy2523 is expected to change `Event.count` from 0 to 12524 #expired_leave_project2525 is expected to be truthy2526 is expected to change `Event.count` from 0 to 12527 design events2528 #save_designs2529 is expected to change `Event.count` by 82530 is expected not to exceed query limit 12531 creates 3 created design events2532 creates 5 created design events2533 records the event in the event counter2534 #destroy_designs2535 is expected to change `Event.count` by 52536 is expected not to exceed query limit 12537 creates 5 destroyed design events2538 records the event in the event counter2539Banzai::ReferenceParser::IssueParser2540 #nodes_visible_to_user2541 when the link has a data-issue attribute2542 returns the nodes when the user can read the issue2543 returns an empty Array when the user can not read the issue2544 behaves like referenced feature visibility2545 when feature is disabled2546 does not create reference2547 when feature is enabled only for team members2548 does not create reference for non member2549 creates reference for member2550 when feature is enabled2551 creates reference2552 when the user cannot read cross project2553 returns the nodes when the user can read the issue2554 returns an empty Array when the user can not read the issue2555 when the issue is not cross project2556 does not check `can_read_reference` if the issue is not cross project2557 when the link does not have a data-issue attribute2558 returns an empty Array2559 #referenced_by2560 when the link has a data-issue attribute2561 using an existing issue ID2562 returns an Array of issues2563 returns an empty Array when the list of nodes is empty2564 when issue with given ID does not exist2565 returns an empty Array2566 #records_for_nodes2567 returns a Hash containing the issues for a list of nodes2568 when checking multiple merge requests on another project2569 behaves like no N+1 queries2570 avoids N+1 queries in #records_for_nodes2571 behaves like no project N+1 queries2572 avoids N+1 queries in #nodes_visible_to_user2573Gitlab::Ci::Status::Build::Play2574 #label2575 has a label that says it is a manual action2576 #status_tooltip2577 does not override status status_tooltip2578 #badge_tooltip2579 does not override status badge_tooltip2580 #has_action?2581 when user is allowed to update build2582 when user is allowed to trigger protected action2583 is expected to have action2584 when user can not push to the branch2585 is expected not to have action2586 when user is not allowed to update build2587 is expected not to have action2588 #action_path2589 is expected to include "139/play"2590 #action_icon2591 is expected to eq "play"2592 #action_title2593 is expected to eq "Play"2594 #action_button_title2595 is expected to eq "Trigger this manual action"2596 .matches?2597 when build is playable2598 when build stops an environment2599 does not match2600 when build does not stop an environment2601 is a correct match2602 when build is not playable2603 does not match2604Snippets::BulkDestroyService2605 #execute2606 deletes the snippets in bulk2607 when snippets is empty2608 returns a ServiceResponse success response2609 when user does not have access to remove the snippet2610 behaves like error is raised2611 returns error2612 no record is deleted2613 when hard_delete option is passed2614 returns a ServiceResponse success response2615 deletes all the snippets that belong to the user2616 when an error is raised deleting the repository2617 tries to rollback the repository2618 behaves like error is raised2619 returns error2620 no record is deleted2621 when an error is raised deleting the records2622 tries to rollback the repository2623 behaves like error is raised2624 returns error2625 no record is deleted2626 when snippet does not have a repository attached2627 does not schedule anything for the snippet without repository and return success2628 #attempt_rollback_repositories2629 rollbacks the repository2630 when an error is raised2631 logs the error2632Packages::PackageFile2633 relationships2634 is expected to belong to package required:2635 is expected to have one conan_file_metadatum2636 validations2637 is expected to validate that :package cannot be empty/falsy2638 with package filenames2639 .with_file_name2640 is expected to contain exactly #<Packages::PackageFile id: 1, package_id: 1, created_at: "2020-08-29 16:39:56", updated_at: "2020-08...ified_at: nil, verification_failure: nil, verification_retry_count: nil, verification_checksum: nil>2641 .with_file_name_like2642 is expected to contain exactly #<Packages::PackageFile id: 1, package_id: 1, created_at: "2020-08-29 16:39:56", updated_at: "2020-08...ified_at: nil, verification_failure: nil, verification_retry_count: nil, verification_checksum: nil>2643 updating project statistics2644 when the package file has an explicit size2645 behaves like UpdateProjectStatistics2646 is expected to be a new record2647 when creating2648 updates the project statistics2649 schedules a namespace statistics worker2650 when updating2651 updates project statistics2652 schedules a namespace statistics worker2653 avoids N + 1 queries2654 when destroying2655 updates the project statistics2656 schedules a namespace statistics worker2657 when it is destroyed from the project level2658 does not update the project statistics2659 does not schedule a namespace statistics worker2660 when the package file does not have a size2661 behaves like UpdateProjectStatistics2662 is expected to be a new record2663 when creating2664 updates the project statistics2665 schedules a namespace statistics worker2666 when updating2667 updates project statistics2668 schedules a namespace statistics worker2669 avoids N + 1 queries2670 when destroying2671 updates the project statistics2672 schedules a namespace statistics worker2673 when it is destroyed from the project level2674 does not update the project statistics2675 does not schedule a namespace statistics worker2676 .with_conan_package_reference2677 returns matching packages2678 #update_file_metadata callback2679 updates metadata columns2680Gitlab::Search::FoundBlob2681 parsing content results2682 returns a valid FoundBlob2683 does not parse content if not needed2684 parses content only once when needed2685 when the matching filename contains a colon2686 returns a valid FoundBlob2687 when the matching content contains a number surrounded by colons2688 returns a valid FoundBlob2689 when the matching content contains multiple null bytes2690 returns a valid FoundBlob2691 when the search result ends with an empty line2692 returns a valid FoundBlob that ends with an empty line2693 when the search returns non-ASCII data2694 with UTF-82695 returns results as UTF-82696 with UTF-8 in the filename2697 returns results as UTF-82698 with ISO-8859-12699 returns results as UTF-82700 when filename has extension2701 is expected to eq "CONTRIBUTE.md"2702 is expected to eq "CONTRIBUTE"2703 when file is under directory2704 is expected to eq "a/b/c.md"2705 is expected to eq "a/b/c"2706 parsing title results2707 when file is under directory2708 is expected to eq "a/b/c.md"2709 is expected to eq "a/b/c"2710 when filename has multiple extensions2711 is expected to eq "a/b/c.whatever"2712 policy2713 works with policy2714Gitlab::Ci::YamlProcessor2715 #build_attributes2716 attributes list2717 returns valid build attributes2718 with job rules2719 returns valid build attributes2720 coverage entry2721 code coverage regexp2722 includes coverage regexp in build attributes2723 tags entry with default values2724 applies default values2725 interruptible entry2726 returns interruptible when overridden for job2727 interruptible job2728 is expected to be truthy2729 interruptible job with default value2730 is expected not to have key :interruptible2731 uninterruptible job2732 is expected to be falsy2733 retry entry2734 when retry count is specified2735 includes retry count in build options attribute2736 when retry count is not specified2737 does not persist retry count in the database2738 when retry count is specified by default2739 does use the default value2740 when retry count default value is overridden2741 does use the job value2742 allow failure entry2743 when job is a manual action2744 when allow_failure is defined2745 is not allowed to fail2746 when allow_failure is not defined2747 is allowed to fail2748 when job is not a manual action2749 when allow_failure is defined2750 is not allowed to fail2751 when allow_failure is not defined2752 is not allowed to fail2753 delayed job entry2754 when delayed is defined2755 has the attributes2756 resource group2757 when resource group is defined2758 has the attributes2759 #stages_attributes2760 returns stages seed attributes2761 #workflow_attributes2762 with disallowed workflow:variables2763 behaves like returns errors2764 raises exception when error encountered2765 with rules and variables2766 parses the workflow:rules configuration2767 parses the root:variables as yaml_variables:2768 with rules and no variables2769 parses the workflow:rules configuration2770 parses the root:variables as yaml_variables:2771 with variables and no rules2772 parses the workflow:rules configuration2773 parses the root:variables as yaml_variables:2774 with no rules and no variables2775 parses the workflow:rules configuration2776 parses the root:variables as yaml_variables:2777 #warnings2778 when a warning is raised in a given entry2779 is propagated all the way up to the processor2780 when a warning is raised together with errors2781 is propagated all the way up into the raised exception2782 behaves like returns errors2783 raises exception when error encountered2784 when error is raised before composing the config2785 raises an exception with empty warnings array2786 behaves like returns errors2787 raises exception when error encountered2788 when error is raised after composing the config with warnings2789 when stage does not exist2790 behaves like has warnings and expected error2791 raises an exception including warnings2792 job dependency does not exist2793 behaves like has warnings and expected error2794 raises an exception including warnings2795 job dependency defined in later stage2796 behaves like has warnings and expected error2797 raises an exception including warnings2798 when feature flag is disabled2799 job rules used without workflow rules2800 does not raise the warning2801 only / except policies validations2802 when `only` has an invalid value2803 when it is integer2804 behaves like returns errors2805 raises exception when error encountered2806 when it is an array of integers2807 behaves like returns errors2808 raises exception when error encountered2809 when it is invalid regex2810 behaves like returns errors2811 raises exception when error encountered2812 when `except` has an invalid value2813 when it is integer2814 behaves like returns errors2815 raises exception when error encountered2816 when it is an array of integers2817 behaves like returns errors2818 raises exception when error encountered2819 when it is invalid regex2820 behaves like returns errors2821 raises exception when error encountered2822 Scripts handling2823 before_script2824 in global context2825 inherit: nil, result: ["global script"]2826 is expected to eq ["global script"]2827 inherit: {:default=>false}, result: nil2828 is expected to eq nil2829 inherit: {:default=>true}, result: ["global script"]2830 is expected to eq ["global script"]2831 inherit: {:default=>["before_script"]}, result: ["global script"]2832 is expected to eq ["global script"]2833 inherit: {:default=>["image"]}, result: nil2834 is expected to eq nil2835 in default context2836 inherit: nil, result: ["global script"]2837 is expected to eq ["global script"]2838 inherit: {:default=>false}, result: nil2839 is expected to eq nil2840 inherit: {:default=>true}, result: ["global script"]2841 is expected to eq ["global script"]2842 inherit: {:default=>["before_script"]}, result: ["global script"]2843 is expected to eq ["global script"]2844 inherit: {:default=>["image"]}, result: nil2845 is expected to eq nil2846 overwritten in local context2847 return commands with scripts concatenated2848 when script is array of arrays of strings2849 return commands with scripts concatenated2850 script2851 when script is array of strings2852 return commands with scripts concatenated2853 when script is array of arrays of strings2854 return commands with scripts concatenated2855 after_script2856 in global context2857 return after_script in options2858 in default context2859 return after_script in options2860 overwritten in local context2861 return after_script in options2862 when script is array of arrays of strings2863 return after_script in options2864 Image and service handling2865 when extended docker configuration is used2866 returns image and service when defined2867 returns image and service when overridden for job2868 when etended docker configuration is not used2869 returns image and service when defined2870 returns image and service when overridden for job2871 Variables2872 when global variables are defined2873 returns global variables2874 when job and global variables are defined2875 when no inheritance is specified2876 returns all unique variables2877 when inheritance is disabled2878 does not inherit variables2879 when specific variables are to inherited2880 returns all unique variables and inherits only specified variables2881 when job variables are defined2882 when syntax is correct2883 returns job variables2884 when syntax is incorrect2885 when variables defined but invalid2886 behaves like returns errors2887 raises exception when error encountered2888 when variables key defined but value not specified2889 returns empty array2890 when job variables are not defined2891 returns empty array2892 when using `extends`2893 when using simple `extends`2894 correctly extends rspec job2895 when using recursive `extends`2896 correctly extends rspec job2897 Include2898 when validating a ci config file with no project context2899 when a single string is provided2900 returns a validation error2901 when an array is provided2902 behaves like returns errors2903 raises exception when error encountered2904 when an array of wrong keyed object is provided2905 behaves like returns errors2906 raises exception when error encountered2907 when an array of mixed typed objects is provided2908 does not return any error2909 when the include type is incorrect2910 behaves like returns errors2911 raises exception when error encountered2912 when validating a ci config file within a project2913 when the included internal file is present2914 does not return an error2915 when the included internal file is not present2916 behaves like returns errors2917 raises exception when error encountered2918 when:2919 on_success creates one build and sets when:2920 on_failure creates one build and sets when:2921 always creates one build and sets when:2922 manual creates one build and sets when:2923 delayed2924 with start_in2925 creates one build and sets when:2926 without start_in2927 behaves like returns errors2928 raises exception when error encountered2929 Parallel2930 when job is parallelized2931 returns parallelized jobs2932 does not have the original job2933 with build matrix2934 returns the number of parallelized jobs2935 returns the parallel config2936 sets matrix variables2937 does not have the original job2938 cache2939 returns cache when defined globally2940 returns cache when defined in default context2941 returns cache key when defined in a job2942 returns cache files2943 returns cache files with prefix2944 overwrite cache when defined for a job and globally2945 when cache definition has unknown keys2946 behaves like returns errors2947 raises exception when error encountered2948 Artifacts2949 returns artifacts when defined2950 returns artifacts with expire_in never keyword2951 returns artifacts for when on_success defined2952 returns artifacts for when on_failure defined2953 returns artifacts for when always defined2954 populates a build options with complete artifacts configuration2955 when artifacts syntax is wrong2956 behaves like returns errors2957 raises exception when error encountered2958 release2959 returns release info2960 #environment2961 when a production environment is specified2962 does return production2963 when hash is specified2964 does return production and URL2965 the url has a port as variable2966 allows a variable for the port2967 when no environment is specified2968 does return nil environment2969 is not a string2970 behaves like returns errors2971 raises exception when error encountered2972 is not a valid string2973 behaves like returns errors2974 raises exception when error encountered2975 when on_stop is specified2976 with matching job2977 does return a list of builds2978 without matching job2979 behaves like returns errors2980 raises exception when error encountered2981 with close job without environment2982 behaves like returns errors2983 raises exception when error encountered2984 with close job for different environment2985 behaves like returns errors2986 raises exception when error encountered2987 with close job without stop action2988 behaves like returns errors2989 raises exception when error encountered2990 Timeout2991 when no timeout was provided2992 does not include job_timeout2993 when an invalid timeout was provided2994 behaves like returns errors2995 raises exception when error encountered2996 when some valid timeout was provided2997 returns provided timeout value2998 Dependencies2999 no dependencies3000 is expected not to raise Exception3001 dependencies to builds3002 is expected not to raise Exception3003 dependencies to builds defined as symbols3004 is expected not to raise Exception3005 undefined dependency3006 behaves like returns errors3007 raises exception when error encountered3008 dependencies to deploy3009 behaves like returns errors3010 raises exception when error encountered3011 when a job depends on another job that references a not-yet defined stage3012 behaves like returns errors3013 raises exception when error encountered3014 Job Needs3015 no needs3016 is expected not to raise Exception3017 needs two builds3018 does create jobs with valid specification3019 needs two builds3020 does create jobs with valid specification3021 needs parallel job3022 does create jobs with valid specification3023 needs dependencies artifacts3024 does create jobs with valid specification3025 undefined need3026 behaves like returns errors3027 raises exception when error encountered3028 needs to deploy3029 behaves like returns errors3030 raises exception when error encountered3031 needs and dependencies that are mismatching3032 behaves like returns errors3033 raises exception when error encountered3034 needs with a Hash type and dependencies with a string type that are mismatching3035 behaves like returns errors3036 raises exception when error encountered3037 needs with an array type and dependency with a string type3038 behaves like returns errors3039 raises exception when error encountered3040 needs with a string type and dependency with an array type3041 behaves like returns errors3042 raises exception when error encountered3043 needs with a Hash type and dependency with a string type3044 behaves like returns errors3045 raises exception when error encountered3046 with when/rules conflict3047 raises no exceptions3048 returns all jobs regardless of their inclusion3049 used with job-level when3050 behaves like returns errors3051 raises exception when error encountered3052 used with job-level when:delayed3053 behaves like returns errors3054 raises exception when error encountered3055 Hidden jobs3056 when hidden job have a script definition3057 behaves like hidden_job_handling3058 doesn't create jobs that start with dot3059 when hidden job doesn't have a script definition3060 behaves like hidden_job_handling3061 doesn't create jobs that start with dot3062 YAML Alias/Anchor3063 when template is a job3064 behaves like job_templates_handling3065 is correctly supported for jobs3066 when template is a hidden job3067 behaves like job_templates_handling3068 is correctly supported for jobs3069 when job adds its own keys to a template definition3070 behaves like job_templates_handling3071 is correctly supported for jobs3072 with parent-child pipeline3073 when artifact and job are specified3074 is expected not to raise Exception3075 when job is not specified specified while artifact is3076 is expected to raise Gitlab::Ci::YamlProcessor::ValidationError with message matching /include config must specify the job where to fetch the artifact from/3077 when include is a string3078 is expected not to raise Exception3079 Error handling3080 when YAML syntax is invalid3081 behaves like returns errors3082 raises exception when error encountered3083 when object is invalid3084 behaves like returns errors3085 raises exception when error encountered3086 returns errors if tags parameter is invalid3087 behaves like returns errors3088 raises exception when error encountered3089 returns errors if before_script parameter is invalid3090 behaves like returns errors3091 raises exception when error encountered3092 returns errors if job before_script parameter is not an array of strings3093 behaves like returns errors3094 raises exception when error encountered3095 returns errors if job before_script parameter is multi-level nested array of strings3096 behaves like returns errors3097 raises exception when error encountered3098 returns errors if after_script parameter is invalid3099 behaves like returns errors3100 raises exception when error encountered3101 returns errors if job after_script parameter is not an array of strings3102 behaves like returns errors3103 raises exception when error encountered3104 returns errors if job after_script parameter is multi-level nested array of strings3105 behaves like returns errors3106 raises exception when error encountered3107 returns errors if image parameter is invalid3108 behaves like returns errors3109 raises exception when error encountered3110 returns errors if job name is blank3111 behaves like returns errors3112 raises exception when error encountered3113 returns errors if job name is non-string3114 behaves like returns errors3115 raises exception when error encountered3116 returns errors if job image parameter is invalid3117 behaves like returns errors3118 raises exception when error encountered3119 returns errors if services parameter is not an array3120 behaves like returns errors3121 raises exception when error encountered3122 returns errors if services parameter is not an array of strings3123 behaves like returns errors3124 raises exception when error encountered3125 returns errors if job services parameter is not an array3126 behaves like returns errors3127 raises exception when error encountered3128 returns errors if job services parameter is not an array of strings3129 behaves like returns errors3130 raises exception when error encountered3131 returns error if job configuration is invalid3132 behaves like returns errors3133 raises exception when error encountered3134 returns errors if services configuration is not correct3135 behaves like returns errors3136 raises exception when error encountered3137 returns errors if there are no jobs defined3138 behaves like returns errors3139 raises exception when error encountered3140 returns errors if the job script is not defined3141 behaves like returns errors3142 raises exception when error encountered3143 returns errors if there are no visible jobs defined3144 behaves like returns errors3145 raises exception when error encountered3146 returns errors if job allow_failure parameter is not an boolean3147 behaves like returns errors3148 raises exception when error encountered3149 returns errors if job stage is not a string3150 behaves like returns errors3151 raises exception when error encountered3152 returns errors if job stage is not a pre-defined stage3153 behaves like returns errors3154 raises exception when error encountered3155 returns errors if job stage is not a defined stage3156 behaves like returns errors3157 raises exception when error encountered3158 returns errors if stages is not an array3159 behaves like returns errors3160 raises exception when error encountered3161 returns errors if stages is not an array of strings3162 behaves like returns errors3163 raises exception when error encountered3164 returns errors if variables is not a map3165 behaves like returns errors3166 raises exception when error encountered3167 returns errors if variables is not a map of key-value strings3168 behaves like returns errors3169 raises exception when error encountered3170 returns errors if job when is not on_success, on_failure or always3171 behaves like returns errors3172 raises exception when error encountered3173 returns errors if job artifacts:name is not an a string3174 behaves like returns errors3175 raises exception when error encountered3176 returns errors if job artifacts:when is not an a predefined value3177 behaves like returns errors3178 raises exception when error encountered3179 returns errors if job artifacts:expire_in is not an a string3180 behaves like returns errors3181 raises exception when error encountered3182 returns errors if job artifacts:expire_in is not an a valid duration3183 behaves like returns errors3184 raises exception when error encountered3185 returns errors if job artifacts:untracked is not an array of strings3186 behaves like returns errors3187 raises exception when error encountered3188 returns errors if job artifacts:paths is not an array of strings3189 behaves like returns errors3190 raises exception when error encountered3191 returns errors if cache:untracked is not an array of strings3192 behaves like returns errors3193 raises exception when error encountered3194 returns errors if cache:paths is not an array of strings3195 behaves like returns errors3196 raises exception when error encountered3197 returns errors if cache:key is not a string3198 behaves like returns errors3199 raises exception when error encountered3200 returns errors if job cache:key is not an a string3201 behaves like returns errors3202 raises exception when error encountered3203 returns errors if job cache:key:files is not an array of strings3204 behaves like returns errors3205 raises exception when error encountered3206 returns errors if job cache:key:files is an empty array3207 behaves like returns errors3208 raises exception when error encountered3209 returns errors if job defines only cache:key:prefix3210 behaves like returns errors3211 raises exception when error encountered3212 returns errors if job cache:key:prefix is not an a string3213 behaves like returns errors3214 raises exception when error encountered3215 returns errors if job cache:untracked is not an array of strings3216 behaves like returns errors3217 raises exception when error encountered3218 returns errors if job cache:paths is not an array of strings3219 behaves like returns errors3220 raises exception when error encountered3221 returns errors if job dependencies is not an array of strings3222 behaves like returns errors3223 raises exception when error encountered3224 returns errors if pipeline variables expression policy is invalid3225 behaves like returns errors3226 raises exception when error encountered3227 returns errors if pipeline changes policy is invalid3228 behaves like returns errors3229 raises exception when error encountered3230 returns errors if extended hash configuration is invalid3231 behaves like returns errors3232 raises exception when error encountered3233 returns errors if parallel is invalid3234 behaves like returns errors3235 raises exception when error encountered3236 #validation_message3237 when the YAML could not be parsed3238 is expected to eq "Invalid configuration format"3239 when the tags parameter is invalid3240 is expected to eq "jobs:rspec:tags config should be an array of strings"3241 when YAML content is empty3242 is expected to eq "Please provide content of .gitlab-ci.yml"3243 when the YAML contains an unknown alias3244 is expected to eq "Unknown alias: bad_alias"3245 when the YAML is valid3246 is expected to be nil3247 .new_with_validation_errors3248 when the YAML could not be parsed3249 returns errors and empty configuration3250 when the tags parameter is invalid3251 returns errors and empty configuration3252 when the configuration contains multiple keyword-syntax errors3253 returns errors and empty configuration3254 when YAML content is empty3255 returns errors and empty configuration3256 when the YAML contains an unknown alias3257 returns errors and empty configuration3258 when the YAML is valid3259 returns errors and empty configuration3260DesignManagement::Design3261 behaves like a class that supports relative positioning3262 .move_nulls_to_end3263 moves items with null relative_position to the end3264 preserves relative position3265 moves the item near the start position when there are no existing positions3266 does not perform any moves if all items have their relative_position set3267 manages to move nulls to the end even if there is a sequence at the end3268 manages to move nulls to the end even if there is not enough space3269 manages to move nulls to the end, stacking if we cannot create enough space3270 does not have an N+1 issue3271 .move_nulls_to_start3272 moves items with null relative_position to the start3273 moves the item near the start position when there are no existing positions3274 preserves relative position3275 does not perform any moves if all items have their relative_position set3276 manages to move nulls to the start even if there is not enough space3277 manages to move nulls to the end, stacking if we cannot create enough space3278 #max_relative_position3279 returns maximum position3280 #prev_relative_position3281 returns previous position if there is an item above3282 returns nil if there is no item above3283 #next_relative_position3284 returns next position if there is an item below3285 returns nil if there is no item below3286 #find_next_gap_before3287 is expected to be between -2147483648 and 2147483647 (inclusive)3288 deals with there not being any items to the left3289 finds the next gap to the left, skipping adjacent values3290 finds the next gap to the left3291 there is no gap3292 returns nil3293 there is a sequence ending at MAX_POSITION3294 can find the gap at the start for any item in the sequence3295 respects lower bounds3296 #find_next_gap_after3297 is expected to be between -2147483648 and 2147483647 (inclusive)3298 deals with there not being any items to the right3299 finds the next gap to the right, skipping adjacent values3300 finds the next gap to the right3301 there is no gap3302 returns nil3303 there is a sequence starting at MIN_POSITION3304 can find the gap at the end for any item in the sequence3305 respects upper bounds3306 #move_before3307 moves item before3308 can move the item before an item at the start3309 can move the item before an item at MIN_POSITION3310 can move the item before an item bunched up at MIN_POSITION3311 when there is no space3312 moves items correctly3313 leap-frogging to the left3314 can leap-frog STEPS - 1 times before needing to rebalance3315 rebalances after leap-frogging STEPS times3316 #move_after3317 moves item after3318 can move the item after an item bunched up at MAX_POSITION3319 when there is no space3320 can move the item after an item at MAX_POSITION3321 moves items correctly3322 leap-frogging3323 can leap-frog STEPS times before needing to rebalance3324 rebalances after leap-frogging STEPS+1 times3325 #move_to_start3326 moves item to the end3327 positions the item at MIN_POSITION when there is only one space left3328 rebalances when there is already an item at the MIN_POSITION3329 deals with a run of elements at the start3330 #move_to_end3331 moves item to the end3332 positions the item at MAX_POSITION when there is only one space left3333 rebalances when there is already an item at the MAX_POSITION3334 deals with a run of elements at the end3335 #move_between3336 positions item between two other3337 positions item between on top3338 positions item between to end3339 positions items even when after and before positions are the same3340 positions item in the middle of other two if distance is big enough3341 positions item closer to the middle if we are at the very top3342 positions item closer to the middle if we are at the very bottom3343 positions item in the middle of other two3344 positions item right if we pass non-sequential parameters3345 avoids N+1 queries when rebalancing other items3346 the two items are next to each other3347 behaves like moves item between3348 moves the middle item to between left and right3349 there is no space3350 behaves like moves item between3351 moves the middle item to between left and right3352 there is a bunch of items3353 handles bunches correctly3354 behaves like moves item between3355 moves the middle item to between left and right3356 #move_sequence_before3357 moves the whole sequence of items to the middle of the nearest gap3358 raises an error if there is no space3359 finds a gap if there are unused positions3360 #move_sequence_after3361 moves the whole sequence of items to the middle of the nearest gap3362 finds a gap if there are unused positions3363 raises an error if there is no space3364 relations3365 is expected to belong to project required:3366 is expected to belong to issue required:3367 is expected to have many actions3368 is expected to have many versions3369 is expected to have many notes dependent => delete_all3370 is expected to have many user_mentions3371 validations3372 is expected to be valid3373 is expected to validate that :project cannot be empty/falsy3374 is expected to validate that :issue cannot be empty/falsy3375 is expected to validate that :filename cannot be empty/falsy3376 is expected to validate that the length of :filename is at most 2553377 is expected to validate that :filename is case-sensitively unique within the scope of :issue_id3378 validates that the extension is an image3379 validating files with .svg extension3380 allows .svg files when feature flag is enabled3381 does not allow .svg files when feature flag is disabled3382 scopes3383 .visible_at_version3384 at oldest version3385 finds the first design only3386 at version 23387 finds the first and second designs3388 at latest version3389 finds designs3390 when the argument is nil3391 finds all undeleted designs3392 one of the designs was deleted before the given version3393 is not returned3394 a re-created history3395 is returned, though other deleted events are not3396 dead or alive3397 can establish the history at any point3398 .ordered3399 sorts by relative position and ID in ascending order3400 when the :reorder_designs feature is enabled for the project3401 sorts by relative position and ID in ascending order3402 when the :reorder_designs feature is disabled3403 sorts by ID in ascending order3404 .in_creation_order3405 sorts by ID in ascending order3406 .with_filename3407 returns correct design when passed a single filename3408 returns correct designs when passed an Array of filenames3409 .on_issue3410 returns correct designs when passed a single issue3411 returns correct designs when passed an Array of issues3412 .current3413 returns just the undeleted designs3414 #visible_in?3415 tells us when a design is visible3416 #to_ability_name3417 is expected to eq "design"3418 #status3419 the design is new3420 is expected to have attributes {:status => :new}3421 the design is current3422 is expected to have attributes {:status => :current}3423 the design has been deleted3424 is expected to have attributes {:status => :deleted}3425 #deleted?3426 the design is new3427 is falsy3428 the design is current3429 is falsy3430 the design has been deleted3431 is truthy3432 the design has been deleted, but was then re-created3433 is falsy3434 #new_design?3435 is false when there are versions3436 is true when there are no versions3437 is false for deleted designs3438 does not cause extra queries when actions are loaded3439 implicitly caches values3440 queries again when the clear_version_cache trigger has been called3441 causes a single query when there versions are not loaded3442 #full_path3443 builds the full path for a design3444 #diff_refs3445 has no diff ref if new3446 there are several versions3447 builds diff refs based on the first commit and it's for the design3448 there is just one version3449 builds diff refs based on the empty tree if there was only one version3450 #repository3451 is a design repository3452 #note_etag_key3453 returns a correct etag key3454 #user_notes_count3455 returns a count of user-generated notes3456 #after_note_changed3457 calls #delete_cache on DesignUserNotesCountService for non-system notes3458 .for_reference3459 avoids extra queries when calling to_reference3460 #to_reference3461 when nil argument3462 uses the simple format3463 when full is true3464 returns complete path to the issue3465 when full is false3466 returns complete path to the issue3467 when same project argument3468 returns bare reference3469 reference_pattern3470 is nil3471 link_reference_pattern3472 is not nil3473 does not match the designs tab3474 ext: "png"3475 matches the URL3476 the file needs to be encoded3477 extracts the encoded filename3478 the file is all upper case3479 extracts the encoded filename3480 ext: "PNG"3481 matches the URL3482 the file needs to be encoded3483 extracts the encoded filename3484 the file is all upper case3485 extracts the encoded filename3486 ext: "jpg"3487 matches the URL3488 the file needs to be encoded3489 extracts the encoded filename3490 the file is all upper case3491 extracts the encoded filename3492 ext: "JPG"3493 matches the URL3494 the file needs to be encoded3495 extracts the encoded filename3496 the file is all upper case3497 extracts the encoded filename3498 ext: "jpeg"3499 matches the URL3500 the file needs to be encoded3501 extracts the encoded filename3502 the file is all upper case3503 extracts the encoded filename3504 ext: "JPEG"3505 matches the URL3506 the file needs to be encoded3507 extracts the encoded filename3508 the file is all upper case3509 extracts the encoded filename3510 ext: "gif"3511 matches the URL3512 the file needs to be encoded3513 extracts the encoded filename3514 the file is all upper case3515 extracts the encoded filename3516 ext: "GIF"3517 matches the URL3518 the file needs to be encoded3519 extracts the encoded filename3520 the file is all upper case3521 extracts the encoded filename3522 ext: "bmp"3523 matches the URL3524 the file needs to be encoded3525 extracts the encoded filename3526 the file is all upper case3527 extracts the encoded filename3528 ext: "BMP"3529 matches the URL3530 the file needs to be encoded3531 extracts the encoded filename3532 the file is all upper case3533 extracts the encoded filename3534 ext: "tiff"3535 matches the URL3536 the file needs to be encoded3537 extracts the encoded filename3538 the file is all upper case3539 extracts the encoded filename3540 ext: "TIFF"3541 matches the URL3542 the file needs to be encoded3543 extracts the encoded filename3544 the file is all upper case3545 extracts the encoded filename3546 ext: "ico"3547 matches the URL3548 the file needs to be encoded3549 extracts the encoded filename3550 the file is all upper case3551 extracts the encoded filename3552 ext: "ICO"3553 matches the URL3554 the file needs to be encoded3555 extracts the encoded filename3556 the file is all upper case3557 extracts the encoded filename3558 ext: "svg"3559 matches the URL3560 the file needs to be encoded3561 extracts the encoded filename3562 the file is all upper case3563 extracts the encoded filename3564 ext: "SVG"3565 matches the URL3566 the file needs to be encoded3567 extracts the encoded filename3568 the file is all upper case3569 extracts the encoded filename3570 .by_issue_id_and_filename3571 behaves like a where_composite scope3572 we pass an empty array3573 returns a null relation3574 we pass nil3575 returns a null relation3576 we pass a singleton composite id3577 finds the first result3578 we pass group of ids3579 finds all the results3580 performance3581 is not O(N)3582 #immediately_before3583 is true when there is no element positioned between this item and the next3584 is false when there is an element positioned between this item and the next3585 is false when the next design is to the left of this design3586Clusters::Kubernetes::ConfigureIstioIngressService#execute3587 without a serverless_domain_cluster3588 configures gateway to use PASSTHROUGH3589 with a serverless_domain_cluster3590 configures certificates3591 configures gateway to use MUTUAL3592 when there is an error3593 Kubeclient::HttpError3594 puts Knative into an errored state3595 StandardError3596 puts Knative into an errored state3597projects/merge_requests/creations/_new_submit.html.haml3598 when there are pipelines for merge request but no pipeline for last commit3599 shows <<Pipelines>> tab and hides <<Builds>> tab3600 when there are hidden commits3601 shows notice about omitted commits3602Mutations::MergeRequests::SetLabels3603 is expected to require graphql authorizations :update_merge_request3604 #resolve3605 raises an error if the resource is not accessible to the user3606 when the user can update the merge request3607 sets the labels, removing all others3608 returns errors merge request could not be updated3609 when passing an empty array3610 removes all labels3611 when passing operation_mode as APPEND3612 sets the labels, without removing others3613 when passing operation_mode as REMOVE3614 removes the labels, without removing others3615Projects::UpdateRemoteMirrorService3616 #execute3617 ensures the remote exists3618 does not fetch the remote repository3619 marks the mirror as started when beginning3620 marks the mirror as successfully finished3621 marks the mirror as failed and raises the error when an unexpected error occurs3622 when the update fails because of a `Gitlab::Git::CommandError`3623 wraps `Gitlab::Git::CommandError`s in a service error3624 marks the mirror as to be retried3625 marks the mirror as failed after 3 tries3626 when there are divergent refs3627 marks the mirror as failed and sets an error message3628Packages::Npm::CreatePackageService3629 #execute3630 scoped package3631 behaves like valid package3632 creates a package3633 is expected to be valid3634 creates a package with name and version3635 is expected to eq "@namespace1306/my-app"3636 is expected to eq "1.0.1"3637 behaves like assigns build to package3638 with build info3639 assigns the pipeline to the package3640 invalid package name3641 is expected to raise ActiveRecord::RecordInvalid3642 package already exists3643 is expected to eq 4033644 is expected to equal "Package already exists."3645 file size above maximum limit3646 is expected to eq 4003647 is expected to equal "File is too large."3648 with incorrect namespace3649 raises a RecordInvalid error3650 with empty versions3651 is expected to eq 4003652 is expected to eq "Version is empty."3653 with invalid versions3654 version: "1"3655 is expected to raise ActiveRecord::RecordInvalid with "Validation failed: Version is invalid"3656 version: "1.2"3657 is expected to raise ActiveRecord::RecordInvalid with "Validation failed: Version is invalid"3658 version: "1./2.3"3659 is expected to raise ActiveRecord::RecordInvalid with "Validation failed: Version is invalid"3660 version: "../../../../../1.2.3"3661 is expected to raise ActiveRecord::RecordInvalid with "Validation failed: Version is invalid"3662 version: "%2e%2e%2f1.2.3"3663 is expected to raise ActiveRecord::RecordInvalid with "Validation failed: Version is invalid"3664Gitlab::Ci::Pipeline::Seed::Stage3665 #size3666 returns a number of jobs in the stage3667 #attributes3668 returns hash attributes of a stage3669 #included?3670 when it contains builds seeds3671 is expected to be included3672 when it does not contain build seeds3673 is expected not to be included3674 #seeds3675 returns build seeds3676 returns build seeds including valid attributes3677 filters seeds using only/except policies3678 when a legacy trigger exists3679 returns build seeds including legacy trigger3680 when a ref is protected3681 returns protected builds3682 when a ref is not protected3683 returns unprotected builds3684 #seeds_names3685 returns all job names3686 returns a set3687 #seeds_errors3688 returns all errors from seeds3689 #to_resource3690 builds a valid stage object with all builds3691 can not be persisted without explicit pipeline assignment3692Ci::ExternalPullRequests::CreatePipelineService3693 #execute3694 when pull request is open3695 when source sha is the head of the source branch3696 creates a pipeline for external pull request3697 when source sha is not the head of the source branch (force push upon rebase)3698 does nothing3699 when pull request is not opened3700 does nothing3701UserInteractedProject3702 is expected to validate that :project_id cannot be empty/falsy3703 is expected to validate that :user_id cannot be empty/falsy3704 .track3705 sets project accordingly3706 sets user accordingly3707 only creates a record once per user/project3708 for all actions (event types)3709 creates a record3710 for all actions (event types)3711 creates a record3712 for all actions (event types)3713 creates a record3714 for all actions (event types)3715 creates a record3716 for all actions (event types)3717 creates a record3718 for all actions (event types)3719 creates a record3720 for all actions (event types)3721 creates a record3722 for all actions (event types)3723 creates a record3724 for all actions (event types)3725 creates a record3726 for all actions (event types)3727 creates a record3728 for all actions (event types)3729 creates a record3730 for all actions (event types)3731 creates a record3732 for all actions (event types)3733 creates a record3734 with an event without a project3735 ignores the event3736Issuable::CommonSystemNotesService3737 on issuable update3738 behaves like system note creation3739 creates 1 system note with the correct content3740 behaves like system note creation3741 creates 1 system note with the correct content3742 behaves like system note creation3743 creates 1 system note with the correct content3744 behaves like system note creation3745 creates 1 system note with the correct content3746 when new label is added3747 creates a resource label event3748 when new milestone is assigned3749 behaves like system note creation3750 creates 1 system note with the correct content3751 with merge requests Draft note3752 adding Draft note3753 behaves like system note creation3754 creates 1 system note with the correct content3755 and changing title3756 behaves like draft notes creation3757 creates Draft toggle and title change notes3758 removing Draft note3759 behaves like system note creation3760 creates 1 system note with the correct content3761 and changing title3762 behaves like draft notes creation3763 creates Draft toggle and title change notes3764 on issuable create3765 does not create system note for title and description3766 creates a resource label event for labels added3767 creates a system note for due_date set3768 when milestone change event tracking is disabled3769 creates a system note for milestone set3770 does not create a milestone change event3771 when milestone change event tracking is enabled3772 does not create a system note for milestone set3773 creates a milestone change event3774Ci::PipelineSuccessUnlockArtifactsWorker3775 #perform3776 is labeled as idempotent3777 performs multiple times sequentially without raising an exception3778 unlocks the artifacts from older pipelines3779 when pipeline exists3780 when pipeline has artifacts3781 calls the service3782 when pipeline does not have artifacts3783 does not call service3784 when pipeline does not exist3785 does not call service3786ContainerRegistry::Path3787 #components3788 splits components by a forward slash3789 #nodes3790 when repository path is valid3791 return all project path like node in reverse order3792 when repository path is invalid3793 rasises en error3794 #to_s3795 when path does not have uppercase characters3796 return a string with a repository path3797 when path has uppercase characters3798 return a string with a repository path3799 #valid?3800 when path has less than two components3801 is expected not to be valid3802 when path has more than allowed number of components3803 is expected not to be valid3804 when path has invalid characters3805 is expected not to be valid3806 when path has two or more components3807 is expected to be valid3808 when path is related to multi-level image3809 is expected to be valid3810 when path contains uppercase letters3811 is expected to be valid3812 when path contains double underscore3813 is expected to be valid3814 when path contains invalid separator with dot3815 is expected not to be valid3816 when path contains invalid separator with underscore3817 is expected not to be valid3818 #has_repository?3819 when project exists3820 when path already has matching repository3821 is expected to have repository3822 is expected to have project3823 when path does not have matching repository3824 is expected not to have repository3825 is expected to have project3826 when project does not exist3827 is expected not to have repository3828 is expected not to have project3829 #repository_project3830 when project for given path exists3831 returns a correct project3832 when project for given path does not exist3833 returns nil3834 when matching multi-level path3835 when using the zero-level path3836 supports zero-level path3837 when using first-level path3838 supports first-level path3839 when using second-level path3840 supports second-level path3841 when using too deep nesting in the path3842 does not support three-levels of nesting3843 #repository_name3844 when project does not exist3845 returns nil3846 when project exists3847 when project path equal repository path3848 returns an empty string3849 when repository path has one additional level3850 returns a correct repository name3851 when repository path has two additional levels3852 returns a correct repository name3853 #project_path3854 when project does not exist3855 returns nil3856 when project with uppercase characters in path exists3857 returns downcased project path3858ContributedProjectsFinder3859 activity without a current user3860 is expected to contain exactly #<Project id:1426 namespace1383/project1400>>3861 activity with a current user3862 is expected to contain exactly #<Project id:1430 namespace1387/project1404>>, #<Project id:1431 namespace1388/project1405>>, and #<Project id:1429 namespace1386/project1403>>3863 user with private profile3864 does not return contributed projects3865Projects::HashedStorage::RollbackRepositoryService3866 #execute3867 works even when project validation fails3868 repository lock3869 tries to lock the repository3870 fails when a git operation is in progress3871 when repository doesnt exist on disk3872 skips the disk change but decrease the version3873 when succeeds3874 renames project, wiki and design repositories3875 updates project to be legacy and not read-only3876 move operation is called for both repositories3877 writes project full path to .git/config3878 when one move fails3879 rolls repositories back to original name3880 when rollback fails3881 does not try to move nil repository over existing3882ProjectFeaturesCompatibility3883 converts fields from 'true' to ProjectFeature::ENABLED3884 converts fields from 'false' to ProjectFeature::DISABLED3885 converts fields from true to ProjectFeature::ENABLED3886 converts fields from false to ProjectFeature::DISABLED3887 access levels3888 access_level: "disabled", expected_result: 03889 accepts access level3890 access_level: "private", expected_result: 103891 accepts access level3892 access_level: "enabled", expected_result: 203893 accepts access level3894 access_level: "public", expected_result: 303895 accepts access level3896Banzai::ReferenceRedactor3897 #redact3898 when reference not visible to user3899 redacts an array of documents3900 replaces redacted reference with inner HTML3901 when data-original attribute provided3902 replaces redacted reference with original content3903 does not replace redacted reference with original content if href is given3904 uses the original content as the link content if given3905 when project is in pending delete3906 redacts an issue attached3907 redacts an external issue3908 when reference visible to user3909 does not redact an array of documents3910 when the user cannot read cross project3911 skips links to issues within the same project3912 removes info from a cross project reference3913 #redact_nodes3914 redacts an Array of nodes3915 #nodes_visible_to_user3916 returns a Set containing the visible nodes3917Boards::ListService3918 #execute3919 when board parent is a project3920 behaves like boards list service3921 returns parent boards3922 when parent does not have a board3923 creates a new parent board3924 delegates the parent board creation to Boards::CreateService3925 when create_default_board is false3926 does not create a new parent board3927 when parent has a board3928 does not create a new board3929 behaves like multiple boards list service3930 #execute3931 returns all issue boards3932 returns boards ordered by name3933 when wanting a specific board3934 returns board specified by id3935 raises exception when board is not found3936 when board parent is a group3937 behaves like boards list service3938 returns parent boards3939 when parent does not have a board3940 creates a new parent board3941 delegates the parent board creation to Boards::CreateService3942 when create_default_board is false3943 does not create a new parent board3944 when parent has a board3945 does not create a new board3946Packages::Npm::CreateTagService3947 #execute3948 with no existing tag name3949 behaves like it creates the tag3950 is expected to change `Packages::Tag.count` by 13951 is expected to eq "test-tag"3952 adds tag to the package3953 with exisiting tag name3954 on package with different name3955 behaves like it creates the tag3956 is expected to change `Packages::Tag.count` by 13957 is expected to eq "test-tag"3958 adds tag to the package3959 on different package type3960 behaves like it creates the tag3961 is expected to change `Packages::Tag.count` by 13962 is expected to eq "test-tag"3963 adds tag to the package3964 on same package with different version3965 is expected to not change `Packages::Tag.count`3966 is expected to eq "test-tag"3967 adds tag to the package3968Releases::UpdateService3969 #execute3970 successfully updates an existing release3971 when the tag does not exists3972 behaves like a failed update3973 raises an error3974 when the release does not exist3975 behaves like a failed update3976 raises an error3977 when a milestone is passed in3978 a different milestone3979 updates the related milestone accordingly3980 an identical milestone3981 raises an error3982 when an 'empty' milestone is passed in3983 removes the old milestone and does not associate any new milestone3984 when multiple new milestones are passed in3985 removes the old milestone and update the release with the new ones3986Gitlab::Ci::Status::Stage::PlayManual3987 #action_icon3988 is expected to eq "play"3989 #action_button_title3990 is expected to eq "Play all manual"3991 #action_title3992 is expected to eq "Play all manual"3993 #action_path3994 is expected to eq "/namespace1456/project1473/-/pipelines/197/stages/test/play_manual"3995 #action_method3996 is expected to eq :post3997 .matches?3998 when stage is skipped3999 is expected to be truthy4000 when stage is manual4001 is expected to be truthy4002 when stage is scheduled4003 is expected to be truthy4004 when stage is success4005 and does not have manual builds4006 is expected to be falsy4007BambooService4008 Associations4009 is expected to belong to project required:4010 is expected to have one service_hook4011 Validations4012 when service is active4013 is expected to validate that :build_key cannot be empty/falsy4014 is expected to validate that :bamboo_url cannot be empty/falsy4015 behaves like issue tracker service URL attribute4016 is expected to allow :bamboo_url to be ‹"https://example.com"›4017 is expected not to allow :bamboo_url to be ‹"example.com"›4018 is expected not to allow :bamboo_url to be ‹"ftp://example.com"›4019 is expected not to allow :bamboo_url to be ‹"herp-and-derp"›4020 #username4021 does not validate the presence of username if password is nil4022 validates the presence of username if password is present4023 #password4024 does not validate the presence of password if username is nil4025 validates the presence of password if username is present4026 when service is inactive4027 is expected not to validate that :build_key cannot be empty/falsy4028 is expected not to validate that :bamboo_url cannot be empty/falsy4029 is expected not to validate that :username cannot be empty/falsy4030 is expected not to validate that :password cannot be empty/falsy4031 Callbacks4032 before_update :reset_password4033 saves password if new url is set together with password when no password was previously set4034 when a password was previously set4035 resets password if url changed4036 does not reset password if username changed4037 does not reset password if new url is set together with password, even if it's the same password4038 #execute4039 runs update and build action4040 #build_page4041 returns the contents of the reactive cache4042 #commit_status4043 returns the contents of the reactive cache4044 #calculate_reactive_cache4045 when Bamboo API returns single result4046 behaves like reactive cache calculation4047 #build_page4048 returns a specific URL when status is 5004049 returns a specific URL when response has no results4050 returns a build URL when bamboo_url has no trailing slash4051 bamboo_url has trailing slash4052 returns a build URL4053 #commit_status4054 sets commit status to :error when status is 5004055 sets commit status to "pending" when status is 4044056 sets commit status to "pending" when response has no results4057 sets commit status to "success" when build state contains Success4058 sets commit status to "failed" when build state contains Failed4059 sets commit status to "pending" when build state contains Pending4060 sets commit status to :error when build state is unknown4061 sets commit status to :error with a Net::OpenTimeout error4062 sets commit status to :error with a Net::ReadTimeout error4063 sets commit status to :error with a Net::WriteTimeout error4064 sets commit status to :error with a SocketError error4065 sets commit status to :error with a OpenSSL::SSL::SSLError error4066 sets commit status to :error with a OpenSSL::OpenSSLError error4067 sets commit status to :error with a Errno::ECONNRESET error4068 sets commit status to :error with a Errno::ECONNREFUSED error4069 sets commit status to :error with a Errno::EHOSTUNREACH error4070 sets commit status to :error with a Gitlab::HTTP::BlockedUrlError error4071 sets commit status to :error with a Gitlab::HTTP::RedirectionTooDeep error4072 when Bamboo API returns an array of results and we only consider the last one4073 behaves like reactive cache calculation4074 #build_page4075 returns a specific URL when status is 5004076 returns a specific URL when response has no results4077 returns a build URL when bamboo_url has no trailing slash4078 bamboo_url has trailing slash4079 returns a build URL4080 #commit_status4081 sets commit status to :error when status is 5004082 sets commit status to "pending" when status is 4044083 sets commit status to "pending" when response has no results4084 sets commit status to "success" when build state contains Success4085 sets commit status to "failed" when build state contains Failed4086 sets commit status to "pending" when build state contains Pending4087 sets commit status to :error when build state is unknown4088 sets commit status to :error with a Net::OpenTimeout error4089 sets commit status to :error with a Net::ReadTimeout error4090 sets commit status to :error with a Net::WriteTimeout error4091 sets commit status to :error with a SocketError error4092 sets commit status to :error with a OpenSSL::SSL::SSLError error4093 sets commit status to :error with a OpenSSL::OpenSSLError error4094 sets commit status to :error with a Errno::ECONNRESET error4095 sets commit status to :error with a Errno::ECONNREFUSED error4096 sets commit status to :error with a Errno::EHOSTUNREACH error4097 sets commit status to :error with a Gitlab::HTTP::BlockedUrlError error4098 sets commit status to :error with a Gitlab::HTTP::RedirectionTooDeep error4099CycleAnalytics::ProjectLevel4100 #all_medians_by_stage4101 returns every median for each stage for a specific project4102Projects::AutoDevops::DisableService#execute4103 when Auto DevOps disabled at instance level4104 is expected to be falsy4105 when Auto DevOps enabled at instance level4106 when Auto DevOps explicitly enabled on project4107 is expected to be falsy4108 when Auto DevOps explicitly disabled on project4109 is expected to be falsy4110 when Auto DevOps is implicitly enabled4111 when is the first pipeline failure4112 disables Auto DevOps for project4113 when it is not the first pipeline failure4114 explicitly disables Auto DevOps for project4115 when an Auto DevOps pipeline has succeeded before4116 does not disable Auto DevOps for project4117 when project does not have an Auto DevOps record related4118 disables Auto DevOps for project4119 creates a ProjectAutoDevops record4120Gitlab::GithubImport::Importer::PullRequestsImporter4121 #parallel?4122 returns true when running in parallel mode4123 returns false when running in sequential mode4124 #execute4125 when running in parallel mode4126 imports pull requests in parallel4127 when running in sequential mode4128 imports pull requests in sequence4129 #sequential_import4130 imports each pull request in sequence4131 #parallel_import4132 imports each note in parallel4133 #each_object_to_import4134 yields every pull request to the supplied block4135 updates the repository if a pull request was updated after the last clone4136 #update_repository4137 updates the repository4138 #update_repository?4139 when the pull request was updated after the last update4140 returns true when the head SHA is not present4141 returns true when the base SHA is not present4142 returns false if both the head and base SHAs are present4143 when the pull request was updated before the last update4144 returns false4145 #commit_exists?4146 returns true when a commit exists4147 returns false when a commit does not exist4148 #id_for_already_imported_cache4149 returns the PR number of the given PR4150Gitlab::Sanitizers::Exif4151 #batch_clean4152 filters only jpg/tiff images4153 with image uploads4154 processes all uploads if range ID is not set4155 processes only uploads in the selected range4156 processes only uploads for the selected uploader4157 processes only uploads created since specified date4158 pauses if sleep_time is set4159 #clean4160 no dry run4161 removes exif from the image4162 ignores image without exif4163 raises an error if the exiftool fails with an error4164 dry run4165 doesn't change the image4166 #extra_tags4167 returns a list of keys for exif file4168 returns an empty list for file with only whitelisted and ignored tags4169Ci::CreatePipelineService#execute4170 child pipeline triggers4171 behaves like successful creation4172 creates bridge jobs correctly4173 child pipeline triggers4174 when YAML is valid4175 behaves like successful creation4176 creates bridge jobs correctly4177 when trigger:include is specified as a string4178 behaves like successful creation4179 creates bridge jobs correctly4180 when trigger:include is specified as array of strings4181 behaves like successful creation4182 creates bridge jobs correctly4183 when limit of includes is reached4184 behaves like creation failure4185 returns errors4186 when including configs from artifact4187 when specified dependency is in the wrong order4188 behaves like creation failure4189 returns errors4190 when specified dependency is missing :job key4191 behaves like creation failure4192 returns errors4193Metrics::Dashboard::UpdateDashboardService4194 #execute4195 user does not have push right to repository4196 behaves like misconfigured dashboard service response with stepable4197 returns an appropriate message and status code4198 with rights to push to the repository4199 path traversal attack attempt4200 with a yml extension4201 behaves like misconfigured dashboard service response with stepable4202 returns an appropriate message and status code4203 without a yml extension4204 behaves like misconfigured dashboard service response with stepable4205 returns an appropriate message and status code4206 valid parameters4207 behaves like valid dashboard update process4208 delegates commit creation to Files::UpdateService4209 selected branch already exists4210 behaves like misconfigured dashboard service response with stepable4211 returns an appropriate message and status code4212 Files::UpdateService success4213 returns success4214 when the merge request does not succeed4215 returns an appropriate message and status code4216 with escaped characters in file name4217 escapes the special characters4218 when pushing to the default branch4219 does not create a merge request4220 Files::UpdateService fails4221 returns error4222ImportExportUploader4223 local store4224 #move_to_store4225 returns true4226 object_store is REMOTE4227 behaves like builds correct paths4228 #store_dir4229 behaves like matches the method pattern4230 is expected to match /import_export_upload\/import_file\//4231 #cache_dir4232 behaves like matches the method pattern4233 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4234 #work_dir4235 behaves like matches the method pattern4236 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4237 #upload_path4238 behaves like matches the method pattern4239 is expected to match /import_export_upload\/import_file\//4240 #relative_path4241 is relative (PENDING: Path not set, skipping.)4242 .absolute_path4243 behaves like matches the method pattern4244 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4245 .base_dir4246 behaves like matches the method pattern4247 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)4248 #move_to_store4249 returns false4250 with an export file directly uploaded4251 cleans up cached file4252 .workhorse_local_upload_path4253 returns path that includes uploads dir4254Gitlab::Chat::Output4255 #to_s4256 returns the build output as a String4257 #read_offset_and_length4258 without the chat_reply trace section4259 falls back to using the build_script trace section4260 without the build_script trace section4261 raises MissingBuildSectionError4262 with the chat_reply trace section4263 returns the read offset and length as an Array4264 #without_executed_command_line4265 returns the input without the first line4266 returns an empty String when the input is empty4267 returns an empty String when the input consits of a single newline4268 #find_build_trace_section4269 returns nil when no section could be found4270 returns the trace section when it could be found4271Lfs::UnlockFileService4272 #execute4273 when not authorized4274 doesn't succeed4275 when authorized4276 when lock does not exists4277 doesn't succeed4278 when unlocked by the author4279 succeeds4280 when unlocked by a different user4281 doesn't succeed4282 when forced4283 by a regular user4284 doesn't succeed4285 by a maintainer user4286 succeeds4287Milestones::ClosedIssuesCountService4288 counts closed issues including confidential4289 behaves like a counter caching service4290 #count4291 caches the count4292 #refresh_cache4293 refreshes the cache4294 #delete_cache4295 removes the cache4296 #uncached_count4297 does not cache the count4298NewMergeRequestWorker4299 #perform4300 when a merge request not found4301 does not call Services4302 logs an error4303 when a user not found4304 does not call Services4305 logs an error4306 when everything is ok4307 creates a new event record4308 creates a notification for the mentioned user4309Milestones::CloseService4310 #execute4311 is expected to be valid4312 is expected to be closed4313 event4314 is expected to be truthy4315 is expected to eq #<Milestone id:164 namespace1549/project1566%"Milestone v1.2">4316 is expected to eq "closed"4317Packages::Maven::PackageFinder4318 #execute!4319 within the project4320 returns a package4321 raises an error4322 across all projects4323 returns a package4324 raises an error4325 within a group4326 returns a package4327 raises an error4328Types::IssueType4329 is expected to expose permissions using Types::PermissionTypes::Issue4330 is expected to eq "Issue"4331 is expected to require graphql authorizations :read_issue4332 is expected to include Types::Notes::NoteableType4333 has specific fields4334 pagination and count4335 when user does not have the permission4336 returns no data4337 count4338 returns total count4339 total count does not change between pages4340 pagination4341 returns new ids during pagination4342 issue notes4343 query issue notes4344 when user signed in4345 behaves like does not include private notes4346 does not return private notes4347 when user member of the project4348 behaves like includes private notes4349 returns all notes4350 when user is anonymous4351 behaves like does not include private notes4352 does not return private notes4353Gitlab::Ci::CronParser4354 #next_time_from4355 behaves like when cron and cron_timezone are valid4356 when specific time4357 returns exact time4358 behaves like returns time in the future4359 is expected to be > 2020-08-29 16:43:05 +00004360 when specific day of week4361 returns exact day of week4362 behaves like returns time in the future4363 is expected to be > 2020-08-29 16:43:05 +00004364 when slash used4365 returns specific time4366 behaves like returns time in the future4367 is expected to be > 2020-08-29 16:43:05 +00004368 when range used4369 returns specific time4370 behaves like returns time in the future4371 is expected to be > 2020-08-29 16:43:06 +00004372 when cron_timezone is TZInfo format4373 when cron_timezone is US/Pacific4374 behaves like returns time in the future4375 is expected to be > 2020-08-29 16:43:06 +00004376 when PST (Pacific Standard Time)4377 converts time in server time zone4378 when PDT (Pacific Daylight Time)4379 converts time in server time zone4380 when cron_timezone is ActiveSupport::TimeZone format4381 when cron_timezone is Berlin4382 behaves like returns time in the future4383 is expected to be > 2020-08-29 16:43:06 +00004384 when CET (Central European Time)4385 converts time in server time zone4386 when CEST (Central European Summer Time)4387 converts time in server time zone4388 behaves like when cron_timezone is Eastern Time (US & Canada)4389 behaves like returns time in the future4390 is expected to be > 2020-08-29 16:43:06 +00004391 when EST (Eastern Standard Time)4392 converts time in server time zone4393 when EDT (Eastern Daylight Time)4394 converts time in server time zone4395 when time crosses a Daylight Savings boundary4396 generates day without TZInfo::AmbiguousTime error4397 behaves like when cron and cron_timezone are invalid4398 is expected to be nil4399 behaves like when cron syntax is quoted4400 is expected to be nil4401 behaves like when cron syntax is rufus-scheduler syntax4402 is expected to be nil4403 behaves like when cron is scheduled to a non existent day4404 is expected to be nil4405 #previous_time_from4406 behaves like when cron and cron_timezone are valid4407 when specific time4408 returns exact time4409 behaves like returns time in the past4410 is expected to be < 2020-08-29 16:43:07 +00004411 when specific day of week4412 returns exact day of week4413 behaves like returns time in the past4414 is expected to be < 2020-08-29 16:43:08 +00004415 when slash used4416 returns specific time4417 behaves like returns time in the past4418 is expected to be < 2020-08-29 16:43:08 +00004419 when range used4420 returns specific time4421 behaves like returns time in the past4422 is expected to be < 2020-08-29 16:43:08 +00004423 when cron_timezone is TZInfo format4424 when cron_timezone is US/Pacific4425 behaves like returns time in the past4426 is expected to be < 2020-08-29 16:43:08 +00004427 when PST (Pacific Standard Time)4428 converts time in server time zone4429 when PDT (Pacific Daylight Time)4430 converts time in server time zone4431 when cron_timezone is ActiveSupport::TimeZone format4432 when cron_timezone is Berlin4433 behaves like returns time in the past4434 is expected to be < 2020-08-29 16:43:09 +00004435 when CET (Central European Time)4436 converts time in server time zone4437 when CEST (Central European Summer Time)4438 converts time in server time zone4439 behaves like when cron_timezone is Eastern Time (US & Canada)4440 behaves like returns time in the past4441 is expected to be < 2020-08-29 16:43:09 +00004442 when EST (Eastern Standard Time)4443 converts time in server time zone4444 when EDT (Eastern Daylight Time)4445 converts time in server time zone4446 when time crosses a Daylight Savings boundary4447 generates day without TZInfo::AmbiguousTime error4448 behaves like when cron and cron_timezone are invalid4449 is expected to be nil4450 behaves like when cron syntax is quoted4451 is expected to be nil4452 behaves like when cron syntax is rufus-scheduler syntax4453 is expected to be nil4454 behaves like when cron is scheduled to a non existent day4455 is expected to be nil4456 #cron_valid?4457 when cron is valid4458 is expected to eq true4459 when cron is invalid4460 is expected to eq false4461 when cron syntax is quoted4462 is expected to eq false4463 #cron_timezone_valid?4464 when cron is valid4465 is expected to eq true4466 when cron is invalid4467 is expected to eq false4468 when cron_timezone is ActiveSupport::TimeZone format4469 is expected to eq true4470Clusters::Applications::UninstallService#execute4471 when there are no errors4472 make the application to be uninstalling4473 schedule async installation status check4474 when k8s cluster communication fails4475 logs into kubernetes.log and Sentry4476 make the application errored4477 a non kubernetes error happens4478 logs into kubernetes.log and Sentry4479 make the application errored4480Metrics::Dashboard::CustomMetricEmbedService4481 .valid_params?4482 is expected to be truthy4483 missing embedded4484 is expected to be falsey4485 not embedded4486 is expected to be falsey4487 non-system dashboard4488 is expected to be falsey4489 undefined dashboard4490 is expected to be truthy4491 non-custom metric group4492 is expected to be falsey4493 missing group4494 is expected to be falsey4495 missing title4496 is expected to be falsey4497 undefined y-axis label4498 is expected to be falsey4499 #get_dashboard4500 behaves like misconfigured dashboard service response4501 returns an appropriate message and status code4502 behaves like raises error for users with insufficient permissions4503 when the user does not have sufficient access4504 behaves like misconfigured dashboard service response4505 returns an appropriate message and status code4506 when the user is anonymous4507 behaves like misconfigured dashboard service response4508 returns an appropriate message and status code4509 the custom metric exists4510 does not cache the unprocessed dashboard4511 behaves like valid embedded dashboard service response4512 behaves like valid dashboard service response for schema4513 returns a json representation of the dashboard4514 multiple metrics meet criteria4515 includes both metrics in a single panel4516 behaves like valid embedded dashboard service response4517 behaves like valid dashboard service response for schema4518 returns a json representation of the dashboard4519 when the metric exists in another project4520 behaves like misconfigured dashboard service response4521 returns an appropriate message and status code4522Gitlab::Ci::Pipeline::Seed::Environment4523 #to_resource4524 when job has environment attribute4525 behaves like returning a correct environment4526 returns a persisted environment object4527 when environment has already existed4528 returns the existing environment object4529 when job starts a review app4530 behaves like returning a correct environment4531 returns a persisted environment object4532 when environment has already existed4533 returns the existing environment object4534 when job stops a review app4535 behaves like returning a correct environment4536 returns a persisted environment object4537 when environment has already existed4538 returns the existing environment object4539Ci::BuildDependencies4540 #local4541 jobs from previous stages4542 when job is in the first stage4543 is expected to be empty4544 when job is in the second stage4545 contains all jobs from the first stage4546 when job is in the last stage4547 contains all jobs from all previous stages4548 when a job is retried4549 contains the retried job instead of the original one4550 jobs from specified dependencies4551 when dependencies are defined4552 is expected to contain exactly #<Ci::Build id: 203, status: "pending", finished_at: nil, trace: nil, created_at: "2020-08-29 08:50:2...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil> and #<Ci::Build id: 205, status: "pending", finished_at: nil, trace: nil, created_at: "2020-08-29 08:50:2...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil>4553 when needs are defined4554 is expected to contain exactly #<Ci::Build id: 207, status: "pending", finished_at: nil, trace: nil, created_at: "2020-08-29 08:50:2...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil>, #<Ci::Build id: 208, status: "pending", finished_at: nil, trace: nil, created_at: "2020-08-29 08:50:2...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil>, and #<Ci::Build id: 210, status: "pending", finished_at: nil, trace: nil, created_at: "2020-08-29 08:50:2...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil>4555 when need artifacts are defined4556 is expected to contain exactly #<Ci::Build id: 212, status: "pending", finished_at: nil, trace: nil, created_at: "2020-08-29 08:50:2...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil> and #<Ci::Build id: 215, status: "pending", finished_at: nil, trace: nil, created_at: "2020-08-29 08:50:2...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil>4557 when needs and dependencies are defined4558 is expected to contain exactly #<Ci::Build id: 218, status: "pending", finished_at: nil, trace: nil, created_at: "2020-08-29 08:50:2...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil> and #<Ci::Build id: 220, status: "pending", finished_at: nil, trace: nil, created_at: "2020-08-29 08:50:2...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil>4559 when needs and dependencies contradict4560 returns only the intersection4561 when nor dependencies or needs are defined4562 returns the jobs from previous stages4563 #all4564 returns the union of all local dependencies and any cross pipeline dependencies4565Gitlab::BitbucketImport::ProjectCreator4566 creates project4567Gitlab::Ci::Status::Build::Retried4568 #text4569 does not override status text4570 #icon4571 does not override status icon4572 #group4573 does not override status group4574 #favicon4575 does not override status label4576 #label4577 does not override status label4578 #badge_tooltip4579 returns status4580 #status_tooltip4581 with a failed build4582 does override status_tooltip4583 with another build4584 does override status_tooltip4585 .matches?4586 with a retried build4587 is expected to be truthy4588 with a build that has not been retried4589 is expected to be falsy4590projects/notes/_more_actions_dropdown4591 shows Report abuse to admin button if not editable and not current users comment4592 does not show the More actions button if not editable and current users comment4593 shows Report abuse to admin and Delete buttons if editable and not current users comment4594 shows Delete button if editable and current users comment4595Ci::BuildMetadata4596 behaves like having unique enum values4597 has unique values in "timeout_source"4598 #update_timeout_state4599 when project timeout is set4600 when runner is assigned to the job4601 when runner timeout is not set4602 behaves like sets timeout4603 sets project_timeout_source4604 sets project timeout4605 when runner timeout is lower than project timeout4606 behaves like sets timeout4607 sets project_timeout_source4608 sets project timeout4609 when runner timeout is higher than project timeout4610 behaves like sets timeout4611 sets project_timeout_source4612 sets project timeout4613 when job timeout is set4614 when job timeout is higher than project timeout4615 behaves like sets timeout4616 sets project_timeout_source4617 sets project timeout4618 when job timeout is lower than project timeout4619 behaves like sets timeout4620 sets project_timeout_source4621 sets project timeout4622 when both runner and job timeouts are set4623 when job timeout is higher than runner timeout4624 behaves like sets timeout4625 sets project_timeout_source4626 sets project timeout4627 when job timeout is lower than runner timeout4628 behaves like sets timeout4629 sets project_timeout_source4630 sets project timeout4631 validations4632 when attributes are valid4633 returns no errors4634 when data is invalid4635 returns errors4636WebHookLog4637 is expected to belong to web_hook required:4638 is expected to serialize :request_headers class_name => Hash4639 is expected to serialize :request_data class_name => Hash4640 is expected to serialize :response_headers class_name => Hash4641 is expected to validate that :web_hook cannot be empty/falsy4642 .recent4643 does not return web hook logs that are too old4644 returns the web hook logs in descending order4645 #save4646 is expected to eq true4647 with basic auth credentials4648 obfuscates the basic auth credentials4649 #success?4650 2xx4651 is expected to be truthy4652 not 2xx4653 is expected to be falsey4654 internal erorr4655 is expected to be falsey4656 #internal_error?4657 when response status is not an internal error4658 is expected to be falsey4659 when response status is an internal error4660 is expected to be truthy4661ProjectImportOptions4662 sets default retry limit4663 sets default status expiration4664 .sidekiq_retries_exhausted4665 marks fork as failed4666 logs the appropriate error message for forked projects4667 logs the appropriate error message for forked projects4668 when project is jira import4669 logs the appropriate error message for forked projects4670 when project does not have import_state4671 raises an error4672ChatMessage::AlertMessage4673 #message4674 returns the correct message4675 #attachments4676 returns an array of one4677 contains the correct attributes4678 returns the correct color4679 returns the correct attachment fields4680 returns the correctly formatted time4681Gitlab::Ci::Status::Stage::Common4682 does not have action4683 links to the pipeline details page4684 when user has permission to read pipeline4685 has details4686 when user does not have permission to read pipeline4687 does not have details4688projects/deployments/_confirm_rollback_modal4689 when re-deploying last deployment4690 shows "re-deploy"4691 links to re-deploying the environment4692 when rolling back to previous deployment4693 shows "rollback"4694 links to re-deploying the environment4695Gitlab::ApplicationRateLimiter4696 when the key is an array of only ActiveRecord models4697 behaves like action rate limiter4698 increases the throttle count and sets the expiration time4699 returns true if the key is throttled4700 when throttling is disabled4701 returns false and does not set expiration time4702 when they key a combination of ActiveRecord models and strings4703 behaves like action rate limiter4704 increases the throttle count and sets the expiration time4705 returns true if the key is throttled4706 when throttling is disabled4707 returns false and does not set expiration time4708 #log_request4709 without a current user4710 logs information to auth.log4711 with a current_user4712 logs information to auth.log4713Gitlab::OtpKeyRotator4714 #rotate!4715 stores the calculated values in a spreadsheet4716 new key is too short4717 is expected to raise ArgumentError4718 new key is the same as the old key4719 is expected to raise ArgumentError4720 #rollback!4721 updates rows to the old value4722Jira::Requests::Projects::ListService4723 #execute4724 without jira_service4725 returns an error response4726 when jira_service is nil4727 returns an error response4728 with jira_service4729 when validations and params are ok4730 when the request to Jira returns an error4731 returns an error response4732 when the request does not return any values4733 returns a paylod with no projects returned4734 when the request returns values4735 returns a paylod with Jira projects4736 when filtering projects by name4737 returns a paylod with Jira procjets4738Resolvers::BoardListsResolver4739 #resolve4740 when project boards4741 behaves like group and project board lists resolver4742 does not create the backlog list4743 with unauthorized user4744 raises an error4745 when authorized4746 returns a list of board lists4747 when another user has list preferences4748 returns the complete list of board lists for this user4749 when querying for a single list4750 returns specified list4751 returns empty result if list is not found4752 raises an argument error if list ID is not valid4753 when group boards4754 behaves like group and project board lists resolver4755 does not create the backlog list4756 with unauthorized user4757 raises an error4758 when authorized4759 returns a list of board lists4760 when another user has list preferences4761 returns the complete list of board lists for this user4762 when querying for a single list4763 returns specified list4764 returns empty result if list is not found4765 raises an argument error if list ID is not valid4766Metrics::UsersStarredDashboard4767 associations4768 is expected to belong to project required: inverse_of => metrics_users_starred_dashboards4769 is expected to belong to user required: inverse_of => metrics_users_starred_dashboards4770 validation4771 is expected to validate that :user_id cannot be empty/falsy4772 is expected to validate that :project_id cannot be empty/falsy4773 is expected to validate that :dashboard_path cannot be empty/falsy4774 is expected to validate that the length of :dashboard_path is at most 2554775 is expected to validate that :dashboard_path is case-sensitively unique within the scope of :user_id and :project_id4776 scopes4777 #for_project4778 selects only starred dashboards belonging to project4779 #for_project_dashboard4780 selects only starred dashboards belonging to project with given dashboard path4781Gitlab::LegacyGithubImport::CommentFormatter4782 #attributes4783 when do not reference a portion of the diff4784 returns formatted attributes4785 when on a portion of the diff4786 returns formatted attributes4787 when author is a GitLab user4788 returns GitLab user id associated with GitHub id as author_id4789 returns GitLab user id associated with GitHub email as author_id4790 returns note without created at tag line4791PoolRepository4792 associations4793 is expected to belong to shard required:4794 is expected to belong to source_project required:4795 is expected to have many member_projects4796 validations4797 is expected to validate that :shard cannot be empty/falsy4798 is expected to validate that :source_project cannot be empty/falsy4799 #disk_path4800 sets the hashed disk_path4801 #mark_obsolete_if_last4802 when the last member leaves4803 schedules pool removal4804 when the second member leaves4805 does not schedule pool removal4806ProjectMemberPresenter4807 #can_resend_invite?4808 when project_member is invited4809 and user can admin_project_member4810 is expected to eq true4811 and user cannot admin_project_member4812 is expected to eq false4813 when project_member is not invited4814 and user can admin_project_member4815 is expected to eq false4816 and user cannot admin_project_member4817 is expected to eq false4818 #can_update?4819 when user can update_project_member4820 is expected to eq true4821 when user cannot update_project_member4822 is expected to eq false4823 #can_remove?4824 when user can destroy_project_member4825 is expected to eq true4826 when user cannot destroy_project_member4827 is expected to eq false4828 #can_approve?4829 when project_member has request an invite4830 and user can update_project_member4831 is expected to eq true4832 and user cannot update_project_member4833 is expected to eq false4834 when project_member did not request an invite4835 and user can update_project_member4836 is expected to eq false4837 and user cannot update_project_member4838 is expected to eq false4839 behaves like #valid_level_roles4840 returns all roles when no parent member is present4841 returns higher roles when a parent member is present4842IssueTrackerService4843 Validations4844 only one issue tracker per project4845 when service is changed manually by user4846 executes the validation4847 when service is changed internally4848 does not execute the validation4849Gitlab::Ci::Trace::Stream4850 delegates4851 is expected to delegate #close to the #stream object4852 is expected to delegate #tell to the #stream object4853 is expected to delegate #seek to the #stream object4854 is expected to delegate #size to the #stream object4855 is expected to delegate #path to the #stream object4856 is expected to delegate #truncate to the #stream object4857 is expected to delegate #valid? to the #stream object as #present?4858 #limit4859 when stream is StringIO4860 behaves like limits4861 if size is larger we start from beginning4862 if size is smaller we start from the end4863 when the trace contains ANSI sequence and Unicode4864 forwards to the next linefeed, case 14865 forwards to the next linefeed, case 24866 reads in binary, output as Encoding.default_external4867 when stream is ChunkedIO4868 behaves like limits4869 if size is larger we start from beginning4870 if size is smaller we start from the end4871 when the trace contains ANSI sequence and Unicode4872 forwards to the next linefeed, case 14873 forwards to the next linefeed, case 24874 reads in binary, output as Encoding.default_external4875 #append4876 when stream is Tempfile4877 behaves like appends4878 truncates and appends content4879 appends in binary mode4880 when stream is ChunkedIO4881 behaves like appends4882 truncates and appends content4883 appends in binary mode4884 #set4885 when stream is StringIO4886 behaves like sets4887 overwrite content4888 when stream is ChunkedIO4889 behaves like sets4890 overwrite content4891 #raw4892 when stream is File4893 behaves like sets4894 returns all contents if last_lines is not specified4895 limit max lines4896 returns last few lines4897 returns everything if trying to get too many lines4898 when stream is ChunkedIO4899 behaves like sets4900 returns all contents if last_lines is not specified4901 limit max lines4902 returns last few lines4903 returns everything if trying to get too many lines4904 #html4905 when stream is StringIO4906 behaves like htmls4907 returns html4908 returns html for last line only4909 when stream is ChunkedIO4910 behaves like htmls4911 returns html4912 returns html for last line only4913 #extract_coverage4914 when stream is StringIO4915 behaves like extract_coverages4916 valid content & regex4917 is expected to eq "98.29"4918 valid content & bad regex4919 is expected to be nil4920 no coverage content & regex4921 is expected to be nil4922 multiple results in content & regex4923 returns the last matched coverage4924 when BUFFER_SIZE is smaller than stream.size4925 is expected to eq "98.29"4926 when regex is multi-byte char4927 is expected to eq "95.0"4928 when BUFFER_SIZE is equal to stream.size4929 is expected to eq "98.29"4930 using a regex capture4931 is expected to eq "65"4932 malicious regexp4933 takes under a second4934 multi-line data with rooted regexp4935 is expected to eq "65"4936 long line4937 is expected to eq "100"4938 many lines4939 is expected to eq "100"4940 empty regex4941 skips processing4942 nil regex4943 skips processing4944 when stream is ChunkedIO4945 behaves like extract_coverages4946 valid content & regex4947 is expected to eq "98.29"4948 valid content & bad regex4949 is expected to be nil4950 no coverage content & regex4951 is expected to be nil4952 multiple results in content & regex4953 returns the last matched coverage4954 when BUFFER_SIZE is smaller than stream.size4955 is expected to eq "98.29"4956 when regex is multi-byte char4957 is expected to eq "95.0"4958 when BUFFER_SIZE is equal to stream.size4959 is expected to eq "98.29"4960 using a regex capture4961 is expected to eq "65"4962 malicious regexp4963 takes under a second4964 multi-line data with rooted regexp4965 is expected to eq "65"4966 long line4967 is expected to eq "100"4968 many lines4969 is expected to eq "100"4970 empty regex4971 skips processing4972 nil regex4973 skips processing4974Boards::Issues::CreateService4975 #execute4976 delegates the create proceedings to Issues::CreateService4977 creates a new issue4978 adds the label of the list to the issue4979Gitlab::JiraImport4980 .validate_project_settings!4981 without user param4982 behaves like jira configuration base checks4983 with configuration_check set to false4984 does not raise Jira integration error4985 when Jira service was not setup4986 behaves like raise Jira import error4987 returns error4988 when Jira service exists4989 when Jira connection is not valid4990 behaves like raise Jira import error4991 returns error4992 when jira connection is valid4993 does not return any error4994 with user param provided4995 when user has permission to run import4996 behaves like jira configuration base checks4997 with configuration_check set to false4998 does not raise Jira integration error4999 when Jira service was not setup5000 behaves like raise Jira import error5001 returns error5002 when Jira service exists5003 when Jira connection is not valid5004 behaves like raise Jira import error5005 returns error5006 when jira service is configured5007 when issues feature is disabled5008 behaves like raise Jira import error5009 returns error5010 when everything is ok5011 does not return any error5012 when user does not have permissions to run the import5013 behaves like raise Jira import error5014 returns error5015 .jira_issue_cache_key5016 returns cache key for Jira issue imported to given project5017 .already_imported_cache_key5018 returns cache key for already imported items5019 .jira_issues_next_page_cache_key5020 returns cache key for next issues5021 .get_issues_next_start_at5022 returns zero when not defined5023 returns negative value for next issues to be imported starting point5024 returns cached value for next issues to be imported starting point5025 .cache_users_mapping5026 stores the data correctly5027 .get_user_mapping5028 reads the data correctly5029 returns nil if value not found5030 .store_issues_next_started_at5031 stores nil value5032 stores positive value5033 stores negative value5034ChatNames::FindUserService5035 #execute5036 find user mapping5037 when existing user is requested5038 returns the existing chat_name5039 updates the last used timestamp if one is not already set5040 only updates an existing timestamp once within a certain time frame5041 when different user is requested5042 returns existing user5043Resolvers::LastCommitResolver5044 #resolve5045 last commit is a merge commit5046 resolves to the merge commit5047 last commit for a different branch and path5048 resolves commit5049 last commit for a wildcard pathspec5050 returns nil5051 last commit with pathspec characters5052 resolves commit5053 last commit does not exist5054 returns nil5055ErrorTracking::IssueDetailsService5056 #execute5057 with authorized user5058 when issue_details returns a detailed error5059 returns the detailed error5060 returns the gitlab_issue when the error has a sentry_issue5061 returns the gitlab_issue path from sentry when the error has no sentry_issue5062 when issue_details returns nil5063 result is not ready5064 when issue_details returns error5065 returns the error5066 when issue_details returns error with http_status5067 returns the error with correct http_status5068 with unauthorized user5069 returns error5070 with error tracking disabled5071 raises error5072IssueAssignee5073 associations5074 is expected to belong to issue class_name => Issue required:5075 is expected to belong to assignee class_name => User required:5076 validations5077 is expected to validate that :assignee is case-sensitively unique within the scope of :issue_id5078 scopes5079 in_projects5080 returns issue assignees for given project5081 on_issues5082 returns issue assignees for given issues5083projects/jobs/show5084 when job is running5085 does not show retry button5086 does not show New issue button5087Ci::FindExposedArtifactsService5088 #for_pipeline5089 with jobs having no exposed artifacts5090 behaves like does not find any matches5091 returns empty array5092 with jobs having no artifacts (metadata)5093 behaves like does not find any matches5094 returns empty array5095 with jobs having at most 1 matching exposed artifact5096 behaves like finds a single match5097 returns the artifact with exact location5098 with jobs having more than 1 matching exposed artifacts5099 behaves like finds multiple matches5100 returns the path to the artifacts browser5101 with jobs having more than 1 matching exposed artifacts inside a directory5102 behaves like finds multiple matches5103 returns the path to the artifacts browser5104 with jobs having paths with glob expression5105 behaves like finds a single match5106 returns the artifact with exact location5107 limiting results5108 returns first 2 results5109 cross-project MR5110 returns the correct path for cross-project MRs5111Gitlab::BitbucketImport::WikiFormatter5112 #disk_path5113 appends .wiki to disk path5114 #full_path5115 appends .wiki to project path5116 #import_url5117 returns URL of the wiki repository5118TreeEntryPresenter5119 .web_url5120 is expected to eq "http://localhost/namespace1675/project1697/-/tree/b83d6e391c22777fca1ed3012fce84f633d7fed0/bar"5121 #web_path5122 is expected to eq "/namespace1676/project1698/-/tree/b83d6e391c22777fca1ed3012fce84f633d7fed0/bar"5123Gitlab::PhabricatorImport::Issues::Importer5124 #execute5125 imports each task in the response5126 stubbed task import5127 schedules the next batch if there is one5128 does not reschedule when there is no next page5129ShaValidator5130 with empty value5131 does not add any error if value is empty5132 with valid sha5133 does not add any error5134 with invalid sha5135 adds error to the record5136clusters/clusters/gcp/_form5137 with all feature flags enabled5138 has a cloud run checkbox5139 with cloud run feature flag disabled5140 does not have a cloud run checkbox5141JiraImport::UsersImporter5142 #execute5143 when Jira import is not configured properly5144 returns an error5145 when Jira instance is of Server deployment type5146 behaves like maps jira users to gitlab users5147 when Jira import is configured correctly5148 when jira client raises an error5149 returns an error response5150 when jira client returns result5151 when jira client returns an empty array5152 retturns nil payload5153 when jira client returns an results5154 returns the mapped users5155 when Jira instance is of Cloud deploymet type5156 behaves like maps jira users to gitlab users5157 when Jira import is configured correctly5158 when jira client raises an error5159 returns an error response5160 when jira client returns result5161 when jira client returns an empty array5162 retturns nil payload5163 when jira client returns an results5164 returns the mapped users5165Metrics::Dashboard::DefaultEmbedService5166 .valid_params?5167 is expected to be truthy5168 missing embedded5169 is expected to be falsey5170 not embedded5171 is expected to be falsey5172 #get_dashboard5173 caches the unprocessed dashboard for subsequent calls5174 behaves like valid embedded dashboard service response5175 behaves like valid dashboard service response for schema5176 returns a json representation of the dashboard5177 behaves like raises error for users with insufficient permissions5178 when the user does not have sufficient access5179 behaves like misconfigured dashboard service response5180 returns an appropriate message and status code5181 when the user is anonymous5182 behaves like misconfigured dashboard service response5183 returns an appropriate message and status code5184 when called with a non-system dashboard5185 behaves like valid embedded dashboard service response5186 behaves like valid dashboard service response for schema5187 returns a json representation of the dashboard5188projects/generic_commit_statuses/_generic_commit_status.html.haml5189 won't include a column with a link to its pipeline by default5190 can include a column with a link to its pipeline5191TestReportEntity5192 #as_json5193 contains the total time5194 contains the counts5195 contains the test suites5196UpdateContainerRegistryInfoService5197 #execute5198 when container registry is disabled5199 behaves like invalid config5200 does not update the application settings5201 does not raise an error5202 when container registry api_url is blank5203 behaves like invalid config5204 does not update the application settings5205 does not raise an error5206 when creating a registry client instance5207 uses a token with no access permissions5208 when unabled to detect the container registry type5209 sets the application settings to their defaults5210 when able to detect the container registry type5211 when using the GitLab container registry5212 updates application settings accordingly5213 when using a third-party container registry5214 updates application settings accordingly5215Gitlab::GithubImport::Stage::FinishImportWorker5216 #perform5217 marks the import as finished5218 #report_import_time5219 reports the total import time5220BuildSuccessWorker5221 #perform5222 when build exists5223 when the build will stop an environment5224 stops the environment5225 when build does not exist5226 does not raise exception5227MergeRequest::Metrics5228 sets `target_project_id` before save5229 associations5230 is expected to belong to merge_request required:5231 is expected to belong to latest_closed_by class_name => User required:5232 is expected to belong to merged_by class_name => User required:5233 scopes5234 .merged_after5235 finds the record5236 doesn't include record outside of the filter5237 .merged_before5238 finds the record5239 doesn't include record outside of the filter5240Gitlab::Doctor::Secrets5241 when encrypted attributes are properly set5242 detects decryptable secrets5243 when attr_encrypted values are not decrypting5244 marks undecryptable values as bad5245 when TokenAuthenticatable values are not decrypting5246 marks undecryptable values as bad5247WikiPage::Slug5248 Associations5249 is expected to belong to wiki_page_meta required:5250 refers correctly to the wiki_page_meta5251 scopes5252 canonical5253 there are no slugs5254 is expected to be empty5255 there are some non-canonical slugs5256 is expected to be empty5257 there is at least one canonical slugs5258 is expected not to be empty5259 Validations5260 is expected to validate that :slug cannot be empty/falsy5261 is expected to validate that :slug is case-sensitively unique within the scope of :wiki_page_meta_id5262 only_one_slug_can_be_canonical_per_meta_record5263 there are no other slugs5264 is expected to be valid5265 the current slug is canonical5266 is expected to be valid5267 there are other slugs, but they are not canonical5268 is expected to be valid5269 the current slug is canonical5270 is expected to be valid5271 there is already a canonical slug5272 is expected to be valid5273 the current slug is canonical5274 is expected not to be valid5275profiles/show5276 when the profile page is opened5277 displays the correct elements5278Gitlab::GithubImport::Importer::LabelLinksImporter5279 #execute5280 creates the label links5281 #create_labels5282 inserts the label links in bulk5283 does not insert label links for non-existing labels5284 #find_target_id5285 returns the ID of the issuable to create the label link for5286projects/ci/lints/show5287 XSS protection5288 when builds attrbiutes contain HTML nodes5289 does not render HTML elements5290 when builds attributes do not contain HTML nodes5291 shows configuration in the table5292 when the content is valid5293 shows the correct values5294 when content has warnings5295 shows warning messages5296 when the content is invalid5297 shows error message5298 shows warning messages5299SpamLog5300 associations5301 is expected to belong to user required:5302 validations5303 is expected to validate that :user cannot be empty/falsy5304 #remove_user5305 blocks the user5306 when admin mode is enabled5307 removes the user5308 when admin mode is disabled5309 does not allow to remove the user5310 .verify_recaptcha!5311 the record cannot be found5312 updates nothing5313 does not error despite not finding a record5314 the record exists5315 updates recaptcha_verified5316BlobViewer::Base5317 .can_render?5318 when the extension is supported5319 when the binaryness matches5320 returns true5321 when the binaryness does not match5322 returns false5323 when the file type is supported5324 when the binaryness matches5325 returns true5326 when the binaryness does not match5327 returns false5328 when the extension and file type are not supported5329 returns false5330 #collapsed?5331 when the blob size is larger than the collapse limit5332 returns true5333 when the blob size is smaller than the collapse limit5334 returns false5335 #too_large?5336 when the blob size is larger than the size limit5337 returns true5338 when the blob size is smaller than the size limit5339 returns false5340 #render_error5341 when the blob is expanded5342 when the blob size is larger than the size limit5343 returns :too_large5344 when the blob size is smaller than the size limit5345 returns nil5346 when not expanded5347 when the blob size is larger than the collapse limit5348 returns :collapsed5349 when the blob size is smaller than the collapse limit5350 returns nil5351projects/services/edit5352 is expected not to have text "Recent Deliveries"5353 service using WebHooks5354 is expected to have text "Recent Deliveries"5355Ci::ProcessPipelineService5356 processing events counter5357 increments processing events counter5358 updating a list of retried builds5359 returns unique statuses5360Packages::Detail::PackagePresenter5361 detail_view5362 with build_info5363 returns details with pipeline5364 without build info5365 returns details without pipeline5366 with conan metadata5367 returns conan_metadatum5368 with composer metadata5369 returns composer_metadatum5370 with nuget_metadatum5371 returns nuget_metadatum5372 with dependency_links5373 returns the correct dependency link5374ProjectCustomAttribute5375 assocations5376 is expected to belong to project required:5377 validations5378 is expected to validate that :project cannot be empty/falsy5379 is expected to validate that :key cannot be empty/falsy5380 is expected to validate that :value cannot be empty/falsy5381 is expected to validate that :key is case-sensitively unique within the scope of :project_id5382Grafana::Client5383 #get_dashboard5384 behaves like calls grafana api5385 calls grafana api5386 behaves like no redirects5387 does not follow redirects5388 behaves like handles exceptions5389 HTTParty::Error5390 is expected to raise Grafana::Client::Error with "Error when connecting to Grafana"5391 Net::OpenTimeout5392 is expected to raise Grafana::Client::Error with "Connection to Grafana timed out"5393 SocketError5394 is expected to raise Grafana::Client::Error with "Received SocketError when trying to connect to Grafana"5395 OpenSSL::SSL::SSLError5396 is expected to raise Grafana::Client::Error with "Grafana returned invalid SSL data"5397 Errno::ECONNREFUSED5398 is expected to raise Grafana::Client::Error with "Connection refused"5399 StandardError5400 is expected to raise Grafana::Client::Error with "Grafana request failed due to StandardError"5401 #get_datasource5402 behaves like calls grafana api5403 calls grafana api5404 behaves like no redirects5405 does not follow redirects5406 behaves like handles exceptions5407 HTTParty::Error5408 is expected to raise Grafana::Client::Error with "Error when connecting to Grafana"5409 Net::OpenTimeout5410 is expected to raise Grafana::Client::Error with "Connection to Grafana timed out"5411 SocketError5412 is expected to raise Grafana::Client::Error with "Received SocketError when trying to connect to Grafana"5413 OpenSSL::SSL::SSLError5414 is expected to raise Grafana::Client::Error with "Grafana returned invalid SSL data"5415 Errno::ECONNREFUSED5416 is expected to raise Grafana::Client::Error with "Connection refused"5417 StandardError5418 is expected to raise Grafana::Client::Error with "Grafana request failed due to StandardError"5419 #proxy_datasource5420 behaves like calls grafana api5421 calls grafana api5422 behaves like no redirects5423 does not follow redirects5424 behaves like handles exceptions5425 HTTParty::Error5426 is expected to raise Grafana::Client::Error with "Error when connecting to Grafana"5427 Net::OpenTimeout5428 is expected to raise Grafana::Client::Error with "Connection to Grafana timed out"5429 SocketError5430 is expected to raise Grafana::Client::Error with "Received SocketError when trying to connect to Grafana"5431 OpenSSL::SSL::SSLError5432 is expected to raise Grafana::Client::Error with "Grafana returned invalid SSL data"5433 Errno::ECONNREFUSED5434 is expected to raise Grafana::Client::Error with "Connection refused"5435 StandardError5436 is expected to raise Grafana::Client::Error with "Grafana request failed due to StandardError"5437Mutations::ResolvesIssuable5438 with issues5439 behaves like resolving an issuable in GraphQL5440 when user has access5441 resolves issuable by iid5442 the IID does not refer to a valid issuable5443 returns nil5444 the parent path is not present5445 returns nil5446 with merge requests5447 behaves like resolving an issuable in GraphQL5448 when user has access5449 resolves issuable by iid5450 the IID does not refer to a valid issuable5451 returns nil5452 the parent path is not present5453 returns nil5454Gitlab::Auth::Ldap::Person5455 .normalize_dn5456 behaves like normalizes a DN5457 test_description: "strips extraneous whitespace", given: "uid =John Smith , ou = People, dc= example,dc =com", expected: "uid=john smith,ou=people,dc=example,dc=com"5458 normalizes the DN5459 test_description: "strips extraneous whitespace for a DN with a single RDN", given: "uid = John Smith", expected: "uid=john smith"5460 normalizes the DN5461 test_description: "unescapes non-reserved, non-special Unicode characters", given: "uid = Sebasti\\c3\\a1n\\ C.\\20Smith, ou=People (aka. \\22humans\\\") ,dc=example, dc=com", expected: "uid=sebastián c. smith,ou=people (aka. \\\"humans\\\"),dc=example,dc=com"5462 normalizes the DN5463 test_description: "downcases the whole string", given: "UID=John Smith,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"5464 normalizes the DN5465 test_description: "for a null DN (empty string), returns empty string and does not error", given: "", expected: ""5466 normalizes the DN5467 test_description: "does not strip an escaped leading space in an attribute value", given: "uid=\\ John Smith,ou=People,dc=example,dc=com", expected: "uid=\\ john smith,ou=people,dc=example,dc=com"5468 normalizes the DN5469 test_description: "does not strip an escaped leading space in the last attribute value", given: "uid=\\ John Smith", expected: "uid=\\ john smith"5470 normalizes the DN5471 test_description: "does not strip an escaped trailing space in an attribute value", given: "uid=John Smith\\ ,ou=People,dc=example,dc=com", expected: "uid=john smith\\ ,ou=people,dc=example,dc=com"5472 normalizes the DN5473 test_description: "strips extraneous spaces after an escaped trailing space", given: "uid=John Smith\\ ,ou=People,dc=example,dc=com", expected: "uid=john smith\\ ,ou=people,dc=example,dc=com"5474 normalizes the DN5475 test_description: "strips extraneous spaces after an escaped trailing space at the end of the DN", given: "uid=John Smith,ou=People,dc=example,dc=com\\ ", expected: "uid=john smith,ou=people,dc=example,dc=com\\ "5476 normalizes the DN5477 test_description: "properly preserves escaped trailing space after unescaped trailing spaces", given: "uid=John Smith \\ ,ou=People,dc=example,dc=com", expected: "uid=john smith \\ ,ou=people,dc=example,dc=com"5478 normalizes the DN5479 test_description: "preserves multiple inner spaces in an attribute value", given: "uid=John Smith,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"5480 normalizes the DN5481 test_description: "preserves inner spaces after an escaped space", given: "uid=John\\ Smith,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"5482 normalizes the DN5483 test_description: "hex-escapes an escaped leading newline in an attribute value", given: "uid=\\\nJohn Smith,ou=People,dc=example,dc=com", expected: "uid=\\0ajohn smith,ou=people,dc=example,dc=com"5484 normalizes the DN5485 test_description: "hex-escapes and does not strip an escaped trailing newline in an attribute value", given: "uid=John Smith\\\n,ou=People,dc=example,dc=com", expected: "uid=john smith\\0a,ou=people,dc=example,dc=com"5486 normalizes the DN5487 test_description: "hex-escapes an unescaped leading newline (actually an invalid DN?)", given: "uid=\nJohn Smith,ou=People,dc=example,dc=com", expected: "uid=\\0ajohn smith,ou=people,dc=example,dc=com"5488 normalizes the DN5489 test_description: "strips an unescaped trailing newline (actually an invalid DN?)", given: "uid=John Smith\n,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"5490 normalizes the DN5491 test_description: "does not strip if no extraneous whitespace", given: "uid=John Smith,ou=People,dc=example,dc=com", expected: "uid=john smith,ou=people,dc=example,dc=com"5492 normalizes the DN5493 test_description: "does not modify an escaped equal sign in an attribute value", given: "uid= foo \\= bar", expected: "uid=foo \\= bar"5494 normalizes the DN5495 test_description: "converts an escaped hex equal sign to an escaped equal sign in an attribute value", given: "uid= foo \\3D bar", expected: "uid=foo \\= bar"5496 normalizes the DN5497 test_description: "does not modify an escaped comma in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\, CA", expected: "uid=john c. smith,ou=san francisco\\, ca"5498 normalizes the DN5499 test_description: "converts an escaped hex comma to an escaped comma in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\2C CA", expected: "uid=john c. smith,ou=san francisco\\, ca"5500 normalizes the DN5501 test_description: "does not modify an escaped hex carriage return character in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\,\\0DCA", expected: "uid=john c. smith,ou=san francisco\\,\\0dca"5502 normalizes the DN5503 test_description: "does not modify an escaped hex line feed character in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\,\\0ACA", expected: "uid=john c. smith,ou=san francisco\\,\\0aca"5504 normalizes the DN5505 test_description: "does not modify an escaped hex CRLF in an attribute value", given: "uid= John C. Smith, ou=San Francisco\\,\\0D\\0ACA", expected: "uid=john c. smith,ou=san francisco\\,\\0d\\0aca"5506 normalizes the DN5507 test_description: "allows attribute type name OIDs", given: "0.9.2342.19200300.100.1.25=Example,0.9.2342.19200300.100.1.25=Com", expected: "0.9.2342.19200300.100.1.25=example,0.9.2342.19200300.100.1.25=com"5508 normalizes the DN5509 test_description: "strips extraneous whitespace from attribute type name OIDs", given: "0.9.2342.19200300.100.1.25 = Example, 0.9.2342.19200300.100.1.25 = Com", expected: "0.9.2342.19200300.100.1.25=example,0.9.2342.19200300.100.1.25=com"5510 normalizes the DN5511 with an exception during normalization5512 returns the given DN unmodified5513 .normalize_uid5514 behaves like normalizes a DN attribute value5515 test_description: "strips extraneous whitespace", given: " John Smith ", expected: "john smith"5516 normalizes the DN attribute value5517 test_description: "unescapes non-reserved, non-special Unicode characters", given: "Sebasti\\c3\\a1n\\ C.\\20Smith", expected: "sebastián c. smith"5518 normalizes the DN attribute value5519 test_description: "downcases the whole string", given: "JoHn C. Smith", expected: "john c. smith"5520 normalizes the DN attribute value5521 test_description: "does not strip an escaped leading space in an attribute value", given: "\\ John Smith", expected: "\\ john smith"5522 normalizes the DN attribute value5523 test_description: "does not strip an escaped trailing space in an attribute value", given: "John Smith\\ ", expected: "john smith\\ "5524 normalizes the DN attribute value5525 test_description: "hex-escapes an escaped leading newline in an attribute value", given: "\\\nJohn Smith", expected: "\\0ajohn smith"5526 normalizes the DN attribute value5527 test_description: "hex-escapes and does not strip an escaped trailing newline in an attribute value", given: "John Smith\\\n", expected: "john smith\\0a"5528 normalizes the DN attribute value5529 test_description: "hex-escapes an unescaped leading newline (actually an invalid DN value?)", given: "\nJohn Smith", expected: "\\0ajohn smith"5530 normalizes the DN attribute value5531 test_description: "strips an unescaped trailing newline (actually an invalid DN value?)", given: "John Smith\n", expected: "john smith"5532 normalizes the DN attribute value5533 test_description: "does not strip if no extraneous whitespace", given: "John Smith", expected: "john smith"5534 normalizes the DN attribute value5535 test_description: "does not modify an escaped equal sign in an attribute value", given: " foo \\= bar", expected: "foo \\= bar"5536 normalizes the DN attribute value5537 test_description: "converts an escaped hex equal sign to an escaped equal sign in an attribute value", given: " foo \\3D bar", expected: "foo \\= bar"5538 normalizes the DN attribute value5539 test_description: "does not modify an escaped comma in an attribute value", given: "San Francisco\\, CA", expected: "san francisco\\, ca"5540 normalizes the DN attribute value5541 test_description: "converts an escaped hex comma to an escaped comma in an attribute value", given: "San Francisco\\2C CA", expected: "san francisco\\, ca"5542 normalizes the DN attribute value5543 test_description: "does not modify an escaped hex carriage return character in an attribute value", given: "San Francisco\\,\\0DCA", expected: "san francisco\\,\\0dca"5544 normalizes the DN attribute value5545 test_description: "does not modify an escaped hex line feed character in an attribute value", given: "San Francisco\\,\\0ACA", expected: "san francisco\\,\\0aca"5546 normalizes the DN attribute value5547 test_description: "does not modify an escaped hex CRLF in an attribute value", given: "San Francisco\\,\\0D\\0ACA", expected: "san francisco\\,\\0d\\0aca"5548 normalizes the DN attribute value5549 with an exception during normalization5550 returns the given UID unmodified5551 .ldap_attributes5552 returns a compact and unique array5553 #name5554 uses the configured name attribute and handles values as an array5555 #email5556 returns the value of mail, if present5557 returns the value of userPrincipalName, if mail and email are not present5558 #username5559 with default uid username attribute5560 returns the proper username value5561 with a different username attribute5562 returns the proper username value5563 with a non-standard username attribute5564 returns the proper username value5565 if lowercase_usernames setting is5566 enabled the username attribute is lower cased5567 disabled the username attribute is not lower cased5568Gitlab::Ci::Status::Build::Canceled5569 #illustration5570 is expected to include :image, :size, and :title5571 .matches?5572 when build is canceled5573 is a correct match5574 when build is not canceled5575 does not match5576Namespaces::PruneAggregationSchedulesWorker#perform5577 schedules a worker per pending aggregation5578Users::ActivityService5579 #execute5580 when last activity is nil5581 updates last_activity_on for the user5582 when last activity is in the past5583 updates last_activity_on for the user5584 tries to obtain ExclusiveLease5585 when a bad object is passed5586 does not record activity5587 when last activity is today5588 does not update last_activity_on5589 does not try to obtain ExclusiveLease5590 when in GitLab read-only instance5591 does not update last_activity_on5592 when a lease could not be obtained5593 does not update last_activity_on5594Subscription5595 relationships5596 is expected to belong to project required:5597 is expected to belong to subscribable required:5598 is expected to belong to user required:5599 validations5600 is expected to validate that :subscribable cannot be empty/falsy5601 is expected to validate that :user cannot be empty/falsy5602 validates uniqueness of project_id scoped to subscribable_id, subscribable_type, and user_id5603Ci::GroupVariable5604 is expected to includes the Presentable module5605 is expected to includes the Ci::Maskable module5606 is expected to validate that :key is case-sensitively unique within the scope of :group_id, producing a custom validation error on failure5607 behaves like CI variable5608 is expected to includes the Ci::HasVariable module5609 strips whitespaces when assigning key5610 can convert to runner variable5611 variable type5612 defines variable types5613 defaults variable type to env_var5614 supports variable type file5615 .unprotected5616 when variable is protected5617 returns nothing5618 when variable is not protected5619 returns the variable5620Gitlab::Allowable5621 #can?5622 when user is allowed to do something5623 reports correct ability to perform action5624 when user is not allowed to do something5625 reports correct ability to perform action5626Gitlab::GithubImport::ReschedulingMethods5627 #perform5628 with a non-existing project5629 does not perform any work5630 notifies any waiters so they do not wait forever5631 with an existing project5632 notifies any waiters upon successfully importing the data5633 reschedules itself if the data could not be imported5634 #try_import5635 returns true when the import succeeds5636 returns false when the import fails due to hitting the GitHub API rate limit5637 #notify_waiter5638 notifies the waiter if a waiter key is specified5639 does not notify any waiters if no waiter key is specified5640Import::GithubController routing5641 to #personal_access_token5642 behaves like importer routing5643 to #create5644 to #new5645 to #status5646 to #callback5647 to #jobs5648 to #realtime_changes5649Import::GiteaController routing5650 to #personal_access_token5651 behaves like importer routing5652 to #create5653 to #new5654 to #status5655 to #callback5656 to #jobs5657 to #realtime_changes5658Import::GitlabController routing5659 behaves like importer routing5660 to #create5661 to #new5662 to #status5663 to #callback5664 to #jobs5665 to #realtime_changes5666Import::BitbucketController routing5667 behaves like importer routing5668 to #create5669 to #new5670 to #status5671 to #callback5672 to #jobs5673 to #realtime_changes5674Import::BitbucketServerController routing5675 behaves like importer routing5676 to #create5677 to #new5678 to #status5679 to #callback5680 to #jobs5681 to #realtime_changes5682Import::GoogleCodeController routing5683 to #callback5684 to #new_user_map5685 to #create_user_map5686 behaves like importer routing5687 to #create5688 to #new5689 to #status5690 to #callback5691 to #jobs5692 to #realtime_changes5693Import::FogbugzController routing5694 to #callback5695 to #new_user_map5696 to #create_user_map5697 behaves like importer routing5698 to #create5699 to #new5700 to #status5701 to #callback5702 to #jobs5703 to #realtime_changes5704Import::GitlabProjectsController routing5705 to #create5706 to #new5707Import::PhabricatorController routing5708 to #create5709 to #new5710Resolvers::ProjectMergeRequestsResolver5711 by assignee5712 filters merge requests by assignee username5713 does not find anything5714 by author5715 filters merge requests by author username5716 does not find anything5717DeployKey5718 Associations5719 is expected to have many deploy_keys_projects5720 is expected to have many projects5721 notification5722 does not send a notification5723 #user5724 when user is set5725 returns the user5726 when user is not set5727 returns the ghost user5728Branches::CreateService5729 #execute5730 logs and returns an error if there is a PreReceiveError exception5731 when repository is empty5732 creates master branch5733 creates another-feature branch5734 when branch already exists5735 returns an error5736 when incorrect reference is provided5737 returns an error with a reference name5738Gitlab::Git::RepositoryCleaner5739 #apply_bfg_object_map_stream (from StringIO)5740 removes internal references5741 #apply_bfg_object_map_stream (from Gitlab::HttpIO)5742 removes internal references5743Clusters::Applications::WaitForUninstallAppWorker#perform5744 app exists5745 calls the check service5746 app does not exist5747 does not call the check service5748PushEventPayload5749 behaves like having unique enum values5750 has unique values in "action"5751 has unique values in "ref_type"5752 saving payloads5753 does not allow commit messages longer than 70 characters5754Sentry::Client::IssueLink5755 #create_issue_link5756 is expected to be present5757 behaves like calls sentry api5758 calls sentry api5759 redirects5760 behaves like no Sentry redirects5761 does not follow redirects5762 when exception is raised5763 behaves like maps Sentry exceptions5764 HTTParty::Error5765 is expected to raise Sentry::Client::Error with "Error when connecting to Sentry"5766 Net::OpenTimeout5767 is expected to raise Sentry::Client::Error with "Connection to Sentry timed out"5768 SocketError5769 is expected to raise Sentry::Client::Error with "Received SocketError when trying to connect to Sentry"5770 OpenSSL::SSL::SSLError5771 is expected to raise Sentry::Client::Error with "Sentry returned invalid SSL data"5772 Errno::ECONNREFUSED5773 is expected to raise Sentry::Client::Error with "Connection refused"5774 StandardError5775 is expected to raise Sentry::Client::Error with "Sentry request failed due to StandardError"5776 when integration_id is not provided5777 is expected to be present5778 behaves like calls sentry api5779 calls sentry api5780 redirects5781 behaves like no Sentry redirects5782 does not follow redirects5783 when exception is raised5784 behaves like maps Sentry exceptions5785 HTTParty::Error5786 is expected to raise Sentry::Client::Error with "Error when connecting to Sentry"5787 Net::OpenTimeout5788 is expected to raise Sentry::Client::Error with "Connection to Sentry timed out"5789 SocketError5790 is expected to raise Sentry::Client::Error with "Received SocketError when trying to connect to Sentry"5791 OpenSSL::SSL::SSLError5792 is expected to raise Sentry::Client::Error with "Sentry returned invalid SSL data"5793 Errno::ECONNREFUSED5794 is expected to raise Sentry::Client::Error with "Connection refused"5795 StandardError5796 is expected to raise Sentry::Client::Error with "Sentry request failed due to StandardError"5797WikiPages::EventCreateService5798 #execute5799 returns a successful response5800 creates a wiki page event5801 returns an event in the payload5802 records the slug for the page5803 the user is nil5804 raises an error on construction5805 the action is illegal5806 returns an error5807 does not create an event5808 does not create a metadata record5809 the action is a deletion5810 does not synchronize the wiki metadata timestamps with the git commit5811Gitlab::PollingInterval5812 .set_header5813 when polling is disabled5814 sets value to -15815 when polling is enabled5816 applies modifier to base interval5817 .set_api_header5818 when polling is disabled5819 sets value to -15820 when polling is enabled5821 applies modifier to base interval5822Autocomplete::ActsAsTaggableOn::TagsFinder5823 #execute5824 with empty params5825 returns all tags5826 filter by search5827 with an empty search term5828 returns all tags5829 with a search containing 2 characters5830 returns the tag that strictly matches the search term5831 with a search containing 3 characters5832 returns the tag that partially matches the search term5833 limit5834 limits the result set by the limit constant5835Ci::TriggerPresenter5836 when user is not a trigger owner5837 #token5838 exposes only short token5839 #has_token_exposed?5840 does not have token exposed5841 when user is a trigger owner and builds admin5842 #token5843 exposes full token5844 #has_token_exposed?5845 has token exposed5846IssuableSidebarExtrasEntity5847 have subscribe attributes5848Releases::CreateEvidenceService5849 creates evidence5850 saves evidence summary5851 saves sha5852Namespaces::StatisticsRefresherService#execute5853 without a root storage statistics relation5854 creates one5855 recalculate the namespace statistics5856 with a root storage statistics relation5857 does not create one5858 recalculate the namespace statistics5859 when something goes wrong5860 raises RefreshError5861RuboCop::Cop::RSpec::BeSuccessMatcher5862 using expect(response).to be_success call5863 registers an offense5864 autocorrects it to `expect(response).to be_successful`5865 using expect(response).to be_successful call5866 does not register an offense5867 using expect(response).to_not be_success call5868 registers an offense5869 autocorrects it to `expect(response).to_not be_successful`5870 using expect(response).to_not be_successful call5871 does not register an offense5872 using expect(response).not_to be_success call5873 registers an offense5874 autocorrects it to `expect(response).not_to be_successful`5875 using expect(response).not_to be_successful call5876 does not register an offense5877 using is_expected.to be_success call5878 registers an offense5879 autocorrects it to `is_expected.to be_successful`5880 using is_expected.to be_successful call5881 does not register an offense5882 using is_expected.to_not be_success call5883 registers an offense5884 autocorrects it to `is_expected.to_not be_successful`5885 using is_expected.to_not be_successful call5886 does not register an offense5887 using is_expected.not_to be_success call5888 registers an offense5889 autocorrects it to `is_expected.not_to be_successful`5890 using is_expected.not_to be_successful call5891 does not register an offense5892Gitlab::Git::Push5893 #branch_name5894 when it is a branch push5895 returns branch name5896 when it is a tag push5897 returns nil5898 #branch_push?5899 when pushing a branch ref5900 is expected to be branch push5901 when it is a tag push5902 is expected not to be branch push5903 #branch_updated?5904 when it is a branch push with correct old and new revisions5905 is expected to be branch updated5906 when it is not a branch push5907 is expected not to be branch updated5908 when old revision is blank5909 is expected not to be branch updated5910 when it is not a branch push5911 is expected not to be branch updated5912 when oldrev is nil5913 is expected not to be branch updated5914 #force_push?5915 when old revision is an ancestor of the new revision5916 is expected not to be force push5917 when old revision is not an ancestor of the new revision5918 is expected to be force push5919 #branch_added?5920 when old revision is defined5921 is expected not to be branch added5922 when old revision is not defined5923 is expected to be branch added5924 #branch_removed?5925 when new revision is defined5926 is expected not to be branch removed5927 when new revision is not defined5928 is expected to be branch removed5929 #modified_paths5930 when a push is a branch update5931 returns modified paths5932 when a push is not a branch update5933 raises an error5934 #oldrev5935 when a valid oldrev is provided5936 returns oldrev5937 when a nil valud is provided5938 returns blank SHA5939 #newrev5940 when valid newrev is provided5941 returns newrev5942 when a nil valud is provided5943 returns blank SHA5944Gitlab::Ci::Variables::Collection::Item5945 .new5946 when unknown keyword is specified5947 raises error5948 when required keywords are not specified5949 raises error5950 behaves like creates variable5951 saves given value5952 when it's nil5953 behaves like creates variable5954 saves given value5955 when it's an empty string5956 behaves like creates variable5957 saves given value5958 when provided value is not a string5959 when it's 15960 behaves like raises error for invalid type5961 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/5962 when it's false5963 behaves like raises error for invalid type5964 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/5965 when it's []5966 behaves like raises error for invalid type5967 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/5968 when it's {}5969 behaves like raises error for invalid type5970 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/5971 when it's #<Object:0x000055d1d0ce0020>5972 behaves like raises error for invalid type5973 is expected to raise ArgumentError with message matching /`VAR` must be of type String or nil value, while it was:/5974 .fabricate5975 supports using a hash5976 supports using a hash with stringified values5977 supports using an active record resource5978 supports using another collection item5979 #==5980 compares a hash representation of a variable5981 #[]5982 behaves like a hash accessor5983 #to_runner_variable5984 when variable is not a file-related5985 returns a runner-compatible hash representation5986 when variable is file-related5987 appends file description component5988Gitlab::UploadsTransfer5989 leaves avatar uploads where they are5990API::Helpers::PackagesManagerClientsHelpers5991 #find_job_from_http_basic_auth5992 behaves like valid auth header5993 with a valid Authorization header5994 is expected to eq #<Ci::Build id: 295, status: "pending", finished_at: nil, trace: nil, created_at: "2020-08-29 08:50:2...up_id: nil, waiting_for_resource_at: nil, processed: false, scheduling_type: "stage", tag_list: nil>5995 with an unknown password5996 is expected to equal nil5997 behaves like invalid auth header5998 with an invalid Authorization header5999 is expected to equal nil6000 #find_deploy_token_from_http_basic_auth6001 behaves like valid auth header6002 with a valid Authorization header6003 is expected to eq #<DeployToken id: 15, revoked: false, read_repository: true, read_registry: true, expires_at: "2020-0... "project_type", write_registry: false, read_package_registry: false, write_package_registry: false>6004 with an unknown password6005 is expected to equal nil6006 behaves like invalid auth header6007 with an invalid Authorization header6008 is expected to equal nil6009 #uploaded_package_file6010 with valid uploaded package file6011 is expected to equal #<Object:0x000055d1d2046128>6012 with invalid uploaded package file6013 fails with bad_request!6014PruneWebHookLogsWorker6015 #perform6016 removes all web hook logs older than 90 days6017Gitlab::JiraImport::Stage::ImportLabelsWorker6018 modules6019 behaves like include import workers modules6020 is expected to includes the ApplicationWorker module6021 is expected to includes the Gitlab::JiraImport::QueueOptions module6022 is expected to includes the Gitlab::JiraImport::ImportWorker module6023 #perform6024 when import did not start6025 behaves like cannot do Jira import6026 does not advance to next stage6027 behaves like does not advance to next stage6028 does not advance to next stage6029 when import started6030 executes labels importer6031 behaves like advance to next stage6032 advances to issues stage6033AnalyticsBuildSerializer6034 when there is a single object provided6035 contains important elements of analyticsBuild6036Banzai::Pipeline::PostProcessPipeline6037 when a document only has upload links6038 does not make any Gitaly calls6039MarkdownContentRewriterService6040 #initialize6041 raises an error if source_parent is not a Project6042 #execute6043 calls the rewriter classes successfully6044 when content contains a reference6045 rewrites content6046 when content contains an upload6047 rewrites content6048Gitlab::GithubImport::Importer::LfsObjectImporter6049 #execute6050 calls the LfsDownloadService with the lfs object attributes6051Gitlab::ImportSources6052 .options6053 returns a hash6054 .values6055 returns an array6056 .importer_names6057 returns an array of importer names6058 .importer6059 returns Gitlab::GithubImport::ParallelImporter when given github6060 returns Gitlab::BitbucketImport::Importer when given bitbucket6061 returns Gitlab::BitbucketServerImport::Importer when given bitbucket_server6062 returns Gitlab::GitlabImport::Importer when given gitlab6063 returns Gitlab::GoogleCodeImport::Importer when given google_code6064 returns Gitlab::FogbugzImport::Importer when given fogbugz6065 returns when given git6066 returns Gitlab::ImportExport::Importer when given gitlab_project6067 returns Gitlab::LegacyGithubImport::Importer when given gitea6068 returns when given manifest6069 returns Gitlab::PhabricatorImport::Importer when given phabricator6070 .title6071 returns GitHub when given github6072 returns Bitbucket Cloud when given bitbucket6073 returns Bitbucket Server when given bitbucket_server6074 returns GitLab.com when given gitlab6075 returns Google Code when given google_code6076 returns FogBugz when given fogbugz6077 returns Repo by URL when given git6078 returns GitLab export when given gitlab_project6079 returns Gitea when given gitea6080 returns Manifest file when given manifest6081 returns Phabricator when given phabricator6082 imports_repository? checker6083 fails if any importer other than the allowed ones implements this method6084instrument_classes6085 can autoload and instrument all files6086Packages::Nuget::CreateDependencyService6087 #execute6088 behaves like creating dependencies, links and nuget metadata for6089 creates dependencies, links and nuget metadata6090 with existing dependencies6091 behaves like creating dependencies, links and nuget metadata for6092 creates dependencies, links and nuget metadata6093 with dependencies with no target framework6094 behaves like creating dependencies, links and nuget metadata for6095 creates dependencies, links and nuget metadata6096 with empty dependencies6097 is a no op6098Emails::CreateService6099 #execute6100 creates an email with valid attributes6101 creates an email with additional attributes6102 has the right user association6103AdminEmailWorker6104 .perform6105 does not attempt to send repository check mail when they are disabled6106 repository_checks enabled6107 checks if repository check mail should be sent6108 does not send mail when there are no failed repos6109 send mail when there is a failed repo6110Ci::BuildPrepareWorker6111 build exists6112 calls the prepare build service6113 build does not exist6114 does not attempt to prepare the build6115GroupExportWorker6116 #perform6117 when it succeeds6118 calls the ExportService6119 when it fails6120 raises an exception when params are invalid6121Mutations::Boards::Lists::Create6122 #ready?6123 raises an error if required arguments are missing6124 raises an error if too many required arguments are specified6125 #resolve6126 with proper permissions6127 backlog list6128 creates one and only one backlog6129 label list6130 creates a new issue board list for labels6131 without proper permissions6132 raises an error6133Gitlab::Alerting::NotificationPayloadParser6134 .call6135 returns Prometheus-like payload6136 when title is blank6137 sets a predefined title6138 when hosts attribute is a string6139 returns hosts as an array of one element6140 when the time is in unsupported format6141 sets startsAt to a current time in RFC3339 format6142 when payload is blank6143 returns default parameters6144 when severity is blank6145 sets severity to the default6146 with fingerprint6147 with blank fingerprint6148 behaves like fingerprint generation6149 generates the fingerprint correctly6150 with fingerprint given6151 behaves like fingerprint generation6152 generates the fingerprint correctly6153 with array fingerprint given6154 behaves like fingerprint generation6155 generates the fingerprint correctly6156 with environment6157 sets the environment6158 when payload attributes have blank lines6159 returns default parameters6160 when payload has secondary params6161 adds secondary params to annotations6162 when secondary params hash is too big6163 catches and re-raises an error6164Packages::Pypi::CreatePackageService6165 #execute6166 without an existing package6167 creates the package6168 with an existing package6169 with an existing file6170 throws an error6171 without an existing file6172 adds the file6173ExpireJobCacheWorker6174 #perform6175 with a job in the pipeline6176 is labeled as idempotent6177 performs multiple times sequentially without raising an exception6178 invalidates Etag caching for the job path6179 when there is no job in the pipeline6180 does not change the etag store6181Gitlab::ImportExport::CommandLineUtil6182 has the right mask for project.json6183 has the right mask for uploads6184Packages::Dependency6185 relationships6186 is expected to have many dependency_links6187 validations6188 is expected to validate that :name cannot be empty/falsy6189 is expected to validate that :version_pattern cannot be empty/falsy6190 is expected to validate that :name is case-sensitively unique within the scope of :version_pattern6191 .ids_for_package_names_and_version_patterns6192 is expected to contain exactly 23 and 246193 with unknown names6194 is expected to be empty6195 with unknown version patterns6196 is expected to be empty6197 with a name bigger than column size6198 is expected to contain exactly 23 and 246199 with a version pattern bigger than column size6200 is expected to contain exactly 23 and 246201 with too big parameter6202 is expected to raise ArgumentError with "Too many names_and_version_patterns"6203 with parameters size6204 above the chunk size6205 is expected to contain exactly 23, 24, 25, 26, 27, 28, and 296206 selecting too many rows6207 is expected to raise ArgumentError with "Too many Dependencies selected"6208 .for_package_names_and_version_patterns6209 is expected to contain exactly #<Packages::Dependency id: 30, name: "foo", version_pattern: "~1.0.0"> and #<Packages::Dependency id: 31, name: "bar", version_pattern: "~2.5.0">6210 with unknown names6211 is expected to be empty6212 with unknown version patterns6213 is expected to be empty6214Gitlab::Ci::Config::Normalizer6215 .normalize_jobs6216 with parallel config as integer6217 does not have original job6218 has parallelized jobs6219 sets job instance in options6220 parallelizes jobs with original config6221 when the job is not parallelized6222 returns the same hash6223 when there is a job with a slash in it6224 properly parallelizes job names6225 behaves like parallel dependencies6226 when job has dependencies on parallelized jobs6227 parallelizes dependencies6228 does not include original job name in RSpec::ExampleGroups::GitlabCiConfigNormalizer::NormalizeJobs::WithParallelConfigAsInteger::BehavesLikeParallelDependencies::WhenJobHasDependenciesOnParallelizedJobs::Anonymous6229 when there are dependencies which are both parallelized and not6230 parallelizes dependencies6231 includes the regular job in dependencies6232 behaves like parallel needs6233 when job has needs on parallelized jobs6234 parallelizes needs6235 when there are dependencies which are both parallelized and not6236 parallelizes dependencies6237 includes the regular job in dependencies6238 with parallel matrix config6239 does not have original job6240 sets job instance in options6241 sets job variables6242 parallelizes jobs with original config6243 with new_matrix_job_names_enabled ff enabled6244 has parallelized jobs6245 behaves like parallel dependencies6246 when job has dependencies on parallelized jobs6247 parallelizes dependencies6248 does not include original job name in RSpec::ExampleGroups::GitlabCiConfigNormalizer::NormalizeJobs::WithParallelMatrixConfig::WithNewMatrixJobNamesEnabledFfEnabled::BehavesLikeParallelDependencies::WhenJobHasDependenciesOnParallelizedJobs::Anonymous6249 when there are dependencies which are both parallelized and not6250 parallelizes dependencies6251 includes the regular job in dependencies6252 behaves like parallel needs6253 when job has needs on parallelized jobs6254 parallelizes needs6255 when there are dependencies which are both parallelized and not6256 parallelizes dependencies6257 includes the regular job in dependencies6258 with new_matrix_job_names_enabled ff disabled6259 has parallelized jobs6260 behaves like parallel dependencies6261 when job has dependencies on parallelized jobs6262 parallelizes dependencies6263 does not include original job name in RSpec::ExampleGroups::GitlabCiConfigNormalizer::NormalizeJobs::WithParallelMatrixConfig::WithNewMatrixJobNamesEnabledFfDisabled::BehavesLikeParallelDependencies::WhenJobHasDependenciesOnParallelizedJobs::Anonymous6264 when there are dependencies which are both parallelized and not6265 parallelizes dependencies6266 includes the regular job in dependencies6267 behaves like parallel needs6268 when job has needs on parallelized jobs6269 parallelizes needs6270 when there are dependencies which are both parallelized and not6271 parallelizes dependencies6272 includes the regular job in dependencies6273 when parallel config does not matches a factory6274 does not alter the job config6275DeviseEmailValidator6276 validations6277 by default6278 allows when email is valid6279 returns error when email is invalid6280 returns error when email is nil6281 returns error when email is blank6282 when regexp is set as Regexp6283 allows when value match6284 returns error when value does not match6285 when regexp is set as String6286 raise argument error6287 when allow_nil is set to true6288 allows when email is nil6289 when allow_blank is set to true6290 allows when email is blank6291Gitlab::Danger::EmojiChecker6292 #includes_text_emoji?6293 text: "Hello World!", includes_emoji: false6294 is true when text includes a text emoji6295 text: ":+1:", includes_emoji: true6296 is true when text includes a text emoji6297 text: "Hello World! :+1:", includes_emoji: true6298 is true when text includes a text emoji6299 #includes_unicode_emoji?6300 text: "Hello World!", includes_emoji: false6301 is true when text includes a text emoji6302 text: "🚀", includes_emoji: true6303 is true when text includes a text emoji6304 text: "Hello World! 🚀", includes_emoji: true6305 is true when text includes a text emoji6306RuboCop::Cop::Migration::PreventStrings6307 in migration6308 when the string data type is used6309 registers an offense6310 when the string data type is not used6311 registers no offense6312 when the text data type is used6313 registers no offense6314 when the string data type is used for arrays6315 registers no offense6316 on down6317 registers no offense6318 outside of migration6319 registers no offense6320Gitlab::UsageDataCounters::WikiPageCounter6321 behaves like a redis usage counter6322 .count(view)6323 increments the Wiki Page view counter by 16324 .read(view)6325 returns the total number of view events6326 behaves like a redis usage counter6327 .count(create)6328 increments the Wiki Page create counter by 16329 .read(create)6330 returns the total number of create events6331 behaves like a redis usage counter6332 .count(update)6333 increments the Wiki Page update counter by 16334 .read(update)6335 returns the total number of update events6336 behaves like a redis usage counter6337 .count(delete)6338 increments the Wiki Page delete counter by 16339 .read(delete)6340 returns the total number of delete events6341 behaves like a redis usage counter with totals6342 totals6343 can report all totals6344 unknown events6345 cannot increment6346 cannot read6347Projects::DeployTokens::DestroyService6348 behaves like a deploy token deletion service6349 #execute6350 destroys a token record and it's associated DeployToken6351 invalid token id6352 raises an error6353Gitlab::Metrics6354 .settings6355 returns a Hash6356 .enabled?6357 returns a boolean6358 .prometheus_metrics_enabled_unmemoized6359 prometheus metrics enabled in config6360 when metrics folder is present6361 metrics are enabled6362 when metrics folder is missing6363 metrics are disabled6364 .prometheus_metrics_enabled?6365 returns a boolean6366 .measure6367 without a transaction6368 returns the return value of the block6369 with a transaction6370 adds a metric to the current transaction6371 returns the return value of the block6372 #series_prefix6373 returns a String6374 .add_event6375 without a transaction6376 does nothing6377 with a transaction6378 adds an event6379 prometheus metrics disabled6380 behaves like prometheus metrics API6381 #counter6382 #increment6383 successfully calls #increment without arguments6384 successfully calls #increment with 1 argument6385 successfully calls #increment with 2 arguments6386 #summary6387 #observe6388 successfully calls #observe with 2 arguments6389 #gauge6390 #set6391 successfully calls #set with 2 arguments6392 #histogram6393 #observe6394 successfully calls #observe with 2 arguments6395 #null_metric6396 is expected to be a kind of Gitlab::Metrics::NullMetric6397 #counter6398 is expected to be a kind of Gitlab::Metrics::NullMetric6399 #summary6400 is expected to be a kind of Gitlab::Metrics::NullMetric6401 #gauge6402 is expected to be a kind of Gitlab::Metrics::NullMetric6403 #histogram6404 is expected to be a kind of Gitlab::Metrics::NullMetric6405 prometheus metrics enabled6406 behaves like prometheus metrics API6407 #counter6408 #increment6409 successfully calls #increment without arguments6410 successfully calls #increment with 1 argument6411 successfully calls #increment with 2 arguments6412 #summary6413 #observe6414 successfully calls #observe with 2 arguments6415 #gauge6416 #set6417 successfully calls #set with 2 arguments6418 #histogram6419 #observe6420 successfully calls #observe with 2 arguments6421 #null_metric6422 is expected to be nil6423 #counter6424 is expected not to be a kind of Gitlab::Metrics::NullMetric6425 #summary6426 is expected not to be a kind of Gitlab::Metrics::NullMetric6427 #gauge6428 is expected not to be a kind of Gitlab::Metrics::NullMetric6429 #histogram6430 is expected not to be a kind of Gitlab::Metrics::NullMetric6431Gitlab::RepositoryHashCache6432 #cache_key6433 includes the namespace6434 with a given namespace6435 includes the full namespace6436 #delete6437 key exists6438 is expected to eq 16439 deletes the given key from the cache6440 key doesn't exist6441 is expected to eq 06442 multiple keys6443 deletes multiple keys6444 returns deleted key count6445 #key?6446 key exists6447 is expected to equal true6448 key doesn't exist6449 is expected to equal false6450 #read_members6451 all data is cached6452 is expected to eq {"missing"=>"false", "test"=>"value"}6453 partial data is cached6454 is expected to eq {"missing"=>nil, "test"=>"value"}6455 no data is cached6456 is expected to eq {"missing"=>nil, "test"=>nil}6457 empty keys are passed for some reason6458 raises an error6459 #write6460 is expected to equal true6461 actually writes stuff to Redis6462 #fetch_and_add_missing6463 records metrics6464 fully cached6465 returns a hash6466 doesn't write to the cache6467 partially cached6468 returns a hash6469 writes to the cache6470 uncached6471 returns a hash6472 writes to the cache6473Gitlab::GlRepository::RepoType6474 #<Gitlab::GlRepository::RepoType:0x000055d1c0885120>6475 knows its type6476 checks if repository path is valid6477 behaves like a repo type6478 #identifier_for_container6479 is expected to eq "project-1797"6480 #path_suffix6481 is expected to eq ""6482 #repository_for6483 finds the repository for the repo type6484 #<Gitlab::GlRepository::RepoType:0x000055d1c0885058>6485 knows its type6486 checks if repository path is valid6487 behaves like a repo type6488 #identifier_for_container6489 is expected to eq "wiki-1797"6490 #path_suffix6491 is expected to eq ".wiki"6492 #repository_for6493 finds the repository for the repo type6494 #<Gitlab::GlRepository::RepoType:0x000055d1c0884f40>6495 when PersonalSnippet6496 knows its type6497 checks if repository path is valid6498 behaves like a repo type6499 #identifier_for_container6500 is expected to eq "snippet-38"6501 #path_suffix6502 is expected to eq ""6503 #repository_for6504 finds the repository for the repo type6505 when ProjectSnippet6506 knows its type6507 checks if repository path is valid6508 behaves like a repo type6509 #identifier_for_container6510 is expected to eq "snippet-39"6511 #path_suffix6512 is expected to eq ""6513 #repository_for6514 finds the repository for the repo type6515 #<Gitlab::GlRepository::RepoType:0x000055d1c0884e78>6516 knows its type6517 checks if repository path is valid6518 behaves like a repo type6519 #identifier_for_container6520 is expected to eq "design-1797"6521 #path_suffix6522 is expected to eq ".design"6523 #repository_for6524 finds the repository for the repo type6525Gitlab::Suggestions::CommitMessage6526 #message6527 when a custom commit message is not specified6528 and is nil6529 uses the default commit message6530 and is an empty string6531 uses the default commit message6532 is specified and includes all placeholders6533 generates a custom commit message6534IncidentManagement::PagerDuty::ProcessWebhookService6535 #execute6536 when PagerDuty webhook setting is active6537 when token is valid6538 when webhook payload has acceptable size6539 responds with Accepted6540 processes issues6541 when webhook payload is too big6542 responds with Bad Request6543 behaves like does not process incidents6544 does not process incidents6545 when webhook payload is blank6546 responds with Accepted6547 behaves like does not process incidents6548 does not process incidents6549 when token is invalid6550 responds with Unauthorized6551 behaves like does not process incidents6552 does not process incidents6553 when both tokens are nil6554 responds with Unauthorized6555 behaves like does not process incidents6556 does not process incidents6557 when PagerDuty webhook setting is not active6558 responds with Forbidden6559 behaves like does not process incidents6560 does not process incidents6561Banzai::Filter::TableOfContentsFilter6562 does nothing when :no_header_anchors is truthy6563 does nothing with empty headers6564 processes h1 elements6565 processes h2 elements6566 processes h3 elements6567 processes h4 elements6568 processes h5 elements6569 processes h6 elements6570 anchor tag6571 has an `anchor` class6572 has a namespaced id6573 links to the non-namespaced id6574 generated IDs6575 translates spaces to dashes6576 squeezes multiple spaces and dashes6577 removes punctuation6578 removes any leading or trailing spaces6579 appends a unique number to duplicates6580 prepends a prefix to digits-only ids6581 supports Unicode6582 result6583 is contained within a `ul` element6584 contains an `li` element for each header6585 table of contents nesting6586 keeps list levels regarding header levels6587 header text contains escaped content6588 outputs escaped content6589Feature::Definition6590 #key6591 returns a symbol from name6592 #validate!6593 param: :name, value: nil, result: /Feature flag is missing name/6594 is expected to raise /Feature flag is missing name/6595 param: :path, value: nil, result: /Feature flag 'feature_flag' is missing path/6596 is expected to raise /Feature flag 'feature_flag' is missing path/6597 param: :type, value: nil, result: /Feature flag 'feature_flag' is missing type/6598 is expected to raise /Feature flag 'feature_flag' is missing type/6599 param: :type, value: "invalid", result: /Feature flag 'feature_flag' type 'invalid' is invalid/6600 is expected to raise /Feature flag 'feature_flag' type 'invalid' is invalid/6601 param: :path, value: "development/invalid.yml", result: /Feature flag 'feature_flag' has an invalid path/6602 is expected to raise /Feature flag 'feature_flag' has an invalid path/6603 param: :path, value: "invalid/feature_flag.yml", result: /Feature flag 'feature_flag' has an invalid type/6604 is expected to raise /Feature flag 'feature_flag' has an invalid type/6605 param: :default_enabled, value: nil, result: /Feature flag 'feature_flag' is missing default_enabled/6606 is expected to raise /Feature flag 'feature_flag' is missing default_enabled/6607 #valid_usage!6608 validates type6609 raises exception for invalid type6610 validates default enabled6611 raises exception for different value6612 .paths6613 returns at least one path6614 .load_from_file6615 properly loads a definition from file6616 for missing file6617 raises exception6618 for invalid definition6619 raises exception6620 .load_all!6621 when there's no feature flags a list of definitions is empty6622 when there's a single feature flag it properly loads them6623 when the same feature flag is stored multiple times raises exception6624 when one of the YAMLs is invalid it does raise exception6625 .valid_usage!6626 when a known feature flag is used6627 validates it usage6628 when an unknown feature flag is used6629 for a type that is required to have all feature flags registered6630 raises exception6631 for a type that is optional6632 does not raise exception6633 for an unknown type6634 raises exception6635help/instance_configuration6636 General Sections:6637 has links to several sections6638 has several sections6639Gitlab::Metrics::Transaction6640 #duration6641 returns the duration of a transaction in seconds6642 #thread_cpu_duration6643 returns the duration of a transaction in seconds6644 #run6645 yields the supplied block6646 stores the transaction in the current thread6647 removes the transaction from the current thread upon completion6648 #method_call_for6649 returns a MethodCall6650 #add_event6651 adds a metric6652 allows tracking of custom tags6653 with sensitive tags6654 filters tags6655 #increment6656 adds a metric6657 with block6658 overrides docstring6659 overrides labels6660 filters sensitive tags6661 #set6662 adds a metric6663 with block6664 overrides docstring6665 overrides labels6666 filters sensitive tags6667 #observe6668 adds a metric6669 with block6670 overrides docstring6671 overrides labels6672 filters sensitive tags6673CsvBuilder6674 generates a csv6675 uses a temporary file to reduce memory allocation6676 counts the number of rows6677 avoids loading all data in a single query6678 uses hash keys as headers6679 gets data by calling method provided as hash value6680 allows lamdas to look up more complicated data6681 rows_expected6682 uses rows_written if CSV rendered successfully6683 falls back to calling .count before rendering begins6684 truncation6685 occurs after given number of bytes6686 is ignored by default6687 causes rows_expected to fall back to .count6688 excel sanitization6689 sanitizes dangerous characters at the beginning of a column6690 does not sanitize safe symbols at the beginning of a column6691Gitlab::IssuablesCountForState6692 project given6693 provides the project6694 .declarative_policy_class6695 is expected to eq "IssuablePolicy"6696 #for_state_or_opened6697 returns the number of issuables for the given state6698 returns the number of open issuables when no state is given6699 returns the number of open issuables when a nil value is given6700 #[]6701 returns the number of issuables for the given state6702 casts valid states from Strings to Symbols6703 returns 0 when using an invalid state name as a String6704Gitlab::DependencyLinker::PodfileLinker6705 .support?6706 supports Podfile6707 does not support other files6708 #link6709 links sources6710 links packages6711 links external packages6712 links Git repos6713IdentityProviderPolicy6714 #rules6715 is expected to be allowed :link6716 is expected to be allowed :unlink6717 when user is anonymous6718 is expected not to be allowed :link6719 is expected not to be allowed :unlink6720 when provider is saml6721 is expected to be allowed :link6722 is expected not to be allowed :unlink6723 when provider is cas36724 is expected to be allowed :link6725 is expected not to be allowed :unlink6726Gitlab::SidekiqMiddleware::AdminMode::Server6727 yields block6728 job has no admin mode field6729 session is not bypassed6730 job has admin mode field6731 nil admin mode id6732 session is not bypassed6733 valid admin mode id6734 session is bypassed6735 admin mode feature disabled6736 yields block6737 session is not bypassed6738Gitlab::WebIde::Config::Entry::Global6739 .nodes6740 returns a hash6741 when filtering all the entry/node names6742 contains the expected node names6743 when configuration is valid6744 when some entries defined6745 #compose!6746 creates nodes hash6747 creates node object for each entry6748 creates node object using valid class6749 sets correct description for nodes6750 #leaf?6751 is not leaf6752 when not composed6753 #terminal_value6754 returns nil6755 #leaf?6756 is leaf6757 when composed6758 #errors6759 has no errors6760 #terminal_value6761 returns correct script6762 when configuration is not valid6763 when job does not have valid before script6764 #errors6765 reports errors about missing script6766 when value is not a hash6767 #valid?6768 is not valid6769 #errors6770 returns error about invalid type6771 #specified?6772 is concrete entry that is defined6773 #[]6774 when entry exists6775 returns correct entry6776 when entry does not exist6777 always return unspecified node6778Gitlab::MarkdownCache::Redis::Extension6779 defines the html attributes6780 loads the markdown from the cache only once6781 correctly loads the markdown if it was stored in redis6782 .preload_markdown_cache!6783 does not preload the markdown twice6784 #refresh_markdown_cache!6785 stores the value in redis6786 assigns the values6787BuildTraceEntity6788 includes build attributes6789 includes trace metadata6790 includes the trace content in json6791Gitlab::HookData::BaseBuilder6792 #absolute_image_urls6793 with an upload prefix specified6794 relative image URL6795 is expected to eq ""6796 absolute upload URL6797 is expected to eq ""6798 absolute non-upload URL6799 is expected to eq ""6800 without an upload prefix specified6801 relative image URL6802 is expected to eq ""6803 absolute upload URL6804 is expected to eq ""6805 absolute non-upload URL6806 is expected to eq ""6807 HTTP URL6808 is expected to eq ""6809 HTTPS URL6810 is expected to eq ""6811 protocol-relative URL6812 is expected to eq ""6813 URL reference by title6814 is expected to eq "![foo]\n\n[foo]: foo.png"6815 URL reference by label6816 is expected to eq "![][foo]\n\n[foo]: foo.png"6817 in Markdown inline code block6818 is expected to eq "``"6819 in HTML tag on the same line6820 is expected to eq "<p></p>"6821 in Markdown multi-line code block6822 is expected to eq "```\n\n```"6823 in HTML tag on different lines6824 is expected to eq "<p>\n\n</p>"6825Ci::PipelinesHelper6826 pipeline_warnings6827 when pipeline has no warnings6828 is empty6829 when pipeline has warnings6830 returns a warning callout box6831 lists the the warnings6832Clusters::Applications::CheckPrometheusHealthWorker#perform6833 triggers health service6834Gitlab::Kubernetes::Helm::PatchCommand6835 behaves like helm command generator6836 #generate_script6837 returns appropriate command6838 when rbac is true6839 behaves like helm command generator6840 #generate_script6841 returns appropriate command6842 when there is no ca.pem file6843 behaves like helm command generator6844 #generate_script6845 returns appropriate command6846 when there is no version6847 is expected to raise ArgumentError with "version is required"6848 #pod_name6849 is expected to eq "install-app-name"6850 behaves like helm command6851 #rbac?6852 rbac is enabled6853 is expected to be truthy6854 rbac is not enabled6855 is expected to be falsey6856 #pod_resource6857 rbac is enabled6858 is expected to be an instance of Kubeclient::Resource6859 generates a pod that uses the tiller serviceAccountName6860 rbac is not enabled6861 is expected to be an instance of Kubeclient::Resource6862 generates a pod that uses the default serviceAccountName6863 #config_map_resource6864 returns a KubeClient resource with config map content for the application6865 #service_account_resource6866 rbac is enabled6867 generates a Kubeclient resource for the tiller ServiceAccount6868 rbac is not enabled6869 generates nothing6870 #cluster_role_binding_resource6871 rbac is enabled6872 generates a Kubeclient resource for the ClusterRoleBinding for tiller6873 binds the account in #service_account_resource6874 rbac is not enabled6875 generates nothing6876Gitlab::UsageData::Topology6877 #topology_usage_data6878 when embedded Prometheus server is enabled6879 tracking node metrics6880 contains node level metrics for each instance6881 and some node memory metrics are missing6882 removes the respective entries and includes the failures6883 and services run on the same node but report different instance values6884 normalizes equivalent instance values and maps them to the same node6885 and node metrics are missing but service metrics exist6886 still reports service metrics6887 and unknown services are encountered6888 filters out unknown service data and reports the unknown services as a failure6889 and an error is raised when querying Prometheus6890 without timeout failures6891 returns empty result and executes subsequent queries as usual6892 with timeout failures6893 exception: Errno::ETIMEDOUT6894 returns empty result and cancelled subsequent queries6895 exception: Net::OpenTimeout6896 returns empty result and cancelled subsequent queries6897 exception: Net::ReadTimeout6898 returns empty result and cancelled subsequent queries6899 when embedded Prometheus server is disabled6900 returns empty result with no failures6901 when top-level function raises error6902 returns empty result with generic failure6903BitbucketServer::Representation::Activity6904 regular comment6905 is expected to be truthy6906 is expected to be falsey6907 is expected to be a kind of BitbucketServer::Representation::Comment6908 is expected to be a kind of Time6909 inline comment6910 is expected to be truthy6911 is expected to be truthy6912 is expected to be a kind of BitbucketServer::Representation::PullRequestComment6913 is expected to be a kind of Time6914 merge event6915 is expected to be falsey6916 is expected to be falsey6917 is expected to eq "root"6918 is expected to eq "test.user@example.com"6919 is expected to be a kind of Time6920 is expected to be a kind of Time6921 is expected to eq "839fa9a2d434eb697815b8fcafaecc51accfdbbc"6922Gitlab::Utils::UsageData6923 #count6924 returns the count when counting succeeds6925 returns the fallback value when counting fails6926 #distinct_count6927 returns the count when counting succeeds6928 returns the fallback value when counting fails6929 #alt_usage_data6930 returns the fallback when it gets an error6931 returns the evaluated block when give6932 returns the value when given6933 #redis_usage_data6934 with block given6935 returns the fallback when it gets an error6936 returns the evaluated block when given6937 with counter given6938 returns the falback values for all counter keys when it gets an error6939 returns the totals when couter is given6940 #with_prometheus_client6941 when Prometheus is enabled6942 yields a client instance and returns the block result6943 when Prometheus is disabled6944 returns nil by default6945 returns fallback if provided6946 #measure_duration6947 returns block result and execution duration6948 #with_finished_at6949 adds a timestamp to the hash yielded by the block6950Gitlab::Git::User6951 .from_gitaly6952 is expected to eq #<Gitlab::Git::User:0x000055d1cba80898 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123">6953 .from_gitlab6954 when no commit_email has been set6955 is expected to eq #<Gitlab::Git::User:0x000055d1cbe06fa8 @username="user2974", @name="John Doe3123", @email="alice@example.com", @gl_id="user-">6956 when commit_email has been set6957 is expected to eq #<Gitlab::Git::User:0x000055d1cc0bd828 @username="user2975", @name="John Doe3124", @email="bob@example.com", @gl_id="user-">6958 #==6959 is expected to eq #<Gitlab::Git::User:0x000055d1cae43d50 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123">6960 is expected not to eq #<Gitlab::Git::User:0x000055d1cadb9178 @username=nil, @name=nil, @email=nil, @gl_id=nil>6961 is expected not to eq #<Gitlab::Git::User:0x000055d1cc5635a8 @username="janedoex", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123">6962 is expected not to eq #<Gitlab::Git::User:0x000055d1cc709998 @username="janedoe", @name="Jane Doéx", @email="janedoé@example.com", @gl_id="user-123">6963 is expected not to eq #<Gitlab::Git::User:0x000055d1cc867808 @username="janedoe", @name="Jane Doé", @email="janedoé@example.comx", @gl_id="user-123">6964 is expected not to eq #<Gitlab::Git::User:0x000055d1ccadfab8 @username="janedoe", @name="Jane Doé", @email="janedoé@example.com", @gl_id="user-123x">6965 #to_gitaly6966 creates a Gitaly::User with the correct data6967Gitlab::Redis::HLL6968 .add6969 when checking key format6970 for invalid keys6971 metric_key: "test", value: 16972 raise an error when using an invalid key format6973 metric_key: "test-{metric", value: 16974 raise an error when using an invalid key format6975 metric_key: "test-{metric}}", value: 16976 raise an error when using an invalid key format6977 for valid keys6978 metric_key: "test-{metric}", value: 16979 doesn't raise error when having correct format6980 metric_key: "test-{metric}-1", value: 16981 doesn't raise error when having correct format6982 metric_key: "test:{metric}-1", value: 16983 doesn't raise error when having correct format6984 metric_key: "2020-216-{project_action}", value: 16985 doesn't raise error when having correct format6986 metric_key: "i_{analytics}_dev_ops_score-2020-32", value: 16987 doesn't raise error when having correct format6988 .count6989 has 3 distinct users for weeks 32, 33, 346990 has 3 distinct users for weeks 32, 336991 has 2 distinct users for weeks 33, 346992 has one distinct user for week 336993 has 4 distinct users when one different user has an action on week 346994UpdateExternalPullRequestsWorker6995 #perform6996 when ref is a branch6997 runs CreatePipelineService for each pull request matching the source branch and repository6998 when ref is not a branch6999 does nothing7000Gitlab::UntrustedRegexp::RubySyntax7001 .matches_syntax?7002 returns true if regexp is valid7003 returns true if regexp is invalid, but resembles regexp7004 .valid?7005 returns true if regexp is valid7006 returns false if regexp is invalid7007 .fabricate7008 when regexp is valid7009 fabricates regexp without flags7010 when regexp is empty7011 fabricates regexp correctly7012 when regexp is a raw pattern7013 returns error7014 .fabricate!7015 safe regexp is used7016 when regexp is using /regexp/ scheme with flags7017 fabricates regexp with a single flag7018 fabricates regexp with multiple flags7019 fabricates regexp without flags7020 when unsafe regexp is used7021 when no fallback is enabled7022 raises an exception7023 when fallback is used7024 fabricates regexp with a single flag7025 fabricates regexp with multiple flags7026 fabricates regexp without flags7027 when regexp is a raw pattern7028 raises an error7029Sentry::ApiUrls7030 #issues_url7031 behaves like correct url7032 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project/issues/"7033 behaves like correct url with extra slashes7034 behaves like correct url7035 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project/issues/"7036 #issue_url7037 behaves like correct url7038 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/"7039 behaves like correct url with extra slashes7040 behaves like correct url7041 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/"7042 behaves like correctly escapes issue ID7043 with param a string with reserved chars7044 is expected to include "123%24%25"7045 with param a symbol with reserved chars7046 is expected to include "123%24%25"7047 with param an integer7048 is expected to include "12345678"7049 #projects_url7050 behaves like correct url7051 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/"7052 behaves like correct url with extra slashes7053 behaves like correct url7054 is expected to eq uri "https://sentrytest.gitlab.com/api/0/projects/"7055 #issue_latest_event_url7056 behaves like correct url7057 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/events/latest/"7058 behaves like correct url with extra slashes7059 behaves like correct url7060 is expected to eq uri "https://sentrytest.gitlab.com/api/0/issues/123456/events/latest/"7061 behaves like correctly escapes issue ID7062 with param a string with reserved chars7063 is expected to include "123%24%25"7064 with param a symbol with reserved chars7065 is expected to include "123%24%25"7066 with param an integer7067 is expected to include "12345678"7068PersonalAccessTokenPolicy7069 current_user is an administrator7070 not the owner of the token7071 is expected to be allowed :read_token7072 is expected to be allowed :revoke_token7073 owner of the token7074 is expected to be allowed :read_token7075 is expected to be allowed :revoke_token7076 current_user is not an administrator7077 not the owner of the token7078 is expected to be disallowed :read_token7079 is expected to be disallowed :revoke_token7080 owner of the token7081 is expected to be allowed :read_token7082 is expected to be allowed :revoke_token7083 current_user is a blocked administrator7084 owner of the token7085 is expected to be disallowed :read_token7086 is expected to be disallowed :revoke_token7087 not the owner of the token7088 is expected to be disallowed :read_token7089 is expected to be disallowed :revoke_token7090Gitlab::UntrustedRegexp7091 #initialize7092 invalid regexp7093 is expected to raise RegexpError7094 #replace_all7095 replaces all instances of the match in a string7096 #replace7097 replaces the first instance of the match in a string7098 #===7099 returns true for a match7100 returns false for no match7101 can handle regular expressions in multiline mode7102 #match?7103 malicious regexp7104 takes under a second7105 matching regexp7106 returns an array of nil matches7107 non-matching regexp7108 returns an array of nil matches7109 #scan7110 malicious regexp7111 takes under a second7112 empty regexp7113 returns an array of nil matches7114 empty capture group regexp7115 returns an array of nil matches in an array7116 no capture group7117 returns the whole match7118 one capture group7119 returns the captured part7120 two capture groups7121 returns the captured parts7122Prometheus::PidProvider7123 .worker_id7124 when running in Sidekiq server mode7125 in a clustered setup7126 is expected to eq "sidekiq_123"7127 in a single process setup7128 is expected to eq "sidekiq"7129 when running in Unicorn mode7130 when unicorn master is specified in process name7131 when running in Omnibus7132 before the process was renamed7133 is expected to eq "unicorn_master"7134 after the process was renamed7135 is expected to eq "unicorn_master"7136 when in development env7137 before the process was renamed7138 is expected to eq "unicorn_master"7139 after the process was renamed7140 is expected to eq "unicorn_master"7141 when unicorn worker id is specified in process name7142 when running in Omnibus7143 is expected to eq "unicorn_1"7144 when in development env7145 is expected to eq "unicorn_1"7146 when no specified unicorn master or worker id in process name7147 is expected to eq "process_1848"7148 when running in Puma mode7149 when cluster worker id is specified in process name7150 is expected to eq "puma_1"7151 when no worker id is specified in process name7152 is expected to eq "puma_master"7153 when running in unknown mode7154 is expected to eq "process_1848"7155Projects::Prometheus::Alerts::CreateService7156 #execute7157 with params7158 creates an alert7159 without params7160 fails to create7161Ci::ArtifactBlob7162 #id7163 returns a hash of the path7164 #name7165 returns the entry name7166 #path7167 returns the entry path7168 #size7169 returns the entry size7170 #mode7171 returns the entry mode7172 #external_storage7173 returns :build_artifact7174 #external_url7175 .gif extension7176 returns nil7177 txt extensions7178 returns a URL7179 when port is configured7180 returns an URL with port number7181 #external_link?7182 gif extensions7183 returns false7184 txt extensions7185 returns true7186PersonalAccessTokens::RevokeService7187 #execute7188 when current_user is an administrator7189 behaves like a successfully revoked token7190 is expected to equal true7191 is expected to equal true7192 when current_user is not an administrator7193 token belongs to a different user7194 behaves like an unsuccessfully revoked token7195 is expected to equal false7196 is expected to equal false7197 token belongs to current_user7198 behaves like a successfully revoked token7199 is expected to equal true7200 is expected to equal true7201Gitlab::Prometheus::Queries::MatchedMetricQuery7202 with one group where two metrics is found7203 both metrics in the group pass requirements7204 responds with both metrics as actve7205 none of the metrics pass requirements7206 responds with both metrics missing requirements7207 no series information found about the metrics7208 responds with both metrics missing requirements7209 one of the series info was not found7210 responds with one active and one missing metric7211 with one group where only one metric is found7212 both metrics in the group pass requirements7213 responds with one metrics as active and no missing requiremens7214 no metrics in group pass requirements7215 responds with one metrics as active and no missing requiremens7216 with two groups where metrics are found in each group7217 all metrics in both groups pass requirements7218 responds with one metrics as active and no missing requiremens7219 no metrics in groups pass requirements7220 responds with one metrics as active and no missing requiremens7221Gitlab::Ci::Parsers::Coverage::Cobertura7222 #parse!7223 when data is Cobertura style XML7224 when there is no <class>7225 parses XML and returns empty coverage7226 when there is a <sources>7227 and has a single source7228 behaves like ignoring sources7229 parses XML without errors7230 and has multiple sources7231 behaves like ignoring sources7232 parses XML without errors7233 when there is a single <class>7234 with no lines7235 parses XML and returns empty coverage7236 with a single line7237 parses XML and returns a single file with coverage7238 with multipe lines and methods info7239 parses XML and returns a single file with coverage7240 when there are multipe <class>7241 with the same filename and different lines7242 parses XML and returns a single file with merged coverage7243 with the same filename and lines7244 parses XML and returns a single file with summed-up coverage7245 with missing filename7246 parses XML and ignores class with missing name7247 with invalid line information7248 raises an error7249 when data is not Cobertura style XML7250 raises an error7251Gitlab::Ci::Config::Normalizer::NumberStrategy7252 .applies_to?7253 with numbers7254 is expected to be truthy7255 with hash that has :number key7256 is expected to be truthy7257 with a float number7258 is expected to be falsey7259 with hash that does not have :number key7260 is expected to be falsey7261 .build_from7262 with numbers7263 behaves like parallelized job7264 is expected to eq 37265 has attributes7266 has parallelized name7267 with hash that has :number key7268 behaves like parallelized job7269 is expected to eq 37270 has attributes7271 has parallelized name7272Gitlab::EtagCaching::Router7273 matches issue notes endpoint7274 matches MR notes endpoint7275 matches issue title endpoint7276 matches with a project name that includes a suffix of create7277 matches with a project name that includes a prefix of create7278 matches project pipelines endpoint7279 matches commit pipelines endpoint7280 matches new merge request pipelines endpoint7281 matches merge request pipelines endpoint7282 matches build endpoint7283 does not match blob with confusing name7284 matches the cluster environments path7285 matches the environments path7286 matches pipeline#show endpoint7287Gitlab::JwtAuthenticatable7288 .secret7289 returns 32 bytes7290 accepts a trailing newline7291 raises an exception if the secret file cannot be read7292 raises an exception if the secret file contains the wrong number of bytes7293 .write_secret7294 uses mode 06007295 writes base64 data7296 .decode_jwt_for_issuer7297 accepts a correct header7298 raises an error when the JWT is not signed7299 raises an error when the header is signed with the wrong secret7300 raises an error when the issuer is incorrect7301Gitlab::Diff::Formatters::ImageFormatter7302 behaves like position formatter7303 #key7304 is expected to eq [123, 456, 789, "8b5f87754bd090b9e0837feef68f1737103de62b", "5b972068ce0905d88056d0c4b788554d34949d27", 1, 2]7305 #complete?7306 when there are missing key attributes7307 is expected to be truthy7308 when old_line and new_line are nil7309 is expected to be falsy7310 #to_h7311 when file_identifier_hash is disabled7312 is expected to eq {:base_sha=>123, :head_sha=>789, :height=>100, :new_path=>"new_image.png", :old_path=>"old_image.png", :position_type=>"image", :start_sha=>456, :width=>100, :x=>1, :y=>2}7313 when file_identifier_hash is enabled7314 is expected to eq {:base_sha=>123, :file_identifier_hash=>"777", :head_sha=>789, :height=>100, :new_path=>"new_image.pn...g", :old_path=>"old_image.png", :position_type=>"image", :start_sha=>456, :width=>100, :x=>1, :y=>2}7315 #==7316 is expected to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x000055d1cab01f48 @x=1, @y=2, @width=100, @height=100, @o...new_path="new_image.png", @file_identifier_hash="777", @base_sha=123, @start_sha=456, @head_sha=789>7317 #==7318 is expected to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x000055d1cad299b0 @x=1, @y=2, @width=100, @height=100, @o...new_path="new_image.png", @file_identifier_hash="777", @base_sha=123, @start_sha=456, @head_sha=789>7319 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x000055d1ca3728b8 @x=1, @y=9, @width=100, @height=100, @o...new_path="new_image.png", @file_identifier_hash="777", @base_sha=123, @start_sha=456, @head_sha=789>7320 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x000055d1cb5c51a0 @x=1, @y=9, @width=100, @height=100, @o...new_path="new_image.png", @file_identifier_hash="777", @base_sha=123, @start_sha=456, @head_sha=789>7321 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x000055d1ccf69fe8 @x=1, @y=9, @width=100, @height=100, @o...new_path="new_image.png", @file_identifier_hash="777", @base_sha=123, @start_sha=456, @head_sha=789>7322 is expected not to eq #<Gitlab::Diff::Formatters::ImageFormatter:0x000055d1cf50fe50 @x=1, @y=9, @width=100, @height=100, @o...new_path="new_image.png", @file_identifier_hash="777", @base_sha=123, @start_sha=456, @head_sha=789>7323ExpandVariables7324 #expand7325 table tests7326 no expansion7327 is expected to eq "key"7328 missing variable7329 is expected to eq "key"7330 simple expansion7331 is expected to eq "keyvalue"7332 simple with hash of variables7333 is expected to eq "keyvalue"7334 complex expansion7335 is expected to eq "keyvalue"7336 simple expansions7337 is expected to eq "keyvalueresult"7338 complex expansions7339 is expected to eq "keyvalueresult"7340 complex expansions with missing variable7341 is expected to eq "keyvalue"7342 out-of-order expansion7343 is expected to eq "keyresultvalue"7344 out-of-order complex expansion7345 is expected to eq "keyresultvalue"7346 review-apps expansion7347 is expected to eq "review/feature/add-review-apps"7348 do not lazily access variables when no expansion7349 is expected to eq "key"7350 lazily access variables7351 is expected to eq "keyvalue"7352 lazily inits variables7353 when expanding variable7354 calls block at most once7355 when no expansion is needed7356 does not call block7357Gitlab::Kubernetes::Helm::BaseCommand7358 behaves like helm command generator7359 #generate_script7360 returns appropriate command7361 #pod_name7362 is expected to eq "install-test-class-name"7363 behaves like helm command7364 #rbac?7365 rbac is enabled7366 is expected to be truthy7367 rbac is not enabled7368 is expected to be falsey7369 #pod_resource7370 rbac is enabled7371 is expected to be an instance of Kubeclient::Resource7372 generates a pod that uses the tiller serviceAccountName7373 rbac is not enabled7374 is expected to be an instance of Kubeclient::Resource7375 generates a pod that uses the default serviceAccountName7376 #config_map_resource7377 returns a KubeClient resource with config map content for the application7378 #service_account_resource7379 rbac is enabled7380 generates a Kubeclient resource for the tiller ServiceAccount7381 rbac is not enabled7382 generates nothing7383 #cluster_role_binding_resource7384 rbac is enabled7385 generates a Kubeclient resource for the ClusterRoleBinding for tiller7386 binds the account in #service_account_resource7387 rbac is not enabled7388 generates nothing7389Resolvers::ProjectResolver7390 does not increase complexity depending on number of load limits7391 #resolve7392 batch-resolves projects by full path7393 resolves an unknown full_path to nil7394search/_form7395 when the search page is opened7396 displays the correct elements7397RuboCop::Cop::CodeReuse::Worker7398 flags the use of a worker in a controller7399 flags the use of a worker in an API7400 flags the use of a worker in a Finder7401 flags the use of a worker in a Presenter7402 flags the use of a worker in a Serializer7403 flags the use of a worker in a model class method7404Grafana::ProxyService7405 .from_cache7406 behaves like initializes an instance7407 initializes an instance of ProxyService class7408 #initialize7409 behaves like initializes an instance7410 initializes an instance of ProxyService class7411 #execute7412 when grafana integration is not configured7413 returns error7414 with caching7415 when value not present in cache7416 returns nil7417 when value present in cache7418 returns cached value7419 call prometheus api7420 connection to grafana datasource succeeds7421 returns the http status code and body from prometheus7422 connection to grafana datasource fails7423 returns error7424Gitlab::Ci::Config::Normalizer::MatrixStrategy7425 .applies_to?7426 with hash that has :matrix key7427 is expected to be truthy7428 with hash that does not have :matrix key7429 is expected to be falsey7430 with a number7431 is expected to be falsey7432 .build_from7433 is expected to eq 47434 with new_matrix_job_names_enabled ff disabled7435 has attributes7436 has parallelized name7437 with new_matrix_job_names_enabled ff enabled7438 has attributes7439 has parallelized name7440Gitlab::Ci::Config::Entry::Hidden7441 .matching?7442 when name starts with dot7443 is expected to be truthy7444 when name does not start with dot7445 is expected to be falsey7446 .new7447 validations7448 when entry config value is correct7449 #value7450 returns key value7451 #valid?7452 is valid7453 when entry value is not correct7454 when config is empty7455 #valid7456 is invalid7457 #leaf?7458 is a leaf7459 #relevant?7460 is not a relevant entry7461GitlabShellWorker7462 #perform7463 #add_key7464 delegates to Gitlab::AuthorizedKeys7465 #remove_key7466 delegates to Gitlab::AuthorizedKeys7467 all other commands7468 delegates them to Gitlab::Shell7469RspecFlaky::Report7470 delegates to #flaky_examples using SimpleDelegator7471 .load7472 loads the report file7473 .load_json7474 loads the report file7475 #initialize7476 accepts a RspecFlaky::FlakyExamplesCollection7477 does not accept anything else7478 #write7479 when RspecFlaky::Config.generate_report? is false7480! Generating reports is disabled. To enable it, please set the `FLAKY_RSPEC_GENERATE_REPORT=1` !7481 does not write any report file7482 when RspecFlaky::Config.generate_report? is true7483 delegates the writes to RspecFlaky::Report7484 #prune_outdated7485 returns a new collection without the examples older than 30 days by default7486 accepts a given number of days7487AccessTokenValidationService7488 .include_any_scope?7489 returns true if the required scope is present in the token's scopes7490 returns true if more than one of the required scopes is present in the token's scopes7491 returns true if the list of required scopes is an exact match for the token's scopes7492 returns true if the list of required scopes contains all of the token's scopes, in addition to others7493 returns true if the list of required scopes is blank7494 returns false if there are no scopes in common between the required scopes and the token scopes7495 conditions7496 ignores any scopes whose `if` condition returns false7497 does not ignore scopes whose `if` condition is not set7498 does not ignore scopes whose `if` condition returns true7499ObjectStoreSettings7500 #parse!7501 with valid config7502 sets correct default values7503 raises an error when a bucket is missing7504 with legacy config7505 does not alter config if legacy settings are specified7506 .legacy_parse7507 sets correct default values7508 respects original values7509Gitlab::Pagination::Keyset::Page7510 #per_page7511 limits to a maximum of 100 records per page7512 uses default value when given 07513 uses default value when given negative values7514 uses the given value if it is within range7515 #next7516 copies over order_by7517 copies over per_page7518 dups the instance7519 sets lower_bounds only on new instance7520TimeHelper7521 #time_interval_in_words7522 returns minutes and seconds7523 #duration_in_numbers7524 duration: 0, formatted_string: "00:00"7525 is expected to eq "00:00"7526 duration: 1 second, formatted_string: "00:01"7527 is expected to eq "00:01"7528 duration: 42 seconds, formatted_string: "00:42"7529 is expected to eq "00:42"7530 duration: 2 minutes and 1 second, formatted_string: "02:01"7531 is expected to eq "02:01"7532 duration: 3 hours, 2 minutes, and 1 second, formatted_string: "03:02:01"7533 is expected to eq "03:02:01"7534 duration: 30 hours, formatted_string: "30:00:00"7535 is expected to eq "30:00:00"7536MicrosoftTeams::Notifier7537 #ping7538 expects to receive successful answer7539 #body7540 returns Markdown-based body when HTML was passed7541 fails when empty Hash was passed7542Test coverage of the Project Import7543 ensures that all imported/exported relations are present in test JSONs7544Gitlab::Checks::ForcePush7545 .force_push?7546 returns false if the repo is empty7547 checks if old rev is an anchestor7548Gitlab::AlertManagement::AlertParams7549 .from_generic_alert7550 returns Alert compatible parameters7551 when severity given7552 returns Alert compatible parameters7553 when there are no hosts in the payload7554 hosts param is an empty array7555 .from_prometheus_alert7556 returns Alert-compatible params7557Peek::Views::RedisDetailed7558 returns aggregated results7559 cmd: [:auth, "test"], expected: "auth <redacted>"7560 scrubs Redis commands7561 cmd: [:set, "key", "value"], expected: "set key <redacted>"7562 scrubs Redis commands7563 cmd: [:set, "bad"], expected: "set bad"7564 scrubs Redis commands7565 cmd: [:hmset, "key1", "value1", "key2", "value2"], expected: "hmset key1 <redacted>"7566 scrubs Redis commands7567 cmd: [:get, "key"], expected: "get key"7568 scrubs Redis commands7569BlameHelper7570 #get_age_map_start_date7571 returns the earliest date from a blame group7572 returns the earliest date from a project7573 #age_map_class7574 returns blame-commit-age-9 when oldest7575 returns blame-commit-age-0 class when newest7576 when called on the same day as project creation7577 returns blame-commit-age-0 class7578Gitlab::Middleware::SameSiteCookies7579 #call7580 without SSL enabled7581 with cookie7582 does not add headers to cookies7583 with SSL enabled7584 with no cookies7585 does not add headers7586 with single cookie7587 adds required headers7588 multiple cookies7589 adds required headers7590 multiple cookies with some missing headers7591 adds missing headers7592 multiple cookies with all headers present7593 does not add new headers7594Gitlab::Search::Query7595 is expected to be < SimpleDelegator7596 leaves undefined filters in the main query7597 parses filters7598 with an empty filter7599 ignores empty filters7600 with a pipe7601 does not escape the pipe7602 with an exclusive filter7603 negates the filter7604Gitlab::GithubImport::Representation::User7605 .from_api_response7606 behaves like a User7607 returns an instance of User7608 the returned User7609 includes the user ID7610 includes the username7611 .from_json_hash7612 behaves like a User7613 returns an instance of User7614 the returned User7615 includes the user ID7616 includes the username7617Gitlab::Utils::LogLimitedArray7618 .log_limited_array7619 when the argument is not an array7620 returns an empty array7621 when the argument is an array7622 when the array is under the limit7623 returns the array unchanged7624 when the array exceeds the limit7625 when no sentinel value is passed7626 replaces arguments after the limit with an ellipsis string7627 when a sentinel value is passed7628 replaces arguments after the limit with the sentinel7629 when the array contains arrays and hashes7630 calculates the size based on the JSON representation7631RuboCop::Cop::RSpec::AnyInstanceOf7632 when calling allow_any_instance_of7633 registers an offence7634 can autocorrect the source7635 when calling expect_any_instance_of7636 registers an offence7637 can autocorrect the source7638Types::GroupMemberType7639 is expected to expose permissions using Types::PermissionTypes::Group7640 is expected to eq "GroupMember"7641 is expected to require graphql authorizations :read_group7642 has the expected fields7643Gitlab::LetsEncrypt::Challenge7644 #status7645 delegates to Acme::Client::Resources::Challenge7646 #token7647 delegates to Acme::Client::Resources::Challenge7648 #file_content7649 delegates to Acme::Client::Resources::Challenge7650 #request_validation7651 delegates to Acme::Client::Resources::Challenge7652 #error7653 delegates to Acme::Client::Resources::Challenge7654Gitlab::Ci::Status::Failed7655 #text7656 is expected to eq "failed"7657 #label7658 is expected to eq "failed"7659 #icon7660 is expected to eq "status_failed"7661 #favicon7662 is expected to eq "favicon_status_failed"7663 #group7664 is expected to eq "failed"7665Gitlab::ImportExport::AttributeCleaner7666 removes unwanted attributes from the hash7667 removes attributes not present in relation_class7668 removes excluded keys from the hash7669 does not remove excluded key if not listed7670Gitlab::Auth::Saml::OriginValidator7671 #store_origin7672 stores the SAML request ID7673 #gitlab_initiated?7674 returns false if InResponseTo is not present7675 returns false if InResponseTo does not match stored value7676 returns true if InResponseTo matches stored value7677AccessibilityReportsComparerEntity7678 #as_json7679 when base report has error and head has a different error7680 contains correct compared accessibility report details7681 when base report has error and head has the same error7682 contains correct compared accessibility report details7683 when base report has no error and head has errors7684 contains correct compared accessibility report details7685PropagateServiceTemplateWorker7686 #perform7687 calls the propagate service with the template7688Pages::VirtualDomain7689 #certificate and #key pair7690 returns nil if there is no domain provided7691 when Pages domain is provided7692 returns certificate and key from the provided domain7693 #lookup_paths7694 when there is pages domain provided7695 returns collection of projects pages lookup paths sorted by prefix in reverse7696 when there is trim_prefix provided7697 returns collection of projects pages lookup paths sorted by prefix in reverse7698Gitlab::Ci::Status::Group::Common7699 does not have action7700 has details7701 has no details_path7702GroupBadge7703 associations7704 is expected to belong to group required:7705 validations7706 is expected to validate that :group cannot be empty/falsy7707Gitlab::Ci::Status::Skipped7708 #text7709 is expected to eq "skipped"7710 #label7711 is expected to eq "skipped"7712 #icon7713 is expected to eq "status_skipped"7714 #favicon7715 is expected to eq "favicon_status_skipped"7716 #group7717 is expected to eq "skipped"7718RuboCop::Cop::Migration::WithLockRetriesWithChange7719 in migration7720 registers an offense when `with_lock_retries` is used inside a `change` method7721 registers no offense when `with_lock_retries` is used inside an `up` method7722 outside of migration7723 registers no offense7724Clusters::Project7725 is expected to belong to cluster required:7726 is expected to belong to project required:7727 is expected to have many kubernetes_namespaces7728Gitlab::Database::DynamicModelHelpers7729 #define_batchable_model7730 is an ActiveRecord model7731 includes EachBatch7732 has the correct table name7733 has the inheritance type column disable7734RuboCop::Cop::Migration::AddConcurrentIndex7735 in migration7736 registers an offense when add_concurrent_index is used inside a change method7737 registers no offense when add_concurrent_index is used inside an up method7738 outside of migration7739 registers no offense7740DetectRepositoryLanguagesWorker7741 #perform7742 calls de DetectRepositoryLanguages service7743 when invalid ids are used7744 does not raise when the project could not be found7745Import::GithubishProviderRepoEntity7746 behaves like exposes required fields for import entity7747 exposes required fields7748 correctly exposes id7749 correctly exposes full name7750 correctly exposes sanitized name7751 correctly exposes provider link7752GoogleApi::Auth7753 #authorize_url7754 returns authorize_url7755 #get_token7756 returns token and expires_at7757 expects the client to receive default options7758Import::BitbucketServerProviderRepoEntity7759 behaves like exposes required fields for import entity7760 exposes required fields7761 correctly exposes id7762 correctly exposes full name7763 correctly exposes sanitized name7764 correctly exposes provider link7765API::Validations::Validators::GitSha7766 valid sha7767 does not raise a validation error7768 empty params7769 raises a validation error7770 invalid sha7771 raises a validation error7772API::Validations::Validators::UntrustedRegexp7773 valid regex7774 does not raise a validation error7775 invalid regex7776 raises a validation error7777RuboCop::Cop::ProjectPathHelper7778 when using namespace_project with the project's namespace7779 registers an offense7780 autocorrects to the right version7781 when using namespace_project with a different namespace7782 registers no offense7783Types::Ci::PipelineType7784 is expected to eq "Pipeline"7785 is expected to expose permissions using Types::PermissionTypes::Ci::Pipeline7786Gitlab::LegacyGithubImport::IssuableFormatter7787 #project_association7788 is expected to raise NotImplementedError7789 #number7790 is expected to eq 427791 #find_condition7792 is expected to eq {:iid=>42}7793Gitlab::AppJsonLogger7794 logs a hash as a JSON7795 logs a string as a JSON7796Gitlab::ConfigChecker::ExternalDatabaseChecker7797 #check7798 when database meets minimum supported version7799 is expected to be empty7800 when database does not meet minimum supported version7801 reports deprecated database notice7802API::Helpers::GraphqlHelpers7803 run_graphql!7804 when transform function is provided7805 returns the expected result7806 when a transform function is not provided7807 returns the expected result7808Types::Ci::DetailedStatusType7809 is expected to eq "DetailedStatus"7810 has all fields7811Gitlab::HashedPath7812 #to_s7813 when path contains a single value7814 returns the disk path7815 when path contains multiple values7816 returns the disk path7817Gitlab::MultiDestinationLogger7818 with no primary logger set7819 primary_logger raises an error7820 with 2 loggers set7821 logs info to 2 loggers7822Gitlab::SidekiqMiddleware::DuplicateJobs::Strategies7823 .for7824 returns the right class for `until_executing`7825 raises an UnknownStrategyError when passing an unknown key7826Gitlab::Metrics::Delta7827 #compared_with7828 returns the delta as a Numeric7829 bases the delta on a previously used value7830Types::ContainerExpirationPolicyOlderThanEnum7831 behaves like exposing container expiration policy option7832 exposes all options7833 uses all possible options from model7834API::Validations::Validators::IntegerNoneAny7835 valid parameters7836 does not raise a validation error7837 invalid parameters7838 raises a validation error7839Types::LabelType7840 has the correct fields7841 is expected to require graphql authorizations :read_label7842Gitlab::CiAccess7843 #can_do_action?7844 when action is :build_download_code7845 is expected to be truthy7846 when action is not :build_download_code7847 is expected to be falsey7848Gitlab::GithubImport::Queue7849 sets the Sidekiq options for the worker7850API::Entities::Nuget::SearchResult7851 is expected to eq {:@type=>"Package", :authors=>"Author", :iconUrl=>"http://sandbox.com/icon", :id=>"PackageTest", :lic..."1.2.3", :versions=>[{:@id=>"http://sandbox.com/json/package", :downloads=>100, :version=>"1.2.3"}]}7852Ci::DailyBuildGroupReportResultSerializer7853 #to_json7854 returns an array of group results7855Types::Tree::TypeEnum7856 is expected to eq "EntryType"7857 exposes all tree entry types7858ProjectSetting7859 is expected to belong to project required:7860Gitlab::SidekiqStatus::ServerMiddleware7861 #call7862 stops tracking of a job upon completion7863Bitbucket::Paginator7864 items7865 return items and raises StopIteration in the end7866Gitlab::GithubImport::Importer::IssueAndLabelLinksImporter7867 #execute7868 imports an issue and its labels7869Gitlab::Ci::Status::Extended7870 requires subclass to implement matcher7871Types::DesignManagementType7872 is expected to have graphql fields :version and :design_at_version7873Knapsack report was generated. Preview:7874{7875 "spec/models/repository_spec.rb": 75.3267228603363,7876 "spec/lib/banzai/filter/milestone_reference_filter_spec.rb": 33.50191521644592,7877 "spec/services/merge_requests/build_service_spec.rb": 32.48200702667236,7878 "spec/models/project_services/slack_service_spec.rb": 23.47451376914978,7879 "spec/lib/gitlab/bare_repository_import/importer_spec.rb": 30.12788724899292,7880 "spec/models/member_spec.rb": 17.820621967315674,7881 "spec/serializers/job_entity_spec.rb": 15.705740451812744,7882 "spec/lib/banzai/filter/merge_request_reference_filter_spec.rb": 12.755491733551025,7883 "spec/services/projects/lfs_pointers/lfs_download_service_spec.rb": 14.21288275718689,7884 "spec/uploaders/job_artifact_uploader_spec.rb": 11.392379999160767,7885 "spec/policies/wiki_page_policy_spec.rb": 10.724533319473267,7886 "spec/services/merge_requests/reopen_service_spec.rb": 9.218121767044067,7887 "spec/serializers/stage_entity_spec.rb": 4.225080728530884,7888 "spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb": 10.61139702796936,7889 "spec/services/boards/lists/update_service_spec.rb": 5.797245264053345,7890 "spec/lib/gitlab/ci/status/external/factory_spec.rb": 6.574724912643433,7891 "spec/finders/projects/serverless/functions_finder_spec.rb": 8.21715784072876,7892 "spec/lib/banzai/filter/project_reference_filter_spec.rb": 5.231923818588257,7893 "spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb": 7.0093159675598145,7894 "spec/services/event_create_service_spec.rb": 6.645581007003784,7895 "spec/lib/banzai/reference_parser/issue_parser_spec.rb": 5.917033910751343,7896 "spec/lib/gitlab/ci/status/build/play_spec.rb": 4.911404132843018,7897 "spec/services/snippets/bulk_destroy_service_spec.rb": 4.577471733093262,7898 "spec/models/packages/package_file_spec.rb": 4.216802597045898,7899 "spec/lib/gitlab/search/found_blob_spec.rb": 3.2082319259643555,7900 "spec/lib/gitlab/ci/yaml_processor_spec.rb": 3.913485050201416,7901 "spec/models/design_management/design_spec.rb": 5.06950831413269,7902 "spec/services/clusters/kubernetes/configure_istio_ingress_service_spec.rb": 3.2626101970672607,7903 "spec/views/projects/merge_requests/creations/_new_submit.html.haml_spec.rb": 3.3094820976257324,7904 "spec/graphql/mutations/merge_requests/set_labels_spec.rb": 3.8801109790802,7905 "spec/services/projects/update_remote_mirror_service_spec.rb": 2.3555185794830322,7906 "spec/services/packages/npm/create_package_service_spec.rb": 4.687314748764038,7907 "spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb": 3.0319759845733643,7908 "spec/services/ci/external_pull_requests/create_pipeline_service_spec.rb": 2.26472806930542,7909 "spec/models/user_interacted_project_spec.rb": 3.3484601974487305,7910 "spec/services/issuable/common_system_notes_service_spec.rb": 2.700819730758667,7911 "spec/workers/ci/pipeline_success_unlock_artifacts_worker_spec.rb": 2.0413498878479004,7912 "spec/lib/container_registry/path_spec.rb": 2.4898085594177246,7913 "spec/finders/contributed_projects_finder_spec.rb": 1.9786877632141113,7914 "spec/services/projects/hashed_storage/rollback_repository_service_spec.rb": 2.7584898471832275,7915 "spec/models/concerns/project_features_compatibility_spec.rb": 1.9331471920013428,7916 "spec/lib/banzai/reference_redactor_spec.rb": 1.774364709854126,7917 "spec/services/boards/list_service_spec.rb": 2.153230667114258,7918 "spec/services/packages/npm/create_tag_service_spec.rb": 3.1862123012542725,7919 "spec/services/releases/update_service_spec.rb": 2.135601758956909,7920 "spec/lib/gitlab/ci/status/stage/play_manual_spec.rb": 1.7076871395111084,7921 "spec/models/project_services/bamboo_service_spec.rb": 2.321737289428711,7922 "spec/models/cycle_analytics/project_level_spec.rb": 1.7581517696380615,7923 "spec/services/projects/auto_devops/disable_service_spec.rb": 2.6292223930358887,7924 "spec/lib/gitlab/github_import/importer/pull_requests_importer_spec.rb": 2.8320350646972656,7925 "spec/lib/gitlab/sanitizers/exif_spec.rb": 1.823038101196289,7926 "spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb": 1.5352351665496826,7927 "spec/services/metrics/dashboard/update_dashboard_service_spec.rb": 1.8248176574707031,7928 "spec/uploaders/import_export_uploader_spec.rb": 1.539172649383545,7929 "spec/lib/gitlab/chat/output_spec.rb": 1.6773788928985596,7930 "spec/services/lfs/unlock_file_service_spec.rb": 1.8512935638427734,7931 "spec/services/milestones/closed_issues_count_service_spec.rb": 1.7978157997131348,7932 "spec/workers/new_merge_request_worker_spec.rb": 1.633049488067627,7933 "spec/services/milestones/close_service_spec.rb": 1.3111603260040283,7934 "spec/finders/packages/maven/package_finder_spec.rb": 1.9817538261413574,7935 "spec/graphql/types/issue_type_spec.rb": 2.1849253177642822,7936 "spec/lib/gitlab/ci/cron_parser_spec.rb": 1.10886812210083,7937 "spec/services/clusters/applications/uninstall_service_spec.rb": 2.0792269706726074,7938 "spec/services/metrics/dashboard/custom_metric_embed_service_spec.rb": 1.4186222553253174,7939 "spec/lib/gitlab/ci/pipeline/seed/environment_spec.rb": 1.518111228942871,7940 "spec/models/ci/build_dependencies_spec.rb": 1.3529481887817383,7941 "spec/lib/gitlab/bitbucket_import/project_creator_spec.rb": 1.4468939304351807,7942 "spec/lib/gitlab/ci/status/build/retried_spec.rb": 1.1319012641906738,7943 "spec/views/projects/notes/_more_actions_dropdown.html.haml_spec.rb": 1.0265679359436035,7944 "spec/models/ci/build_metadata_spec.rb": 1.1513829231262207,7945 "spec/models/hooks/web_hook_log_spec.rb": 1.346372127532959,7946 "spec/workers/concerns/project_import_options_spec.rb": 1.224247932434082,7947 "spec/models/project_services/chat_message/alert_message_spec.rb": 1.0387437343597412,7948 "spec/lib/gitlab/ci/status/stage/common_spec.rb": 0.8733301162719727,7949 "spec/views/projects/deployments/_confirm_rollback_modal_spec.html_spec.rb": 1.4816312789916992,7950 "spec/lib/gitlab/application_rate_limiter_spec.rb": 1.5263164043426514,7951 "spec/lib/gitlab/otp_key_rotator_spec.rb": 1.0123207569122314,7952 "spec/services/jira/requests/projects/list_service_spec.rb": 1.179872751235962,7953 "spec/graphql/resolvers/board_lists_resolver_spec.rb": 1.5238380432128906,7954 "spec/models/metrics/users_starred_dashboard_spec.rb": 0.9578859806060791,7955 "spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb": 0.9658670425415039,7956 "spec/models/pool_repository_spec.rb": 1.176271677017212,7957 "spec/presenters/project_member_presenter_spec.rb": 0.8458261489868164,7958 "spec/models/project_services/issue_tracker_service_spec.rb": 1.0261189937591553,7959 "spec/lib/gitlab/ci/trace/stream_spec.rb": 1.296123743057251,7960 "spec/services/boards/issues/create_service_spec.rb": 1.0688889026641846,7961 "spec/lib/gitlab/jira_import_spec.rb": 0.832728385925293,7962 "spec/services/chat_names/find_user_service_spec.rb": 0.8503391742706299,7963 "spec/graphql/resolvers/last_commit_resolver_spec.rb": 0.9241924285888672,7964 "spec/services/error_tracking/issue_details_service_spec.rb": 0.9999258518218994,7965 "spec/models/issue_assignee_spec.rb": 1.0722649097442627,7966 "spec/views/projects/jobs/show.html.haml_spec.rb": 0.5555684566497803,7967 "spec/services/ci/find_exposed_artifacts_service_spec.rb": 0.6513829231262207,7968 "spec/lib/gitlab/bitbucket_import/wiki_formatter_spec.rb": 0.7739224433898926,7969 "spec/presenters/tree_entry_presenter_spec.rb": 0.3807058334350586,7970 "spec/lib/gitlab/phabricator_import/issues/importer_spec.rb": 0.4704580307006836,7971 "spec/validators/sha_validator_spec.rb": 0.9594366550445557,7972 "spec/views/projects/clusters/clusters/gcp/_form.html.haml_spec.rb": 0.7839052677154541,7973 "spec/services/jira_import/users_importer_spec.rb": 0.6641921997070312,7974 "spec/services/metrics/dashboard/default_embed_service_spec.rb": 0.4690847396850586,7975 "spec/views/projects/jobs/_generic_commit_status.html.haml_spec.rb": 0.713341474533081,7976 "spec/serializers/test_report_entity_spec.rb": 0.6384565830230713,7977 "spec/services/update_container_registry_info_service_spec.rb": 0.5274491310119629,7978 "spec/workers/gitlab/github_import/stage/finish_import_worker_spec.rb": 0.34296298027038574,7979 "spec/workers/build_success_worker_spec.rb": 0.3975653648376465,7980 "spec/models/merge_request/metrics_spec.rb": 0.349806547164917,7981 "spec/lib/gitlab/doctor/secrets_spec.rb": 0.4686129093170166,7982 "spec/models/wiki_page/slug_spec.rb": 0.40156126022338867,7983 "spec/views/profiles/show.html.haml_spec.rb": 0.6618809700012207,7984 "spec/lib/gitlab/github_import/importer/label_links_importer_spec.rb": 0.6594338417053223,7985 "spec/views/projects/ci/lints/show.html.haml_spec.rb": 0.27382349967956543,7986 "spec/models/spam_log_spec.rb": 0.4994537830352783,7987 "spec/models/blob_viewer/base_spec.rb": 0.8738770484924316,7988 "spec/views/projects/services/edit.html.haml_spec.rb": 0.4872744083404541,7989 "spec/services/ci/process_pipeline_service_spec.rb": 0.640235424041748,7990 "spec/presenters/packages/detail/package_presenter_spec.rb": 0.33269453048706055,7991 "spec/models/project_custom_attribute_spec.rb": 0.6486802101135254,7992 "spec/lib/grafana/client_spec.rb": 0.7106516361236572,7993 "spec/graphql/mutations/concerns/mutations/resolves_issuable_spec.rb": 0.4719269275665283,7994 "spec/lib/gitlab/auth/ldap/person_spec.rb": 0.17362403869628906,7995 "spec/lib/gitlab/ci/status/build/canceled_spec.rb": 0.46082019805908203,7996 "spec/workers/namespaces/prune_aggregation_schedules_worker_spec.rb": 0.5690596103668213,7997 "spec/services/users/activity_service_spec.rb": 0.3643159866333008,7998 "spec/models/subscription_spec.rb": 0.41948485374450684,7999 "spec/models/ci/group_variable_spec.rb": 0.361830472946167,8000 "spec/lib/gitlab/allowable_spec.rb": 0.3784940242767334,8001 "spec/workers/concerns/gitlab/github_import/rescheduling_methods_spec.rb": 0.3389890193939209,8002 "spec/routing/import_routing_spec.rb": 0.3458735942840576,8003 "spec/graphql/resolvers/project_merge_requests_resolver_spec.rb": 0.3112313747406006,8004 "spec/models/deploy_key_spec.rb": 0.2940840721130371,8005 "spec/services/branches/create_service_spec.rb": 0.10654735565185547,8006 "spec/lib/gitlab/git/repository_cleaner_spec.rb": 0.29166531562805176,8007 "spec/workers/clusters/applications/wait_for_uninstall_app_worker_spec.rb": 0.3079037666320801,8008 "spec/models/push_event_payload_spec.rb": 0.20875334739685059,8009 "spec/lib/sentry/client/issue_link_spec.rb": 0.5055911540985107,8010 "spec/services/wiki_pages/event_create_service_spec.rb": 0.21906375885009766,8011 "spec/lib/gitlab/polling_interval_spec.rb": 0.06267881393432617,8012 "spec/finders/autocomplete/acts_as_taggable_on/tags_finder_spec.rb": 0.06636381149291992,8013 "spec/presenters/ci/trigger_presenter_spec.rb": 0.27748775482177734,8014 "spec/serializers/issuable_sidebar_extras_entity_spec.rb": 0.24371027946472168,8015 "spec/services/releases/create_evidence_service_spec.rb": 0.2169666290283203,8016 "spec/services/namespaces/statistics_refresher_service_spec.rb": 0.2546515464782715,8017 "spec/rubocop/cop/rspec/be_success_matcher_spec.rb": 0.0989382266998291,8018 "spec/lib/gitlab/git/push_spec.rb": 0.5625691413879395,8019 "spec/lib/gitlab/ci/variables/collection/item_spec.rb": 0.22295570373535156,8020 "spec/lib/gitlab/uploads_transfer_spec.rb": 0.16702747344970703,8021 "spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb": 0.22329425811767578,8022 "spec/workers/prune_web_hook_logs_worker_spec.rb": 0.197282075881958,8023 "spec/workers/gitlab/jira_import/stage/import_labels_worker_spec.rb": 0.17506647109985352,8024 "spec/serializers/analytics_build_serializer_spec.rb": 0.19053959846496582,8025 "spec/lib/banzai/pipeline/post_process_pipeline_spec.rb": 0.15714430809020996,8026 "spec/services/markdown_content_rewriter_service_spec.rb": 0.4091663360595703,8027 "spec/lib/gitlab/github_import/importer/lfs_object_importer_spec.rb": 0.1669600009918213,8028 "spec/lib/gitlab/import_sources_spec.rb": 0.16819381713867188,8029 "spec/initializers/zz_metrics_spec.rb": 0.19291305541992188,8030 "spec/services/packages/nuget/create_dependency_service_spec.rb": 0.08688592910766602,8031 "spec/services/emails/create_service_spec.rb": 0.18843293190002441,8032 "spec/workers/admin_email_worker_spec.rb": 0.1992354393005371,8033 "spec/workers/ci/build_prepare_worker_spec.rb": 0.19692468643188477,8034 "spec/workers/group_export_worker_spec.rb": 0.1319272518157959,8035 "spec/graphql/mutations/boards/lists/create_spec.rb": 0.12775111198425293,8036 "spec/lib/gitlab/alerting/notification_payload_parser_spec.rb": 0.1179203987121582,8037 "spec/services/packages/pypi/create_package_service_spec.rb": 0.12133502960205078,8038 "spec/workers/expire_job_cache_worker_spec.rb": 0.12353205680847168,8039 "spec/lib/gitlab/import_export/command_line_util_spec.rb": 0.139298677444458,8040 "spec/models/packages/dependency_spec.rb": 0.09562444686889648,8041 "spec/lib/gitlab/ci/config/normalizer_spec.rb": 0.11520648002624512,8042 "spec/validators/devise_email_validator_spec.rb": 0.11277484893798828,8043 "spec/lib/gitlab/danger/emoji_checker_spec.rb": 0.09559059143066406,8044 "spec/rubocop/cop/migration/prevent_strings_spec.rb": 0.05467820167541504,8045 "spec/lib/gitlab/usage_data_counters/wiki_page_counter_spec.rb": 0.09699845314025879,8046 "spec/services/projects/deploy_tokens/destroy_service_spec.rb": 0.08271288871765137,8047 "spec/lib/gitlab/metrics_spec.rb": 0.11720013618469238,8048 "spec/lib/gitlab/repository_hash_cache_spec.rb": 0.09495019912719727,8049 "spec/lib/gitlab/gl_repository/repo_type_spec.rb": 0.10655927658081055,8050 "spec/lib/gitlab/suggestions/commit_message_spec.rb": 0.08655500411987305,8051 "spec/services/incident_management/pager_duty/process_webhook_service_spec.rb": 0.10283279418945312,8052 "spec/lib/banzai/filter/table_of_contents_filter_spec.rb": 0.07613301277160645,8053 "spec/lib/feature/definition_spec.rb": 0.06411123275756836,8054 "spec/views/help/instance_configuration.html.haml_spec.rb": 0.29406285285949707,8055 "spec/lib/gitlab/metrics/transaction_spec.rb": 0.08789372444152832,8056 "spec/lib/csv_builder_spec.rb": 0.06571769714355469,8057 "spec/lib/gitlab/issuables_count_for_state_spec.rb": 0.0796198844909668,8058 "spec/lib/gitlab/dependency_linker/podfile_linker_spec.rb": 0.06657290458679199,8059 "spec/policies/identity_provider_policy_spec.rb": 0.07082414627075195,8060 "spec/lib/gitlab/sidekiq_middleware/admin_mode/server_spec.rb": 0.05699443817138672,8061 "spec/lib/gitlab/web_ide/config/entry/global_spec.rb": 0.05905938148498535,8062 "spec/lib/gitlab/markdown_cache/redis/extension_spec.rb": 0.0478055477142334,8063 "spec/serializers/build_trace_entity_spec.rb": 0.07573819160461426,8064 "spec/lib/gitlab/hook_data/base_builder_spec.rb": 0.04156756401062012,8065 "spec/helpers/ci/pipelines_helper_spec.rb": 0.04586219787597656,8066 "spec/workers/clusters/applications/check_prometheus_health_worker_spec.rb": 0.04819512367248535,8067 "spec/lib/gitlab/kubernetes/helm/patch_command_spec.rb": 0.03980302810668945,8068 "spec/lib/gitlab/usage_data/topology_spec.rb": 0.04875755310058594,8069 "spec/lib/bitbucket_server/representation/activity_spec.rb": 0.07287454605102539,8070 "spec/lib/gitlab/utils/usage_data_spec.rb": 0.06051373481750488,8071 "spec/lib/gitlab/git/user_spec.rb": 0.05050921440124512,8072 "spec/lib/gitlab/redis/hll_spec.rb": 0.05757284164428711,8073 "spec/workers/update_external_pull_requests_worker_spec.rb": 0.03487992286682129,8074 "spec/lib/gitlab/untrusted_regexp/ruby_syntax_spec.rb": 0.04472064971923828,8075 "spec/lib/sentry/api_urls_spec.rb": 0.0413975715637207,8076 "spec/policies/personal_access_token_policy_spec.rb": 0.04096245765686035,8077 "spec/lib/gitlab/untrusted_regexp_spec.rb": 0.039768218994140625,8078 "spec/lib/prometheus/pid_provider_spec.rb": 0.03708291053771973,8079 "spec/services/projects/prometheus/alerts/create_service_spec.rb": 0.05335688591003418,8080 "spec/models/ci/artifact_blob_spec.rb": 0.039791107177734375,8081 "spec/services/personal_access_tokens/revoke_service_spec.rb": 0.03103041648864746,8082 "spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb": 0.03544974327087402,8083 "spec/lib/gitlab/ci/parsers/coverage/cobertura_spec.rb": 0.04106712341308594,8084 "spec/lib/gitlab/ci/config/normalizer/number_strategy_spec.rb": 0.0327911376953125,8085 "spec/lib/gitlab/etag_caching/router_spec.rb": 0.04166412353515625,8086 "spec/lib/gitlab/jwt_authenticatable_spec.rb": 0.03510165214538574,8087 "spec/lib/gitlab/diff/formatters/image_formatter_spec.rb": 0.034387826919555664,8088 "spec/lib/expand_variables_spec.rb": 0.043024301528930664,8089 "spec/lib/gitlab/kubernetes/helm/base_command_spec.rb": 0.03620576858520508,8090 "spec/graphql/resolvers/project_resolver_spec.rb": 0.02053523063659668,8091 "spec/views/search/_form.html.haml_spec.rb": 0.03491806983947754,8092 "spec/rubocop/cop/code_reuse/worker_spec.rb": 0.025237083435058594,8093 "spec/services/grafana/proxy_service_spec.rb": 0.024876117706298828,8094 "spec/lib/gitlab/ci/config/normalizer/matrix_strategy_spec.rb": 0.022634506225585938,8095 "spec/lib/gitlab/ci/config/entry/hidden_spec.rb": 0.01938486099243164,8096 "spec/workers/gitlab_shell_worker_spec.rb": 0.020069599151611328,8097 "spec/lib/rspec_flaky/report_spec.rb": 0.024209976196289062,8098 "spec/services/access_token_validation_service_spec.rb": 0.02144622802734375,8099 "spec/config/object_store_settings_spec.rb": 0.019262075424194336,8100 "spec/lib/gitlab/pagination/keyset/page_spec.rb": 0.018742799758911133,8101 "spec/helpers/time_helper_spec.rb": 0.01868438720703125,8102 "spec/lib/microsoft_teams/notifier_spec.rb": 0.01988983154296875,8103 "spec/lib/gitlab/import_export/import_test_coverage_spec.rb": 0.02183699607849121,8104 "spec/lib/gitlab/checks/force_push_spec.rb": 0.020986557006835938,8105 "spec/lib/gitlab/alert_management/alert_params_spec.rb": 0.017150402069091797,8106 "spec/lib/peek/views/redis_detailed_spec.rb": 0.020887374877929688,8107 "spec/helpers/blame_helper_spec.rb": 0.019521236419677734,8108 "spec/lib/gitlab/middleware/same_site_cookies_spec.rb": 0.021580219268798828,8109 "spec/lib/gitlab/search/query_spec.rb": 0.018849849700927734,8110 "spec/lib/gitlab/github_import/representation/user_spec.rb": 0.018027544021606445,8111 "spec/lib/gitlab/utils/log_limited_array_spec.rb": 0.015552759170532227,8112 "spec/rubocop/cop/rspec/any_instance_of_spec.rb": 0.016998291015625,8113 "spec/graphql/types/group_member_type_spec.rb": 0.010959148406982422,8114 "spec/lib/gitlab/lets_encrypt/challenge_spec.rb": 0.015587329864501953,8115 "spec/lib/gitlab/ci/status/failed_spec.rb": 0.013569831848144531,8116 "spec/lib/gitlab/import_export/attribute_cleaner_spec.rb": 0.01352238655090332,8117 "spec/lib/gitlab/auth/saml/origin_validator_spec.rb": 0.012644290924072266,8118 "spec/serializers/accessibility_reports_comparer_entity_spec.rb": 0.009725570678710938,8119 "spec/workers/propagate_service_template_worker_spec.rb": 0.043184518814086914,8120 "spec/models/pages/virtual_domain_spec.rb": 0.012038707733154297,8121 "spec/lib/gitlab/ci/status/group/common_spec.rb": 0.011528253555297852,8122 "spec/models/badges/group_badge_spec.rb": 0.0417020320892334,8123 "spec/lib/gitlab/ci/status/skipped_spec.rb": 0.012869834899902344,8124 "spec/rubocop/cop/migration/with_lock_retries_with_change_spec.rb": 0.010512351989746094,8125 "spec/models/clusters/project_spec.rb": 0.01071786880493164,8126 "spec/lib/gitlab/database/dynamic_model_helpers_spec.rb": 0.013272523880004883,8127 "spec/rubocop/cop/migration/add_concurrent_index_spec.rb": 0.010404586791992188,8128 "spec/workers/detect_repository_languages_worker_spec.rb": 0.009914875030517578,8129 "spec/serializers/import/githubish_provider_repo_entity_spec.rb": 0.009587764739990234,8130 "spec/lib/google_api/auth_spec.rb": 0.01214599609375,8131 "spec/serializers/import/bitbucket_server_provider_repo_entity_spec.rb": 0.008945226669311523,8132 "spec/lib/api/validations/validators/git_sha_spec.rb": 0.0087738037109375,8133 "spec/lib/api/validations/validators/untrusted_regexp_spec.rb": 0.005644321441650391,8134 "spec/rubocop/cop/project_path_helper_spec.rb": 0.010285139083862305,8135 "spec/graphql/types/ci/pipeline_type_spec.rb": 0.004461765289306641,8136 "spec/lib/gitlab/legacy_github_import/issuable_formatter_spec.rb": 0.007944107055664062,8137 "spec/lib/gitlab/app_json_logger_spec.rb": 0.005744218826293945,8138 "spec/lib/gitlab/config_checker/external_database_checker_spec.rb": 0.005377054214477539,8139 "spec/lib/api/helpers/graphql_helpers_spec.rb": 0.0054340362548828125,8140 "spec/graphql/types/ci/detailed_status_type_spec.rb": 0.0044422149658203125,8141 "spec/lib/gitlab/hashed_path_spec.rb": 0.0048143863677978516,8142 "spec/lib/gitlab/multi_destination_logger_spec.rb": 0.006067991256713867,8143 "spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies_spec.rb": 0.004689693450927734,8144 "spec/lib/gitlab/metrics/delta_spec.rb": 0.0044744014739990234,8145 "spec/graphql/types/container_expiration_policy_older_than_enum_spec.rb": 0.004316091537475586,8146 "spec/lib/api/validations/validators/integer_none_any_spec.rb": 0.004933595657348633,8147 "spec/graphql/types/label_type_spec.rb": 0.005960941314697266,8148 "spec/lib/gitlab/ci_access_spec.rb": 0.004614114761352539,8149 "spec/workers/concerns/gitlab/github_import/queue_spec.rb": 0.002603292465209961,8150 "spec/lib/api/entities/nuget/search_result_spec.rb": 0.003299713134765625,8151 "spec/serializers/ci/daily_build_group_report_result_serializer_spec.rb": 0.0033342838287353516,8152 "spec/graphql/types/tree/type_enum_spec.rb": 0.003983020782470703,8153 "spec/models/project_setting_spec.rb": 0.004177093505859375,8154 "spec/lib/gitlab/sidekiq_status/server_middleware_spec.rb": 0.002492666244506836,8155 "spec/lib/bitbucket/paginator_spec.rb": 0.2294600009918213,8156 "spec/lib/gitlab/github_import/importer/issue_and_label_links_importer_spec.rb": 0.004637479782104492,8157 "spec/lib/gitlab/ci/status/extended_spec.rb": 0.0033953189849853516,8158 "spec/graphql/types/design_management_type_spec.rb": 0.00301647186279296888159}8160Knapsack global time execution for tests: 08m 39s8161Pending: (Failures listed here are expected and do not affect your suite's status)8162 1) Member.add_user when source is a project when admin mode is disabled rejects setting members.created_by to the given admin current_user8163 # Temporarily skipped with xit8164 # ./spec/models/member_spec.rb:2788165 2) Member.add_user when source is a group when admin mode is disabled rejects setting members.created_by to the given admin current_user8166 # Temporarily skipped with xit8167 # ./spec/models/member_spec.rb:2788168 3) JobArtifactUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 8169 # No pattern provided, skipping.8170 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88171 4) JobArtifactUploader behaves like builds correct paths #relative_path is relative8172 # Path not set, skipping.8173 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:398174 5) JobArtifactUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 8175 # No pattern provided, skipping.8176 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88177 6) JobArtifactUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 8178 # No pattern provided, skipping.8179 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88180 7) JobArtifactUploader object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 8181 # No pattern provided, skipping.8182 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88183 8) JobArtifactUploader object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 8184 # No pattern provided, skipping.8185 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88186 9) JobArtifactUploader object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 8187 # No pattern provided, skipping.8188 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88189 10) JobArtifactUploader object store is REMOTE behaves like builds correct paths #relative_path is relative8190 # Path not set, skipping.8191 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:398192 11) JobArtifactUploader object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 8193 # No pattern provided, skipping.8194 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88195 12) JobArtifactUploader object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 8196 # No pattern provided, skipping.8197 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88198 13) ImportExportUploader object_store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 8199 # No pattern provided, skipping.8200 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88201 14) ImportExportUploader object_store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 8202 # No pattern provided, skipping.8203 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88204 15) ImportExportUploader object_store is REMOTE behaves like builds correct paths #relative_path is relative8205 # Path not set, skipping.8206 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:398207 16) ImportExportUploader object_store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 8208 # No pattern provided, skipping.8209 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88210 17) ImportExportUploader object_store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 8211 # No pattern provided, skipping.8212 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:88213Finished in 16 minutes 5 seconds (files took 45.65 seconds to load)82143855 examples, 0 failures, 17 pending8215Sat Aug 29 16:47:48 UTC 20208217Not uploading cache rails-v2-3 due to policy8219Uploading artifacts...8220coverage/: found 5 matching files and directories 8221knapsack/: found 3 matching files and directories 8222rspec_flaky/: found 4 matching files and directories 8223rspec_profiling/: found 2 matching files and directories 8224WARNING: tmp/capybara/: no matching files 8225tmp/memory_test/: found 2 matching files and directories 8226log/*.log: found 15 matching files and directories 8227Uploading artifacts as "archive" to coordinator... ok id=710020358 responseStatus=201 Created token=D7hPecEi8228Uploading artifacts...8229junit_rspec.xml: found 1 matching files and directories 8230Uploading artifacts as "junit" to coordinator... ok id=710020358 responseStatus=201 Created token=D7hPecEi8231Job succeeded