Skip to content
Snippets Groups Projects

rspec unit pg12 2/20

Full log viewer Experiment
Running with gitlab-runner 14.4.0-rc1 (bc99a056)
on docker-auto-scale-com 9538b0ab
feature flags: FF_USE_FASTZIP:true
Resolving secrets
Preparing the "docker+machine" executor
Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...
Starting service postgres:12 ...
Pulling docker image postgres:12 ...
Using docker image sha256:fd694ed1533c17b41ce216f564c485b00c54a22d4381ffffb0a8e0c1b63f1747 for postgres:12 with digest postgres@sha256:5dee94aed72d1549f945e63195ebe720a1472df170f8d2a8807ea02c8ecf6aa2 ...
Starting service redis:5.0-alpine ...
Pulling docker image redis:5.0-alpine ...
Using docker image sha256:a7a6051077c6c9cfc9ad478778271b49900cb5c4667e64a4128306d8f41a5396 for redis:5.0-alpine with digest redis@sha256:cb5840073dc475b45bf856eb666f5e4d19e3b1ae882e0f3a1396d399cfa23702 ...
Waiting for services to be up and running...
Authenticating with credentials from job payload (GitLab Registry)
Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 ...
Using docker image sha256:3a2e6a9cad65fa0415ab85039d82beb91c1c065f731261c1b2b150f34d219920 for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:37c1a65d34690f6db5d9a6308136b2ef8361634b2bc1bed4057561128323c6e3 ...
Preparing environment
Running on runner-9538b0ab-project-278964-concurrent-0 via runner-9538b0ab-gsrm-1634148911-377f3c08...
Getting source from Git repository
$ eval "$CI_PRE_CLONE_SCRIPT"
Downloading archived master...
Connecting to storage.googleapis.com (172.217.193.128:443)
saving to '/tmp/gitlab.tar.gz'
gitlab.tar.gz 3% |* | 11.1M 0:00:30 ETA
gitlab.tar.gz 69% |********************** | 241M 0:00:00 ETA
gitlab.tar.gz 100% |********************************| 346M 0:00:00 ETA
'/tmp/gitlab.tar.gz' saved
Extracting tarball into /builds/gitlab-org/gitlab...
Fetching changes with git depth set to 20...
Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/
Created fresh repository.
remote: Enumerating objects: 110247, done.
remote: Counting objects: 100% (110247/110247), done.
remote: Compressing objects: 100% (75671/75671), done.
remote: Total 110247 (delta 47970), reused 75452 (delta 30626), pack-reused 0
Receiving objects: 100% (110247/110247), 101.87 MiB | 24.99 MiB/s, done.
Resolving deltas: 100% (47970/47970), done.
From https://gitlab.com/gitlab-org/gitlab
* [new ref] 535e4adb5142269adb0ab6e75a281530634a8ca8 -> refs/pipelines/387872470
* [new branch] master -> origin/master
Checking out 535e4adb as master...
Skipping Git submodules setup
Restoring cache
Checking cache for ruby-gems-v1-4...
Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-v1-4
Successfully extracted cache
Checking cache for gitaly-ruby-gems-v1-4...
Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/gitaly-ruby-gems-v1-4
Successfully extracted cache
Downloading artifacts
Downloading artifacts for compile-test-assets (1677157166)...
Downloading artifacts from coordinator... ok id=1677157166 responseStatus=200 OK token=ycJW5xLW
Downloading artifacts for retrieve-tests-metadata (1677157175)...
Downloading artifacts from coordinator... ok id=1677157175 responseStatus=200 OK token=TfUgejm2
Downloading artifacts for setup-test-env (1677157171)...
Downloading artifacts from coordinator... ok id=1677157171 responseStatus=200 OK token=mKsuziZw
Executing "step_script" stage of the job script
Using docker image sha256:3a2e6a9cad65fa0415ab85039d82beb91c1c065f731261c1b2b150f34d219920 for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:37c1a65d34690f6db5d9a6308136b2ef8361634b2bc1bed4057561128323c6e3 ...
$ echo $FOSS_ONLY
$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb
$ export GOPATH=$CI_PROJECT_DIR/.go
$ mkdir -p $GOPATH
$ source scripts/utils.sh
$ source scripts/prepare_build.sh
Bundler version 2.1.4
production:development
Settings are listed in order of priority. The top value will be used.
path
Set for the current user (/root/.bundle/config): "/builds/gitlab-org/gitlab/vendor"
clean
Set for the current user (/root/.bundle/config): "true"
without
Set via BUNDLE_WITHOUT: [:production, :development]
install_flags
Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet"
$ bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check
The Gemfile's dependencies are satisfied
==> 'bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check' succeeded in 2 seconds.
$ bundle pristine pg
Installing pg 1.2.3 with native extensions
==> 'bundle pristine pg' succeeded in 11 seconds.
$ setup_db_user_only
CREATE ROLE
GRANT
==> 'setup_db_user_only' succeeded in 0 seconds.
$ bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee
Dropped database 'gitlabhq_test'
Created database 'gitlabhq_test'
DEPRECATION WARNING: Using `bin/rails db:structure:load` is deprecated and will be removed in Rails 6.2. Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:schema:load` instead. (called from load at /builds/gitlab-org/gitlab/vendor/ruby/2.7.0/bin/rake:23)
Dropped database 'gitlabhq_geo_test'
Created database 'gitlabhq_geo_test'
==> 'bundle exec rake db:drop db:create db:structure:load db:migrate gitlab:db:setup_ee' succeeded in 32 seconds.
$ run_timed_command "gem install knapsack --no-document"
$ gem install knapsack --no-document
Successfully installed knapsack-4.0.0
1 gem installed
==> 'gem install knapsack --no-document' succeeded in 1 seconds.
$ run_timed_command "scripts/gitaly-test-spawn"
$ scripts/gitaly-test-spawn
Settings are listed in order of priority. The top value will be used.
jobs
Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): 4
retry
Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): 3
path
Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): "/builds/gitlab-org/gitlab/vendor/gitaly-ruby"
deployment
Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): true
without
Set for your local app (/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle/config): [:production, :development]
Set via BUNDLE_WITHOUT: [:production, :development]
app_config
Set via BUNDLE_APP_CONFIG: "/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/.bundle"
gemfile
Set via BUNDLE_GEMFILE: "/builds/gitlab-org/gitlab/tmp/tests/gitaly/ruby/Gemfile"
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
Using abstract_type 0.0.7
Using concurrent-ruby 1.1.9
Using i18n 1.8.10
Using minitest 5.14.4
Using tzinfo 2.0.4
Using zeitwerk 2.4.2
Using activesupport 6.1.4.1
Using builder 3.2.4
Using erubi 1.10.0
Using mini_portile2 2.5.1
Using racc 1.5.2
Using nokogiri 1.11.7 (x86_64-linux)
Using rails-dom-testing 2.0.3
Using crass 1.0.6
Using loofah 2.12.0
Using rails-html-sanitizer 1.4.2
Using actionview 6.1.4.1
Using rack 2.2.3
Using rack-test 1.1.0
Using actionpack 6.1.4.1
Using ice_nine 0.11.2
Using thread_safe 0.3.6
Using memoizable 0.4.2
Using adamantium 0.2.0
Using public_suffix 4.0.6
Using addressable 2.7.0
Using ast 2.4.1
Using binding_ninja 0.2.3
Using bundler 2.1.4
Using charlock_holmes 0.7.7
Using coderay 1.1.2
Using equalizer 0.0.11
Using concord 0.1.5
Using diff-lcs 1.3
Using dotenv 2.7.6
Using escape_utils 1.2.1
Using factory_bot 5.0.2
Using multipart-post 2.1.1
Using faraday 1.0.1
Using ffi 1.15.3
Using json 2.5.1
Using gemojione 3.3.0
Using mini_mime 1.0.2
Using rugged 1.1.0
Using github-linguist 7.12.1
Using github-markup 1.7.0
Using mime-types-data 3.2020.1104
Using mime-types 3.3.1
Using gitlab-gollum-rugged_adapter 0.4.4.4.gitlab.1
Using rouge 3.26.0
Using nokogumbo 1.5.0
Using sanitize 4.6.6
Using stringex 2.8.5
Using gitlab-gollum-lib 4.2.7.10.gitlab.1
Using google-protobuf 3.17.3 (x86_64-linux)
Using googleapis-common-protos-types 1.1.0
Using grpc 1.30.2 (x86_64-linux)
Using opentracing 0.5.0
Using thrift 0.15.0
Using jaeger-client 1.1.0
Using pg_query 2.1.0
Using redis 4.4.0
Using gitlab-labkit 0.21.2
Using gitlab-markup 1.7.1
Using grpc-tools 1.30.2
Using sawyer 0.8.2
Using octokit 4.20.0
Using reverse_markdown 1.4.0
Using thor 1.1.0
Using licensee 9.14.1
Using method_source 0.9.2
Using msgpack 1.3.3
Using optimist 3.0.1
Using parallel 1.19.2
Using parser 2.7.2.0
Using procto 0.0.3
Using unparser 0.4.7
Using proc_to_ast 0.1.0
Using pry 0.12.2
Using rainbow 3.0.0
Using rbtrace 0.4.14
Using rdoc 6.3.2
Using regexp_parser 1.8.1
Using rexml 3.2.4
Using rspec-support 3.8.0
Using rspec-core 3.8.0
Using rspec-expectations 3.8.3
Using rspec-mocks 3.8.0
Using rspec 3.8.0
Using rspec-parameterized 0.4.2
Using rubocop-ast 0.2.0
Using ruby-progressbar 1.10.1
Using unicode-display_width 1.7.0
Using rubocop 0.86.0
Using sentry-raven 3.0.4
Using timecop 0.9.1
Bundle complete! 21 Gemfile dependencies, 96 gems now installed.
Gems in the groups production and development were not installed.
Bundled gems are installed into `/builds/gitlab-org/gitlab/vendor/gitaly-ruby`
Checking gitaly-ruby Gemfile...
Checking gitaly-ruby bundle...
The Gemfile's dependencies are satisfied
Trying to connect to gitaly: ........................................................ OK
Trying to connect to gitaly2: ............................................................................. OK
Trying to connect to praefect: ......... OK
==> 'scripts/gitaly-test-spawn' succeeded in 16 seconds.
$ source ./scripts/rspec_helpers.sh
$ rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"
KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,config,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,models,policies,presenters,rack_servers,replicators,routing,rubocop,serializers,services,sidekiq,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb
Knapsack node specs:
spec/db/schema_spec.rb
spec/models/event_spec.rb
spec/services/clusters/gcp/finalize_creation_service_spec.rb
spec/services/projects/overwrite_project_service_spec.rb
spec/lib/gitlab/background_migration/wrongfully_confirmed_email_unconfirmer_spec.rb
spec/uploaders/file_uploader_spec.rb
spec/lib/gitlab/background_migration/migrate_users_bio_to_user_details_spec.rb
spec/policies/global_policy_spec.rb
spec/lib/gitlab/bare_repository_import/importer_spec.rb
spec/finders/notes_finder_spec.rb
spec/lib/api/helpers_spec.rb
spec/lib/gitlab/gpg/commit_spec.rb
spec/lib/banzai/pipeline/wiki_pipeline_spec.rb
spec/lib/gitlab/background_migration/populate_has_vulnerabilities_spec.rb
spec/services/packages/nuget/search_service_spec.rb
spec/lib/gitlab/ci/config_spec.rb
spec/rubocop/cop/gitlab/mark_used_feature_flags_spec.rb
spec/models/ci/pipeline_schedule_spec.rb
spec/models/resource_label_event_spec.rb
spec/models/concerns/routable_spec.rb
spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb
spec/presenters/commit_status_presenter_spec.rb
spec/models/concerns/milestoneable_spec.rb
spec/models/concerns/token_authenticatable_spec.rb
spec/lib/gitlab/git/tag_spec.rb
spec/presenters/merge_request_presenter_spec.rb
spec/services/push_event_payload_service_spec.rb
spec/serializers/diffs_entity_spec.rb
spec/services/ci/pipeline_trigger_service_spec.rb
spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb
spec/services/wikis/create_attachment_service_spec.rb
spec/lib/gitlab/database/background_migration/batched_migration_spec.rb
spec/policies/metrics/dashboard/annotation_policy_spec.rb
spec/models/project_snippet_spec.rb
spec/services/git/tag_hooks_service_spec.rb
spec/helpers/dropdowns_helper_spec.rb
spec/models/upload_spec.rb
spec/lib/gitlab/database/load_balancing/load_balancer_spec.rb
spec/lib/gitlab/alert_management/payload/generic_spec.rb
spec/finders/projects/members/effective_access_level_finder_spec.rb
spec/services/snippets/bulk_destroy_service_spec.rb
spec/models/commit_collection_spec.rb
spec/lib/gitlab/sidekiq_config/worker_router_spec.rb
spec/serializers/diff_file_entity_spec.rb
spec/models/ci/pending_build_spec.rb
spec/serializers/deploy_key_entity_spec.rb
spec/policies/clusters/cluster_policy_spec.rb
spec/lib/gitlab/hook_data/issuable_builder_spec.rb
spec/serializers/ci/trigger_entity_spec.rb
spec/lib/gitlab/github_import/importer/releases_importer_spec.rb
spec/lib/gitlab/checks/changes_access_spec.rb
spec/services/groups/autocomplete_service_spec.rb
spec/views/projects/commit/branches.html.haml_spec.rb
spec/policies/ci/pipeline_policy_spec.rb
spec/initializers/direct_upload_support_spec.rb
spec/lib/gitlab/consul/internal_spec.rb
spec/lib/gitlab/slash_commands/deploy_spec.rb
spec/presenters/snippet_blob_presenter_spec.rb
spec/lib/gitlab/sidekiq_cluster_spec.rb
spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb
spec/services/ci/pipeline_artifacts/destroy_all_expired_service_spec.rb
spec/services/repositories/housekeeping_service_spec.rb
spec/policies/ci/trigger_policy_spec.rb
spec/services/pod_logs/kubernetes_service_spec.rb
spec/services/snippets/update_statistics_service_spec.rb
spec/lib/gitlab/github_import/representation/diff_note_spec.rb
spec/lib/banzai/filter/autolink_filter_spec.rb
spec/services/ci/play_manual_stage_service_spec.rb
spec/services/metrics/dashboard/update_dashboard_service_spec.rb
spec/models/ci/commit_with_pipeline_spec.rb
spec/lib/gitlab/template/issue_template_spec.rb
spec/lib/gitlab/github_import/importer/single_endpoint_issue_notes_importer_spec.rb
spec/lib/gitlab/kubernetes/helm/v3/install_command_spec.rb
spec/lib/bulk_imports/clients/http_spec.rb
spec/lib/gitlab/kubernetes/helm/v2/base_command_spec.rb
spec/lib/gitlab/file_hook_spec.rb
spec/lib/gitlab/database/background_migration/batched_job_spec.rb
spec/lib/gitlab/gitaly_client/blob_service_spec.rb
spec/lib/gitlab/manifest_import/project_creator_spec.rb
spec/helpers/notify_helper_spec.rb
spec/lib/gitlab/ci/reports/security/scanner_spec.rb
spec/finders/concerns/finder_with_group_hierarchy_spec.rb
spec/models/incident_management/project_incident_management_setting_spec.rb
spec/graphql/types/user_merge_request_interaction_type_spec.rb
spec/lib/gitlab/composer/cache_spec.rb
spec/models/jira_connect_installation_spec.rb
spec/views/shared/wikis/_sidebar.html.haml_spec.rb
spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb
spec/services/boards/lists/destroy_service_spec.rb
spec/policies/clusters/instance_policy_spec.rb
spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb
spec/services/packages/debian/create_distribution_service_spec.rb
spec/graphql/types/base_enum_spec.rb
spec/finders/tags_finder_spec.rb
spec/lib/gitlab/kubernetes_spec.rb
spec/lib/banzai/reference_parser/feature_flag_parser_spec.rb
spec/services/projects/hashed_storage/migration_service_spec.rb
spec/graphql/types/group_type_spec.rb
spec/lib/gitlab/ci/config/entry/product/matrix_spec.rb
spec/lib/sidebars/groups/menus/group_information_menu_spec.rb
spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb
spec/workers/ci/pipeline_success_unlock_artifacts_worker_spec.rb
spec/views/projects/commits/_commit.html.haml_spec.rb
spec/lib/constraints/project_url_constrainer_spec.rb
spec/lib/gitlab/git_access_wiki_spec.rb
spec/policies/terraform/state_version_policy_spec.rb
spec/lib/gitlab/database/load_balancing/host_list_spec.rb
spec/graphql/resolvers/projects/jira_projects_resolver_spec.rb
spec/graphql/mutations/issues/move_spec.rb
spec/lib/gitlab/utils/strong_memoize_spec.rb
spec/lib/gitlab/template_parser/parser_spec.rb
spec/models/authentication_event_spec.rb
spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb
spec/models/packages/go/module_spec.rb
spec/lib/gitlab/health_checks/redis/rate_limiting_check_spec.rb
spec/finders/packages/helm/packages_finder_spec.rb
spec/lib/gitlab/database/migration_spec.rb
spec/lib/gitlab/import_export/command_line_util_spec.rb
spec/lib/gitlab/local_and_remote_storage_migration/artifact_migrater_spec.rb
spec/lib/gitlab/kubernetes/namespace_spec.rb
spec/config/object_store_settings_spec.rb
spec/models/experiment_subject_spec.rb
spec/lib/gitlab/static_site_editor/config/file_config_spec.rb
spec/models/milestone_release_spec.rb
spec/services/projects/hashed_storage/base_attachment_service_spec.rb
spec/helpers/keyset_helper_spec.rb
spec/workers/error_tracking_issue_link_worker_spec.rb
spec/lib/gitlab/ci/pipeline/chain/seed_block_spec.rb
spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end_spec.rb
spec/services/users/reject_service_spec.rb
spec/lib/gitlab/middleware/basic_health_check_spec.rb
spec/graphql/resolvers/last_commit_resolver_spec.rb
spec/lib/api/entities/project_import_status_spec.rb
spec/lib/gitlab/sidekiq_middleware/worker_context/server_spec.rb
spec/rubocop/cop/active_model_errors_direct_manipulation_spec.rb
spec/services/metrics/dashboard/default_embed_service_spec.rb
spec/workers/gitlab/jira_import/stage/import_attachments_worker_spec.rb
spec/lib/gitlab/database/reindexing/reindex_concurrently_spec.rb
spec/lib/gitlab/kubernetes/deployment_spec.rb
spec/lib/gitlab/usage_data_counters/designs_counter_spec.rb
spec/rubocop/cop/rspec/be_success_matcher_spec.rb
spec/workers/gitlab/jira_import/stage/start_import_worker_spec.rb
spec/serializers/service_field_entity_spec.rb
spec/services/projects/count_service_spec.rb
spec/lib/gitlab/ci/config/entry/release/assets/links_spec.rb
spec/lib/gitlab/metrics/dashboard/stages/panel_ids_inserter_spec.rb
spec/finders/uploader_finder_spec.rb
spec/lib/gitlab/ci/status/build/pending_spec.rb
spec/lib/gitlab/phabricator_import/project_creator_spec.rb
spec/lib/gitlab/template/gitignore_template_spec.rb
spec/services/discussions/capture_diff_note_positions_service_spec.rb
spec/lib/gitlab/sourcegraph_spec.rb
spec/policies/release_policy_spec.rb
spec/services/ide/base_config_service_spec.rb
spec/workers/bulk_imports/export_request_worker_spec.rb
spec/lib/gitlab/database/reindexing/reindex_action_spec.rb
spec/services/packages/nuget/sync_metadatum_service_spec.rb
spec/lib/gitlab/metrics/dashboard/stages/url_validator_spec.rb
spec/lib/gitlab/middleware/multipart/handler_spec.rb
spec/lib/gitlab/diff/position_collection_spec.rb
spec/workers/create_pipeline_worker_spec.rb
spec/lib/gitlab/ci/pipeline/chain/helpers_spec.rb
spec/graphql/resolvers/users/groups_resolver_spec.rb
spec/serializers/diff_file_metadata_entity_spec.rb
spec/services/packages/helm/extract_file_metadata_service_spec.rb
spec/lib/gitlab/ci/reports/security/finding_signature_spec.rb
spec/graphql/types/packages/package_sort_enum_spec.rb
spec/graphql/resolvers/merge_request_pipelines_resolver_spec.rb
spec/presenters/award_emoji_presenter_spec.rb
spec/lib/gitlab/database/migrations/observers/total_database_size_change_spec.rb
spec/services/applications/create_service_spec.rb
spec/lib/serializers/symbolized_json_spec.rb
spec/workers/namespaces/onboarding_pipeline_created_worker_spec.rb
spec/serializers/evidences/release_entity_spec.rb
spec/serializers/cluster_serializer_spec.rb
spec/workers/propagate_integration_inherit_worker_spec.rb
spec/lib/gitlab/database/partitioning/detached_partition_dropper_spec.rb
spec/lib/gitlab/string_range_marker_spec.rb
spec/lib/banzai/filter/image_link_filter_spec.rb
spec/serializers/accessibility_reports_comparer_entity_spec.rb
spec/models/user_custom_attribute_spec.rb
spec/workers/remote_mirror_notification_worker_spec.rb
spec/graphql/mutations/ci/job_token_scope/add_project_spec.rb
spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb
spec/services/webauthn/register_service_spec.rb
spec/validators/namespace_path_validator_spec.rb
spec/lib/gitlab/import_export/json/ndjson_writer_spec.rb
spec/lib/system_check/app/hashed_storage_enabled_check_spec.rb
spec/models/blob_viewer/license_spec.rb
spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb
spec/workers/authorized_project_update/user_refresh_over_user_range_worker_spec.rb
spec/graphql/mutations/alert_management/http_integration/reset_token_spec.rb
spec/graphql/types/tree/tree_entry_type_spec.rb
spec/lib/api/validations/validators/project_portable_spec.rb
spec/presenters/packages/nuget/package_metadata_presenter_spec.rb
spec/lib/api/validations/validators/array_none_any_spec.rb
spec/graphql/types/tree/submodule_type_spec.rb
spec/tooling/lib/tooling/test_map_generator_spec.rb
spec/models/dependency_proxy/image_ttl_group_policy_spec.rb
spec/lib/gitlab/usage/metrics/instrumentations/count_users_associating_milestones_to_releases_metric_spec.rb
spec/lib/gitlab/github_import/importer/pull_request_merged_by_importer_spec.rb
spec/lib/gitlab/cross_project_access_spec.rb
spec/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event_spec.rb
spec/initializers/settings_spec.rb
spec/services/packages/debian/find_or_create_incoming_service_spec.rb
spec/workers/dependency_proxy/cleanup_blob_worker_spec.rb
spec/tooling/danger/specs_spec.rb
spec/views/profiles/show.html.haml_spec.rb
spec/services/members/mailgun/process_webhook_service_spec.rb
spec/lib/gitlab/ci/status/success_spec.rb
spec/lib/gitlab/import_export/design_repo_restorer_spec.rb
spec/graphql/types/ci/config/job_restriction_type_spec.rb
spec/lib/gitlab/cycle_analytics/updater_spec.rb
spec/finders/repositories/branch_names_finder_spec.rb
spec/serializers/build_artifact_entity_spec.rb
spec/lib/gitlab/error_tracking/processor/grpc_error_processor_spec.rb
spec/serializers/import/bitbucket_provider_repo_entity_spec.rb
spec/serializers/import/gitlab_provider_repo_entity_spec.rb
spec/lib/gitlab/database/load_balancing/srv_resolver_spec.rb
spec/graphql/types/namespace_type_spec.rb
spec/services/webauthn/authenticate_service_spec.rb
spec/services/auth/dependency_proxy_authentication_service_spec.rb
spec/serializers/merge_request_current_user_entity_spec.rb
spec/lib/banzai/pipeline/email_pipeline_spec.rb
spec/helpers/container_registry_helper_spec.rb
spec/models/bulk_imports/file_transfer_spec.rb
spec/lib/gitlab/graphql/generic_tracing_spec.rb
spec/lib/gitlab/kubernetes/kubeconfig/entry/cluster_spec.rb
spec/lib/gitlab/uploads_transfer_spec.rb
spec/lib/api/entities/design_management/design_spec.rb
spec/models/concerns/presentable_spec.rb
spec/lib/atlassian/jira_connect/serializers/branch_entity_spec.rb
spec/models/instance_metadata/kas_spec.rb
spec/lib/gitlab/database/shared_model_spec.rb
spec/models/instance_metadata_spec.rb
spec/lib/api/entities/clusters/agent_spec.rb
spec/graphql/types/ci/runner_setup_type_spec.rb
spec/rubocop/cop/gitlab/httparty_spec.rb
spec/lib/gitlab/grape_logging/loggers/perf_logger_spec.rb
spec/lib/gitlab/ci/pipeline/metrics_spec.rb
spec/rubocop/cop/api/grape_array_missing_coerce_spec.rb
spec/lib/gitlab/email/service_desk_receiver_spec.rb
spec/workers/environments/auto_stop_cron_worker_spec.rb
spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb
spec/serializers/namespace_serializer_spec.rb
spec/lib/gitlab/slash_commands/application_help_spec.rb
spec/graphql/types/packages/package_details_type_spec.rb
spec/initializers/cookies_serializer_spec.rb
spec/graphql/types/packages/package_file_type_spec.rb
spec/lib/gitlab/database/postgresql_database_tasks/load_schema_versions_mixin_spec.rb
spec/views/groups/settings/_transfer.html.haml_spec.rb
spec/graphql/types/subscription_type_spec.rb
spec/graphql/types/packages/conan/metadatum_type_spec.rb
spec/models/packages/build_info_spec.rb
spec/services/ide/schemas_config_service_spec.rb
Filter specs:
Running specs:
Running all node tests without filter
spec/db/schema_spec.rb
spec/models/event_spec.rb
spec/services/clusters/gcp/finalize_creation_service_spec.rb
spec/services/projects/overwrite_project_service_spec.rb
spec/lib/gitlab/background_migration/wrongfully_confirmed_email_unconfirmer_spec.rb
spec/uploaders/file_uploader_spec.rb
spec/lib/gitlab/background_migration/migrate_users_bio_to_user_details_spec.rb
spec/policies/global_policy_spec.rb
spec/lib/gitlab/bare_repository_import/importer_spec.rb
spec/finders/notes_finder_spec.rb
spec/lib/api/helpers_spec.rb
spec/lib/gitlab/gpg/commit_spec.rb
spec/lib/banzai/pipeline/wiki_pipeline_spec.rb
spec/lib/gitlab/background_migration/populate_has_vulnerabilities_spec.rb
spec/services/packages/nuget/search_service_spec.rb
spec/lib/gitlab/ci/config_spec.rb
spec/rubocop/cop/gitlab/mark_used_feature_flags_spec.rb
spec/models/ci/pipeline_schedule_spec.rb
spec/models/resource_label_event_spec.rb
spec/models/concerns/routable_spec.rb
spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb
spec/presenters/commit_status_presenter_spec.rb
spec/models/concerns/milestoneable_spec.rb
spec/models/concerns/token_authenticatable_spec.rb
spec/lib/gitlab/git/tag_spec.rb
spec/presenters/merge_request_presenter_spec.rb
spec/services/push_event_payload_service_spec.rb
spec/serializers/diffs_entity_spec.rb
spec/services/ci/pipeline_trigger_service_spec.rb
spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb
spec/services/wikis/create_attachment_service_spec.rb
spec/lib/gitlab/database/background_migration/batched_migration_spec.rb
spec/policies/metrics/dashboard/annotation_policy_spec.rb
spec/models/project_snippet_spec.rb
spec/services/git/tag_hooks_service_spec.rb
spec/helpers/dropdowns_helper_spec.rb
spec/models/upload_spec.rb
spec/lib/gitlab/database/load_balancing/load_balancer_spec.rb
spec/lib/gitlab/alert_management/payload/generic_spec.rb
spec/finders/projects/members/effective_access_level_finder_spec.rb
spec/services/snippets/bulk_destroy_service_spec.rb
spec/models/commit_collection_spec.rb
spec/lib/gitlab/sidekiq_config/worker_router_spec.rb
spec/serializers/diff_file_entity_spec.rb
spec/models/ci/pending_build_spec.rb
spec/serializers/deploy_key_entity_spec.rb
spec/policies/clusters/cluster_policy_spec.rb
spec/lib/gitlab/hook_data/issuable_builder_spec.rb
spec/serializers/ci/trigger_entity_spec.rb
spec/lib/gitlab/github_import/importer/releases_importer_spec.rb
spec/lib/gitlab/checks/changes_access_spec.rb
spec/services/groups/autocomplete_service_spec.rb
spec/views/projects/commit/branches.html.haml_spec.rb
spec/policies/ci/pipeline_policy_spec.rb
spec/initializers/direct_upload_support_spec.rb
spec/lib/gitlab/consul/internal_spec.rb
spec/lib/gitlab/slash_commands/deploy_spec.rb
spec/presenters/snippet_blob_presenter_spec.rb
spec/lib/gitlab/sidekiq_cluster_spec.rb
spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb
spec/services/ci/pipeline_artifacts/destroy_all_expired_service_spec.rb
spec/services/repositories/housekeeping_service_spec.rb
spec/policies/ci/trigger_policy_spec.rb
spec/services/pod_logs/kubernetes_service_spec.rb
spec/services/snippets/update_statistics_service_spec.rb
spec/lib/gitlab/github_import/representation/diff_note_spec.rb
spec/lib/banzai/filter/autolink_filter_spec.rb
spec/services/ci/play_manual_stage_service_spec.rb
spec/services/metrics/dashboard/update_dashboard_service_spec.rb
spec/models/ci/commit_with_pipeline_spec.rb
spec/lib/gitlab/template/issue_template_spec.rb
spec/lib/gitlab/github_import/importer/single_endpoint_issue_notes_importer_spec.rb
spec/lib/gitlab/kubernetes/helm/v3/install_command_spec.rb
spec/lib/bulk_imports/clients/http_spec.rb
spec/lib/gitlab/kubernetes/helm/v2/base_command_spec.rb
spec/lib/gitlab/file_hook_spec.rb
spec/lib/gitlab/database/background_migration/batched_job_spec.rb
spec/lib/gitlab/gitaly_client/blob_service_spec.rb
spec/lib/gitlab/manifest_import/project_creator_spec.rb
spec/helpers/notify_helper_spec.rb
spec/lib/gitlab/ci/reports/security/scanner_spec.rb
spec/finders/concerns/finder_with_group_hierarchy_spec.rb
spec/models/incident_management/project_incident_management_setting_spec.rb
spec/graphql/types/user_merge_request_interaction_type_spec.rb
spec/lib/gitlab/composer/cache_spec.rb
spec/models/jira_connect_installation_spec.rb
spec/views/shared/wikis/_sidebar.html.haml_spec.rb
spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb
spec/services/boards/lists/destroy_service_spec.rb
spec/policies/clusters/instance_policy_spec.rb
spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb
spec/services/packages/debian/create_distribution_service_spec.rb
spec/graphql/types/base_enum_spec.rb
spec/finders/tags_finder_spec.rb
spec/lib/gitlab/kubernetes_spec.rb
spec/lib/banzai/reference_parser/feature_flag_parser_spec.rb
spec/services/projects/hashed_storage/migration_service_spec.rb
spec/graphql/types/group_type_spec.rb
spec/lib/gitlab/ci/config/entry/product/matrix_spec.rb
spec/lib/sidebars/groups/menus/group_information_menu_spec.rb
spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb
spec/workers/ci/pipeline_success_unlock_artifacts_worker_spec.rb
spec/views/projects/commits/_commit.html.haml_spec.rb
spec/lib/constraints/project_url_constrainer_spec.rb
spec/lib/gitlab/git_access_wiki_spec.rb
spec/policies/terraform/state_version_policy_spec.rb
spec/lib/gitlab/database/load_balancing/host_list_spec.rb
spec/graphql/resolvers/projects/jira_projects_resolver_spec.rb
spec/graphql/mutations/issues/move_spec.rb
spec/lib/gitlab/utils/strong_memoize_spec.rb
spec/lib/gitlab/template_parser/parser_spec.rb
spec/models/authentication_event_spec.rb
spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb
spec/models/packages/go/module_spec.rb
spec/lib/gitlab/health_checks/redis/rate_limiting_check_spec.rb
spec/finders/packages/helm/packages_finder_spec.rb
spec/lib/gitlab/database/migration_spec.rb
spec/lib/gitlab/import_export/command_line_util_spec.rb
spec/lib/gitlab/local_and_remote_storage_migration/artifact_migrater_spec.rb
spec/lib/gitlab/kubernetes/namespace_spec.rb
spec/config/object_store_settings_spec.rb
spec/models/experiment_subject_spec.rb
spec/lib/gitlab/static_site_editor/config/file_config_spec.rb
spec/models/milestone_release_spec.rb
spec/services/projects/hashed_storage/base_attachment_service_spec.rb
spec/helpers/keyset_helper_spec.rb
spec/workers/error_tracking_issue_link_worker_spec.rb
spec/lib/gitlab/ci/pipeline/chain/seed_block_spec.rb
spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end_spec.rb
spec/services/users/reject_service_spec.rb
spec/lib/gitlab/middleware/basic_health_check_spec.rb
spec/graphql/resolvers/last_commit_resolver_spec.rb
spec/lib/api/entities/project_import_status_spec.rb
spec/lib/gitlab/sidekiq_middleware/worker_context/server_spec.rb
spec/rubocop/cop/active_model_errors_direct_manipulation_spec.rb
spec/services/metrics/dashboard/default_embed_service_spec.rb
spec/workers/gitlab/jira_import/stage/import_attachments_worker_spec.rb
spec/lib/gitlab/database/reindexing/reindex_concurrently_spec.rb
spec/lib/gitlab/kubernetes/deployment_spec.rb
spec/lib/gitlab/usage_data_counters/designs_counter_spec.rb
spec/rubocop/cop/rspec/be_success_matcher_spec.rb
spec/workers/gitlab/jira_import/stage/start_import_worker_spec.rb
spec/serializers/service_field_entity_spec.rb
spec/services/projects/count_service_spec.rb
spec/lib/gitlab/ci/config/entry/release/assets/links_spec.rb
spec/lib/gitlab/metrics/dashboard/stages/panel_ids_inserter_spec.rb
spec/finders/uploader_finder_spec.rb
spec/lib/gitlab/ci/status/build/pending_spec.rb
spec/lib/gitlab/phabricator_import/project_creator_spec.rb
spec/lib/gitlab/template/gitignore_template_spec.rb
spec/services/discussions/capture_diff_note_positions_service_spec.rb
spec/lib/gitlab/sourcegraph_spec.rb
spec/policies/release_policy_spec.rb
spec/services/ide/base_config_service_spec.rb
spec/workers/bulk_imports/export_request_worker_spec.rb
spec/lib/gitlab/database/reindexing/reindex_action_spec.rb
spec/services/packages/nuget/sync_metadatum_service_spec.rb
spec/lib/gitlab/metrics/dashboard/stages/url_validator_spec.rb
spec/lib/gitlab/middleware/multipart/handler_spec.rb
spec/lib/gitlab/diff/position_collection_spec.rb
spec/workers/create_pipeline_worker_spec.rb
spec/lib/gitlab/ci/pipeline/chain/helpers_spec.rb
spec/graphql/resolvers/users/groups_resolver_spec.rb
spec/serializers/diff_file_metadata_entity_spec.rb
spec/services/packages/helm/extract_file_metadata_service_spec.rb
spec/lib/gitlab/ci/reports/security/finding_signature_spec.rb
spec/graphql/types/packages/package_sort_enum_spec.rb
spec/graphql/resolvers/merge_request_pipelines_resolver_spec.rb
spec/presenters/award_emoji_presenter_spec.rb
spec/lib/gitlab/database/migrations/observers/total_database_size_change_spec.rb
spec/services/applications/create_service_spec.rb
spec/lib/serializers/symbolized_json_spec.rb
spec/workers/namespaces/onboarding_pipeline_created_worker_spec.rb
spec/serializers/evidences/release_entity_spec.rb
spec/serializers/cluster_serializer_spec.rb
spec/workers/propagate_integration_inherit_worker_spec.rb
spec/lib/gitlab/database/partitioning/detached_partition_dropper_spec.rb
spec/lib/gitlab/string_range_marker_spec.rb
spec/lib/banzai/filter/image_link_filter_spec.rb
spec/serializers/accessibility_reports_comparer_entity_spec.rb
spec/models/user_custom_attribute_spec.rb
spec/workers/remote_mirror_notification_worker_spec.rb
spec/graphql/mutations/ci/job_token_scope/add_project_spec.rb
spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb
spec/services/webauthn/register_service_spec.rb
spec/validators/namespace_path_validator_spec.rb
spec/lib/gitlab/import_export/json/ndjson_writer_spec.rb
spec/lib/system_check/app/hashed_storage_enabled_check_spec.rb
spec/models/blob_viewer/license_spec.rb
spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb
spec/workers/authorized_project_update/user_refresh_over_user_range_worker_spec.rb
spec/graphql/mutations/alert_management/http_integration/reset_token_spec.rb
spec/graphql/types/tree/tree_entry_type_spec.rb
spec/lib/api/validations/validators/project_portable_spec.rb
spec/presenters/packages/nuget/package_metadata_presenter_spec.rb
spec/lib/api/validations/validators/array_none_any_spec.rb
spec/graphql/types/tree/submodule_type_spec.rb
spec/tooling/lib/tooling/test_map_generator_spec.rb
spec/models/dependency_proxy/image_ttl_group_policy_spec.rb
spec/lib/gitlab/usage/metrics/instrumentations/count_users_associating_milestones_to_releases_metric_spec.rb
spec/lib/gitlab/github_import/importer/pull_request_merged_by_importer_spec.rb
spec/lib/gitlab/cross_project_access_spec.rb
spec/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event_spec.rb
spec/initializers/settings_spec.rb
spec/services/packages/debian/find_or_create_incoming_service_spec.rb
spec/workers/dependency_proxy/cleanup_blob_worker_spec.rb
spec/tooling/danger/specs_spec.rbKnapsack report generator started!
Run options: exclude {:quarantine=>true, :geo=>true, :level=>"migration"}
==> /builds/gitlab-org/gitlab/tmp/tests/gitlab-test_bare set up in 0.040410562 seconds...
Test environment set up in 0.755903953 seconds
Database schema
for table
abuse_reports
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
agent_group_authorizations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
agent_project_authorizations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
alert_management_alert_assignees
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
alert_management_alert_user_mentions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
alert_management_alerts
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
alert_management_http_integrations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
allowed_email_domains
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
analytics_cycle_analytics_group_stages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
analytics_cycle_analytics_group_value_streams
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
analytics_cycle_analytics_issue_stage_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
analytics_cycle_analytics_merge_request_stage_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
analytics_cycle_analytics_project_stages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
analytics_cycle_analytics_project_value_streams
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
analytics_cycle_analytics_stage_event_hashes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
analytics_devops_adoption_segments
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
analytics_devops_adoption_snapshots
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
analytics_language_trend_repository_languages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
analytics_usage_trends_measurements
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
appearances
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
application_setting_terms
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
application_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
approval_merge_request_rule_sources
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
approval_merge_request_rules
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
approval_merge_request_rules_approved_approvers
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
approval_merge_request_rules_groups
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
approval_merge_request_rules_users
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
approval_project_rules
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
approval_project_rules_groups
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
approval_project_rules_protected_branches
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
approval_project_rules_users
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
approvals
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
approver_groups
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
approvers
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ar_internal_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
atlassian_identities
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
audit_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
audit_events_external_audit_event_destinations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
authentication_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
award_emoji
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
aws_roles
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
background_migration_jobs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
badges
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
banned_users
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
batched_background_migration_jobs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
batched_background_migrations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
board_assignees
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
board_group_recent_visits
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
board_labels
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
board_project_recent_visits
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
board_user_preferences
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
boards
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
boards_epic_board_labels
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
boards_epic_board_positions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
boards_epic_board_recent_visits
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
boards_epic_boards
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
boards_epic_list_user_preferences
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
boards_epic_lists
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
boards_epic_user_preferences
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
broadcast_messages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
bulk_import_configurations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
bulk_import_entities
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
bulk_import_export_uploads
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
bulk_import_exports
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
bulk_import_failures
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
bulk_import_trackers
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
bulk_imports
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
chat_names
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
chat_teams
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_build_needs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_build_pending_states
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_build_report_results
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_build_trace_chunks
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_build_trace_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_builds
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_builds_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_builds_runner_session
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_daily_build_group_report_results
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_deleted_objects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_freeze_periods
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_group_variables
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_instance_variables
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_job_artifacts
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_job_token_project_scope_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_job_variables
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_minutes_additional_packs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_namespace_monthly_usages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_pending_builds
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_pipeline_artifacts
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_pipeline_chat_data
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_pipeline_messages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_pipeline_schedule_variables
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_pipeline_schedules
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_pipeline_variables
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_pipelines
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_pipelines_config
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_platform_metrics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_project_monthly_usages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_refs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_resource_groups
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_resources
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_runner_namespaces
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_runner_projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_runners
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_running_builds
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_sources_pipelines
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_sources_projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_stages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_subscriptions_projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_trigger_requests
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_triggers
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_unit_test_failures
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_unit_tests
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ci_variables
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
cluster_agent_tokens
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
cluster_agents
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
cluster_groups
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
cluster_platforms_kubernetes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
cluster_projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
cluster_providers_aws
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
cluster_providers_gcp
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_applications_cert_managers
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_applications_cilium
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_applications_crossplane
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_applications_elastic_stacks
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_applications_helm
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_applications_ingress
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_applications_jupyter
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_applications_knative
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_applications_prometheus
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_applications_runners
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_integration_elasticstack
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_integration_prometheus
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
clusters_kubernetes_namespaces
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
commit_user_mentions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
compliance_management_frameworks
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
container_expiration_policies
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
container_repositories
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
conversational_development_index_metrics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
coverage_fuzzing_corpuses
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
csv_issue_imports
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
custom_emoji
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
customer_relations_contacts
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
customer_relations_organizations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dast_profile_schedules
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dast_profiles
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dast_profiles_pipelines
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dast_scanner_profiles
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dast_scanner_profiles_builds
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dast_site_profile_secret_variables
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dast_site_profiles
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dast_site_profiles_builds
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dast_site_profiles_pipelines
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dast_site_tokens
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dast_site_validations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dast_sites
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dep_ci_build_trace_ dep_ci_build_trace_section_names
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dep_ci_build_trace_sections
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dependency_proxy_blobs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dependency_proxy_group_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dependency_proxy_image_ttl_group_policies
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dependency_proxy_manifests
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
deploy_keys_projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
deploy_tokens
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
deployment_clusters
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
deployment_merge_requests
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
deployments
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
description_versions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
design_management_designs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
design_management_designs_versions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
design_management_versions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
design_user_mentions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
detached_partitions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
diff_note_positions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
dora_daily_metrics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
draft_notes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
elastic_index_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
elastic_reindexing_slices
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
elastic_reindexing_subtasks
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
elastic_reindexing_tasks
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
elasticsearch_indexed_namespaces
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
elasticsearch_indexed_projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
emails
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
environments
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
epic_issues
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
epic_metrics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
epic_user_mentions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
epics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
error_tracking_client_keys
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
error_tracking_error_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
error_tracking_errors
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
evidences
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
experiment_subjects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
experiment_users
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
experiments
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
external_approval_rules
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
external_approval_rules_protected_branches
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
external_pull_requests
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
external_status_checks
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
external_status_checks_protected_branches
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
feature_gates
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
features
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
fork_network_members
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
fork_networks
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_cache_invalidation_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_container_repository_updated_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_event_log
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_hashed_storage_attachments_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_hashed_storage_migrated_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_job_artifact_deleted_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_lfs_object_deleted_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_node_namespace_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_node_statuses
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_nodes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_repositories_changed_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_repository_created_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_repository_deleted_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_repository_renamed_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_repository_updated_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_reset_checksum_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
geo_upload_deleted_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
gitlab_subscription_histories
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
gitlab_subscriptions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
gpg_key_subkeys
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
gpg_keys
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
gpg_signatures
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
grafana_integrations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
group_custom_attributes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
group_deletion_schedules
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
group_deploy_keys
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
group_deploy_keys_groups
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
group_deploy_tokens
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
group_group_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
group_import_states
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
group_merge_request_approval_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
group_repository_storage_moves
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
group_wiki_repositories
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
historical_data
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
identities
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
import_export_uploads
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
import_failures
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
in_product_marketing_emails
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
incident_management_escalation_policies
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
incident_management_escalation_rules
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
incident_management_issuable_escalation_statuses
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
incident_management_oncall_participants
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
incident_management_oncall_rotations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
incident_management_oncall_schedules
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
incident_management_oncall_shifts
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
incident_management_pending_alert_escalations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
incident_management_pending_issue_escalations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
index_statuses
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
insights
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
integrations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
internal_ids
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ip_restrictions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issuable_metric_images
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issuable_severities
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issuable_slas
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issue_assignees
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issue_customer_relations_contacts
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issue_email_participants
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issue_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issue_metrics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issue_tracker_data
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issue_user_mentions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issues
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issues_prometheus_alert_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
issues_self_managed_prometheus_alert_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
iterations_cadences
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
jira_connect_installations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
jira_connect_subscriptions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
jira_imports
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
jira_tracker_data
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
keys
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
label_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
label_priorities
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
labels
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
ldap_group_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
lfs_file_locks
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
lfs_objects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
lfs_objects_projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
licenses
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
list_user_preferences
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
lists
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
loose_foreign_keys_deleted_records
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
members
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_assignees
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_blocks
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_cleanup_schedules
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_context_commit_diff_files
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_context_commits
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_diff_commit_users
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_diff_commits
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_diff_details
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_diff_files
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_diffs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_metrics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_reviewers
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_request_user_mentions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_requests
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_requests_closing_issues
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
merge_trains
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
metrics_dashboard_annotations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
metrics_users_starred_dashboards
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
milestone_releases
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
milestones
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
namespace_admin_notes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
namespace_aggregation_schedules
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
namespace_limits
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
namespace_package_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
namespace_root_storage_statistics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
namespace_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
namespace_statistics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
namespaces
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
note_diff_files
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
notes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
notification_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
oauth_access_grants
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
oauth_access_tokens
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
oauth_applications
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
oauth_openid_requests
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
onboarding_progresses
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
open_project_tracker_data
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
operations_feature_flag_scopes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
operations_feature_flags
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
operations_feature_flags_clients
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
operations_feature_flags_issues
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
operations_scopes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
operations_strategies
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
operations_strategies_user_lists
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
operations_user_lists
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_build_infos
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_composer_cache_files
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_composer_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_conan_file_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_conan_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_debian_file_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_debian_group_architectures
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_debian_group_component_files
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_debian_group_components
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_debian_group_distribution_keys
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_debian_group_distributions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_debian_project_architectures
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_debian_project_component_files
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_debian_project_components
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_debian_project_distribution_keys
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_debian_project_distributions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_debian_publications
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_dependencies
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_dependency_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_helm_file_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_maven_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_nuget_dependency_link_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_nuget_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_package_file_build_infos
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_package_files
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_packages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_pypi_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_rubygems_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
packages_tags
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
pages_deployments
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
pages_domain_acme_orders
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
pages_domains
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
partitioned_foreign_keys
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
path_locks
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
personal_access_tokens
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
plan_limits
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
plans
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
pool_repositories
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
postgres_async_indexes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
postgres_reindex_actions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
product_analytics_events_experimental
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
programming_languages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_access_tokens
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_alerting_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_aliases
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_authorizations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_auto_devops
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_ci_cd_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_ci_feature_usages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_compliance_framework_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_custom_attributes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_daily_statistics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_deploy_tokens
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_error_tracking_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_export_jobs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_feature_usages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_features
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_group_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_import_data
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_incident_management_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_metrics_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_mirror_data
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_pages_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_repositories
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_repository_states
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_repository_storage_moves
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_security_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_statistics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_topics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
project_tracing_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
prometheus_alert_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
prometheus_alerts
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
prometheus_metrics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
protected_branch_merge_access_levels
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
protected_branch_push_access_levels
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
protected_branch_unprotect_access_levels
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
protected_branches
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
protected_environment_deploy_access_levels
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
protected_environments
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
protected_tag_create_access_levels
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
protected_tags
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
push_event_payloads
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
push_rules
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
raw_usage_data
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
redirect_routes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
release_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
releases
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
remote_mirrors
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
repository_languages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
required_code_owners_sections
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
requirements
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
requirements_management_test_reports
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
resource_iteration_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
resource_label_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
resource_milestone_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
resource_state_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
resource_weight_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
reviews
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
routes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
saml_group_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
saml_providers
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
schema_migrations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
scim_identities
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
scim_oauth_access_tokens
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
security_findings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
security_orchestration_policy_configurations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
security_orchestration_policy_rule_schedules
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
security_scans
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
self_managed_prometheus_alert_events
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
sent_notifications
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
sentry_issues
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
serverless_domain_cluster
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
service_desk_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
shards
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
slack_integrations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
smartcard_identities
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
snippet_repositories
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
snippet_repository_storage_moves
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
snippet_statistics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
snippet_user_mentions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
snippets
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
software_license_policies
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
software_licenses
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
spam_logs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
sprints
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
status_check_responses
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
status_page_published_incidents
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
status_page_settings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
subscriptions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
suggestions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
system_note_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
taggings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
tags
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
term_agreements
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
terraform_state_versions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
terraform_states
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
timelogs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
todos
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
token_with_ivs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
topics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
trending_projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
u2f_registrations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
upcoming_reconciliations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
uploads
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_agent_details
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_callouts
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_canonical_emails
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_credit_card_validations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_custom_attributes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_details
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_follow_users
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_group_callouts
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_highest_roles
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_interacted_projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_permission_export_uploads
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_preferences
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_statuses
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
user_synced_attributes_metadata
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
users
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
users_ops_dashboard_projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
users_security_dashboard_projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
users_star_projects
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
users_statistics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
verification_codes
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerabilities
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_exports
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_external_issue_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_feedback
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_finding_evidence_assets
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_finding_evidence_headers
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_finding_evidence_requests
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_finding_evidence_responses
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_finding_evidence_sources
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_finding_evidence_supporting_messages
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_finding_evidences
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_finding_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_finding_signatures
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_findings_remediations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_flags
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_historical_statistics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_identifiers
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_issue_links
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_occurrence_identifiers
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_occurrence_pipelines
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_occurrences
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_remediations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_scanners
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_statistics
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
vulnerability_user_mentions
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
web_hook_logs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
web_hooks
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
webauthn_registrations
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
wiki_page_meta
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
wiki_page_slugs
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
work_item_types
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
x509_certificates
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
x509_commit_signatures
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
x509_issuers
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
zentao_tracker_data
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
zoom_meetings
all foreign keys
are indexed
columns ending with _id
do have the foreign keys
and having foreign key are not in the ignore list
for enums
Ci::InstanceVariable
uses smallint for enums
Ci::Runner
uses smallint for enums
CommitStatus
uses smallint for enums
Ci::Processable
uses smallint for enums
Ci::Build
uses smallint for enums
Ci::Bridge
uses smallint for enums
GenericCommitStatus
uses smallint for enums
Ci::Pipeline
uses smallint for enums
Ci::PipelineScheduleVariable
uses smallint for enums
Ci::ResourceGroup
uses smallint for enums
Ci::JobArtifact
uses smallint for enums
Ci::Variable
uses smallint for enums
Ci::GroupVariable
uses smallint for enums
CiPlatformMetric
uses smallint for enums
Ci::PipelineArtifact
uses smallint for enums
Ci::Resource
uses smallint for enums
Ci::UnitTestFailure
uses smallint for enums
Ci::Stage
uses smallint for enums
Ci::BuildPendingState
uses smallint for enums
Ci::BuildReportResult
uses smallint for enums
Ci::Ref
uses smallint for enums
Ci::TriggerRequest
uses smallint for enums
Ci::UnitTest
uses smallint for enums
Ci::BuildTraceMetadata
uses smallint for enums
Ci::PipelineSchedule
uses smallint for enums
Ci::Trigger
uses smallint for enums
Ci::JobVariable
uses smallint for enums
Ci::RunningBuild
uses smallint for enums
Ci::BuildNeed
uses smallint for enums
Ci::BuildRunnerSession
uses smallint for enums
Ci::FreezePeriod
uses smallint for enums
Ci::PendingBuild
uses smallint for enums
Ci::PipelineMessage
uses smallint for enums
Ci::BuildTraceChunk
uses smallint for enums
Ci::RunnerNamespace
uses smallint for enums
Ci::PipelineVariable
uses smallint for enums
Ci::PipelineChatData
uses smallint for enums
Ci::PipelineConfig
uses smallint for enums
Ci::DeletedObject
uses smallint for enums
Ci::DailyBuildGroupReportResult
uses smallint for enums
Ci::RunnerProject
uses smallint for enums
Ci::BuildMetadata
uses smallint for enums
Ci::Sources::Pipeline
uses smallint for enums
Ci::JobToken::ProjectScopeLink
uses smallint for enums
Ci::Sources::Project
uses smallint for enums
Ci::Subscriptions::Project
uses smallint for enums
Ci::Minutes::ProjectMonthlyUsage
uses smallint for enums
Ci::Minutes::AdditionalPack
uses smallint for enums
Ci::Minutes::NamespaceMonthlyUsage
uses smallint for enums
License
uses smallint for enums
ApplicationSetting
uses smallint for enums
User
uses smallint for enums
Shard
uses smallint for enums
GeoNode
uses smallint for enums
Namespace
uses smallint for enums
Group
uses smallint for enums
Namespaces::UserNamespace
uses smallint for enums
Namespaces::ProjectNamespace
uses smallint for enums
Plan
uses smallint for enums
AuditEvent
uses smallint for enums
WebHookLog
uses smallint for enums
IncidentManagement::PendingEscalations::Alert
uses smallint for enums
IncidentManagement::PendingEscalations::Issue
uses smallint for enums
Email
uses smallint for enums
Clusters::Platforms::Kubernetes
uses smallint for enums
Project
uses smallint for enums
Snippet
uses smallint for enums
PersonalSnippet
uses smallint for enums
ProjectSnippet
uses smallint for enums
BroadcastMessage
uses smallint for enums
BulkImport
uses smallint for enums
BulkImports::Entity
uses smallint for enums
Key
uses smallint for enums
DeployKey
uses smallint for enums
GroupDeployKey
uses smallint for enums
LDAPKey
uses smallint for enums
DeployToken
uses smallint for enums
Deployment
uses smallint for enums
Event
uses smallint for enums
PushEvent
uses smallint for enums
Issue
uses smallint for enums
WorkItem::Type
uses smallint for enums
Milestone
uses smallint for enums
MergeRequest
uses smallint for enums
MergeRequestWithoutMergeRequestDiff
uses smallint for enums
Note
uses smallint for enums
DiffNote
uses smallint for enums
DiscussionNote
uses smallint for enums
SyntheticNote
uses smallint for enums
MilestoneNote
uses smallint for enums
LabelNote
uses smallint for enums
StateNote
uses smallint for enums
IterationNote
uses smallint for enums
WeightNote
uses smallint for enums
LegacyDiffNote
uses smallint for enums
WikiPage::Meta
uses smallint for enums
DesignManagement::Design
uses smallint for enums
IssueLink
uses smallint for enums
Iteration
uses smallint for enums
Environment
uses smallint for enums
Clusters::Cluster
uses smallint for enums
Clusters::Applications::Helm
uses smallint for enums
Clusters::Applications::Ingress
uses smallint for enums
Clusters::Applications::CertManager
uses smallint for enums
Clusters::Applications::Crossplane
uses smallint for enums
Clusters::Applications::Prometheus
uses smallint for enums
Clusters::Applications::Runner
uses smallint for enums
Clusters::Applications::Jupyter
uses smallint for enums
Clusters::Applications::Knative
uses smallint for enums
Clusters::Applications::ElasticStack
uses smallint for enums
Clusters::Applications::Cilium
uses smallint for enums
Epic
uses smallint for enums
Vulnerability
uses smallint for enums
UserPreference
uses smallint for enums
NotificationSetting
uses smallint for enums
Packages::Package
uses smallint for enums
ProtectedBranch
uses smallint for enums
ExportedProtectedBranch
uses smallint for enums
ProtectedBranch::MergeAccessLevel
uses smallint for enums
ProtectedBranch::PushAccessLevel
uses smallint for enums
ProtectedBranch::UnprotectAccessLevel
uses smallint for enums
ProtectedTag
uses smallint for enums
ProtectedTag::CreateAccessLevel
uses smallint for enums
Integration
uses smallint for enums
Integrations::Github
uses smallint for enums
Integrations::Asana
uses smallint for enums
Integrations::Assembla
uses smallint for enums
Integrations::BaseCi
uses smallint for enums
Integrations::Bamboo
uses smallint for enums
Integrations::Buildkite
uses smallint for enums
Integrations::DroneCi
uses smallint for enums
Integrations::Jenkins
uses smallint for enums
Integrations::Teamcity
uses smallint for enums
Integrations::MockCi
uses smallint for enums
Integrations::BaseIssueTracker
uses smallint for enums
Integrations::Bugzilla
uses smallint for enums
Integrations::CustomIssueTracker
uses smallint for enums
Integrations::Ewm
uses smallint for enums
Integrations::Jira
uses smallint for enums
Integrations::Redmine
uses smallint for enums
Integrations::Youtrack
uses smallint for enums
Integrations::Campfire
uses smallint for enums
Integrations::Confluence
uses smallint for enums
Integrations::Datadog
uses smallint for enums
Integrations::BaseChatNotification
uses smallint for enums
Integrations::Discord
uses smallint for enums
Integrations::HangoutsChat
uses smallint for enums
Integrations::Mattermost
uses smallint for enums
Integrations::MicrosoftTeams
uses smallint for enums
Integrations::Slack
uses smallint for enums
Integrations::UnifyCircuit
uses smallint for enums
Integrations::WebexTeams
uses smallint for enums
Integrations::EmailsOnPush
uses smallint for enums
Integrations::ExternalWiki
uses smallint for enums
Integrations::Flowdock
uses smallint for enums
Integrations::Irker
uses smallint for enums
Integrations::BaseSlashCommands
uses smallint for enums
Integrations::MattermostSlashCommands
uses smallint for enums
Integrations::SlackSlashCommands
uses smallint for enums
Integrations::Packagist
uses smallint for enums
Integrations::PipelinesEmail
uses smallint for enums
Integrations::Pivotaltracker
uses smallint for enums
Integrations::BaseMonitoring
uses smallint for enums
Integrations::Prometheus
uses smallint for enums
Integrations::MockMonitoring
uses smallint for enums
Integrations::Pushover
uses smallint for enums
Integrations::Zentao
uses smallint for enums
Integrations::GitlabSlackApplication
uses smallint for enums
ForkNetworkMember
uses smallint for enums
ForkNetwork
uses smallint for enums
Todo
uses smallint for enums
UserStatus
uses smallint for enums
GeoNodeStatus
uses smallint for enums
Geo::SecondaryUsageData
uses smallint for enums
Geo::DesignRegistry
uses smallint for enums
Geo::MergeRequestDiffRegistry
uses smallint for enums
Geo::ContainerRepositoryRegistry
uses smallint for enums
Geo::SnippetRepositoryRegistry
uses smallint for enums
Geo::JobArtifactRegistry
uses smallint for enums
Geo::UploadRegistry
uses smallint for enums
Geo::EventLogState
uses smallint for enums
Geo::LfsObjectRegistry
uses smallint for enums
Geo::ProjectRegistry
uses smallint for enums
Geo::TerraformStateVersionRegistry
uses smallint for enums
Geo::PipelineArtifactRegistry
uses smallint for enums
Geo::GroupWikiRepositoryRegistry
uses smallint for enums
Geo::PagesDeploymentRegistry
uses smallint for enums
Geo::PackageFileRegistry
uses smallint for enums
Vulnerabilities::Finding
uses smallint for enums
Vulnerabilities::Export
uses smallint for enums
ProtectedEnvironment
uses smallint for enums
ProtectedEnvironment::DeployAccessLevel
uses smallint for enums
Appearance
uses smallint for enums
Projects::Topic
uses smallint for enums
IssuableMetricImage
uses smallint for enums
ComplianceManagement::Framework
uses smallint for enums
CustomEmoji
uses smallint for enums
Security::Scan
uses smallint for enums
Dast::Profile
uses smallint for enums
DastSiteProfile
uses smallint for enums
DastSiteValidation
uses smallint for enums
DastScannerProfile
uses smallint for enums
Dast::ProfileSchedule
uses smallint for enums
MergeRequestReviewer
uses smallint for enums
ApprovalProjectRule
uses smallint for enums
ApprovalMergeRequestRule
uses smallint for enums
UserCallout
uses smallint for enums
DesignManagement::Action
uses smallint for enums
DesignManagement::Version
uses smallint for enums
AlertManagement::Alert
uses smallint for enums
PrometheusAlert
uses smallint for enums
IssuableSeverity
uses smallint for enums
EpicIssue
uses smallint for enums
AwardEmoji
uses smallint for enums
Iterations::Cadence
uses smallint for enums
Board
uses smallint for enums
List
uses smallint for enums
ContainerRepository
uses smallint for enums
Packages::Conan::Metadatum
uses smallint for enums
Packages::Maven::Metadatum
uses smallint for enums
Packages::Nuget::Metadatum
uses smallint for enums
Packages::Pypi::Metadatum
uses smallint for enums
Boards::EpicBoard
uses smallint for enums
Boards::EpicList
uses smallint for enums
Vulnerabilities::IssueLink
uses smallint for enums
Vulnerabilities::ExternalIssueLink
uses smallint for enums
Vulnerabilities::Scanner
uses smallint for enums
Vulnerabilities::Statistic
uses smallint for enums
AlertManagement::HttpIntegration
uses smallint for enums
Release
uses smallint for enums
Releases::Link
uses smallint for enums
Releases::Evidence
uses smallint for enums
ContainerExpirationPolicy
uses smallint for enums
Clusters::AgentToken
uses smallint for enums
IncidentManagement::OncallRotation
uses smallint for enums
IncidentManagement::OncallParticipant
uses smallint for enums
IncidentManagement::EscalationPolicy
uses smallint for enums
IncidentManagement::EscalationRule
uses smallint for enums
PushRule
uses smallint for enums
PathLock
uses smallint for enums
Packages::PackageFile
uses smallint for enums
Packages::Conan::FileMetadatum
uses smallint for enums
Packages::DependencyLink
uses smallint for enums
Packages::Dependency
uses smallint for enums
Packages::Nuget::DependencyLinkMetadatum
uses smallint for enums
Label
uses smallint for enums
ProjectLabel
uses smallint for enums
GroupLabel
uses smallint for enums
Clusters::Agent
uses smallint for enums
CustomerRelations::Organization
uses smallint for enums
CustomerRelations::Contact
uses smallint for enums
Metrics::Dashboard::Annotation
uses smallint for enums
Terraform::State
uses smallint for enums
DastSiteToken
uses smallint for enums
Analytics::DevopsAdoption::EnabledNamespace
uses smallint for enums
AuditEvents::ExternalAuditEventDestination
uses smallint for enums
InternalId
uses smallint for enums
DiffNotePosition
uses smallint for enums
RepositoryLanguage
uses smallint for enums
UserDetail
uses smallint for enums
BoardGroupRecentVisit
uses smallint for enums
ProjectDailyStatistic
uses smallint for enums
ProjectFeatureUsage
uses smallint for enums
UserCustomAttribute
uses smallint for enums
GroupDeployToken
uses smallint for enums
Identity
uses smallint for enums
LabelLink
uses smallint for enums
GroupDeployKeysGroup
uses smallint for enums
GroupImportState
uses smallint for enums
GpgSignature
uses smallint for enums
BoardProjectRecentVisit
uses smallint for enums
ZoomMeeting
uses smallint for enums
MilestoneRelease
uses smallint for enums
ResourceStateEvent
uses smallint for enums
ResourceMilestoneEvent
uses smallint for enums
ResourceIterationEvent
uses smallint for enums
ResourceLabelEvent
uses smallint for enums
ResourceWeightEvent
uses smallint for enums
TrendingProject
uses smallint for enums
ExperimentSubject
uses smallint for enums
UserSyncedAttributesMetadata
uses smallint for enums
UsersStatistics
uses smallint for enums
SentryIssue
uses smallint for enums
UserAgentDetail
uses smallint for enums
GroupGroupLink
uses smallint for enums
SystemNoteMetadata
uses smallint for enums
MergeRequestDiffCommit
uses smallint for enums
PushEventPayload
uses smallint for enums
RawUsageData
uses smallint for enums
PagesDomainAcmeOrder
uses smallint for enums
ChatName
uses smallint for enums
AbuseReport
uses smallint for enums
OnboardingProgress
uses smallint for enums
DesignUserMention
uses smallint for enums
MergeRequestUserMention
uses smallint for enums
IssueUserMention
uses smallint for enums
SnippetUserMention
uses smallint for enums
CommitUserMention
uses smallint for enums
EpicUserMention
uses smallint for enums
VulnerabilityUserMention
uses smallint for enums
AlertManagement::AlertUserMention
uses smallint for enums
JiraConnectInstallation
uses smallint for enums
ProjectTracingSetting
uses smallint for enums
PoolRepository
uses smallint for enums
ImportFailure
uses smallint for enums
ProjectImportData
uses smallint for enums
ProjectSetting
uses smallint for enums
Suggestion
uses smallint for enums
UserHighestRole
uses smallint for enums
ProjectPagesMetadatum
uses smallint for enums
Review
uses smallint for enums
NamespaceSetting
uses smallint for enums
ServiceDeskSetting
uses smallint for enums
ProjectDeployToken
uses smallint for enums
ProjectCustomAttribute
uses smallint for enums
MergeRequestDiffFile
uses smallint for enums
Route
uses smallint for enums
ProjectImportState
uses smallint for enums
RemoteMirror
uses smallint for enums
ProjectStatistics
uses smallint for enums
X509Certificate
uses smallint for enums
IssueEmailParticipant
uses smallint for enums
ProjectGroupLink
uses smallint for enums
PlanLimits
uses smallint for enums
ProjectAutoDevops
uses smallint for enums
ProgrammingLanguage
uses smallint for enums
ProjectRepository
uses smallint for enums
DescriptionVersion
uses smallint for enums
ListUserPreference
uses smallint for enums
Subscription
uses smallint for enums
UserInteractedProject
uses smallint for enums
GpgKeySubkey
uses smallint for enums
PrometheusMetric
uses smallint for enums
IssueAssignee
uses smallint for enums
UserCanonicalEmail
uses smallint for enums
AuthenticationEvent
uses smallint for enums
X509Issuer
uses smallint for enums
GrafanaIntegration
uses smallint for enums
SentNotification
uses smallint for enums
GpgKey
uses smallint for enums
JiraImportState
uses smallint for enums
SnippetStatistics
uses smallint for enums
ImportExportUpload
uses smallint for enums
ProjectMetricsSetting
uses smallint for enums
SelfManagedPrometheusAlertEvent
uses smallint for enums
Member
uses smallint for enums
ProjectMember
uses smallint for enums
GroupMember
uses smallint for enums
UsersStarProject
uses smallint for enums
ProjectCiCdSetting
uses smallint for enums
DeploymentMergeRequest
uses smallint for enums
MergeRequestContextCommitDiffFile
uses smallint for enums
ExternalPullRequest
uses smallint for enums
TermAgreement
uses smallint for enums
PersonalAccessToken
uses smallint for enums
MergeRequestsClosingIssues
uses smallint for enums
ChatTeam
uses smallint for enums
RedirectRoute
uses smallint for enums
MergeRequestContextCommit
uses smallint for enums
ProductAnalyticsEvent
uses smallint for enums
ProjectAuthorization
uses smallint for enums
DraftNote
uses smallint for enums
GroupCustomAttribute
uses smallint for enums
NoteDiffFile
uses smallint for enums
U2fRegistration
uses smallint for enums
Upload
uses smallint for enums
Approval
uses smallint for enums
X509CommitSignature
uses smallint for enums
LfsObject
uses smallint for enums
Timelog
uses smallint for enums
SnippetRepository
uses smallint for enums
LfsObjectsProject
uses smallint for enums
Badge
uses smallint for enums
GroupBadge
uses smallint for enums
ProjectBadge
uses smallint for enums
Experiment
uses smallint for enums
DeploymentCluster
uses smallint for enums
DeployKeysProject
uses smallint for enums
ProjectFeature
uses smallint for enums
ExperimentUser
uses smallint for enums
PrometheusAlertEvent
uses smallint for enums
PagesDeployment
uses smallint for enums
SpamLog
uses smallint for enums
TokenWithIv
uses smallint for enums
PagesDomain
uses smallint for enums
ProjectExportJob
uses smallint for enums
LfsFileLock
uses smallint for enums
JiraConnectSubscription
uses smallint for enums
MergeRequestAssignee
uses smallint for enums
LabelPriority
uses smallint for enums
MergeRequestDiff
uses smallint for enums
WebauthnRegistration
uses smallint for enums
WebHook
uses smallint for enums
ServiceHook
uses smallint for enums
ProjectHook
uses smallint for enums
SystemHook
uses smallint for enums
GroupHook
uses smallint for enums
ProjectAlias
uses smallint for enums
Insight
uses smallint for enums
UsersSecurityDashboardProject
uses smallint for enums
SlackIntegration
uses smallint for enums
LdapGroupLink
uses smallint for enums
UsersOpsDashboardProject
uses smallint for enums
ElasticsearchIndexedNamespace
uses smallint for enums
GroupDeletionSchedule
uses smallint for enums
SmartcardIdentity
uses smallint for enums
SamlGroupLink
uses smallint for enums
DastSite
uses smallint for enums
GeoNodeNamespaceLink
uses smallint for enums
FeatureFlagIssue
uses smallint for enums
GitlabSubscription
uses smallint for enums
ScimOauthAccessToken
uses smallint for enums
BoardLabel
uses smallint for enums
GroupWikiRepository
uses smallint for enums
IpRestriction
uses smallint for enums
ProjectRepositoryState
uses smallint for enums
GroupMergeRequestApprovalSetting
uses smallint for enums
HistoricalData
uses smallint for enums
UserPermissionExportUpload
uses smallint for enums
Approver
uses smallint for enums
MergeTrain
uses smallint for enums
NamespaceLimit
uses smallint for enums
ApprovalProjectRulesProtectedBranch
uses smallint for enums
ScimIdentity
uses smallint for enums
MergeRequestBlock
uses smallint for enums
SoftwareLicense
uses smallint for enums
BoardAssignee
uses smallint for enums
ApprovalMergeRequestRuleSource
uses smallint for enums
IssuableSla
uses smallint for enums
NamespaceStatistics
uses smallint for enums
AllowedEmailDomain
uses smallint for enums
SamlProvider
uses smallint for enums
GitlabSubscriptionHistory
uses smallint for enums
ProjectSecuritySetting
uses smallint for enums
ApproverGroup
uses smallint for enums
SoftwareLicensePolicy
uses smallint for enums
MergeRequestDiffDetail
uses smallint for enums
ElasticsearchIndexedProject
uses smallint for enums
BoardUserPreference
uses smallint for enums
IndexStatus
uses smallint for enums
Projects::RepositoryStorageMove
uses smallint for enums
Projects::ProjectTopic
uses smallint for enums
Projects::CiFeatureUsage
uses smallint for enums
Namespace::AggregationSchedule
uses smallint for enums
Namespace::RootStorageStatistics
uses smallint for enums
Namespace::PackageSetting
uses smallint for enums
Namespace::AdminNote
uses smallint for enums
LooseForeignKeys::DeletedRecord
uses smallint for enums
Operations::FeatureFlag
uses smallint for enums
Operations::FeatureFlagsClient
uses smallint for enums
WikiPage::Slug
uses smallint for enums
Packages::Event
uses smallint for enums
Packages::PackageFileBuildInfo
uses smallint for enums
Packages::Tag
uses smallint for enums
Packages::BuildInfo
uses smallint for enums
Issue::Metrics
uses smallint for enums
ErrorTracking::ProjectErrorTrackingSetting
uses smallint for enums
ErrorTracking::Error
uses smallint for enums
ErrorTracking::ClientKey
uses smallint for enums
ErrorTracking::ErrorEvent
uses smallint for enums
Aws::Role
uses smallint for enums
ApplicationSetting::Term
uses smallint for enums
Metrics::UsersStarredDashboard
uses smallint for enums
IncidentManagement::IssuableEscalationStatus
uses smallint for enums
IncidentManagement::ProjectIncidentManagementSetting
uses smallint for enums
Users::BannedUser
uses smallint for enums
Users::UserFollowUser
uses smallint for enums
Users::GroupCallout
uses smallint for enums
Users::CreditCardValidation
uses smallint for enums
Users::InProductMarketingEmail
uses smallint for enums
DependencyProxy::Manifest
uses smallint for enums
DependencyProxy::GroupSetting
uses smallint for enums
DependencyProxy::Blob
uses smallint for enums
DependencyProxy::ImageTtlGroupPolicy
uses smallint for enums
Snippets::RepositoryStorageMove
uses smallint for enums
Issues::CsvImport
uses smallint for enums
AlertManagement::AlertAssignee
uses smallint for enums
Alerting::ProjectAlertingSetting
uses smallint for enums
Atlassian::Identity
uses smallint for enums
Serverless::DomainCluster
uses smallint for enums
DevOpsReport::Metric
uses smallint for enums
Postgresql::ReplicationSlot
uses smallint for enums
MergeRequest::DiffCommitUser
uses smallint for enums
MergeRequest::Metrics
uses smallint for enums
MergeRequest::CleanupSchedule
uses smallint for enums
Terraform::StateVersion
uses smallint for enums
BulkImports::ExportUpload
uses smallint for enums
BulkImports::Configuration
uses smallint for enums
BulkImports::Tracker
uses smallint for enums
BulkImports::Failure
uses smallint for enums
BulkImports::Export
uses smallint for enums
Integrations::JiraTrackerData
uses smallint for enums
Integrations::IssueTrackerData
uses smallint for enums
Integrations::ZentaoTrackerData
uses smallint for enums
Clusters::Project
uses smallint for enums
Clusters::KubernetesNamespace
uses smallint for enums
Clusters::Group
uses smallint for enums
Clusters::Integrations::Prometheus
uses smallint for enums
Clusters::Integrations::ElasticStack
uses smallint for enums
RequirementsManagement::TestReport
uses smallint for enums
Dast::SiteProfilesBuild
uses smallint for enums
Dast::ScannerProfilesBuild
uses smallint for enums
Dast::SiteProfileSecretVariable
uses smallint for enums
Dast::ProfilesPipeline
uses smallint for enums
Dora::DailyMetrics
uses smallint for enums
StatusPage::ProjectSetting
uses smallint for enums
StatusPage::PublishedIncident
uses smallint for enums
ProtectedBranch::RequiredCodeOwnersSection
uses smallint for enums
Vulnerabilities::Identifier
uses smallint for enums
Vulnerabilities::FindingLink
uses smallint for enums
Vulnerabilities::FindingIdentifier
uses smallint for enums
Vulnerabilities::HistoricalStatistic
uses smallint for enums
Vulnerabilities::Feedback
uses smallint for enums
Vulnerabilities::FindingRemediation
uses smallint for enums
Vulnerabilities::Remediation
uses smallint for enums
Vulnerabilities::FindingPipeline
uses smallint for enums
Vulnerabilities::Flag
uses smallint for enums
Vulnerabilities::FindingSignature
uses smallint for enums
RequirementsManagement::Requirement
uses smallint for enums
IncidentManagement::OncallShift
uses smallint for enums
IncidentManagement::OncallSchedule
uses smallint for enums
GitlabSubscriptions::UpcomingReconciliation
uses smallint for enums
Elastic::IndexSetting
uses smallint for enums
Elastic::ReindexingSubtask
uses smallint for enums
Elastic::ReindexingSlice
uses smallint for enums
Elastic::ReindexingTask
uses smallint for enums
Boards::EpicUserPreference
uses smallint for enums
Boards::EpicBoardLabel
uses smallint for enums
Boards::EpicBoardRecentVisit
uses smallint for enums
Boards::EpicBoardPosition
uses smallint for enums
Boards::EpicListUserPreference
uses smallint for enums
Security::Finding
uses smallint for enums
Security::OrchestrationPolicyConfiguration
uses smallint for enums
Security::OrchestrationPolicyRuleSchedule
uses smallint for enums
Geo::Event
uses smallint for enums
Geo::JobArtifactDeletedEvent
uses smallint for enums
Geo::EventLog
uses smallint for enums
Geo::HashedStorageAttachmentsEvent
uses smallint for enums
Geo::RepositoryCreatedEvent
uses smallint for enums
Geo::RepositoriesChangedEvent
uses smallint for enums
Geo::RepositoryRenamedEvent
uses smallint for enums
Geo::UploadDeletedEvent
uses smallint for enums
Geo::ContainerRepositoryUpdatedEvent
uses smallint for enums
Geo::ResetChecksumEvent
uses smallint for enums
Geo::RepositoryUpdatedEvent
uses smallint for enums
Geo::RepositoryDeletedEvent
uses smallint for enums
Geo::CacheInvalidationEvent
uses smallint for enums
Geo::HashedStorageMigratedEvent
uses smallint for enums
Epic::Metrics
uses smallint for enums
MergeRequests::StatusCheckResponse
uses smallint for enums
MergeRequests::ExternalStatusCheck
uses smallint for enums
Groups::RepositoryStorageMove
uses smallint for enums
Operations::FeatureFlags::StrategyUserList
uses smallint for enums
Operations::FeatureFlags::UserList
uses smallint for enums
Operations::FeatureFlags::Scope
uses smallint for enums
Operations::FeatureFlags::Strategy
uses smallint for enums
Packages::Debian::GroupDistributionKey
uses smallint for enums
Packages::Debian::GroupComponentFile
uses smallint for enums
Packages::Debian::GroupDistribution
uses smallint for enums
Packages::Debian::Publication
uses smallint for enums
Packages::Debian::ProjectComponent
uses smallint for enums
Packages::Debian::ProjectComponentFile
uses smallint for enums
Packages::Debian::ProjectDistributionKey
uses smallint for enums
Packages::Debian::ProjectArchitecture
uses smallint for enums
Packages::Debian::GroupComponent
uses smallint for enums
Packages::Debian::GroupArchitecture
uses smallint for enums
Packages::Debian::FileMetadatum
uses smallint for enums
Packages::Debian::ProjectDistribution
uses smallint for enums
Packages::Helm::FileMetadatum
uses smallint for enums
Packages::Composer::Metadatum
uses smallint for enums
Packages::Composer::CacheFile
uses smallint for enums
Packages::Rubygems::Metadatum
uses smallint for enums
Analytics::UsageTrends::Measurement
uses smallint for enums
Analytics::CycleAnalytics::StageEventHash
uses smallint for enums
Analytics::CycleAnalytics::ProjectStage
uses smallint for enums
Analytics::CycleAnalytics::ProjectValueStream
uses smallint for enums
Analytics::CycleAnalytics::MergeRequestStageEvent
uses smallint for enums
Analytics::CycleAnalytics::IssueStageEvent
uses smallint for enums
Clusters::Providers::Aws
uses smallint for enums
Clusters::Providers::Gcp
uses smallint for enums
Clusters::Agents::GroupAuthorization
uses smallint for enums
Clusters::Agents::ProjectAuthorization
uses smallint for enums
Gitlab::BackgroundMigration::BackfillJiraTrackerDeploymentType2::JiraTrackerDataTemp
uses smallint for enums
Gitlab::BackgroundMigration::BackfillJiraTrackerDeploymentType2::JiraServiceTemp
uses smallint for enums
Gitlab::BackgroundMigration::MigrateIssueTrackersSensitiveData::IssueTrackerData
uses smallint for enums
Gitlab::BackgroundMigration::MigrateIssueTrackersSensitiveData::JiraTrackerData
uses smallint for enums
Gitlab::BackgroundMigration::SetDefaultIterationCadences::Iteration
uses smallint for enums
Gitlab::BackgroundMigration::SetDefaultIterationCadences::IterationCadence
uses smallint for enums
Gitlab::BackgroundMigration::SetDefaultIterationCadences::Group
uses smallint for enums
EE::Gitlab::BackgroundMigration::BackfillIterationCadenceIdForBoards::MigrationBoard
uses smallint for enums
EE::Gitlab::BackgroundMigration::BackfillIterationCadenceIdForBoards::MigrationCadence
uses smallint for enums
ComplianceManagement::ComplianceFramework::ProjectSettings
uses smallint for enums
Vulnerabilities::Finding::Evidence
uses smallint for enums
Analytics::DevopsAdoption::Snapshot
uses smallint for enums
Analytics::LanguageTrend::RepositoryLanguage
uses smallint for enums
Analytics::CycleAnalytics::GroupValueStream
uses smallint for enums
Analytics::CycleAnalytics::GroupStage
uses smallint for enums
Gitlab::DatabaseImporters::CommonMetrics::PrometheusMetric
uses smallint for enums
Gitlab::Database::AsyncIndexes::PostgresAsyncIndex
uses smallint for enums
Vulnerabilities::Finding::Evidence::Header
uses smallint for enums
Vulnerabilities::Finding::Evidence::SupportingMessage
uses smallint for enums
Vulnerabilities::Finding::Evidence::Asset
uses smallint for enums
Vulnerabilities::Finding::Evidence::Request
uses smallint for enums
Vulnerabilities::Finding::Evidence::Response
uses smallint for enums
Vulnerabilities::Finding::Evidence::Source
uses smallint for enums
AppSec::Fuzzing::Coverage::Corpus
uses smallint for enums
for jsonb columns
uses json schema validator
existence of Postgres schemas
we have a public schema
we have a 'gitlab_partitions_dynamic' schema'
we have a 'gitlab_partitions_static' schema'
we do not have unexpected schemas
primary keys
expects every table to have a primary key defined
index names
disallows index names with a _ccnew[0-9]* suffix
Event
Associations
is expected to belong to project required:
is expected to belong to target required:
Respond to
is expected to respond to #author_name
is expected to respond to #author_email
is expected to respond to #issue_title
is expected to respond to #merge_request_title
is expected to respond to #design_title
Callbacks
after_create :reset_project_activity
calls the reset_project_activity method
after_create :set_last_repository_updated_at
with a push event
updates the project last_repository_updated_at
without a push event
does not update the project last_repository_updated_at
#set_last_repository_updated_at
only updates once every Event::REPOSITORY_UPDATED_AT_INTERVAL minutes
after_create UserInteractedProject.track
passes event to UserInteractedProject.track
validations
action
for a design
action: "created", valid: true
is expected to eq true
action: "updated", valid: true
is expected to eq true
action: "closed", valid: false
is expected to eq false
action: "reopened", valid: false
is expected to eq false
action: "pushed", valid: false
is expected to eq false
action: "commented", valid: false
is expected to eq false
action: "merged", valid: false
is expected to eq false
action: "joined", valid: false
is expected to eq false
action: "left", valid: false
is expected to eq false
action: "destroyed", valid: true
is expected to eq true
action: "expired", valid: false
is expected to eq false
action: "approved", valid: false
is expected to eq false
scopes
created_at
can find the right event
.for_fingerprint
returns none if there is no fingerprint
returns none if there is no match
can find a given event
#fingerprint
is unique scoped to target
Push event
is expected to eq #<User id:29 @namespace32>
#target_title
for an issue
delegates to issue title
for a wiki page
delegates to wiki page title
#membership_changed?
created
is expected to be falsey
updated
is expected to be falsey
expired
is expected to be truthy
left
is expected to be truthy
joined
is expected to be truthy
#note?
issue note event
is expected to be note
merge request diff note event
is expected to be note
#visible_to_user?
commit note event
has the correct visibility
private project
when admin mode enabled
has the correct visibility
when admin mode disabled
has the correct visibility
issue event
for non confidential issues
has the correct visibility
is expected to eq true
is expected to eq true
for confidential issues
has the correct visibility
is expected to eq true
is expected to eq true
issue note event
on non confidential issues
has the correct visibility
is expected to eq true
is expected to eq true
on confidential issues
has the correct visibility
is expected to eq true
is expected to eq true
confidential note
has the correct visibility
is expected to eq true
private project
is expected to eq false
is expected to eq false
when admin mode enabled
has the correct visibility
when admin mode disabled
has the correct visibility
merge request diff note event
public project
has the correct visibility
is expected to eq true
private project
is expected to eq false
when admin mode enabled
has the correct visibility
when admin mode disabled
has the correct visibility
milestone event
has the correct visibility
on public project with private issue tracker and merge requests
when admin mode enabled
has the correct visibility
when admin mode disabled
has the correct visibility
on private project
when admin mode enabled
has the correct visibility
when admin mode disabled
has the correct visibility
wiki-page event
on private project
when admin mode enabled
has the correct visibility
when admin mode disabled
has the correct visibility
wiki-page event on public project
has the correct visibility
project snippet note event
has the correct visibility
on public project with private snippets
is expected to eq false
when admin mode enabled
has the correct visibility
when admin mode disabled
has the correct visibility
on private project
is expected to eq false
when admin mode enabled
has the correct visibility
when admin mode disabled
has the correct visibility
personal snippet note event
has the correct visibility
is expected to eq true
on internal snippet
has the correct visibility
on private snippet
is expected to eq true
when admin mode enabled
has the correct visibility
when admin mode disabled
has the correct visibility
design note event
has the correct visibility
is expected to eq true
is expected to eq true
the event refers to a design on a confidential issue
has the correct visibility
is expected to eq true
is expected to eq true
design event
has the correct visibility
is expected to eq true
is expected to eq true
the event refers to a design on a confidential issue
has the correct visibility
is expected to eq true
is expected to eq true
wiki_page predicate scopes
.for_design
only includes design events
.for_wiki_page
only contains the wiki page events
.for_wiki_meta
finds events for a given wiki page metadata object
categorization
passes a sanity check
#wiki_page and #wiki_page?
for a wiki page event
is expected to have attributes {:wiki_page => #<WikiPage:0x00007ff35a5dfe08 @wiki=#<ProjectWiki id:48 >, @page=#<Gitlab::Git::WikiPage...lers={}, @committed_date=2021-10-13 18:25:18 +0000>, @format="markdown">>, :wiki_page? => (be truthy)}
title is empty
is expected to have attributes {:wiki_page => nil, :wiki_page? => (be truthy)}
for any other event
has no wiki_page and is not a wiki_page
#design and #design?
for a design event
is expected to have attributes {:design => #<DesignManagement::Design id: namespace69/project69#/designs[homescreen-29.jpg]>, :design? => (be truthy)}
for any other event
has no design and is not a design
.limit_recent
without an explicit limit
is expected to eq [#<Event project_id: 50, author_id: 83, target_id: 40, created_at: "2021-10-13 18:25:20.405915378 +00...972574605 +0000", action: "closed", target_type: "Issue", group_id: nil, fingerprint: nil, id: 149>]
with an explicit limit
is expected to eq [#<Event project_id: 52, author_id: 87, target_id: 42, created_at: "2021-10-13 18:25:21.377461454 +00...377461454 +0000", action: "closed", target_type: "Issue", group_id: nil, fingerprint: nil, id: 152>]
#reset_project_activity
when a project was updated less than 1 hour ago
does not update the project
when a project was updated more than 1 hour ago
updates the project
#authored_by?
returns true when the event author and user are the same
returns false when passing nil as an argument
returns false when the given user is not the author of the event
#body?
returns true for a push event with commits
returns false for a push event without a valid commit range
returns true for a Note event
returns true if the target responds to #title
returns false for a regular event without a target
#target
eager loads the author of an event target
with snippet note
#snippet_note?
returns true for a project snippet event
returns true for a personal snippet event
returns false for a other kinds of event
#personal_snippet_note?
returns false for a project snippet event
returns true for a personal snippet event
returns false for a other kinds of event
#project_snippet_note?
returns true for a project snippet event
returns false for a personal snippet event
returns false for a other kinds of event
#action_name
handles all valid design events
handles correct push_action
handles correct base actions
trait: :created, action_name: "created"
with correct name and method
trait: :updated, action_name: "opened"
with correct name and method
trait: :closed, action_name: "closed"
with correct name and method
trait: :reopened, action_name: "opened"
with correct name and method
trait: :commented, action_name: "commented on"
with correct name and method
trait: :merged, action_name: "accepted"
with correct name and method
trait: :joined, action_name: "joined"
with correct name and method
trait: :left, action_name: "left"
with correct name and method
trait: :destroyed, action_name: "destroyed"
with correct name and method
trait: :expired, action_name: "removed due to membership expiration from"
with correct name and method
trait: :approved, action_name: "approved"
with correct name and method
for created_project_action?
returns created for created event
returns imported for imported event
Clusters::Gcp::FinalizeCreationService#execute
With a legacy ABAC cluster
uses ABAC authorization type
behaves like success
configures provider and kubernetes
properly configures database models
behaves like kubernetes information not successfully fetched
when failed to fetch gke cluster info
behaves like error
sets an error to provider object
when token is empty
behaves like error
sets an error to provider object
when failed to fetch kubernetes token
behaves like error
sets an error to provider object
when service account fails to create
behaves like error
sets an error to provider object
With an RBAC cluster
uses RBAC authorization type
behaves like success
configures provider and kubernetes
properly configures database models
behaves like kubernetes information not successfully fetched
when failed to fetch gke cluster info
behaves like error
sets an error to provider object
when token is empty
behaves like error
sets an error to provider object
when failed to fetch kubernetes token
behaves like error
sets an error to provider object
when service account fails to create
behaves like error
sets an error to provider object
With a Cloud Run cluster
has knative pre-installed
behaves like success
configures provider and kubernetes
properly configures database models
Projects::OverwriteProjectService
#execute
when project does not have any relation
behaves like overwrite actions
moves deploy keys
moves notification settings
moves users stars
moves project group links
moves memberships and authorizations
removes the original project
renames the project
moves lfs objects relationships
is expected to eq 3
when project with elements
behaves like overwrite actions
moves deploy keys
moves notification settings
moves users stars
moves project group links
moves memberships and authorizations
removes the original project
renames the project
moves lfs objects relationships
is expected to eq 3
forks
when moving a root forked project
moves the descendant forks
updates the fork network
when moving a intermediate forked project
moves the descendant forks
moves the ascendant fork
does not update fork network
if an exception is raised
rollbacks changes
tries to restore the original project repositories
FileUploader
legacy storage
behaves like builds correct legacy storage paths
#store_dir
behaves like matches the method pattern
is expected to match /awesome\/project\/\h+/
#cache_dir
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
#work_dir
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
#upload_path
behaves like matches the method pattern
is expected to match /\h+\/<filename>/
#relative_path
is relative (PENDING: Path not set, skipping.)
.absolute_path
behaves like matches the method pattern
is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/awesome\/project\/55dc16aa0edd05693fd98b5051e83321\/foo.jpg/
.base_dir
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
path traversal exploits
throws an exception
uses hashed storage
when rolled out attachments
#store_dir
behaves like matches the method pattern
is expected to match /@hashed\/\h{2}\/\h{2}\/\h+/
#cache_dir
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
#work_dir
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
#upload_path
behaves like matches the method pattern
is expected to match /\h+\/<filename>/
#relative_path
is relative (PENDING: Path not set, skipping.)
.absolute_path
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
.base_dir
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
path traversal exploits
throws an exception
when only repositories are rolled out
behaves like builds correct legacy storage paths
#store_dir
behaves like matches the method pattern
is expected to match /awesome\/project\/\h+/
#cache_dir
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
#work_dir
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
#upload_path
behaves like matches the method pattern
is expected to match /\h+\/<filename>/
#relative_path
is relative (PENDING: Path not set, skipping.)
.absolute_path
behaves like matches the method pattern
is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/awesome\/project\/55dc16aa0edd05693fd98b5051e83321\/foo.jpg/
.base_dir
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
path traversal exploits
throws an exception
object store is remote
behaves like builds correct paths
#store_dir
behaves like matches the method pattern
is expected to match /@hashed\/\h{2}\/\h{2}\/\h+/
#cache_dir
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
#work_dir
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
#upload_path
behaves like matches the method pattern
is expected to match /@hashed\/\h{2}\/\h{2}\/\h+\/\h+\/<filename>/
#relative_path
is relative (PENDING: Path not set, skipping.)
.absolute_path
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
.base_dir
behaves like matches the method pattern
example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
path traversal exploits
throws an exception
initialize
accepts a secret parameter
callbacks
#prune_store_dir after :remove
is called
prune the store directory
copy_to
files are stored locally
copies the file to the correct location
returned uploader
generates a new secret
creates new upload correctly
copies the file
files are stored remotely
copies the file to the correct location
returned uploader
generates a new secret
creates new upload correctly
copies the file
.extract_dynamic_path
with an absolute path without a slash in the beginning
behaves like a valid secret
with a 32-byte hexadecimal secret
extracts the secret
extracts the identifier
with a 10-byte hexadecimal secret
extracts the secret
extracts the identifier
with an invalid secret
returns nil
with an absolute path with a slash in the beginning
behaves like a valid secret
with a 32-byte hexadecimal secret
extracts the secret
extracts the identifier
with a 10-byte hexadecimal secret
extracts the secret
extracts the identifier
with an invalid secret
returns nil
with an relative path without a slash in the beginning
behaves like a valid secret
with a 32-byte hexadecimal secret
extracts the secret
extracts the identifier
with a 10-byte hexadecimal secret
extracts the secret
extracts the identifier
with an invalid secret
returns nil
with an relative path with a slash in the beginning
behaves like a valid secret
with a 32-byte hexadecimal secret
extracts the secret
extracts the identifier
with a 10-byte hexadecimal secret
extracts the secret
extracts the identifier
with an invalid secret
returns nil
#secret
generates a secret if none is provided
validation
32-byte hexadecimal
returns the secret
10-byte hexadecimal
returns the secret
invalid secret supplied
raises an exception
#migrate!
behaves like migrates
returns corresponding file type
does nothing when migrating to the current store
migrate to the specified store
removes the original file after the migration
can access to the original file during migration
when migrate! is not occupied by another process
executes migrate!
executes use_file
when migrate! is occupied by another process
does not execute migrate!
does not execute use_file
migration is unsuccessful
when the store is not supported
does not update the object_store
does not delete the original file
upon a fog failure
does not update the object_store
does not delete the original file
upon a database failure
does not update the object_store
does not delete the original file
behaves like migrates
returns corresponding file type
does nothing when migrating to the current store
migrate to the specified store
removes the original file after the migration
can access to the original file during migration
when migrate! is not occupied by another process
executes migrate!
executes use_file
when migrate! is occupied by another process
does not execute migrate!
does not execute use_file
migration is unsuccessful
when the store is not supported
does not update the object_store
does not delete the original file
upon a fog failure
does not update the object_store
does not delete the original file
upon a database failure
does not update the object_store
does not delete the original file
#upload=
handles nil
extract the uploader context from it
#replace_file_without_saving!
replaces an existing file without changing its metadata
when remote file is used
#cache!
file is stored remotely in permament location with sanitized name
#to_h
generates URL using original file name instead of filename returned by object storage
GlobalPolicy
reading the list of users
for a logged in user
is expected to be allowed :read_users_list
for an anonymous user
when the public level is restricted
is expected not to be allowed :read_users_list
when the public level is not restricted
is expected to be allowed :read_users_list
for an admin
when the public level is restricted
is expected to be allowed :read_users_list
when the public level is not restricted
is expected to be allowed :read_users_list
create fork
when user has not exceeded project limit
is expected to be allowed :create_fork
when user has exceeded project limit
is expected not to be allowed :create_fork
when user is a maintainer in a group
is expected to be allowed :create_fork
create group
when user has the ability to create group
is expected to be allowed :create_group
when user does not have the ability to create group
is expected not to be allowed :create_group
create group with default branch protection
when user has the ability to create group
is expected to be allowed :create_group_with_default_branch_protection
when user does not have the ability to create group
is expected not to be allowed :create_group_with_default_branch_protection
custom attributes
regular user
is expected not to be allowed :read_custom_attribute
is expected not to be allowed :update_custom_attribute
admin
when admin mode is enabled
is expected to be allowed :read_custom_attribute
is expected to be allowed :update_custom_attribute
when admin mode is disabled
is expected to be disallowed :read_custom_attribute
is expected to be disallowed :update_custom_attribute
approving users
regular user
is expected not to be allowed :approve_user
admin
when admin mode is enabled
is expected to be allowed :approve_user
when admin mode is disabled
is expected to be disallowed :approve_user
rejecting users
regular user
is expected not to be allowed :reject_user
admin
when admin mode is enabled
is expected to be allowed :reject_user
when admin mode is disabled
is expected to be disallowed :reject_user
using project statistics filters
regular user
is expected not to be allowed :use_project_statistics_filters
admin
when admin mode is enabled
is expected to be allowed :use_project_statistics_filters
when admin mode is disabled
is expected to be disallowed :use_project_statistics_filters
API access
regular user
is expected to be allowed :access_api
admin
is expected to be allowed :access_api
anonymous
is expected to be allowed :access_api
project bot
is expected to be allowed :access_api
migration bot
is expected not to be allowed :access_api
security bot
is expected not to be allowed :access_api
user blocked pending approval
is expected not to be allowed :access_api
with a deactivated user
is expected not to be allowed :access_api
user with expired password
is expected not to be allowed :access_api
when user is using ldap
is expected to be allowed :access_api
when terms are enforced
regular user
behaves like access allowed when terms accepted
is expected not to be allowed :access_api
allows access_api when the user accepted the terms
admin
behaves like access allowed when terms accepted
is expected not to be allowed :access_api
allows access_api when the user accepted the terms
anonymous
is expected to be allowed :access_api
inactive user
when within the confirmation grace period
is expected to be allowed :access_api
when confirmation grace period is expired
is expected not to be allowed :access_api
receive notifications
regular user
is expected to be allowed :receive_notifications
admin
is expected to be allowed :receive_notifications
anonymous
is expected not to be allowed :receive_notifications
blocked user
is expected not to be allowed :receive_notifications
deactivated user
is expected not to be allowed :receive_notifications
project bot
is expected not to be allowed :receive_notifications
migration bot
is expected not to be allowed :receive_notifications
user blocked pending approval
is expected not to be allowed :receive_notifications
git access
regular user
is expected to be allowed :access_git
admin
is expected to be allowed :access_git
anonymous
is expected to be allowed :access_git
migration bot
is expected to be allowed :access_git
security bot
is expected to be allowed :access_git
deactivated user
is expected not to be allowed :access_git
inactive user
is expected not to be allowed :access_git
when terms are enforced
regular user
behaves like access allowed when terms accepted
is expected not to be allowed :access_git
allows access_git when the user accepted the terms
admin
behaves like access allowed when terms accepted
is expected not to be allowed :access_git
allows access_git when the user accepted the terms
anonymous
is expected to be allowed :access_git
project bot
is expected to be allowed :access_git
user blocked pending approval
is expected not to be allowed :access_git
user with expired password
is expected not to be allowed :access_git
when user is using ldap
is expected to be allowed :access_git
read instance metadata
regular user
is expected to be allowed :read_instance_metadata
anonymous
is expected not to be allowed :read_instance_metadata
slash commands
regular user
is expected to be allowed :use_slash_commands
when internal
is expected not to be allowed :use_slash_commands
when blocked
is expected not to be allowed :use_slash_commands
when deactivated
is expected not to be allowed :use_slash_commands
inactive user
is expected not to be allowed :use_slash_commands
when access locked
is expected not to be allowed :use_slash_commands
project bot
is expected to be allowed :use_slash_commands
migration bot
is expected not to be allowed :use_slash_commands
user blocked pending approval
is expected not to be allowed :use_slash_commands
user with expired password
is expected not to be allowed :use_slash_commands
when user is using ldap
is expected to be allowed :use_slash_commands
create_snippet
when anonymous
is expected not to be allowed :create_snippet
regular user
is expected to be allowed :create_snippet
when external
is expected not to be allowed :create_snippet
log in
project bot
is expected not to be allowed :log_in
migration bot
is expected not to be allowed :log_in
security bot
is expected not to be allowed :log_in
user blocked pending approval
is expected not to be allowed :log_in
update_runners_registration_token
when anonymous
is expected not to be allowed :update_runners_registration_token
regular user
is expected not to be allowed :update_runners_registration_token
when external
is expected not to be allowed :update_runners_registration_token
admin
when admin mode is enabled
is expected to be allowed :update_runners_registration_token
when admin mode is disabled
is expected to be disallowed :update_runners_registration_token
Gitlab::BareRepositoryImport::Importer
with subgroups
behaves like importing a repository
.execute
creates a project for a repository in storage
skips wiki repos
without admin users
raises an error
#create_project_if_needed
starts an import for a project that did not exist
skips importing when the project already exists
creates a project with the correct path in the database
does not schedule an import
creates the Git repo on disk
hashed storage enabled
creates a project with the correct path in the database
without subgroups
behaves like importing a repository
.execute
creates a project for a repository in storage
skips wiki repos
without admin users
raises an error
#create_project_if_needed
starts an import for a project that did not exist
skips importing when the project already exists
creates a project with the correct path in the database
does not schedule an import
creates the Git repo on disk
hashed storage enabled
creates a project with the correct path in the database
without groups
starts an import for a project that did not exist
creates a project with the correct path in the database
creates the Git repo in disk
with a repository already on disk
moves an existing project to the correct path
with Wiki
creates the Wiki git repo in disk
behaves like importing a repository
.execute
creates a project for a repository in storage
skips wiki repos
without admin users
raises an error
#create_project_if_needed
starts an import for a project that did not exist
skips importing when the project already exists
creates a project with the correct path in the database
does not schedule an import
creates the Git repo on disk
hashed storage enabled
creates a project with the correct path in the database
NotesFinder
#execute
finds notes on merge requests
finds notes on snippets
excludes notes on commits the author can't download
succeeds when no notes found
when notes filter is present
returns only user notes when using only_comments filter
returns only system notes when using only_activity filters
gets all notes
on restricted projects
publicly excludes notes on merge requests
publicly excludes notes on issues
publicly excludes notes on snippets
for target type
finds only notes for the selected type
for target
finds all notes
finds notes on merge requests
finds notes on snippets
finds notes on personal snippets
raises an exception for an invalid target_type
filters out old notes
confidential issue notes
returns notes if user can see the issue
raises an error if user can not see the issue
raises an error for project members with guest role
for explicit target
returns the expected notes
returns the expected notes when last_fetched_at is given
fails when nil is provided
sorting
allows sorting
defaults to sort by .fresh
.search
returns notes with matching content
returns notes with matching content regardless of the casing
returns commit notes user can access
confidential issues
returns notes with matching content if user can see the issue
does not return notes with matching content if user can not see the issue
does not return notes with matching content for project members with guest role
does not return notes with matching content for unauthenticated users
inlines SQL filters on subqueries for performance
project_id check
search filter
#target
for a issue target
returns the issue
for a merge request target
returns the merge_request
for a snippet target
returns the snippet
for a commit target
returns the commit
target_iid
finds issues by iid
finds merge requests by iid
returns nil if both target_id and target_iid are not given
prioritizes target_id over target_iid
API::Helpers
#current_user
handles sticking when a user could be found
does not handle sticking if no user could be found
returns the user if one could be found
#find_project
when ID is used as an argument
behaves like project finder
when project exists
returns requested project
returns nil
when PATH is used as an argument
behaves like project finder
when project exists
returns requested project
returns nil
with an invalid PATH
does not hit the database
behaves like project finder
when project exists
returns requested project
returns nil
#find_project!
when user is authenticated
public project
returns requested project
private project
behaves like private project without access
returns not found
when user is not authenticated
public project
returns requested project
private project
behaves like private project without access
returns not found
#find_project!
when ID is used as an argument
behaves like project finder
when project exists
returns requested project
returns nil
when PATH is used as an argument
behaves like project finder
when project exists
returns requested project
returns nil
with an invalid PATH
does not hit the database
behaves like project finder
when project exists
returns requested project
returns nil
#find_namespace
when ID is used as an argument
behaves like namespace finder
when namespace exists
returns requested namespace
when namespace doesn't exists
returns nil
when PATH is used as an argument
behaves like namespace finder
when namespace exists
returns requested namespace
when namespace doesn't exists
returns nil
#find_namespace!
behaves like user namespace finder
when namespace is group
when user has access to group
returns requested namespace
when user doesn't have access to group
raises not found error
when namespace is user's personal namespace
when user owns the namespace
returns requested namespace
when user doesn't own the namespace
raises not found error
#authorized_project_scope?
job_token_authentication: false, route_setting: false, feature_flag: false, same_job_project: false, expected_result: true
returns the expected result
job_token_authentication: false, route_setting: false, feature_flag: false, same_job_project: true, expected_result: true
returns the expected result
job_token_authentication: false, route_setting: false, feature_flag: true, same_job_project: false, expected_result: true
returns the expected result
job_token_authentication: false, route_setting: false, feature_flag: true, same_job_project: true, expected_result: true
returns the expected result
job_token_authentication: false, route_setting: true, feature_flag: false, same_job_project: false, expected_result: true
returns the expected result
job_token_authentication: false, route_setting: true, feature_flag: false, same_job_project: true, expected_result: true
returns the expected result
job_token_authentication: false, route_setting: true, feature_flag: true, same_job_project: false, expected_result: true
returns the expected result
job_token_authentication: false, route_setting: true, feature_flag: true, same_job_project: true, expected_result: true
returns the expected result
job_token_authentication: true, route_setting: false, feature_flag: false, same_job_project: false, expected_result: true
returns the expected result
job_token_authentication: true, route_setting: false, feature_flag: false, same_job_project: true, expected_result: true
returns the expected result
job_token_authentication: true, route_setting: false, feature_flag: true, same_job_project: false, expected_result: true
returns the expected result
job_token_authentication: true, route_setting: false, feature_flag: true, same_job_project: true, expected_result: true
returns the expected result
job_token_authentication: true, route_setting: true, feature_flag: false, same_job_project: false, expected_result: false
returns the expected result
job_token_authentication: true, route_setting: true, feature_flag: false, same_job_project: true, expected_result: false
returns the expected result
job_token_authentication: true, route_setting: true, feature_flag: true, same_job_project: false, expected_result: false
returns the expected result
job_token_authentication: true, route_setting: true, feature_flag: true, same_job_project: true, expected_result: true
returns the expected result
#send_git_blob
sets Gitlab::Workhorse::DETECT_HEADER header
content disposition
when blob name is null
returns only the disposition
when blob name is not null
returns disposition with the blob name
#increment_unique_values
tracks redis hll event
logs an exception for unknown event
does not track event for nil values
#order_options_with_tie_breaker
with non-id order given
with ascending order
adds id based ordering with same direction as primary order
with descending order
adds id based ordering with same direction as primary order
with non-id order but no direction given
adds ID ASC order
with id order given
does not add an additional order
#destroy_conditionally!
when unmodified check passes
destroys given project
when unmodified check fails
does not destroy given project
#check_unmodified_since!
when last modified is later than header value
renders error
when last modified is earlier than header value
does not render error
when last modified is equal to header value
does not render error
when there is no header value present
does not render error
when header value is not a valid time value
does not render error
#present_disk_file!
with X-Sendfile supported
sends the file using X-Sendfile
without X-Sendfile supported
sends the file
#order_by_similarity?
params: {}, allow_unauthorized: false, current_user_set: false, expected: false
returns the expected result
params: {}, allow_unauthorized: true, current_user_set: false, expected: false
returns the expected result
params: {}, allow_unauthorized: false, current_user_set: true, expected: false
returns the expected result
params: {}, allow_unauthorized: true, current_user_set: true, expected: false
returns the expected result
params: {:order_by=>"similarity"}, allow_unauthorized: false, current_user_set: false, expected: false
returns the expected result
params: {:order_by=>"similarity"}, allow_unauthorized: true, current_user_set: false, expected: false
returns the expected result
params: {:order_by=>"similarity"}, allow_unauthorized: true, current_user_set: true, expected: false
returns the expected result
params: {:order_by=>"similarity"}, allow_unauthorized: false, current_user_set: true, expected: false
returns the expected result
params: {:search=>"test"}, allow_unauthorized: false, current_user_set: false, expected: false
returns the expected result
params: {:search=>"test"}, allow_unauthorized: true, current_user_set: false, expected: false
returns the expected result
params: {:search=>"test"}, allow_unauthorized: true, current_user_set: true, expected: false
returns the expected result
params: {:search=>"test"}, allow_unauthorized: false, current_user_set: true, expected: false
returns the expected result
params: {:order_by=>"similarity", :search=>"test"}, allow_unauthorized: false, current_user_set: false, expected: false
returns the expected result
params: {:order_by=>"similarity", :search=>"test"}, allow_unauthorized: true, current_user_set: false, expected: true
returns the expected result
params: {:order_by=>"similarity", :search=>"test"}, allow_unauthorized: true, current_user_set: true, expected: true
returns the expected result
params: {:order_by=>"similarity", :search=>"test"}, allow_unauthorized: false, current_user_set: true, expected: true
returns the expected result
Gitlab::Gpg::Commit
#signature
unsigned commit
returns nil
invalid signature
returns nil
known key
user matches the key uid
user email matches the email committer
returns a valid signature
behaves like returns the cached signature on second call
returns the cached signature on second call
read-only mode
does not create a cached signature
valid key signed using recent version of Gnupg
returns a valid signature
valid key signed using older version of Gnupg
returns a valid signature
commit signed with a subkey
returns a valid signature
behaves like returns the cached signature on second call
returns the cached signature on second call
user email does not match the committer email, but is the same user
returns an invalid signature
behaves like returns the cached signature on second call
returns the cached signature on second call
user email does not match the committer email
returns an invalid signature
behaves like returns the cached signature on second call
returns the cached signature on second call
user does not match the key uid
returns an invalid signature
behaves like returns the cached signature on second call
returns the cached signature on second call
unknown key
returns an invalid signature
behaves like returns the cached signature on second call
returns the cached signature on second call
multiple commits with signatures
does an aggregated sql request instead of 2 separate ones
Banzai::Pipeline::WikiPipeline
TableOfContents
replaces the tag with the TableOfContentsFilter result
is not case-sensitive
works with alternative [toc] tag
handles an empty pipeline result
Links
when GitLab is hosted at a root URL
linking to pages within the wiki
when creating hierarchical links to the current directory
rewrites non-file links to be at the scope of the current directory
rewrites file links to be at the scope of the current directory
when creating hierarchical links to the parent directory
rewrites non-file links to be at the scope of the parent directory
rewrites file links to be at the scope of the parent directory
when creating hierarchical links to a sub-directory
rewrites non-file links to be at the scope of the sub-directory
rewrites file links to be at the scope of the sub-directory
when creating non-hierarchical links
rewrites non-file links to be at the scope of the wiki root
rewrites non-file links (with spaces) to be at the scope of the wiki root
rewrites file links to be at the scope of the current directory
rewrites links with anchor
rewrites links (with spaces) with anchor
when creating root links
rewrites non-file links to be at the scope of the wiki root
rewrites file links to be at the scope of the wiki root
linking to pages outside the wiki (absolute)
doesn't rewrite links
when GitLab is hosted at a relative URL
linking to pages within the wiki
when creating hierarchical links to the current directory
rewrites non-file links to be at the scope of the current directory
rewrites file links to be at the scope of the current directory
when creating hierarchical links to the parent directory
rewrites non-file links to be at the scope of the parent directory
rewrites file links to be at the scope of the parent directory
when creating hierarchical links to a sub-directory
rewrites non-file links to be at the scope of the sub-directory
rewrites file links to be at the scope of the sub-directory
when creating non-hierarchical links
rewrites non-file links to be at the scope of the wiki root
rewrites non-file links (with spaces) to be at the scope of the wiki root
rewrites file links to be at the scope of the current directory
rewrites links with anchor
rewrites links (with spaces) with anchor
when creating root links
rewrites non-file links to be at the scope of the wiki root
rewrites file links to be at the scope of the wiki root
linking to pages outside the wiki (absolute)
doesn't rewrite links
checking slug validity when assembling links
with a valid slug
includes the slug in a (.) relative link
includeds the slug in a (..) relative link
when the slug is deemed unsafe or invalid
with the invalid slug javascript:
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
with the invalid slug JaVaScRiPt:
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
with the invalid slug javascript:
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
with the invalid slug javascript :
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
with the invalid slug javascript:
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
with the invalid slug javascript :
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
with the invalid slug :javascript:
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
with the invalid slug javascript&#58;
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
with the invalid slug javascript&#0058;
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
with the invalid slug javascript&#x3A;
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
with the invalid slug javascript&#x003A;
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
with the invalid slug javascript:
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
with the invalid slug &#14; javascript:
doesn't include a prohibited slug in a (.) relative link 'alert(1);'
doesn't include a prohibited slug in a (..) relative link 'alert(1);'
doesn't include a prohibited slug in a (.) relative link 'alert(document.location);'
doesn't include a prohibited slug in a (..) relative link 'alert(document.location);'
videos and audio
generates video html structure
rewrites and replaces video links names with white spaces to %20
generates audio html structure
rewrites and replaces audio links names with white spaces to %20
gollum tag filters
when local image file exists
sets the proper attributes for the image
Packages::Nuget::SearchService
#execute
with project
behaves like handling all the conditions
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with a smaller per page count
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">
with 0 per page count
is expected to contain exactly
with a negative per page count
is expected to raise ArgumentError with "negative per_page"
with a padding
is expected to contain exactly #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with a too big padding
is expected to contain exactly
with a negative padding
is expected to raise ArgumentError with "negative padding"
with search term
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with nil search term
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 12, project_id: 381, created_at: "2021-10-13 18:31:25.200632453 +0000", updat...000", name: "FooBarD", version: "1.0.12", package_type: "nuget", creator_id: 679, status: "default">
with empty search term
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 12, project_id: 381, created_at: "2021-10-13 18:31:25.200632453 +0000", updat...000", name: "FooBarD", version: "1.0.12", package_type: "nuget", creator_id: 679, status: "default">
with non-displayable packages
is expected to contain exactly #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 12, project_id: 381, created_at: "2021-10-13 18:31:25.200632453 +0000", updat...000", name: "FooBarD", version: "1.0.12", package_type: "nuget", creator_id: 679, status: "default">
with prefix search term
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with suffix search term
is expected to contain exactly #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with pre release packages
including them
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 15, project_id: 381, created_at: "2021-10-13 18:31:29.191899584 +0000", updat... "DummyPackageE", version: "3.2.1-alpha", package_type: "nuget", creator_id: 679, status: "default">
excluding them
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
when mixed with release versions
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 16, project_id: 381, created_at: "2021-10-13 18:31:29.731108463 +0000", updat... name: "DummyPackageE", version: "3.2.1", package_type: "nuget", creator_id: 679, status: "default">
with subgroup
behaves like handling all the conditions
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with a smaller per page count
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">
with 0 per page count
is expected to contain exactly
with a negative per page count
is expected to raise ArgumentError with "negative per_page"
with a padding
is expected to contain exactly #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with a too big padding
is expected to contain exactly
with a negative padding
is expected to raise ArgumentError with "negative padding"
with search term
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with nil search term
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 12, project_id: 381, created_at: "2021-10-13 18:31:25.200632453 +0000", updat...000", name: "FooBarD", version: "1.0.12", package_type: "nuget", creator_id: 679, status: "default">
with empty search term
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 12, project_id: 381, created_at: "2021-10-13 18:31:25.200632453 +0000", updat...000", name: "FooBarD", version: "1.0.12", package_type: "nuget", creator_id: 679, status: "default">
with non-displayable packages
is expected to contain exactly #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 12, project_id: 381, created_at: "2021-10-13 18:31:25.200632453 +0000", updat...000", name: "FooBarD", version: "1.0.12", package_type: "nuget", creator_id: 679, status: "default">
with prefix search term
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with suffix search term
is expected to contain exactly #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with pre release packages
including them
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 17, project_id: 381, created_at: "2021-10-13 18:31:34.574767432 +0000", updat... "DummyPackageE", version: "3.2.1-alpha", package_type: "nuget", creator_id: 679, status: "default">
excluding them
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
when mixed with release versions
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 18, project_id: 381, created_at: "2021-10-13 18:31:35.295693006 +0000", updat... name: "DummyPackageE", version: "3.2.1", package_type: "nuget", creator_id: 679, status: "default">
with group
behaves like handling all the conditions
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with a smaller per page count
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">
with 0 per page count
is expected to contain exactly
with a negative per page count
is expected to raise ArgumentError with "negative per_page"
with a padding
is expected to contain exactly #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with a too big padding
is expected to contain exactly
with a negative padding
is expected to raise ArgumentError with "negative padding"
with search term
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with nil search term
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 12, project_id: 381, created_at: "2021-10-13 18:31:25.200632453 +0000", updat...000", name: "FooBarD", version: "1.0.12", package_type: "nuget", creator_id: 679, status: "default">
with empty search term
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 12, project_id: 381, created_at: "2021-10-13 18:31:25.200632453 +0000", updat...000", name: "FooBarD", version: "1.0.12", package_type: "nuget", creator_id: 679, status: "default">
with non-displayable packages
is expected to contain exactly #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 12, project_id: 381, created_at: "2021-10-13 18:31:25.200632453 +0000", updat...000", name: "FooBarD", version: "1.0.12", package_type: "nuget", creator_id: 679, status: "default">
with prefix search term
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with suffix search term
is expected to contain exactly #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
with pre release packages
including them
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 19, project_id: 381, created_at: "2021-10-13 18:31:40.764153502 +0000", updat... "DummyPackageE", version: "3.2.1-alpha", package_type: "nuget", creator_id: 679, status: "default">
excluding them
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">
when mixed with release versions
is expected to contain exactly #<Packages::Package id: 1, project_id: 381, created_at: "2021-10-13 18:31:24.917712000 +0000", update... name: "DummyPackageA", version: "1.0.1", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 2, project_id: 381, created_at: "2021-10-13 18:31:24.973986592 +0000", update... name: "DummyPackageB", version: "1.0.2", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 3, project_id: 381, created_at: "2021-10-13 18:31:24.998744413 +0000", update... name: "DummyPackageB", version: "1.0.3", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 4, project_id: 381, created_at: "2021-10-13 18:31:25.024346572 +0000", update... name: "DummyPackageB", version: "1.0.4", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 5, project_id: 381, created_at: "2021-10-13 18:31:25.048789363 +0000", update... name: "DummyPackageB", version: "1.0.5", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 6, project_id: 381, created_at: "2021-10-13 18:31:25.071179717 +0000", update... name: "DummyPackageB", version: "1.0.6", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 7, project_id: 381, created_at: "2021-10-13 18:31:25.093347610 +0000", update... name: "DummyPackageC", version: "1.0.7", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 8, project_id: 381, created_at: "2021-10-13 18:31:25.113775876 +0000", update... name: "DummyPackageC", version: "1.0.8", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 9, project_id: 381, created_at: "2021-10-13 18:31:25.135874170 +0000", update... name: "DummyPackageC", version: "1.0.9", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 10, project_id: 381, created_at: "2021-10-13 18:31:25.157865994 +0000", updat...name: "DummyPackageC", version: "1.0.10", package_type: "nuget", creator_id: 679, status: "default">, #<Packages::Package id: 11, project_id: 381, created_at: "2021-10-13 18:31:25.177913700 +0000", updat...name: "DummyPackageC", version: "1.0.11", package_type: "nuget", creator_id: 679, status: "default">, and #<Packages::Package id: 20, project_id: 381, created_at: "2021-10-13 18:31:41.385592264 +0000", updat... name: "DummyPackageE", version: "3.2.1", package_type: "nuget", creator_id: 679, status: "default">
Gitlab::Ci::Config
when config is valid
#to_hash
returns hash created from string
#valid?
is valid
has no errors
#stages
with default stages
is expected to eq [".pre", "build", "test", "deploy", ".post"]
with custom stages
is expected to eq [".pre", "stage1", "stage2", ".post"]
#included_templates
is expected to contain exactly "Jobs/Deploy.gitlab-ci.yml" and "Jobs/Build.gitlab-ci.yml"
when using extendable hash
correctly extends the hash
when config is invalid
when yml is incorrect
.new
raises error
when yml is too big
.new
raises error
when config logic is incorrect
#valid?
is not valid
has errors
#errors
returns an array of strings
when invalid extended hash has been provided
raises an error
when ports have been set
in the main image
raises an error
in the job image
raises an error
in the services
raises an error
when yaml uses circular !reference
raises error
when using 'include' directive
when gitlab_ci_yml has valid 'include' defined
returns a composed hash
handling variables
contains all project variables
contains all group variables
contains all instance variables
overriding a group variable at project level
successfully overrides
when gitlab_ci.yml has invalid 'include' defined
raises ConfigError
when gitlab_ci.yml has ambigious 'include' defined
raises ConfigError
when it takes too long to evaluate includes
raises error TimeoutError
external file version
when external local file SHA is defined
is using a defined value
when external local file SHA is not defined
is using latest SHA on the default branch
when both external files and gitlab_ci.yml defined the same key
takes precedence
when both external files and gitlab_ci.yml define a dictionary of distinct variables
merges the variables dictionaries
when both external files and gitlab_ci.yml define a dictionary of overlapping variables
later declarations should take precedence
when both external files and gitlab_ci.yml define a job
merges the jobs
when the script key is in both
uses the script from the gitlab_ci.yml
when including file from artifact
disallows the use in parent pipelines
when used in the context of a child pipeline
returns valid config
when job key is missing
raises an error
when artifact key is missing
raises an error
when including multiple files from a project
returns a composed hash
when an 'include' has rules
when the rules condition is satisfied
includes the file
when the rules condition is satisfied
does not include the file
RuboCop::Cop::Gitlab::MarkUsedFeatureFlags
Feature.enabled? method
a string feature flag
sets the flag as used
a symbol feature flag
sets the flag as used
an interpolated string feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature.enabled?("foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature.enabled?("foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated symbol feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature.enabled?(:"foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature.enabled?(:"foo_#{bar}")`, source: (string))
sets the flag as used
a string with a "/" in it
sets the flag as used
an interpolated string feature flag with a string prefix and suffix
Interpolated feature flag name has multiple static string parts, we won't track it. (call: `Feature.enabled?(:"foo_#{bar}_baz")`, source: (string))
sets the flag as used
a dynamic string feature flag as a variable
Feature flag is dynamic: '(send nil :a_variable). (call: `Feature.enabled?(a_variable, an_arg)`, source: (string))
sets the flag as used
an integer feature flag
Feature flag has an unknown type: int. (call: `Feature.enabled?(123)`, source: (string))
sets the flag as used
Feature.disabled? method
a string feature flag
sets the flag as used
a symbol feature flag
sets the flag as used
an interpolated string feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature.disabled?("foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature.disabled?("foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated symbol feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature.disabled?(:"foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature.disabled?(:"foo_#{bar}")`, source: (string))
sets the flag as used
a string with a "/" in it
sets the flag as used
an interpolated string feature flag with a string prefix and suffix
Interpolated feature flag name has multiple static string parts, we won't track it. (call: `Feature.disabled?(:"foo_#{bar}_baz")`, source: (string))
sets the flag as used
a dynamic string feature flag as a variable
Feature flag is dynamic: '(send nil :a_variable). (call: `Feature.disabled?(a_variable, an_arg)`, source: (string))
sets the flag as used
an integer feature flag
Feature flag has an unknown type: int. (call: `Feature.disabled?(123)`, source: (string))
sets the flag as used
push_frontend_feature_flag method
a string feature flag
sets the flag as used
a symbol feature flag
sets the flag as used
an interpolated string feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `push_frontend_feature_flag("foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `push_frontend_feature_flag("foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated symbol feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `push_frontend_feature_flag(:"foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `push_frontend_feature_flag(:"foo_#{bar}")`, source: (string))
sets the flag as used
a string with a "/" in it
sets the flag as used
an interpolated string feature flag with a string prefix and suffix
Interpolated feature flag name has multiple static string parts, we won't track it. (call: `push_frontend_feature_flag(:"foo_#{bar}_baz")`, source: (string))
sets the flag as used
a dynamic string feature flag as a variable
Feature flag is dynamic: '(send nil :a_variable). (call: `push_frontend_feature_flag(a_variable, an_arg)`, source: (string))
sets the flag as used
an integer feature flag
Feature flag has an unknown type: int. (call: `push_frontend_feature_flag(123)`, source: (string))
sets the flag as used
Feature::Gitaly.enabled? method
a string feature flag
sets the flag as used
a symbol feature flag
sets the flag as used
an interpolated string feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature::Gitaly.enabled?("foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature::Gitaly.enabled?("foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated symbol feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature::Gitaly.enabled?(:"foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature::Gitaly.enabled?(:"foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated string feature flag with a string prefix and suffix
Interpolated feature flag name has multiple static string parts, we won't track it. (call: `Feature::Gitaly.enabled?(:"foo_#{bar}_baz")`, source: (string))
sets the flag as used
a dynamic string feature flag as a variable
Feature flag is dynamic: '(send nil :a_variable). (call: `Feature::Gitaly.enabled?(a_variable, an_arg)`, source: (string))
sets the flag as used
an integer feature flag
Feature flag has an unknown type: int. (call: `Feature::Gitaly.enabled?(123)`, source: (string))
sets the flag as used
Feature::Gitaly.disabled? method
a string feature flag
sets the flag as used
a symbol feature flag
sets the flag as used
an interpolated string feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature::Gitaly.disabled?("foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature::Gitaly.disabled?("foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated symbol feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature::Gitaly.disabled?(:"foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Feature::Gitaly.disabled?(:"foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated string feature flag with a string prefix and suffix
Interpolated feature flag name has multiple static string parts, we won't track it. (call: `Feature::Gitaly.disabled?(:"foo_#{bar}_baz")`, source: (string))
sets the flag as used
a dynamic string feature flag as a variable
Feature flag is dynamic: '(send nil :a_variable). (call: `Feature::Gitaly.disabled?(a_variable, an_arg)`, source: (string))
sets the flag as used
an integer feature flag
Feature flag has an unknown type: int. (call: `Feature::Gitaly.disabled?(123)`, source: (string))
sets the flag as used
experiment method
a string feature flag
The 'baz_experiment_percentage' feature flag tracks the baz experiment, which is still in use, so we'll mark it as used. (call: `experiment("baz")`, source: (string))
sets the flag as used
a symbol feature flag
The 'baz_experiment_percentage' feature flag tracks the baz experiment, which is still in use, so we'll mark it as used. (call: `experiment(:baz)`, source: (string))
sets the flag as used
an interpolated string feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `experiment("foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `experiment("foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated symbol feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `experiment(:"foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `experiment(:"foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated string feature flag with a string prefix and suffix
Interpolated feature flag name has multiple static string parts, we won't track it. (call: `experiment(:"foo_#{bar}_baz")`, source: (string))
sets the flag as used
a dynamic string feature flag as a variable
Feature flag is dynamic: '(send nil :a_variable). (call: `experiment(a_variable, an_arg)`, source: (string))
sets the flag as used
an integer feature flag
Feature flag has an unknown type: int. (call: `experiment(123)`, source: (string))
sets the flag as used
experiment_enabled? method
a string feature flag
The 'baz_experiment_percentage' feature flag tracks the baz experiment, which is still in use, so we'll mark it as used. (call: `experiment_enabled?("baz")`, source: (string))
sets the flag as used
a symbol feature flag
The 'baz_experiment_percentage' feature flag tracks the baz experiment, which is still in use, so we'll mark it as used. (call: `experiment_enabled?(:baz)`, source: (string))
sets the flag as used
an interpolated string feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `experiment_enabled?("foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `experiment_enabled?("foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated symbol feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `experiment_enabled?(:"foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `experiment_enabled?(:"foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated string feature flag with a string prefix and suffix
Interpolated feature flag name has multiple static string parts, we won't track it. (call: `experiment_enabled?(:"foo_#{bar}_baz")`, source: (string))
sets the flag as used
a dynamic string feature flag as a variable
Feature flag is dynamic: '(send nil :a_variable). (call: `experiment_enabled?(a_variable, an_arg)`, source: (string))
sets the flag as used
an integer feature flag
Feature flag has an unknown type: int. (call: `experiment_enabled?(123)`, source: (string))
sets the flag as used
push_frontend_experiment method
a string feature flag
The 'baz_experiment_percentage' feature flag tracks the baz experiment, which is still in use, so we'll mark it as used. (call: `push_frontend_experiment("baz")`, source: (string))
sets the flag as used
a symbol feature flag
The 'baz_experiment_percentage' feature flag tracks the baz experiment, which is still in use, so we'll mark it as used. (call: `push_frontend_experiment(:baz)`, source: (string))
sets the flag as used
an interpolated string feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `push_frontend_experiment("foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `push_frontend_experiment("foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated symbol feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `push_frontend_experiment(:"foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `push_frontend_experiment(:"foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated string feature flag with a string prefix and suffix
Interpolated feature flag name has multiple static string parts, we won't track it. (call: `push_frontend_experiment(:"foo_#{bar}_baz")`, source: (string))
sets the flag as used
a dynamic string feature flag as a variable
Feature flag is dynamic: '(send nil :a_variable). (call: `push_frontend_experiment(a_variable, an_arg)`, source: (string))
sets the flag as used
an integer feature flag
Feature flag has an unknown type: int. (call: `push_frontend_experiment(123)`, source: (string))
sets the flag as used
Gitlab::Experimentation.active? method
a string feature flag
The 'baz_experiment_percentage' feature flag tracks the baz experiment, which is still in use, so we'll mark it as used. (call: `Gitlab::Experimentation.active?("baz")`, source: (string))
sets the flag as used
a symbol feature flag
The 'baz_experiment_percentage' feature flag tracks the baz experiment, which is still in use, so we'll mark it as used. (call: `Gitlab::Experimentation.active?(:baz)`, source: (string))
sets the flag as used
an interpolated string feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Gitlab::Experimentation.active?("foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Gitlab::Experimentation.active?("foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated symbol feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Gitlab::Experimentation.active?(:"foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `Gitlab::Experimentation.active?(:"foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated string feature flag with a string prefix and suffix
Interpolated feature flag name has multiple static string parts, we won't track it. (call: `Gitlab::Experimentation.active?(:"foo_#{bar}_baz")`, source: (string))
sets the flag as used
a dynamic string feature flag as a variable
Feature flag is dynamic: '(send nil :a_variable). (call: `Gitlab::Experimentation.active?(a_variable, an_arg)`, source: (string))
sets the flag as used
an integer feature flag
Feature flag has an unknown type: int. (call: `Gitlab::Experimentation.active?(123)`, source: (string))
sets the flag as used
use_rugged? method
a string feature flag
sets the flag as used
a symbol feature flag
sets the flag as used
an interpolated string feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `use_rugged?(arg, "foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `use_rugged?(arg, "foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated symbol feature flag with a string prefix
The 'foo_hello' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `use_rugged?(arg, :"foo_#{bar}")`, source: (string))
The 'foo_world' feature flag starts with 'foo_', so we'll optimistically mark it as used. (call: `use_rugged?(arg, :"foo_#{bar}")`, source: (string))
sets the flag as used
an interpolated string feature flag with a string prefix and suffix
Interpolated feature flag name has multiple static string parts, we won't track it. (call: `use_rugged?(arg, :"foo_#{bar}_baz")`, source: (string))
sets the flag as used
a dynamic string feature flag as a variable
Feature flag is dynamic: '(send nil :an_arg). (call: `use_rugged?(a_variable, an_arg)`, source: (string))
sets the flag as used
an integer feature flag
Feature flag has an unknown type: int. (call: `use_rugged?(arg, 123)`, source: (string))
sets the flag as used
self.limit_feature_flag = :foo
sets the flag as used
self.limit_feature_flag_for_override = :foo
sets the flag as used
FEATURE_FLAG = :foo
sets the flag as used
Worker `data_consistency` method
sets the flag as used
sets the flag as used
Worker `deduplicate` method
sets the flag as used
sets the flag as used
GraphQL `field` method
sets the flag as used
sets the flag as used
sets the flag as used
sets the flag as used
sets the flag as used
sets the flag as used
tracking of usage data metrics known events happens at the beginning of inspection
sets the flag as used
Ci::PipelineSchedule
is expected to belong to project required:
is expected to belong to owner required:
is expected to have many pipelines
is expected to have many variables
is expected to respond to #ref
is expected to respond to #cron
is expected to respond to #cron_timezone
is expected to respond to #description
is expected to respond to #next_run_at
behaves like includes Limitable concern
validations
is expected to be a kind of Limitable
without plan limits configured
can create new models
with plan limits configured
can create new models
with an existing model
cannot create new models exceeding the plan limits
validations
does not allow invalid cron patterns
does not allow invalid cron patterns
when active is false
does not allow nullified ref
when cron contains trailing whitespaces
strips the attribute
.runnable_schedules
returns the runnable schedule
when there are no runnable schedules
returns an empty array
.preloaded
preloads the associations
.owned_by
returns owned pipeline schedules
#set_next_run_at
worker_cron: "0 1 2 3 *", schedule_cron: "0 1 * * *", plan_limit: nil, now: Tue, 02 Mar 2021 01:00:00.000000000 UTC +00:00, result: Wed, 02 Mar 2022 01:00:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "0 1 2 3 *", schedule_cron: "0 1 * * *", plan_limit: 24, now: Tue, 02 Mar 2021 01:00:00.000000000 UTC +00:00, result: Wed, 02 Mar 2022 01:00:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "*/1 * * * *", plan_limit: nil, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 11:05:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "*/1 * * * *", plan_limit: 24, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 12:00:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "*/1 * * * *", plan_limit: 144, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 11:10:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "*/1 * * * *", plan_limit: 200, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 11:10:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "0 * * * *", plan_limit: nil, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 12:05:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "0 * * * *", plan_limit: 144, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 12:00:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "0 * * * *", plan_limit: 24, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 12:00:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "0 * * * *", plan_limit: 12, now: Thu, 27 May 2021 11:00:00.000000000 UTC +00:00, result: Thu, 27 May 2021 12:05:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "0 1 * * *", plan_limit: 24, now: Thu, 27 May 2021 01:00:00.000000000 UTC +00:00, result: Fri, 28 May 2021 01:00:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "0 1 * * *", plan_limit: 144, now: Thu, 27 May 2021 01:00:00.000000000 UTC +00:00, result: Fri, 28 May 2021 01:00:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "0 1 * * *", plan_limit: 180, now: Thu, 27 May 2021 01:00:00.000000000 UTC +00:00, result: Fri, 28 May 2021 01:00:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "0 1 1 * *", plan_limit: 24, now: Sat, 01 May 2021 01:00:00.000000000 UTC +00:00, result: Tue, 01 Jun 2021 01:00:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/9 * * * *", schedule_cron: "0 1 1 * *", plan_limit: 24, now: Sat, 01 May 2021 01:09:00.000000000 UTC +00:00, result: Tue, 01 Jun 2021 01:00:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "59 14 * * *", plan_limit: 24, now: Sat, 01 May 2021 15:00:00.000000000 UTC +00:00, result: Sun, 02 May 2021 15:00:00.000000000 UTC +00:00
updates next_run_at
worker_cron: "*/5 * * * *", schedule_cron: "45 21 1 2 *", plan_limit: 288, now: Mon, 01 Feb 2021 21:45:00.000000000 UTC +00:00, result: Tue, 01 Feb 2022 21:45:00.000000000 UTC +00:00
updates next_run_at
when there are two different pipeline schedules in different time zones
sets different next_run_at
#schedule_next_run!
updates next_run_at
when record is invalid
nullifies the next run at
#job_variables
is expected to contain exactly {:file=>false, :key=>"VARIABLE_1", :public=>false, :value=>"VARIABLE_VALUE"} and {:file=>false, :key=>"VARIABLE_2", :public=>false, :value=>"VARIABLE_VALUE"}
#daily_limit
when there is no limit
is expected to be nil
when there is a limit
is expected to eq 144
ResourceLabelEvent
behaves like having unique enum values
has unique values in "action"
behaves like a resource event
importable
is expected to respond to #importing?
is expected to respond to #imported?
validations
is expected not to allow :user to be ‹nil›
when importing
is expected to allow :user to be ‹nil›
associations
is expected to belong to user required:
.created_after
returns the expected events
returns no events if time is after last record time
behaves like a resource event for issues
associations
is expected to belong to issue required:
.by_issue
returns the expected records for an issue with events
returns the expected records for an issue with no events
.by_issue_ids_and_created_at_earlier_or_equal_to
returns the expected records for an issue with events
returns the expected records for an issue with no events
#issuable
returns the expected issuable
behaves like a resource event for merge requests
associations
is expected to belong to merge_request required:
.by_merge_request
returns the expected records for an issue with events
returns the expected records for an issue with no events
#issuable
returns the expected issuable
associations
is expected to belong to label required:
validations
is expected to be valid
Issuable validation
is invalid if issue_id and merge_request_id are missing
is invalid if issue_id and merge_request_id are set
is valid if only issue_id is set
is valid if only merge_request_id is set
callbacks
#expire_etag_cache
expires resource note etag cache on event save
expires resource note etag cache on event destroy
#outdated_markdown?
returns true if label is missing and reference is not empty
returns true if reference is not set yet
returns true if markdown is outdated
returns false if label and reference are set
.visible_to_user?
returns events with labels accessible by user
filters events with public project labels if issues and MRs are private
filters events with project labels not accessible by user
filters events with group labels not accessible by user
Routable
behaves like .find_by_full_path
.find_by_full_path
finds records by their full path
returns nil for unknown paths
includes route information when loading a record
with redirect routes
without follow_redirects option
does not find records by their redirected path
with follow_redirects option set to true
finds records by their canonical path
finds records by their redirected path
returns nil for unknown paths
behaves like .find_by_full_path
.find_by_full_path
finds records by their full path
returns nil for unknown paths
includes route information when loading a record
with redirect routes
without follow_redirects option
does not find records by their redirected path
with follow_redirects option set to true
finds records by their canonical path
finds records by their redirected path
returns nil for unknown paths
Group Routable
Validations
is expected to validate that :route cannot be empty/falsy
Associations
is expected to have one route dependent => destroy
is expected to have many redirect_routes dependent => destroy
Callbacks
for a group
creates route record on create
updates route record on path change
ensure route path uniqueness across different objects
for a user
creates the route for a record on create
updates routes and nested routes on name change
.find_by_full_path
does not find projects with a matching path
behaves like .find_by_full_path
.find_by_full_path
finds records by their full path
returns nil for unknown paths
includes route information when loading a record
with redirect routes
without follow_redirects option
does not find records by their redirected path
with follow_redirects option set to true
finds records by their canonical path
finds records by their redirected path
returns nil for unknown paths
behaves like .find_by_full_path
.find_by_full_path
finds records by their full path
returns nil for unknown paths
includes route information when loading a record
with redirect routes
without follow_redirects option
does not find records by their redirected path
with follow_redirects option set to true
finds records by their canonical path
finds records by their redirected path
returns nil for unknown paths
.where_full_path_in
without any paths
returns an empty relation
without any valid paths
returns an empty relation
with valid paths
returns the projects matching the paths
returns projects regardless of the casing of paths
#parent_loaded?
is false when the parent is not loaded
is true when the parent is loaded
#route_loaded?
is false when the route is not loaded
is true when the route is loaded
#full_path
is expected to eq "foo"
is expected to eq "foo/group152"
hits the cache when not preloaded
#full_name
is expected to eq "foo"
is expected to eq "foo / group152"
hits the cache when not preloaded
Project Routable
does not find groups with a matching path
behaves like .find_by_full_path
.find_by_full_path
finds records by their full path
returns nil for unknown paths
includes route information when loading a record
with redirect routes
without follow_redirects option
does not find records by their redirected path
with follow_redirects option set to true
finds records by their canonical path
finds records by their redirected path
returns nil for unknown paths
#full_path
is expected to eq "namespace332/project471"
hits the cache when not preloaded
#full_name
is expected to eq "John Doe1027 / project471"
hits the cache when not preloaded
Gitlab::Diff::FileCollection::MergeRequestDiffBatch
initialize
memoizes pagination_data
#diff_files
returns paginated diff files
returns a valid instance of a DiffCollection
first page
returns correct diff files
another page
returns correct diff files
nil batch_page
returns correct diff files
nil batch_size
returns correct diff files
invalid page
returns correct diff files
last page
returns correct diff files
behaves like unfoldable diff
calls Gitlab::Diff::File#unfold_diff_lines with correct position
behaves like diff statistics
when include_stats is true
Repository#diff_stats is called
Gitlab::Diff::File is initialized with diff stats
when should not request diff stats
Repository#diff_stats is not called
behaves like cacheable diff collection
#write_cache
calls Gitlab::Diff::HighlightCache#write_if_empty
calls Gitlab::Diff::StatsCache#write_if_empty with diff stats
#clear_cache
calls Gitlab::Diff::HighlightCache#clear
calls Gitlab::Diff::StatsCache#clear
#diff_files
calls Gitlab::Diff::HighlightCache#decorate
when there are stats cached
does not make a diff stats rpc call
when there are no stats cached
makes a diff stats rpc call
behaves like unsortable diff files
#raw_diff_files
does not call Gitlab::Diff::FileCollectionSorter even when sorted is true
CommitStatusPresenter
inherits from Gitlab::View::Presenter::Delegated
#callout_failure_message
when troubleshooting doc is available
appends the troubleshooting link
covers all failure reasons
unknown_failure
is a valid status
script_failure
is a valid status
api_failure
is a valid status
stuck_or_timeout_failure
is a valid status
runner_system_failure
is a valid status
missing_dependency_failure
is a valid status
runner_unsupported
is a valid status
stale_schedule
is a valid status
job_execution_timeout
is a valid status
archived_failure
is a valid status
unmet_prerequisites
is a valid status
scheduler_failure
is a valid status
data_integrity_failure
is a valid status
forward_deployment_failure
is a valid status
user_blocked
is a valid status
project_deleted
is a valid status
ci_quota_exceeded
is a valid status
pipeline_loop_detected
is a valid status
no_matching_runner
is a valid status
trace_size_exceeded
is a valid status
builds_disabled
is a valid status
environment_creation_failure
is a valid status
insufficient_bridge_permissions
is a valid status
downstream_bridge_project_not_found
is a valid status
invalid_bridge_trigger
is a valid status
bridge_pipeline_is_child_pipeline
is a valid status
downstream_pipeline_creation_failed
is a valid status
secrets_provider_not_found
is a valid status
reached_max_descendant_pipelines_depth
is a valid status
protected_environment_failure
is a valid status
upstream_bridge_project_not_found
is a valid status
insufficient_upstream_permissions
is a valid status
invalid failure message
is an invalid status
Milestoneable
#supports_milestone?
for issues
returns true
for merge requests
returns true
for incidents
returns true
release scopes
#any_milestone
when milestone filter is present and related closing issues are joined
returns merge request closing issues of any milestone
#without_release
returns the issues not tied to any milestone and the ones tied to milestone with no release
#any_release
returns all issues tied to a release
#with_release
returns the issues tied a specfic release
when a release has a milestone with one issue and another one with no issue
returns that one issue
when the milestone with no issue is added as a filter
returns an empty list
when the milestone with the issue is added as a filter
returns this issue
when there is no issue under a specific release
returns no issue
when a non-existent release tag is passed in
returns no issue
Issues
behaves like an object that can be assigned a milestone
Validation
milestone
with correct params
is expected to be valid
with empty string milestone
is expected to be valid
with nil milestone id
is expected to be valid
with a milestone id from another project
is expected to be invalid
#milestone_available?
returns true with a milestone from the issue project
returns true with a milestone from the issue project group
returns true with a milestone from the the parent of the issue project group
returns true with a blank milestone
returns false with a milestone from another project
returns false with a milestone from another group
MergeRequests
behaves like an object that can be assigned a milestone
Validation
milestone
with correct params
is expected to be valid
with empty string milestone
is expected to be valid
with nil milestone id
is expected to be valid
with a milestone id from another project
is expected to be invalid
#milestone_available?
returns true with a milestone from the issue project
returns true with a milestone from the issue project group
returns true with a milestone from the the parent of the issue project group
returns true with a blank milestone
returns false with a milestone from another project
returns false with a milestone from another group
User TokenAuthenticatable
behaves like TokenAuthenticatable
dynamically defined methods
is expected to respond to #find_by_feed_token
is expected to respond to #ensure_feed_token
is expected to respond to #set_feed_token
is expected to respond to #reset_feed_token!
ensures authentication token
is expected to be a kind of String
ApplicationSetting TokenAuthenticatable
behaves like TokenAuthenticatable
dynamically defined methods
is expected to respond to #find_by_runners_registration_token
is expected to respond to #ensure_runners_registration_token
is expected to respond to #set_runners_registration_token
is expected to respond to #reset_runners_registration_token!
generating new token
token is not generated yet
token field accessor
is expected not to be blank
ensure_runners_registration_token
is expected to be a kind of String
is expected not to be blank
does not persist token
ensure_runners_registration_token!
persists new token as an encrypted string
does not persist token in a clear text
token is generated
persists a new token
setting new token
is expected to eq "0123456789"
multiple token fields
is expected to respond to #ensure_runners_registration_token
is expected to respond to #ensure_yet_another_token
setting same token field multiple times
raises error
PersonalAccessToken TokenAuthenticatable
.find_by_token
finds the token
#set_token
sets new token
#ensure_token
token_digest does not exist
behaves like changes personal access token
sets new token
token_digest already generated
behaves like does not change personal access token
sets new token
#ensure_token!
token_digest does not exist
behaves like changes personal access token
sets new token
token_digest already generated
behaves like does not change personal access token
sets new token
#reset_token!
token_digest does not exist
behaves like changes personal access token
sets new token
token_digest already generated
behaves like changes personal access token
sets new token
Ci::Build TokenAuthenticatable
behaves like TokenAuthenticatable
dynamically defined methods
is expected to respond to #find_by_token
is expected to respond to #ensure_token
is expected to respond to #set_token
is expected to respond to #reset_token!
generating new token
token is not generated yet
token field accessor
makes it possible to access token
ensure_token
is expected to be a kind of String
is expected not to be blank
does not persist token
ensure_token!
persists a new token
persists new token as an encrypted string
does not persist a token in a clear text
#reset_token!
persists a new token
setting a new token
returns the token
writes a new encrypted token
does not write a new cleartext token
Gitlab::Git::Tag
#tags
is expected to eq 4
first tag
is expected to eq "v1.0.0"
is expected to eq "f4e6814c3e4e7a0de82a9e7cd20c626cc963a2f8"
is expected to eq "6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9"
is expected to eq "Release"
is expected to be falsey
is expected to eq :NONE
is expected to be nil
is expected to eq "Dmitriy Zaporozhets"
is expected to eq "dmitriy.zaporozhets@gmail.com"
is expected to eq <Google::Protobuf::Timestamp: seconds: 1393491299, nanos: 0>
is expected to eq "+0200"
last tag
is expected to eq "v1.2.1"
is expected to eq "2ac1f24e253e08135507d0830508febaaccf02ee"
is expected to eq "fa1b1e6c004a68b7d8763b86455da9e6b23e36d6"
is expected to eq "Version 1.2.1"
is expected to be falsey
is expected to eq :NONE
is expected to be nil
is expected to eq "Douwe Maan"
is expected to eq "douwe@selenight.nl"
is expected to eq <Google::Protobuf::Timestamp: seconds: 1427789449, nanos: 0>
is expected to eq "+0200"
signed tag
is expected to eq "8f03acbcd11c53d9c9468078f32a2622005a4841"
is expected to eq "189a6c924013fc3fe40d6f1ec1dc20214183bc97"
is expected to eq "x509 signed tag\n-----BEGIN SIGNED MESSAGE-----\nMIISfwYJKoZIhvcNAQcCoIIScDCCEmwCAQExDTALBglghkgBZQM...dZmMbJ7jNk1FbewSwWO\nSDH1i0K32NyFbnh0BSos7njq7ELqKlYBsoB/sZfaH2vKy5U=\n-----END SIGNED MESSAGE-----"
is expected to be truthy
is expected to eq :X509
is expected not to be nil
is expected to eq "Roger Meier"
is expected to eq "r.meier@siemens.com"
is expected to eq <Google::Protobuf::Timestamp: seconds: 1574261780, nanos: 0>
is expected to eq "+0100"
.get_message
gets tag messages
gets messages in one batch
.extract_signature_lazily
when the tag is signed
returns signature and signed text
when the tag has no signature
returns empty signature and message as signed text
when the tag cannot be found
raises GRPC::Internal
when the tag ID is invalid
raises GRPC::Internal
when loading signatures in batch once
fetches signatures in batch once
tag into from Gitaly tag
message_size != message.size
message_size less than threshold
fetches tag message separately
message_size greater than threshold
returns a notice about message size
#cache_key
returns a cache key that changes based on changeable values
MergeRequestPresenter
#ci_status
when no head pipeline
return status from Ci integration
when head pipeline present
success with warnings
returns "success-with-warnings"
pipeline HAS status AND its not success with warnings
returns pipeline status
pipeline has NO status AND its not success with warnings
returns "preparing"
#conflict_resolution_path
when MR cannot be resolved in UI
does not return conflict resolution path
when conflicts cannot be resolved by user
does not return conflict resolution path
when able to access conflict resolution UI
does return conflict resolution path
issues links
#closing_issues_links
presents closing issues links
does not present related issues links
appends status when closing issue is already closed
#mentioned_issues_links
presents related issues links
does not present closing issues links
appends status when mentioned issue is already closed
#assign_to_closing_issues_link
single closing issue
returns correct link with correct text
multiple closing issues
returns correct link with correct text
no closing issue
returns correct link with correct text
#cancel_auto_merge_path
when can cancel mwps
returns path
when cannot cancel mwps
returns nil
#merge_path
when can be merged by user
returns path
when cannot be merged by user
returns nil
#create_issue_to_resolve_discussions_path
when can create issue and issues enabled
returns path
when cannot create issue
returns nil
when issues disabled
returns nil
#remove_wip_path
when merge request enabled and has permission
has remove_wip_path
when has no permission
returns nil
#target_branch_commits_path
when target branch exists
returns path
when target branch does not exist
returns nil
#source_branch_commits_path
when source branch exists
returns path
when source branch does not exist
returns nil
#target_branch_tree_path
when target branch exists
returns path
when target branch does not exist
returns nil
#source_branch_path
when source branch exists
returns path
when source branch does not exist
returns nil
#target_branch_path
when target branch exists
returns path
when target branch does not exist
returns nil
#source_branch_link
when source branch exists
returns link
when source branch does not exist
returns text
#target_branch_link
when target branch exists
returns link
when target branch does not exist
returns text
#source_branch_with_namespace_link
returns link
escapes html, when source_branch does not exist
#rebase_path
when can rebase
returns path
when cannot rebase
when rebase in progress
returns nil
when user cannot merge
returns nil
should not be rebased
returns nil
#can_push_to_source_branch
when source branch exists AND user can push to source branch
returns true
when source branch does not exists
returns false
when user cannot push to source branch
returns false
#api_approvals_path
is expected to eq "/api/v4/projects/596/merge_requests/1/approvals"
#api_approve_path
is expected to eq "/api/v4/projects/596/merge_requests/1/approve"
#api_unapprove_path
is expected to eq "/api/v4/projects/596/merge_requests/1/unapprove"
PushEventPayloadService
#execute
creates a new PushEventPayload row
sets the push_event_payload association of the used event
#commit_title
returns nil if no commits were pushed
returns a String limited to 70 characters
does not truncate the commit message if it is shorter than 70 characters
includes the first line of a commit message if the message spans multiple lines
#commit_from_id
returns nil when creating a new ref
returns the ID of the first commit when pushing to an existing ref
#commit_to_id
returns nil when removing an existing ref
#commit_count
returns the number of commits
raises when the push data does not contain the commits count
#ref
returns the name of the ref
raises when the push data does not contain the ref name
#revision_before
returns the revision from before the push
raises when the push data does not contain the before revision
#revision_after
returns the revision from after the push
raises when the push data does not contain the after revision
#trimmed_ref
returns the ref name without its prefix
#create?
returns true when creating a new ref
returns false when pushing to an existing ref
#remove?
returns true when removing an existing ref
returns false pushing to an existing ref
#action
returns :created when creating a ref
returns :removed when removing an existing ref
returns :pushed when pushing to an existing ref
#ref_type
returns :tag for a tag
returns :branch for a branch
DiffsEntity
as json
contains needed attributes
broken merge request
renders without errors
when a commit_id is passed
when the passed commit is not the first or last in the group
includes commit references for previous and next
when the passed commit is the first in the group
includes commit references for nil and previous commit
when the passed commit is the last in the group
includes commit references for the next and nil
when there are conflicts
conflicts are highlighted
merge ref head diff is not chosen to be displayed
conflicts are not calculated
when conflicts cannot be resolved
conflicts are not highlighted
when allow_tree_conflicts is set to true
conflicts are still highlighted
Ci::PipelineTriggerService
#execute
with a trigger token
when trigger belongs to a different project
does nothing
when params have an existing trigger token
when params have an existing ref
triggers a pipeline
stores the payload as a variable
when commit message has [ci skip]
ignores [ci skip] and create as general
when params have a variable
has variables
when params have duplicate variables
creates a failed pipeline without variables
behaves like detecting an unprocessable pipeline trigger
when the pipeline was not created successfully
has the correct status code
when params have a non-existant ref
does not trigger a pipeline
when params have a non-existant trigger token
does not trigger a pipeline
with a pipeline job token
when job user does not have a permission to read a project
does nothing
when job is not running
does nothing
when job does not have a project
does nothing
when params have an existsed job token
when params have an existsed ref
triggers a pipeline
when commit message has [ci skip]
ignores [ci skip] and create as general
when params have a variable
has variables
when params have duplicate variables
creates a failed pipeline without variables
behaves like detecting an unprocessable pipeline trigger
when the pipeline was not created successfully
has the correct status code
when params have a non-existant ref
does not trigger a job in the pipeline
when params have a non-existsed trigger token
does not trigger a pipeline
Gitlab::UsageDataCounters::IssueActivityUniqueCounter
can return the count of actions per user deduplicated
for Issue title edit actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue description edit actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue assignee edit actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue make confidential actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue make visible actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue created actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue closed actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue reopened actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue label changed actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue cross-referenced actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue moved actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue cloned actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue relate actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue unrelate actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue marked as duplicate actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue locked actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue unlocked actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue designs added actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue designs modified actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue designs removed actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue due date changed actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue time estimate changed actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue time spent changed actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue comment added actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue comment edited actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
for Issue comment removed actions
behaves like a daily tracked issuable event
is expected to be truthy
does not track edit actions if author is not present
Wikis::CreateAttachmentService
initialization
author commit info
does not raise error if user is nil
when no author info provided
fills author_email and author_name from current_user info
when author info provided
fills author_email and author_name from params
commit message
when no commit message provided
sets a default commit message
when commit message provided
use the commit message from params
branch name
when no branch provided
sets the branch from the wiki default_branch
when branch provided
use the commit message from params
#parse_file_name
when file_name
has white spaces
replaces all of them with '_'
has other invalid characters
replaces all of them with '_'
is not present
returns error
length
is bigger than 255
truncates file name
is less or equal to 255 does not return error
does not return error
when user
does not have permission
behaves like wiki attachment user validations
returns error
is nil
behaves like wiki attachment user validations
returns error
behaves like Wikis::CreateAttachmentService#execute
adds file to the repository
creates wiki repository if it does not exist
creates wiki repository
if an error is raised creating the repository
catches error and return gracefully
creates branch if it does not exists
is expected to eq "new_branch"
returns
returns related information
Gitlab::Database::BackgroundMigration::BatchedMigration
behaves like having unique enum values
has unique values in "status"
associations
is expected to have many batched_jobs
#last_job
returns the batched job with highest max_value
validations
is expected to validate that :job_arguments is case-sensitively unique within the scope of :job_class_name, :table_name, and :column_name
.queue_order
returns batched migrations ordered by their id
.active_migration
returns the first active migration according to queue order
.queued
returns active and paused migrations
.successful_rows_counts
returns totals from successful jobs
#interval_elapsed?
when the migration has no last_job
returns true
when the migration has a last_job
when the last_job is less than an interval old
returns false
when the last_job is exactly an interval old
returns true
when the last_job is more than an interval old
returns true
when an interval variance is given
when the last job is less than an interval with variance old
returns false
when the last job is more than an interval with variance old
returns true
#create_batched_job!
creates a batched_job with the correct batch configuration
#next_min_value
when a previous job exists
returns the next value after the previous maximum
when a previous job does not exist
returns the migration minimum value
#job_class
returns the class of the job for the migration
#batch_class
returns the class of the batch strategy for the migration
#retry_failed_jobs!
when there are failed migration jobs
moves the status of the migration to active
changes the number of attempts to 0
when there are no failed migration jobs
moves the status of the migration to active
#job_class_name=
behaves like an attr_writer that demodulizes assigned class names
when a module name exists
removes the module name
when a module name does not exist
does not change the given class name
#batch_class_name=
behaves like an attr_writer that demodulizes assigned class names
when a module name exists
removes the module name
when a module name does not exist
does not change the given class name
#migrated_tuple_count
sums the batch_size of succeeded jobs
#prometheus_labels
returns a hash with labels for the migration
#smoothed_time_efficiency
when there are not enough jobs
returns nil
when there are enough jobs
example 1: increasing trend, but only recently crossed threshold
returns the smoothed time efficiency
example 2: increasing trend, crossed threshold a while ago
returns the smoothed time efficiency
example 3: decreasing trend, but only recently crossed threshold
returns the smoothed time efficiency
example 4: latest run spiked
returns the smoothed time efficiency
#optimize!
calls the BatchOptimizer
.for_configuration
finds the migration matching the given configuration parameters
.find_for_configuration
returns nill if such migration does not exists
returns the migration when it exists
Metrics::Dashboard::AnnotationPolicy
rules
environments annotation
behaves like metrics dashboard annotation policy
when guest
is expected to be disallowed :read_metrics_dashboard_annotation
is expected to be disallowed :create_metrics_dashboard_annotation
is expected to be disallowed :update_metrics_dashboard_annotation
is expected to be disallowed :delete_metrics_dashboard_annotation
when reporter
is expected to be allowed :read_metrics_dashboard_annotation
is expected to be disallowed :create_metrics_dashboard_annotation
is expected to be disallowed :update_metrics_dashboard_annotation
is expected to be disallowed :delete_metrics_dashboard_annotation
when developer
is expected to be allowed :read_metrics_dashboard_annotation
is expected to be allowed :create_metrics_dashboard_annotation
is expected to be allowed :update_metrics_dashboard_annotation
is expected to be allowed :delete_metrics_dashboard_annotation
when maintainer
is expected to be allowed :read_metrics_dashboard_annotation
is expected to be allowed :create_metrics_dashboard_annotation
is expected to be allowed :update_metrics_dashboard_annotation
is expected to be allowed :delete_metrics_dashboard_annotation
cluster annotation
behaves like metrics dashboard annotation policy
when guest
is expected to be disallowed :read_metrics_dashboard_annotation
is expected to be disallowed :create_metrics_dashboard_annotation
is expected to be disallowed :update_metrics_dashboard_annotation
is expected to be disallowed :delete_metrics_dashboard_annotation
when reporter
is expected to be allowed :read_metrics_dashboard_annotation
is expected to be disallowed :create_metrics_dashboard_annotation
is expected to be disallowed :update_metrics_dashboard_annotation
is expected to be disallowed :delete_metrics_dashboard_annotation
when developer
is expected to be allowed :read_metrics_dashboard_annotation
is expected to be allowed :create_metrics_dashboard_annotation
is expected to be allowed :update_metrics_dashboard_annotation
is expected to be allowed :delete_metrics_dashboard_annotation
when maintainer
is expected to be allowed :read_metrics_dashboard_annotation
is expected to be allowed :create_metrics_dashboard_annotation
is expected to be allowed :update_metrics_dashboard_annotation
is expected to be allowed :delete_metrics_dashboard_annotation
ProjectSnippet
Associations
is expected to belong to project required:
Validation
is expected to validate that :project cannot be empty/falsy
is expected to validate that :secret is ‹false›
#embeddable?
only returns true when both project and snippet are public
only returns true when both project and snippet are public
only returns true when both project and snippet are public
only returns true when both project and snippet are public
only returns true when both project and snippet are public
only returns true when both project and snippet are public
only returns true when both project and snippet are public
only returns true when both project and snippet are public
only returns true when both project and snippet are public
behaves like model with repository
container class includes HasRepository
#commits_by
retrieves several commits from the repository by oid
#web_url
when given the only_path option
when only_path is false
returns the full web URL for this repo
when only_path is true
returns the relative web URL for this repo
when only_path is nil
returns the full web URL for this repo
when not given the only_path option
returns the full web URL for this repo
#url_to_repo
returns the SSH URL to the repository
#ssh_url_to_repo
returns the SSH URL to the repository
#http_url_to_repo
returns the HTTP URL to the repository
#repository
returns valid repo
uses the same container
#storage
returns valid storage
#full_path
returns valid full_path
#lfs_enabled?
returns the expected value
#empty_repo?
when the repo does not exist
returns true
when the repo exists
returns the empty state of the repository
#valid_repo?
is expected to equal false
is expected to equal true
#repository_exists?
is expected to equal false
is expected to equal true
#repo_exists?
is expected to equal false
is expected to equal true
#root_ref
is expected to equal true
is expected to equal false
is expected to equal false
Respond to
is expected to respond to #base_dir
is expected to respond to #disk_path
is expected to respond to #gitlab_shell
#change_head
delegates #change_head to repository
#after_repository_change_head
calls #reload_default_branch
Git::TagHooksService
System hooks
executes system hooks
Webhooks
executes hooks on the project
Pipelines
creates a new pipeline
Push data
annotated tag
has expected push data attributes
with repository data
has expected repository attributes
with commits
is expected to be a kind of Array
has 1 element
the commit
is expected to include {:timestamp => "2014-02-27T11:01:38+02:00"}
has expected commit attributes
with an author
has expected author attributes
lightweight tag
has expected push data attributes
with repository data
has expected repository attributes
with commits
is expected to be a kind of Array
has 1 element
the commit
is expected to include {:timestamp => "2014-02-27T11:01:38+02:00"}
has expected commit attributes
with an author
has expected author attributes
DropdownsHelper
#dropdown_tag
returns the container in the content
returns the block in the content
#dropdown_toggle
returns the button
returns the buttons default label data attribute
returns the dropdown toggle text
returns the button icon in the content
#dropdown_toggle_link
returns the link
returns the links data attribute
returns the link text
#dropdown_title
with a back and close button
applies the justification class to the container
behaves like has a back button
contains the back button
behaves like has the title text
contains the title text
behaves like has a close button
contains the close button
behaves like has two icons
returns two icons
behaves like does not have the title margin class
does not have the title margin class
with a back button
returns the back button icon
behaves like has a back button
contains the back button
behaves like has the title text
contains the title text
behaves like has the title margin class
contains the title margin class
behaves like does not have a close button
does not contain the close button
with a close button
returns the close button icon
behaves like does not have a back button
does not contain the back button
behaves like has the title text
contains the title text
behaves like has the title margin class
contains the title margin class
behaves like has a close button
contains the close button
without any buttons
returns no button icons
behaves like does not have a back button
does not contain the back button
behaves like has the title text
contains the title text
behaves like does not have the title margin class
does not have the title margin class
behaves like does not have a close button
does not contain the close button
#dropdown_filter
returns the container
returns the search input
behaves like has two icons
returns two icons
#dropdown_content
without block
behaves like contains the container
returns the container in the content
with block
returns the block in the content
behaves like contains the container
returns the container in the content
#dropdown_footer
without a content class
behaves like contains the content
returns the container in the content
returns the block in the content
without a content class
returns the footer in the content
behaves like contains the content
returns the container in the content
returns the block in the content
#dropdown_loading
returns the container in the content
returns a gl-spinner in the content
Upload
associations
is expected to belong to model required:
validations
is expected to validate that :size cannot be empty/falsy
is expected to validate that :path cannot be empty/falsy
is expected to validate that :model cannot be empty/falsy
is expected to validate that :uploader cannot be empty/falsy
callbacks
for a file above the checksum threshold
schedules checksum calculation
for a file at or below the checksum threshold
calculates checksum immediately before save
after_destroy
uploader is FileUploader-based
calls delete_file!
#absolute_path
returns the path directly when already absolute
delegates to the uploader's absolute_path method
#calculate_checksum!
sets `checksum` to SHA256 sum of the file
sets `checksum` to nil for a non-existent file
#build_uploader
returns a uploader object with current upload associated with it
#retrieve_uploader
returns a uploader object with current uploader associated with and cache retrieved
when upload has mount_point nil
when an upload belongs to a note
mounts it as attachment
when an upload does not belong to a note
does not mount it as attachment
#needs_checksum?
with local storage
returns true when no checksum exists
returns false when checksum is already present
with remote storage
returns false
#exist?
returns true when the file exists
when the file does not exist
returns false
when the record is persisted
sends a message to Sentry
increments a metric counter to signal a problem
when the record is not persisted
does not send a message to Sentry
does not increment a metric counter
#uploader_context
is expected to match (a hash including {:secret => "secret", :identifier => "file.txt"})
#update_project_statistics
updates project statistics when upload is added
updates project statistics when upload is removed
Gitlab::Database::LoadBalancing::LoadBalancer
#initialize
ignores the hosts when load balancing is disabled
sets the name of the connection that is used
#read
yields a connection for a read
ensures that query cache is enabled
marks hosts that are offline
retries a query in the event of a serialization failure
retries every host at most 3 times when a query conflict is raised
uses the primary if no secondaries are available
uses the primary when load balancing is disabled
#read_write
yields a connection for a write
uses a retry with exponential backoffs
#host
returns the secondary host to use
stores the host in a thread-local variable
does not create conflicts with other load balancers when caching hosts
#release_host
releases the host and its connection
#release_primary_connection
releases the connection to the primary
#primary_write_location
returns a String in the right format
raises an error if the write location could not be retrieved
#retry_with_backoff
returns the value returned by the block
re-raises errors not related to database connections
retries the block when a connection error is raised
re-raises the connection error if the retries did not succeed
skips retries when only the primary is used
#connection_error?
returns true for a connection error
returns false for a missing database error
returns true for a wrapped connection error
returns true for a wrapped connection error from a view
returns true for deeply wrapped/nested errors
returns true for an invalid encoding error
returns false for errors not related to database connections
returns false for ActiveRecord errors without a cause
#serialization_failure?
returns for a serialization error
returns true for a wrapped error
#select_up_to_date_host
when none of the replicas are caught up
returns false and does not update the host thread-local variable
when any of the replicas is caught up
returns true and sets host thread-local variable
#create_replica_connection_pool
creates a new connection pool with specific pool size and name
allows setting of a custom hostname and port
does not modify connection class pool
#disconnect!
calls disconnect on all hosts with a timeout
Gitlab::AlertManagement::Payload::Generic
behaves like subclass has expected api
defines all public methods in the base class
#title
behaves like parsable alert payload field with fallback
without payload
is expected to eq "New: Alert"
with title
is expected to eq "some value"
#severity
when set
payload_severity: "critical", expected_severity: :critical
is expected to eq :critical
payload_severity: "high", expected_severity: :high
is expected to eq :high
payload_severity: "medium", expected_severity: :medium
is expected to eq :medium
payload_severity: "low", expected_severity: :low
is expected to eq :low
payload_severity: "info", expected_severity: :info
is expected to eq :info
payload_severity: "CRITICAL", expected_severity: :critical
is expected to eq :critical
payload_severity: "cRiTiCaL", expected_severity: :critical
is expected to eq :critical
payload_severity: "unmapped", expected_severity: nil
is expected to eq nil
payload_severity: 1, expected_severity: nil
is expected to eq nil
payload_severity: nil, expected_severity: nil
is expected to eq nil
without key
is expected to be nil
#monitoring_tool
behaves like parsable alert payload field
behaves like parsable alert payload field with fallback
without payload
is expected to eq nil
with monitoring_tool
is expected to eq "some value"
#service
behaves like parsable alert payload field
behaves like parsable alert payload field with fallback
without payload
is expected to eq nil
with service
is expected to eq "some value"
#hosts
behaves like parsable alert payload field
behaves like parsable alert payload field with fallback
without payload
is expected to eq nil
with hosts
is expected to eq "some value"
#starts_at
without start_time
is expected to eq 2021-10-13 18:36:57.000000000 +0000
with start_time
is expected to eq 2021-10-13 18:26:57.000000000 +0000
#runbook
behaves like parsable alert payload field
behaves like parsable alert payload field with fallback
without payload
is expected to eq nil
with runbook
is expected to eq "some value"
#gitlab_fingerprint
returns a fingerprint
#environment_name
behaves like parsable alert payload field
behaves like parsable alert payload field with fallback
without payload
is expected to eq nil
with gitlab_environment_name
is expected to eq "some value"
#description
behaves like parsable alert payload field
behaves like parsable alert payload field with fallback
without payload
is expected to eq nil
with description
is expected to eq "some value"
#ends_at
without end_time
is expected to be nil
with end_time
is expected to eq 2021-10-13 18:26:57.000000000 +0000
Projects::Members::EffectiveAccessLevelFinder#execute
for a personal project
when the project owner is a member of the project
behaves like includes access level of the owner of the project as Maintainer
includes access level of the owner of the project as Maintainer
when the project owner is not explicitly a member of the project
behaves like includes access level of the owner of the project as Maintainer
includes access level of the owner of the project as Maintainer
direct members of the project
includes access levels of the direct members of the project
does not include access levels of users who have requested access to the project
includes access levels of users who are in non-active state
for a project within a group
project in a root group
includes access levels of users who are direct members of the parent group
project in a subgroup
includes access levels of users who are members of the ancestors of the parent group
user is both a member of the project and a member of the parent group
includes the maximum access level among project and group membership
members from group share
includes the user from the group share with the right access level
when the project also has the same user as a member, but with a different access level
includes the maximum access level among project and group membership
when the project's ancestor also has the same user as a member, but with a different access level
includes the maximum access level among project and group membership
for a project that is shared with other group(s)
includes the least among the specified access levels
even when the `lock_memberships_to_ldap` setting has been turned ON
includes the least among the specified access levels
when the group containing the project has forbidden group shares for any of its projects
does not include the users from any group shares
a combination of all possible avenues of membership
includes the highest access level from all avenues of memberships
Snippets::BulkDestroyService
#execute
deletes the snippets in bulk
when snippets is empty
returns a ServiceResponse success response
when user does not have access to remove the snippet
behaves like error is raised
returns error
no record is deleted
when hard_delete option is passed
returns a ServiceResponse success response
deletes all the snippets that belong to the user
when an error is raised deleting the repository
tries to rollback the repository
behaves like error is raised
returns error
no record is deleted
when an error is raised deleting the records
tries to rollback the repository
behaves like error is raised
returns error
no record is deleted
when snippet does not have a repository attached
does not schedule anything for the snippet without repository and return success
#attempt_rollback_repositories
rollbacks the repository
when an error is raised
logs the error
CommitCollection
#each
yields every commit
.committers
returns a relation of users when users are found
returns empty array when committers cannot be found
excludes authors of merge commits
#without_merge_commits
returns all commits except merge commits
#with_latest_pipeline
sets the latest pipeline for every commit so no additional queries are necessary
performs a single query to fetch pipeline warnings
#with_markdown_cache
preloads commits cache markdown
enrichment methods
#unenriched
returns all commits that are not backed by gitaly data
#fully_enriched?
returns true when all commits are backed by gitaly data
returns false when any commits are not backed by gitaly data
returns true when the collection is empty
#enrich!
replaces commits in the collection with those backed by gitaly data
maintains the original order of the commits
fetches data if there are unenriched commits
does not fetch data if all commits are enriched
returns the original commit if the commit could not be lazy loaded
#respond_to_missing?
returns true when the underlying Array responds to the message
returns false when the underlying Array does not respond to the message
#method_missing
delegates undefined methods to the underlying Array
Gitlab::SidekiqConfig::WorkerRouter
.queue_name_from_worker_name
worker: #<Class:0x00007ff35abe3b38>, expected_name: "pages"
generates a valid queue name from worker name
worker: #<Class:0x00007ff35abe3570>, expected_name: "pipeline_notification"
generates a valid queue name from worker name
worker: #<Class:0x00007ff35abe30e8>, expected_name: "post_receive"
generates a valid queue name from worker name
worker: #<Class:0x00007ff35abe2760>, expected_name: "git:post_receive"
generates a valid queue name from worker name
worker: #<Class:0x00007ff35abe2300>, expected_name: "pipeline_hooks:pipeline_hooks"
generates a valid queue name from worker name
worker: #<Class:0x00007ff35abe1fe0>, expected_name: "jira_import_advance_stage"
generates a valid queue name from worker name
worker: #<Class:0x00007ff35abe1838>, expected_name: "importer:phabricator_import_import_tasks"
generates a valid queue name from worker name
.global
valid routing rules
routing_rules: [], expected_queue: "foo_bar"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", nil], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", ""], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_a|urgency=high", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_b|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_c"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_a"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_a", "queue_a"], ["feature_category=feature_a", "queue_b"], ["feature_category=feature_a", "queue_c"]], expected_queue: "queue_a"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"], ["*", "default"]], expected_queue: "default"
routes the worker to the correct queue
routing_rules: [["*", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"
routes the worker to the correct queue
routing_rules: [["name=foo_bar", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"
routes the worker to the correct queue
invalid routing rules
invalid routing rules format
captures the error and falls back to an empty route
invalid predicate
captures the error and falls back to an empty route
#route
valid routing rules
routing_rules: [], expected_queue: "foo_bar"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", nil], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=cpu", ""], ["tags=cheap", "queue_c"]], expected_queue: "foo_bar"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_a|urgency=high", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_b|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=cheap", "queue_c"]], expected_queue: "queue_a"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_c"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_a"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_a", "queue_a"], ["feature_category=feature_a", "queue_b"], ["feature_category=feature_a", "queue_c"]], expected_queue: "queue_a"
routes the worker to the correct queue
routing_rules: [["feature_category=feature_b|urgency=high", "queue_a"], ["resource_boundary=memory", "queue_b"], ["tags=cheap", "queue_c"], ["*", "default"]], expected_queue: "default"
routes the worker to the correct queue
routing_rules: [["*", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"
routes the worker to the correct queue
routing_rules: [["name=foo_bar", "queue_foo"], ["feature_category=feature_a|urgency=low", "queue_a"], ["resource_boundary=cpu", "queue_b"], ["tags=expensive", "queue_c"]], expected_queue: "queue_foo"
routes the worker to the correct queue
invalid routing rules
raises an exception
DiffFileEntity
when there is no merge request
behaves like diff file entity
exposes correct attributes
includes viewer
behaves like diff file base entity
exposes essential attributes
when diff file does not have a blob and content sha
exposes some attributes as nil
diff files
when diff_view is parallel
contains only the parallel diff lines
when diff_view is parallel
contains only the inline diff lines
when there is a merge request
exposes additional attributes
points all urls to merge request target project
exposes load_collapsed_diff_url if the file viewer is collapsed
behaves like diff file entity
exposes correct attributes
includes viewer
behaves like diff file base entity
exposes essential attributes
when diff file does not have a blob and content sha
exposes some attributes as nil
diff files
when diff_view is parallel
contains only the parallel diff lines
when diff_view is parallel
contains only the inline diff lines
when diff_view is unknown
hides highlighted_diff_lines and parallel_diff_lines
#parallel_diff_lines
exposes parallel diff lines correctly
#is_fully_expanded
file with a conflict
returns false
behaves like diff file with conflict_type
#conflict_type
returns nil by default
when there is matching conflict file
returns false
Ci::PendingBuild
associations
is expected to belong to project required:
is expected to belong to build required:
is expected to belong to namespace required:
scopes
.with_instance_runners
when pending builds cannot be picked up by runner
returns an empty collection of pending builds
when pending builds can be picked up by runner
returns matching pending builds
.for_tags
when tag_ids match pending builds
returns matching pending builds
when tag_ids does not match pending builds
returns matching pending builds without tags
when tag_ids is not provided
with a nil value
returns matching pending builds without tags
with an empty array
returns matching pending builds without tags
.upsert_from_build!
another pending entry does not exist
creates a new pending entry
when another queuing entry exists for given build
returns a build id as a result
when project does not have shared runners enabled
sets instance_runners_enabled to false
when project has shared runner
when ci_pending_builds_maintain_shared_runners_data is enabled
sets instance_runners_enabled to true
when project is about to be deleted
sets instance_runners_enabled to false
when builds are disabled
sets instance_runners_enabled to false
when ci_pending_builds_maintain_shared_runners_data is disabled
sets instance_runners_enabled to false
when build has tags
when ci_pending_builds_maintain_tags_data is enabled
sets tag_ids
when ci_pending_builds_maintain_tags_data is disabled
does not set tag_ids
when a build project is nested in a subgroup
when build can be picked by a group runner
denormalizes namespace traversal ids
when build can not be picked by a group runner
creates an empty namespace traversal ids array
DeployKeyEntity
does not return an owner payload with_owner option not passed in
returns deploy keys with projects a user can read
is expected to eq {:almost_orphaned=>false, :can_edit=>false, :created_at=>2021-10-13 18:37:41.465188796 +0000, :deploy...", :id=>18, :title=>"My title 505", :updated_at=>2021-10-13 18:37:41.465188796 +0000, :user_id=>nil}
user is an admin
when admin mode is enabled
is expected to include {:can_edit => true}
when admin mode is disabled
is expected not to include {:can_edit => true}
user is a project maintainer
project deploy key
is expected to include {:can_edit => true}
public deploy key
is expected to include {:can_edit => true}
with_owner option
does not return an owner payload when it is set to false
when with_owner is set to true
returns an owner payload
does not return an owner if current_user cannot read the owner
Clusters::ClusterPolicy
rules
when developer
is expected to be disallowed :update_cluster
is expected to be disallowed :admin_cluster
when maintainer
is expected to be allowed :update_cluster
is expected to be allowed :admin_cluster
group cluster
when group developer
is expected to be disallowed :update_cluster
is expected to be disallowed :admin_cluster
when group maintainer
is expected to be allowed :update_cluster
is expected to be allowed :admin_cluster
when project maintainer
is expected to be disallowed :update_cluster
is expected to be disallowed :admin_cluster
when project developer
is expected to be disallowed :update_cluster
is expected to be disallowed :admin_cluster
instance cluster
when user
is expected to be disallowed :update_cluster
is expected to be disallowed :admin_cluster
when admin
when admin mode is enabled
is expected to be allowed :update_cluster
is expected to be allowed :admin_cluster
when admin mode is disabled
is expected to be disallowed :update_cluster
is expected to be disallowed :admin_cluster
Gitlab::HookData::IssuableBuilder
#build
behaves like issuable hook data
contains project data
contains deprecated repository data
with a issue
contains issuable data
does not contain certain keys
changes are given
populates the :changes hash
does not contain certain keys
behaves like issuable hook data
contains project data
contains deprecated repository data
with a merge_request
contains issuable data
does not contain certain keys
changes are given
populates the :changes hash
does not contain certain keys
issue is assigned
returns correct hook data
merge_request is assigned
returns correct hook data
Ci::TriggerEntity
#as_json
contains required fields
contains user fields
when current user can manage triggers
returns short_token as token
contains project_trigger_path
does not contain edit_project_trigger_path
returns has_token_exposed
when current user is the owner of the trigger
returns token as token
contains project_trigger_path
contains edit_project_trigger_path
returns has_token_exposed
Gitlab::GithubImport::Importer::ReleasesImporter
#execute
imports the releases in bulk
imports draft releases
#build_releases
returns an Array containing release rows
does not create releases that already exist
uses a default release description if none is provided
#build
returns the attributes of the release as a Hash
the returned Hash
includes the tag name
includes the release description
includes the project ID
includes the created timestamp
includes the updated timestamp
includes the release name
#each_release
returns an Enumerator
yields every release to the Enumerator
#description_for
returns the description when present
returns a generated description when one is not present
Gitlab::Checks::ChangesAccess
#validate!
without failed checks
doesn't raise an error
calls lfs checks
when time limit was reached
raises a TimeoutError
#commits
calls #new_commits
when changes contain empty revisions
returns only commits with non empty revisions
#commits_for
with no commits
behaves like a listing of new commits
returns expected commits
with unrelated commits
behaves like a listing of new commits
returns expected commits
with single related commit
behaves like a listing of new commits
returns expected commits
with single related and unrelated commit
behaves like a listing of new commits
returns expected commits
with multiple related commits
behaves like a listing of new commits
returns expected commits
with merge commits
behaves like a listing of new commits
returns expected commits
with criss-cross merges
behaves like a listing of new commits
returns expected commits
#single_change_accesses
with no changes
behaves like #single_change_access
returns an array of SingleChangeAccess
with a single change and no new commits
behaves like #single_change_access
returns an array of SingleChangeAccess
with a single change and new commits
behaves like #single_change_access
returns an array of SingleChangeAccess
with multiple changes
behaves like #single_change_access
returns an array of SingleChangeAccess
Groups::AutocompleteService
#labels_as_hash
returns labels from own group and ancestor groups
#issues
returns issues in group and subgroups
returns only confidential issues if confidential_only is true
#merge_requests
returns merge requests in group and subgroups
#milestones
returns milestones from group
returns milestones from groups and subgroups
returns only milestones that user can read
when group is public
returns milestones from groups and subgroups
projects/commit/branches.html.haml
when branches and tags are available
shows default branch
shows js expand link
shows branch and tag links
when branches are available but no tags
shows branches
shows js expand link
shows limit exceeded message for tags
when tags are available but no branches (just default)
shows default branch
shows js expand link
shows tags
shows limit exceeded for branches
when branches and tags are not available
shows default branch
shows js expand link
shows too many to search
Ci::PipelinePolicy
rules
rules for protected ref
when no one can push or merge to the branch
does not include ability to update pipeline
when developers can push to the branch
includes ability to update pipeline
when no one can create the tag
does not include ability to update pipeline
when no one can create the tag but it is not a tag
includes ability to update pipeline
when maintainer is allowed to push to pipeline branch
enables update_pipeline if user is maintainer
when user does not have access to internal CI
disallows the user from reading the pipeline
destroy_pipeline
when user has owner access
is enabled
when user is not owner
is disabled
read_pipeline_variable
when user has owner access
is enabled
when user is developer and the creator of the pipeline
is enabled
when user is developer and it is not the creator of the pipeline
is disabled
when user is not owner nor developer
is disabled
Direct upload support
config_name: "artifacts"
when object storage is enabled
when direct upload is enabled
when provider is AWS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
when provider is Google
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
when provider is AzureRM
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
when connection is empty
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
raises an error
when other provider is used
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
raises an error
when connection is omitted
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
raises an error
when direct upload is disabled
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
when object storage is disabled
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
config_name: "lfs"
when object storage is enabled
when direct upload is enabled
when provider is AWS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
when provider is Google
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
when provider is AzureRM
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
when connection is empty
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
raises an error
when other provider is used
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
raises an error
when connection is omitted
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
raises an error
when direct upload is disabled
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
when object storage is disabled
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
config_name: "uploads"
when object storage is enabled
when direct upload is enabled
when provider is AWS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
when provider is Google
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
when provider is AzureRM
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
when connection is empty
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
raises an error
when other provider is used
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
raises an error
when connection is omitted
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
raises an error
when direct upload is disabled
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
when object storage is disabled
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: already initialized constant DirectUploadsValidator::SUPPORTED_DIRECT_UPLOAD_PROVIDERS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:4: warning: previous definition of SUPPORTED_DIRECT_UPLOAD_PROVIDERS was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: already initialized constant DirectUploadsValidator::ValidationError
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:8: warning: previous definition of ValidationError was here
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: already initialized constant CONFIGS
/builds/gitlab-org/gitlab/config/initializers/direct_upload_support.rb:42: warning: previous definition of CONFIGS was here
succeeds
Gitlab::Consul::Internal
.api_url
returns correct value
when consul setting is not present in gitlab.yml
does not fail
.discover_service
behaves like returns nil given blank value of
is expected to be nil
is expected to be nil
behaves like returns nil given blank value of
is expected to be nil
is expected to be nil
one service discovered
returns the service address and port
multiple services discovered
uses the first service
behaves like handles failure response
raises Gitlab::Consul::Internal::SocketError when SocketError is rescued
raises Gitlab::Consul::Internal::SSLError when OpenSSL::SSL::SSLError is rescued
raises Gitlab::Consul::Internal::ECONNREFUSED when Errno::ECONNREFUSED is rescued
raises Consul::Internal::UnexpectedResponseError when StandardError is rescued
raises Consul::Internal::UnexpectedResponseError when request returns 500
raises Consul::Internal::UnexpectedResponseError when request returns non json data
.discover_prometheus_server_address
returns the server address
behaves like returns nil given blank value of
is expected to be nil
is expected to be nil
behaves like handles failure response
raises Gitlab::Consul::Internal::SocketError when SocketError is rescued
raises Gitlab::Consul::Internal::SSLError when OpenSSL::SSL::SSLError is rescued
raises Gitlab::Consul::Internal::ECONNREFUSED when Errno::ECONNREFUSED is rescued
raises Consul::Internal::UnexpectedResponseError when StandardError is rescued
raises Consul::Internal::UnexpectedResponseError when request returns 500
raises Consul::Internal::UnexpectedResponseError when request returns non json data
Gitlab::SlashCommands::Deploy
#execute
if no environment is defined
does not execute an action
with environment
without actions
does not execute an action
when single action has been matched
returns success result
when more than one action has been matched
when there is no specific actions with a environment name
returns error about too many actions defined
when one of the actions is environement specific action
deploys to production
when one of the actions is a teardown action
deploys to production
self.match
matches the environment
SnippetBlobPresenter
#rich_data
with PersonalSnippet
when blob is binary
returns the HTML associated with the binary
with markdown format
returns rich markdown content
with notebook format
returns rich notebook content
with openapi format
returns rich openapi content
with svg format
returns rich svg content
with other format
does not return no rich content
route helpers
#raw_path
behaves like snippet blob raw path
for PersonalSnippets
returns the raw personal snippet blob path
for ProjectSnippets
returns the raw project snippet blob path
with a snippet without a repository
with ProjectSnippet
returns the raw project snippet path
with PersonalSnippet
returns the raw personal snippet path
#raw_plain_data
with a plain file
shows raw data for non binary files
with a binary file
returns nil
#raw_url
behaves like snippet blob raw url
for PersonalSnippets
returns the raw personal snippet blob url
for ProjectSnippets
returns the raw project snippet blob url
with a snippet without a repository
with ProjectSnippet
returns the raw project snippet url
with PersonalSnippet
returns the raw personal snippet url
Gitlab::SidekiqCluster
.trap_signals
traps the given signals
.trap_terminate
traps the termination signals
.trap_forward
traps the signals to forward
.signal
sends a signal to the given process
returns false when the process does not exist
.signal_processes
sends a signal to every given process
.start
starts Sidekiq with the given queues, environment and options
starts Sidekiq with the given queues and sensible default options
.start_sidekiq
starts a Sidekiq process
handles duplicate queue names
runs the sidekiq process in a new process group
.count_by_queue
tallies the queue counts
.concurrency
queue_count: 2, min: 0, max: 0, expected: 3
is expected to eq 3
queue_count: 2, min: 0, max: 9, expected: 3
is expected to eq 3
queue_count: 2, min: 1, max: 4, expected: 3
is expected to eq 3
queue_count: 2, min: 4, max: 5, expected: 4
is expected to eq 4
queue_count: 5, min: 2, max: 3, expected: 3
is expected to eq 3
queue_count: 2, min: 1, max: 1, expected: 1
is expected to eq 1
queue_count: 0, min: 3, max: 3, expected: 3
is expected to eq 3
queue_count: 1, min: 4, max: 3, expected: 3
is expected to eq 3
.wait_async
waits for a process in a separate thread
.all_alive?
returns true if all processes are alive
returns false when a thread was not alive
.any_alive?
returns true if at least one process is alive
returns false when all threads are dead
.write_pid
writes the PID of the current process to the given file
Projects::LfsPointers::LfsObjectDownloadListService
#execute
when no lfs pointer is linked
retrieves all lfs pointers in the project repository
when no LFS objects exist
retrieves all LFS objects
when some LFS objects already exist
retrieves the download links of non-existent objects
when lfsconfig file exists
when url points to the same import url host
downloads lfs object using the new endpoint
when import url has credentials
adds the credentials to the new endpoint
when url has its own credentials
does not add the import url credentials
when url points to a third party service
disables lfs from the project
does not download anything
#default_endpoint_uri
adds suffix .git if the url does not have it
Ci::PipelineArtifacts::DestroyAllExpiredService
.execute
when timeout happens
returns 0 and does not continue destroying
when there are no artifacts
does not raise error
when the loop limit is reached
destroys one artifact
reports the number of destroyed artifacts
when there are artifacts more than batch sizes
destroys all expired artifacts
reports the number of destroyed artifacts
when artifacts are not expired
does not destroy pipeline artifacts
reports the number of destroyed artifacts
when pipeline is locked
does not destroy pipeline artifacts
reports the number of destroyed artifacts
.destroy_artifacts_batch
returns a falsy value without artifacts
Repositories::HousekeepingService
behaves like housekeeps repository
with a clean redis state
#execute
enqueues a sidekiq job
yields the block if given
resets counter after execution
runs the task specifically requested
when no lease can be obtained
does not enqueue a job
does not reset pushes_since_gc
does not yield
task type
goes through all three housekeeping tasks, executing only the highest task when there is overlap
#needed?
when the count is low enough
when the count is high enough
#increment!
increments the pushes_since_gc counter
behaves like housekeeps repository
with a clean redis state
#execute
enqueues a sidekiq job
yields the block if given
resets counter after execution
runs the task specifically requested
when no lease can be obtained
does not enqueue a job
does not reset pushes_since_gc
does not yield
task type
goes through all three housekeeping tasks, executing only the highest task when there is overlap
#needed?
when the count is low enough
when the count is high enough
#increment!
increments the pushes_since_gc counter
Ci::TriggerPolicy
#rules
when owner is an user
when user is maintainer of the project
is expected to be allowed :manage_trigger
is expected to be allowed :admin_trigger
when owner is another user
when user is maintainer of the project
is expected to be allowed :manage_trigger
is expected not to be allowed :admin_trigger
when user is developer of the project
is expected not to be allowed :manage_trigger
is expected not to be allowed :admin_trigger
when user is not member of the project
is expected not to be allowed :manage_trigger
is expected not to be allowed :admin_trigger
PodLogs::KubernetesService
#get_raw_pods
returns success with passthrough k8s response
#pod_logs
returns the logs
handles Not Found errors from k8s
handles HTTP errors from k8s
#encode_logs_to_utf8
converts logs to utf-8
returns error if output of encoding helper is blank
returns error if output of encoding helper is nil
returns error if output of encoding helper is not UTF-8
when logs are nil
returns nil
when logs are blank
returns blank string
when logs are already in utf-8
does not fail
#split_logs
returns the logs
#check_pod_name
returns success if pod_name was specified
returns success if pod_name was not specified but there are pods
returns error if pod_name was not specified and there are no pods
returns error if pod_name was specified but does not exist
returns error if pod_name is too long
returns error if pod_name is in invalid format
#check_container_name
returns success if container_name was specified
returns success if container_name was not specified and there are containers
returns error if container_name was not specified and there are no containers on the pod
returns error if container_name was specified but does not exist
returns error if container_name is too long
returns error if container_name is in invalid format
Snippets::UpdateStatisticsService
#execute
with PersonalSnippet
behaves like updates statistics
returns a successful response
expires statistics cache
schedules a namespace storage statistics update
when snippet statistics does not exist
creates snippet statistics
when snippet statistics exists
updates snippet statistics
when snippet does not have a repository
returns an error response
with ProjectSnippet
updates projects statistics "snippets_size"
behaves like updates statistics
returns a successful response
expires statistics cache
schedules a namespace storage statistics update
when snippet statistics does not exist
creates snippet statistics
when snippet statistics exists
updates snippet statistics
when snippet does not have a repository
returns an error response
Gitlab::GithubImport::Representation::DiffNote
.from_api_response
does not set the user if the response did not include a user
formats a suggestion in the note body
behaves like a DiffNote
returns an instance of DiffNote
the returned DiffNote
includes the number of the note
includes the file path of the diff
includes the commit ID
includes the user details
includes the note body
includes the created timestamp
includes the updated timestamp
includes the GitHub ID
returns the noteable type
.from_json_hash
does not convert the author if it was not specified
formats a suggestion in the note body
behaves like a DiffNote
returns an instance of DiffNote
the returned DiffNote
includes the number of the note
includes the file path of the diff
includes the commit ID
includes the user details
includes the note body
includes the created timestamp
includes the updated timestamp
includes the GitHub ID
returns the noteable type
#line_code
returns a String
#diff_hash
returns a Hash containing the diff details
#github_identifiers
returns a hash with needed identifiers
#note
returns the given note
returns the suggestion formatted in the note
returns the multi-line suggestion formatted in the note
Banzai::Filter::AutolinkFilter
does nothing when :autolink is false
does nothing with non-link text
Various schemes
autolinks http
autolinks https
autolinks ftp
autolinks short URLs
autolinks multiple URLs
accepts link_attr options
autolinks smb
autolinks multiple occurrences of smb
autolinks irc
autolinks rdar
does not autolink javascript
does not autolink bad URLs
does not autolink bad URLs after we remove trailing punctuation
does not include trailing punctuation
includes trailing punctuation when part of a balanced pair
removes trailing quotes
removes one closing punctuation mark when the punctuation in the link is unbalanced
does not double-encode HTML entities
does not include trailing HTML entities
escapes RTLO and other characters
encodes international domains
ignores valid links contained inside 'a' element
ignores valid links contained inside 'code' element
ignores valid links contained inside 'kbd' element
ignores valid links contained inside 'pre' element
ignores valid links contained inside 'script' element
ignores valid links contained inside 'style' element
when the link is inside a tag
renders text after the link correctly for http
renders text after the link correctly for rdar
Ci::PlayManualStageService#execute
when pipeline has manual processables
starts manual processables from pipeline
updates manual processables
when pipeline has no manual processables
does not update the processables
when user does not have permission on a specific processable
logs the error
Metrics::Dashboard::UpdateDashboardService
#execute
user does not have push right to repository
behaves like misconfigured dashboard service response with stepable
returns an appropriate message and status code
with rights to push to the repository
path traversal attack attempt
with a yml extension
behaves like misconfigured dashboard service response with stepable
returns an appropriate message and status code
without a yml extension
behaves like misconfigured dashboard service response with stepable
returns an appropriate message and status code
valid parameters
behaves like valid dashboard update process
delegates commit creation to Files::UpdateService
selected branch already exists
behaves like misconfigured dashboard service response with stepable
returns an appropriate message and status code
Files::UpdateService success
returns success
when the merge request does not succeed
returns an appropriate message and status code
with escaped characters in file name
escapes the special characters
when pushing to the default branch
does not create a merge request
Files::UpdateService fails
returns error
Ci::CommitWithPipeline
#last_pipeline
returns last pipeline
#lazy_latest_pipeline
executes only 1 SQL query
#latest_pipeline
without ref argument
behaves like fetching latest pipeline
returns the latest pipeline for the project
returns the memoized pipeline for the key of
when a particular ref is specified
behaves like fetching latest pipeline
returns the latest pipeline for the project
returns the memoized pipeline for the key of master
#latest_pipeline_for_project
returns the latest pipeline of the commit for the given ref and project
#set_latest_pipeline_for_ref
sets the latest pipeline for a given reference
#status
returns the status of the latest pipeline for the given ref
returns nil when latest pipeline is not present for the given ref
returns the status of the latest pipeline when no ref is given
Gitlab::Template::IssueTemplate
.all
strips the md suffix
combines the globals and rest
.find
returns nil if the file does not exist
returns the issue object of a valid file
.by_category
return array of templates
when repo is bare or empty
returns empty array
#content
loads the full file
raises error when file is not found
when repo is empty
raises file not found
Gitlab::GithubImport::Importer::SingleEndpointIssueNotesImporter
is expected to includes the Gitlab::GithubImport::ParallelScheduling module
is expected to includes the Gitlab::GithubImport::SingleEndpointNotesImporting module
is expected to eq Gitlab::GithubImport::Representation::Note
is expected to eq Gitlab::GithubImport::Importer::NoteImporter
is expected to eq :issue_comments
is expected to eq :note
is expected to eq 1
#each_object_to_import
fetches data
skips cached pages
skips cached merge requests
Gitlab::Kubernetes::Helm::V3::InstallCommand
behaves like helm command generator
#generate_script
returns appropriate command
when rbac is true
behaves like helm command generator
#generate_script
returns appropriate command
when there is a pre-install script
behaves like helm command generator
#generate_script
returns appropriate command
when there is a post-install script
behaves like helm command generator
#generate_script
returns appropriate command
when there is no version
behaves like helm command generator
#generate_script
returns appropriate command
behaves like helm command
HELM_VERSION
is expected to match /\d+\.\d+\.\d+/
#env
is expected to be a kind of Hash
#rbac?
rbac is enabled
is expected to be truthy
rbac is not enabled
is expected to be falsey
#pod_resource
rbac is enabled
is expected to be an instance of Kubeclient::Resource
generates a pod that uses the tiller serviceAccountName
rbac is not enabled
is expected to be an instance of Kubeclient::Resource
generates a pod that uses the default serviceAccountName
#config_map_resource
returns a KubeClient resource with config map content for the application
#service_account_resource
rbac is enabled
generates a Kubeclient resource for the tiller ServiceAccount
rbac is not enabled
generates nothing
#cluster_role_binding_resource
rbac is enabled
generates a Kubeclient resource for the ClusterRoleBinding for tiller
binds the account in #service_account_resource
rbac is not enabled
generates nothing
BulkImports::Clients::HTTP
#get
performs network request
error handling
when error occurred
raises BulkImports::Error
when response is not success
raises BulkImports::Error
#each_page
with a block
yields every retrieved page to the supplied block
without a block
returns an Enumerator
#post
performs network request
error handling
when error occurred
raises BulkImports::Error
when response is not success
raises BulkImports::Error
#head
performs network request
error handling
when error occurred
raises BulkImports::Error
when response is not success
raises BulkImports::Error
#stream
performs network request with stream_body option
#instance_version
returns version as an instance of Gitlab::VersionInfo
#compatible_for_project_migration?
when instance version is lower the the expected minimum
returns false
when instance version is at least the expected minimum
returns true
when source instance is incompatible
raises an error
when url is relative
performs network request to a relative gitlab url
Gitlab::Kubernetes::Helm::V2::BaseCommand
HELM_VERSION
is expected to match /^2\.\d+\.\d+$/
#env
is expected to include {:TILLER_NAMESPACE => "gitlab-managed-apps"}
behaves like helm command generator
#generate_script
returns appropriate command
#pod_name
is expected to eq "install-test-class-name"
behaves like helm command
HELM_VERSION
is expected to match /\d+\.\d+\.\d+/
#env
is expected to be a kind of Hash
#rbac?
rbac is enabled
is expected to be truthy
rbac is not enabled
is expected to be falsey
#pod_resource
rbac is enabled
is expected to be an instance of Kubeclient::Resource
generates a pod that uses the tiller serviceAccountName
rbac is not enabled
is expected to be an instance of Kubeclient::Resource
generates a pod that uses the default serviceAccountName
#config_map_resource
returns a KubeClient resource with config map content for the application
#service_account_resource
rbac is enabled
generates a Kubeclient resource for the tiller ServiceAccount
rbac is not enabled
generates nothing
#cluster_role_binding_resource
rbac is enabled
generates a Kubeclient resource for the ClusterRoleBinding for tiller
binds the account in #service_account_resource
rbac is not enabled
generates nothing
Gitlab::FileHook
with file_hooks present
.any?
returns true
.files?
returns a list of file_hooks
without any file_hooks
.any?
returns false
.files
returns an empty list
.execute
successful execution
is expected to equal true
is expected to be empty
ensures file_hook received data via stdin
non-executable
is expected to equal false
is expected to include "Permission denied"
non-zero exit
is expected to equal false
is expected to be empty
Gitlab::Database::BackgroundMigration::BatchedJob
behaves like having unique enum values
has unique values in "status"
associations
is expected to belong to batched_migration required:
scopes
.active
returns active jobs
.stuck
returns stuck jobs
.retriable
returns retriable jobs
delegated batched_migration attributes
#migration_job_class
returns the migration job_class
#migration_table_name
returns the migration table_name
#migration_column_name
returns the migration column_name
#migration_job_arguments
returns the migration job_arguments
#time_efficiency
when job has not yet succeeded
returns nil
when finished_at is not set
returns nil
when started_at is not set
returns nil
when job has finished
returns ratio of duration to interval, here: 0.5
returns ratio of duration to interval, here: 1
#split_and_retry!
when job can be split
sets the correct attributes
splits the jobs into retriable jobs
when job is not failed
raises an exception
when batch size is already 1
raises an exception
when computed midpoint is larger than the max value of the batch
lowers the batch size and resets the number of attempts
Gitlab::GitalyClient::BlobService
#get_new_lfs_pointers
sends a get_new_lfs_pointers message
with not_in = :all
sends the correct message
with hook environment
sends a list_all_lfs_pointers message
#get_all_lfs_pointers
sends a get_all_lfs_pointers message
#list_blobs
with a single revision
sends a list_blobs message
with multiple revisions
sends a list_blobs message
with multiple revisions and limits
sends a list_blobs message
with paths
sends a list_blobs message
with split contents
sends a list_blobs message
Gitlab::ManifestImport::ProjectCreator
#execute
is expected to be a kind of Project(id: integer, name: string, path: string, description: text, created_at: datetime, updated_at:...oclose_referenced_issues: boolean, suggestion_commit_message: string, project_namespace_id: integer)
is expected to change `Project.count` by 1
is expected to change `Group.count` by 1
creates project with valid full path, import url and import source
NotifyHelper
merge_request_reference_link
returns link to merge request with the text reference
issue_reference_link
returns link to issue with the text reference
#invited_to_description
truncates long descriptions
source: #<Project id: namespace1/project1>>, description: /Projects are/
is expected to match /Projects are/
source: #<Group id: @group1>, description: /Groups assemble/
is expected to match /Groups assemble/
source: #<Project id: namespace2/project2>>, description: "_description_"
is expected to match "_description_"
source: #<Group id: @group2>, description: "_description_"
is expected to match "_description_"
#invited_join_url
when invite_email_preview_text is enabled
has correct params
when invite_email_from is enabled
has correct params
when invite_email_from is enabled
has correct params
when invite_email_preview_text is disabled
has correct params
Gitlab::Ci::Reports::Security::Scanner
#initialize
when all params are given
initializes an instance
when attribute external_id is missing
raises an error
when attribute name is missing
raises an error
#key
returns external_id
#to_hash
returns expected hash
when vendor is not defined
returns expected hash
#==
when external_id is equal
returns true
when external_id is different
returns false
#<=>
when the `external_id` of the scanners are different
scanner_1_attributes: {:external_id=>"bundler_audit", :name=>"foo", :vendor=>"bar"}, scanner_2_attributes: {:external_id=>"retire.js", :name=>"foo", :vendor=>"bar"}, expected_comparison_result: -1
is expected to eq -1
scanner_1_attributes: {:external_id=>"retire.js", :name=>"foo", :vendor=>"bar"}, scanner_2_attributes: {:external_id=>"gemnasium", :name=>"foo", :vendor=>"bar"}, expected_comparison_result: -1
is expected to eq -1
scanner_1_attributes: {:external_id=>"gemnasium", :name=>"foo", :vendor=>"bar"}, scanner_2_attributes: {:external_id=>"gemnasium-maven", :name=>"foo", :vendor=>"bar"}, expected_comparison_result: -1
is expected to eq -1
scanner_1_attributes: {:external_id=>"gemnasium-maven", :name=>"foo", :vendor=>"bar"}, scanner_2_attributes: {:external_id=>"gemnasium-python", :name=>"foo", :vendor=>"bar"}, expected_comparison_result: -1
is expected to eq -1
scanner_1_attributes: {:external_id=>"gemnasium-python", :name=>"foo", :vendor=>"bar"}, scanner_2_attributes: {:external_id=>"bandit", :name=>"foo", :vendor=>"bar"}, expected_comparison_result: 1
is expected to eq 1
scanner_1_attributes: {:external_id=>"bandit", :name=>"foo", :vendor=>"bar"}, scanner_2_attributes: {:external_id=>"semgrep", :name=>"foo", :vendor=>"bar"}, expected_comparison_result: -1
is expected to eq -1
scanner_1_attributes: {:external_id=>"semgrep", :name=>"foo", :vendor=>"bar"}, scanner_2_attributes: {:external_id=>"unknown", :name=>"foo", :vendor=>"bar"}, expected_comparison_result: -1
is expected to eq -1
scanner_1_attributes: {:external_id=>"gemnasium", :name=>"foo", :vendor=>"bar"}, scanner_2_attributes: {:external_id=>"gemnasium", :name=>"foo", :vendor=>nil}, expected_comparison_result: 1
is expected to eq 1
when the `external_id` of the scanners are equal
when the `name` of the scanners are different
scanner_1_attributes: {:external_id=>"gemnasium", :name=>"a", :vendor=>"bar"}, scanner_2_attributes: {:external_id=>"gemnasium", :name=>"b", :vendor=>"bar"}, expected_comparison_result: -1
is expected to eq -1
scanner_1_attributes: {:external_id=>"gemnasium", :name=>"d", :vendor=>"bar"}, scanner_2_attributes: {:external_id=>"gemnasium", :name=>"c", :vendor=>"bar"}, expected_comparison_result: 1
is expected to eq 1
when the `name` of the scanners are equal
scanner_1_attributes: {:external_id=>"gemnasium", :name=>"foo", :vendor=>"a"}, scanner_2_attributes: {:external_id=>"gemnasium", :name=>"foo", :vendor=>"a"}, expected_comparison_result: 0
is expected to eq 0
scanner_1_attributes: {:external_id=>"gemnasium", :name=>"foo", :vendor=>"a"}, scanner_2_attributes: {:external_id=>"gemnasium", :name=>"foo", :vendor=>"b"}, expected_comparison_result: -1
is expected to eq -1
scanner_1_attributes: {:external_id=>"gemnasium", :name=>"foo", :vendor=>"b"}, scanner_2_attributes: {:external_id=>"gemnasium", :name=>"foo", :vendor=>"a"}, expected_comparison_result: 1
is expected to eq 1
FinderWithGroupHierarchy
when specifying group
returns only the group by default
when specifying group_id
returns only the group by default
when including items from group ancestors
returns group and its ancestors
ignores groups which user can not read
returns them all when skip_authorization is true
when including items from group descendants
returns items from group and its descendants
ignores items from groups which user can not read
returns them all when skip_authorization is true
IncidentManagement::ProjectIncidentManagementSetting
Associations
is expected to belong to project required:
Validations
validate issue_template_exists
with create_issue enabled
with valid issue_template_key
is expected to be valid
with empty issue_template_key
is expected to be valid
with nil issue_template_key
is expected to be valid
with invalid issue_template_key
is expected to be invalid
returns error
with create_issue disabled
with unknown issue_template_key
is expected to be valid
#issue_template_content
with valid issue_template_key
returns issue content
with unknown issue_template_key
behaves like no content
returns no content
without issue_template_key
behaves like no content
returns no content
#pagerduty_token
when token already set
reads the token
when not set
when PagerDuty webhook is active
generates a token before validation
when PagerDuty webhook is not active
does not generate a token before validation
Types::UserMergeRequestInteractionType
is expected to require graphql authorizations :read_merge_request
has the expected fields
#can_merge
when the user cannot merge
is expected to equal false
when the user can merge
is expected to equal true
#can_update
when the user cannot update the MR
is expected to equal false
when the user can update the MR
is expected to equal true
#review_state
when the user has not been asked to review the MR
is expected to be nil
implies not reviewed
when the user has been asked to review the MR
is expected to eq "unreviewed"
implies not reviewed
when the user has provided a review
is expected to eq "reviewed"
implies reviewed
#approved
when the user has not approved the MR
is expected to equal false
when the user has approved the MR
is expected to equal true
Gitlab::Composer::Cache
#execute
creating packages
with a pre-existing package
updates the sha and creates the cache page
behaves like Composer create cache page
creates the cached page
behaves like Composer marks cache page for deletion
marks the page for deletion
first package
updates the sha and creates the cache page
behaves like Composer create cache page
creates the cached page
updating packages
behaves like Composer create cache page
creates the cached page
behaves like Composer marks cache page for deletion
marks the page for deletion
deleting packages
when it is not the last package
behaves like Composer create cache page
creates the cached page
behaves like Composer marks cache page for deletion
marks the page for deletion
when it is the last package
does not create a new page
behaves like Composer marks cache page for deletion
marks the page for deletion
JiraConnectInstallation
associations
is expected to have many subscriptions class_name => JiraConnectSubscription
validations
is expected to validate that :client_key cannot be empty/falsy
is expected to validate that :client_key is case-sensitively unique
is expected to validate that :shared_secret cannot be empty/falsy
is expected to validate that :base_url cannot be empty/falsy
is expected to allow :base_url to be ‹"https://test.atlassian.net"›
is expected not to allow :base_url to be ‹"not/a/url"›
is expected to allow :instance_url to be ‹"https://test.atlassian.net"›
is expected not to allow :instance_url to be ‹"not/a/url"›
.for_project
returns installations with subscriptions for project
returns distinct installations
shared/wikis/_sidebar.html.haml
includes a link to clone the repository
the sidebar failed to load
reports this to the user
The sidebar comes from a custom page
does not show an alert
renders the wiki content
The sidebar comes a list of wiki pages
does not show an alert
renders the wiki content
there is no more to see
does not invite the user to view more
link to edit the sidebar
when the user has edit permission
renders the link
when the user does not have edit permission
does not render the link
Gitlab::Analytics::CycleAnalytics::StageEvents::PlanStageStart
filters issues where first_associated_with_milestone_at or first_added_to_board_at is filled
behaves like value stream analytics event
is expected to be a kind of String
is expected to be a kind of Symbol
is expected to include ApplicationRecord(abstract)
is expected to respond to #timestamp_projection
is expected to respond to #markdown_description
is expected to be a kind of Array
#apply_query_customization
expects an ActiveRecord::Relation object as argument and returns a modified version of it
#hash_code
returns a hash that uniquely identifies an event
does not differ when the same object is built with the same params
behaves like LEFT JOIN-able value stream analytics event
can use the event as LEFT JOIN
when looking at the record with data
contains the timestamp expression
when looking at the record without data
returns nil for the timestamp expression
Boards::Lists::DestroyService
#execute
when board parent is a project
behaves like lists destroy service
does not remove list from board when list type is closed
when list type is label
removes list from board
decrements position of higher lists
when board parent is a group
behaves like lists destroy service
does not remove list from board when list type is closed
when list type is label
removes list from board
decrements position of higher lists
Clusters::InstancePolicy
rules
when user
is expected to be disallowed :read_cluster
is expected to be disallowed :add_cluster
is expected to be disallowed :create_cluster
is expected to be disallowed :update_cluster
is expected to be disallowed :admin_cluster
when admin
when admin mode is enabled
is expected to be allowed :read_cluster
is expected to be allowed :add_cluster
is expected to be allowed :create_cluster
is expected to be allowed :update_cluster
is expected to be allowed :admin_cluster
when admin mode is disabled
is expected to be disallowed :read_cluster
is expected to be disallowed :add_cluster
is expected to be disallowed :create_cluster
is expected to be disallowed :update_cluster
is expected to be disallowed :admin_cluster
Gitlab::Email::Hook::SmimeSignatureInterceptor
signs the email appropriately with SMIME
Packages::Debian::CreateDistributionService
within a projet
behaves like Debian Create Distribution Service
with only the codename param
behaves like Create Debian Distribution
returns ServiceResponse
with codename, components and architectures
behaves like Create Debian Distribution
returns ServiceResponse
with invalid suite
behaves like Create Debian Distribution
returns ServiceResponse
with invalid component name
behaves like Create Debian Distribution
returns ServiceResponse
with invalid architecture name
behaves like Create Debian Distribution
returns ServiceResponse
within a group
behaves like Debian Create Distribution Service
with only the codename param
behaves like Create Debian Distribution
returns ServiceResponse
with codename, components and architectures
behaves like Create Debian Distribution
returns ServiceResponse
with invalid suite
behaves like Create Debian Distribution
returns ServiceResponse
with invalid component name
behaves like Create Debian Distribution
returns ServiceResponse
with invalid architecture name
behaves like Create Debian Distribution
returns ServiceResponse
Types::BaseEnum
adds a formatted `deprecated_reason` to the subject
appends to the description if given
does not append to the description if it is absent
adds information about the replacement if provided
supports named reasons: renamed
supports named reasons: discouraged
.from_rails_enum
contructs the correct values
.declarative_enum
#graphql_name
when the use_name is `true`
changes the graphql_name
when the use_name is `false`
does not change the graphql_name
#description
when the use_description is `true`
changes the description
when the use_description is `false`
does not change the description
#values
sets the values defined by the declarative enum
.enum
adds all enum values to #enum
is a HashWithIndefferentAccess
validations
raises an informative error if `deprecation_reason` is used
raises an error if a required property is missing
raises an error if milestone is not a String
TagsFinder
#execute
sort only
sorts by name
sorts by recently_updated
sorts by last_updated
filter only
filters tags by name
does not find any tags with that name
filters tags by name that begins with
filters tags by name that ends with
filters tags by nonexistent name that begins with
filters tags by nonexistent name that ends with
filter and sort
when sort by updated_desc
filters tags by name
when sort by updated_asc
filters tags by name
when Gitaly is unavailable
returns empty list of tags
Gitlab::Kubernetes
#container_exec_url
is expected to eq "wss"
is expected to eq "example.com"
is expected to eq "/api/v1/namespaces/default/pods/pod1/exec"
is expected to eq "container=container1&stderr=true&stdin=true&stdout=true&tty=true&command=sh&command=-c&command=bash+%7C%7C+sh"
with a HTTP API URL
is expected to eq "ws"
with a path prefix in the API URL
is expected to eq "/prefix/api/v1/namespaces/default/pods/pod1/exec"
with arguments that need urlencoding
is expected to eq "/api/v1/namespaces/default%20namespace/pods/pod%201/exec"
is expected to match /\Acontainer=container\+1&/
#filter_by_label
returns matching labels
#filter_by_annotation
returns matching labels
#filter_by_project_environment
returns matching env label
#filter_by_legacy_label
returns matching labels
#to_kubeconfig
is expected to eq {"apiVersion"=>"v1", "clusters"=>[{"cluster"=>{"certificate-authority-data"=>"UEVN", "server"=>"https..."gitlab-deploy", "kind"=>"Config", "users"=>[{"name"=>"gitlab-deploy", "user"=>{"token"=>"TOKEN"}}]}
when CA PEM is not provided
is expected to eq {"apiVersion"=>"v1", "clusters"=>[{"cluster"=>{"server"=>"https://kube.domain.com"}, "name"=>"gitlab-..."gitlab-deploy", "kind"=>"Config", "users"=>[{"name"=>"gitlab-deploy", "user"=>{"token"=>"TOKEN"}}]}
when token is not provided
is expected to be nil
#add_terminal_auth
adds authentication parameters to a hash
Banzai::ReferenceParser::FeatureFlagParser
#nodes_visible_to_user
when the link has a data-issue attribute
behaves like referenced feature visibility
when feature is disabled
does not create reference
when feature is enabled only for team members
does not create reference for non member
creates reference for member
when feature is enabled
creates reference
#referenced_by
when the link has a data-feature-flag attribute
using an existing feature flag ID
returns an Array of feature flags
using a non-existing feature flag ID
returns an empty Array
Projects::HashedStorage::MigrationService
#execute
repository migration
delegates migration to Projects::HashedStorage::MigrateRepositoryService
does not delegate migration if repository is already migrated
migrates legacy repositories to hashed storage
attachments migration
delegates migration to Projects::HashedStorage::MigrateRepositoryService
does not delegate migration if attachments are already migrated
migrates legacy attachments to hashed storage
Types::GroupType
is expected to expose permissions using Types::PermissionTypes::Group
is expected to eq "Group"
is expected to require graphql authorizations :read_group
has the expected fields
boards field
returns boards
members field
is expected to have graphql type #<Class:0x00007ff3681f5348>
is expected to have graphql resolver Resolvers::GroupMembersResolver
timelogs field
finds timelogs between start time and end time
behaves like a GraphQL type with labels
has label fields
label field
is expected to have graphql type Types::LabelType
is expected to have graphql arguments :title
labels field
is expected to have graphql type #<Class:0x00007ff364cb2320>
is expected to have graphql arguments :search_term, :includeAncestorGroups, :includeDescendantGroups, and :onlyGroupLabels
Gitlab::Ci::Config::Entry::Product::Matrix
validations
when entry config value is correct
#valid?
is expected to be valid
when entry config generates too many jobs
#valid?
is expected not to be valid
#errors
returns error about too many jobs
when entry config has only one variable with multiple values
#valid?
is expected to be valid
#errors
returns no errors
#value
returns the value without raising an error
when entry config has only one variable with one value
#valid?
is expected to be valid
#errors
returns no errors
#value
returns the value without raising an error
when config value has wrong type
#valid?
is expected not to be valid
#errors
returns error about incorrect type
.compose!
when valid job entries composed
#value
returns key value
#descendants
creates valid descendant nodes
with empty config
#value
returns empty value
#number_of_generated_jobs
with empty config
is expected to be zero
with only one variable
is expected to eq 10
with two variables
is expected to eq 50
with two sets of variables
is expected to eq 56
Sidebars::Groups::Menus::GroupInformationMenu
#title
when group is a root group
is expected to eq "Group information"
when group is a child group
is expected to eq "Subgroup information"
Menu Items
Activity
is expected not to be nil
behaves like menu access rights
is expected not to be nil
when the user does not have access
is expected to be nil
Labels
behaves like menu access rights
is expected not to be nil
when the user does not have access
is expected to be nil
Members
behaves like menu access rights
is expected not to be nil
when the user does not have access
is expected to be nil
Gitlab::Usage::Metrics::Aggregates::Sources::PostgresHll
metric calculations
.calculate_events_union
returns the number of unique events in the union of all metrics
when there is no aggregated data saved
raises error when union data is missing
when there is only one metric defined as aggregated
returns the number of unique events for that metric
.calculate_metrics_intersections
returns the number of common events in the intersection of all metrics
when there is no aggregated data saved
raises error when union data is missing
when there is only one metric defined in aggregate
returns the number of common/unique events for the intersection of that metric
.save_aggregated_metrics
with compatible data argument
persists serialized data in Redis
with monthly key
persists serialized data in Redis
with all_time key
persists serialized data in Redis
error handling
rescues and reraise ::Redis::CommandError for development and test environments
for environment different than development
rescues ::Redis::CommandError
with incompatible data argument
raises error for development environment
for environment different than development
does not persist data in Redis
Ci::PipelineSuccessUnlockArtifactsWorker
#perform
is labeled as idempotent
performs multiple times sequentially without raising an exception
unlocks the artifacts from older pipelines
when pipeline exists
when pipeline has artifacts
calls the service
when pipeline does not have artifacts
does not call service
when pipeline does not exist
does not call service
projects/commits/_commit.html.haml
with different committer
DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: projects/commits/_commit.html.haml (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/views/projects/commits/_commit.html.haml_spec.rb:22)
DEPRECATION WARNING: Rendering actions with '.' in the name is deprecated: projects/commits/_commit.html.haml (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/views/projects/commits/_commit.html.haml_spec.rb:22)
renders committed by user
with a signed commit
does not display a loading spinner for GPG status
with ci status
when pipelines are disabled
does not display a ci status icon
when pipelines are enabled
does display a ci status icon when pipelines are enabled
Constraints::ProjectUrlConstrainer
#matches?
valid request
is expected to be truthy
invalid request
non-existing project
is expected to be falsey
existence_check is false
is expected to be truthy
project id ending with .git
is expected to be falsey
when the request matches a redirect route
and is a GET request
is expected to be truthy
and is NOT a GET request
is expected to be falsey
Gitlab::GitAccessWiki
#push_access_check
when user can :create_wiki
is expected not to raise Exception
when in a read-only GitLab instance
behaves like forbidden git access
prevents access
the user cannot :create_wiki
behaves like not-found git access
prevents access
#check_download_access!
the user can :download_wiki_code
when wiki feature is disabled
behaves like forbidden git access
prevents access
when the repository does not exist
behaves like not-found git access
prevents access
the user cannot :download_wiki_code
behaves like not-found git access
prevents access
Terraform::StateVersionPolicy
rules
no access
is expected to be disallowed :read_terraform_state
is expected to be disallowed :admin_terraform_state
developer
is expected to be allowed :read_terraform_state
is expected to be disallowed :admin_terraform_state
maintainer
is expected to be allowed :read_terraform_state
is expected to be allowed :admin_terraform_state
Gitlab::Database::LoadBalancing::HostList
#initialize
sets metrics for current number of hosts and current index
#length
returns the number of hosts in the list
#host_names_and_ports
with ports
returns the host names of all hosts
without ports
returns the host names of all hosts
#hosts
returns a copy of the host
#hosts=
updates the list of hosts to use
#next
returns a host
cycles through all available hosts
skips hosts that are offline
returns nil if no hosts are online
returns nil if no hosts are available
#shuffle
randomizes the list
Resolvers::Projects::JiraProjectsResolver
is expected to have nullable GraphQL type JiraProjectConnection
#resolve
when project has no Jira service
when user is a maintainer
behaves like no project service access
raises error
when project has Jira service
when user is a developer
behaves like no project service access
raises error
when user is a maintainer
when Jira connection is valid
returns Jira projects
when filtering projects by name
returns Jira projects
when Jira connection is not valid
raises failure error
Mutations::Issues::Move
#resolve
raises an error if the resource is not accessible to the user
when user does not have permissions
returns error message
when user has sufficient permissions
moves issue
Gitlab::Utils::StrongMemoize
#strong_memoize
with value
behaves like caching the value
only calls the block once
returns and defines the instance variable for the exact value
with value false
behaves like caching the value
only calls the block once
returns and defines the instance variable for the exact value
with value true
behaves like caching the value
only calls the block once
returns and defines the instance variable for the exact value
with value value
behaves like caching the value
only calls the block once
returns and defines the instance variable for the exact value
with value 0
behaves like caching the value
only calls the block once
returns and defines the instance variable for the exact value
with value [0]
behaves like caching the value
only calls the block once
returns and defines the instance variable for the exact value
#strong_memoized?
returns false if the value is uncached
returns true if the value is cached
#clear_memoization
removes the instance variable
Gitlab::TemplateParser::Parser
#root
parses an empty template
parses a variable with a single identifier step
parses a variable with a single integer step
parses a variable with multiple selector steps
parses a variable with an integer selector step
parses the special "it" variable
parses a text node
parses an if expression
parses an if-else expression
parses an each expression
parses an escaped newline
parses a regular newline
parses the default changelog template
raises an error when parsing an integer selector that is too large
#parse_and_transform
parses and transforms a template
raises parsing errors using a custom error class
AuthenticationEvent
associations
is expected to belong to user optional: true
validations
is expected to validate that :provider cannot be empty/falsy
is expected to validate that :user_name cannot be empty/falsy
is expected to validate that :result cannot be empty/falsy
is expected to allow :ip_address to be ‹"192.168.17.43"›
is expected to allow :ip_address to be ‹"2001:0db8:85a3:0000:0000:8a2e:0370:7334"›
is expected not to allow :ip_address to be ‹"invalid IP"›
scopes
.for_provider
returns events only for the specified provider
.ldap
returns all events for an LDAP provider
.providers
returns an array of distinct providers
Gitlab::Kubernetes::KubectlCmd
.delete
constructs string properly
.apply_file
without optional args
requires filename to be present
constructs string properly
with optional args
constructs command properly with many args
constructs command properly with single arg
.api_resources
constructs string properly
.delete_crds_from_group
constructs string properly
Packages::Go::Module
#path_valid?
with root path
with major version 0
returns true
with major version 1
returns true
with major version 2
returns false
with path ./v2
with major version 0
returns false
with major version 1
returns false
with major version 2
returns true
#gomod_valid?
with good gomod
returns true
with bad gomod
returns false
with empty gomod
returns false
Gitlab::HealthChecks::Redis::RateLimitingCheck
#metrics
Check is passing
is expected to include (have attributes {:name => "redis_rate_limiting_ping_success", :value => 1})
is expected to include (have attributes {:name => "redis_rate_limiting_ping_timeout", :value => 0})
is expected to include (have attributes {:name => "redis_rate_limiting_ping_latency_seconds", :value => (be >= 0)})
Check is misbehaving
is expected to include (have attributes {:name => "redis_rate_limiting_ping_success", :value => 0})
is expected to include (have attributes {:name => "redis_rate_limiting_ping_timeout", :value => 0})
is expected to include (have attributes {:name => "redis_rate_limiting_ping_latency_seconds", :value => (be >= 0)})
Check is timeouting
is expected to include (have attributes {:name => "redis_rate_limiting_ping_success", :value => 0})
is expected to include (have attributes {:name => "redis_rate_limiting_ping_timeout", :value => 1})
is expected to include (have attributes {:name => "redis_rate_limiting_ping_latency_seconds", :value => (be >= 0)})
#readiness
Check returns ok
is expected to have attributes {:success => true}
Check is misbehaving
is expected to have attributes {:message => "unexpected Rate_limiting check result: error!", :success => false}
Check is timeouting
is expected to have attributes {:message => "Rate_limiting check timed out", :success => false}
Check is raising an unhandled exception
is expected to have attributes {:message => "unexpected Rate_limiting check result: unexpected error", :success => false}
Packages::Helm::PackagesFinder
#execute
with project
with channel
is expected to eq [#<Packages::Package id: 39, project_id: 988, created_at: "2021-10-13 18:41:38.460678553 +0000", upda...", name: "package-1", version: "v1.0.1", package_type: "helm", creator_id: 1714, status: "default">]
ignores duplicate package files
is expected to eq [#<Packages::Package id: 39, project_id: 988, created_at: "2021-10-13 18:41:38.460678553 +0000", upda...", name: "package-1", version: "v1.0.1", package_type: "helm", creator_id: 1714, status: "default">]
let clients use select id
is expected to eq [39]
with not existing channel
is expected to be empty
with no channel
is expected to be empty
with no helm packages
is expected to be empty
with no project
is expected to be empty
when the limit is hit
is expected to eq [#<Packages::Package id: 44, project_id: 988, created_at: "2021-10-13 18:41:38.961793170 +0000", upda...", name: "package-3", version: "v1.0.3", package_type: "helm", creator_id: 1714, status: "default">]
Gitlab::Database::Migration
.[]
version: 1.0
inherits from ActiveRecord::Migration[6.1]
includes migration helpers version 2
includes LockRetriesConcern
unknown version
raises an error
.current_version
includes current ActiveRecord migration class
Gitlab::Database::Migration::LockRetriesConcern
when not explicitly called
does not disable lock retries by default
when explicitly disabled
does not disable lock retries by default
Gitlab::ImportExport::CommandLineUtil
has the right mask for project.json
has the right mask for uploads
#gzip
compresses specified file
when exception occurs
raises an exception
#gunzip
decompresses specified file
when exception occurs
raises an exception
#tar_cf
archives a folder without compression
when something goes wrong
raises an error
Gitlab::LocalAndRemoteStorageMigration::ArtifactMigrater
behaves like local and remote storage migration
start_store: 1, end_store: 2, method: :migrate_to_remote_storage
successfully migrates
start_store: 2, end_store: 2, method: :migrate_to_remote_storage
successfully migrates
start_store: 2, end_store: 1, method: :migrate_to_local_storage
successfully migrates
start_store: 1, end_store: 1, method: :migrate_to_local_storage
successfully migrates
when migration fails
prints error
Gitlab::Kubernetes::Namespace
is expected to eq "a_namespace"
#exists?
when namespace do not exits
returns false
when namespace exits
returns true
when cluster cannot be reached
raises exception
#create!
creates a namespace
with labels
creates a namespace with labels
#ensure_exists!
checks for existing namespace before creating
do not re-create an existing namespace
when client errors
raises the exception
logs the error
ObjectStoreSettings
#parse!
with valid config
sets correct default values
raises an error when a bucket is missing
[WARNING] Object storage for pages must have a bucket specified
does not raise error if pages bucket is missing
GitLab Pages
allows pages to define its own connection
behaves like consolidated settings for objects accelerated by Workhorse
consolidates active object storage settings
when object storage is disabled for artifacts with no bucket
does not enable consolidated settings for artifacts
behaves like consolidated settings for objects accelerated by Workhorse
consolidates active object storage settings
with legacy config
does not alter config if legacy settings are specified
.legacy_parse
sets correct default values
respects original values
ExperimentSubject
associations
is expected to belong to experiment required:
is expected to belong to user required:
is expected to belong to namespace required:
is expected to belong to project required:
validations
is expected to validate that :experiment cannot be empty/falsy
must_have_one_subject_present
fails when no subject is present
passes when user subject is present
passes when namespace subject is present
passes when project subject is present
fails when more than one subject is present
.valid_subject?
when passing a Group, Namespace, User or Project
is expected to equal true
is expected to equal true
is expected to equal true
is expected to equal true
when passing another object
is expected to equal false
Gitlab::StaticSiteEditor::Config::FileConfig
when config is valid
when config has valid values
#to_hash_with_defaults
returns hash created from string
#valid?
is valid
has no errors
when a config entry has an empty value
#to_hash
returns default value
#valid?
is valid
has no errors
when config is invalid
when yml is incorrect
.new
raises error
when config value exists but is not a valid value
#valid?
is not valid
has errors
#errors
returns an array of strings
MilestoneRelease
associations
is expected to belong to release required:
is expected to belong to milestone required:
when trying to create the same record in milestone_releases twice
is not committing on the second time
validations
when milestone and release do not have the same project
is not valid
when milestone and release have the same project
is expected to be valid
Projects::HashedStorage::BaseAttachmentService
#old_disk_path
is expected to respond to #old_disk_path
#new_disk_path
is expected to respond to #new_disk_path
#skipped?
is expected to respond to #skipped?
#target_path_discardable?
returns false
#discard_path!
renames target path adding a timestamp at the end
#move_folder!
when old_path is not a directory
adds information to the logger and returns true
KeysetHelper
with admin mode
when no users are present
does not render pagination links
when one user is present
does not render pagination links
when more users are present
when on the first page
renders the next and last links
when at the last page
renders the prev and first links
when at the second page
renders all links
ErrorTrackingIssueLinkWorker
#perform
creates a link between an issue and a Sentry issue in Sentry
when issue is unavailable
behaves like makes no external API requests
takes no action
when project does not have error tracking configured
behaves like makes no external API requests
takes no action
when the issue is not linked to a Sentry issue in GitLab
behaves like makes no external API requests
takes no action
when Sentry disabled the GitLab integration
behaves like attempts to create a link via plugin
takes no action
when Sentry the GitLab integration is for another project
behaves like attempts to create a link via plugin
takes no action
when Sentry repos request errors
falls back to creating a link via plugin
Gitlab::Ci::Pipeline::Chain::SeedBlock
#perform!
when there is not seeds_block
does nothing
when there is seeds_block
executes the block
when the seeds_block tries to save the pipelie
raises error
Gitlab::Analytics::CycleAnalytics::StageEvents::IssueStageEnd
behaves like value stream analytics event
is expected to be a kind of String
is expected to be a kind of Symbol
is expected to include ApplicationRecord(abstract)
is expected to respond to #timestamp_projection
is expected to respond to #markdown_description
is expected to be a kind of Array
#apply_query_customization
expects an ActiveRecord::Relation object as argument and returns a modified version of it
#hash_code
returns a hash that uniquely identifies an event
does not differ when the same object is built with the same params
behaves like LEFT JOIN-able value stream analytics event
can use the event as LEFT JOIN
when looking at the record with data
contains the timestamp expression
when looking at the record without data
returns nil for the timestamp expression
Users::RejectService
#execute
failures
when the executor user is not allowed to reject users
returns error result
when the executor user is an admin in admin mode
when user is not in pending approval state
returns error result
success
when the executor user is an admin in admin mode
deletes the user
emails the user on rejection
logs rejection in application logs
audit events
when not licensed
does not log any audit event
Gitlab::Middleware::BasicHealthCheck
#call
outside IP
returns a 404
forwards the call for other paths
with X-Forwarded-For headers
returns 200 response when endpoint is allowed
returns 404 when whitelist is not configured
whitelisted IP
returns 200 response when endpoint is hit
forwards the call for other paths
Resolvers::LastCommitResolver
#resolve
last commit is a merge commit
resolves to the merge commit
last commit for a different branch and path
resolves commit
last commit for a wildcard pathspec
returns nil
last commit with pathspec characters
resolves commit
last commit does not exist
returns nil
API::Entities::ProjectImportStatus
#as_json
when no import state exists
includes basic fields and no failures
when import has not finished yet
includes basic fields and no failures
when import has finished with failed relations
includes basic fields with failed relations
when import has failed
includes basic fields with import error
Gitlab::SidekiqMiddleware::WorkerContext::Server
#call
applies a class context
doesn't fail for unknown workers
feature category
takes the feature category from the worker
when the worker is not owned
takes the feature category from the surrounding context
RuboCop::Cop::ActiveModelErrorsDirectManipulation
when modifying errors
registers an offense
when assigning
registers an offense
when modifying errors.messages
registers an offense
when assigning
registers an offense
when modifying errors.details
registers an offense
when assigning
registers an offense
Metrics::Dashboard::DefaultEmbedService
.valid_params?
is expected to be truthy
missing embedded
is expected to be falsey
not embedded
is expected to be falsey
#get_dashboard
caches the unprocessed dashboard for subsequent calls
behaves like valid embedded dashboard service response
behaves like valid dashboard service response for schema
returns a json representation of the dashboard
behaves like raises error for users with insufficient permissions
when the user does not have sufficient access
behaves like misconfigured dashboard service response
returns an appropriate message and status code
when the user is anonymous
behaves like misconfigured dashboard service response
returns an appropriate message and status code
when called with a non-system dashboard
behaves like valid embedded dashboard service response
behaves like valid dashboard service response for schema
returns a json representation of the dashboard
Gitlab::JiraImport::Stage::ImportAttachmentsWorker
modules
behaves like include import workers modules
is expected to includes the ApplicationWorker module
is expected to includes the Gitlab::JiraImport::QueueOptions module
is expected to includes the Gitlab::JiraImport::ImportWorker module
#perform
when import did not start
behaves like cannot do Jira import
does not advance to next stage
behaves like does not advance to next stage
does not advance to next stage
when import started
behaves like advance to next stage
advances to notes stage
Gitlab::Database::Reindexing::ReindexConcurrently#perform
recreates the index using REINDEX with a long statement timeout
when the index serves an exclusion constraint
raises an error
when attempting to reindex an expression index
raises an error
when the index is a dangling temporary index from a previous reindexing run
with the temporary index prefix
raises an error
with the temporary index prefix with a counter
raises an error
with dangling indexes matching TEMPORARY_INDEX_PATTERN, i.e. /some\_index\_ccnew(\d)*/
with normal index names
behaves like dropping the dangling index
drops the dangling indexes while controlling lock_timeout
with index name at 63 character limit
behaves like dropping the dangling index
drops the dangling indexes while controlling lock_timeout
Gitlab::Kubernetes::Deployment
#name
is expected to eq :selected
#labels
is expected to eq :selected
#outdated?
when outdated
is expected to be truthy
when up to date
is expected to be falsy
when ahead of latest
is expected to be falsy
#instances
when unnamed
returns all pods with generated names and pending
when number of pods is less than wanted replicas
returns not spawned pods as pending and unknown and running
when outdated
returns all instances as named and waiting
with pods of each type
returns all instances
with track label
when marked as stable
returns all instances
when marked as canary
returns all instances
Gitlab::UsageDataCounters::DesignsCounter
behaves like a redis usage counter
.count(create)
increments the Designs create counter by 1
.read(create)
returns the total number of create events
behaves like a redis usage counter
.count(update)
increments the Designs update counter by 1
.read(update)
returns the total number of update events
behaves like a redis usage counter
.count(delete)
increments the Designs delete counter by 1
.read(delete)
returns the total number of delete events
behaves like a redis usage counter with totals
totals
can report all totals
unknown events
cannot increment
cannot read
RuboCop::Cop::RSpec::BeSuccessMatcher
using expect(response).to be_success call
registers an offense and corrects
using expect(response).to be_successful call
does not register an offense
using expect(response).to_not be_success call
registers an offense and corrects
using expect(response).to_not be_successful call
does not register an offense
using expect(response).not_to be_success call
registers an offense and corrects
using expect(response).not_to be_successful call
does not register an offense
using is_expected.to be_success call
registers an offense and corrects
using is_expected.to be_successful call
does not register an offense
using is_expected.to_not be_success call
registers an offense and corrects
using is_expected.to_not be_successful call
does not register an offense
using is_expected.not_to be_success call
registers an offense and corrects
using is_expected.not_to be_successful call
does not register an offense
Gitlab::JiraImport::Stage::StartImportWorker
modules
behaves like include import workers modules
is expected to includes the ApplicationWorker module
is expected to includes the Gitlab::JiraImport::QueueOptions module
is expected to includes the ProjectStartImport module
is expected to includes the ProjectImportOptions module
#perform
when import is not scheduled
exits because import not started
when import is scheduled
advances to importing labels
when import is started
when this is the same worker that stated import
advances to importing labels
when this is a different worker that stated import
advances to importing labels
when import is finished
advances to importing labels
ServiceFieldEntity
#as_json
Jira Service
field with type text
exposes correct attributes
field with type password
exposes correct attributes but hides password
EmailsOnPush Service
field with type checkbox
exposes correct attributes and casts value to Boolean
field with type select
exposes correct attributes
Projects::CountService
.query
raises NotImplementedError
#relation_for_count
calls the class method query with the project id
#count
returns the number of rows
caches the number of rows
#refresh_cache
refreshes the cache
#delete_cache
removes the cache
#cache_key_name
raises NotImplementedError
#cache_key
returns the cache key as an Array
Gitlab::Ci::Config::Entry::Release::Assets::Links
validation
when entry config value is correct
#value
returns links configuration
#valid?
is valid
when entry value is not correct
#errors
when value of link is invalid
reports error
when value of links link is empty
reports error
when there is an unknown key present
reports error
Gitlab::Metrics::Dashboard::Stages::PanelIdsInserter
#transform!
when dashboard panels are present
assigns unique ids to each panel using PerformanceMonitoring::PrometheusPanel
when dashboard panels has duplicated ids
no panel has assigned id
when there are no panels in the dashboard
raises a processing error
when there are no panel_groups in the dashboard
raises a processing error
when dashboard panels has unknown schema attributes
no panel has assigned id
logs the failure
UploaderFinder
#execute
when successful
gets the file-like uploader
when path traversal in file name
returns nil
when unexpected failure
returns nil when unexpected error is raised
Gitlab::Ci::Status::Build::Pending
#illustration
is expected to include :image, :size, :title, and :content
.matches?
when build is pending
is a correct match
when build is not pending
does not match
Gitlab::PhabricatorImport::ProjectCreator
#execute
creates a project correctly and schedule an import
when import params are missing
returns nil
when import params are invalid
returns an unpersisted project
Gitlab::Template::GitignoreTemplate
.all
strips the gitignore suffix
combines the globals and rest
.find
returns nil if the file does not exist
returns the Gitignore object of a valid file
#content
loads the full file
Discussions::CaptureDiffNotePositionsService
when merge request has a discussion
and position of the discussion changed on target branch head
diff positions are created for the first notes of the discussions
Gitlab::Sourcegraph
.feature_conditional?
when feature is enabled globally
is expected to be falsey
when feature is enabled only to a resource
is expected to be truthy
.feature_available?
when feature is enabled globally
is expected to be truthy
when feature is enabled only to a resource
is expected to be truthy
.feature_enabled?
when feature is enabled globally
is expected to be truthy
when feature is enabled only to a resource
for the same resource
is expected to be truthy
for a different resource
is expected to be falsey
ReleasePolicy
when the user has access to the protected tag
allows the user to create, update and destroy a release
when the user does not have access to the protected tag
prevents the user from creating, updating and destroying a release
Ide::BaseConfigService
#execute
when insufficient permission
returns an error
for developer
when file is missing
returns an error
when file is present
content is not valid
returns an error
BulkImports::ExportRequestWorker
#perform
when entity is group
is labeled as idempotent
performs multiple times sequentially without raising an exception
requests relations export
when entity is project
is labeled as idempotent
performs multiple times sequentially without raising an exception
requests relations export
Gitlab::Database::Reindexing::ReindexAction
.create_for
creates a new record for the given index
#finish
sets #action_end
sets #ondisk_size_bytes_end after reloading the index record
saves the record
setting #state
sets #state to finished if not given
sets #state to finished if not set to started
does not change state if set to failed
Packages::Nuget::SyncMetadatumService
#execute
creates a nuget metadatum
behaves like saving metadatum attributes
saves nuget metadatum
with exisiting nuget metadatum
does not create a nuget metadatum
behaves like saving metadatum attributes
saves nuget metadatum
with empty metadata
destroys the nuget metadatum
Gitlab::Metrics::Dashboard::Stages::UrlValidator
#transform!
when the links contain a blocked url
dashboard related links
replaces the blocked url with an empty string
chart links
replaces the blocked url with an empty string
when local requests are not allowed
replaces the blocked url with an empty string
when the links are an array of strings instead of hashes
prevents an invalid link definition from erroring out
Gitlab::Middleware::Multipart::Handler
#allowed_paths
package_features_enabled: false, object_storage_enabled: false, direct_upload_enabled: true, expected_paths: :expected_allowed_paths
is expected to eq ["/tmp", "/builds/gitlab-org/gitlab/tmp/tests/public/uploads", "/builds/gitlab-org/gitlab/tmp/tests/p...s/gitlab-org/gitlab/shared/lfs-objects/tmp/uploads", "/builds/gitlab-org/gitlab/public/uploads/tmp"]
package_features_enabled: false, object_storage_enabled: false, direct_upload_enabled: false, expected_paths: :expected_allowed_paths
is expected to eq ["/tmp", "/builds/gitlab-org/gitlab/tmp/tests/public/uploads", "/builds/gitlab-org/gitlab/tmp/tests/p...s/gitlab-org/gitlab/shared/lfs-objects/tmp/uploads", "/builds/gitlab-org/gitlab/public/uploads/tmp"]
package_features_enabled: false, object_storage_enabled: true, direct_upload_enabled: true, expected_paths: :expected_allowed_paths
is expected to eq ["/tmp", "/builds/gitlab-org/gitlab/tmp/tests/public/uploads", "/builds/gitlab-org/gitlab/tmp/tests/p...s/gitlab-org/gitlab/shared/lfs-objects/tmp/uploads", "/builds/gitlab-org/gitlab/public/uploads/tmp"]
package_features_enabled: false, object_storage_enabled: true, direct_upload_enabled: false, expected_paths: :expected_allowed_paths
is expected to eq ["/tmp", "/builds/gitlab-org/gitlab/tmp/tests/public/uploads", "/builds/gitlab-org/gitlab/tmp/tests/p...s/gitlab-org/gitlab/shared/lfs-objects/tmp/uploads", "/builds/gitlab-org/gitlab/public/uploads/tmp"]
package_features_enabled: true, object_storage_enabled: false, direct_upload_enabled: true, expected_paths: :expected_with_packages_path
is expected to eq ["/tmp", "/builds/gitlab-org/gitlab/tmp/tests/public/uploads", "/builds/gitlab-org/gitlab/tmp/tests/p...ilds/gitlab-org/gitlab/public/uploads/tmp", "/builds/gitlab-org/gitlab/shared/packages/tmp/uploads"]
package_features_enabled: true, object_storage_enabled: false, direct_upload_enabled: false, expected_paths: :expected_with_packages_path
is expected to eq ["/tmp", "/builds/gitlab-org/gitlab/tmp/tests/public/uploads", "/builds/gitlab-org/gitlab/tmp/tests/p...ilds/gitlab-org/gitlab/public/uploads/tmp", "/builds/gitlab-org/gitlab/shared/packages/tmp/uploads"]
package_features_enabled: true, object_storage_enabled: true, direct_upload_enabled: true, expected_paths: :expected_allowed_paths
is expected to eq ["/tmp", "/builds/gitlab-org/gitlab/tmp/tests/public/uploads", "/builds/gitlab-org/gitlab/tmp/tests/p...s/gitlab-org/gitlab/shared/lfs-objects/tmp/uploads", "/builds/gitlab-org/gitlab/public/uploads/tmp"]
package_features_enabled: true, object_storage_enabled: true, direct_upload_enabled: false, expected_paths: :expected_with_packages_path
is expected to eq ["/tmp", "/builds/gitlab-org/gitlab/tmp/tests/public/uploads", "/builds/gitlab-org/gitlab/tmp/tests/p...ilds/gitlab-org/gitlab/public/uploads/tmp", "/builds/gitlab-org/gitlab/shared/packages/tmp/uploads"]
Gitlab::Diff::PositionCollection
#to_a
returns all positions that are Gitlab::Diff::Position
#unfoldable
returns unfoldable diff positions
when given head_sha does not match with positions head_sha
returns no position
when given head_sha is nil
returns unfoldable diff positions unfiltered by head_sha
#concat
returns a Gitlab::Diff::Position
concatenates the new position to the collection
CreatePipelineWorker
#perform
when a project not found
does not call the Service
when a user not found
does not call the Service
when everything is ok
calls the Service
Gitlab::Ci::Pipeline::Chain::Helpers
.error
when given a drop reason
when config error is true
sets the yaml error and overrides the drop reason
behaves like error function
is expected to include "message"
when config error is false
does not set the yaml error or override the drop reason
behaves like error function
is expected to include "message"
Resolvers::Users::GroupsResolver
#resolve
when paginatable_namespace_drop_down_for_project_creation feature flag is disabled
is expected to be nil
when resolver object is current user
is expected to match [#<Group id:2147 @a-public-maintainer>, #<Group id:2145 @b-private-maintainer>, #<Group id:2146 @c-public-developer>, #<Group id:2144 @public-guest>]
when permission is :create_projects
is expected to match [#<Group id:2147 @a-public-maintainer>, #<Group id:2145 @b-private-maintainer>, #<Group id:2146 @c-public-developer>]
when search is provided
is expected to match [#<Group id:2147 @a-public-maintainer>, #<Group id:2145 @b-private-maintainer>]
when resolver object is different from current user
is expected to be nil
when current_user is admin
is expected to match [#<Group id:2147 @a-public-maintainer>, #<Group id:2145 @b-private-maintainer>, #<Group id:2146 @c-public-developer>, #<Group id:2144 @public-guest>]
DiffFileMetadataEntity
as json
exposes the expected fields
behaves like diff file with conflict_type
#conflict_type
returns nil by default
when there is matching conflict file
returns false
Packages::Helm::ExtractFileMetadataService
with a valid file
is expected to eq {"apiVersion"=>"v2", "description"=>"File, Block, and Object Storage Services for your Cloud-Native E...ok-logo.svg", "name"=>"rook-ceph", "sources"=>["https://github.com/rook/rook"], "version"=>"v1.5.8"}
without Chart.yaml
is expected to raise Packages::Helm::ExtractFileMetadataService::ExtractionError with "Chart.yaml not found within a directory"
with Chart.yaml at root
is expected to raise Packages::Helm::ExtractFileMetadataService::ExtractionError with "Chart.yaml not found within a directory"
with an invalid YAML
is expected to raise Packages::Helm::ExtractFileMetadataService::ExtractionError with "Error while parsing Chart.yaml: (<unknown>): did not find expected node content while parsing a flow node at line 2 column 1"
Gitlab::Ci::Reports::Security::FindingSignature
#initialize
when a supported algorithm type is given
allows itself to be created
#valid?
returns true
#valid?
when supported algorithm_type is given
is valid
when an unsupported algorithm_type is given
is not valid
#to_hash
returns a hash representation of the signature
Types::Packages::PackageSortEnum
exposes all package sort values
Resolvers::MergeRequestPipelinesResolver
resolves only MRs for the passed merge request
with archived project
is expected not to contain exactly #<Ci::Pipeline id: 140, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: n...sha: nil, target_sha: nil, external_pull_request_id: nil, ci_ref_id: 96, locked: "artifacts_locked">
AwardEmojiPresenter
#description
is expected to eq "thumbs up sign"
#unicode
is expected to eq "1F44D"
#unicode_version
is expected to eq "6.0"
#emoji
is expected to eq "👍"
when presenting an award emoji with an invalid name
returns nil for all properties
Gitlab::Database::Migrations::Observers::TotalDatabaseSizeChange
records the size change
out of order calls
does not record anything if before size is unknown
does not record anything if after size is unknown
Applications::CreateService
when scopes are present
is expected to change `Doorkeeper::Application.count` by 1
when scopes are missing
is expected not to change `Doorkeeper::Application.count`
includes blank scopes error message
Serializers::SymbolizedJson
.dump
returns a hash
.load
when loading a hash
decodes a string
allows to access with symbols
when loading a nil
returns nil
Namespaces::OnboardingPipelineCreatedWorker#perform
behaves like records an onboarding progress action
is expected to receive execute({:action=>:pipeline_created}) 1 time
behaves like does not record an onboarding progress action
is expected not to receive new(*(any args)) 0 times
Evidences::ReleaseEntity
exposes the expected fields
when the release has milestones
exposes these milestones
when the release has no milestone
exposes an empty array for milestones
ClusterSerializer
#represent_list
serializes attrs correctly
#represent_status
when provider type is gcp and cluster is errored
serializes attrs correctly
when provider type is user
serializes attrs correctly
PropagateIntegrationInheritWorker
#perform
behaves like an idempotent worker
is labeled as idempotent
performs multiple times sequentially without raising an exception
calls to BulkUpdateIntegrationService
with an invalid integration id
returns without failure
Gitlab::Database::Partitioning::DetachedPartitionDropper
#perform
when the partition should not be dropped yet
does not drop the partition
with a partition to drop
drops the partition
when the drop_detached_partitions feature flag is disabled
does not drop the partition
when another process drops the table while the first waits for a lock
skips the table
when the partition to drop is still attached to its table
does not drop the partition, but does remove the DetachedPartition entry
removes the detached_partition entry
with multiple partitions to drop
drops both partitions
when the first drop returns an error
still drops the second partition
Gitlab::StringRangeMarker
#mark
when the rich text is html safe
marks the inline diffs
when the rich text is not html safe
when rich text equals raw text
marks the inline diffs
when rich text doeas not equal raw text
marks the inline diffs
Banzai::Filter::ImageLinkFilter
wraps the image with a link to the image src
does not wrap a duplicate link
works with external images
works with inline images
keep the data-canonical-src
AccessibilityReportsComparerEntity
#as_json
when base report has error and head has a different error
contains correct compared accessibility report details
when base report has error and head has the same error
contains correct compared accessibility report details
when base report has no error and head has errors
contains correct compared accessibility report details
UserCustomAttribute
assocations
is expected to belong to user required:
validations
is expected to validate that :user_id cannot be empty/falsy
is expected to validate that :key cannot be empty/falsy
is expected to validate that :value cannot be empty/falsy
is expected to validate that :key is case-sensitively unique within the scope of :user_id
RemoteMirrorNotificationWorker
#perform
calls NotificationService#remote_mirror_update_failed when the mirror exists
does nothing when the mirror has no errors
does nothing when the mirror does not exist
does nothing when a notification has already been sent
Mutations::Ci::JobTokenScope::AddProject
#resolve
when user is not logged in
raises error
when user is logged in
when user does not have permissions to admin project
raises error
when user has permissions to admin project and read target project
adds target project to the job token scope
when the service returns an error
returns an error response
Types::ErrorTracking::SentryDetailedErrorType
is expected to eq "SentryDetailedError"
is expected to require graphql authorizations :read_sentry_issue
exposes the expected fields
Webauthn::RegisterService
#execute
returns a registration if challenge matches
returns an error if challenge does not match
NamespacePathValidator
.valid_path?
handles invalid utf8
#validates_each
adds a message when the path is not in the correct format
adds a message when the path is reserved when creating
adds a message when the path is reserved when updating
Gitlab::ImportExport::Json::NdjsonWriter
#write_attributes
writes correct json to root
#write_relation
when single relation is serialized
appends json in correct file
when single relation is already serialized
raise exception
#write_relation_array
writes json in correct files
SystemCheck::App::HashedStorageEnabledCheck
#check?
fails when hashed storage is disabled
succeeds when hashed storage is enabled
BlobViewer::License
#license
returns the blob project repository license
#render_error
when there is no license
returns :unknown_license
when there is a license
returns nil
ScheduleMergeRequestCleanupRefsWorker
#perform
does nothing if the database is read-only
is labeled as idempotent
performs multiple times sequentially without raising an exception
schedules MergeRequestCleanupRefsWorker to be performed with capacity
when merge_request_refs_cleanup flag is disabled
does not schedule any merge request clean ups
AuthorizedProjectUpdate::UserRefreshOverUserRangeWorker
behaves like worker with data consistency
.get_data_consistency_feature_flag_enabled?
returns true
.get_data_consistency
returns correct data consistency
#perform
checks if project authorization update is required
checks if a project_authorization refresh is needed for each of the users
when there are project authorization records due for either removal or addition for a specific user
enqueues a new project authorization update job for the user
when there are no additions or removals to be made to project authorizations for a specific user
does not enqueue a new project authorization update job for the user
Mutations::AlertManagement::HttpIntegration::ResetToken
is expected to require graphql authorizations :admin_operations
#resolve
user has sufficient access to project
when HttpIntegrations::UpdateService responds with success
returns the integration with no errors
when HttpIntegrations::UpdateService responds with an error
returns errors
when resource is not accessible to the user
raises an error if the resource is not accessible to the user
Types::Tree::TreeEntryType
is expected to eq "TreeEntry"
is expected to have graphql fields :id, :sha, :name, :type, :path, :flat_path, :web_url, and :web_path
API::Validations::Validators::ProjectPortable
valid portable
does not raise a validation error
empty params
raises a validation error
not portable
raises a validation error
Packages::Nuget::PackageMetadataPresenter
#json_url
is expected to end with "/api/v4/projects/1068/packages/nuget/metadata/NugetPackage4/1.0.18.json"
#archive_url
is expected to end with "/api/v4/projects/1068/packages/nuget/download/NugetPackage4/1.0.18/NugetPackage4.1.0.18.nupkg"
#catalog_entry
returns an entry structure
API::Validations::Validators::ArrayNoneAny
valid parameters
does not raise a validation error
invalid parameters
raises a validation error
Types::Tree::SubmoduleType
is expected to eq "Submodule"
is expected to have graphql fields :id, :sha, :name, :type, :path, :flat_path, :web_url, and :tree_url
Tooling::TestMapGenerator
#parse
with single yaml
parses crystalball data into test mapping
stores test files without example uid
with multiple yamls
parses crystalball data into test mapping
stores test files without example uid
DependencyProxy::ImageTtlGroupPolicy
relationships
is expected to belong to group required:
validations
is expected to validate that :group cannot be empty/falsy
#enabled
is expected to allow :enabled to be ‹true›
is expected to allow :enabled to be ‹false›
is expected not to allow :enabled to be ‹nil›
#ttl
is expected to validate that :ttl looks like a number greater than 0 as long as it is not nil
.enabled
returns policies that are enabled
Gitlab::Usage::Metrics::Instrumentations::CountUsersAssociatingMilestonesToReleasesMetric
behaves like a correct instrumented metric value
has correct value
Gitlab::GithubImport::Importer::PullRequestMergedByImporter
when the merger user can be mapped
assigns the merged by user when mapped
when the merger user cannot be mapped to a gitlab user
adds a note referencing the merger user
when the merger user is not provided
adds a note referencing the merger user
Gitlab::CrossProjectAccess
#add_check
keeps track of the properties to check
builds the check correctly
merges the checks of a parent class into existing checks of a subclass
merges the existing checks of a superclass into the checks of a subclass
#find_check
returns a check when it was defined for a superclass
caches the result for a subclass
returns the checks for the closest class if there are more checks available
Gitlab::Analytics::CycleAnalytics::StageEvents::StageEvent
is expected to respond to #name
is expected to respond to #identifier
is expected to respond to #object_type
is expected to respond to #timestamp_projection
is expected to respond to #apply_query_customization
Settings
#ldap
can be accessed with dot syntax all the way down
can be accessed in a very specific way that breaks without reassigning each element with Settingslogic
#host_without_www
URL with protocol
returns the host
URL without protocol
returns the host
URL with user/port
returns the host
Packages::Debian::FindOrCreateIncomingService
#execute
run once
creates a new package
behaves like assigns the package creator
assigns the package creator
run twice
returns the same object
DependencyProxy::CleanupBlobWorker
behaves like dependency_proxy_cleanup_worker
#perform_work
with no work to do
is expected to be nil
with work to do
deletes the oldest expired artifact based on updated_at
#max_running_jobs
is expected to eq 5
#remaining_work_count
is expected to eq 3
Tooling::Danger::Specs
#add_suggestions_for_match_with_array
adds suggestions at the correct lines
#changed_specs_files
returns added, modified, and renamed_after files by default
with include_ee: :exclude
returns spec files without EE-specific files
with include_ee: :only
returns EE-specific spec files only
#added_line_matching_match_with_array
returns added, modified, and renamed_after files by default
profiles/show
when the profile page is opened
displays the correct elements
Members::Mailgun::ProcessWebhookService
#execute
marks the member invite email success as false
when member can not be found
does not change member status
when invite token is not found in payload
does not change member status and logs an error
Gitlab::Ci::Status::Success
#text
is expected to eq "passed"
#label
is expected to eq "passed"
#icon
is expected to eq "status_success"
#favicon
is expected to eq "favicon_status_success"
#group
is expected to eq "success"
#details_path
is expected to be nil
Gitlab::ImportExport::DesignRepoRestorer
bundle a design Git repo
restores the repo successfully
Types::Ci::Config::JobRestrictionType
is expected to eq "CiConfigJobRestriction"
exposes the expected fields
Gitlab::CycleAnalytics::Updater
updates authors
maps the correct user
updates builds
maps the correct build
Repositories::BranchNamesFinder
#execute
returns all filtered branch names
returns a limited number of offset filtered branch names
BuildArtifactEntity
#as_json
contains job name
exposes information about expiration of artifacts
exposes the artifact download path
when project is specified in options
doesnt get a project from the artifact
Gitlab::ErrorTracking::Processor::GrpcErrorProcessor
.call
when there is no GRPC exception
leaves data unchanged
when there is a GRPC exception with a debug string
removes the debug error string and stores it as an extra field
with no custom fingerprint
removes the debug error string and stores it as an extra field
when there is a wrapped GRPC exception with a debug string
removes the debug error string and stores it as an extra field
with no custom fingerprint
removes the debug error string and stores it as an extra field
Import::BitbucketProviderRepoEntity
behaves like exposes required fields for import entity
exposes required fields
correctly exposes id
correctly exposes full name
correctly exposes sanitized name
correctly exposes provider link
Import::GitlabProviderRepoEntity
behaves like exposes required fields for import entity
exposes required fields
correctly exposes id
correctly exposes full name
correctly exposes sanitized name
correctly exposes provider link
Gitlab::Database::LoadBalancing::SrvResolver
#address_for
when additional section contains an A record
returns an IP4 address
when additional section contains an AAAA record
Net::DNS unsupported record type: uninitialized constant Net::DNS::RR::OPT
Did you mean? Net::DNS::OPT
returns an IP6 address
when additional section does not contain A nor AAAA records
when host resolves to an A record
returns an IP4 address
when host does resolves to an AAAA record
Net::DNS unsupported record type: uninitialized constant Net::DNS::RR::OPT
Did you mean? Net::DNS::OPT
returns an IP6 address
Types::NamespaceType
is expected to eq "Namespace"
has the expected fields
is expected to require graphql authorizations :read_namespace
Webauthn::AuthenticateService
#execute
returns true if the response is valid and a matching stored credential is present
returns false if the response is valid but no matching stored credential is present
Auth::DependencyProxyAuthenticationService
#execute
dependency proxy is not enabled
behaves like returning
returns dependency proxy not enabled
without a user
behaves like returning
returns access forbidden
with a deploy token as user
behaves like returning a token
returns a token
with a user
behaves like returning a token
returns a token
MergeRequestCurrentUserEntity
as json
exposes needed attributes
Banzai::Pipeline::EmailPipeline
.filters
returns the expected type
excludes ImageLazyLoadFilter
shows punycode for autolinks
ContainerRegistryHelper
#container_registry_expiration_policies_throttling?
feature_flag_enabled: true, client_support: true, expected_result: true
is expected to eq true
feature_flag_enabled: true, client_support: false, expected_result: false
is expected to eq false
feature_flag_enabled: false, client_support: true, expected_result: false
is expected to eq false
feature_flag_enabled: false, client_support: false, expected_result: false
is expected to eq false
BulkImports::FileTransfer
.config_for
when portable is group
returns group config
when portable is project
returns project config
when portable is unsupported
raises an error
Gitlab::Graphql::GenericTracing
updates graphql histogram with expected labels
when labkit tracing is enabled
yields with labkit tracing
when labkit tracing is disabled
yields without measurement
Gitlab::Kubernetes::Kubeconfig::Entry::Cluster
#to_h
is expected to eq {:cluster=>{:server=>"url"}, :name=>"name"}
with a certificate
is expected to eq {:cluster=>{:"certificate-authority-data"=>"Y2VydGlmaWNhdGU=", :server=>"url"}, :name=>"name"}
Gitlab::UploadsTransfer
leaves avatar uploads where they are
API::Entities::DesignManagement::Design
has the correct attributes
Presentable
#present
returns a presenter
takes optional attributes
Atlassian::JiraConnect::Serializers::BranchEntity
sets the hash of the branch name as the id
InstanceMetadata::Kas
has InstanceMetadataPolicy as declarative policy
when KAS is enabled
has the correct properties
when KAS is disabled
has the correct properties
Gitlab::Database::SharedModel
using an external connection
overrides the connection for the duration of the block
does not affect connections in other threads
when the block raises an error
re-raises the error, removing the overridden connection
InstanceMetadata
has the correct properties
API::Entities::Clusters::Agent
includes basic fields
Types::Ci::RunnerSetupType
is expected to eq "RunnerSetup"
exposes the expected fields
RuboCop::Cop::Gitlab::HTTParty
when source is a regular module
behaves like registering include offense
registers an offense when the class includes HTTParty
when source is a regular class
behaves like registering include offense
registers an offense when the class includes HTTParty
when HTTParty is called
behaves like registering call offense
registers an offense when the class calls HTTParty
Gitlab::GrapeLogging::Loggers::PerfLogger
.parameters
when no performance data present
is expected not to include {:redis_calls => 1}
when performance data present
is expected to include {:redis_calls => 1}
Gitlab::Ci::Pipeline::Metrics
.pipeline_creation_step_duration_histogram
adds the step to the step duration histogram
RuboCop::Cop::API::GrapeArrayMissingCoerce
adds an offense with a required parameter
adds an offense with an optional parameter
does not add an offense
does not add an offense for unrelated classes
Gitlab::Email::ServiceDeskReceiver
when the email contains a valid email address
finds the service desk key
when the email does not contain a valid email address
raises an error
Environments::AutoStopCronWorker
executes Environments::AutoStopService
BulkImports::Groups::Transformers::SubgroupToEntityTransformer
#transform
transforms subgroups data in entity params
NamespaceSerializer
represents NamespaceBasicEntity entities
Gitlab::SlashCommands::ApplicationHelp
#execute
displays the help section
Types::Packages::PackageDetailsType
includes all the package fields
Cookies serializer initializer
uses JSON serializer by default
uses the unsafe hybrid serializer when the environment variables is set
Types::Packages::PackageFileType
includes package file fields
Gitlab::Database::PostgresqlDatabaseTasks::LoadSchemaVersionsMixin
calls SchemaMigrations load_all
groups/settings/_transfer.html.haml
render
enables the Select parent group dropdown and does not show an alert for a group
Types::SubscriptionType
has the expected fields
Types::Packages::Conan::MetadatumType
includes conan metadatum fields
Packages::BuildInfo
relationships
is expected to belong to package required:
is expected to belong to pipeline required:
Knapsack report was generated. Preview:
"spec/db/schema_spec.rb": 102.09220765400005,
"spec/models/event_spec.rb": 55.60893885600001,
"spec/services/clusters/gcp/finalize_creation_service_spec.rb": 80.72348449600008,
"spec/services/projects/overwrite_project_service_spec.rb": 81.30620384300005,
"spec/uploaders/file_uploader_spec.rb": 35.316686456999946,
"spec/policies/global_policy_spec.rb": 31.34861639899998,
"spec/lib/gitlab/bare_repository_import/importer_spec.rb": 31.632674507000047,
"spec/finders/notes_finder_spec.rb": 35.20646884600001,
"spec/lib/api/helpers_spec.rb": 17.075784921000036,
"spec/lib/gitlab/gpg/commit_spec.rb": 28.560185805999936,
"spec/lib/banzai/pipeline/wiki_pipeline_spec.rb": 16.776506358999995,
"spec/services/packages/nuget/search_service_spec.rb": 17.36506840000004,
"spec/lib/gitlab/ci/config_spec.rb": 33.90244830500001,
"spec/rubocop/cop/gitlab/mark_used_feature_flags_spec.rb": 13.743890655999962,
"spec/models/ci/pipeline_schedule_spec.rb": 21.617320588999974,
"spec/models/resource_label_event_spec.rb": 18.304769189999888,
"spec/models/concerns/routable_spec.rb": 15.6262176729997,
"spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb": 18.52126873500015,
"spec/presenters/commit_status_presenter_spec.rb": 19.7318970419999,
"spec/models/concerns/milestoneable_spec.rb": 21.72593349900012,
"spec/models/concerns/token_authenticatable_spec.rb": 12.736464430999831,
"spec/lib/gitlab/git/tag_spec.rb": 14.455483580999953,
"spec/presenters/merge_request_presenter_spec.rb": 16.27545129300006,
"spec/services/push_event_payload_service_spec.rb": 19.248181699000042,
"spec/serializers/diffs_entity_spec.rb": 21.081990256999916,
"spec/services/ci/pipeline_trigger_service_spec.rb": 15.260257202000048,
"spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb": 2.6350082960000236,
"spec/services/wikis/create_attachment_service_spec.rb": 13.336288546000105,
"spec/lib/gitlab/database/background_migration/batched_migration_spec.rb": 2.474302903999842,
"spec/policies/metrics/dashboard/annotation_policy_spec.rb": 5.728541200999871,
"spec/models/project_snippet_spec.rb": 5.205219255999964,
"spec/services/git/tag_hooks_service_spec.rb": 10.90537399699997,
"spec/helpers/dropdowns_helper_spec.rb": 2.0533175290001964,
"spec/models/upload_spec.rb": 4.4504828239998915,
"spec/lib/gitlab/database/load_balancing/load_balancer_spec.rb": 5.4604480329999205,
"spec/lib/gitlab/alert_management/payload/generic_spec.rb": 1.7130441520000659,
"spec/finders/projects/members/effective_access_level_finder_spec.rb": 7.483078262999925,
"spec/services/snippets/bulk_destroy_service_spec.rb": 9.658874095999863,
"spec/models/commit_collection_spec.rb": 8.39826985700006,
"spec/lib/gitlab/sidekiq_config/worker_router_spec.rb": 2.065978105000113,
"spec/serializers/diff_file_entity_spec.rb": 5.53594885099983,
"spec/models/ci/pending_build_spec.rb": 8.822606037000014,
"spec/serializers/deploy_key_entity_spec.rb": 10.219093255999951,
"spec/policies/clusters/cluster_policy_spec.rb": 10.505917561999922,
"spec/lib/gitlab/hook_data/issuable_builder_spec.rb": 9.425430601000016,
"spec/serializers/ci/trigger_entity_spec.rb": 7.9721726339998895,
"spec/lib/gitlab/github_import/importer/releases_importer_spec.rb": 6.976556993999793,
"spec/lib/gitlab/checks/changes_access_spec.rb": 3.6692000489999828,
"spec/services/groups/autocomplete_service_spec.rb": 10.719495743999914,
"spec/views/projects/commit/branches.html.haml_spec.rb": 6.447509846000003,
"spec/policies/ci/pipeline_policy_spec.rb": 7.594077984000023,
"spec/initializers/direct_upload_support_spec.rb": 3.7668358620001072,
"spec/lib/gitlab/consul/internal_spec.rb": 4.247226662999992,
"spec/lib/gitlab/slash_commands/deploy_spec.rb": 7.726236027000141,
"spec/presenters/snippet_blob_presenter_spec.rb": 3.987590317000013,
"spec/lib/gitlab/sidekiq_cluster_spec.rb": 2.4258819889998904,
"spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb": 6.7930990359998304,
"spec/services/ci/pipeline_artifacts/destroy_all_expired_service_spec.rb": 5.750287607000018,
"spec/services/repositories/housekeeping_service_spec.rb": 3.1255669539998507,
"spec/policies/ci/trigger_policy_spec.rb": 7.017142428999932,
"spec/services/pod_logs/kubernetes_service_spec.rb": 1.987646591999919,
"spec/services/snippets/update_statistics_service_spec.rb": 5.342126086999997,
"spec/lib/gitlab/github_import/representation/diff_note_spec.rb": 1.4945132920001925,
"spec/lib/banzai/filter/autolink_filter_spec.rb": 1.3263276919999498,
"spec/services/ci/play_manual_stage_service_spec.rb": 7.0710194480000155,
"spec/services/metrics/dashboard/update_dashboard_service_spec.rb": 3.4314860439999393,
"spec/models/ci/commit_with_pipeline_spec.rb": 4.29921996500002,
"spec/lib/gitlab/template/issue_template_spec.rb": 4.9685733369999525,
"spec/lib/gitlab/github_import/importer/single_endpoint_issue_notes_importer_spec.rb": 3.97199892499998,
"spec/lib/gitlab/kubernetes/helm/v3/install_command_spec.rb": 0.7620355900000959,
"spec/lib/bulk_imports/clients/http_spec.rb": 1.3080061820000992,
"spec/lib/gitlab/kubernetes/helm/v2/base_command_spec.rb": 0.6788449209998362,
"spec/lib/gitlab/file_hook_spec.rb": 5.059122825999793,
"spec/lib/gitlab/database/background_migration/batched_job_spec.rb": 0.9814637110000604,
"spec/lib/gitlab/gitaly_client/blob_service_spec.rb": 3.6552277749999575,
"spec/lib/gitlab/manifest_import/project_creator_spec.rb": 5.875433882999914,
"spec/helpers/notify_helper_spec.rb": 1.8254694429999745,
"spec/lib/gitlab/ci/reports/security/scanner_spec.rb": 0.847127128000011,
"spec/finders/concerns/finder_with_group_hierarchy_spec.rb": 3.8971602839999377,
"spec/models/incident_management/project_incident_management_setting_spec.rb": 1.0873985880000419,
"spec/graphql/types/user_merge_request_interaction_type_spec.rb": 2.133437506000064,
"spec/lib/gitlab/composer/cache_spec.rb": 2.94407460299999,
"spec/models/jira_connect_installation_spec.rb": 2.7457096919999913,
"spec/views/shared/wikis/_sidebar.html.haml_spec.rb": 1.770887786000003,
"spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb": 1.9085739619999913,
"spec/services/boards/lists/destroy_service_spec.rb": 4.051514975999908,
"spec/policies/clusters/instance_policy_spec.rb": 2.277893859999949,
"spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb": 1.789768542000047,
"spec/services/packages/debian/create_distribution_service_spec.rb": 2.975045985999941,
"spec/graphql/types/base_enum_spec.rb": 0.7385016450000421,
"spec/finders/tags_finder_spec.rb": 1.3420027339998342,
"spec/lib/gitlab/kubernetes_spec.rb": 0.750137592000101,
"spec/lib/banzai/reference_parser/feature_flag_parser_spec.rb": 3.066157341999997,
"spec/services/projects/hashed_storage/migration_service_spec.rb": 3.0909536260001005,
"spec/graphql/types/group_type_spec.rb": 0.6699214019999999,
"spec/lib/gitlab/ci/config/entry/product/matrix_spec.rb": 1.2785125200000493,
"spec/lib/sidebars/groups/menus/group_information_menu_spec.rb": 1.0920694470000853,
"spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb": 0.5802086749999944,
"spec/workers/ci/pipeline_success_unlock_artifacts_worker_spec.rb": 5.250427474999924,
"spec/views/projects/commits/_commit.html.haml_spec.rb": 2.4259792129998914,
"spec/lib/constraints/project_url_constrainer_spec.rb": 2.3425199939999857,
"spec/lib/gitlab/git_access_wiki_spec.rb": 1.2230931830001737,
"spec/policies/terraform/state_version_policy_spec.rb": 2.4902058270001817,
"spec/lib/gitlab/database/load_balancing/host_list_spec.rb": 0.7083664319998206,
"spec/graphql/resolvers/projects/jira_projects_resolver_spec.rb": 1.7871238919999541,
"spec/graphql/mutations/issues/move_spec.rb": 2.5626778779999313,
"spec/lib/gitlab/utils/strong_memoize_spec.rb": 0.6544929660001344,
"spec/lib/gitlab/template_parser/parser_spec.rb": 0.7453373970001849,
"spec/models/authentication_event_spec.rb": 1.7565211339999678,
"spec/lib/gitlab/kubernetes/kubectl_cmd_spec.rb": 0.5324385310000253,
"spec/models/packages/go/module_spec.rb": 1.2554610770000636,
"spec/lib/gitlab/health_checks/redis/rate_limiting_check_spec.rb": 0.6317293660001724,
"spec/finders/packages/helm/packages_finder_spec.rb": 1.2907096940000429,
"spec/lib/gitlab/database/migration_spec.rb": 0.4186233990001256,
"spec/lib/gitlab/import_export/command_line_util_spec.rb": 1.3725728209999488,
"spec/lib/gitlab/local_and_remote_storage_migration/artifact_migrater_spec.rb": 2.464190034000012,
"spec/lib/gitlab/kubernetes/namespace_spec.rb": 0.8819907990000502,
"spec/config/object_store_settings_spec.rb": 0.5275187189999997,
"spec/models/experiment_subject_spec.rb": 1.0664264019999337,
"spec/lib/gitlab/static_site_editor/config/file_config_spec.rb": 0.5838153529998635,
"spec/models/milestone_release_spec.rb": 3.5975682880000477,
"spec/services/projects/hashed_storage/base_attachment_service_spec.rb": 2.4154696419998345,
"spec/helpers/keyset_helper_spec.rb": 2.292097836000039,
"spec/workers/error_tracking_issue_link_worker_spec.rb": 0.907659810000041,
"spec/lib/gitlab/ci/pipeline/chain/seed_block_spec.rb": 3.4561779229998137,
"spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end_spec.rb": 1.2662364129998878,
"spec/services/users/reject_service_spec.rb": 1.7989369930000976,
"spec/lib/gitlab/middleware/basic_health_check_spec.rb": 0.2746384050001325,
"spec/graphql/resolvers/last_commit_resolver_spec.rb": 2.173904522999919,
"spec/lib/api/entities/project_import_status_spec.rb": 1.2906944439998824,
"spec/lib/gitlab/sidekiq_middleware/worker_context/server_spec.rb": 0.3072393390000343,
"spec/rubocop/cop/active_model_errors_direct_manipulation_spec.rb": 0.35997127300015563,
"spec/services/metrics/dashboard/default_embed_service_spec.rb": 1.7073978029998216,
"spec/workers/gitlab/jira_import/stage/import_attachments_worker_spec.rb": 0.9979594110000107,
"spec/lib/gitlab/database/reindexing/reindex_concurrently_spec.rb": 0.7302556510001068,
"spec/lib/gitlab/kubernetes/deployment_spec.rb": 0.5891457860000173,
"spec/lib/gitlab/usage_data_counters/designs_counter_spec.rb": 0.5393083729998125,
"spec/rubocop/cop/rspec/be_success_matcher_spec.rb": 0.6320401059999767,
"spec/workers/gitlab/jira_import/stage/start_import_worker_spec.rb": 1.2202590619999683,
"spec/serializers/service_field_entity_spec.rb": 1.8698412960000041,
"spec/services/projects/count_service_spec.rb": 0.6046825539999645,
"spec/lib/gitlab/ci/config/entry/release/assets/links_spec.rb": 0.3488197480000963,
"spec/lib/gitlab/metrics/dashboard/stages/panel_ids_inserter_spec.rb": 0.5908752369998638,
"spec/finders/uploader_finder_spec.rb": 1.3630718470001284,
"spec/lib/gitlab/ci/status/build/pending_spec.rb": 1.5428589069999816,
"spec/lib/gitlab/phabricator_import/project_creator_spec.rb": 1.7213844289999543,
"spec/lib/gitlab/template/gitignore_template_spec.rb": 0.39899489000003996,
"spec/services/discussions/capture_diff_note_positions_service_spec.rb": 1.5850437659998988,
"spec/lib/gitlab/sourcegraph_spec.rb": 0.5545011899998826,
"spec/policies/release_policy_spec.rb": 1.0563495779999812,
"spec/services/ide/base_config_service_spec.rb": 0.7978116009999212,
"spec/workers/bulk_imports/export_request_worker_spec.rb": 0.749677679000115,
"spec/lib/gitlab/database/reindexing/reindex_action_spec.rb": 0.5598288629998933,
"spec/services/packages/nuget/sync_metadatum_service_spec.rb": 1.9780251049999151,
"spec/lib/gitlab/metrics/dashboard/stages/url_validator_spec.rb": 1.6407155520000742,
"spec/lib/gitlab/middleware/multipart/handler_spec.rb": 0.46021881799993025,
"spec/lib/gitlab/diff/position_collection_spec.rb": 0.4733327039998585,
"spec/workers/create_pipeline_worker_spec.rb": 1.1700266200000442,
"spec/lib/gitlab/ci/pipeline/chain/helpers_spec.rb": 0.8943516950000685,
"spec/graphql/resolvers/users/groups_resolver_spec.rb": 1.4007524230000854,
"spec/serializers/diff_file_metadata_entity_spec.rb": 2.279353465999975,
"spec/services/packages/helm/extract_file_metadata_service_spec.rb": 0.5529407779999929,
"spec/lib/gitlab/ci/reports/security/finding_signature_spec.rb": 0.25984295800003565,
"spec/graphql/types/packages/package_sort_enum_spec.rb": 0.17518414099981783,
"spec/graphql/resolvers/merge_request_pipelines_resolver_spec.rb": 2.475641481999901,
"spec/presenters/award_emoji_presenter_spec.rb": 0.4949902370001382,
"spec/lib/gitlab/database/migrations/observers/total_database_size_change_spec.rb": 0.21444099199993616,
"spec/services/applications/create_service_spec.rb": 0.5746162939999522,
"spec/lib/serializers/symbolized_json_spec.rb": 0.24637631500013413,
"spec/workers/namespaces/onboarding_pipeline_created_worker_spec.rb": 0.500854014999959,
"spec/serializers/evidences/release_entity_spec.rb": 0.6103298600000926,
"spec/serializers/cluster_serializer_spec.rb": 1.632813977000069,
"spec/workers/propagate_integration_inherit_worker_spec.rb": 1.7805665349999344,
"spec/lib/gitlab/database/partitioning/detached_partition_dropper_spec.rb": 0.8191333639999812,
"spec/lib/gitlab/string_range_marker_spec.rb": 0.29490443600002436,
"spec/lib/banzai/filter/image_link_filter_spec.rb": 0.3569228100000146,
"spec/serializers/accessibility_reports_comparer_entity_spec.rb": 0.2561467250000078,
"spec/models/user_custom_attribute_spec.rb": 0.45278544300003887,
"spec/workers/remote_mirror_notification_worker_spec.rb": 0.5934829949999312,
"spec/graphql/mutations/ci/job_token_scope/add_project_spec.rb": 2.0354941129999133,
"spec/graphql/types/error_tracking/sentry_detailed_error_type_spec.rb": 0.21678882599985627,
"spec/services/webauthn/register_service_spec.rb": 0.6587347820000105,
"spec/validators/namespace_path_validator_spec.rb": 0.38766318599982696,
"spec/lib/gitlab/import_export/json/ndjson_writer_spec.rb": 0.2564283950000572,
"spec/lib/system_check/app/hashed_storage_enabled_check_spec.rb": 0.35400868600004287,
"spec/models/blob_viewer/license_spec.rb": 1.237983344999975,
"spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb": 0.4380833029999849,
"spec/workers/authorized_project_update/user_refresh_over_user_range_worker_spec.rb": 0.7091387979999126,
"spec/graphql/mutations/alert_management/http_integration/reset_token_spec.rb": 0.9607998530000259,
"spec/graphql/types/tree/tree_entry_type_spec.rb": 0.17423723299998528,
"spec/lib/api/validations/validators/project_portable_spec.rb": 0.2564638249998552,
"spec/presenters/packages/nuget/package_metadata_presenter_spec.rb": 0.8902464669999972,
"spec/lib/api/validations/validators/array_none_any_spec.rb": 0.15748145699990346,
"spec/graphql/types/tree/submodule_type_spec.rb": 0.17696383799989235,
"spec/tooling/lib/tooling/test_map_generator_spec.rb": 0.2586657809999906,
"spec/models/dependency_proxy/image_ttl_group_policy_spec.rb": 0.6609709469998961,
"spec/lib/gitlab/usage/metrics/instrumentations/count_users_associating_milestones_to_releases_metric_spec.rb": 1.289494520000062,
"spec/lib/gitlab/github_import/importer/pull_request_merged_by_importer_spec.rb": 1.232630945999972,
"spec/lib/gitlab/cross_project_access_spec.rb": 0.3107187640000575,
"spec/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event_spec.rb": 0.23264145400003144,
"spec/initializers/settings_spec.rb": 0.2736198800000693,
"spec/services/packages/debian/find_or_create_incoming_service_spec.rb": 0.7372854010000083,
"spec/workers/dependency_proxy/cleanup_blob_worker_spec.rb": 0.48694039299994074,
"spec/tooling/danger/specs_spec.rb": 0.4125046149999889,
"spec/views/profiles/show.html.haml_spec.rb": 1.1752391339998667,
"spec/services/members/mailgun/process_webhook_service_spec.rb": 0.7241740770000433,
"spec/lib/gitlab/ci/status/success_spec.rb": 0.28065796499981843,
"spec/lib/gitlab/import_export/design_repo_restorer_spec.rb": 0.8032964349999929,
"spec/graphql/types/ci/config/job_restriction_type_spec.rb": 0.18969449199994415,
"spec/lib/gitlab/cycle_analytics/updater_spec.rb": 0.7721276689999286,
"spec/finders/repositories/branch_names_finder_spec.rb": 0.9233952900001441,
"spec/serializers/build_artifact_entity_spec.rb": 0.6251990099999603,
"spec/lib/gitlab/error_tracking/processor/grpc_error_processor_spec.rb": 0.4752841870001703,
"spec/serializers/import/bitbucket_provider_repo_entity_spec.rb": 0.5196603470001264,
"spec/serializers/import/gitlab_provider_repo_entity_spec.rb": 0.3965758179999739,
"spec/lib/gitlab/database/load_balancing/srv_resolver_spec.rb": 0.6294533510001656,
"spec/graphql/types/namespace_type_spec.rb": 0.26190001400004803,
"spec/services/webauthn/authenticate_service_spec.rb": 0.48008286799995403,
"spec/services/auth/dependency_proxy_authentication_service_spec.rb": 0.45010249900019517,
"spec/serializers/merge_request_current_user_entity_spec.rb": 0.731437231999962,
"spec/lib/banzai/pipeline/email_pipeline_spec.rb": 0.20727061599995977,
"spec/helpers/container_registry_helper_spec.rb": 0.38328555599991887,
"spec/models/bulk_imports/file_transfer_spec.rb": 0.39239936599983594,
"spec/lib/gitlab/graphql/generic_tracing_spec.rb": 0.18224149699994996,
"spec/lib/gitlab/kubernetes/kubeconfig/entry/cluster_spec.rb": 0.13429637600006572,
"spec/lib/gitlab/uploads_transfer_spec.rb": 0.5190173980001873,
"spec/lib/api/entities/design_management/design_spec.rb": 0.461226305000082,
"spec/models/concerns/presentable_spec.rb": 0.3211249430000862,
"spec/lib/atlassian/jira_connect/serializers/branch_entity_spec.rb": 0.5213101020001432,
"spec/models/instance_metadata/kas_spec.rb": 0.2526816530000815,
"spec/lib/gitlab/database/shared_model_spec.rb": 0.35283889799984536,
"spec/models/instance_metadata_spec.rb": 0.13992362399994818,
"spec/lib/api/entities/clusters/agent_spec.rb": 0.45326314199996887,
"spec/graphql/types/ci/runner_setup_type_spec.rb": 0.21756007500016494,
"spec/rubocop/cop/gitlab/httparty_spec.rb": 0.23345946199992795,
"spec/lib/gitlab/grape_logging/loggers/perf_logger_spec.rb": 0.17175892799991743,
"spec/lib/gitlab/ci/pipeline/metrics_spec.rb": 0.15441168399979688,
"spec/rubocop/cop/api/grape_array_missing_coerce_spec.rb": 0.24131329700003334,
"spec/lib/gitlab/email/service_desk_receiver_spec.rb": 0.24591167600010522,
"spec/workers/environments/auto_stop_cron_worker_spec.rb": 0.10817224800007352,
"spec/lib/bulk_imports/groups/transformers/subgroup_to_entity_transformer_spec.rb": 0.24842757100009294,
"spec/serializers/namespace_serializer_spec.rb": 0.193248254999844,
"spec/lib/gitlab/slash_commands/application_help_spec.rb": 0.17582371999992574,
"spec/graphql/types/packages/package_details_type_spec.rb": 0.12047103300005801,
"spec/initializers/cookies_serializer_spec.rb": 0.22758923400010644,
"spec/graphql/types/packages/package_file_type_spec.rb": 0.11188076100006583,
"spec/lib/gitlab/database/postgresql_database_tasks/load_schema_versions_mixin_spec.rb": 0.1144772360000843,
"spec/views/groups/settings/_transfer.html.haml_spec.rb": 0.40844717400000263,
"spec/graphql/types/subscription_type_spec.rb": 0.1776649159999124,
"spec/graphql/types/packages/conan/metadatum_type_spec.rb": 0.20692770599998767,
"spec/models/packages/build_info_spec.rb": 0.22993785899984687
Knapsack global time execution for tests: 20m 32s
Pending: (Failures listed here are expected and do not affect your suite's status)
1) FileUploader legacy storage behaves like builds correct legacy storage paths #cache_dir behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
2) FileUploader legacy storage behaves like builds correct legacy storage paths #work_dir behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
3) FileUploader legacy storage behaves like builds correct legacy storage paths #relative_path is relative
# Path not set, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:40
4) FileUploader legacy storage behaves like builds correct legacy storage paths .base_dir behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
5) FileUploader legacy storage uses hashed storage when rolled out attachments #cache_dir behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
6) FileUploader legacy storage uses hashed storage when rolled out attachments #work_dir behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
7) FileUploader legacy storage uses hashed storage when rolled out attachments #relative_path is relative
# Path not set, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:40
8) FileUploader legacy storage uses hashed storage when rolled out attachments .absolute_path behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
9) FileUploader legacy storage uses hashed storage when rolled out attachments .base_dir behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
10) FileUploader legacy storage uses hashed storage when only repositories are rolled out behaves like builds correct legacy storage paths #cache_dir behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
11) FileUploader legacy storage uses hashed storage when only repositories are rolled out behaves like builds correct legacy storage paths #work_dir behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
12) FileUploader legacy storage uses hashed storage when only repositories are rolled out behaves like builds correct legacy storage paths #relative_path is relative
# Path not set, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:40
13) FileUploader legacy storage uses hashed storage when only repositories are rolled out behaves like builds correct legacy storage paths .base_dir behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
14) FileUploader object store is remote behaves like builds correct paths #cache_dir behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
15) FileUploader object store is remote behaves like builds correct paths #work_dir behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
16) FileUploader object store is remote behaves like builds correct paths #relative_path is relative
# Path not set, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:40
17) FileUploader object store is remote behaves like builds correct paths .absolute_path behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
18) FileUploader object store is remote behaves like builds correct paths .base_dir behaves like matches the method pattern
# No pattern provided, skipping.
# ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8
Finished in 20 minutes 35 seconds (files took 1 minute 14.9 seconds to load)
5369 examples, 0 failures, 18 pending
Wed 13 Oct 2021 06:43:39 PM UTC
Saving cache for successful job
Not uploading cache ruby-gems-v1-4 due to policy
Not uploading cache gitaly-ruby-gems-v1-4 due to policy
Uploading artifacts for successful job
Uploading artifacts...
coverage/: found 5 matching files and directories
WARNING: crystalball/: no matching files
deprecations/: found 5 matching files and directories
knapsack/: found 3 matching files and directories
rspec_flaky/: found 4 matching files and directories
rspec_profiling/: found 1 matching files and directories
WARNING: tmp/capybara/: no matching files
tmp/memory_test/: found 2 matching files and directories
log/*.log: found 18 matching files and directories
Uploading artifacts as "archive" to coordinator... ok id=1677157252 responseStatus=201 Created token=vswnfhes
Uploading artifacts...
junit_rspec.xml: found 1 matching files and directories
Uploading artifacts as "junit" to coordinator... ok id=1677157252 responseStatus=201 Created token=vswnfhes
Cleaning up project directory and file based variables
Job succeeded