rspec unit pg14 25/28
Passed Started
by
@leipert
Lukas Eipert
1Running with gitlab-runner 16.1.0~beta.59.g83c66823 (83c66823)2 on green-4.private.runners-manager.gitlab.com/gitlab.com/gitlab-org rpvz2FF9, system ID: s_d704414ba02a3 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.16-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...10Using docker image sha256:2e09e9db92541ed81b1c00f1d5186f8c262d8b84e8d1755676ea4b25614f30c4 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:afc7bd7a60824044709543a6a700385e412d750d9ab4fc72b427e335e1d0f3ec ...11WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.12WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.13Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...14Authenticating with credentials from job payload (GitLab Registry)15Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...16Using docker image sha256:a9a90ece30d9630d694ab1997cd103ea8ec729789451b983a75c7b58b0062d45 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:7ef36177d5d0bc554fbb63d8210ae751bcc538bea7905b51d078d9ab90a755fa ...17Starting service redis:6.2-alpine ...18Pulling docker image redis:6.2-alpine ...19Using docker image sha256:b9cad9a5aff99063a48d14d26e9f31dcf1768b8e65c4687a8e3bc995c02749f3 for redis:6.2-alpine with digest redis@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3 ...20Waiting for services to be up and running (timeout 30 seconds)...21Authenticating with credentials from job payload (GitLab Registry)22Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.16-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 ...23Using docker image sha256:f47b23bf3b9e02a2837ddb6fe9a0b728c270e7a7d815dc582fd17281be34f20d for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.16-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.16-postgresql-14@sha256:4db9bc427d7eb1bd075d76b4e5e3e59eb0d96c2e788e6275e628f0026dd30039 ...25Running on runner-rpvz2ff9-project-278964-concurrent-0 via runner-rpvz2ff9-private-1687788791-19168717...27Fetching changes with git depth set to 20...28Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/29Created fresh repository.30remote: Enumerating objects: 126566, done. 31remote: Counting objects: 100% (126566/126566), done. 32remote: Compressing objects: 100% (87596/87596), done. 33remote: Total 126566 (delta 50477), reused 83712 (delta 34367), pack-reused 0 34Receiving objects: 100% (126566/126566), 114.65 MiB | 30.70 MiB/s, done.35Resolving deltas: 100% (50477/50477), done.37 * [new ref] refs/pipelines/912039887 -> refs/pipelines/91203988738 * [new branch] master -> origin/master39Checking out 04f47f21 as detached HEAD (ref is master)...40Skipping Git submodules setup41$ git remote set-url origin "${CI_REPOSITORY_URL}"43Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...44Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bullseye-ruby-3.0-16 45Successfully extracted cache47Downloading artifacts for compile-test-assets (4541357536)...48Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4541357536 responseStatus=200 OK token=64_qMZBy49Downloading artifacts for retrieve-tests-metadata (4541357542)...50Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4541357542 responseStatus=200 OK token=64_qMZBy51Downloading artifacts for setup-test-env (4541357540)...52Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4541357540 responseStatus=200 OK token=64_qMZBy54Using docker image sha256:f47b23bf3b9e02a2837ddb6fe9a0b728c270e7a7d815dc582fd17281be34f20d for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.16-postgresql-14:rubygems-3.4-git-2.36-lfs-2.9-chrome-113-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.20-rust-1.65-node-18.16-postgresql-14@sha256:4db9bc427d7eb1bd075d76b4e5e3e59eb0d96c2e788e6275e628f0026dd30039 ...55$ echo $FOSS_ONLY56$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb57$ export GOPATH=$CI_PROJECT_DIR/.go58$ mkdir -p $GOPATH59$ source scripts/utils.sh60$ source scripts/prepare_build.sh719Using decomposed database config (config/database.yml.decomposed-postgresql)720Geo DB won't be set up.721Embedding DB won't be set up.733$ source ./scripts/rspec_helpers.sh734$ run_timed_command "gem install knapsack --no-document"735$ gem install knapsack --no-document736Successfully installed knapsack-4.0.07371 gem installed738==> 'gem install knapsack --no-document' succeeded in 1 seconds.739$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"741$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"746$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"747$ rspec_paralellized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~level:background_migration"748SKIP_FLAKY_TESTS_AUTOMATICALLY: 749RETRY_FAILED_TESTS_IN_NEW_PROCESS: true750KNAPSACK_GENERATE_REPORT: true751FLAKY_RSPEC_GENERATE_REPORT: true752KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb753KNAPSACK_LOG_LEVEL: debug754KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg14_25_28_report.json755FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json756FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg14_25_28_report.json757NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg14_25_28_report.json758SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests_rspec_unit_pg14_25_28.txt759CRYSTALBALL: 760RSPEC_TESTS_MAPPING_ENABLED: 761RSPEC_TESTS_FILTER_FILE: 762Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-4541357788.json --format RspecJunitFormatter --out rspec/rspec-4541357788.xml --fail-fast=20 --tag ~quarantine --tag ~level:background_migration -- spec/services/issues/update_service_spec.rb spec/services/members/destroy_service_spec.rb spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb spec/lib/banzai/filter/repository_link_filter_spec.rb spec/workers/packages/debian/generate_distribution_worker_spec.rb spec/models/operations/feature_flags/strategy_spec.rb spec/services/event_create_service_spec.rb spec/lib/gitlab/ci/templates/Jobs/deploy_gitlab_ci_yaml_spec.rb spec/services/packages/maven/metadata/create_versions_xml_service_spec.rb spec/lib/gitlab/background_migration/destroy_invalid_group_members_spec.rb spec/finders/releases/group_releases_finder_spec.rb spec/services/ci/reset_skipped_jobs_service_spec.rb spec/models/broadcast_message_spec.rb spec/workers/emails_on_push_worker_spec.rb spec/lib/container_registry/gitlab_api_client_spec.rb spec/models/integrations/bamboo_spec.rb spec/services/merge_requests/approval_service_spec.rb spec/models/integrations/hangouts_chat_spec.rb spec/models/concerns/integrations/has_data_fields_spec.rb spec/models/ability_spec.rb spec/services/system_notes/time_tracking_service_spec.rb spec/models/ci/build_dependencies_spec.rb spec/models/concerns/project_api_compatibility_spec.rb spec/services/projects/import_export/export_service_spec.rb spec/workers/pages/invalidate_domain_cache_worker_spec.rb spec/serializers/ci/pipeline_entity_spec.rb spec/models/integrations/unify_circuit_spec.rb spec/lib/gitlab/utils_spec.rb spec/lib/banzai/filter/references/alert_reference_filter_spec.rb spec/lib/gitlab/cleanup/personal_access_tokens_spec.rb spec/lib/gitlab/relative_positioning/range_spec.rb spec/models/bulk_imports/entity_spec.rb spec/models/ci/job_token/scope_spec.rb spec/routing/git_http_routing_spec.rb spec/views/notify/pipeline_fixed_email.html.haml_spec.rb spec/graphql/mutations/issues/set_assignees_spec.rb spec/lib/gitlab/changelog/config_spec.rb spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb spec/lib/gitlab/popen_spec.rb spec/lib/gitlab/observability_spec.rb spec/lib/gitlab/alert_management/payload/generic_spec.rb spec/lib/gitlab/i18n/po_linter_spec.rb spec/tooling/quality/test_level_spec.rb spec/lib/gitlab/deploy_key_access_spec.rb spec/services/notes/copy_service_spec.rb spec/services/metrics/dashboard/annotations/delete_service_spec.rb spec/models/prometheus_alert_spec.rb spec/services/projects/auto_devops/disable_service_spec.rb spec/models/concerns/ci/artifactable_spec.rb spec/views/projects/edit.html.haml_spec.rb spec/lib/gitlab/gitaly_client/repository_service_spec.rb spec/lib/gitlab/ci/status/build/cancelable_spec.rb spec/workers/projects/post_creation_worker_spec.rb spec/lib/google_api/cloud_platform/client_spec.rb spec/services/ci/expire_pipeline_cache_service_spec.rb spec/tasks/rubocop_rake_spec.rb spec/lib/event_filter_spec.rb spec/models/ci_platform_metric_spec.rb spec/serializers/suggestion_entity_spec.rb spec/lib/gitlab/slash_commands/issue_move_spec.rb spec/services/ci/runners/set_runner_associated_projects_service_spec.rb spec/services/git/base_hooks_service_spec.rb spec/models/analytics/cycle_analytics/merge_request_stage_event_spec.rb spec/services/jira_connect_subscriptions/create_service_spec.rb spec/lib/bulk_imports/projects/pipelines/references_pipeline_spec.rb spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_last_build_started_spec.rb spec/services/ci/test_failure_history_service_spec.rb spec/services/merge_requests/delete_non_latest_diffs_service_spec.rb spec/serializers/merge_request_metrics_helper_spec.rb spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb spec/services/feature_flags/update_service_spec.rb spec/services/packages/composer/version_parser_service_spec.rb spec/lib/gitlab/github_import/representation/note_spec.rb spec/lib/gitlab/hook_data/user_builder_spec.rb spec/services/merge_requests/migrate_external_diffs_service_spec.rb spec/graphql/resolvers/project_milestones_resolver_spec.rb spec/lib/sidebars/projects/menus/merge_requests_menu_spec.rb spec/lib/gitlab/bitbucket_server_import/user_finder_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb spec/finders/concerns/finder_methods_spec.rb spec/lib/gitlab/sidekiq_queue_spec.rb spec/lib/gitlab/ci/config/entry/image_spec.rb spec/workers/gitlab/jira_import/import_issue_worker_spec.rb spec/views/projects/empty.html.haml_spec.rb spec/lib/banzai/filter/references/reference_cache_spec.rb spec/lib/gitlab/file_finder_spec.rb spec/db/production/settings_spec.rb spec/services/packages/debian/update_distribution_service_spec.rb spec/lib/grafana/time_window_spec.rb spec/services/packages/cleanup/update_policy_service_spec.rb spec/graphql/resolvers/group_members_resolver_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_last_build_finished_spec.rb spec/lib/gitlab/redis/hll_spec.rb spec/models/packages/debian/project_component_spec.rb spec/lib/gitlab/ci/status/bridge/common_spec.rb spec/services/users/reject_service_spec.rb spec/finders/autocomplete/routes_finder_spec.rb spec/tooling/lib/tooling/mappings/js_to_system_specs_mappings_spec.rb spec/lib/gitlab/metrics/global_search_slis_spec.rb spec/serializers/test_report_summary_entity_spec.rb spec/lib/banzai/filter/front_matter_filter_spec.rb spec/tasks/gitlab/x509/update_rake_spec.rb spec/helpers/ci/status_helper_spec.rb spec/models/integrations/asana_spec.rb spec/services/boards/lists/destroy_service_spec.rb spec/models/concerns/database_event_tracking_spec.rb spec/models/ci/catalog/resource_spec.rb spec/serializers/ci/job_serializer_spec.rb spec/presenters/ci/pipeline_artifacts/code_coverage_presenter_spec.rb spec/lib/gitlab/auth/o_auth/provider_spec.rb spec/lib/gitlab/github_import/importer/issues_importer_spec.rb spec/helpers/operations_helper_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_created_spec.rb spec/helpers/feature_flags_helper_spec.rb spec/lib/banzai/reference_parser/feature_flag_parser_spec.rb spec/presenters/ci/variable_presenter_spec.rb spec/workers/import_issues_csv_worker_spec.rb spec/workers/authorized_project_update/user_refresh_from_replica_worker_spec.rb spec/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver_spec.rb spec/services/ci/job_artifacts/destroy_associations_service_spec.rb spec/graphql/types/customer_relations/contact_sort_enum_spec.rb spec/rubocop/cop/graphql/graphql_name_position_spec.rb spec/workers/clusters/applications/deactivate_integration_worker_spec.rb spec/services/packages/create_dependency_service_spec.rb spec/tasks/admin_mode_spec.rb spec/lib/gitlab/database/query_analyzers/ci/partitioning_routing_analyzer_spec.rb spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb spec/services/system_notes/incidents_service_spec.rb spec/serializers/review_app_setup_entity_spec.rb spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb spec/models/packages/composer/metadatum_spec.rb spec/services/personal_access_tokens/last_used_service_spec.rb spec/rubocop/cop/gitlab/module_with_instance_variables_spec.rb spec/workers/projects/schedule_refresh_build_artifacts_size_statistics_worker_spec.rb spec/validators/array_members_validator_spec.rb spec/lib/gitlab/github_import/page_counter_spec.rb spec/services/google_cloud/get_cloudsql_instances_service_spec.rb spec/workers/integrations/execute_worker_spec.rb spec/lib/sidebars/groups/super_sidebar_menus/secure_menu_spec.rb spec/lib/gitlab/kubernetes/node_spec.rb spec/lib/gitlab/rugged_instrumentation_spec.rb spec/workers/repository_check/clear_worker_spec.rb spec/services/milestones/update_service_spec.rb spec/graphql/resolvers/projects/services_resolver_spec.rb spec/policies/system_hook_policy_spec.rb spec/lib/atlassian/jira_connect/serializers/base_entity_spec.rb spec/serializers/codequality_degradation_entity_spec.rb spec/models/concerns/ignorable_columns_spec.rb spec/services/ide/terminal_config_service_spec.rb spec/models/error_tracking/client_key_spec.rb spec/lib/gitlab/database/schema_validation/inconsistency_spec.rb spec/services/events/destroy_service_spec.rb spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb spec/models/badges/group_badge_spec.rb spec/workers/jira_connect/retry_request_worker_spec.rb spec/services/ci/create_pipeline_service/custom_yaml_tags_spec.rb spec/services/alert_management/http_integrations/update_service_spec.rb spec/serializers/accessibility_error_entity_spec.rb spec/lib/gitlab/cleanup/remote_uploads_spec.rb spec/contracts/provider_specs/helpers/provider/contract_source_helper_spec.rb spec/workers/packages/cleanup_package_file_worker_spec.rb spec/graphql/types/work_items/widgets/description_input_type_spec.rb spec/lib/gitlab/github_import/importer/attachments/notes_importer_spec.rb spec/lib/gitlab/grape_logging/loggers/perf_logger_spec.rb spec/lib/gitlab/pages/cache_control_spec.rb spec/serializers/ci/downloadable_artifact_entity_spec.rb spec/lib/gitlab/auth/result_spec.rb spec/services/ci/build_cancel_service_spec.rb spec/lib/gitlab/experiment/rollout/feature_spec.rb spec/lib/gitlab/ci/status/build/skipped_spec.rb spec/models/list_user_preference_spec.rb spec/lib/gitlab/cache/json_cache_spec.rb spec/graphql/resolvers/error_tracking/sentry_detailed_error_resolver_spec.rb spec/lib/sidebars/user_settings/menus/account_menu_spec.rb spec/services/customer_relations/contacts/create_service_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_projects_with_ml_experiments_metric_spec.rb spec/views/projects/commits/show.html.haml_spec.rb spec/lib/gitlab/ci/config/yaml/loader_spec.rb spec/lib/gitlab/config/entry/validators/nested_array_helpers_spec.rb spec/workers/user_status_cleanup/batch_worker_spec.rb spec/workers/environments/canary_ingress/update_worker_spec.rb spec/lib/gitlab/safe_request_purger_spec.rb spec/models/work_items/widgets/start_and_due_date_spec.rb spec/rubocop/cop/gitlab/doc_url_spec.rb spec/models/blob_viewer/go_mod_spec.rb spec/services/system_notes/base_service_spec.rb spec/lib/gitlab/health_checks/master_check_spec.rb spec/models/term_agreement_spec.rb spec/workers/onboarding/progress_worker_spec.rb spec/config/smime_signature_settings_spec.rb spec/lib/gitlab/import_export/json/ndjson_writer_spec.rb spec/models/exported_protected_branch_spec.rb spec/services/webauthn/authenticate_service_spec.rb spec/lib/gitlab/exceptions_app_spec.rb spec/views/shared/milestones/_issuables.html.haml_spec.rb spec/lib/gitlab/config/entry/validatable_spec.rb spec/helpers/projects/cluster_agents_helper_spec.rb spec/tooling/lib/tooling/test_map_packer_spec.rb spec/serializers/feature_flags_client_serializer_spec.rb spec/services/users/repair_ldap_blocked_service_spec.rb spec/lib/banzai/filter/jira_import/adf_to_commonmark_filter_spec.rb spec/rubocop/cop/group_public_or_visible_to_user_spec.rb spec/lib/api/entities/bulk_imports/entity_failure_spec.rb spec/lib/gitlab/pagination/offset_header_builder_spec.rb spec/workers/gitlab/github_import/attachments/import_issue_worker_spec.rb spec/graphql/types/error_tracking/sentry_error_stack_trace_type_spec.rb spec/finders/analytics/cycle_analytics/stage_finder_spec.rb spec/lib/gitlab/database/migration_helpers/announce_database_spec.rb spec/models/concerns/database_reflection_spec.rb spec/validators/future_date_validator_spec.rb spec/serializers/integrations/harbor_serializers/artifact_entity_spec.rb spec/lib/gitlab/console_spec.rb spec/graphql/types/ci_configuration/sast/options_entity_spec.rb spec/workers/members_destroyer/unassign_issuables_worker_spec.rb spec/graphql/types/work_items/widget_type_enum_spec.rb spec/lib/gitlab/diff/inline_diff_spec.rb spec/views/help/drawers.html.haml_spec.rb spec/lib/backup/task_spec.rb spec/routing/web_ide_routing_spec.rb spec/scripts/api/create_merge_request_note_spec.rb spec/graphql/types/jira_import_type_spec.rb spec/serializers/personal_access_token_entity_spec.rb spec/lib/gitlab/patch/database_config_spec.rb spec/services/users/validate_push_otp_service_spec.rb spec/lib/gitlab/database/async_constraints/validators_spec.rb spec/lib/sidebars/groups/super_sidebar_menus/analyze_menu_spec.rb spec/serializers/access_token_entity_base_spec.rb spec/graphql/types/project_statistics_redirect_type_spec.rb spec/helpers/terms_helper_spec.rb spec/lib/gitlab/email/hook/delivery_metrics_observer_spec.rb spec/lib/gitlab/changes_list_spec.rb spec/serializers/evidences/release_serializer_spec.rb spec/workers/todos_destroyer/group_private_worker_spec.rb spec/lib/gitlab/github_import/importer/attachments/base_importer_spec.rb spec/graphql/types/permission_types/ci/runner_spec.rb spec/graphql/types/packages/nuget/dependency_link_metdatum_type_spec.rb spec/lib/forever_spec.rb spec/lib/gitlab/kubernetes/pod_cmd_spec.rbKnapsack report generator started!763Run options: exclude {:quarantine=>true, :level=>"background_migration"}764Test environment set up in 0.80910948 seconds765Issues::UpdateService766 execute767 behaves like issuable update service updating last_edited_at values768 when updating the title of the issuable769 does not update last_edited values770 when updating the description of the issuable771 updates last_edited values772 valid params773DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)774 updates the issue with the given params775 refreshes the number of open issues when the issue is made confidential776 enqueues ConfidentialIssueWorker when an issue is made confidential777 does not enqueue ConfidentialIssueWorker when an issue is made non confidential778 updates open issue counter for assignees when issue is reassigned779DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)780 rebalances if needed on the left781DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)782 rebalances if needed on the right783 verifies the number of queries784 when an unauthorized project_id is provided785DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)786 ignores the project_id param and does not update the issue's project787 behaves like update service that triggers GraphQL work_item_updated subscription788DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)789 triggers graphql subscription workItemUpdated790 when updating milestone791 updates issue milestone when passing `milestone` param792 triggers 'issuableMilestoneUpdated'793 when milestone remains unchanged794 does not trigger 'issuableMilestoneUpdated'795 when sentry identifier is given796DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)797 assigns the sentry error798 user is a guest799 does not assign the sentry error800 when issue type is not incident801 behaves like not an incident issue802DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)803 has not incident as issue type804 when confidentiality is changed805 behaves like does not track incident management event806DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)807 does not track the event808 when issue type is incident809DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)810 does not add an incident label811 behaves like incident issue812DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)813 has incident as issue type814 when confidentiality is changed815 behaves like an incident management tracked event816 .track_event817DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)818 tracks the event using redis819 behaves like Snowplow event tracking with RedisHLL context820 behaves like Snowplow event tracking821DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)822 is emitted823 changing issue_type824 from issue to incident825 creates system note about issue type826 creates an escalation status827 behaves like incident issue828DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)829 has incident as issue type830 for an issue with multiple labels831 does not add an `incident` label if one already exist832 from incident to issue833 changed from an incident to an issue type834 for an incident with multiple labels835 does not remove an `incident` label if one exists on the incident836 filtering the incident label837 does not add an incident label id to remove_label_ids for it to be removed838 from issue to restricted issue types839 without sufficient permissions840 does nothing to the labels841 when changing relative position842DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)843 sorts issues as specified by parameters844 when block_issue_positioning flag is enabled845 raises error846 when moving issue between issues from different projects847DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)848 sorts issues as specified by parameters849 when current user cannot admin issues in the project850 filters out params that cannot be set without the :admin_issue permission851 with background jobs processed852DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)853 sends email to user2 about assign of new issue and email to user3 about issue unassignment854DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)855 creates system note about issue reassign856DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)857 creates a resource label event858DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)859 creates system note about title change860DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)861 creates system note about discussion lock862 after_save callback to store_mentions863 when mentionable attributes change864 saves mentions865 when mentionable attributes do not change866 does not call store_mentions867 when save fails868 does not call store_mentions869 when description changed870 creates system note about description change871 triggers GraphQL description updated subscription872 when description is not changed873 does not trigger GraphQL description updated subscription874 when issue turns confidential875 creates system note about confidentiality change876 executes confidential issue hooks877 does not update assignee_id with unauthorized users878 todos879 when the title change880 marks pending todos as done881 does not create any new todos882 when the description change883 marks todos as done884 creates only 1 new todo885 when is reassigned886 marks previous assignee todos as done887 creates a todo for new assignee888 when a new assignee added889 creates only 1 new todo890 creates a todo for new assignee891 issue is incident type892 behaves like an incident management tracked event893 .track_event894 tracks the event using redis895 behaves like Snowplow event tracking with RedisHLL context896 behaves like Snowplow event tracking897 is emitted898 when the milestone is removed899 sends notifications for subscribers of changed milestone900 clears milestone issue counters cache901 when the milestone is assigned902 marks todos as done903 sends notifications for subscribers of changed milestone904 deletes issue counters cache for the milestone905 when the milestone is changed906 deletes issue counters cache for both milestones907 when the labels change908 marks todos as done909 updates updated_at910 when the issue is relabeled911 sends notifications for subscribers of newly added labels912 when issue has the `label` label913 does not send notifications for existing labels914 does not send notifications for removed labels915 when issue has tasks916 is expected to eq true917 behaves like updating a single task918 usage counters919 update as expected920 when a task is marked as completed921 creates system note about task status change922 when a task is marked as incomplete923 creates system note about task status change924 when the task position has been modified925 raises an exception926 when the content changes but not task line number927 creates system note about task status change928 when tasks are marked as completed929 does not check for spam on task status change930 does not pass old_associations to the after_update method931 creates system note about task status change932 when tasks are marked as incomplete933 creates system note about task status change934 when tasks position has been modified935 does not create a system note for the task936 when a Task list with a completed item is totally replaced937 does not create a system note referencing the position the old item938 does not generate a new note at all939 updating labels940 when add_label_ids and label_ids are passed941 replaces the labels with the ones in label_ids and adds those in add_label_ids942 when remove_label_ids and label_ids are passed943 replaces the labels with the ones in label_ids and removes those in remove_label_ids944 when add_label_ids and remove_label_ids are passed945 adds the passed labels946 removes the passed labels947 when same id is passed as add_label_ids and remove_label_ids948 for a label assigned to an issue949 removes the label950 for a label not assigned to an issue951 does not add the label952 when duplicate label titles are given953 assigns the label once954 updating dates955 when due_date is updated956 behaves like issue update service that triggers date updates957DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)958 triggers graphql date updated subscription959 when start_date is updated960 behaves like issue update service that triggers date updates961DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)962 triggers graphql date updated subscription963 when no date is updated964 behaves like issue update service that does not trigger date updates965 does not trigger date updated subscriptions966 when update is not successful but date is provided967 behaves like issue update service that does not trigger date updates968 does not trigger date updated subscriptions969 updating asssignee_id970 changes assignee971 does not update assignee when assignee_id is invalid972 unassigns assignee when user id is 0973 does not update assignee_id when user cannot read issue974 tracks the assignment events975 when issuable feature is private976 does not update with unauthorized assignee when project is Internal977 does not update with unauthorized assignee when project is Public978 updating mentions979 when mentioning a different user980 in title981 emails only the newly-mentioned user982 in description983 emails only the newly-mentioned user984 when mentioning a user and a group with access to985 when group is public986 behaves like updating attribute with allowed mentions987 emails group members988 behaves like updating attribute with allowed mentions989 emails group members990 behaves like updating attribute with existing group mention991 creates todos for only newly mentioned users992 behaves like updating attribute with existing group mention993 creates todos for only newly mentioned users994 when the group is private995 behaves like updating attribute with allowed mentions996 emails group members997 behaves like updating attribute with allowed mentions998 emails group members999 behaves like updating attribute with existing group mention1000 creates todos for only newly mentioned users1001 behaves like updating attribute with existing group mention1002 creates todos for only newly mentioned users1003 when mentioning a user and a group without access to1004 when the group is private1005 behaves like updating attribute with not allowed mentions1006 emails mentioned user1007 behaves like updating attribute with not allowed mentions1008 emails mentioned user1009 updating severity1010 on incidents1011 when severity has not been set previously1012 creates a new record1013 behaves like updates the severity1014 has correct value1015 creates a system note1016 triggers webhooks1017 with unsupported severity value1018 behaves like does not change the severity1019 retains the original value1020 does not trigger side-effects1021 with severity value defined but unchanged1022 behaves like does not change the severity1023 retains the original value1024 does not trigger side-effects1025 as guest1026 behaves like does not change the severity1027 retains the original value1028 does not trigger side-effects1029 and also author1030 behaves like does not change the severity1031 retains the original value1032 does not trigger side-effects1033 and also assignee1034 behaves like does not change the severity1035 retains the original value1036 does not trigger side-effects1037 when severity has been set before1038 does not create a new record1039 behaves like updates the severity1040 has correct value1041 creates a system note1042 triggers webhooks1043 with unsupported severity value1044 behaves like updates the severity1045 has correct value1046 creates a system note1047 triggers webhooks1048 with severity value defined but unchanged1049 behaves like does not change the severity1050 retains the original value1051 does not trigger side-effects1052 when issue type is not incident1053 behaves like does not change the severity1054 retains the original value1055 does not trigger side-effects1056 updating escalation status1057 when issue is an incident1058 with an escalation status record1059 behaves like updates the escalation status record1060 has correct value1061 triggers webhooks1062 with unsupported status value1063 behaves like does not change the status record1064 retains the original value1065 does not trigger side-effects1066 with status value defined but unchanged1067 behaves like does not change the status record1068 retains the original value1069 does not trigger side-effects1070 without an escalation status record1071 creates a new record1072 behaves like updates the escalation status record1073 has correct value1074 triggers webhooks1075 when issue type is not incident1076 behaves like does not change the status record1077 retains the original value1078 does not trigger side-effects1079 duplicate issue1080 invalid canonical_issue_id1081 does not call the duplicate service1082 valid canonical_issue_id1083 calls the duplicate service with both issues1084 move issue to another project1085 valid project1086 calls the move service with the proper issue and project1087 clone an issue1088 valid project1089 calls the move service with the proper issue and project1090 clone an issue with notes1091 valid project1092 calls the move service with the proper issue and project1093 when moving an issue1094 raises an error for invalid move ids1095 behaves like issuable update service1096 changing state1097 to reopened1098 executes hooks1099 to closed1100 executes hooks1101 broadcasting issue assignee updates1102 triggers the GraphQL subscription1103 when assignee is not updated1104 does not trigger the GraphQL subscription1105 labels are updated1106 behaves like keeps issuable labels sorted after update1107 when label is changed1108 keeps the labels sorted by title ASC1109 behaves like broadcasting issuable labels updates1110 when label is added1111 triggers the GraphQL subscription1112 when label is removed1113 triggers the GraphQL subscription1114 when label is unchanged1115 does not trigger the GraphQL subscription1116 behaves like issuable record that supports quick actions1117 with labels in command only1118 attaches labels to issuable1119 with labels in params and command1120 attaches all labels to issuable1121 with assignee and milestone in command only1122 assigns and sets milestone to issuable1123Members::DestroyService1124 With ExclusiveLeaseHelpers1125 for group members1126 deleting group owners1127 locking to avoid race conditions1128 tries to perform the delete within a lock1129 based on status of the lock1130 when lock is obtained1131 destroys the membership1132 when the lock cannot be obtained1133 raises error1134 deleting group members that are not owners1135 does not try to perform the deletion of the member within a lock1136 destroys the membership1137 for project members1138 deleting project owners1139 deleting project owners1140 behaves like deletes the project member without using a lock1141 does not try to perform the deletion of a project member within a lock1142 destroys the membership1143 deleting project members that are not owners1144 behaves like deletes the project member without using a lock1145 does not try to perform the deletion of a project member within a lock1146 destroys the membership1147 with a member with access1148 when current user cannot destroy the given member1149 with a project member1150 when current user does not have any membership management permissions1151 behaves like a service raising Gitlab::Access::AccessDeniedError1152 raises Gitlab::Access::AccessDeniedError1153 when skipping authorisation1154 behaves like a service destroying a member with access1155 invalidates cached counts for assigned issues and merge requests1156 behaves like a service destroying a member1157 destroys the member1158 destroys member notification_settings1159 resolves the access request todos for the owner1160 when a project maintainer tries to destroy a project owner1161 behaves like a service raising Gitlab::Access::AccessDeniedError1162 raises Gitlab::Access::AccessDeniedError1163 when skipping authorisation1164 behaves like a service destroying a member with access1165 invalidates cached counts for assigned issues and merge requests1166 behaves like a service destroying a member1167 destroys the member1168 destroys member notification_settings1169 resolves the access request todos for the owner1170 with a group member1171 behaves like a service raising Gitlab::Access::AccessDeniedError1172 raises Gitlab::Access::AccessDeniedError1173 when skipping authorisation1174 behaves like a service destroying a member with access1175 invalidates cached counts for assigned issues and merge requests1176 behaves like a service destroying a member1177 destroys the member1178 destroys member notification_settings1179 resolves the access request todos for the owner1180 when current user can destroy the given member1181 with a project member1182 behaves like a service destroying a member with access1183 invalidates cached counts for assigned issues and merge requests1184 behaves like a service destroying a member1185 destroys the member1186 destroys member notification_settings1187 resolves the access request todos for the owner1188 unassign issuables1189 behaves like a service destroying a member with access1190 invalidates cached counts for assigned issues and merge requests1191 behaves like a service destroying a member1192 destroys the member1193 destroys member notification_settings1194 resolves the access request todos for the owner1195 with a project bot member1196 when the destroy_bot flag is true1197 behaves like a service destroying a member with access1198 invalidates cached counts for assigned issues and merge requests1199 behaves like a service destroying a member1200 destroys the member1201 destroys member notification_settings1202 resolves the access request todos for the owner1203 when the destroy_bot flag is not specified1204 behaves like a service raising Gitlab::Access::AccessDeniedError1205 raises Gitlab::Access::AccessDeniedError1206 with a group member1207 behaves like a service destroying a member with access1208 invalidates cached counts for assigned issues and merge requests1209 behaves like a service destroying a member1210 destroys the member1211 destroys member notification_settings1212 resolves the access request todos for the owner1213 unassign issuables1214 behaves like a service destroying a member with access1215 invalidates cached counts for assigned issues and merge requests1216 behaves like a service destroying a member1217 destroys the member1218 destroys member notification_settings1219 resolves the access request todos for the owner1220 with an access requester1221 when current user cannot destroy the given access requester1222 behaves like a service raising Gitlab::Access::AccessDeniedError1223 raises Gitlab::Access::AccessDeniedError1224 behaves like a service destroying a member1225 destroys the member1226 destroys member notification_settings1227 resolves the access request todos for the owner1228 behaves like a service raising Gitlab::Access::AccessDeniedError1229 raises Gitlab::Access::AccessDeniedError1230 behaves like a service destroying a member1231 destroys the member1232 destroys member notification_settings1233 resolves the access request todos for the owner1234 when current user can destroy the given access requester1235 behaves like a service destroying an access request of another user1236 calls Member#after_decline_request1237 behaves like a service destroying a member1238 destroys the member1239 destroys member notification_settings1240 resolves the access request todos for the owner1241 behaves like a service destroying an access request of another user1242 calls Member#after_decline_request1243 behaves like a service destroying a member1244 destroys the member1245 destroys member notification_settings1246 resolves the access request todos for the owner1247 on withdrawing their own access request1248 behaves like a service destroying an access request of self1249 behaves like a service destroying a member1250 destroys the member1251 destroys member notification_settings1252 resolves the access request todos for the owner1253 when current user is the member1254 does not call Member#after_decline_request1255 behaves like a service destroying an access request of self1256 behaves like a service destroying a member1257 destroys the member1258 destroys member notification_settings1259 resolves the access request todos for the owner1260 when current user is the member1261 does not call Member#after_decline_request1262 with an invited user1263 when current user cannot destroy the given invited user1264 behaves like a service raising Gitlab::Access::AccessDeniedError1265 raises Gitlab::Access::AccessDeniedError1266 behaves like a service destroying a member1267 destroys the member1268 destroys member notification_settings1269 resolves the access request todos for the owner1270 behaves like a service raising Gitlab::Access::AccessDeniedError1271 raises Gitlab::Access::AccessDeniedError1272 behaves like a service destroying a member1273 destroys the member1274 destroys member notification_settings1275 resolves the access request todos for the owner1276 when current user can destroy the given invited user1277 behaves like a service destroying a member1278 destroys the member1279 destroys member notification_settings1280 resolves the access request todos for the owner1281 behaves like a service destroying a member1282 destroys the member1283 destroys member notification_settings1284 resolves the access request todos for the owner1285 subresources1286 with memberships1287 with skipping of subresources1288 removes the group membership1289 does not remove the project membership1290 does not remove the subgroup membership1291 does not remove the subsubgroup membership1292 does not remove the subsubproject membership1293 does not remove the user from the control project1294 todos1295 removes todos for which the user no longer has access1296 issuables1297 removes assigned issuables, even in subresources1298 without skipping of subresources1299 removes the project membership1300 removes the group membership1301 removes the subgroup membership1302 removes the subsubgroup membership1303 removes the subsubproject membership1304 does not remove the user from the control project1305 todos1306 removes todos for which the user no longer has access1307 issuables1308 removes assigned issuables1309 with invites1310 with skipping of subresources1311 does not remove group members invited by deleted user1312 does not remove project members invited by deleted user1313 does not remove subgroup members invited by deleted user1314 does not remove subproject members invited by deleted user1315 without skipping of subresources1316 removes group members invited by deleted user1317 removes project members invited by deleted user1318 removes subgroup members invited by deleted user1319 removes subproject members invited by deleted user1320 deletion of invitations created by deleted project member1321 removes project members invited by deleted user1322 #mark_as_recursive_call1323 marks the instance as recursive1324Banzai::Filter::RepositoryLinkFilter1325 does not trigger a gitaly n+11326 does not raise an exception on invalid URIs1327 does not raise an exception on URIs containing invalid utf-8 byte sequences1328 does not raise an exception on URIs containing invalid utf-8 byte sequences in context requested path1329 does not raise an exception with a garbled path1330 does not explode with an escaped null byte1331 ignores ref if commit is passed1332 with a wiki1333 does not modify any relative URL in anchor1334 does not modify any relative URL in image1335 does not modify any relative URL in video1336 does not modify any relative URL in audio1337 without a repository1338 does not modify any relative URL in anchor1339 does not modify any relative URL in image1340 does not modify any relative URL in video1341 does not modify any relative URL in audio1342 with an empty repository1343 does not modify any relative URL in anchor1344 does not modify any relative URL in image1345 does not modify any relative URL in video1346 does not modify any relative URL in audio1347 without project repository access1348 does not modify any relative URL in anchor1349 does not modify any relative URL in image1350 does not modify any relative URL in video1351 does not modify any relative URL in audio1352 when public project repo with a valid commit1353 handles Gitaly unavailable exceptions gracefully1354 handles Gitaly timeout exceptions gracefully1355 rebuilds absolute URL for a file in the repo1356 does not modify relative URLs in system notes1357 ignores absolute URLs with two leading slashes1358 rebuilds relative URL for a file in the repo1359 rebuilds relative URL for a missing file in the repo1360 rebuilds relative URL for a file in the repo with leading ./1361 rebuilds relative URL for a file in the repo up one directory1362 rebuilds relative URL for a file in the repo up multiple directories1363 rebuilds relative URL for a file in the repository root1364 rebuilds relative URL for a file in the repo with an anchor1365 rebuilds relative URL for a directory in the repo1366 rebuilds relative URL for an image in the repo1367 rebuilds relative URL for link to an image in the repo1368 rebuilds relative URL for a video in the repo1369 rebuilds relative URL for audio in the repo1370 does not modify relative URL with an anchor only1371 does not modify absolute URL1372 does not call gitaly1373 supports Unicode filenames1374 supports percent sign in filenames1375 when requested path is a file in the repo1376 rebuilds URL relative to the containing directory1377 when requested path is a directory in the repo1378 rebuilds URL relative to the directory1379 when ref name contains percent sign1380 correctly escapes the ref1381 when ref name contains special chars1382 correctly escapes the ref1383 when requested path is a directory with space in the repo1384 does not escape the space twice1385 when private project repo with a valid commit1386 handles Gitaly unavailable exceptions gracefully1387 handles Gitaly timeout exceptions gracefully1388 rebuilds absolute URL for a file in the repo1389 does not modify relative URLs in system notes1390 ignores absolute URLs with two leading slashes1391 rebuilds relative URL for a file in the repo1392 rebuilds relative URL for a missing file in the repo1393 rebuilds relative URL for a file in the repo with leading ./1394 rebuilds relative URL for a file in the repo up one directory1395 rebuilds relative URL for a file in the repo up multiple directories1396 rebuilds relative URL for a file in the repository root1397 rebuilds relative URL for a file in the repo with an anchor1398 rebuilds relative URL for a directory in the repo1399 rebuilds relative URL for an image in the repo1400 rebuilds relative URL for link to an image in the repo1401 rebuilds relative URL for a video in the repo1402 rebuilds relative URL for audio in the repo1403 does not modify relative URL with an anchor only1404 does not modify absolute URL1405 does not call gitaly1406 supports Unicode filenames1407 supports percent sign in filenames1408 when requested path is a file in the repo1409 rebuilds URL relative to the containing directory1410 when requested path is a directory in the repo1411 rebuilds URL relative to the directory1412 when ref name contains percent sign1413 correctly escapes the ref1414 when ref name contains special chars1415 correctly escapes the ref1416 when requested path is a directory with space in the repo1417 does not escape the space twice1418 with a valid ref1419 handles Gitaly unavailable exceptions gracefully1420 handles Gitaly timeout exceptions gracefully1421 rebuilds absolute URL for a file in the repo1422 does not modify relative URLs in system notes1423 ignores absolute URLs with two leading slashes1424 rebuilds relative URL for a file in the repo1425 rebuilds relative URL for a missing file in the repo1426 rebuilds relative URL for a file in the repo with leading ./1427 rebuilds relative URL for a file in the repo up one directory1428 rebuilds relative URL for a file in the repo up multiple directories1429 rebuilds relative URL for a file in the repository root1430 rebuilds relative URL for a file in the repo with an anchor1431 rebuilds relative URL for a directory in the repo1432 rebuilds relative URL for an image in the repo1433 rebuilds relative URL for link to an image in the repo1434 rebuilds relative URL for a video in the repo1435 rebuilds relative URL for audio in the repo1436 does not modify relative URL with an anchor only1437 does not modify absolute URL1438 does not call gitaly1439 supports Unicode filenames1440 supports percent sign in filenames1441 when requested path is a file in the repo1442 rebuilds URL relative to the containing directory1443 when requested path is a directory in the repo1444 rebuilds URL relative to the directory1445 when ref name contains percent sign1446 correctly escapes the ref1447 when ref name contains special chars1448 correctly escapes the ref1449 when requested path is a directory with space in the repo1450 does not escape the space twice1451Packages::Debian::GenerateDistributionWorker1452 #perform1453 for project1454 with mocked service1455 calls GenerateDistributionService1456 with non existing distribution id1457 returns early without error1458 with nil distribution id1459 returns early without error1460 with valid parameters1461 behaves like an idempotent worker1462 is labeled as idempotent1463 performs multiple times sequentially without raising an exception1464 behaves like Generate Debian Distribution and component files1465 with Debian components and architectures1466 generates Debian distribution and component files1467 without components and architectures1468 generates minimal distribution1469 for group1470 with mocked service1471 calls GenerateDistributionService1472 with non existing distribution id1473 returns early without error1474 with nil distribution id1475 returns early without error1476 with valid parameters1477 behaves like an idempotent worker1478 is labeled as idempotent1479 performs multiple times sequentially without raising an exception1480 behaves like Generate Debian Distribution and component files1481 with Debian components and architectures1482 generates Debian distribution and component files1483 without components and architectures1484 generates minimal distribution1485Operations::FeatureFlags::Strategy1486 validations1487 is expected to validate that :name is either ‹"default"›, ‹"gradualRolloutUserId"›, ‹"flexibleRollout"›, ‹"userWithId"›, or ‹"gitlabUserList"›, producing a custom validation error on failure1488 parameters1489 when the strategy name is invalid1490 invalid_name: nil1491 skips parameters validation1492 invalid_name: {}1493 skips parameters validation1494 invalid_name: []1495 skips parameters validation1496 invalid_name: "nothing"1497 skips parameters validation1498 invalid_name: 31499 skips parameters validation1500 when the strategy name is gradualRolloutUserId1501 allows the parameters in any order1502 invalid_parameters: nil1503 must have valid parameters for the strategy1504 invalid_parameters: {}1505 must have valid parameters for the strategy1506 invalid_parameters: {:percentage=>"40", :groupId=>"mygroup", :userIds=>"4"}1507 must have valid parameters for the strategy1508 invalid_parameters: {:percentage=>"40"}1509 must have valid parameters for the strategy1510 invalid_parameters: {:percentage=>"40", :groupId=>"mygroup", :extra=>nil}1511 must have valid parameters for the strategy1512 invalid_parameters: {:groupId=>"mygroup"}1513 must have valid parameters for the strategy1514 percentage1515 invalid_value: 501516 must be a string value between 0 and 100 inclusive and without a percentage sign1517 invalid_value: 40.01518 must be a string value between 0 and 100 inclusive and without a percentage sign1519 invalid_value: {:key=>"value"}1520 must be a string value between 0 and 100 inclusive and without a percentage sign1521 invalid_value: "garbage"1522 must be a string value between 0 and 100 inclusive and without a percentage sign1523 invalid_value: "101"1524 must be a string value between 0 and 100 inclusive and without a percentage sign1525 invalid_value: "-1"1526 must be a string value between 0 and 100 inclusive and without a percentage sign1527 invalid_value: "-10"1528 must be a string value between 0 and 100 inclusive and without a percentage sign1529 invalid_value: "1000"1530 must be a string value between 0 and 100 inclusive and without a percentage sign1531 invalid_value: "10.0"1532 must be a string value between 0 and 100 inclusive and without a percentage sign1533 invalid_value: "5%"1534 must be a string value between 0 and 100 inclusive and without a percentage sign1535 invalid_value: "25%"1536 must be a string value between 0 and 100 inclusive and without a percentage sign1537 invalid_value: "100hi"1538 must be a string value between 0 and 100 inclusive and without a percentage sign1539 invalid_value: "e100"1540 must be a string value between 0 and 100 inclusive and without a percentage sign1541 invalid_value: "30m"1542 must be a string value between 0 and 100 inclusive and without a percentage sign1543 invalid_value: " "1544 must be a string value between 0 and 100 inclusive and without a percentage sign1545 invalid_value: "\r\n"1546 must be a string value between 0 and 100 inclusive and without a percentage sign1547 invalid_value: "\n"1548 must be a string value between 0 and 100 inclusive and without a percentage sign1549 invalid_value: "\t"1550 must be a string value between 0 and 100 inclusive and without a percentage sign1551 invalid_value: "\n10"1552 must be a string value between 0 and 100 inclusive and without a percentage sign1553 invalid_value: "20\n"1554 must be a string value between 0 and 100 inclusive and without a percentage sign1555 invalid_value: "\n100"1556 must be a string value between 0 and 100 inclusive and without a percentage sign1557 invalid_value: "100\n"1558 must be a string value between 0 and 100 inclusive and without a percentage sign1559 invalid_value: "\n "1560 must be a string value between 0 and 100 inclusive and without a percentage sign1561 invalid_value: nil1562 must be a string value between 0 and 100 inclusive and without a percentage sign1563 valid_value: "0"1564 must be a string value between 0 and 100 inclusive and without a percentage sign1565 valid_value: "1"1566 must be a string value between 0 and 100 inclusive and without a percentage sign1567 valid_value: "10"1568 must be a string value between 0 and 100 inclusive and without a percentage sign1569 valid_value: "38"1570 must be a string value between 0 and 100 inclusive and without a percentage sign1571 valid_value: "100"1572 must be a string value between 0 and 100 inclusive and without a percentage sign1573 valid_value: "93"1574 must be a string value between 0 and 100 inclusive and without a percentage sign1575 groupId1576 invalid_value: nil1577 must be a string value of up to 32 lowercase characters1578 invalid_value: 41579 must be a string value of up to 32 lowercase characters1580 invalid_value: 50.01581 must be a string value of up to 32 lowercase characters1582 invalid_value: {}1583 must be a string value of up to 32 lowercase characters1584 invalid_value: "spaces bad"1585 must be a string value of up to 32 lowercase characters1586 invalid_value: "bad$"1587 must be a string value of up to 32 lowercase characters1588 invalid_value: "%bad"1589 must be a string value of up to 32 lowercase characters1590 invalid_value: "<bad"1591 must be a string value of up to 32 lowercase characters1592 invalid_value: "bad>"1593 must be a string value of up to 32 lowercase characters1594 invalid_value: "!bad"1595 must be a string value of up to 32 lowercase characters1596 invalid_value: ".bad"1597 must be a string value of up to 32 lowercase characters1598 invalid_value: "Bad"1599 must be a string value of up to 32 lowercase characters1600 invalid_value: "bad1"1601 must be a string value of up to 32 lowercase characters1602 invalid_value: ""1603 must be a string value of up to 32 lowercase characters1604 invalid_value: " "1605 must be a string value of up to 32 lowercase characters1606 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"1607 must be a string value of up to 32 lowercase characters1608 invalid_value: "ba_d"1609 must be a string value of up to 32 lowercase characters1610 invalid_value: "ba\nd"1611 must be a string value of up to 32 lowercase characters1612 valid_value: "somegroup"1613 must be a string value of up to 32 lowercase characters1614 valid_value: "anothergroup"1615 must be a string value of up to 32 lowercase characters1616 valid_value: "okay"1617 must be a string value of up to 32 lowercase characters1618 valid_value: "g"1619 must be a string value of up to 32 lowercase characters1620 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"1621 must be a string value of up to 32 lowercase characters1622 when the strategy name is flexibleRollout1623 allows the parameters in the order rollout, stickiness, groupId1624 allows the parameters in the order rollout, groupId, stickiness1625 allows the parameters in the order stickiness, rollout, groupId1626 allows the parameters in the order stickiness, groupId, rollout1627 allows the parameters in the order groupId, rollout, stickiness1628 allows the parameters in the order groupId, stickiness, rollout1629 invalid_parameters: nil1630 must have valid parameters for the strategy1631 invalid_parameters: {}1632 must have valid parameters for the strategy1633 invalid_parameters: {:rollout=>"40"}1634 must have valid parameters for the strategy1635 invalid_parameters: {:groupId=>"mygroup"}1636 must have valid parameters for the strategy1637 invalid_parameters: {:stickiness=>"default"}1638 must have valid parameters for the strategy1639 invalid_parameters: {:rollout=>"40", :groupId=>"mygroup"}1640 must have valid parameters for the strategy1641 invalid_parameters: {:rollout=>"40", :stickiness=>"default"}1642 must have valid parameters for the strategy1643 invalid_parameters: {:groupId=>"mygroup", :stickiness=>"default"}1644 must have valid parameters for the strategy1645 invalid_parameters: {:rollout=>"40", :groupId=>"mygroup", :stickiness=>"default", :userIds=>"4"}1646 must have valid parameters for the strategy1647 invalid_parameters: {:rollout=>"40", :groupId=>"mygroup", :stickiness=>"default", :extra=>nil}1648 must have valid parameters for the strategy1649 rollout1650 invalid_value: 501651 must be a string value between 0 and 100 inclusive and without a percentage sign1652 invalid_value: 40.01653 must be a string value between 0 and 100 inclusive and without a percentage sign1654 invalid_value: {:key=>"value"}1655 must be a string value between 0 and 100 inclusive and without a percentage sign1656 invalid_value: "garbage"1657 must be a string value between 0 and 100 inclusive and without a percentage sign1658 invalid_value: "101"1659 must be a string value between 0 and 100 inclusive and without a percentage sign1660 invalid_value: "-1"1661 must be a string value between 0 and 100 inclusive and without a percentage sign1662 invalid_value: " "1663 must be a string value between 0 and 100 inclusive and without a percentage sign1664 invalid_value: "-10"1665 must be a string value between 0 and 100 inclusive and without a percentage sign1666 invalid_value: "1000"1667 must be a string value between 0 and 100 inclusive and without a percentage sign1668 invalid_value: "10.0"1669 must be a string value between 0 and 100 inclusive and without a percentage sign1670 invalid_value: "5%"1671 must be a string value between 0 and 100 inclusive and without a percentage sign1672 invalid_value: "25%"1673 must be a string value between 0 and 100 inclusive and without a percentage sign1674 invalid_value: "100hi"1675 must be a string value between 0 and 100 inclusive and without a percentage sign1676 invalid_value: "e100"1677 must be a string value between 0 and 100 inclusive and without a percentage sign1678 invalid_value: "30m"1679 must be a string value between 0 and 100 inclusive and without a percentage sign1680 invalid_value: "\r\n"1681 must be a string value between 0 and 100 inclusive and without a percentage sign1682 invalid_value: "\n"1683 must be a string value between 0 and 100 inclusive and without a percentage sign1684 invalid_value: "\t"1685 must be a string value between 0 and 100 inclusive and without a percentage sign1686 invalid_value: "\n10"1687 must be a string value between 0 and 100 inclusive and without a percentage sign1688 invalid_value: "20\n"1689 must be a string value between 0 and 100 inclusive and without a percentage sign1690 invalid_value: "\n100"1691 must be a string value between 0 and 100 inclusive and without a percentage sign1692 invalid_value: "100\n"1693 must be a string value between 0 and 100 inclusive and without a percentage sign1694 invalid_value: "\n "1695 must be a string value between 0 and 100 inclusive and without a percentage sign1696 invalid_value: nil1697 must be a string value between 0 and 100 inclusive and without a percentage sign1698 valid_value: "0"1699 must be a string value between 0 and 100 inclusive and without a percentage sign1700 valid_value: "1"1701 must be a string value between 0 and 100 inclusive and without a percentage sign1702 valid_value: "10"1703 must be a string value between 0 and 100 inclusive and without a percentage sign1704 valid_value: "38"1705 must be a string value between 0 and 100 inclusive and without a percentage sign1706 valid_value: "100"1707 must be a string value between 0 and 100 inclusive and without a percentage sign1708 valid_value: "93"1709 must be a string value between 0 and 100 inclusive and without a percentage sign1710 groupId1711 invalid_value: nil1712 must be a string value of up to 32 lowercase characters1713 invalid_value: 41714 must be a string value of up to 32 lowercase characters1715 invalid_value: 50.01716 must be a string value of up to 32 lowercase characters1717 invalid_value: {}1718 must be a string value of up to 32 lowercase characters1719 invalid_value: "spaces bad"1720 must be a string value of up to 32 lowercase characters1721 invalid_value: "bad$"1722 must be a string value of up to 32 lowercase characters1723 invalid_value: "%bad"1724 must be a string value of up to 32 lowercase characters1725 invalid_value: "<bad"1726 must be a string value of up to 32 lowercase characters1727 invalid_value: "bad>"1728 must be a string value of up to 32 lowercase characters1729 invalid_value: "!bad"1730 must be a string value of up to 32 lowercase characters1731 invalid_value: ".bad"1732 must be a string value of up to 32 lowercase characters1733 invalid_value: "Bad"1734 must be a string value of up to 32 lowercase characters1735 invalid_value: "bad1"1736 must be a string value of up to 32 lowercase characters1737 invalid_value: ""1738 must be a string value of up to 32 lowercase characters1739 invalid_value: " "1740 must be a string value of up to 32 lowercase characters1741 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"1742 must be a string value of up to 32 lowercase characters1743 invalid_value: "ba_d"1744 must be a string value of up to 32 lowercase characters1745 invalid_value: "ba\nd"1746 must be a string value of up to 32 lowercase characters1747 valid_value: "somegroup"1748 must be a string value of up to 32 lowercase characters1749 valid_value: "anothergroup"1750 must be a string value of up to 32 lowercase characters1751 valid_value: "okay"1752 must be a string value of up to 32 lowercase characters1753 valid_value: "g"1754 must be a string value of up to 32 lowercase characters1755 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"1756 must be a string value of up to 32 lowercase characters1757 stickiness1758 invalid_value: nil1759 must be a string representing a supported stickiness setting1760 invalid_value: " "1761 must be a string representing a supported stickiness setting1762 invalid_value: "DEFAULT"1763 must be a string representing a supported stickiness setting1764 invalid_value: "DEFAULT\n"1765 must be a string representing a supported stickiness setting1766 invalid_value: "UserId"1767 must be a string representing a supported stickiness setting1768 invalid_value: "USER"1769 must be a string representing a supported stickiness setting1770 invalid_value: "USERID "1771 must be a string representing a supported stickiness setting1772 valid_value: "default"1773 must be a string representing a supported stickiness setting1774 valid_value: "userId"1775 must be a string representing a supported stickiness setting1776 valid_value: "sessionId"1777 must be a string representing a supported stickiness setting1778 valid_value: "random"1779 must be a string representing a supported stickiness setting1780 when the strategy name is userWithId1781 invalid_parameters: nil1782 must have valid parameters for the strategy1783 invalid_parameters: {:userIds=>"sam", :percentage=>"40"}1784 must have valid parameters for the strategy1785 invalid_parameters: {:userIds=>"sam", :some=>"param"}1786 must have valid parameters for the strategy1787 invalid_parameters: {:percentage=>"40"}1788 must have valid parameters for the strategy1789 invalid_parameters: {}1790 must have valid parameters for the strategy1791 userIds1792 valid_value: ""1793 is valid with a string of comma separated values1794 valid_value: "sam"1795 is valid with a string of comma separated values1796 valid_value: "1"1797 is valid with a string of comma separated values1798 valid_value: "a"1799 is valid with a string of comma separated values1800 valid_value: "uuid-of-some-kind"1801 is valid with a string of comma separated values1802 valid_value: "sam,fred,tom,jane,joe,mike"1803 is valid with a string of comma separated values1804 valid_value: "gitlab@example.com"1805 is valid with a string of comma separated values1806 valid_value: "123,4"1807 is valid with a string of comma separated values1808 valid_value: "UPPER,Case,charActeRS"1809 is valid with a string of comma separated values1810 valid_value: "0"1811 is valid with a string of comma separated values1812 valid_value: "$valid$email#2345\#$%..{}+=-)?\\/@example.com"1813 is valid with a string of comma separated values1814 valid_value: "spaces allowed"1815 is valid with a string of comma separated values1816 valid_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"1817 is valid with a string of comma separated values1818 valid_value: "a,bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,ccc"1819 is valid with a string of comma separated values1820 valid_value: "many spaces"1821 is valid with a string of comma separated values1822 invalid_value: 11823 is invalid1824 invalid_value: 2.51825 is invalid1826 invalid_value: {}1827 is invalid1828 invalid_value: []1829 is invalid1830 invalid_value: nil1831 is invalid1832 invalid_value: "123\n456"1833 is invalid1834 invalid_value: "1,2,3,12\t3"1835 is invalid1836 invalid_value: "\n"1837 is invalid1838 invalid_value: "\n\r"1839 is invalid1840 invalid_value: "joe\r,sam"1841 is invalid1842 invalid_value: "1,2,2"1843 is invalid1844 invalid_value: "1,,2"1845 is invalid1846 invalid_value: "1,2,,,,"1847 is invalid1848 invalid_value: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"1849 is invalid1850 invalid_value: "1, ,2"1851 is invalid1852 invalid_value: "tim, ,7"1853 is invalid1854 invalid_value: " "1855 is invalid1856 invalid_value: " "1857 is invalid1858 invalid_value: " ,1"1859 is invalid1860 invalid_value: "1, "1861 is invalid1862 invalid_value: " leading,1"1863 is invalid1864 invalid_value: "1,trailing "1865 is invalid1866 invalid_value: "1, both ,2"1867 is invalid1868 when the strategy name is default1869 must be empty1870 invalid_value: {:groupId=>"hi", :percentage=>"7"}1871 must be empty1872 invalid_value: ""1873 must be empty1874 invalid_value: "nothing"1875 must be empty1876 invalid_value: 71877 must be empty1878 invalid_value: nil1879 must be empty1880 invalid_value: []1881 must be empty1882 invalid_value: 2.51883 must be empty1884 when the strategy name is gitlabUserList1885 is valid1886 invalid_value: {:groupId=>"default", :percentage=>"7"}1887 is invalid1888 invalid_value: ""1889 is invalid1890 invalid_value: "nothing"1891 is invalid1892 invalid_value: 71893 is invalid1894 invalid_value: nil1895 is invalid1896 invalid_value: []1897 is invalid1898 invalid_value: 2.51899 is invalid1900 invalid_value: {:userIds=>"user1"}1901 is invalid1902 associations1903 when name is gitlabUserList1904 is valid when associated with a user list1905 is invalid without a user list1906 is invalid when associated with a user list from another project1907 when name is default1908 is invalid when associated with a user list1909 is valid without a user list1910 when name is userWithId1911 is invalid when associated with a user list1912 is valid without a user list1913 when name is gradualRolloutUserId1914 is invalid when associated with a user list1915 is valid without a user list1916 when name is flexibleRollout1917 is invalid when associated with a user list1918 is valid without a user list1919EventCreateService1920 Issues1921 #open_issue1922 is expected to be truthy1923 creates new event1924 #close_issue1925 is expected to be truthy1926 creates new event1927 #reopen_issue1928 is expected to be truthy1929 creates new event1930 Merge Requests1931 #open_mr1932 is expected to be truthy1933 creates new event1934 behaves like it records the event in the event counter1935 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 11936 behaves like Snowplow event tracking with RedisHLL context1937 behaves like Snowplow event tracking1938 is emitted1939 #close_mr1940 is expected to be truthy1941 creates new event1942 behaves like it records the event in the event counter1943 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 11944 behaves like Snowplow event tracking with RedisHLL context1945 behaves like Snowplow event tracking1946 is emitted1947 #merge_mr1948 is expected to be truthy1949 creates new event1950 behaves like it records the event in the event counter1951 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 11952 behaves like Snowplow event tracking with RedisHLL context1953 behaves like Snowplow event tracking1954 is emitted1955 #reopen_mr1956 is expected to be truthy1957 creates new event1958 #approve_mr1959 is expected to be truthy1960 creates new event1961 Milestone1962 #open_milestone1963 is expected to be truthy1964 creates new event1965 #close_mr1966 is expected to be truthy1967 creates new event1968 #destroy_mr1969 is expected to be truthy1970 creates new event1971 #wiki_event1972 action: :created1973 creates the event1974 is idempotent1975 behaves like it records the event in the event counter1976 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 11977 behaves like it records a git write event1978 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 11979 action: :updated1980 creates the event1981 is idempotent1982 behaves like it records the event in the event counter1983 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 11984 behaves like it records a git write event1985 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 11986 action: :destroyed1987 creates the event1988 is idempotent1989 behaves like it records the event in the event counter1990 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 11991 behaves like it records a git write event1992 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 11993 The action is created1994 raises an error1995 The action is updated1996 raises an error1997 The action is closed1998 raises an error1999 The action is reopened2000 raises an error2001 The action is pushed2002 raises an error2003 The action is commented2004 raises an error2005 The action is merged2006 raises an error2007 The action is joined2008 raises an error2009 The action is left2010 raises an error2011 The action is destroyed2012 raises an error2013 The action is expired2014 raises an error2015 The action is approved2016 raises an error2017 #push2018 behaves like service for creating a push event2019 creates a new event2020 creates the push event payload2021 updates user last activity2022 caches the last push event for the user2023 does not create any event data when an error is raised2024 behaves like it records the event in the event counter2025 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12026 behaves like it records a git write event2027 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12028 behaves like Snowplow event tracking with RedisHLL context2029 behaves like Snowplow event tracking2030 is emitted2031 #bulk_push2032 behaves like service for creating a push event2033 creates a new event2034 creates the push event payload2035 updates user last activity2036 caches the last push event for the user2037 does not create any event data when an error is raised2038 behaves like it records the event in the event counter2039 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12040 behaves like it records a git write event2041 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12042 behaves like Snowplow event tracking with RedisHLL context2043 behaves like Snowplow event tracking2044 is emitted2045 Project2046 #join_project2047 is expected to be truthy2048 is expected to change `Event.count` from 0 to 12049 #expired_leave_project2050 is expected to be truthy2051 is expected to change `Event.count` from 0 to 12052 design events2053 #save_designs2054 is expected to change `Event.count` by 82055 is expected not to exceed query limit 22056 creates 3 created design events2057 creates 5 created design events2058 behaves like it records the event in the event counter2059 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12060 behaves like it records a git write event2061 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12062 Snowplow tracking2063 for create event2064 behaves like Snowplow event tracking with RedisHLL context2065 behaves like Snowplow event tracking2066 is emitted2067 for update event2068 behaves like Snowplow event tracking with RedisHLL context2069 behaves like Snowplow event tracking2070 is emitted2071 #destroy_designs2072 is expected to change `Event.count` by 52073 is expected not to exceed query limit 22074 creates 5 destroyed design events2075 behaves like it records the event in the event counter2076 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12077 behaves like it records a git write event2078 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12079 behaves like Snowplow event tracking with RedisHLL context2080 behaves like Snowplow event tracking2081 is emitted2082 #leave_note2083 is expected to be truthy2084 creates new event2085 when it is a diff note2086 behaves like it records the event in the event counter2087 is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 12088 behaves like Snowplow event tracking with RedisHLL context2089 behaves like Snowplow event tracking2090 is emitted2091 when it is not a diff note2092 does not change the unique action counter2093Jobs/Deploy.gitlab-ci.yml2094 AUTO_DEPLOY_IMAGE_VERSION2095 corresponds to a published image in the registry2096 the created pipeline2097 with no cluster or agent2098 does not create any kubernetes deployment jobs2099 with only a disabled cluster2100 does not create any kubernetes deployment jobs2101 with an agent2102 behaves like pipeline with deployment jobs2103 on master2104 by default2105 when CI_DEPLOY_FREEZE is present2106 when CANARY_ENABLED2107 when STAGING_ENABLED2108 when INCREMENTAL_ROLLOUT_MODE == timed2109 when INCREMENTAL_ROLLOUT_ENABLED2110 when INCREMENTAL_ROLLOUT_MODE == manual2111 on branch2112 behaves like review app deployment2113 creates the review and stop_review jobs but no production jobs2114 does not include review when REVIEW_DISABLED2115 when INCREMENTAL_ROLLOUT_ENABLED2116 behaves like review app deployment2117 creates the review and stop_review jobs but no production jobs2118 does not include review when REVIEW_DISABLED2119 when INCREMENTAL_ROLLOUT_MODE == "timed"2120 behaves like review app deployment2121 creates the review and stop_review jobs but no production jobs2122 does not include review when REVIEW_DISABLED2123 when INCREMENTAL_ROLLOUT_MODE == "manual"2124 behaves like review app deployment2125 creates the review and stop_review jobs but no production jobs2126 does not include review when REVIEW_DISABLED2127 on tag2128 behaves like review app deployment2129 creates the review and stop_review jobs but no production jobs2130 does not include review when REVIEW_DISABLED2131 on merge request2132 has no jobs2133 with a cluster2134 behaves like pipeline with deployment jobs2135 on master2136 by default2137 when CI_DEPLOY_FREEZE is present2138 when CANARY_ENABLED2139 when STAGING_ENABLED2140 when INCREMENTAL_ROLLOUT_MODE == timed2141 when INCREMENTAL_ROLLOUT_ENABLED2142 when INCREMENTAL_ROLLOUT_MODE == manual2143 on branch2144 behaves like review app deployment2145 creates the review and stop_review jobs but no production jobs2146 does not include review when REVIEW_DISABLED2147 when INCREMENTAL_ROLLOUT_ENABLED2148 behaves like review app deployment2149 creates the review and stop_review jobs but no production jobs2150 does not include review when REVIEW_DISABLED2151 when INCREMENTAL_ROLLOUT_MODE == "timed"2152 behaves like review app deployment2153 creates the review and stop_review jobs but no production jobs2154 does not include review when REVIEW_DISABLED2155 when INCREMENTAL_ROLLOUT_MODE == "manual"2156 behaves like review app deployment2157 creates the review and stop_review jobs but no production jobs2158 does not include review when REVIEW_DISABLED2159 on tag2160 behaves like review app deployment2161 creates the review and stop_review jobs but no production jobs2162 does not include review when REVIEW_DISABLED2163 on merge request2164 has no jobs2165Packages::Maven::Metadata::CreateVersionsXmlService2166 #execute2167 with same versions in both sides2168 returns no changes2169 with more versions2170 in the xml side2171 behaves like returning an xml with versions in the database2172 returns an metadata versions xml with versions in the database2173 in the database side2174 behaves like returning an xml with versions in the database2175 returns an metadata versions xml with versions in the database2176 with an xml without a release version2177 logs a warn with the reason2178 behaves like returning an xml with versions in the database2179 returns an metadata versions xml with versions in the database2180 with completely different versions2181 behaves like returning an xml with versions in the database2182 returns an metadata versions xml with versions in the database2183 with no versions in the database2184 returns a success2185 with an xml without a release version2186 returns a success2187 with differences in both sides2188 behaves like returning an xml with versions in the database2189 returns an metadata versions xml with versions in the database2190 with a new release and latest from the database2191 behaves like returning an xml with2192 returns an xml with the updated release and latest versions2193 with a latest in the xml2194 behaves like returning an xml with2195 returns an xml with the updated release and latest versions2196 with release and latest not existing in the database2197 behaves like returning an xml with2198 returns an xml with the updated release and latest versions2199 with added versions in the database side no more recent than release2200 behaves like returning an xml with2201 returns an xml with the updated release and latest versions2202 with a latest in the xml2203 behaves like returning an xml with2204 returns an xml with the updated release and latest versions2205 only snapshot versions are in the database2206 returns an xml without any release element2207 behaves like returning an xml with2208 returns an xml with the updated release and latest versions2209 last updated timestamp2210 updates the last updated timestamp2211 with an incomplete metadata content2212 behaves like returning an error service response2213 returns an error service response2214 with an invalid metadata content2215 behaves like returning an error service response2216 returns an error service response2217 behaves like handling metadata content pointing to a file for the create xml service2218 with metadata content pointing to a file2219 with valid content2220 returns no changes2221 with invalid content2222 behaves like returning an error service response2223 returns an error service response2224 with no content2225 behaves like returning an error service response2226 returns an error service response2227 behaves like handling invalid parameters for create xml service2228 with no package2229 behaves like returning an error service response2230 returns an error service response2231 with no metadata content2232 behaves like returning an error service response2233 returns an error service response2234Releases::GroupReleasesFinder2235 when parent is a group2236 without subgroups2237 behaves like preload2238 preloads associations2239 when preload is false2240 does not preload associations2241 behaves like when the user is not part of the group2242 returns no releases2243 when the user is a project guest on one sibling project2244 does not return any releases2245 when the user is a guest on the group2246 sorts by release date and id2247 with subgroups2248 with a single-level subgroup2249 behaves like when the user is not part of the group2250 returns no releases2251 when the user a project guest in the subgroup project2252 does not return any releases2253 when the user is a guest on the group2254 returns all releases2255 with a multi-level subgroup2256 behaves like when the user is not part of the group2257 returns no releases2258 when the user a project guest in the subgroup and subsubgroup project2259 does not return any releases2260 when the user a project guest in the subsubgroup project2261 does not return any releases2262 performance testing2263 behaves like avoids N+1 queries2264 with subgroups2265 subgroups avoids N+1 queries2266Ci::ResetSkippedJobsService2267 # order random2268 with same-stage needs where the parent jobs do not share the same descendants2269 marks subsequent skipped jobs as processable2270 when multiple processables are inputted2271 marks subsequent skipped jobs as processable2272 when multiple processables are inputted2273 behaves like with a stage-dag mixed pipeline2274 marks subsequent skipped jobs as processable2275 when executed by a different user than the original owner2276 reassigns jobs with updated statuses to the retryer2277 behaves like with stage-dag mixed pipeline with some same-stage needs2278 marks subsequent skipped jobs as processable2279 behaves like with same-stage needs2280 marks subsequent skipped jobs as processable2281 when a single processable is inputted2282 behaves like with a stage-dag mixed pipeline2283 marks subsequent skipped jobs as processable2284 when executed by a different user than the original owner2285 reassigns jobs with updated statuses to the retryer2286 behaves like with stage-dag mixed pipeline with some same-stage needs2287 marks subsequent skipped jobs as processable2288 behaves like with same-stage needs2289 marks subsequent skipped jobs as processable2290BroadcastMessage2291 # order random2292 is expected to be valid2293 #attributes2294 includes message_html field2295 #active?2296 is truthy when started and not ended2297 is falsey when ended2298 is falsey when not started2299 #current_and_future_messages2300 returns only current and future messages by ascending ends_at2301 validations2302 is expected to allow :color to be ‹nil›2303 is expected to allow :color to be ‹"#000"›2304 is expected to allow :color to be ‹"#AABBCC"›2305 is expected not to allow :color to be ‹"000"›2306 is expected to allow :font to be ‹nil›2307 is expected to allow :font to be ‹"#000"›2308 is expected to allow :font to be ‹"#AABBCC"›2309 is expected not to allow :font to be ‹"000"›2310 is expected to allow :broadcast_type to be ‹1›2311 is expected not to allow :broadcast_type to be ‹nil›2312 is expected not to allow :target_access_levels to be ‹nil›2313 is expected not to allow :show_in_cli to be ‹nil›2314 is expected to validate that :target_access_levels is either ‹10›, ‹20›, ‹30›, ‹40›, or ‹50›2315************************************************************************2316Warning from shoulda-matchers:2317You are using `validate_inclusion_of` to assert that a boolean column2318allows boolean values and disallows non-boolean ones. Be aware that it2319is not possible to fully test this, as boolean columns will2320automatically convert non-boolean values to boolean ones. Hence, you2321should consider removing this test.2322************************************************************************2323 is expected to validate that :show_in_cli is either ‹true› or ‹false›2324 default values2325 is expected to eq "#E75E40"2326 is expected to eq "#FFFFFF"2327 .current_banner_messages2328 only returns banners2329 behaves like time constrained2330 returns message if time match2331 returns multiple messages if time match2332 returns empty list if time not come2333 returns empty list if time has passed2334 behaves like message cache2335 caches the output of the query for two weeks2336 expires the value if a broadcast message has ended2337 does not create new records2338 includes messages that need to be displayed in the future2339 does not clear the cache if only a future message should be displayed2340 behaves like matches with current path2341 returns message if it matches the target path2342 returns message if part of the target path matches2343 returns message if provided a path without a preceding slash2344 returns the message for empty target path2345 returns the message if target path is nil2346 does not return message if target path does not match2347 does not return message if target path does not match when using wildcard2348 does not return message if target path has no wild card at the end2349 does not return message if target path has wild card at the end2350 does return message if target path has wild card at the beginning and the end2351 does not return message if the target path is set but no current path is provided2352 behaves like matches with user access level2353 when target_access_levels is empty2354 returns the message if user access level is not nil2355 returns the message if user access level is nil2356 when target_access_levels is not empty2357 does not return the message if user access level is nil2358 returns the message if user access level is in target_access_levels2359 does not return the message if user access level is not in target_access_levels2360 behaves like handles stale cache data gracefully2361 when cache returns stale data (e.g. nil target_access_levels)2362 does not raise error (e.g. NoMethodError from nil.empty?)2363 when message is from cache2364 behaves like matches with current path2365 returns message if it matches the target path2366 returns message if part of the target path matches2367 returns message if provided a path without a preceding slash2368 returns the message for empty target path2369 returns the message if target path is nil2370 does not return message if target path does not match2371 does not return message if target path does not match when using wildcard2372 does not return message if target path has no wild card at the end2373 does not return message if target path has wild card at the end2374 does return message if target path has wild card at the beginning and the end2375 does not return message if the target path is set but no current path is provided2376 behaves like matches with user access level2377 when target_access_levels is empty2378 returns the message if user access level is not nil2379 returns the message if user access level is nil2380 when target_access_levels is not empty2381 does not return the message if user access level is nil2382 returns the message if user access level is in target_access_levels2383 does not return the message if user access level is not in target_access_levels2384 #flush_redis_cache2385 flushes the Redis cache2386 with GitLab revision changes2387 validates correct cache creating, flushing and cache recreation cycle2388 handles there being no messages with cache2389 .current2390 returns both types2391 behaves like time constrained2392 returns message if time match2393 returns multiple messages if time match2394 returns empty list if time not come2395 returns empty list if time has passed2396 behaves like message cache2397 caches the output of the query for two weeks2398 expires the value if a broadcast message has ended2399 does not create new records2400 includes messages that need to be displayed in the future2401 does not clear the cache if only a future message should be displayed2402 behaves like matches with current path2403 returns message if it matches the target path2404 returns message if part of the target path matches2405 returns message if provided a path without a preceding slash2406 returns the message for empty target path2407 returns the message if target path is nil2408 does not return message if target path does not match2409 does not return message if target path does not match when using wildcard2410 does not return message if target path has no wild card at the end2411 does not return message if target path has wild card at the end2412 does return message if target path has wild card at the beginning and the end2413 does not return message if the target path is set but no current path is provided2414 behaves like matches with user access level2415 when target_access_levels is empty2416 returns the message if user access level is not nil2417 returns the message if user access level is nil2418 when target_access_levels is not empty2419 does not return the message if user access level is nil2420 returns the message if user access level is in target_access_levels2421 does not return the message if user access level is not in target_access_levels2422 behaves like handles stale cache data gracefully2423 when cache returns stale data (e.g. nil target_access_levels)2424 does not raise error (e.g. NoMethodError from nil.empty?)2425 when message is from cache2426 behaves like matches with current path2427 returns message if it matches the target path2428 returns message if part of the target path matches2429 returns message if provided a path without a preceding slash2430 returns the message for empty target path2431 returns the message if target path is nil2432 does not return message if target path does not match2433 does not return message if target path does not match when using wildcard2434 does not return message if target path has no wild card at the end2435 does not return message if target path has wild card at the end2436 does return message if target path has wild card at the beginning and the end2437 does not return message if the target path is set but no current path is provided2438 behaves like matches with user access level2439 when target_access_levels is empty2440 returns the message if user access level is not nil2441 returns the message if user access level is nil2442 when target_access_levels is not empty2443 does not return the message if user access level is nil2444 returns the message if user access level is in target_access_levels2445 does not return the message if user access level is not in target_access_levels2446 behaves like matches with current path2447 returns message if it matches the target path2448 returns message if part of the target path matches2449 returns message if provided a path without a preceding slash2450 returns the message for empty target path2451 returns the message if target path is nil2452 does not return message if target path does not match2453 does not return message if target path does not match when using wildcard2454 does not return message if target path has no wild card at the end2455 does not return message if target path has wild card at the end2456 does return message if target path has wild card at the beginning and the end2457 does not return message if the target path is set but no current path is provided2458 behaves like matches with user access level2459 when target_access_levels is empty2460 returns the message if user access level is not nil2461 returns the message if user access level is nil2462 when target_access_levels is not empty2463 does not return the message if user access level is nil2464 returns the message if user access level is in target_access_levels2465 does not return the message if user access level is not in target_access_levels2466 .current_show_in_cli_banner_messages2467 only returns banner messages that has show_in_cli as true2468 #ended?2469 is truthy when ends_at has passed2470 is falsey when ends_at is in the future2471 #started?2472 is truthy when starts_at has passed2473 is falsey when starts_at is in the future2474 .current_notification_messages2475 only returns notifications2476 behaves like time constrained2477 returns message if time match2478 returns multiple messages if time match2479 returns empty list if time not come2480 returns empty list if time has passed2481 behaves like message cache2482 caches the output of the query for two weeks2483 expires the value if a broadcast message has ended2484 does not create new records2485 includes messages that need to be displayed in the future2486 does not clear the cache if only a future message should be displayed2487 behaves like matches with current path2488 returns message if it matches the target path2489 returns message if part of the target path matches2490 returns message if provided a path without a preceding slash2491 returns the message for empty target path2492 returns the message if target path is nil2493 does not return message if target path does not match2494 does not return message if target path does not match when using wildcard2495 does not return message if target path has no wild card at the end2496 does not return message if target path has wild card at the end2497 does return message if target path has wild card at the beginning and the end2498 does not return message if the target path is set but no current path is provided2499 behaves like matches with user access level2500 when target_access_levels is empty2501 returns the message if user access level is not nil2502 returns the message if user access level is nil2503 when target_access_levels is not empty2504 does not return the message if user access level is nil2505 returns the message if user access level is in target_access_levels2506 does not return the message if user access level is not in target_access_levels2507 behaves like handles stale cache data gracefully2508 when cache returns stale data (e.g. nil target_access_levels)2509 does not raise error (e.g. NoMethodError from nil.empty?)2510 when message is from cache2511 behaves like matches with current path2512 returns message if it matches the target path2513 returns message if part of the target path matches2514 returns message if provided a path without a preceding slash2515 returns the message for empty target path2516 returns the message if target path is nil2517 does not return message if target path does not match2518 does not return message if target path does not match when using wildcard2519 does not return message if target path has no wild card at the end2520 does not return message if target path has wild card at the end2521 does return message if target path has wild card at the beginning and the end2522 does not return message if the target path is set but no current path is provided2523 behaves like matches with user access level2524 when target_access_levels is empty2525 returns the message if user access level is not nil2526 returns the message if user access level is nil2527 when target_access_levels is not empty2528 does not return the message if user access level is nil2529 returns the message if user access level is in target_access_levels2530 does not return the message if user access level is not in target_access_levels2531EmailsOnPushWorker2532 #perform2533 when push is a new branch2534 sends a mail with the correct subject2535 sends the mail to the correct recipient2536 when push is a deleted branch2537 sends a mail with the correct subject2538 sends the mail to the correct recipient2539 when push is a force push to delete commits2540DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2541DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2542DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2543DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2544 sends a mail with the correct subject2545DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2546DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2547DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2548DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2549 mentions force pushing in the body2550DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2551DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2552DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2553DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2554 sends the mail to the correct recipient2555 when there are no errors in sending2556DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2557DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2558DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2559DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2560 sends a mail with the correct subject2561DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2562DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2563DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2564DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2565 does not mention force pushing in the body2566DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2567DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2568DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2569DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2570 sends the mail to the correct recipient2571 when there is an SMTP error2572 gracefully handles an input SMTP error2573 when there are multiple recipients2574 with mixed-case recipient2575DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2576DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2577DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2578DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2579 retains the case2580 when the recipient addresses are a list of email addresses2581DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2582DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2583DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2584DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2585 sends the mail to each of the recipients2586DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2587DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2588DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2589DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2590 only generates the mail once2591 when SMIME signing is enabled2592DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2593DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2594DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2595DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2596 does not sign the email multiple times2597 when recipients are invalid2598 ignores them2599 when the recipient addresses contains angle brackets and are separated by spaces2600DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2601DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2602DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2603DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2604 accepts emails separated by whitespace2605 when the recipient addresses contain a mix of emails with and without angle brackets2606DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2607DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2608DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2609DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2610 accepts both kind of emails2611 when the recipient addresses contains angle brackets and are separated by newlines2612DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2613DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2614DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2615DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2616 accepts emails separated by newlines2617 when the recipient addresses contains duplicates2618DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2619DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_html_haml___182942350613636414_179172260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.html.haml:22)2620DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2621DEPRECATION WARNING: Time#to_s(:iso8601) is deprecated. Please use Time#to_fs(:iso8601) instead. (called from block in _app_views_notify_repository_push_email_text_haml___1338360929064607234_179177260 at /builds/gitlab-org/gitlab/app/views/notify/repository_push_email.text.haml:11)2622 deduplicates recipients while treating the domain part as case-insensitive2623ContainerRegistry::GitlabApiClient2624 #supports_gitlab_api?2625 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: false, expected_result: true2626 returns the expected result2627 registry_gitlab_api_enabled: true, is_on_dot_com: false, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: true, expected_result: true2628 returns the expected result2629 registry_gitlab_api_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true2630 returns the expected result2631 registry_gitlab_api_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true2632 returns the expected result2633 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: false, expected_result: true2634 returns the expected result2635 registry_gitlab_api_enabled: false, is_on_dot_com: false, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: true, expected_result: false2636 returns the expected result2637 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false2638 returns the expected result2639 registry_gitlab_api_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false2640 returns the expected result2641 with 401 response2642 is expected to be truthy2643 #pre_import_repository2644 status_code: 200, expected_result: :already_imported2645 is expected to eq :already_imported2646 status_code: 202, expected_result: :ok2647 is expected to eq :ok2648 status_code: 400, expected_result: :bad_request2649 is expected to eq :bad_request2650 status_code: 401, expected_result: :unauthorized2651 is expected to eq :unauthorized2652 status_code: 404, expected_result: :not_found2653 is expected to eq :not_found2654 status_code: 409, expected_result: :already_being_imported2655 is expected to eq :already_being_imported2656 status_code: 418, expected_result: :error2657 is expected to eq :error2658 status_code: 424, expected_result: :pre_import_failed2659 is expected to eq :pre_import_failed2660 status_code: 425, expected_result: :already_being_imported2661 is expected to eq :already_being_imported2662 status_code: 429, expected_result: :too_many_imports2663 is expected to eq :too_many_imports2664 #import_repository2665 status_code: 200, expected_result: :already_imported2666 is expected to eq :already_imported2667 status_code: 202, expected_result: :ok2668 is expected to eq :ok2669 status_code: 400, expected_result: :bad_request2670 is expected to eq :bad_request2671 status_code: 401, expected_result: :unauthorized2672 is expected to eq :unauthorized2673 status_code: 404, expected_result: :not_found2674 is expected to eq :not_found2675 status_code: 409, expected_result: :already_being_imported2676 is expected to eq :already_being_imported2677 status_code: 418, expected_result: :error2678 is expected to eq :error2679 status_code: 424, expected_result: :pre_import_failed2680 is expected to eq :pre_import_failed2681 status_code: 425, expected_result: :already_being_imported2682 is expected to eq :already_being_imported2683 status_code: 429, expected_result: :too_many_imports2684 is expected to eq :too_many_imports2685 #cancel_repository_import2686 status_code: 200, expected_result: :already_imported2687 is expected to eq {:migration_state=>nil, :status=>:already_imported}2688 status_code: 202, expected_result: :ok2689 is expected to eq {:migration_state=>nil, :status=>:ok}2690 status_code: 400, expected_result: :bad_request2691 is expected to eq {:migration_state=>nil, :status=>:bad_request}2692 status_code: 401, expected_result: :unauthorized2693 is expected to eq {:migration_state=>nil, :status=>:unauthorized}2694 status_code: 404, expected_result: :not_found2695 is expected to eq {:migration_state=>nil, :status=>:not_found}2696 status_code: 409, expected_result: :already_being_imported2697 is expected to eq {:migration_state=>nil, :status=>:already_being_imported}2698 status_code: 418, expected_result: :error2699 is expected to eq {:migration_state=>nil, :status=>:error}2700 status_code: 424, expected_result: :pre_import_failed2701 is expected to eq {:migration_state=>nil, :status=>:pre_import_failed}2702 status_code: 425, expected_result: :already_being_imported2703 is expected to eq {:migration_state=>nil, :status=>:already_being_imported}2704 status_code: 429, expected_result: :too_many_imports2705 is expected to eq {:migration_state=>nil, :status=>:too_many_imports}2706 bad request2707 is expected to eq {:migration_state=>"this_is_a_test", :status=>:bad_request}2708 force cancel2709 is expected to eq {:migration_state=>nil, :status=>:ok}2710 #import_status2711 with successful response2712 with a status2713 is expected to eq "this_is_a_test"2714 with no status2715 is expected to eq "error"2716 with non successful response2717 is expected to eq "pre_import_failed"2718 #repository_details2719 with sizing self2720 is expected to eq {"foo"=>"bar", "this"=>"is_a_test"}2721 with sizing self_with_descendants2722 is expected to eq {"foo"=>"bar", "this"=>"is_a_test"}2723 with sizing2724 is expected to eq {"foo"=>"bar", "this"=>"is_a_test"}2725 with non successful response2726 is expected to eq {}2727 #tags2728 with valid parameters2729 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2023-06-26T14:36:07.743Z", "digest"=>"sha256:12345...a_type"=>"application/vnd.oci.image.manifest.v1+json", "name"=>"latest", "size_bytes"=>1234567892}]}2730 with a response with a link header2731 is expected to eq {:pagination=>{:next=>{:uri=>#<URI::HTTP http://sandbox.org/test?last=b>}}, :response_body=>[{"create...a_type"=>"application/vnd.oci.image.manifest.v1+json", "name"=>"latest", "size_bytes"=>1234567892}]}2732 with a large page size set2733 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2023-06-26T14:36:07.807Z", "digest"=>"sha256:12345...a_type"=>"application/vnd.oci.image.manifest.v1+json", "name"=>"latest", "size_bytes"=>1234567892}]}2734 with a last parameter set2735 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2023-06-26T14:36:07.840Z", "digest"=>"sha256:12345...a_type"=>"application/vnd.oci.image.manifest.v1+json", "name"=>"latest", "size_bytes"=>1234567892}]}2736 with non successful response2737 logs an error and returns an empty hash2738 #sub_repositories_with_tag2739 with valid parameters2740 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2022-06-07T12:11:13.633+00:00", "name"=>"docker-al...git-base", "path"=>"gitlab-org/build/cng/git-base", "updated_at"=>"2022-06-07T14:37:49.251+00:00"}]}2741 with a response with a link header2742 is expected to eq {:pagination=>{:next=>{:uri=>#<URI::HTTP http://sandbox.org/test?last=c>}}, :response_body=>[{"create...git-base", "path"=>"gitlab-org/build/cng/git-base", "updated_at"=>"2022-06-07T14:37:49.251+00:00"}]}2743 with a large page size set2744 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2022-06-07T12:11:13.633+00:00", "name"=>"docker-al...git-base", "path"=>"gitlab-org/build/cng/git-base", "updated_at"=>"2022-06-07T14:37:49.251+00:00"}]}2745 with a last parameter set2746 is expected to eq {:pagination=>{}, :response_body=>[{"created_at"=>"2022-06-07T12:11:13.633+00:00", "name"=>"docker-al...git-base", "path"=>"gitlab-org/build/cng/git-base", "updated_at"=>"2022-06-07T14:37:49.251+00:00"}]}2747 with non successful response2748 logs an error and returns an empty hash2749 .supports_gitlab_api?2750 registry_gitlab_api_enabled: true, is_on_dot_com: true, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: false, expected_result: true2751 returns the expected result2752 registry_gitlab_api_enabled: true, is_on_dot_com: false, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: true, expected_result: true2753 returns the expected result2754 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: false, expected_result: true2755 returns the expected result2756 registry_gitlab_api_enabled: false, is_on_dot_com: false, container_registry_features: ["gitlab_v1_api"], expect_registry_to_be_pinged: true, expected_result: false2757 returns the expected result2758 registry_gitlab_api_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true2759 returns the expected result2760 registry_gitlab_api_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true2761 returns the expected result2762 registry_gitlab_api_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false2763 returns the expected result2764 registry_gitlab_api_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false2765 returns the expected result2766 with the registry disabled2767 returns false2768 with a blank registry url2769 returns false2770 .deduplicated_size2771 with successful response2772 is expected to eq 5552773 with unsuccessful response2774 is expected to eq nil2775 with the registry disabled2776 is expected to eq nil2777 with a nil path2778 is expected to eq nil2779 with uppercase path2780 is expected to eq 5552781 .one_project_with_container_registry_tag2782 with successful response2783 behaves like fetching the project from container repository and path2784 fetches the project from the given path details2785 returns nil when path is invalid2786 returns nil when there is no container_repository matching the path2787 with unsuccessful response2788 is expected to eq nil2789 with uppercase path2790 behaves like fetching the project from container repository and path2791 fetches the project from the given path details2792 returns nil when path is invalid2793 returns nil when there is no container_repository matching the path2794 #each_sub_repositories_with_tag_page2795 when no block is given2796 raises an Argument error2797 when a block is given2798 with an empty page2799 behaves like iterating through a page2800 iterates through one page2801 with one page2802 behaves like iterating through a page2803 iterates through one page2804 with two pages2805 iterates through two pages2806 when max pages is reached2807 raises an error2808 without a page size set2809 uses a default size2810 with an empty client response2811 breaks the loop2812 with a nil page2813 behaves like iterating through a page2814 iterates through one page2815Integrations::Bamboo2816 behaves like Integrations::BaseCi2817 default values2818 is expected to eq :ci2819 behaves like Integrations::ResetSecretFields2820 #exposing_secrets_fields2821 returns an array of strings2822 #reset_secret_fields?2823 returns false if no exposing field has changed2824 returns true if any exposing field has changed2825 validation callback2826 when an exposing field has changed2827 clears all secret fields2828 when a secret field has been updated2829 does not clear this secret field2830 when a secret field has been updated with the same value2831 does not clear this secret field2832 when no exposing field has changed2833 does not clear any secret fields2834 accessors2835 is expected to respond to #enable_ssl_verification2836 is expected to respond to #enable_ssl_verification?2837 #initialize_properties2838 enables the setting by default2839 does not enable the setting if the record is already persisted2840 does not enable the setting if a custom value was set2841 #fields2842 inserts the checkbox field after the first URL field, or at the end2843 does not insert the field repeatedly2844 Validations2845 when active2846 is expected to validate that :build_key cannot be empty/falsy2847 is expected to validate that :bamboo_url cannot be empty/falsy2848 behaves like issue tracker integration URL attribute2849 is expected to allow :bamboo_url to be ‹"https://example.com"›2850 is expected not to allow :bamboo_url to be ‹"example.com"›2851 is expected not to allow :bamboo_url to be ‹"ftp://example.com"›2852 is expected not to allow :bamboo_url to be ‹"herp-and-derp"›2853 #username2854 does not validate the presence of username if password is nil2855 validates the presence of username if password is present2856 #password2857 does not validate the presence of password if username is nil2858 validates the presence of password if username is present2859 when inactive2860 is expected not to validate that :build_key cannot be empty/falsy2861 is expected not to validate that :bamboo_url cannot be empty/falsy2862 is expected not to validate that :username cannot be empty/falsy2863 is expected not to validate that :password cannot be empty/falsy2864 #execute2865 runs update and build action2866 #build_page2867 returns the contents of the reactive cache2868 #commit_status2869 returns the contents of the reactive cache2870 #calculate_reactive_cache2871 when Bamboo API returns single result2872 behaves like reactive cache calculation2873 #build_page2874 returns a specific URL when status is 5002875 returns a specific URL when response has no results2876 returns a build URL when bamboo_url has no trailing slash2877 bamboo_url has trailing slash2878 returns a build URL2879 #commit_status2880 sets commit status to :error when status is 5002881 sets commit status to "pending" when status is 4042882 sets commit status to "pending" when response has no results2883 sets commit status to "success" when build state contains Success2884 sets commit status to "failed" when build state contains Failed2885 sets commit status to "pending" when build state contains Pending2886 sets commit status to :error when build state is unknown2887 sets commit status to :error with a Net::OpenTimeout error2888 sets commit status to :error with a Net::ReadTimeout error2889 sets commit status to :error with a Net::WriteTimeout error2890 sets commit status to :error with a Gitlab::HTTP::ReadTotalTimeout error2891 sets commit status to :error with a EOFError error2892 sets commit status to :error with a SocketError error2893 sets commit status to :error with a OpenSSL::SSL::SSLError error2894 sets commit status to :error with a OpenSSL::OpenSSLError error2895 sets commit status to :error with a Errno::ECONNRESET error2896 sets commit status to :error with a Errno::ECONNREFUSED error2897 sets commit status to :error with a Errno::EHOSTUNREACH error2898 sets commit status to :error with a Errno::ENETUNREACH error2899 sets commit status to :error with a Gitlab::HTTP::BlockedUrlError error2900 sets commit status to :error with a Gitlab::HTTP::RedirectionTooDeep error2901 sets commit status to :error with a Net::HTTPBadResponse error2902 when Bamboo API returns an array of results and we only consider the last one2903 behaves like reactive cache calculation2904 #build_page2905 returns a specific URL when status is 5002906 returns a specific URL when response has no results2907 returns a build URL when bamboo_url has no trailing slash2908 bamboo_url has trailing slash2909 returns a build URL2910 #commit_status2911 sets commit status to :error when status is 5002912 sets commit status to "pending" when status is 4042913 sets commit status to "pending" when response has no results2914 sets commit status to "success" when build state contains Success2915 sets commit status to "failed" when build state contains Failed2916 sets commit status to "pending" when build state contains Pending2917 sets commit status to :error when build state is unknown2918 sets commit status to :error with a Net::OpenTimeout error2919 sets commit status to :error with a Net::ReadTimeout error2920 sets commit status to :error with a Net::WriteTimeout error2921 sets commit status to :error with a Gitlab::HTTP::ReadTotalTimeout error2922 sets commit status to :error with a EOFError error2923 sets commit status to :error with a SocketError error2924 sets commit status to :error with a OpenSSL::SSL::SSLError error2925 sets commit status to :error with a OpenSSL::OpenSSLError error2926 sets commit status to :error with a Errno::ECONNRESET error2927 sets commit status to :error with a Errno::ECONNREFUSED error2928 sets commit status to :error with a Errno::EHOSTUNREACH error2929 sets commit status to :error with a Errno::ENETUNREACH error2930 sets commit status to :error with a Gitlab::HTTP::BlockedUrlError error2931 sets commit status to :error with a Gitlab::HTTP::RedirectionTooDeep error2932 sets commit status to :error with a Net::HTTPBadResponse error2933MergeRequests::ApprovalService2934 #execute2935 with invalid approval2936 does not reset approvals2937 does not track merge request approve action2938 does not publish MergeRequests::ApprovedEvent2939 behaves like does not trigger GraphQL subscription mergeRequestMergeStatusUpdated2940 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2941 behaves like does not trigger GraphQL subscription mergeRequestReviewersUpdated2942 is expected not to receive merge_request_reviewers_updated(*(any args)) 0 times2943 with an already approved MR2944 does not create an approval2945 behaves like does not trigger GraphQL subscription mergeRequestMergeStatusUpdated2946 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2947 behaves like does not trigger GraphQL subscription mergeRequestReviewersUpdated2948 is expected not to receive merge_request_reviewers_updated(*(any args)) 0 times2949 with valid approval2950 resets approvals2951 tracks merge request approve action2952 publishes MergeRequests::ApprovedEvent2953 behaves like triggers GraphQL subscription mergeRequestMergeStatusUpdated2954 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:44 namespace404/project-433!1>) 1 time2955 behaves like triggers GraphQL subscription mergeRequestReviewersUpdated2956 is expected to receive merge_request_reviewers_updated(#<MergeRequest id:45 namespace405/project-434!1>) 1 time2957 behaves like triggers GraphQL subscription mergeRequestApprovalStateUpdated2958 is expected to receive merge_request_approval_state_updated(#<MergeRequest id:46 namespace406/project-435!1>) 1 time2959 user cannot update the merge request2960 does not update approvals2961 behaves like does not trigger GraphQL subscription mergeRequestMergeStatusUpdated2962 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times2963 behaves like does not trigger GraphQL subscription mergeRequestReviewersUpdated2964 is expected not to receive merge_request_reviewers_updated(*(any args)) 0 times2965 behaves like does not trigger GraphQL subscription mergeRequestApprovalStateUpdated2966 is expected not to receive merge_request_approval_state_updated(*(any args)) 0 times2967Integrations::HangoutsChat2968 behaves like chat integration2969 Associations2970 is expected to belong to project required: false2971 Validations2972 when integration is active2973 is expected to validate that :webhook cannot be empty/falsy2974 behaves like issue tracker integration URL attribute2975 is expected to allow :webhook to be ‹"https://example.com"›2976 is expected not to allow :webhook to be ‹"example.com"›2977 is expected not to allow :webhook to be ‹"ftp://example.com"›2978 is expected not to allow :webhook to be ‹"herp-and-derp"›2979 when integration is inactive2980 is expected not to validate that :webhook cannot be empty/falsy2981 .supported_events2982 does not support deployment_events2983 #execute2984 with push events2985 behaves like triggered Hangouts Chat integration2986 calls Hangouts Chat API2987 with default branch2988 when only default branch are to be notified2989 behaves like triggered Hangouts Chat integration2990 calls Hangouts Chat API2991 when only protected branches are to be notified2992 behaves like untriggered Hangouts Chat integration2993 does not call Hangouts Chat API2994 when default and protected branches are to be notified2995 behaves like triggered Hangouts Chat integration2996 calls Hangouts Chat API2997 when all branches are to be notified2998 behaves like triggered Hangouts Chat integration2999 calls Hangouts Chat API3000 with protected branch3001 when only default branch are to be notified3002 behaves like untriggered Hangouts Chat integration3003 does not call Hangouts Chat API3004 when only protected branches are to be notified3005 behaves like triggered Hangouts Chat integration3006 calls Hangouts Chat API3007 when default and protected branches are to be notified3008 behaves like triggered Hangouts Chat integration3009 calls Hangouts Chat API3010 when all branches are to be notified3011 behaves like triggered Hangouts Chat integration3012 calls Hangouts Chat API3013 with neither default nor protected branch3014 when only default branch are to be notified3015 behaves like untriggered Hangouts Chat integration3016 does not call Hangouts Chat API3017 when only protected branches are to be notified3018 behaves like untriggered Hangouts Chat integration3019 does not call Hangouts Chat API3020 when default and protected branches are to be notified3021 behaves like untriggered Hangouts Chat integration3022 does not call Hangouts Chat API3023 when all branches are to be notified3024 behaves like triggered Hangouts Chat integration3025 calls Hangouts Chat API3026 with issue events3027 behaves like triggered Hangouts Chat integration3028 calls Hangouts Chat API3029 with merge events3030 behaves like triggered Hangouts Chat integration3031 calls Hangouts Chat API3032 with wiki page events3033 behaves like triggered Hangouts Chat integration3034 calls Hangouts Chat API3035 with note events3036 with commit comment3037 behaves like triggered Hangouts Chat integration3038 calls Hangouts Chat API3039 with merge request comment3040 behaves like triggered Hangouts Chat integration3041 calls Hangouts Chat API3042 with issue comment3043 behaves like triggered Hangouts Chat integration3044 calls Hangouts Chat API3045 with snippet comment3046 behaves like triggered Hangouts Chat integration3047 calls Hangouts Chat API3048 with pipeline events3049 with failed pipeline3050 behaves like triggered Hangouts Chat integration3051 calls Hangouts Chat API3052 with succeeded pipeline3053 with default notify_only_broken_pipelines3054 does not call Hangouts Chat API3055 when notify_only_broken_pipelines is false3056 behaves like triggered Hangouts Chat integration3057 calls Hangouts Chat API3058 with default branch3059 when only default branch are to be notified3060 behaves like triggered Hangouts Chat integration3061 calls Hangouts Chat API3062 when only protected branches are to be notified3063 behaves like untriggered Hangouts Chat integration3064 does not call Hangouts Chat API3065 when default and protected branches are to be notified3066 behaves like triggered Hangouts Chat integration3067 calls Hangouts Chat API3068 when all branches are to be notified3069 behaves like triggered Hangouts Chat integration3070 calls Hangouts Chat API3071 with protected branch3072 when only default branch are to be notified3073 behaves like untriggered Hangouts Chat integration3074 does not call Hangouts Chat API3075 when only protected branches are to be notified3076 behaves like triggered Hangouts Chat integration3077 calls Hangouts Chat API3078 when default and protected branches are to be notified3079 behaves like triggered Hangouts Chat integration3080 calls Hangouts Chat API3081 when all branches are to be notified3082 behaves like triggered Hangouts Chat integration3083 calls Hangouts Chat API3084 with neither default nor protected branch3085 when only default branch are to be notified3086 behaves like untriggered Hangouts Chat integration3087 does not call Hangouts Chat API3088 when only protected branches are to be notified3089 behaves like untriggered Hangouts Chat integration3090 does not call Hangouts Chat API3091 when default and protected branches are to be notified3092 behaves like untriggered Hangouts Chat integration3093 does not call Hangouts Chat API3094 when all branches are to be notified3095 behaves like triggered Hangouts Chat integration3096 calls Hangouts Chat API3097 deployment events3098 behaves like untriggered Hangouts Chat integration3099 does not call Hangouts Chat API3100 #execute3101 with push events3102 adds thread key for push events3103 with issue events3104 adds thread key for issue events3105 with merge events3106 adds thread key for merge events3107 with wiki page events3108 adds thread key for wiki page events3109 with pipeline events3110 adds thread key for pipeline events3111 Note events3112 when commit comment event executed3113 adds thread key3114 when merge request comment event executed3115 adds thread key3116 when issue comment event executed3117 adds thread key3118 when snippet comment event executed3119 adds thread key3120Integrations::HasDataFields3121 when data are stored in data_fields3122 behaves like data fields3123 #arg3124 returns the expected values3125 {arg}_changed?3126 returns false when the property has not been assigned a new value3127 returns true when the property has been assigned a different value3128 returns true when the property has been assigned a different value twice3129 returns false when the property has been re-assigned the same value3130 {arg}_touched?3131 returns false when the property has not been assigned a new value3132 returns true when the property has been assigned a different value3133 returns true when the property has been assigned a different value twice3134 returns true when the property has been re-assigned the same value3135 returns false when the property has been re-assigned the same value3136 data_fields_present?3137 returns true from the issue tracker integration3138 {arg}_was?3139 returns nil3140 when integration and data_fields are not persisted3141 data_fields_present?3142 returns true3143 when data are stored in properties3144 behaves like data fields3145 #arg3146 returns the expected values3147 {arg}_changed?3148 returns false when the property has not been assigned a new value3149 returns true when the property has been assigned a different value3150 returns true when the property has been assigned a different value twice3151 returns false when the property has been re-assigned the same value3152 {arg}_touched?3153 returns false when the property has not been assigned a new value3154 returns true when the property has been assigned a different value3155 returns true when the property has been assigned a different value twice3156 returns true when the property has been re-assigned the same value3157 returns false when the property has been re-assigned the same value3158 data_fields_present?3159 returns true from the issue tracker integration3160 {arg}_was?3161 returns nil when the property has not been assigned a new value3162 returns initial value when the property has been assigned a different value3163 returns initial value when the property has been re-assigned the same value3164 when data are stored in both properties and data_fields3165 behaves like data fields3166 #arg3167 returns the expected values3168 {arg}_changed?3169 returns false when the property has not been assigned a new value3170 returns true when the property has been assigned a different value3171 returns true when the property has been assigned a different value twice3172 returns false when the property has been re-assigned the same value3173 {arg}_touched?3174 returns false when the property has not been assigned a new value3175 returns true when the property has been assigned a different value3176 returns true when the property has been assigned a different value twice3177 returns true when the property has been re-assigned the same value3178 returns false when the property has been re-assigned the same value3179 data_fields_present?3180 returns true from the issue tracker integration3181 {arg}_was?3182 returns nil3183Ability3184 using a nil subject3185 has no permissions3186 .users_that_can_read_project3187 using a public project3188 returns all the users3189 using an internal project3190 returns users that are administrators3191 returns internal users while skipping external users3192 returns external users if they are the project owner3193 returns external users if they are project members3194 returns an empty Array if all users are external users without access3195 using a private project3196 returns users that are administrators when admin mode is enabled3197 does not return users that are administrators when admin mode is disabled3198 returns external users if they are the project owner3199 returns external users if they are project members3200 returns an empty Array if all users are internal users without access3201 returns an empty Array if all users are external users without access3202 .users_that_can_read_personal_snippet3203 private snippet is readable only by its author3204 public snippet is readable by all users3205 .users_that_can_read_internal_note3206 for groups3207 behaves like filtering users that can read internal note3208 returns users that can read internal notes3209 for projects3210 behaves like filtering users that can read internal note3211 returns users that can read internal notes3212 .merge_requests_readable_by_user3213 with an admin when admin mode is enabled3214 returns all merge requests3215 with an admin when admin mode is disabled3216 returns merge_requests that are publicly visible3217 without a user3218 returns merge_requests that are publicly visible3219 with a user3220 returns projects visible to the user3221 when a user cannot read cross project and a filter is passed3222 returns only MRs of the specified project without checking access on others3223 .issues_readable_by_user3224 with an admin when admin mode is enabled3225 returns all given issues3226 with an admin when admin mode is disabled3227 returns the issues readable by the admin3228 returns no issues when not given access3229 with a regular user3230 returns the issues readable by the user3231 returns an empty Array when no issues are readable3232 without a regular user3233 returns issues that are publicly visible3234 when the user cannot read cross project3235 excludes issues from other projects whithout checking separatly when passing a scope3236 .feature_flags_readable_by_user3237 without a user3238 returns no feature flags3239 with a user3240 returns feature flags visible to the user3241 when a user cannot read cross project and a filter is passed3242 returns only feature flags of the specified project without checking access on others3243 .project_disabled_features_rules3244 wiki named abilities3245 disables wiki abilities if the project has no wiki3246 forgetting3247 allows us to discard specific values from the DeclarativePolicy cache3248 when bypassing the session3249 allows us to have re-entrant evaluation of admin-only permissions3250SystemNotes::TimeTrackingService3251 #change_start_date_or_due_date3252 when noteable is an issue3253DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3254DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3255 does not track the work item event in usage ping3256DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3257DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3258 tracks the issue event3259 behaves like issuable getting date change notes3260 behaves like a note with overridable created_at3261DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3262DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3263 the note has the correct time3264 behaves like a system note3265DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3266DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3267 has the correct attributes3268 when both dates are added3269DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3270DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3271DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (5 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:28)3272DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (5 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:28)3273 sets the correct note message3274 when both dates are removed3275DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:150)3276DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:150)3277DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (5 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:40)3278DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (5 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:40)3279 sets the correct note message3280 when due date is added3281DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3282DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (5 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:48)3283 sets the correct note message3284 and start date removed3285DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:150)3286DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3287DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (6 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:55)3288DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (6 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:55)3289 sets the correct note message3290 when start_date is added3291DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3292 does not track the issue event3293DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3294 does not emit snowplow event3295DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3296DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (5 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:76)3297 sets the correct note message3298 and due date removed3299DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3300DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:150)3301DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (6 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:83)3302DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (6 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:83)3303 sets the correct note message3304 when no dates are changed3305 does not create a note and returns nil3306 behaves like issue_edit snowplow tracking3307 behaves like Snowplow event tracking with RedisHLL context3308 behaves like Snowplow event tracking3309DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3310DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3311 is emitted3312 when only start_date is added3313DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3314 does not track the issue event in usage ping3315 when noteable is a work item3316DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3317DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3318 does not track the issue event3319DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3320DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3321 does not emit snowplow event3322 behaves like issuable getting date change notes3323 behaves like a note with overridable created_at3324DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3325DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3326 the note has the correct time3327 behaves like a system note3328DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3329DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3330 has the correct attributes3331 when both dates are added3332DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3333DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3334DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (5 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:28)3335DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (5 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:28)3336 sets the correct note message3337 when both dates are removed3338DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:150)3339DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:150)3340DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (5 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:40)3341DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (5 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:40)3342 sets the correct note message3343 when due date is added3344DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3345DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (5 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:48)3346 sets the correct note message3347 and start date removed3348DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:150)3349DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3350DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (6 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:55)3351DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (6 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:55)3352 sets the correct note message3353 when start_date is added3354DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3355 does not track the issue event3356DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3357 does not emit snowplow event3358DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3359DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (5 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:76)3360 sets the correct note message3361 and due date removed3362DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3363DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:150)3364DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (6 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:83)3365DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from block (6 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/services/system_notes/time_tracking_service_spec.rb:83)3366 sets the correct note message3367 when no dates are changed3368 does not create a note and returns nil3369 when only start_date is added3370DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3371 tracks the issue event in usage ping3372 when noteable is a merge request3373DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3374DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3375 does not track the issue event3376DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3377DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3378 does not track the work item event in usage ping3379DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3380DEPRECATION WARNING: Date#to_s(:long) is deprecated. Please use Date#to_fs(:long) instead. (called from message_for_changed_date at /builds/gitlab-org/gitlab/app/services/system_notes/time_tracking_service.rb:152)3381 does not emit snowplow event3382 #change_time_estimate3383 when noteable is an issue3384 tracks the issue event in usage ping3385 behaves like a system note3386 has the correct attributes3387 with a time estimate3388 sets the note text3389 when time_tracking_limit_to_hours setting is true3390 sets the note text3391 without a time estimate3392 sets the note text3393 behaves like issue_edit snowplow tracking3394 behaves like Snowplow event tracking with RedisHLL context3395 behaves like Snowplow event tracking3396 is emitted3397 when noteable is a merge request3398 does not track the issue event3399 does not emit snowplow event3400 #create_timelog3401 when the timelog has a positive time spent value3402 sets the note text3403 when the timelog has a negative time spent value3404 sets the note text3405 #remove_timelog3406 when the timelog has a positive time spent value3407 sets the note text3408 when the timelog has a negative time spent value3409 sets the note text3410 #change_time_spent3411 when noteable is an issue3412 behaves like a system note3413 has the correct attributes3414 when time was added3415 sets the note text3416 tracks the issue event3417 when time was subtracted3418 sets the note text3419 when time was removed3420 sets the note text3421 when time_tracking_limit_to_hours setting is true3422 sets the note text3423 behaves like issue_edit snowplow tracking3424 behaves like Snowplow event tracking with RedisHLL context3425 behaves like Snowplow event tracking3426 is emitted3427 when noteable is a merge request3428 does not track the issue event3429 does not emit snowplow event3430Ci::BuildDependencies3431 for local dependencies3432 jobs from previous stages3433 when job is in the first stage3434 is expected to be empty3435 when job is in the second stage3436 contains all jobs from the first stage3437 when job is in the last stage3438 contains all jobs from all previous stages3439 when a job is retried3440 contains the retried job instead of the original one3441 when needs refer to jobs from the same stage3442 is expected to contain exactly #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-26 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 181, stage_id: 116, partition_id: 100, tag_list: nil>3443 jobs from specified dependencies3444 when dependencies are defined3445 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2023-06-26 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 187, stage_id: 118, partition_id: 100, tag_list: nil> and #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-26 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 186, stage_id: 119, partition_id: 100, tag_list: nil>3446 when needs are defined3447 is expected to contain exactly #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-26 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 189, stage_id: 120, partition_id: 100, tag_list: nil>, #<Ci::Build status: "success", finished_at: "2023-06-26 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 192, stage_id: 121, partition_id: 100, tag_list: nil>, and #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-26 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 191, stage_id: 122, partition_id: 100, tag_list: nil>3448 when need artifacts are defined3449 is expected to contain exactly #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-26 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 194, stage_id: 123, partition_id: 100, tag_list: nil> and #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-26 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 196, stage_id: 125, partition_id: 100, tag_list: nil>3450 when needs and dependencies are defined3451 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2023-06-26 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 202, stage_id: 127, partition_id: 100, tag_list: nil> and #<Ci::Build status: "pending", finished_at: nil, created_at: "2023-06-26 08:50:29.000000000 +0000", u...rocessed: false, scheduling_type: "stage", id: 201, stage_id: 128, partition_id: 100, tag_list: nil>3452 when needs and dependencies contradict3453 returns only the intersection3454 when nor dependencies or needs are defined3455 returns the jobs from previous stages3456 for cross_pipeline dependencies3457 when dependency specifications are valid3458 when pipeline exists in the hierarchy3459 when job exists3460 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2023-06-26 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 219, stage_id: 135, partition_id: 100, tag_list: nil>3461 is expected to be valid3462 when pipeline and job are specified via variables3463 is expected to contain exactly #<Ci::Build status: "success", finished_at: "2023-06-26 08:53:29.000000000 +0000", created_at: "2023-...rocessed: false, scheduling_type: "stage", id: 234, stage_id: 143, partition_id: 100, tag_list: nil>3464 is expected to be valid3465 when same job names exist in other pipelines in the hierarchy3466 returns a limited number of dependencies with the right match3467 when job does not exist3468 is expected to be empty3469 is expected not to be valid3470 when pipeline does not exist3471 is expected to be empty3472 is expected not to be valid3473 when jobs exist in different pipelines in the hierarchy3474 when pipeline and jobs dependencies are mismatched3475 is expected to be empty3476 is expected not to be valid3477 when dependencies contain a valid pair3478 filters out the invalid ones3479 is expected not to be valid3480 when job and pipeline exist outside the hierarchy3481 ignores jobs outside the pipeline hierarchy3482 is expected not to be valid3483 when current pipeline is specified3484 ignores jobs from the current pipeline as simple needs should be used instead3485 is expected not to be valid3486 when artifacts:false3487 is expected to be empty3488 is expected to be valid3489 #all3490 returns the union of all local dependencies and any cross project dependencies3491 #valid?3492 is expected to eq true3493 when a local dependency is invalid3494 is expected to eq false3495ProjectAPICompatibility3496 converts build_git_strategy=fetch to build_allow_git_fetch=true3497 converts build_git_strategy=clone to build_allow_git_fetch=false3498 #auto_devops_enabled3499 initial: :missing, final: nil3500 sets the correct value3501 initial: :missing, final: false3502 sets the correct value3503 initial: :missing, final: true3504 sets the correct value3505 initial: nil, final: nil3506 sets the correct value3507 initial: nil, final: false3508 sets the correct value3509 initial: nil, final: true3510 sets the correct value3511 initial: false, final: nil3512 sets the correct value3513 initial: false, final: false3514 sets the correct value3515 initial: false, final: true3516 sets the correct value3517 initial: true, final: nil3518 sets the correct value3519 initial: true, final: false3520 sets the correct value3521 initial: true, final: true3522 sets the correct value3523 #auto_devops_deploy_strategy3524 initial: :missing, final: "continuous"3525 sets the correct value3526 initial: :missing, final: "manual"3527 sets the correct value3528 initial: :missing, final: "timed_incremental"3529 sets the correct value3530 initial: "continuous", final: "continuous"3531 sets the correct value3532 initial: "continuous", final: "manual"3533 sets the correct value3534 initial: "continuous", final: "timed_incremental"3535 sets the correct value3536 initial: "manual", final: "continuous"3537 sets the correct value3538 initial: "manual", final: "manual"3539 sets the correct value3540 initial: "manual", final: "timed_incremental"3541 sets the correct value3542 initial: "timed_incremental", final: "continuous"3543 sets the correct value3544 initial: "timed_incremental", final: "manual"3545 sets the correct value3546 initial: "timed_incremental", final: "timed_incremental"3547 sets the correct value3548Projects::ImportExport::ExportService3549 #execute3550 saves the version3551 saves the avatar3552 saves the models3553 saves the uploads3554 saves the repo (PENDING: No reason given)3555 saves the wiki repo3556 saves the design repo3557 saves the lfs objects3558 saves the snippets3559 avoids N+1 when exporting project members3560 when all saver services succeed3561 logs a successful message3562 saves the project in the file system3563 calls the after export strategy3564 when the upload fails3565 notifies the user of an error3566 when after export strategy fails3567 removes the remaining exported data3568 notifies the user3569 notifies logger3570 when saving services fail3571 removes the remaining exported data3572 notifies the user3573 notifies logger3574 does not call the export strategy3575 when one of the savers fail unexpectedly3576 removes the remaining exported data3577 when user does not have admin_project permission3578 fails3579Pages::InvalidateDomainCacheWorker3580 when a project have multiple domains3581 clears the cache with Gitlab::Pages::CacheControl3582 behaves like clears caches with3583 clears the cache with Gitlab::Pages::CacheControl3584 behaves like subscribes to event3585 consumes the published event3586 behaves like an idempotent worker3587 is labeled as idempotent3588 performs multiple times sequentially without raising an exception3589 behaves like clears caches with3590 clears the cache with Gitlab::Pages::CacheControl3591 behaves like subscribes to event3592 consumes the published event3593 behaves like an idempotent worker3594 is labeled as idempotent3595 performs multiple times sequentially without raising an exception3596 behaves like clears caches with3597 clears the cache with Gitlab::Pages::CacheControl3598 behaves like subscribes to event3599 consumes the published event3600 behaves like an idempotent worker3601 is labeled as idempotent3602 performs multiple times sequentially without raising an exception3603 behaves like clears caches with3604 clears the cache with Gitlab::Pages::CacheControl3605 behaves like subscribes to event3606 consumes the published event3607 behaves like an idempotent worker3608 is labeled as idempotent3609 performs multiple times sequentially without raising an exception3610 behaves like clears caches with3611 clears the cache with Gitlab::Pages::CacheControl3612 behaves like subscribes to event3613 consumes the published event3614 behaves like an idempotent worker3615 is labeled as idempotent3616 performs multiple times sequentially without raising an exception3617 behaves like clears caches with3618 clears the cache with Gitlab::Pages::CacheControl3619 behaves like subscribes to event3620 consumes the published event3621 behaves like an idempotent worker3622 is labeled as idempotent3623 performs multiple times sequentially without raising an exception3624 behaves like clears caches with3625 clears the cache with Gitlab::Pages::CacheControl3626 behaves like subscribes to event3627 consumes the published event3628 behaves like an idempotent worker3629 is labeled as idempotent3630 performs multiple times sequentially without raising an exception3631 behaves like clears caches with3632 clears the cache with Gitlab::Pages::CacheControl3633 behaves like subscribes to event3634 consumes the published event3635 behaves like an idempotent worker3636 is labeled as idempotent3637 performs multiple times sequentially without raising an exception3638 behaves like clears caches with3639 clears the cache with Gitlab::Pages::CacheControl3640 behaves like subscribes to event3641 consumes the published event3642 behaves like an idempotent worker3643 is labeled as idempotent3644 performs multiple times sequentially without raising an exception3645 behaves like clears caches with3646 clears the cache with Gitlab::Pages::CacheControl3647 behaves like subscribes to event3648 consumes the published event3649 behaves like an idempotent worker3650 is labeled as idempotent3651 performs multiple times sequentially without raising an exception3652 behaves like clears caches with3653 clears the cache with Gitlab::Pages::CacheControl3654 behaves like subscribes to event3655 consumes the published event3656 behaves like an idempotent worker3657 is labeled as idempotent3658 performs multiple times sequentially without raising an exception3659 behaves like clears caches with3660 clears the cache with Gitlab::Pages::CacheControl3661 behaves like subscribes to event3662 consumes the published event3663 behaves like an idempotent worker3664 is labeled as idempotent3665 performs multiple times sequentially without raising an exception3666 behaves like clears caches with3667 clears the cache with Gitlab::Pages::CacheControl3668 behaves like subscribes to event3669 consumes the published event3670 behaves like an idempotent worker3671 is labeled as idempotent3672 performs multiple times sequentially without raising an exception3673 when project attributes change3674 behaves like clears caches with3675 clears the cache with Gitlab::Pages::CacheControl3676 behaves like subscribes to event3677 consumes the published event3678 behaves like an idempotent worker3679 is labeled as idempotent3680 performs multiple times sequentially without raising an exception3681 behaves like clears caches with3682 clears the cache with Gitlab::Pages::CacheControl3683 behaves like subscribes to event3684 consumes the published event3685 behaves like an idempotent worker3686 is labeled as idempotent3687 performs multiple times sequentially without raising an exception3688 behaves like ignores the published event3689 does not consume the published event3690 when project features change3691 behaves like clears caches with3692 clears the cache with Gitlab::Pages::CacheControl3693 behaves like subscribes to event3694 consumes the published event3695 behaves like an idempotent worker3696 is labeled as idempotent3697 performs multiple times sequentially without raising an exception3698 behaves like ignores the published event3699 does not consume the published event3700 when namespace based cache keys are duplicated3701 behaves like clears caches with3702 clears the cache with Gitlab::Pages::CacheControl3703 behaves like subscribes to event3704 consumes the published event3705 behaves like an idempotent worker3706 is labeled as idempotent3707 performs multiple times sequentially without raising an exception3708Ci::PipelineEntity3709 #as_json3710 when pipeline is empty3711 contains required fields3712 excludes coverage data when disabled3713 contains details3714 contains flags3715 when default branch not protected3716 when pipeline is retryable3717 does not serialize stage builds3718 user has ability to retry pipeline3719 contains retry path3720 user does not have ability to retry pipeline3721 does not contain retry path3722 when pipeline is cancelable3723 does not serialize stage builds3724 user has ability to cancel pipeline3725 contains cancel path3726 user does not have ability to cancel pipeline3727 does not contain cancel path3728 delete path3729 user has ability to delete pipeline3730 contains delete path3731 user does not have ability to delete pipeline3732 does not contain delete path3733 when pipeline ref is empty3734 does not generate branch path3735 when pipeline has a failure reason set3736 has a correct failure reason3737 when request has a project3738 when pipeline is detached merge request pipeline3739 makes detached flag true3740 does not expose source sha and target sha3741 when user is a developer3742 has merge request information3743 when user is an external user3744 has no merge request information3745 when pipeline is merge request pipeline3746 makes detached flag false3747 makes atached flag true3748 exposes source sha and target sha3749 exposes merge request event type3750 when pipeline has failed builds3751 when the user can retry the pipeline3752 exposes these failed builds3753 when the user cannot retry the pipeline3754 is nil3755 when pipeline has coverage3756 exposes the coverage3757Integrations::UnifyCircuit3758 behaves like chat integration3759 Associations3760 is expected to belong to project required: false3761 Validations3762 when integration is active3763 is expected to validate that :webhook cannot be empty/falsy3764 behaves like issue tracker integration URL attribute3765 is expected to allow :webhook to be ‹"https://example.com"›3766 is expected not to allow :webhook to be ‹"example.com"›3767 is expected not to allow :webhook to be ‹"ftp://example.com"›3768 is expected not to allow :webhook to be ‹"herp-and-derp"›3769 when integration is inactive3770 is expected not to validate that :webhook cannot be empty/falsy3771 .supported_events3772 does not support deployment_events3773 #execute3774 with push events3775 behaves like triggered Unify Circuit integration3776 calls Unify Circuit API3777 with default branch3778 when only default branch are to be notified3779 behaves like triggered Unify Circuit integration3780 calls Unify Circuit API3781 when only protected branches are to be notified3782 behaves like untriggered Unify Circuit integration3783 does not call Unify Circuit API3784 when default and protected branches are to be notified3785 behaves like triggered Unify Circuit integration3786 calls Unify Circuit API3787 when all branches are to be notified3788 behaves like triggered Unify Circuit integration3789 calls Unify Circuit API3790 with protected branch3791 when only default branch are to be notified3792 behaves like untriggered Unify Circuit integration3793 does not call Unify Circuit API3794 when only protected branches are to be notified3795 behaves like triggered Unify Circuit integration3796 calls Unify Circuit API3797 when default and protected branches are to be notified3798 behaves like triggered Unify Circuit integration3799 calls Unify Circuit API3800 when all branches are to be notified3801 behaves like triggered Unify Circuit integration3802 calls Unify Circuit API3803 with neither default nor protected branch3804 when only default branch are to be notified3805 behaves like untriggered Unify Circuit integration3806 does not call Unify Circuit API3807 when only protected branches are to be notified3808 behaves like untriggered Unify Circuit integration3809 does not call Unify Circuit API3810 when default and protected branches are to be notified3811 behaves like untriggered Unify Circuit integration3812 does not call Unify Circuit API3813 when all branches are to be notified3814 behaves like triggered Unify Circuit integration3815 calls Unify Circuit API3816 with issue events3817 behaves like triggered Unify Circuit integration3818 calls Unify Circuit API3819 with merge events3820 behaves like triggered Unify Circuit integration3821 calls Unify Circuit API3822 with wiki page events3823 behaves like triggered Unify Circuit integration3824 calls Unify Circuit API3825 with note events3826 with commit comment3827 behaves like triggered Unify Circuit integration3828 calls Unify Circuit API3829 with merge request comment3830 behaves like triggered Unify Circuit integration3831 calls Unify Circuit API3832 with issue comment3833 behaves like triggered Unify Circuit integration3834 calls Unify Circuit API3835 with snippet comment3836 behaves like triggered Unify Circuit integration3837 calls Unify Circuit API3838 with pipeline events3839 with failed pipeline3840 behaves like triggered Unify Circuit integration3841 calls Unify Circuit API3842 with succeeded pipeline3843 with default notify_only_broken_pipelines3844 does not call Unify Circuit API3845 when notify_only_broken_pipelines is false3846 behaves like triggered Unify Circuit integration3847 calls Unify Circuit API3848 with default branch3849 when only default branch are to be notified3850 behaves like triggered Unify Circuit integration3851 calls Unify Circuit API3852 when only protected branches are to be notified3853 behaves like untriggered Unify Circuit integration3854 does not call Unify Circuit API3855 when default and protected branches are to be notified3856 behaves like triggered Unify Circuit integration3857 calls Unify Circuit API3858 when all branches are to be notified3859 behaves like triggered Unify Circuit integration3860 calls Unify Circuit API3861 with protected branch3862 when only default branch are to be notified3863 behaves like untriggered Unify Circuit integration3864 does not call Unify Circuit API3865 when only protected branches are to be notified3866 behaves like triggered Unify Circuit integration3867 calls Unify Circuit API3868 when default and protected branches are to be notified3869 behaves like triggered Unify Circuit integration3870 calls Unify Circuit API3871 when all branches are to be notified3872 behaves like triggered Unify Circuit integration3873 calls Unify Circuit API3874 with neither default nor protected branch3875 when only default branch are to be notified3876 behaves like untriggered Unify Circuit integration3877 does not call Unify Circuit API3878 when only protected branches are to be notified3879 behaves like untriggered Unify Circuit integration3880 does not call Unify Circuit API3881 when default and protected branches are to be notified3882 behaves like untriggered Unify Circuit integration3883 does not call Unify Circuit API3884 when all branches are to be notified3885 behaves like triggered Unify Circuit integration3886 calls Unify Circuit API3887 deployment events3888 behaves like untriggered Unify Circuit integration3889 does not call Unify Circuit API3890Gitlab::Utils3891 # order random3892 .which3893 finds the full path to an executable binary in order of appearance3894 .slugify3895 slugifies TEST to test3896 slugifies project_with_underscores to project-with-underscores3897 slugifies namespace/project to namespace-project3898 slugifies aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa to aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3899 slugifies test_trailing_ to test-trailing3900 .valid_brackets?3901 input: "no brackets", allow_nested: true, valid: true3902 is expected to eq true3903 input: "no brackets", allow_nested: false, valid: true3904 is expected to eq true3905 input: "user[avatar]", allow_nested: true, valid: true3906 is expected to eq true3907 input: "user[avatar]", allow_nested: false, valid: true3908 is expected to eq true3909 input: "user[avatar][friends]", allow_nested: true, valid: true3910 is expected to eq true3911 input: "user[avatar][friends]", allow_nested: false, valid: true3912 is expected to eq true3913 input: "user[avatar[image[url]]]", allow_nested: true, valid: true3914 is expected to eq true3915 input: "user[avatar[image[url]]]", allow_nested: false, valid: false3916 is expected to eq false3917 input: "user[avatar[]friends]", allow_nested: true, valid: true3918 is expected to eq true3919 input: "user[avatar[]friends]", allow_nested: false, valid: false3920 is expected to eq false3921 input: "user[avatar]]", allow_nested: true, valid: false3922 is expected to eq false3923 input: "user[avatar]]", allow_nested: false, valid: false3924 is expected to eq false3925 input: "user][avatar]]", allow_nested: true, valid: false3926 is expected to eq false3927 input: "user][avatar]]", allow_nested: false, valid: false3928 is expected to eq false3929 input: "user[avatar", allow_nested: true, valid: false3930 is expected to eq false3931 input: "user[avatar", allow_nested: false, valid: false3932 is expected to eq false3933 .try_megabytes_to_bytes3934 when the size can be converted to megabytes3935 returns the size in megabytes3936 when the size can not be converted to megabytes3937 returns the input size3938 .ms_to_round_sec3939 original: 1999.8999, expected: 1.99993940 returns rounded seconds3941 original: 12384, expected: 12.3843942 returns rounded seconds3943 original: 333, expected: 0.3333944 returns rounded seconds3945 original: 1333.33333333, expected: 1.3333333946 returns rounded seconds3947 multiple_key_invert3948 invert keys with array values3949 .safe_downcase!3950 str: "test", result: "test"3951 downcases the string3952 str: "Test", result: "test"3953 downcases the string3954 str: "test", result: "test"3955 downcases the string3956 str: "Test", result: "test"3957 downcases the string3958 .to_boolean3959 accepts booleans3960 converts a valid value to a boolean3961 converts an invalid value to nil3962 accepts a default value, and does not return it when a valid value is given3963 accepts a default value, and returns it when an invalid value is given3964 .string_to_ip_object3965 returns nil when string is nil3966 returns nil when string is invalid IP3967 returns IP object when string is valid IP3968 .parse_url3969 returns Addressable::URI object3970 returns nil when URI cannot be parsed3971 returns nil with invalid parameter3972 .remove_line_breaks3973 original: "foo\nbar\nbaz", expected: "foobarbaz"3974 replace line breaks with an empty string3975 original: "foo\r\nbar\r\nbaz", expected: "foobarbaz"3976 replace line breaks with an empty string3977 original: "foobar", expected: "foobar"3978 replace line breaks with an empty string3979 .nlbr3980 replaces new lines with <br>3981 .boolean_to_yes_no3982 converts booleans to Yes or No3983 .add_url_parameters3984 url: nil, params: nil, expected_url: ""3985 is expected to eq ""3986 url: nil, params: {:b=>3, :a=>2}, expected_url: "?a=2&b=3"3987 is expected to eq "?a=2&b=3"3988 url: "https://gitlab.com", params: nil, expected_url: "https://gitlab.com"3989 is expected to eq "https://gitlab.com"3990 url: "https://gitlab.com", params: {:b=>3, :a=>2}, expected_url: "https://gitlab.com?a=2&b=3"3991 is expected to eq "https://gitlab.com?a=2&b=3"3992 url: "https://gitlab.com?a=1#foo", params: {:b=>3, :a=>2}, expected_url: "https://gitlab.com?a=2&b=3#foo"3993 is expected to eq "https://gitlab.com?a=2&b=3#foo"3994 url: "https://gitlab.com?a=1#foo", params: [[:b, 3], [:a, 2]], expected_url: "https://gitlab.com?a=2&b=3#foo"3995 is expected to eq "https://gitlab.com?a=2&b=3#foo"3996 .stable_sort_by3997 when items have the same priority3998 does not change order in cases of ties3999 when items have different priorities4000 sorts items like the regular sort_by4001 .bytes_to_megabytes4002 converts bytes to megabytes4003 .remove_leading_slashes4004 str: "/foo/bar", result: "foo/bar"4005 removes leading slashes4006 str: "//foo/bar", result: "foo/bar"4007 removes leading slashes4008 str: "/foo/bar/", result: "foo/bar/"4009 removes leading slashes4010 str: "foo/bar", result: "foo/bar"4011 removes leading slashes4012 str: "", result: ""4013 removes leading slashes4014 str: nil, result: ""4015 removes leading slashes4016 .ensure_utf8_size4017 string is has less bytes than expected4018 backfills string with null characters4019 string size is exactly the one that is expected4020 returns original value4021 when string contains a few multi-byte UTF characters4022 backfills string with null characters4023 when string has multiple multi-byte UTF chars exceeding 32 bytes4024 truncates string to 32 characters and backfills it if needed4025 .removes_sensitive_data_from_url4026 returns string object4027 returns nil when URI cannot be parsed4028 returns nil with invalid parameter4029 returns string with filtered access_token param4030 returns string with filtered access_token param but other params preserved4031 .deep_symbolized_access4032 allows to access hash keys with symbols4033 allows to access array keys with symbols4034 .ensure_array_from_string4035 returns the same array if given one4036 turns comma-separated strings into arrays4037 .decode_path4038 returns path unencoded for singled-encoded paths4039 returns path when it is unencoded4040 raises an exception when the path is multiple-encoded4041 raises an exception when the path is multiple-encoded4042 .append_path4043 host: "http://test/", path: "/foo/bar", result: "http://test/foo/bar"4044 makes sure there is only one slash as path separator4045 host: "http://test/", path: "//foo/bar", result: "http://test/foo/bar"4046 makes sure there is only one slash as path separator4047 host: "http://test//", path: "/foo/bar", result: "http://test/foo/bar"4048 makes sure there is only one slash as path separator4049 host: "http://test", path: "foo/bar", result: "http://test/foo/bar"4050 makes sure there is only one slash as path separator4051 host: "http://test//", path: "", result: "http://test/"4052 makes sure there is only one slash as path separator4053 host: "http://test//", path: nil, result: "http://test/"4054 makes sure there is only one slash as path separator4055 host: "", path: "/foo/bar", result: "/foo/bar"4056 makes sure there is only one slash as path separator4057 host: nil, path: "/foo/bar", result: "/foo/bar"4058 makes sure there is only one slash as path separator4059 .deep_indifferent_access4060 allows to access hash keys with symbols4061 allows to access array keys with symbols4062 .allowlisted?4063 returns true if path is allowed4064 returns false if path is not allowed4065Banzai::Filter::References::AlertReferenceFilter4066 requires project context4067 ignores valid references contained inside 'pre' element4068 ignores valid references contained inside 'code' element4069 ignores valid references contained inside 'a' element4070 ignores valid references contained inside 'style' element4071 internal reference4072 links to a valid reference4073 links with adjacent text4074 ignores invalid alert IDs4075 includes a title attribute4076 escapes the title attribute4077 includes default classes4078 includes a data-project attribute4079 includes a data-alert attribute4080 supports an :only_path context4081 cross-project / cross-namespace complete reference4082 links to a valid reference4083 link has valid text4084 has valid text4085 ignores invalid alert IDs on the referenced project4086 cross-project / same-namespace complete reference4087 links to a valid reference4088 link has valid text4089 has valid text4090 ignores invalid alert IDs on the referenced project4091 cross-project shorthand reference4092 links to a valid reference4093 link has valid text4094 has valid text4095 ignores invalid alert IDs on the referenced project4096 cross-project URL reference4097 links to a valid reference4098 links with adjacent text4099 ignores invalid alert IDs on the referenced project4100 group context4101 links to a valid reference4102 ignores internal references4103 checking N+14104 does not have N+1 per multiple references per project4105Gitlab::Cleanup::PersonalAccessTokens4106 # order random4107 when initialized with an invalid logger4108 raises error4109 #run!4110 when invalid group path passed4111 raises error4112 in a real run4113Revoking access tokens last used and created before 2023-05-26 14:00:00 UTC...4114Finished. 2 rows affected4115 updates updated_at4116Revoking access tokens last used and created before 2023-05-26 14:00:00 UTC...4117Finished. 2 rows affected4118 logs action as done4119 when revoking unused tokens4120Revoking access tokens last used and created before 2023-05-26 14:00:00 UTC...4121Finished. 2 rows affected4122 revokes human-owned tokens created and last used over 1 year ago4123 when revoking used and unused tokens4124Revoking used and unused access tokens created before 2023-05-26 14:00:00 UTC...4125Finished. 3 rows affected4126 revokes human-owned tokens created over 1 year ago4127 in a dry run4128Dry running. No changes will be made4129Dry run complete. 2 rows would be affected4130 does not revoke any tokens4131Dry running. No changes will be made4132Dry run complete. 2 rows would be affected4133 logs what could be revoked4134Gitlab::RelativePositioning::Range4135 infers neighbours correctly4136 RelativePositioning.range4137 raises if lhs and rhs are nil4138 raises an error if there is no extent4139 constructs a closed range when both termini are provided4140 constructs a starting-from range when only the LHS is provided4141 constructs an ending-at range when only the RHS is provided4142 #open_on_left?4143 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, expected_result: false4144 is true if there is no LHS terminus4145 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: nil, expected_result: false4146 is true if there is no LHS terminus4147 lhs: nil, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, expected_result: false4148 is true if there is no LHS terminus4149 lhs: #<struct relative_position=200, object=:y, :positioned?=true>, rhs: nil, expected_result: false4150 is true if there is no LHS terminus4151 lhs: nil, rhs: #<struct relative_position=100, object=:x, :positioned?=true>, expected_result: true4152 is true if there is no LHS terminus4153 #open_on_right?4154 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, expected_result: false4155 is true if there is no RHS terminus4156 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: nil, expected_result: false4157 is true if there is no RHS terminus4158 lhs: nil, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, expected_result: false4159 is true if there is no RHS terminus4160 lhs: #<struct relative_position=200, object=:y, :positioned?=true>, rhs: nil, expected_result: true4161 is true if there is no RHS terminus4162 lhs: nil, rhs: #<struct relative_position=100, object=:x, :positioned?=true>, expected_result: false4163 is true if there is no RHS terminus4164 #cover?4165 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=100, object=:x, :positioned?=true>, expected_result: true4166 is true when the object is within the bounds of the range4167 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=200, object=:y, :positioned?=true>, expected_result: true4168 is true when the object is within the bounds of the range4169 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=150, object=:z, :positioned?=true>, expected_result: true4170 is true when the object is within the bounds of the range4171 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=40, object=:w, :positioned?=true>, expected_result: false4172 is true when the object is within the bounds of the range4173 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=250, object=:r, :positioned?=true>, expected_result: false4174 is true when the object is within the bounds of the range4175 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=100, object=:not_x, :positioned?=true>, expected_result: false4176 is true when the object is within the bounds of the range4177 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=200, object=:not_y, :positioned?=true>, expected_result: false4178 is true when the object is within the bounds of the range4179 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position={:positioned?=>false}, object=nil, :positioned?=nil>, expected_result: false4180 is true when the object is within the bounds of the range4181 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: nil, expected_result: false4182 is true when the object is within the bounds of the range4183 lhs: nil, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=100, object=:x, :positioned?=true>, expected_result: true4184 is true when the object is within the bounds of the range4185 lhs: nil, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=200, object=:y, :positioned?=true>, expected_result: true4186 is true when the object is within the bounds of the range4187 lhs: nil, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=150, object=:z, :positioned?=true>, expected_result: true4188 is true when the object is within the bounds of the range4189 lhs: nil, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=40, object=:w, :positioned?=true>, expected_result: false4190 is true when the object is within the bounds of the range4191 lhs: nil, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=250, object=:r, :positioned?=true>, expected_result: false4192 is true when the object is within the bounds of the range4193 lhs: nil, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=100, object=:not_x, :positioned?=true>, expected_result: false4194 is true when the object is within the bounds of the range4195 lhs: nil, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position=200, object=:not_y, :positioned?=true>, expected_result: false4196 is true when the object is within the bounds of the range4197 lhs: nil, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: #<struct relative_position={:positioned?=>false}, object=nil, :positioned?=nil>, expected_result: false4198 is true when the object is within the bounds of the range4199 lhs: nil, rhs: #<struct relative_position=200, object=:y, :positioned?=true>, item: nil, expected_result: false4200 is true when the object is within the bounds of the range4201 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: nil, item: #<struct relative_position=100, object=:x, :positioned?=true>, expected_result: true4202 is true when the object is within the bounds of the range4203 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: nil, item: #<struct relative_position=200, object=:y, :positioned?=true>, expected_result: true4204 is true when the object is within the bounds of the range4205 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: nil, item: #<struct relative_position=150, object=:z, :positioned?=true>, expected_result: true4206 is true when the object is within the bounds of the range4207 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: nil, item: #<struct relative_position=40, object=:w, :positioned?=true>, expected_result: false4208 is true when the object is within the bounds of the range4209 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: nil, item: #<struct relative_position=250, object=:r, :positioned?=true>, expected_result: false4210 is true when the object is within the bounds of the range4211 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: nil, item: #<struct relative_position=100, object=:not_x, :positioned?=true>, expected_result: false4212 is true when the object is within the bounds of the range4213 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: nil, item: #<struct relative_position=200, object=:not_y, :positioned?=true>, expected_result: false4214 is true when the object is within the bounds of the range4215 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: nil, item: #<struct relative_position={:positioned?=>false}, object=nil, :positioned?=nil>, expected_result: false4216 is true when the object is within the bounds of the range4217 lhs: #<struct relative_position=100, object=:x, :positioned?=true>, rhs: nil, item: nil, expected_result: false4218 is true when the object is within the bounds of the range4219 lhs: nil, rhs: #<struct relative_position=100, object=:x, :positioned?=true>, item: #<struct relative_position=100, object=:x, :positioned?=true>, expected_result: true4220 is true when the object is within the bounds of the range4221 lhs: nil, rhs: #<struct relative_position=100, object=:x, :positioned?=true>, item: #<struct relative_position=200, object=:y, :positioned?=true>, expected_result: false4222 is true when the object is within the bounds of the range4223 lhs: nil, rhs: #<struct relative_position=100, object=:x, :positioned?=true>, item: #<struct relative_position=150, object=:z, :positioned?=true>, expected_result: false4224 is true when the object is within the bounds of the range4225 lhs: nil, rhs: #<struct relative_position=100, object=:x, :positioned?=true>, item: #<struct relative_position=40, object=:w, :positioned?=true>, expected_result: true4226 is true when the object is within the bounds of the range4227 lhs: nil, rhs: #<struct relative_position=100, object=:x, :positioned?=true>, item: #<struct relative_position=250, object=:r, :positioned?=true>, expected_result: false4228 is true when the object is within the bounds of the range4229 lhs: nil, rhs: #<struct relative_position=100, object=:x, :positioned?=true>, item: #<struct relative_position=100, object=:not_x, :positioned?=true>, expected_result: false4230 is true when the object is within the bounds of the range4231 lhs: nil, rhs: #<struct relative_position=100, object=:x, :positioned?=true>, item: #<struct relative_position=200, object=:not_y, :positioned?=true>, expected_result: false4232 is true when the object is within the bounds of the range4233 lhs: nil, rhs: #<struct relative_position=100, object=:x, :positioned?=true>, item: #<struct relative_position={:positioned?=>false}, object=nil, :positioned?=nil>, expected_result: false4234 is true when the object is within the bounds of the range4235 lhs: nil, rhs: #<struct relative_position=100, object=:x, :positioned?=true>, item: nil, expected_result: false4236 is true when the object is within the bounds of the range4237 lhs: #<struct relative_position=200, object=:y, :positioned?=true>, rhs: nil, item: #<struct relative_position=100, object=:x, :positioned?=true>, expected_result: false4238 is true when the object is within the bounds of the range4239 lhs: #<struct relative_position=200, object=:y, :positioned?=true>, rhs: nil, item: #<struct relative_position=200, object=:y, :positioned?=true>, expected_result: true4240 is true when the object is within the bounds of the range4241 lhs: #<struct relative_position=200, object=:y, :positioned?=true>, rhs: nil, item: #<struct relative_position=150, object=:z, :positioned?=true>, expected_result: false4242 is true when the object is within the bounds of the range4243 lhs: #<struct relative_position=200, object=:y, :positioned?=true>, rhs: nil, item: #<struct relative_position=40, object=:w, :positioned?=true>, expected_result: false4244 is true when the object is within the bounds of the range4245 lhs: #<struct relative_position=200, object=:y, :positioned?=true>, rhs: nil, item: #<struct relative_position=250, object=:r, :positioned?=true>, expected_result: true4246 is true when the object is within the bounds of the range4247 lhs: #<struct relative_position=200, object=:y, :positioned?=true>, rhs: nil, item: #<struct relative_position=100, object=:not_x, :positioned?=true>, expected_result: false4248 is true when the object is within the bounds of the range4249 lhs: #<struct relative_position=200, object=:y, :positioned?=true>, rhs: nil, item: #<struct relative_position=200, object=:not_y, :positioned?=true>, expected_result: false4250 is true when the object is within the bounds of the range4251 lhs: #<struct relative_position=200, object=:y, :positioned?=true>, rhs: nil, item: #<struct relative_position={:positioned?=>false}, object=nil, :positioned?=nil>, expected_result: false4252 is true when the object is within the bounds of the range4253 lhs: #<struct relative_position=200, object=:y, :positioned?=true>, rhs: nil, item: nil, expected_result: false4254 is true when the object is within the bounds of the range4255BulkImports::Entity4256 associations4257 is expected to belong to bulk_import required: true4258 is expected to belong to parent required: false4259 is expected to belong to group optional: true inverse_of => bulk_import_entities4260 is expected to belong to project required: false4261 is expected to have many trackers class_name => BulkImports::Tracker inverse_of => entity4262 validations4263 is expected to validate that :source_type cannot be empty/falsy4264 is expected to validate that :source_full_path cannot be empty/falsy4265 is expected to validate that :destination_name cannot be empty/falsy4266 is expected to define :source_type as an enum backed by an integer with values ‹[:group_entity, :project_entity]›4267 when formatting with regexes4268 is expected to allow :source_full_path to be ‹"source"›, ‹"source/path"›, or ‹"source/full/path"›4269 is expected not to allow :source_full_path to be ‹"/source"›, ‹"http://source/path"›, ‹"sou rce/full/path"›, or ‹""›4270 when associated with a group and project4271 is invalid4272 when not associated with a group or project4273 is valid4274 when associated with a group and no project4275 is valid as a group_entity4276 is valid when destination_namespace is empty4277 is invalid when destination_namespace is nil4278 is invalid when destination_slug is empty4279 is invalid when destination_slug is nil4280 is invalid as a project_entity4281 when associated with a project and no group4282 is valid4283 is invalid when destination_namespace is nil4284 is invalid as a project_entity4285 when the parent is a group import4286 is valid4287 when the parent is a project import4288 is invalid4289 validate destination namespace of a group_entity4290 is invalid if destination namespace is the source namespace4291 is invalid if destination namespace is a descendant of the source4292 when source_type is a project_entity4293 is valid4294 #encoded_source_full_path4295 encodes entity source full path4296 scopes4297 .by_user_id4298 returns entities associated with specified user4299 .all_human_statuses4300 returns all human readable entity statuses4301 #pipelines4302 when entity is group4303 returns group pipelines4304 when entity is project4305 returns project pipelines4306 #pipeline_exists?4307 returns true when the given pipeline name exists in the pipelines list4308 returns false when the given pipeline name exists in the pipelines list4309 #pluralized_name4310 when entity is group4311 returns groups4312 when entity is project4313 returns projects4314 #export_relations_url_path4315 when entity is group4316 returns group export relations url4317 when entity is project4318 returns project export relations url4319 #relation_download_url_path4320 returns export relations url with download query string4321 #entity_type4322 returns entity type4323 #project?4324 returns true if project entity4325 #group?4326 returns true if group entity4327 #base_resource_url_path4328 returns base entity url path4329 #wiki_url_path4330 returns entity wiki url path4331 #update_service4332 returns correct update service class4333 #full_path4334 returns group full path for project entity4335 returns project full path for project entity4336 returns nil when not associated with group or project4337 #default_visibility_level4338 when entity is a group4339 returns default group visibility4340 when entity is a project4341 returns default project visibility4342 #update_has_failures4343 when entity has failures4344 sets has_failures flag to true4345 when entity does not have failures4346 sets has_failures flag to false4347Ci::JobToken::Scope4348 #outbound_projects4349 when no projects are added to the scope4350 returns the project defining the scope4351 when projects are added to the scope4352 returns all projects that can be accessed from a given scope4353 #inbound_projects4354 when no projects are added to the scope4355 returns the project defining the scope4356 when projects are added to the scope4357 returns all projects that can be accessed from a given scope4358 add!4359 with inbound4360 adds the project4361 with outbound4362 adds the project4363 with inbound only enabled4364 provides access4365 accessible?4366 with inbound and outbound scopes enabled4367 when inbound and outbound access setup4368 accessed_project: current_project, result: true4369 allows self and projects allowed from both directions4370 accessed_project: inbound_allowlist_project, result: false4371 allows self and projects allowed from both directions4372 accessed_project: unscoped_project1, result: false4373 allows self and projects allowed from both directions4374 accessed_project: unscoped_project2, result: false4375 allows self and projects allowed from both directions4376 accessed_project: outbound_allowlist_project, result: false4377 allows self and projects allowed from both directions4378 accessed_project: inbound_accessible_project, result: false4379 allows self and projects allowed from both directions4380 accessed_project: fully_accessible_project, result: true4381 allows self and projects allowed from both directions4382 with inbound scope enabled and outbound scope disabled4383 accessed_project: current_project, result: true4384 is expected to eq true4385 accessed_project: inbound_allowlist_project, result: false4386 is expected to eq false4387 accessed_project: unscoped_project1, result: false4388 is expected to eq false4389 accessed_project: unscoped_project2, result: false4390 is expected to eq false4391 accessed_project: outbound_allowlist_project, result: false4392 is expected to eq false4393 accessed_project: inbound_accessible_project, result: true4394 is expected to eq true4395 accessed_project: fully_accessible_project, result: true4396 is expected to eq true4397 with inbound scope disabled and outbound scope enabled4398 accessed_project: current_project, result: true4399 is expected to eq true4400 accessed_project: inbound_allowlist_project, result: false4401 is expected to eq false4402 accessed_project: unscoped_project1, result: false4403 is expected to eq false4404 accessed_project: unscoped_project2, result: false4405 is expected to eq false4406 accessed_project: outbound_allowlist_project, result: true4407 is expected to eq true4408 accessed_project: inbound_accessible_project, result: false4409 is expected to eq false4410 accessed_project: fully_accessible_project, result: true4411 is expected to eq true4412git_http routing4413 code repositories4414 behaves like git repository routes4415 routes Git endpoints4416 routes LFS endpoints4417 requests without .git format4418 redirects requests to /info/refs4419 behaves like git repository routes with fallback for git-upload-pack4420 routes LFS endpoints for unmatched routes4421 requests without .git format4422 does not redirect other requests4423 wiki repositories4424 in project4425 behaves like git repository routes4426 routes Git endpoints4427 routes LFS endpoints4428 requests without .git format4429 redirects requests to /info/refs4430 behaves like git repository routes with fallback for git-upload-pack4431 routes LFS endpoints for unmatched routes4432 requests without .git format4433 does not redirect other requests4434 redirects4435 redirects namespace/project.wiki.git to the project wiki4436 preserves query parameters4437 only redirects when the format is .git4438 in toplevel group4439 behaves like git repository routes4440 routes Git endpoints4441 routes LFS endpoints4442 requests without .git format4443 redirects requests to /info/refs4444 behaves like git repository routes with fallback for git-upload-pack4445 routes LFS endpoints for unmatched routes4446 requests without .git format4447 does not redirect other requests4448 in child group4449 behaves like git repository routes4450 routes Git endpoints4451 routes LFS endpoints4452 requests without .git format4453 redirects requests to /info/refs4454 behaves like git repository routes with fallback for git-upload-pack4455 routes LFS endpoints for unmatched routes4456 requests without .git format4457 does not redirect other requests4458 snippet repositories4459 personal snippet4460 behaves like git repository routes4461 routes Git endpoints4462 routes LFS endpoints4463 requests without .git format4464 redirects requests to /info/refs4465 behaves like git repository routes without fallback4466 routes LFS endpoints for unmatched routes4467 requests without .git format4468 does not redirect other requests4469 project snippet4470 behaves like git repository routes4471 routes Git endpoints4472 routes LFS endpoints4473 requests without .git format4474 redirects requests to /info/refs4475 behaves like git repository routes with fallback4476 routes LFS endpoints4477 requests without .git format4478 does not redirect other requests4479notify/pipeline_fixed_email.html.haml4480 behaves like pipeline status changes email4481 when the pipeline contains a failed job4482 behaves like renders the pipeline status changes email correctly4483 pipeline with user4484 renders the email correctly4485 behaves like correct pipeline information for pipelines for merge requests4486 when pipeline for merge request4487 renders a source ref of the pipeline4488 pipeline without user4489 renders the email correctly4490 when the latest failed job is a bridge job4491 behaves like renders the pipeline status changes email correctly4492 pipeline with user4493 renders the email correctly4494 behaves like correct pipeline information for pipelines for merge requests4495 when pipeline for merge request4496 renders a source ref of the pipeline4497 pipeline without user4498 renders the email correctly4499Mutations::Issues::SetAssignees4500 when the user does not have permissions4501 #resolve4502 behaves like permission level for issue mutation is correctly verified4503 when the user is not a project member4504 behaves like when the user does not have access to the resource4505 raises an error4506 even if assigned to the issue4507 does not modify issue4508 even if author of the issue4509 does not modify issue4510 when the user is a project member4511 with guest role4512 behaves like when the user does not have access to the resource4513 raises an error4514 even if assigned to the issue4515 does not modify issue4516 even if author of the issue4517 does not modify issue4518 behaves like an assignable resource4519 #resolve4520 raises an error if the resource is not accessible to the user4521 does not change assignees if the resource is not accessible to the assignees4522 returns an operational error if the resource is not accessible to the assignees4523 when the user can update the resource4524 replaces the assignee4525 returns errors when resource could not be updated4526 when passing an empty assignee list4527 removes all assignees4528 when passing "append" as true4529 is a NO-OP in FOSS4530 when passing "remove" as true4531 removes named assignee4532 does not remove unnamed assignee4533Gitlab::Changelog::Config4534 .from_git4535 retrieves the configuration from Git4536 retrieves the specified configuration from git4537 returns the default configuration when no YAML file exists in Git4538 when changelog is empty4539 returns the default configuration4540 .from_hash4541 sets the configuration according to a Hash4542 raises Error when the categories are not a Hash4543 raises a Gitlab::Changelog::Error when the template is invalid4544 #contributor?4545 when user is a member of project4546 is expected to eq false4547 when user has at least one merge request merged into default_branch4548 is expected to eq true4549 is expected to eq false4550 #category4551 returns the name of a category4552 returns the raw category name when no alternative name is configured4553 #format_date4554 formats a date according to the configured date format4555 #always_credit_author?4556 when include_groups is defined4557 when user generating changelog has access to group4558 returns whether author should always be credited4559 when user generating changelog has no access to group4560 always returns false4561 when include_groups is not defined4562 always returns false4563Gitlab::UsageMetricDefinition::RedisHllGenerator4564 creates metric definition files4565 with multiple events4566 creates metric definition files4567 with ee option4568 creates metric definition files4569Gitlab::Popen4570 .popen_with_detail4571 is expected to eq ["/usr/local/bin/ruby", "-e", "$stdout.puts(1);$stderr.puts(2);exit(3)"]4572 is expected to eq "1\n"4573 is expected to eq "2\n"4574 is expected to eq 34575 is expected to be a kind of Numeric4576 zero status4577 is expected to be zero4578 is expected to include "tests"4579 non-zero status4580 is expected to eq 14581 is expected to include "No such file or directory"4582 non-zero status with a kill4583 is expected to eq 94584 is expected to be empty4585 unsafe string command4586 raises an error when it gets called with a string argument4587 with custom options4588 calls popen3 with the provided environment variables4589 with a process that writes a lot of data to stderr4590 returns zero4591 without a directory argument4592 is expected to be zero4593 is expected to include "spec"4594 use stdin4595 is expected to be zero4596 is expected to eq "hello"4597 when binary is absent4598 raises error4599Gitlab::Observability4600 # order random4601 .allowed_for_action?4602 returns false if action is nil4603 allowed? calls4604 action: :foo, permission: :admin_observability4605 calls allowed? with admin_observability when actions is foo4606 action: :explore, permission: :read_observability4607 calls allowed? with read_observability when actions is explore4608 action: :datasources, permission: :admin_observability4609 calls allowed? with admin_observability when actions is datasources4610 action: :manage, permission: :admin_observability4611 calls allowed? with admin_observability when actions is manage4612 action: :dashboards, permission: :read_observability4613 calls allowed? with read_observability when actions is dashboards4614 .observability_url4615 is expected to eq "https://observe.gitlab.com"4616 when on staging.gitlab.com4617 is expected to eq "https://observe.staging.gitlab.com"4618 when overriden via ENV4619 is expected to eq "https://example.net"4620 .allowed?4621 checks if ability is allowed for the given user and group4622 checks for admin_observability if permission is missing4623 returns true if the ability is allowed4624 returns false if the ability is not allowed4625 returns false if observability url is missing4626 returns false if group is missing4627 returns false if user is missing4628 .embeddable_url4629 when URL is valid4630 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=%2Fexplore%3FgroupId%3D14485840%26left%3D%255B%2522now-1h%2522,%2522now%2522,%2522new-sentry.gitlab.net%2522,%257B%257D%255D", expected: "https://observe.gitlab.com/-/123/explore?groupId=14485840&left=%5B%22now-1h%22,%22now%22,%22new-sentry.gitlab.net%22,%7B%7D%5D"4631 returns an embeddable observability url4632 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=/goto/foo", expected: "https://observe.gitlab.com/-/123/goto/foo"4633 returns an embeddable observability url4634 when URL is invalid4635 returns nil if the path detection throws an error4636 returns nil if parsing observaboility path throws an error4638 returns nil4640 returns nil4641 input: "not a link"4642 returns nil4644 returns nil4645 input: "http://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=/explore"4646 returns nil4647 input: "https://www.gitlab.com:123/groups/test-path/-/observability/explore?observability_path=/explore"4648 returns nil4649 input: "https://www.gitlab.com@example.com/groups/test-path/-/observability/explore?observability_path=/explore"4650 returns nil4651 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=@example.com"4652 returns nil4653 input: "https://www.gitlab.com/groups/INVALID_GROUP/-/observability/explore?observability_path=/explore"4654 returns nil4655 input: "https://www.gitlab.com/groups/test-path/-/INVALID_CONTROLLER/explore?observability_path=/explore"4656 returns nil4657 input: "https://www.gitlab.com/groups/test-path/-/observability/INVALID_ACTION?observability_path=/explore"4658 returns nil4660 returns nil4661 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?missing_observability_path=/explore"4662 returns nil4663 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=/not_embeddable"4664 returns nil4665 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=/datasources"4666 returns nil4667 input: "https://www.gitlab.com/groups/test-path/-/observability/explore?observability_path=not a valid path"4668 returns nil4669 .build_full_url4670 returns the full observability url for the given params4671 handles missing / from observability_path4672 sanitises observability_path4673 when observability_path is missing4674 builds the url with the fallback_path4675 defaults to / if fallback_path is also missing4676Gitlab::AlertManagement::Payload::Generic4677 behaves like subclass has expected api4678 defines all public methods in the base class4679 #title4680 behaves like parsable alert payload field with fallback4681 without payload4682 is expected to eq "New: Alert"4683 with title4684 is expected to eq "some value"4685 #severity4686 when set4687 payload_severity: "critical", expected_severity: :critical4688 is expected to eq :critical4689 payload_severity: "high", expected_severity: :high4690 is expected to eq :high4691 payload_severity: "medium", expected_severity: :medium4692 is expected to eq :medium4693 payload_severity: "low", expected_severity: :low4694 is expected to eq :low4695 payload_severity: "info", expected_severity: :info4696 is expected to eq :info4697 payload_severity: "CRITICAL", expected_severity: :critical4698 is expected to eq :critical4699 payload_severity: "cRiTiCaL", expected_severity: :critical4700 is expected to eq :critical4701 payload_severity: "unmapped", expected_severity: nil4702 is expected to eq nil4703 payload_severity: 1, expected_severity: nil4704 is expected to eq nil4705 payload_severity: nil, expected_severity: nil4706 is expected to eq nil4707 without key4708 is expected to be nil4709 #monitoring_tool4710 behaves like parsable alert payload field4711 behaves like parsable alert payload field with fallback4712 without payload4713 is expected to eq nil4714 with monitoring_tool4715 is expected to eq "some value"4716 #service4717 behaves like parsable alert payload field4718 behaves like parsable alert payload field with fallback4719 without payload4720 is expected to eq nil4721 with service4722 is expected to eq "some value"4723 #hosts4724 behaves like parsable alert payload field4725 behaves like parsable alert payload field with fallback4726 without payload4727 is expected to eq nil4728 with hosts4729 is expected to eq "some value"4730 #starts_at4731 without start_time4732 is expected to eq 2023-06-26 14:45:34.000000000 +00004733 with start_time4734 is expected to eq 2023-06-26 14:35:35.000000000 +00004735 #runbook4736 behaves like parsable alert payload field4737 behaves like parsable alert payload field with fallback4738 without payload4739 is expected to eq nil4740 with runbook4741 is expected to eq "some value"4742 #gitlab_fingerprint4743 returns a fingerprint4744 #environment_name4745 behaves like parsable alert payload field4746 behaves like parsable alert payload field with fallback4747 without payload4748 is expected to eq nil4749 with gitlab_environment_name4750 is expected to eq "some value"4751 #description4752 behaves like parsable alert payload field4753 behaves like parsable alert payload field with fallback4754 without payload4755 is expected to eq nil4756 with description4757 is expected to eq "some value"4758 #ends_at4759 without end_time4760 is expected to be nil4761 with end_time4762 is expected to eq 2023-06-26 14:35:35.000000000 +00004763 #resolved?4764 without end time4765 is expected to eq false4766 with end time4767 is expected to eq true4768 #source4769 is expected to eq "Generic Alert Endpoint"4770 with alerting integration provided4771 is expected to eq "INTEGRATION"4772 with monitoring tool defined in the raw payload4773 is expected to eq "TOOL"4774Gitlab::I18n::PoLinter4775 #errors4776 only calls validation once4777 #validate_po4778 for a fuzzy message4779 has an error4780 for a translations with newlines4781 has an error for a normal string4782 has an error when a translation is defined over multiple lines4783 raises an error when a plural translation is defined over multiple lines4784 raises an error when the plural id is defined over multiple lines4785 with an invalid po4786 returns the error4787 does not validate entries4788 with missing metadata4789 returns the an error4790 with a valid po4791 parses the file4792 validates the entries4793 has no errors4794 with missing plurals4795 has errors4796 with multiple plurals4797 has errors4798 with unescaped chars4799 contains an error4800 when an entry contains html4801 presents an error for each component containing angle brackets4802 #parse_po4803 with a valid po4804 fills in the entries4805 does not have errors4806 with an invalid po4807 contains an error4808 sets the entries to an empty array4809 #validate_entries4810 keeps track of errors for entries4811 #validate_entry4812 validates the flags, variable usage, newlines, and unescaped chars4813 #validate_number_of_plurals4814 validates when there are an incorrect number of translations4815 #validate_variables4816 validates both singular and plural in a pluralized string when the entry has a singular4817 only validates plural when there is no separate singular4818 validates the message variables4819 validates variable usage in message ids4820 #validate_variables_in_message4821 detects when a variables are used incorrectly4822 does not allow combining 1 `%d` unnamed variable with named variables4823 #validate_translation4824 succeeds with valid variables4825 adds an error message when translating fails4826 adds an error message when translating fails when translating with context4827 adds an error when trying to translate with incorrect variables when using unnamed variables4828 adds an error when trying to translate with named variables when unnamed variables are expected4829 tests translation for all given forms4830 #numbers_covering_all_plurals4831 can correctly find all required numbers to translate to Polish4832 #fill_in_variables4833 builds an array for %d translations4834 builds an array for %s translations4835 builds a hash for named variables4836Quality::TestLevel4837 TEST_LEVEL_FOLDERS constant4838 ensures all directories it refers to exists4839 #pattern4840 when level is all4841 returns a pattern4842 when level is frontend_fixture4843 returns a pattern4844 when level is unit4845 returns a pattern4846 when level is migration4847 returns a pattern4848 when level is background_migration4849 returns a pattern4850 when level is integration4851 returns a pattern4852 when level is system4853 returns a pattern4854 with a prefix4855 returns a pattern4856 with several prefixes4857 returns a pattern4858 performance4859 memoizes the pattern for a given level4860 freezes the pattern for a given level4861 #regexp4862 when level is all4863 returns a regexp4864 when level is frontend_fixture4865 returns a regexp4866 when level is unit4867 returns a regexp4868 when level is migration4869 returns a regexp4870 when level is background_migration4871 returns a regexp4872 when level is integration4873 returns a regexp4874 when level is system4875 returns a regexp4876 with a prefix4877 returns a regexp4878 with several prefixes4879 returns a regexp4880 when start_with == true4881 returns a regexp4882 performance4883 memoizes the regexp for a given level4884 freezes the regexp for a given level4885 #level_for4886 returns the correct level for a unit test4887 returns the correct level for a frontend fixture test4888 returns the correct level for a tooling test4889 returns the correct level for a migration test4890 returns the correct level for a background migration test4891 returns the correct level for an EE file without passing a prefix4892 returns the correct level for a geo migration test4893 returns the correct level for a EE-namespaced background migration test4894 returns the correct level for an integration test4895 returns the correct level for an integration test in a subfolder4896 returns the correct level for a system test4897 raises an error for an unknown level4898 ensures all spec/ folders are covered by a test level4899Gitlab::DeployKeyAccess4900 #can_create_tag?4901 when no-one can create tag4902 returns false4903 when deploy_key_for_protected_tags FF is disabled4904 allows to push the tag4905 push tag that matches a protected tag pattern via a deploy key4906 allows to push the tag4907 #can_push_for_ref?4908 push to a protected branch of this project via a deploy key4909 when the project has active deploy key owned by this user4910 returns true4911 when the project has active deploy keys, but not by this user4912 returns false4913 when there is another branch no one can push to4914 returns false when trying to push to that other branch4915 and the deploy key added for the first protected branch is also added for this other branch4916 returns true for both protected branches4917Notes::CopyService4918 #initialize4919 validates that we cannot copy notes to the same Noteable4920 #execute4921 rewriting the note body4922 simple notes4923 rewrites existing notes in valid order4924 copies all the issue notes4925 does not change the note attributes4926 copies the award emojis4927 copies system_note_metadata for system note4928 returns success4929 copies rendered markdown from note_html4930 notes with mentions4931 saves user mentions with actual mentions for new issue4932 notes with reference4933 rewrites the references correctly4934 does not copy rendered markdown from note_html4935 notes with upload4936 rewrites note content correctly4937 does not copy rendered markdown from note_html4938 discussion notes4939 rewrites discussion correctly4940Metrics::Dashboard::Annotations::DeleteService4941 .execute4942 with specific environment4943 with anonymous user4944 behaves like prevented annotation deletion4945 returns error response4946 does not change db state4947 with maintainer user4948 behaves like executed annotation deletion4949 returns success response4950 annotation failed to delete4951 returns error response4952 with specific cluster4953 with anonymous user4954 behaves like prevented annotation deletion4955 returns error response4956 does not change db state4957 with maintainer user4958 behaves like executed annotation deletion4959 returns success response4960 with owner user4961 behaves like executed annotation deletion4962 returns success response4963PrometheusAlert4964 .distinct_projects4965 returns a count of all distinct projects which have an alert4966 operators4967 contains the correct equality operator4968 associations4969 is expected to belong to project required: false4970 is expected to belong to environment required: false4971 is expected to belong to prometheus_metric required: false4972 is expected to have many prometheus_alert_events4973 is expected to have many related_issues4974 is expected to have many alert_management_alerts4975 project validations4976 is expected to validate that :environment cannot be empty/falsy4977 is expected to validate that :project cannot be empty/falsy4978 is expected to validate that :prometheus_metric cannot be empty/falsy4979 is expected to validate that :operator cannot be empty/falsy4980 is expected to validate that :threshold cannot be empty/falsy4981 when environment and metric belongs same project4982 is expected to be valid4983 when environment belongs to different project4984 is expected not to be valid4985 when metric belongs to different project4986 is expected not to be valid4987 when metric is common4988 is expected to be valid4989 runbook validations4990 disallow invalid urls4991 allow valid urls4992 #full_query4993 returns the concatenated query4994 #to_param4995 returns the params of the prometheus alert4996Projects::AutoDevops::DisableService#execute4997 when Auto DevOps disabled at instance level4998 is expected to be falsy4999 when Auto DevOps enabled at instance level5000 when Auto DevOps explicitly enabled on project5001 is expected to be falsy5002 when Auto DevOps explicitly disabled on project5003 is expected to be falsy5004 when Auto DevOps is implicitly enabled5005 when is the first pipeline failure5006 disables Auto DevOps for project5007 when it is not the first pipeline failure5008 explicitly disables Auto DevOps for project5009 when an Auto DevOps pipeline has succeeded before5010 does not disable Auto DevOps for project5011 when project does not have an Auto DevOps record related5012 disables Auto DevOps for project5013 creates a ProjectAutoDevops record5014Ci::Artifactable5015 artifact properties are included5016 when enum is defined5017 is expected to define :file_format as an enum backed by an integer with values ‹{raw: 1, zip: 2, gzip: 3}›, suffix: true5018 when const is defined5019 is expected to be const defined :FILE_FORMAT_ADAPTERS5020 #each_blob5021 when file format is gzip5022 when gzip file contains one file5023 iterates blob once5024 when gzip file contains three files5025 iterates blob three times5026 when decompressed artifact size validator fails5027 fails on blob5028 when file format is raw5029 iterates blob once5030 when there are no adapters for the file format5031 raises an error5032 pushes artifact_size to application context5033 logs artifact size5034 ActiveRecord scopes5035 .expired_before5036 returns expired artifacts5037 .expired5038 returns all expired artifacts5039 .with_files_stored_locally5040 returns artifacts stored locally5041 .with_files_stored_remotely5042 returns artifacts stored remotely5043 .project_id_in5044 when artifacts belongs to projects5045 returns artifacts belonging to projects5046projects/edit5047 project export disabled5048 does not display the project export option5049 forking5050 project is not a fork5051 hides the remove fork relationship settings5052 project is a fork5053 shows the remove fork relationship settings to an authorized user5054 hides the fork relationship settings from an unauthorized user5055 hides the fork source from an unauthorized user5056 shows the fork source to an authorized user5057 prompt user about registration features5058 when service ping is enabled5059 behaves like does not render registration features prompt5060 does not render a placeholder input with registration features message5061 with no license and service ping disabled5062 behaves like renders registration features prompt5063 renders a placeholder input with registration features message5064 pages menu entry callout5065 with feature flag disabled5066 does not show a callout5067 with feature flag enabled5068 does show a callout5069Gitlab::GitalyClient::RepositoryService5070 #exists?5071 sends a repository_exists message5072 #optimize_repository5073 with default parameter5074 behaves like a repository optimization5075 sends a optimize_repository message5076 with heuristical housekeeping strategy5077 behaves like a repository optimization5078 sends a optimize_repository message5079 with eager housekeeping strategy5080 behaves like a repository optimization5081 sends a optimize_repository message5082 #prune_unreachable_objects5083 sends a prune_unreachable_objects message5084 #repository_size5085 sends a repository_size message5086 #get_object_directory_size5087 sends a get_object_directory_size message5088 #apply_gitattributes5089 sends an apply_gitattributes message5090 #info_attributes5091 reads the info attributes5092 #has_local_branches?5093 sends a has_local_branches message5094 #import_repository5095 sends a create_repository_from_url message5096 when http_host is provided5097 sends a create_repository_from_url message with http_host provided in the request5098 #fetch_remote5099 sends a fetch_remote_request message5100 with resolved address5101 sends a fetch_remote_request message5102 SSH auth5103 ssh_mirror_url: false, ssh_key_auth: false, ssh_private_key: "key", ssh_known_hosts: "known_hosts", expected_params: {}5104 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:2385105 ssh_mirror_url: false, ssh_key_auth: true, ssh_private_key: "key", ssh_known_hosts: "known_hosts", expected_params: {}5106 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:2385107 ssh_mirror_url: true, ssh_key_auth: false, ssh_private_key: "key", ssh_known_hosts: "known_hosts", expected_params: {:known_hosts=>"known_hosts"}5108 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:2385109 ssh_mirror_url: true, ssh_key_auth: true, ssh_private_key: "key", ssh_known_hosts: "known_hosts", expected_params: {:ssh_key=>"key", :known_hosts=>"known_hosts"}5110 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:2385111 ssh_mirror_url: true, ssh_key_auth: true, ssh_private_key: "key", ssh_known_hosts: nil, expected_params: {:ssh_key=>"key"}5112 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:2385113 ssh_mirror_url: true, ssh_key_auth: true, ssh_private_key: nil, ssh_known_hosts: "known_hosts", expected_params: {:known_hosts=>"known_hosts"}5114 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:2385115 ssh_mirror_url: true, ssh_key_auth: true, ssh_private_key: nil, ssh_known_hosts: nil, expected_params: {}5116 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:2385117 ssh_mirror_url: true, ssh_key_auth: true, ssh_private_key: "", ssh_known_hosts: "", expected_params: {}5118 example at ./spec/lib/gitlab/gitaly_client/repository_service_spec.rb:2385119 #calculate_checksum5120 sends a calculate_checksum message5121 #create_repository5122 sends a create_repository message without arguments5123 sends a create_repository message with default branch5124 sends a create_repository message with default branch containing non ascii chars5125 #create_from_snapshot5126 sends a create_repository_from_snapshot message5127 #raw_changes_between5128 sends a create_repository_from_snapshot message5129 #search_files_by_regexp5130 with ASCII ref5131 behaves like a search for files by regexp5132 sends a search_files_by_name message and returns a flatten array5133 with non-ASCII ref5134 behaves like a search for files by regexp5135 sends a search_files_by_name message and returns a flatten array5136 #disconnect_alternates5137 sends a disconnect_git_alternates message5138 #rename5139 sends a rename_repository message5140 #remove5141 sends a remove_repository message5142 #replicate5143 sends a replicate_repository message5144 #set_full_path5145 sends a set_full_path message5146 #full_path5147 sends a full_path message5148 #find_license5149 sends a find_license request with medium timeout5150Gitlab::Ci::Status::Build::Cancelable5151 #text5152 does not override status text5153 #icon5154 does not override status icon5155 #label5156 does not override status label5157 #group5158 does not override status group5159 #status_tooltip5160 does not override status status_tooltip5161 #badge_tooltip5162 returns the status5163 action details5164 #has_action?5165 when user is allowed to update build5166 is expected to have action5167 when user is not allowed to update build5168 is expected not to have action5169 #action_path5170 is expected to include "392/cancel"5171 #action_icon5172 is expected to eq "cancel"5173 #action_title5174 is expected to eq "Cancel"5175 #action_button_title5176 is expected to eq "Cancel this job"5177 .matches?5178 when build is cancelable5179 is a correct match5180 when build is not cancelable5181 does not match5182Projects::PostCreationWorker5183 behaves like an idempotent worker5184 is labeled as idempotent5185 performs multiple times sequentially without raising an exception5186 Prometheus integration5187 project is nil5188 does not create prometheus integration5189 when project has access to shared integration5190 Prometheus application is shared via group cluster5191 creates an Integrations::Prometheus record5192 Prometheus application is shared via instance cluster5193 creates an Integrations::Prometheus record5194 cleans invalid record and logs warning5195 shared Prometheus application is not available5196 does not persist an Integrations::Prometheus record5197 Incident timeline event tags5198 when project is nil5199 does not create event tags5200 when project is created5201 creates tags for the project5202 raises error if record creation fails5203GoogleApi::CloudPlatform::Client5204 .session_key_for_redirect_uri5205 creates a new session key5206 .new_session_key_for_redirect_uri5207 generates a new session key5208 #validate_token5209 when token is nil5210 is expected to be falsy5211 when expires_at is nil5212 is expected to be falsy5213 when expires in 1 hour5214 is expected to be truthy5215 when expires in 10 minutes5216 is expected to be falsy5217 #user_agent_header5218 returns a RequestOptions object5219 has the correct GitLab version in User-Agent header5220 #list_projects5221 calls Google Api CloudResourceManagerService#list_projects5222 #create_service_account5223 calls Google Api IamService#create_service_account5224 #create_service_account_key5225 calls Google Api IamService#create_service_account_key5226 grant_service_account_roles5227 calls Google Api CloudResourceManager#set_iam_policy5228 #enable_cloud_run5229 calls Google Api IamService#create_service_account_key5230 #enable_artifacts_registry5231 calls Google Api IamService#create_service_account_key5232 #enable_cloud_build5233 calls Google Api IamService#create_service_account_key5234 #enable_cloud_sql_admin5235 calls Google Api ServiceUsageService5236 #enable_compute5237 calls Google Api ServiceUsageService5238 #enable_service_networking5239 calls Google Api ServiceUsageService5240 #enable_visionai5241 calls Google Api ServiceUsageService5242 #revoke_authorizations5243 calls the revoke endpoint5244 #create_cloudsql_database5245 calls Google Api SQLAdminService#insert_database5246 #create_cloudsql_user5247 calls Google Api SQLAdminService#insert_user5248 #get_cloudsql_instance5249 calls Google Api SQLAdminService#get_instance5250 #list_cloudsql_databases5251 calls Google Api SQLAdminService#list_databases5252 #list_cloudsql_users5253 calls Google Api SQLAdminService#list_users5254 #create_cloudsql_instance5255 calls Google Api SQLAdminService#insert_instance5256Ci::ExpirePipelineCacheService5257 #execute5258 invalidates Etag caching for project pipelines path5259 invalidates Etag caching for merge request pipelines if pipeline runs on any commit of that source branch5260 updates the cached status for a project5261 does not do N+1 queries5262 destroyed pipeline5263 clears the cache5264 when the pipeline is triggered by another pipeline5265 updates the cache of dependent pipeline5266 when the pipeline triggered another pipeline5267 updates the cache of dependent pipeline5268rubocop rake tasks5269 check:graceful5270 with successful task result5271 example at ./spec/tasks/rubocop_rake_spec.rb:465272 modifies ENV and deletes REVEAL_RUBOCOP_TODO key5273 with non-successful task result5274 is expected to abort execution5275 todo:generate5276 without arguments5277 generates TODOs for all RuboCop rules5278 sets acronyms for inflections5279 with cop names as arguments5280 generates TODOs for given RuboCop cops5281EventFilter5282 #filter5283 returns "all" if given filter is nil5284 returns "all" if given filter is ""5285 returns "all" if given filter is "foo"5286 #apply_filter5287 with the "push" filter5288 filters push events only5289 with the "merged" filter5290 filters merged events only5291 with the "issue" filter5292 filters issue and work item events only5293 with the "comments" filter5294 filters comment events only5295 with the "team" filter5296 filters team events only5297 with the "all" filter5298 returns all events5299 with the "design" filter5300 returns only design events5301 with the "wiki" filter5302 returns only wiki page events5303 with an unknown filter5304 returns all events5305 with a nil filter5306 returns all events5307 #in_operator_query_builder_params5308 with the "issue" filter5309 also includes work item events5310 #active?5311 returns false if filter does not include the given key5312 returns false if the given key is nil5313 returns true if filter does not include the given key5314CiPlatformMetric5315 behaves like a BulkInsertSafe model5316 when calling class methods directly5317 raises an error when method is not bulk-insert safe5318 does not raise an error when method is bulk-insert safe5319 .bulk_insert!5320 when all items are valid5321 inserts them all5322 returns an empty array5323 when some items are invalid5324 does not insert any of them and raises an error5325 inserts them anyway when bypassing validations5326 validations5327 is expected to validate that :recorded_at cannot be empty/falsy5328 is expected to validate that :count cannot be empty/falsy5329 is expected to validate that :count looks like an integer greater than 05330 is expected to allow :platform_target to be ‹""›5331 is expected not to allow :platform_target to be ‹nil›5332 is expected to validate that the length of :platform_target is at most 2555333 .insert_auto_devops_platform_targets!5334 when there is already existing metrics data5335 does not erase any existing data5336 when there are multiple platform target variables5337 inserts platform target counts for that day5338 when there are invalid ci variable values for platform_target5339 ignores those values5340 when there are no platform target variables5341 does not generate any new platform metrics5342SuggestionEntity5343 exposes correct attributes5344 exposes current user abilities5345 inapplicable_reason5346 when user can apply suggestion5347 returns the inapplicable reason5348 when user cannot apply suggestion5349 returns appropriate message5350Gitlab::SlashCommands::IssueMove5351 #match5352 behaves like move command5353 can be parsed to extract the needed fields5354 behaves like move command5355 can be parsed to extract the needed fields5356 behaves like move command5357 can be parsed to extract the needed fields5358 behaves like move command5359 can be parsed to extract the needed fields5360 behaves like move command5361 can be parsed to extract the needed fields5362 behaves like move command5363 can be parsed to extract the needed fields5364 #execute5365 when the user can move the issue5366 when the move fails5367 returns the error message5368 when the move succeeds5369 moves the issue to the new destination5370 returns the new issue5371 mentions the old issue5372 when the issue does not exist5373 returns not found5374 when the target project does not exist5375 returns not found5376 when the user cannot see the target project5377 returns not found5378 when the user does not have the required permissions on the target project5379 returns the error message5380Ci::Runners::SetRunnerAssociatedProjectsService#execute5381 # order random5382 with unauthorized user5383 does not call assign_to on runner and returns error message5384 with authorized user5385 with maintainer user5386 behaves like with successful requests5387 when disassociating a project5388 reassigns associated projects and returns success response5389 when disassociating no projects5390 reassigns associated projects and returns success response5391 when disassociating all projects5392 reassigns associated projects and returns success response5393 behaves like with failing destroy calls5394 returns error response and rolls back transaction5395 when associating new projects5396 with missing permissions on one of the new projects5397 returns error response and rolls back transaction5398 with admin user5399 behaves like with successful requests5400 when disassociating a project5401 reassigns associated projects and returns success response5402 when disassociating no projects5403 reassigns associated projects and returns success response5404 when disassociating all projects5405 reassigns associated projects and returns success response5406 behaves like with failing destroy calls5407 returns error response and rolls back transaction5408 without user5409 does not call assign_to on runner and returns error response5410Git::BaseHooksService5411 push event5412 creates push event5413 create_push_event is set to false5414 does not create push event5415 project hooks and integrations5416 hooks5417 active hooks5418 executes the hooks5419 inactive hooks5420 does not execute the hooks5421 with integrations5422 with active integrations5423 executes the services5424 with integrations.skip_ci push option5425 executes the services5426 with inactive integrations5427 does not execute the services5428 when execute_project_hooks param is set to false5429 does not execute hooks and integrations5430 Generating CI variables from push options5431 with empty push options5432 behaves like creates pipeline with params and expected variables5433 calls the create pipeline service5434 with push options not specifying variables5435 behaves like creates pipeline with params and expected variables5436 calls the create pipeline service5437 with push options specifying variables5438 behaves like creates pipeline with params and expected variables5439 calls the create pipeline service5440 with push options not specifying variables in correct format5441 behaves like creates pipeline with params and expected variables5442 calls the create pipeline service5443 Pipeline creation5444 when the pipeline is persisted5445 and there are no errors5446 returns success5447 and there are errors5448 does not log errors and returns success5449 when the pipeline wasn't persisted5450 and there are no errors5451 returns success5452 and there are errors5453 logs errors and returns success5454 notifying KAS5455 enqueues the notification worker5456 when KAS is disabled5457 is expected not to receive perform_async(*(any args)) 0 times5458 when :notify_kas_on_git_push feature flag is disabled5459 is expected not to receive perform_async(*(any args)) 0 times5460Analytics::CycleAnalytics::MergeRequestStageEvent5461 is expected to validate that :stage_event_hash_id cannot be empty/falsy5462 is expected to validate that :merge_request_id cannot be empty/falsy5463 is expected to validate that :group_id cannot be empty/falsy5464 is expected to validate that :project_id cannot be empty/falsy5465 is expected to validate that :start_event_timestamp cannot be empty/falsy5466 has state enum5467 behaves like StageEventModel5468 .upsert_data5469DEPRECATION WARNING: TimeWithZone#to_s(:db) is deprecated. Please use TimeWithZone#to_fs(:db) instead. (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/support/shared_examples/models/concerns/analytics/cycle_analytics/stage_event_model_examples.rb:5)5470 inserts the data5471DEPRECATION WARNING: TimeWithZone#to_s(:db) is deprecated. Please use TimeWithZone#to_fs(:db) instead. (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/support/shared_examples/models/concerns/analytics/cycle_analytics/stage_event_model_examples.rb:5)5472 does not produce duplicate rows5473DEPRECATION WARNING: TimeWithZone#to_s(:db) is deprecated. Please use TimeWithZone#to_fs(:db) instead. (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/support/shared_examples/models/concerns/analytics/cycle_analytics/stage_event_model_examples.rb:5)5474 inserts the data correctly5475 scopes5476 filters by stage_event_hash_id5477 filters by project_id5478 filters by group_id5479 filters by author_id5480 filters by assignee5481 filters by milestone_id5482 start_event_timestamp filtering5483 when range is given5484 when specifying upper bound5485 when specifying the lower bound5486 end_event_timestamp filtering5487 when range is given5488 when specifying upper bound5489 when specifying the lower bound5490 #total_time5491 calcualtes total time from the start_event_timestamp and end_event_timestamp columns5492 when total time is calculated in SQL as an extra column5493 returns the SQL calculated time5494JiraConnectSubscriptions::CreateService5495 remote user does not have access5496 behaves like a failed execution5497 does not create a subscription5498 returns an error status5499 remote user cannot be retrieved5500 behaves like a failed execution5501 does not create a subscription5502 returns an error status5503 when user does have access5504 creates a subscription5505 returns success5506 namespace has projects5507 starts workers to sync projects in batches with delay5508 when path is invalid5509 behaves like a failed execution5510 does not create a subscription5511 returns an error status5512 when user does not have access5513 behaves like a failed execution5514 does not create a subscription5515 returns an error status5516BulkImports::Projects::Pipelines::ReferencesPipeline5517 # order random5518 #load5519 saves the object when object body changed5520 when object body is not changed5521 does not save the object5522 #extract5523 returns ExtractedData containing issues, mrs & their notes5524 when object body is nil5525 returns ExtractedData not containing the object5526 #transform5527 updates matching urls with new ones5528 when object does not have reference5529 returns object unchanged5530 when there are not matched urls5531 returns object unchanged5532 when url path does not start with source full path5533 returns object unchanged5534 when host does not match and url path starts with source full path5535 returns object unchanged5536 when url does not match at all5537 returns object unchanged5538Gitlab::ImportExport::Project::Sample::RelationFactory5539 issue object5540DEPRECATION WARNING: ActiveSupport::TimeWithZone.name has been deprecated and5541from Rails 7.1 will use the default Ruby implementation.5542You can set `config.active_support.remove_deprecated_time_with_zone_name = true`5543to enable the new behavior now.5544 (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb:55)5545 correctly updated due date5546 milestone object5547DEPRECATION WARNING: ActiveSupport::TimeWithZone.name has been deprecated and5548from Rails 7.1 will use the default Ruby implementation.5549You can set `config.active_support.remove_deprecated_time_with_zone_name = true`5550to enable the new behavior now.5551 (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb:86)5552 correctly updated due date5553DEPRECATION WARNING: ActiveSupport::TimeWithZone.name has been deprecated and5554from Rails 7.1 will use the default Ruby implementation.5555You can set `config.active_support.remove_deprecated_time_with_zone_name = true`5556to enable the new behavior now.5557 (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb:93)5558 correctly updated start date5559 milestone object5560DEPRECATION WARNING: ActiveSupport::TimeWithZone.name has been deprecated and5561from Rails 7.1 will use the default Ruby implementation.5562You can set `config.active_support.remove_deprecated_time_with_zone_name = true`5563to enable the new behavior now.5564 (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb:124)5565 correctly updated due date5566DEPRECATION WARNING: ActiveSupport::TimeWithZone.name has been deprecated and5567from Rails 7.1 will use the default Ruby implementation.5568You can set `config.active_support.remove_deprecated_time_with_zone_name = true`5569to enable the new behavior now.5570 (called from block (3 levels) in <top (required)> at /builds/gitlab-org/gitlab/spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb:131)5571 correctly updated start date5572 hook object5573 does not calculate the closest date to average5574Gitlab::Analytics::CycleAnalytics::StageEvents::MergeRequestLastBuildStarted5575 behaves like value stream analytics event5576 is expected to be a kind of String5577 is expected to be a kind of Symbol5578 is expected to include ApplicationRecord(abstract)5579 is expected to respond to #timestamp_projection5580 is expected to respond to #html_description5581 is expected to be a kind of Array5582 #apply_query_customization5583 expects an ActiveRecord::Relation object as argument and returns a modified version of it5584 #hash_code5585 returns a hash that uniquely identifies an event5586 does not differ when the same object is built with the same params5587 behaves like LEFT JOIN-able value stream analytics event5588 can use the event as LEFT JOIN5589 when looking at the record with data5590 contains the timestamp expression5591 when looking at the record without data5592 returns nil for the timestamp expression5593Ci::TestFailureHistoryService5594 #execute5595 when pipeline has failed builds with test reports5596 creates unit test failures records5597 assigns partition_id to Ci::UnitTestFailure5598 when pipeline is not for the default branch5599 does not persist data5600 when test failure data have already been persisted with the same exact attributes5601 does not fail but does not persist new data5602 when number of failed unit tests exceed the limit5603 does not persist data5604 when number of failed unit tests across multiple builds exceed the limit5605 does not persist data5606 when test failure data have duplicates within the same payload (happens when the JUnit report has duplicate unit test names but have different failures)5607 does not fail but does not persist duplicate data5608 when pipeline has no failed builds with test reports5609 does not persist data5610 #should_track_failures?5611 when feature flag is enabled and pipeline ref is the default branch5612 is expected to eq true5613 when pipeline is not equal to the project default branch5614 is expected to eq false5615 when total number of builds with failed tests exceeds the max number of trackable failures5616 is expected to eq false5617 #async5618 when service should track failures5619 enqueues the worker when #perform_if_needed is called5620 when service should not track failures5621 does not enqueue the worker when #perform_if_needed is called5622MergeRequests::DeleteNonLatestDiffsService5623 #execute5624 schedules non-latest merge request diffs removal56261st Try error in ./spec/services/merge_requests/delete_non_latest_diffs_service_spec.rb:20:5627#<DeleteDiffFilesWorker (class)> received :bulk_perform_in with unexpected arguments5628 expected: (5 minutes, [[90], [91]])5629 got: (5 minutes, [[91], [90]])5631RSpec::Retry: 2nd try ./spec/services/merge_requests/delete_non_latest_diffs_service_spec.rb:205632 schedules no removal if it is already cleaned5633 schedules no removal if it is empty5634 schedules no removal if there is no non-latest diffs5635MergeRequestMetricsHelper5636 #build_metrics5637 when closed and metrics exists5638 does not call the merge request metrics class5639 returns the metrics for the given merge request5640 when merged and metrics exists5641 does not call the merge request metrics class5642 returns the metrics for the given merge request5643 when merged and metrics do not exists5644 rebuilds the merge request metrics5645Gitlab::SidekiqLogging::StructuredLogger5646 #call5647 with SIDEKIQ_LOG_ARGUMENTS enabled5648 logs start and end of job5649 logs real job wrapped by active job worker5650 logs an exception in job5651 logs the normalized SQL query for statement timeouts5652 logs the root cause of an Sidekiq::JobRetry::Skip exception in the job5653 logs the root cause of an Sidekiq::JobRetry::Handled exception in the job5654 keeps Sidekiq::JobRetry::Handled exception if the cause does not exist5655 does not modify the job5656 does not modify the wrapped job5657 with SIDEKIQ_LOG_ARGUMENTS disabled5658 logs start and end of job without args5659 logs without created_at and enqueued_at fields5660 with latency5661 logs with scheduling latency5662 with enqueue latency5663 logs with scheduling latency5664 with Gitaly, Rugged, and Redis calls5665 logs with Gitaly and Rugged timing data5666 when the job performs database queries5667 when load balancing is enabled5668 logs the database time5669 prevents database time from leaking to the next job5670 when the job uses load balancing capabilities5671 logs the database chosen5672 when there is extra metadata set for the done log5673 logs it in the done log5674 when instrumentation data is not loaded5675 does not raise exception5676 when the job payload is compressed5677 logs it in the done log5678 when the job is deferred5679 logs start and end of job with deferred job_status5680 #add_time_keys!5681 update payload correctly5682FeatureFlags::UpdateService5683 #execute5684 returns success status5685 creates audit event with correct message5686 when Jira Connect subscription does not exist5687 does not sync the feature flag to Jira5688 when Jira Connect subscription exists5689 syncs the feature flag to Jira5690 behaves like update feature flag client5691 updates last feature flag updated at5692 with invalid params5693 returns error status5694 returns error messages5695 does not create audit event5696 does not sync the feature flag to Jira5697 behaves like does not update feature flag client5698 does not update last feature flag updated at5699 when user is reporter5700 returns error status5701 when nothing is changed5702 returns success status5703 does not create audit event5704 description is being changed5705 creates audit event with changed description5706 when flag active state is changed5707 creates audit event about changing active state5708 executes hooks5709Packages::Composer::VersionParserService5710 #execute5711 tagname: nil, branchname: "master", expected_version: "dev-master"5712 is expected to eq "dev-master"5713 tagname: nil, branchname: "my-feature", expected_version: "dev-my-feature"5714 is expected to eq "dev-my-feature"5715 tagname: nil, branchname: "12-feature", expected_version: "dev-12-feature"5716 is expected to eq "dev-12-feature"5717 tagname: nil, branchname: "v1", expected_version: "1.x-dev"5718 is expected to eq "1.x-dev"5719 tagname: nil, branchname: "v1.x", expected_version: "1.x-dev"5720 is expected to eq "1.x-dev"5721 tagname: nil, branchname: "v1.7.x", expected_version: "1.7.x-dev"5722 is expected to eq "1.7.x-dev"5723 tagname: nil, branchname: "v1.7", expected_version: "1.7.x-dev"5724 is expected to eq "1.7.x-dev"5725 tagname: nil, branchname: "1.7.x", expected_version: "1.7.x-dev"5726 is expected to eq "1.7.x-dev"5727 tagname: "v1.0.0", branchname: nil, expected_version: "1.0.0"5728 is expected to eq "1.0.0"5729 tagname: "v1.0", branchname: nil, expected_version: "1.0"5730 is expected to eq "1.0"5731 tagname: "v1.0.1+meta", branchname: nil, expected_version: "1.0.1+meta"5732 is expected to eq "1.0.1+meta"5733 tagname: "1.0", branchname: nil, expected_version: "1.0"5734 is expected to eq "1.0"5735 tagname: "1.0.2", branchname: nil, expected_version: "1.0.2"5736 is expected to eq "1.0.2"5737 tagname: "1.0.2-beta2", branchname: nil, expected_version: "1.0.2-beta2"5738 is expected to eq "1.0.2-beta2"5739 tagname: "1.0.1+meta", branchname: nil, expected_version: "1.0.1+meta"5740 is expected to eq "1.0.1+meta"5741Gitlab::GithubImport::Representation::Note5742 .from_api_response5743 does not set the user if the response did not include a user5744 behaves like a Note5745 returns an instance of Note5746 the returned Note5747 includes the noteable ID5748 includes the noteable type5749 includes the author details5750 includes the note body5751 includes the created timestamp5752 includes the updated timestamp5753 includes the note ID5754 #github_identifiers5755 returns a hash with needed identifiers5756 .from_json_hash5757 does not convert the author if it was not specified5758 behaves like a Note5759 returns an instance of Note5760 the returned Note5761 includes the noteable ID5762 includes the noteable type5763 includes the author details5764 includes the note body5765 includes the created timestamp5766 includes the updated timestamp5767 includes the note ID5768 #github_identifiers5769 returns a hash with needed identifiers5770Gitlab::HookData::UserBuilder5771 #build5772 data5773 on create5774 is expected to eq "user_create"5775 behaves like includes the required attributes5776 includes the required attributes5777 behaves like does not include old username attributes5778 does not include old username attributes5779 behaves like does not include state attributes5780 does not include state attributes5781 on destroy5782 is expected to eq "user_destroy"5783 behaves like includes the required attributes5784 includes the required attributes5785 behaves like does not include old username attributes5786 does not include old username attributes5787 behaves like does not include state attributes5788 does not include state attributes5789 on rename5790 is expected to eq "user_rename"5791 includes old username details5792 behaves like includes the required attributes5793 includes the required attributes5794 behaves like does not include state attributes5795 does not include state attributes5796 on failed_login5797 is expected to eq "user_failed_login"5798 includes state details5799 behaves like includes the required attributes5800 includes the required attributes5801 behaves like does not include old username attributes5802 does not include old username attributes5803MergeRequests::MigrateExternalDiffsService5804 .enqueue!5805 enqueues nothing if external diffs are disabled5806 enqueues eligible in-database diffs if external diffs are enabled5807 #execute5808 migrates an in-database diff to the external store5809Resolvers::ProjectMilestonesResolver5810 #resolve5811 calls MilestonesFinder to retrieve all milestones5812 when including ancestor milestones5813 calls MilestonesFinder with correct parameters5814 by ids5815 calls MilestonesFinder with correct parameters5816 by state5817 calls MilestonesFinder with correct parameters5818 by sort5819 calls MilestonesFinder with correct parameters5820 uses offset-pagination when sorting by EXPIRED_LAST_DUE_DATE_ASC5821 uses offset-pagination when sorting by EXPIRED_LAST_DUE_DATE_DESC5822 by timeframe5823 when passing a timeframe5824 calls MilestonesFinder with correct parameters5825 when title is present5826 calls MilestonesFinder with correct parameters5827 when search_title is present5828 calls MilestonesFinder with correct parameters5829 when containing date is present5830 calls MilestonesFinder with correct parameters5831Sidebars::Projects::Menus::MergeRequestsMenu5832 behaves like serializable as super_sidebar_menu_args5833 returns hash with provided attributes5834 returns hash with an item_id5835 #render?5836 when repository is not present5837 returns false5838 when repository is present5839 when user can read merge requests5840 returns true5841 when user cannot read merge requests5842 returns false5843 #pill_count5844 returns zero when there are no open merge requests5845 memoizes the query5846 when there are open merge requests5847 returns the number of open merge requests5848 formatting5849 when the count value is over 10005850 returns truncated digits5851Gitlab::BitbucketServerImport::UserFinder5852 # order random5853 #uid5854 when provided object is a Hash5855 maps to an existing user with the same username5856 when provided object is a representation Object5857 maps to a existing user with the same username5858 when corresponding user does not exist5859 returns nil5860 when bitbucket_server_user_mapping_by_username is disabled5861 when provided object is a Hash5862 maps to an existing user with the same email5863 when provided object is a representation Object5864 maps to an existing user with the same email5865 when corresponding user does not exist5866 returns nil5867 #find_user_id5868 when user cannot be found5869 caches and returns nil5870 when user can be found5871 caches and returns the user ID by email5872 caches and returns the user ID by username5873 #author_id5874 calls uid method5875 when corresponding user does not exist5876 fallsback to project creator_id5877Gitlab::Analytics::CycleAnalytics::StageEvents::PlanStageStart5878 filters issues where first_associated_with_milestone_at or first_added_to_board_at is filled5879 behaves like value stream analytics event5880 is expected to be a kind of String5881 is expected to be a kind of Symbol5882 is expected to include ApplicationRecord(abstract)5883 is expected to respond to #timestamp_projection5884 is expected to respond to #html_description5885 is expected to be a kind of Array5886 #apply_query_customization5887 expects an ActiveRecord::Relation object as argument and returns a modified version of it5888 #hash_code5889 returns a hash that uniquely identifies an event5890 does not differ when the same object is built with the same params5891 behaves like LEFT JOIN-able value stream analytics event5892 can use the event as LEFT JOIN5893 when looking at the record with data5894 contains the timestamp expression5895 when looking at the record without data5896 returns nil for the timestamp expression5897FinderMethods5898 #find_by!5899 returns the project if the user has access5900 raises not found when the project is not found by id5901 raises not found when the project is not found by filter5902 raises not found the user does not have access5903 ignores ordering5904 #find5905 returns the project if the user has access5906 raises not found when the project is not found by id5907 raises not found when the project is not found by filter5908 raises not found the user does not have access5909 ignores ordering5910 #find_by5911 returns the project if the user has access5912 returns nil when the project is not found by id5913 returns nil when the project is not found by filter5914 returns nil when the user does not have access5915 ignores ordering5916Gitlab::SidekiqQueue5917 #drop_jobs!5918 when there are no matching jobs5919 when the queue is not processed in time5920 returns a non-completion flag, the number of jobs deleted, and the remaining queue size5921 when the queue is processed in time5922 returns a completion flag, the number of jobs deleted, and the remaining queue size5923 when there are matching jobs5924 when the queue is not processed in time5925 returns a non-completion flag, the number of jobs deleted, and the remaining queue size5926 when the queue is processed in time5927 returns a completion flag, the number of jobs deleted, and the remaining queue size5928 when there are jobs matching the class name5929 when the queue is not processed in time5930 returns a non-completion flag, the number of jobs deleted, and the remaining queue size5931 when the queue is processed in time5932 returns a completion flag, the number of jobs deleted, and the remaining queue size5933 when there are no valid metadata keys passed5934 raises NoMetadataError5935 when the queue does not exist5936 raises InvalidQueueError5937Gitlab::Ci::Config::Entry::Image5938 when configuration is a string5939 #value5940 returns image hash5941 #errors5942 does not append errors5943 #valid?5944 is valid5945 #image5946 returns image's name5947 #entrypoint5948 returns image's entrypoint5949 #ports5950 returns image's ports5951 #pull_policy5952 returns nil5953 when configuration is a hash5954 #value5955 returns image hash5956 #errors5957 does not append errors5958 #valid?5959 is valid5960 #image5961 returns image's name5962 #entrypoint5963 returns image's entrypoint5964 when configuration has ports5965 when with_image_ports metadata is not enabled5966 #valid?5967 is not valid5968 when with_image_ports metadata is enabled5969 #valid?5970 is valid5971 #ports5972 returns image's ports5973 when configuration has pull_policy5974 #valid?5975 is valid5976 #value5977 returns value5978 when entry value is not correct5979 #errors5980 saves errors5981 #valid?5982 is not valid5983 when unexpected key is specified5984 #errors5985 saves errors5986 #valid?5987 is not valid5988Gitlab::JiraImport::ImportIssueWorker5989 modules5990 is expected to includes the ApplicationWorker module5991 is expected to includes the Gitlab::NotifyUponDeath module5992 is expected to includes the Gitlab::JiraImport::QueueOptions module5993 is expected to includes the Gitlab::Import::DatabaseHelpers module5994 #perform5995 when any exception raised while inserting to DB5996 record a failed to import issue5997 when record is successfully inserted5998 when import label does not exist5999 does not record import failure6000 when import label exists6001 does not record import failure6002 creates an issue with the correct attributes6003 when assignee_ids is nil6004 creates an issue without assignee6005 when assignee_ids is an empty array6006 creates an issue without assignee6007projects/empty6008 when user can push code on the project6009 displays "git clone" instructions6010 when default branch name contains special shell characters6011 escapes the default branch name6012 when user can not push code on the project6013 does not display "git clone" instructions6014 project is archived6015 shows archived notice6016 with invite button on empty projects6017 shows invite members info6018 when user does not have permissions to invite members6019 does not show invite member info6020Banzai::Filter::References::ReferenceCache6021 #load_references_per_parent6022 loads references grouped per parent paths6023 when rendered_html is memoized6024 reuses memoized rendered HTML when available6025 when result is not available6026 is expected not to raise Exception6027 #load_parent_per_reference6028 returns a Hash containing projects grouped per parent paths6029 #load_records_per_parent6030 returns a Hash containing projects grouped per parent paths6031 #initialize_reference_cache6032 does not have an N+1 query problem with cross projects6033 #find_for_paths6034 with RequestStore disabled6035 returns a list of Projects for a list of paths6036 return an empty array for paths that do not exist6037 with RequestStore enabled6038 returns a list of Projects for a list of paths6039 when no project with that path exists6040 returns no value6041 adds the ref to the project refs cache6042 #current_parent_path6043 returns the path of the current parent6044 #current_project_namespace_path6045 returns the path of the current project namespace6046 #full_project_path6047 returns current parent path when no ref specified6048 returns combined namespace and project ref6049 returns uses default namespace and project ref when namespace nil6050 #full_group_path6051 returns current parent path when no group ref specified6052 returns group ref6053Gitlab::FileFinder6054 #find6055 does not cause N+1 query6056 behaves like file finder6057 finds by path6058 finds by content6059 with inclusive filters6060 filters by filename6061 filters by path6062 filters by extension6063 with exclusive filters6064 filters by filename6065 filters by path6066 filters by extension6067 with white space in the path6068 filters by path correctly6069seed production settings6070 GITLAB_SHARED_RUNNERS_REGISTRATION_TOKEN is set in the environment6071Saved Runner Registration Token6072Saved CI JWT signing key6073 writes the token to the database6074 GITLAB_PROMETHEUS_METRICS_ENABLED is set in the environment6075 GITLAB_PROMETHEUS_METRICS_ENABLED is true6076Saved Prometheus metrics enabled flag6077Saved CI JWT signing key6078 prometheus_metrics_enabled is set to true6079 GITLAB_PROMETHEUS_METRICS_ENABLED is false6080Saved Prometheus metrics enabled flag6081Saved CI JWT signing key6082 prometheus_metrics_enabled is set to false6083 GITLAB_PROMETHEUS_METRICS_ENABLED is default6084Saved CI JWT signing key6085 prometheus_metrics_enabled is set to true6086 CI JWT signing key6087Saved CI JWT signing key6088 writes valid RSA key to the database6089Packages::Debian::UpdateDistributionService6090 behaves like Debian Update Distribution Service6091 with a Debian project distribution6092 with valid simple params6093 behaves like Update Debian Distribution6094 returns ServiceResponse6095 with invalid simple params6096 behaves like Update Debian Distribution6097 returns ServiceResponse6098 with valid components and architectures6099 behaves like Update Debian Distribution6100 returns ServiceResponse6101 with invalid components6102 behaves like Update Debian Distribution6103 returns ServiceResponse6104 with invalid architectures6105 behaves like Update Debian Distribution6106 returns ServiceResponse6107 behaves like Debian Update Distribution Service6108 with a Debian group distribution6109 with valid simple params6110 behaves like Update Debian Distribution6111 returns ServiceResponse6112 with invalid simple params6113 behaves like Update Debian Distribution6114 returns ServiceResponse6115 with valid components and architectures6116 behaves like Update Debian Distribution6117 returns ServiceResponse6118 with invalid components6119 behaves like Update Debian Distribution6120 returns ServiceResponse6121 with invalid architectures6122 behaves like Update Debian Distribution6123 returns ServiceResponse6124Grafana::TimeWindow6125 #formatted6126 is expected to eq {:end=>"2019-03-17T13:10:00Z", :start=>"2019-03-17T05:10:00Z"}6127 #in_milliseconds6128 is expected to eq {:from=>1552799400000, :to=>1552828200000}6129 when non-unix parameters are provided6130 is expected to eq {:from=>1552799400000, :to=>1552828200000}6131Grafana::RangeWithDefaults6132 #to_hash6133 is expected to eq {:from=>#<Grafana::Timestamp:0x00007ea9dabd29e8 @time=2019-03-17 05:10:00 +0000>, :to=>#<Grafana::Timestamp:0x00007ea9dabd23d0 @time=2019-03-17 13:10:00 +0000>}6134 when only "to" is provided6135 has the expected properties6136 when only "from" is provided6137 has the expected properties6138 when no parameters are provided6139 has the expected properties6140Grafana::Timestamp6141 #formatted6142 is expected to eq "2019-03-17T05:10:00Z"6143 #to_ms6144 is expected to eq 15527994000006145 .from_ms_since_epoch6146 is expected to be a kind of Grafana::Timestamp6147 when the input is not a unix-ish timestamp6148 raises an error6149Packages::Cleanup::UpdatePolicyService6150 #execute6151 with existing container expiration policy6152 user_role: :maintainer, shared_examples_name: "updating the policy"6153 behaves like updating the policy6154 updates the existing one6155 with invalid parameters6156 does not update one6157 user_role: :developer, shared_examples_name: "denying access"6158 behaves like denying access6159 returns an error6160 user_role: :reporter, shared_examples_name: "denying access"6161 behaves like denying access6162 returns an error6163 user_role: :guest, shared_examples_name: "denying access"6164 behaves like denying access6165 returns an error6166 user_role: :anonymous, shared_examples_name: "denying access"6167 behaves like denying access6168 returns an error6169 without existing container expiration policy6170 user_role: :maintainer, shared_examples_name: "creating the policy"6171 behaves like creating the policy6172 creates a new one6173 with invalid parameters6174 does not create one6175 user_role: :developer, shared_examples_name: "denying access"6176 behaves like denying access6177 returns an error6178 user_role: :reporter, shared_examples_name: "denying access"6179 behaves like denying access6180 returns an error6181 user_role: :guest, shared_examples_name: "denying access"6182 behaves like denying access6183 returns an error6184 user_role: :anonymous, shared_examples_name: "denying access"6185 behaves like denying access6186 returns an error6187Resolvers::GroupMembersResolver6188 is expected to have nullable GraphQL type GroupMemberConnection6189 behaves like querying members with a group6190 #resolve6191 finds all resource members6192 with sort options6193 searches users by user name6194 with search6195 when the search term matches a user6196 searches users by user name6197 when the search term does not match any user6198 is empty6199 when user can not see resource members6200 generates an error6201Gitlab::Analytics::CycleAnalytics::StageEvents::MergeRequestLastBuildFinished6202 behaves like value stream analytics event6203 is expected to be a kind of String6204 is expected to be a kind of Symbol6205 is expected to include ApplicationRecord(abstract)6206 is expected to respond to #timestamp_projection6207 is expected to respond to #html_description6208 is expected to be a kind of Array6209 #apply_query_customization6210 expects an ActiveRecord::Relation object as argument and returns a modified version of it6211 #hash_code6212 returns a hash that uniquely identifies an event6213 does not differ when the same object is built with the same params6214 behaves like LEFT JOIN-able value stream analytics event6215 can use the event as LEFT JOIN6216 when looking at the record with data6217 contains the timestamp expression6218 when looking at the record without data6219 returns nil for the timestamp expression6220Gitlab::Redis::HLL6221 .add6222 when checking key format6223 for invalid keys6224 metric_key: "test", value: 16225 raise an error when using an invalid key format6226 metric_key: "test-{metric", value: 16227 raise an error when using an invalid key format6228 metric_key: "test-{metric}}", value: 16229 raise an error when using an invalid key format6230 for valid keys6231 metric_key: "test-{metric}", value: 16232 doesn't raise error when having correct format6233 metric_key: "test-{metric}-1", value: 16234 doesn't raise error when having correct format6235 metric_key: "test:{metric}-1", value: 16236 doesn't raise error when having correct format6237 metric_key: "2020-216-{project_action}", value: 16238 doesn't raise error when having correct format6239 metric_key: "i_{analytics}_dev_ops_score-2020-32", value: 16240 doesn't raise error when having correct format6241 when adding entries6242 supports single value6243 supports multiple values6244 .count6245 has 3 distinct users for weeks 32, 33, 346246 has 3 distinct users for weeks 32, 336247 has 2 distinct users for weeks 33, 346248 has one distinct user for week 336249 has 4 distinct users when one different user has an action on week 346250Packages::Debian::ProjectComponent6251 behaves like Debian Distribution Component6252 relationships6253 is expected to belong to distribution class_name => Packages::Debian::ProjectDistribution required: false inverse_of => components6254 is expected to have many files class_name => Packages::Debian::ProjectComponentFile inverse_of => component6255 validations6256 #distribution6257 is expected to validate that :distribution cannot be empty/falsy6258 #name6259 is expected to validate that :name cannot be empty/falsy6260 is expected to allow :name to be ‹"main"›6261 is expected to allow :name to be ‹"non-free"›6262 is expected to allow :name to be ‹"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"›6263 is expected not to allow :name to be ‹"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"›6264 is expected not to allow :name to be ‹"non/free"›6265 is expected not to allow :name to be ‹"hé"›6266 scopes6267 .ordered_by_name6268 sorts by name6269 .with_distribution6270 does not return other distributions6271 .with_name6272 does not return other distributions6273Gitlab::Ci::Status::Bridge::Common6274 #details_path6275 when user has access to read downstream pipeline6276 is expected to have details6277 is expected to include "pipelines/141"6278 when user does not have access to read downstream pipeline6279 is expected not to have details6280 is expected to be nil6281 #label6282 returns description6283 when description is nil6284 returns core status label6285 when description is empty string6286 returns core status label6287Users::RejectService6288 #execute6289 failures6290 when the executor user is not allowed to reject users6291 returns error result6292 when the executor user is an admin in admin mode6293 when user is not in pending approval state6294 returns error result6295 success6296 when the executor user is an admin in admin mode6297 initiates user removal6298 emails the user on rejection6299 logs rejection in application logs6300 audit events6301 when not licensed6302 does not log any audit event6303Autocomplete::RoutesFinder6304 #execute6305 for NamespacesOnly6306 finds only user namespace and groups matching the search excluding project namespaces6307 when user is admin6308 when admin mode setting is disabled6309 finds all namespaces matching the search excluding project namespaces6310 when admin mode setting is enabled6311 when in admin mode6312 finds all namespaces matching the search excluding project namespaces6313 when not in admin mode6314 does not find all namespaces6315 for ProjectsOnly6316 finds only matching projects the user has access to6317 when user is admin6318 when admin mode setting is disabled6319 finds all projects matching the search6320 when admin mode setting is enabled6321 when in admin mode6322 finds all projects matching the search6323 when not in admin mode6324 does not find all projects6325Tooling::Mappings::JsToSystemSpecsMappings6326 # order random6327 #construct_js_keywords6328 returns a singularized keyword based on the first folder the file is in6329 when the files are under the pages folder6330 captures the second folder6331 #system_specs_for_edition6332 when a file is not a ruby spec6333 does not return that file6334 when a file is a ruby spec6335 returns that file6336 when FOSS6337 checks the correct folder6338 when EE6339 checks the correct folder6340 when JiHu6341 checks the correct folder6342 #execute6343 when no JS files were changed6344 does not change the output file6345 when some JS files were changed6346 when the JS files are not present on disk6347 does not change the output file6348 when the JS files are present on disk6349 when no system specs match the JS keyword6350 does not change the output file6351 when a system spec matches the JS keyword6352 adds the new specs to the output file6353 #filter_files6354 when no files were changed6355 returns an empty array6356 when JS files were changed6357 returns the path to the JS files6358 when JS files are deleted6359 returns an empty array6360Gitlab::Metrics::GlobalSearchSlis6361 # order random6362 #initialize_slis!6363 initializes Apdex SLIs for global_search6364 initializes ErrorRate SLIs for global_search6365 when initializeing for limited types6366 api: true, web: true6367 only initializes for the relevant endpoints6368 api: true, web: false6369 only initializes for the relevant endpoints6370 api: false, web: true6371 only initializes for the relevant endpoints6372 api: false, web: false6373 only initializes for the relevant endpoints6374 #record_apdex6375 search_type: "basic", code_search: false, duration_target: 8.8126376 increments the global_search SLI as a success if the elapsed time is within the target6377 increments the global_search SLI as a failure if the elapsed time is not within the target6378 search_type: "basic", code_search: true, duration_target: 27.5386379 increments the global_search SLI as a success if the elapsed time is within the target6380 increments the global_search SLI as a failure if the elapsed time is not within the target6381 search_type: "advanced", code_search: false, duration_target: 2.4526382 increments the global_search SLI as a success if the elapsed time is within the target6383 increments the global_search SLI as a failure if the elapsed time is not within the target6384 search_type: "advanced", code_search: true, duration_target: 15.526385 increments the global_search SLI as a success if the elapsed time is within the target6386 increments the global_search SLI as a failure if the elapsed time is not within the target6387 #record_error_rate6388 calls increment on the error rate SLI6389TestReportSummaryEntity6390 #as_json6391 contains the total6392 when summary has test suites6393 contains the test suites6394 contains build_ids6395Banzai::Filter::FrontMatterFilter6396 allows for `encoding:` before the front matter6397 converts YAML front matter to a fenced code block6398 converts TOML frontmatter to a fenced code block6399 converts JSON front matter to a fenced code block6400 converts arbitrary front matter to a fenced code block6401 source position mapping6402 keeps spaces before and after6403 keeps an empty line in place of the encoding6404 on content without front matter6405 returns the content unmodified6406 on front matter without content6407 converts YAML front matter to a fenced code block6408 protects against malicious backtracking6409 fails fast for strings with many spaces6410 fails fast for strings with many newlines6411 fails fast for strings with many `coding:`6412gitlab:x509 namespace rake task6413 update_signatures6414 changes from unverified to verified if the certificate store contains the root certificate6415 returns if no signature is available6416Ci::StatusHelper6417 #ci_icon_for_status6418 renders to correct svg on success6419 renders the correct svg on failure6420 #ci_text_for_status6421 when status is manual6422 changes the status to blocked6423 when status is success6424 changes the status to passed6425 when status is something else6426 returns status unchanged6427 #pipeline_status_cache_key6428 builds a cache key for pipeline status6429 #render_status_with_link6430 renders a passed status icon6431 has 'Pipeline' as the status type in the title6432 has the success status icon6433 when pipeline has commit path6434 links to commit6435 does not contain a span element6436 has 'Pipeline' as the status type in the title6437 has the correct status icon6438 when different type than pipeline is provided6439 has the provided type in the title6440 when tooltip_placement is provided6441 has the provided tooltip placement6442 when additional CSS classes are provided6443 has appended extra class to icon classes6444 when container is provided6445 has the provided container in data6446 when icon_size is provided6447 has the svg class to change size6448Integrations::Asana6449 Validations6450 when active6451 is expected to validate that :api_key cannot be empty/falsy6452 when inactive6453 is expected not to validate that :api_key cannot be empty/falsy6454 #execute6455 with restrict_to_branch6456 when ref is in scope of restriced branches6457 calls the Asana integration6458 when ref is not in scope of restricted branches6459 does not call the Asana integration6460 when creating a story6461 calls Asana integration to create a story6462 when creating a story and closing a task6463 calls Asana integration to create a story and close a task6464 when closing via url6465 calls Asana integration to close via url6466 with multiple matches per line6467 allows multiple matches per line6468Boards::Lists::DestroyService6469 #execute6470 when board parent is a project6471 behaves like lists destroy service6472 does not remove list from board when list type is closed6473 when list type is label6474 removes list from board6475 decrements position of higher lists6476 when board parent is a group6477 behaves like lists destroy service6478 does not remove list from board when list type is closed6479 when list type is label6480 removes list from board6481 decrements position of higher lists6482DatabaseEventTracking6483 if event emmiter failed6484 tracks the exception6485 if product_intelligence_database_event_tracking FF is off6486 does not track the event6487 event tracking6488 when created6489 when updated6490 when destroyed6491Ci::Catalog::Resource6492 # order random6493 is expected to delegate #name to the #project object6494 is expected to delegate #avatar_path to the #project object6495 is expected to delegate #star_count to the #project object6496 is expected to delegate #forks_count to the #project object6497 is expected to delegate #description to the #project object6498 is expected to belong to project required: false6499 .order_by_name_desc6500 returns catalog resources sorted by descending name6501 .order_by_name_asc6502 returns catalog resources sorted by ascending name6503 .order_by_created_at_desc6504 returns catalog resources sorted by descending created at6505 #versions6506 returns releases ordered by released date descending6507 #latest_version6508 returns the latest release6509 .for_projects6510 returns catalog resources for the given project IDs6511Ci::JobSerializer6512 #represent6513 when a single object is being serialized6514 serializers the pipeline object6515 when multiple objects are being serialized6516 serializers the array of pipelines6517Ci::PipelineArtifacts::CodeCoveragePresenter6518 #for_files6519 when code coverage has data6520 when filenames is empty6521 returns hash without coverage6522 when filenames do not match code coverage data6523 returns hash without coverage6524 when filenames matches code coverage data6525 when asking for one filename6526 returns coverage for the given filename6527 when asking for multiple filenames6528 returns coverage for a the given filenames6529Gitlab::Auth::OAuth::Provider6530 .enabled?6531 when OmniAuth is disabled6532 allows database auth6533 allows LDAP auth6534 does not allow other OmniAuth providers6535 when OmniAuth is enabled6536 allows database auth6537 allows LDAP auth6538 allows other OmniAuth providers6539 .config_for6540 for an LDAP provider6541 when the provider exists6542 returns the config6543 when the provider does not exist6544 returns nil6545 for an OmniAuth provider6546 when the provider exists6547 returns the config6548 merges defaults with the given configuration6549 when the provider does not exist6550 returns nil6551 for an OpenID Connect provider6552 when the provider exists6553 returns the config6554 .label_for6555 when configuration specifies a custom label6556 returns the custom label name6557 when configuration does not specify a custom label6558 when the name does not correspond to a label mapping6559 returns the titleized name6560 when the name corresponds to a label mapping6561 returns the mapped name6562Gitlab::GithubImport::Importer::IssuesImporter6563 #parallel?6564 returns true when running in parallel mode6565 returns false when running in sequential mode6566 #execute6567 when running in parallel mode6568 imports issues in parallel6569 when running in sequential mode6570 imports issues in sequence6571 #sequential_import6572 imports each issue in sequence6573 #parallel_import6574 imports each issue in parallel6575 #id_for_already_imported_cache6576 returns the issue number of the given issue6577 #increment_object_counter?6578 when issue is a pull request6579 returns false6580 when issue is a regular issue6581 returns true6582OperationsHelper6583 #alerts_settings_data6584 initial integration configuration6585 returns the correct values6586 with external Prometheus configured6587 with external Prometheus enabled6588 returns the correct values6589 with external Prometheus disabled6590 returns the correct values6591 when cluster managed6592 returns the correct values6593 with project alert setting6594 returns the correct values6595 #operations_settings_data6596 returns the correct set of data6597Gitlab::Analytics::CycleAnalytics::StageEvents::IssueCreated6598 behaves like value stream analytics event6599 is expected to be a kind of String6600 is expected to be a kind of Symbol6601 is expected to include ApplicationRecord(abstract)6602 is expected to respond to #timestamp_projection6603 is expected to respond to #html_description6604 is expected to be a kind of Array6605 #apply_query_customization6606 expects an ActiveRecord::Relation object as argument and returns a modified version of it6607 #hash_code6608 returns a hash that uniquely identifies an event6609 does not differ when the same object is built with the same params6610 behaves like LEFT JOIN-able value stream analytics event6611 can use the event as LEFT JOIN6612 when looking at the record with data6613 contains the timestamp expression6614 when looking at the record without data6615 returns nil for the timestamp expression6616FeatureFlagsHelper6617 #unleash_api_url6618 is expected to end with "/api/v4/feature_flags/unleash/822"6619 #unleash_api_instance_id6620 is expected not to be empty6621 #edit_feature_flag_data6622 contains all the data needed to edit feature flags6623Banzai::ReferenceParser::FeatureFlagParser6624 #nodes_visible_to_user6625 when the link has a data-issue attribute6626 behaves like referenced feature visibility6627 when feature is disabled6628 does not create reference6629 when feature is enabled only for team members6630 does not create reference for non member6631 creates reference for member6632 when feature is enabled6633 creates reference6634 #referenced_by6635 when the link has a data-feature-flag attribute6636 using an existing feature flag ID6637 returns an Array of feature flags6638 using a non-existing feature flag ID6639 returns an empty Array6640Ci::VariablePresenter6641 inherits from Gitlab::View::Presenter::Delegated6642 #initialize6643 takes a variable and optional params6644 exposes variable6645 forwards missing methods to variable6646 #placeholder6647 is expected to eq "PROJECT_VARIABLE"6648 #form_path6649 is expected to eq "/namespace807/project-876/-/settings/ci_cd"6650 #edit_path6651 is expected to eq "/namespace808/project-877/-/variables"6652 #delete_path6653 is expected to eq "/namespace809/project-878/-/variables"6654ImportIssuesCsvWorker6655 #perform6656 calls #execute on Issues::ImportCsvService and destroys upload6657 behaves like an idempotent worker6658 is labeled as idempotent6659 performs multiple times sequentially without raising an exception6660AuthorizedProjectUpdate::UserRefreshFromReplicaWorker6661 is labeled as low urgency6662 behaves like an idempotent worker6663 is labeled as idempotent6664 performs multiple times sequentially without raising an exception6665 #perform6666 checks if a project_authorization refresh is needed for the user6667 when there are project authorization records due for either removal or addition for a specific user6668 enqueues a new project authorization update job for the user6669 when there are no additions or removals to be made to project authorizations for a specific user6670 does not enqueue a new project authorization update job for the user6671 with load balancing enabled6672 reads from the replica database6673Resolvers::Admin::Analytics::UsageTrends::MeasurementsResolver6674 #resolve6675 when requesting project count measurements6676 as an admin user6677 returns the records, latest first6678 as a non-admin user6679 generates a ResourceNotAvailable error6680 as an unauthenticated user6681 generates a ResourceNotAvailable error6682 when filtering by recorded_after and recorded_before6683 is expected to contain exactly #<Analytics::UsageTrends::Measurement id: 1, count: 1000, recorded_at: "2023-06-24 14:49:51.407336019 +0000", identifier: "projects">6684 when "incorrect" values are passed6685 is expected to be empty6686 when requesting pipeline counts by pipeline status6687 filter for pipelines_succeeded6688 is expected to eq [#<Analytics::UsageTrends::Measurement id: 3, count: 1000, recorded_at: "2023-06-24 14:49:51.616364492 +0000", identifier: "pipelines_succeeded">]6689 filter for pipelines_skipped6690 is expected to eq [#<Analytics::UsageTrends::Measurement id: 4, count: 1000, recorded_at: "2023-06-24 14:49:51.623141771 +0000", identifier: "pipelines_skipped">]6691 filter for pipelines_failed6692 is expected to be empty6693 filter for pipelines_canceled6694 is expected to be empty6695Ci::JobArtifacts::DestroyAssociationsService6696 #destroy_records6697 removes all types of artifacts without updating statistics6698 with a locked artifact6699 removes all artifacts6700 when there are no artifacts6701 does not raise error6702 #update_statistics6703 updates project statistics6704 when there are no artifacts6705 does not raise error6706Types::CustomerRelations::ContactSortEnum6707 is expected to eq "ContactSort"6708 exposes all the contact sort values6709 behaves like common sort values6710 exposes all the existing common sort values6711RuboCop::Cop::Graphql::GraphqlNamePosition6712 # order random6713 adds an offense when graphql_name is not on the first line6714 does not add an offense for classes that only call graphql_name6715 does not add an offense for classes that have no call to graphql_name6716Clusters::Applications::DeactivateIntegrationWorker#perform6717 when cluster exists6718 prometheus integration6719 when prometheus integration exists6720 with cluster type: group6721 ensures Prometheus integration is deactivated6722 with cluster type: project6723 ensures Prometheus integration is deactivated6724 with cluster type: instance6725 ensures Prometheus integration is deactivated6726 when prometheus integration does not exist6727 with cluster type: project6728 does not raise errors6729 when cluster does not exist6730 raises Record Not Found error6731Packages::CreateDependencyService6732 #execute6733 when packages are published6734 creates dependencies and links6735 with repeated packages6736 creates dependencies and links6737 with dependencies bulk insert conflicts6738 creates dependences and links6739 with existing dependencies6740 reuses them6741 with a dependency not described with a hash6742 creates dependencies and links6743admin mode on tasks6744 with a regular user6745 matches the expected admin mode6746 with an admin6747 matches the expected admin mode6748Gitlab::Database::QueryAnalyzers::Ci::PartitioningRoutingAnalyzer6749 # order random6750 when ci_partitioning_analyze_queries is enabled6751 when analyzing targeted tables6752 when querying a non routing table6753 tracks exception6754 raises RoutingTableNotUsedError6755 when updating a record6756 raises RoutingTableNotUsedError6757 when inserting a record6758 raises RoutingTableNotUsedError6759 when analyzing non targeted table6760 does not raise error6761 when ci_partitioning_analyze_queries is disabled6762 does not analyze the query6763Gitlab::LegacyGithubImport::CommentFormatter6764 #attributes6765 when do not reference a portion of the diff6766 returns formatted attributes6767 when on a portion of the diff6768 returns formatted attributes6769 when author is a GitLab user6770 returns GitLab user id associated with GitHub id as author_id6771 returns GitLab user id associated with GitHub email as author_id6772 returns note without created at tag line6773SystemNotes::IncidentsService6774 # order random6775 #delete_timeline_event6776 posts the correct text to the system note6777 behaves like a system note6778 has the correct attributes6779 #edit_timeline_event6780 behaves like a system note6781 has the correct attributes6782 when only timeline event's occurred_at was changed6783 posts the correct text to the system note6784 when only timeline event's note was changed6785 posts the correct text to the system note6786 when both timeline events occurred_at and note was changed6787 posts the correct text to the system note6788 when was changed reason is unknown6789 posts the correct text to the system note6790 #add_timeline_event6791 posts the correct text to the system note6792 behaves like a system note6793 has the correct attributes6794ReviewAppSetupEntity6795 #as_json6796 contains can_setup_review_app6797 when the user can setup a review app6798 contains relevant fields6799 exposes the relevant review snippet6800 exposes whether the project has associated clusters6801 when the user cannot setup a review app6802 does not expose certain fields6803Atlassian::JiraConnect::Serializers::PullRequestEntity6804 exposes commentCount6805 with user_notes_count option6806 avoids N+1 database queries6807 uses counts from user_notes_count6808 when count is missing for some MRs6809 uses 0 as default when count for the MR is not available6810Packages::Composer::Metadatum6811 relationships6812 is expected to belong to package required: false6813 validations6814 is expected to validate that :package cannot be empty/falsy6815 is expected to validate that :target_sha cannot be empty/falsy6816 is expected to validate that :composer_json cannot be empty/falsy6817 #composer_package_type6818 when the metadatum package_type is Composer6819 is expected to be valid6820 when the metadatum has no associated package6821 behaves like an invalid record6822 is expected to include "Package type must be Composer"6823 when the metadatum package_type is not Composer6824 behaves like an invalid record6825 is expected to include "Package type must be Composer"6826 scopes6827 .for_package6828 is expected to eq [#<Packages::Composer::Metadatum package_id: 284, target_sha: "c13dcff3961ceeae7becd6369be7aab9587d7a33", composer_json: {"name"=>"sample-project"}, version_cache_sha: nil>]6829PersonalAccessTokens::LastUsedService6830 #execute6831 when the personal access token was used 10 minutes ago6832 updates the last_used_at timestamp6833 does not run on read-only GitLab instances6834 when the personal access token was used less than 10 minutes ago6835 does not update the last_used_at timestamp6836 when the last_used_at timestamp is nil6837 updates the last_used_at timestamp6838 when not a personal access token6839 does not execute6840 when update_personal_access_token_usage_information_every_10_minutes is disabled6841 when the personal access token was used 1 day ago6842 updates the last_used_at timestamp6843 does not run on read-only GitLab instances6844 when the personal access token was used less than 1 day ago6845 does not update the last_used_at timestamp6846 when the last_used_at timestamp is nil6847 updates the last_used_at timestamp6848 when not a personal access token6849 does not execute6850RuboCop::Cop::Gitlab::ModuleWithInstanceVariables6851 # order random6852 when source is using simple or ivar assignment6853 behaves like not registering offense6854 does not register offenses6855 when source is using or ivar assignment with something else6856 behaves like registering offense6857 registers an offense when instance variable is used in a module6858 when source is a regular module6859 behaves like registering offense6860 registers an offense when instance variable is used in a module6861 when source is using simple ivar6862 behaves like not registering offense6863 does not register offenses6864 when source is a nested module6865 behaves like registering offense6866 registers an offense when instance variable is used in a module6867 when source is a nested module with multiple offenses6868 behaves like registering offense6869 registers an offense when instance variable is used in a module6870 when source is defining initialize6871 behaves like not registering offense6872 does not register offenses6873 when source is using simple or ivar assignment with other ivar6874 behaves like registering offense6875 registers an offense when instance variable is used in a module6876Projects::ScheduleRefreshBuildArtifactsSizeStatisticsWorker6877 #perform6878 is labeled as idempotent6879 performs multiple times sequentially without raising an exception6880 schedules Projects::RefreshBuildArtifactsSizeStatisticsWorker to be performed with capacity6881ArrayMembersValidator6882 children: [#<#<Class:0x00007eaa05d40c28>:0x00007eaa05d2e668>], is_valid: true6883 only accepts valid children nodes6884 children: [#<#<Class:0x00007eaa05d20c20>:0x00007eaa05d20ba8>], is_valid: false6885 only accepts valid children nodes6886 children: [#<#<Class:0x00007eaa05d40c28>:0x00007eaa05d12d28>, #<#<Class:0x00007eaa05d12c60>:0x00007eaa05d12b98>], is_valid: false6887 only accepts valid children nodes6888 children: [], is_valid: false6889 only accepts valid children nodes6890 children: #<#<Class:0x00007eaa05d40c28>:0x00007eaa05cf45a8>, is_valid: false6891 only accepts valid children nodes6892 children: [#<#<Class:0x00007eaa05ceeb30>:0x00007eaa05ceea18>], is_valid: false6893 only accepts valid children nodes6894 validation message6895 with default object name6896 uses attribute name6897 with custom object name6898 uses that name6899Gitlab::GithubImport::PageCounter6900 #initialize6901 sets the initial page number to 1 when no value is cached6902 sets the initial page number to the cached value when one is present6903 when gists import6904 uses gists specific key6905 #set6906 overwrites the page number when the given number is greater than the current number6907 does not overwrite the page number when the given number is lower than the current number6908 #expire!6909 expires the current page counter6910GoogleCloud::GetCloudsqlInstancesService6911 when project has no registered cloud sql instances6912 result is empty6913 when project has registered cloud sql instance6914 result is grouped by environment6915Integrations::ExecuteWorker#perform6916 executes integration with given data6917 logs error messages6918 when integration cannot be found6919 completes silently and does not log an error6920Sidebars::Groups::SuperSidebarMenus::SecureMenu6921 # order random6922 has title and sprite_icon6923 defines list of NilMenuItem placeholders6924Gitlab::Kubernetes::Node6925 #all6926 when connection to the cluster is successful6927 is expected to eq {:nodes=>[{"metadata"=>{"name"=>"gke-cluster-applications-default-pool-49b7f225-v527"}, "status"=>{"a...ity"=>{"cpu"=>"2", "memory"=>"7657228Ki"}}, "usage"=>{"cpu"=>"144208668n", "memory"=>"1789048Ki"}}]}6928 when an uncategorised error is raised6929 is expected to eq {:node_connection_error=>:unknown_error}6930 notifies Sentry6931Gitlab::RuggedInstrumentation6932 .query_time6933 increments query times6934 .increment_query_count6935 tracks query counts6936RepositoryCheck::ClearWorker6937 clears repository check columns6938Milestones::UpdateService6939 #execute6940 valid params6941 is expected to be valid6942 is expected to eq "new_title"6943 state_event is activate6944 calls ReopenService6945 state_event is close6946 calls ReopenService6947Resolvers::Projects::ServicesResolver6948 is expected to have nullable GraphQL type ServiceConnection6949 #resolve6950 when project does not have services6951 when user cannot access services6952 when anonymous user6953 behaves like cannot access project services6954 raises error6955 when user developer6956 behaves like cannot access project services6957 raises error6958 when user can read project services6959 behaves like no project services6960 returns empty collection6961 when project has services6962 when user cannot access services6963 when anonymous user6964 behaves like cannot access project services6965 raises error6966 when user developer6967 behaves like cannot access project services6968 raises error6969 when user can read project services6970 returns project services6971SystemHookPolicy6972 when the user is not an admin6973 cannot read_web_hook6974 cannot destroy_web_hook6975 when the user is an admin6976 can read_web_hook6977 can destroy_web_hook6978Atlassian::JiraConnect::Serializers::BaseEntity6979 generates the update_sequence_id6980 with update_sequence_id option6981 uses the custom update_sequence_id6982CodequalityDegradationEntity6983 #as_json6984 when codequality contains an error6985 when line is included in location6986 contains correct codequality degradation details6987 when line is included in positions6988 contains correct codequality degradation details6989 when severity is capitalized6990 lowercases severity6991IgnorableColumns6992 adds columns to ignored_columns6993 adds columns to ignored_columns (array version)6994 requires remove_after attribute to be set6995 requires remove_after attribute to be set6996 requires remove_with attribute to be set6997 .ignored_columns_details6998 defaults to empty Hash6999 with single column7000 behaves like storing removal information7001 storing removal information7002 with array column7003 behaves like storing removal information7004 storing removal information7005 when called on a subclass without setting the ignored columns7006 does not raise Deadlock error7007 IgnorableColumns::ColumnIgnore7008 #safe_to_remove?7009 after remove_after date has passed7010 returns true (safe to remove)7011 before remove_after date has passed7012 returns false (not safe to remove)7013Ide::TerminalConfigService7014 #execute7015 content is not valid7016 returns an error7017 terminal not defined7018 returns success7019 terminal enabled7020 returns success7021 custom terminal enabled7022 returns success7023ErrorTracking::ClientKey7024 relationships7025 is expected to belong to project required: false7026 validations7027 is expected to validate that :public_key cannot be empty/falsy7028 is expected to validate that the length of :public_key is at most 2557029 #generate_key7030 is expected to be present7031 is expected to start with "glet_"7032Gitlab::Database::SchemaValidation::Inconsistency7033 # order random7034 #type7035 returns the type of the validator7036 #structure_sql_statement7037 returns structure sql statement7038 #table_name7039 returns the table name7040 #inspect7041 prints the inconsistency message7042 #database_statement7043 returns database statement7044 #diff7045 returns a diff between the structure.sql and the database7046 #error_message7047 returns the error message7048 #object_name7049 returns the index name7050 #object_type7051 returns the structure sql object type7052 when the structure sql object is not available7053 returns the database object type7054Events::DestroyService7055 #execute7056 deletes the events7057 batch delete7058 splits delete queries into batches7059 when an error is raised while deleting the records7060 returns error7061 does not delete events7062Resolvers::AlertManagement::AlertStatusCountsResolver7063 #resolve7064 is expected to be a kind of Gitlab::AlertManagement::AlertStatusCounts7065 is expected to eq #<Project id:881 namespace859/project-927>>7066GroupBadge7067 associations7068 is expected to belong to group required: false7069 validations7070 is expected to validate that :group cannot be empty/falsy7071JiraConnect::RetryRequestWorker7072 #perform7073 sends the request, with the appropriate headers7074 when the proxied request fails7075 arranges to retry the request7076 when there are no more attempts left7077 does not retry7078Ci::CreatePipelineService7079 !reference tags7080 with valid config7081 creates a pipeline7082 with invalid config7083 creates a pipeline without builds7084AlertManagement::HttpIntegrations::UpdateService7085 #execute7086 when the current_user is anonymous7087 behaves like error response7088 has an informative message7089 when current_user does not have permission to create integrations7090 behaves like error response7091 has an informative message7092 when an error occurs during update7093 behaves like error response7094 has an informative message7095 with name param7096 successfully updates the integration7097 with active param7098 successfully updates the integration7099 with regenerate_token flag7100 successfully updates the integration7101AccessibilityErrorEntity7102 #as_json7103 when accessibility contains an error7104 contains correct accessibility error details7105Gitlab::Cleanup::RemoteUploads7106 when object_storage is enabled7107 when dry_run is set to false7108 moves files that are not in uploads table7109 when dry_run is set to true7110 does not move filese7111 when object_storage is not enabled7112 does not connect to any storage7113Provider::ContractSourceHelper7114 # order random7115 #pact_broker_url7116 returns the full url to the contract that the provider test is verifying7117 #contract_location7118 raises an error when an invalid requester is given7119 raises an error when an invalid edition is given7120 when the PACT_BROKER environment variable is not set7121 extracts the relevant path from the pact_helper path7122 does not construct the pact broker url7123 when the PACT_BROKER environment variable is set7124 extracts the relevant path from the pact_helper path7125 does not construct the pact broker url7126 #construct_consumer_url_path7127 returns the consumer url path7128 #construct_provider_url_path7129 returns the provider url path7130 #local_contract_location7131 returns the contract file path with the prefix path for a rake task7132 returns the contract file path with the prefix path for a spec7133 #construct_local_contract_path7134 returns the local contract path7135Packages::CleanupPackageFileWorker7136 #perform_work7137 with no work to do7138 is expected to be nil7139 with work to do7140 deletes the oldest package file pending destruction based on id7141 with a duplicated PyPI package file7142 deletes one of the duplicates7143 with a package file to destroy7144 with an error during the destroy7145 handles the error7146 when trying to destroy a destroyed record7147 handles the error7148 removing the last package file7149 deletes the package file and the package7150 #max_running_jobs7151 is expected to eq 57152 #remaining_work_count7153 is expected to eq 27154Types::WorkItems::Widgets::DescriptionInputType7155 is expected to eq "WorkItemWidgetDescriptionInput"7156 is expected to contain exactly "description"7157Gitlab::GithubImport::Importer::Attachments::NotesImporter7158 # order random7159 #id_for_already_imported_cache7160 is expected to eq 10777161 #sequential_import7162 imports each project user note7163 when note is already processed7164 doesn't import this note7165 #object_type7166 is expected to eq :note_attachment7167 #sidekiq_worker_class7168 is expected to eq Gitlab::GithubImport::Attachments::ImportNoteWorker7169 #collection_method7170 is expected to eq :note_attachments7171Gitlab::GrapeLogging::Loggers::PerfLogger7172 .parameters7173 when no performance data present7174 is expected not to include {:redis_calls => 1}7175 when performance data present7176 is expected to include {:redis_calls => 1}7177Gitlab::Pages::CacheControl7178 fails with invalid type7179 .for_namespace7180 behaves like cache_control7181 is expected to match /pages_domain_for_namespace_1_*/7182 #clear_cache7183 clears the cache7184 .for_domain7185 behaves like cache_control7186 is expected to match /pages_domain_for_domain_1_*/7187 #clear_cache7188 clears the cache7189 #cache_key7190 does not change the pages config7191 is based on pages settings7192 is based on the force_pages_access_control settings7193 caches the application settings hash7194Ci::DownloadableArtifactEntity7195 #as_json7196 contains required fields7197 when user cannot read job artifact7198 returns only artifacts readable by user7199Gitlab::Auth::Result7200 when actor is User7201 returns auth_user7202 does not return deploy token7203 when actor is Deploy token7204 returns deploy token7205 does not return auth_user7206 #authentication_abilities_include?7207 when authentication abilities are empty7208 returns false7209 when authentication abilities are not empty7210 returns false when ability is not allowed7211 returns true when ability is allowed7212 #can_perform_action_on_project?7213 returns if actor can do perform given action on given project7214 returns if actor cannot do perform given action on given project7215 #can?7216 returns if actor can do perform given action on given project7217 returns if actor cannot do perform given action on given project7218Ci::BuildCancelService7219 #execute7220 when user is authorized to cancel the build7221 when build is cancelable7222 transits build to canceled7223 when build is not cancelable7224 responds with unprocessable entity7225 when user is not authorized to cancel the build7226 responds with forbidden7227Gitlab::Experiment::Rollout::Feature7228 #enabled?7229 is enabled when all criteria are met7230 isn't enabled if the feature definition doesn't exist7231 isn't enabled if we're not in dev or dotcom environments7232 isn't enabled if the feature flag state is :off7233 isn't enabled if the gitlab_experiment feature flag is false7234 #execute_assignment7235 uses the default value as specified in the yaml7236 returns an assigned name7237 #flipper_id7238 returns the expected flipper id if the experiment doesn't provide one7239 lets the experiment provide a flipper id so it can override the default7240Gitlab::Ci::Status::Build::Skipped7241 #illustration7242 is expected to include :image, :size, and :title7243 .matches?7244 when build is skipped7245 is a correct match7246 when build is not skipped7247 does not match7248ListUserPreference7249 relationships7250 is expected to belong to list required: false7251 is expected to belong to user required: false7252 is expected to validate that :user_id is case-sensitively unique within the scope of :list_id, producing a custom validation error on failure7253Gitlab::Cache::JsonCache7254 # order random7255 #read7256 raises an error7257 #write7258 raises an error7259 #expire7260 calls delete from the backend on the cache_key7261 raises an error7262 #fetch7263 raises an error7264 #active?7265 when backend respond to active? method7266 delegates to the underlying cache implementation7267 when backend does not respond to active? method7268 returns true7269Resolvers::ErrorTracking::SentryDetailedErrorResolver7270 is expected to have nullable GraphQL type SentryDetailedError7271 #resolve7272 fetches the data via the sentry API7273 when error matches7274 resolves to a detailed error7275 assigns the gitlab project7276 when id does not match issue7277 resolves to nil7278Sidebars::UserSettings::Menus::AccountMenu7279 # order random7280 behaves like User settings menu7281 does not contain any sub menu7282 renders the correct link7283 renders the correct title7284 renders the correct icon7285 defines correct active route7286 behaves like User settings menu #render? method7287 #render?7288 when user is logged in7289 renders7290 when user is not logged in7291 does not render7292CustomerRelations::Contacts::CreateService7293 #execute7294 when user does not have permission7295 returns an error7296 when user has permission7297 creates a contact7298 returns an error when the contact is not persisted7299 returns an error when the organization_id is invalid7300 returns an error when the organization belongs to a different group7301Gitlab::Usage::Metrics::Instrumentations::CountProjectsWithMlExperimentsMetric7302 # order random7303 behaves like a correct instrumented metric value and query7304 behaves like a correct instrumented metric value7305 has correct value7306 behaves like a correct instrumented metric query7307 has correct generate query7308projects/commits/show.html.haml7309 tree controls7310 renders atom feed button with matching path7311Gitlab::Ci::Config::Yaml::Loader7312 # order random7313 #load7314 loads and interpolates CI config YAML7315 allows the use of YAML reference tags7316 when there is an error loading the YAML7317 returns an error result7318 when there is an error interpolating the YAML7319 returns an error result7320Gitlab::Config::Entry::Validators::NestedArrayHelpers7321 #validate_nested_array7322 with valid values7323 with arrays of integers7324 is expected to be empty7325 with nested arrays of integers7326 is expected to be empty7327 with invalid values7328 with single integers7329 is expected to eq {:value=>["is invalid"]}7330 when it is nested over the limit7331 is expected to eq {:value=>["is invalid"]}7332 when a value in the array is not valid7333 is expected to eq {:value=>["is invalid"]}7334 when a value in the nested array is not valid7335 is expected to eq {:value=>["is invalid"]}7336UserStatusCleanup::BatchWorker7337 is labeled as idempotent7338 performs multiple times sequentially without raising an exception7339 #perform7340 cleans up the records7341 when no records are scheduled for cleanup7342 does nothing7343Environments::CanaryIngress::UpdateWorker7344 #perform7345 executes the update service7346 when an environment does not exist7347 does not execute the update service7348Gitlab::SafeRequestPurger7349 .execute7350 purges an entry from the store7351 #execute7352 when request store is active7353 purges an entry from the store7354 when there are multiple resource_ids to purge7355 purges an entry from the store7356 when there is no matching resource_ids7357 purges an entry from the store7358 when request store is not active7359 does offer the ability to interact with data store7360WorkItems::Widgets::StartAndDueDate7361 .type7362 is expected to eq :start_and_due_date7363 .quick_action_params7364 is expected to include :due_date7365 #type7366 is expected to eq :start_and_due_date7367 #start_date7368 is expected to eq Mon, 26 Jun 20237369 #due_date7370 is expected to eq Mon, 03 Jul 20237371RuboCop::Cop::Gitlab::DocUrl7372 # order random7373 when string literal is added with docs url prefix7374 when inlined7375 registers an offense7376 when multilined7377 registers an offense7378 with heredoc7379 registers an offense7380 when string literal is added without docs url prefix7381 when inlined7382 does not register an offense7383 when multilined7384 does not register an offense7385 with heredoc7386 does not register an offense7387BlobViewer::GoMod7388 #package_name7389 returns the package name7390 #package_url7391 returns the package URL7392 when the homepage has an invalid URL7393 returns nil7394 #package_type7395 returns "package"7396 when the module name does not start with the instance URL7397 #package_url7398 returns the pkg.go.dev URL7399SystemNotes::BaseService7400 #noteable7401 is expected to eq #<Double (anonymous)>7402 returns nil if no arguments are given7403 #project7404 is expected to eq #<Double (anonymous)>7405 returns nil if no arguments are given7406 #author7407 is expected to eq #<Double (anonymous)>7408 returns nil if no arguments are given7409Gitlab::HealthChecks::MasterCheck7410 when Puma runs in Clustered mode7411 .available?7412 is expected to equal true7413 .readiness7414 when no worker registered7415 succeeds7416 when worker registers itself7417 when reading from pipe succeeds7418 succeeds7419 when read pipe is open but not ready for reading7420 succeeds7421 when master finishes early7422 fails7423 when Puma runs in Single mode7424 .available?7425 is expected to equal false7426TermAgreement7427 validations7428 is expected to validate that :term cannot be empty/falsy7429 is expected to validate that :user cannot be empty/falsy7430 .accepted7431 only includes accepted terms7432Onboarding::ProgressWorker#perform7433 # order random7434 behaves like does not record an onboarding progress action7435 is expected not to receive new(*(any args)) 0 times7436 behaves like does not record an onboarding progress action7437 is expected not to receive new(*(any args)) 0 times7438 behaves like records an onboarding progress action7439 is expected to receive execute({:action=>:git_pull}) 1 time7440 is labeled as idempotent7441 performs multiple times sequentially without raising an exception7442SmimeSignatureSettings7443 .parse7444 sets correct default values to disabled7445 when providing custom values7446 sets correct default values to disabled7447 enables smime with default key and cert7448 enables smime with custom key and cert7449Gitlab::ImportExport::Json::NdjsonWriter7450 #write_attributes7451 writes correct json to root7452 #write_relation7453 when single relation is serialized7454 appends json in correct file7455 when single relation is already serialized7456 raise exception7457 #write_relation_array7458 writes json in correct files7459ExportedProtectedBranch7460 Associations7461 is expected to have many push_access_levels7462 .push_access_levels7463 returns the correct push access levels7464Webauthn::AuthenticateService7465 #execute7466 returns true if the response is valid and a matching stored credential is present7467 when response is valid but no matching stored credential is present7468 returns false7469 when device response includes invalid json7470 returns false7471Gitlab::ExceptionsApp7472 .call7473 for a 500 error7474 for an HTML request7475 fills in the request ID7476 HTML-escapes the request ID7477 returns an empty 500 when the 500.html page cannot be found7478 for a JSON request7479 does not include the request ID7480 for a 404 error7481 returns a 404 response that does not include the request ID7482shared/milestones/_issuables.html.haml7483 shows the issuables count if show_counter is true7484 does not show the issuables count if show_counter is false7485 a high issuables count7486 shows a delimited number if show_counter is true7487Gitlab::Config::Entry::Validatable7488 .validator7489 returns validator7490 returns only one validator to mitigate leaks7491 when validating entry instance7492 when attribute is valid7493 instance of validator is valid7494 when attribute is not valid7495 instance of validator is invalid7496Projects::ClusterAgentsHelper7497 #js_cluster_agent_details_data7498 is expected to match {:agent_name=>"agent-name", :project_path=>"namespace891/project-958", :activity_empty_state_image=>#<RSpec::Mocks::ArgumentMatchers::KindOf:0x00007ea9f1ef06e0 @klass=String>, :empty_state_svg_path=>#<RSpec::Mocks::ArgumentMatchers::KindOf:0x00007ea9f1ef0550 @klass=String>, :can_admin_vulnerability=>"true", :kas_address=>"wss://kas.example.com", :kas_version=>#<Gitlab::VersionInfo:0x00007ea9f1ee7888 @major=16, @minor=1, @patch=3, @suffix_s="", @suffix=[]>, :can_admin_cluster=>"false"}7499 user has admin cluster permissions7500 displays that the user can admin cluster7501Tooling::TestMapPacker7502 #pack7503 compacts list of test files into a prefix tree7504 does nothing to empty hash7505 #unpack7506 unpack prefix tree into list of test files7507 does nothing to empty hash7508FeatureFlagsClientSerializer7509 #represent_token7510 includes feature flags client token7511Users::RepairLdapBlockedService7512 #execute7513 changes to normal block after destroying last ldap identity7514 changes to normal block after changing last ldap identity to another provider7515Banzai::Filter::JiraImport::AdfToCommonmarkFilter7516 renders a complex document7517 renders original source when it is invalid JSON7518 renders original source when missing document node7519RuboCop::Cop::GroupPublicOrVisibleToUser7520 # order random7521 does not flag the use of Group.public_or_visible_to_user with a send receiver7522 does not flag the use of public_or_visible_to_user with a constant that is not Group7523 flags the use of Group.public_or_visible_to_user with a constant receiver7524API::Entities::BulkImports::EntityFailure7525 has the correct attributes7526 exception message7527 truncates exception message to 72 characters7528 removes paths from the message7529Gitlab::Pagination::OffsetHeaderBuilder7530 #execute7531 sets headers to request context7532 exclude total headers7533 does not set total headers to request context7534 pass data without counts7535 does not set total headers to request context7536Gitlab::GithubImport::Attachments::ImportIssueWorker7537 # order random7538 #import7539 imports an issue attachments7540Types::ErrorTracking::SentryErrorStackTraceType7541 is expected to eq "SentryErrorStackTrace"7542 is expected to require graphql authorizations :read_sentry_issue7543 exposes the expected fields7544Analytics::CycleAnalytics::StageFinder7545 when looking up in-memory default stage by name exists7546 is expected not to be persisted7547 is expected to eq "issue"7548 when in-memory default stage cannot be found7549 is expected to raise ActiveRecord::RecordNotFound7550Gitlab::Database::MigrationHelpers::AnnounceDatabase7551 #announce7552 prefixes message with database name7553 #say7554 prefixes message with database name7555 prefixes subitem message with database name7556 #write7557 does not prefix empty write7558DatabaseReflection7559 .reflect7560 returns a Reflection instance7561 memoizes the result7562FutureDateValidator7563 past date7564 is expected not to be valid7565 current date7566 is expected to be valid7567 future date7568 is expected to be valid7569Integrations::HarborSerializers::ArtifactEntity7570 returns the Harbor artifact7571Gitlab::Console7572 .welcome!7573 when running in the Rails console7574 on darwin7575 behaves like console messages7576 prints system info7577 behaves like console messages7578 prints system info7579 when not running in the Rails console7580 does not print anything7581Types::CiConfiguration::Sast::OptionsEntityType7582 is expected to eq "SastCiConfigurationOptionsEntity"7583 is expected to have graphql fields :label and :value7584MembersDestroyer::UnassignIssuablesWorker7585 calls the Members::UnassignIssuablesService with the params it was given7586 when unsupported membership source entity7587 exits early and logs error7588Types::WorkItems::WidgetTypeEnum7589 is expected to eq "WorkItemWidgetType"7590 exposes all the existing widget type values7591Gitlab::Diff::InlineDiff7592 #inline_diffs7593 finds the inline diff7594 when lines have multiple changes7595 finds all inline diffs7596help/drawers7597 # order random7598 Markdown rendering7599 renders Markdown7600Backup::Task7601 #dump7602 must be implemented by the subclass7603 #restore7604 must be implemented by the subclass7605Web IDE routing7606 # order random7607 remote7608 routes to #index, without remote_path7609 routes to #index, with remote_path7610CreateMergeRequestNote7611 # order random7612 #execute7613 requests create_merge_request_comment from the gitlab client7614Types::JiraImportType7615 is expected to eq "JiraImport"7616 has the expected fields7617PersonalAccessTokenEntity7618 has the correct attributes7619Gitlab::Patch::DatabaseConfig7620 module is included7621 config/database.yml7622 returns a hash containing only main:7623Users::ValidatePushOtpService7624 FortiAuthenticator7625 calls PushOtp strategy7626 unexpected error7627 returns error7628Gitlab::Database::AsyncConstraints::Validators7629 # order random7630 .for7631 with foreign keys validations7632 is expected to be a kind of Gitlab::Database::AsyncConstraints::Validators::ForeignKey7633 with check constraint validations7634 is expected to be a kind of Gitlab::Database::AsyncConstraints::Validators::CheckConstraint7635Sidebars::Groups::SuperSidebarMenus::AnalyzeMenu7636 # order random7637 has title and sprite_icon7638 defines list of NilMenuItem placeholders7639AccessTokenEntityBase7640 # order random7641 has the correct attributes7642Types::ProjectStatisticsRedirectType7643 # order random7644 has all the required fields7645TermsHelper7646 #terms_data7647 returns correct json7648Gitlab::Email::Hook::DeliveryMetricsObserver7649 when email has been delivered7650 increments both email delivery metrics7651 when email has not been delivered due to an error7652 increments only delivery attempt metric7653Gitlab::ChangesList7654 when changes is a valid string7655 splits elements by newline character7656 behaves like a list7657Evidences::ReleaseSerializer7658 represents an Evidence::ReleaseEntity entity7659TodosDestroyer::GroupPrivateWorker7660 calls the Todos::Destroy::GroupPrivateService with the params it was given7661Gitlab::GithubImport::Importer::Attachments::BaseImporter7662 # order random7663 #each_object_to_import7664 with not implemented #collection interface7665 raises NotImplementedError7666Types::PermissionTypes::Ci::Runner7667 is expected to have graphql field :assign_runner7668Types::Packages::Nuget::DependencyLinkMetadatumType7669 includes nuget dependency link metadatum fields7670Forever7671 .date7672 returns Postgresql future date7673Gitlab::Kubernetes::PodCmd7674 .retry_command7675 constructs string properly7676Knapsack report was generated. Preview:7677{7678 "spec/services/issues/update_service_spec.rb": 166.40428204199986,7679 "spec/services/members/destroy_service_spec.rb": 181.59506998100005,7680 "spec/lib/banzai/filter/repository_link_filter_spec.rb": 79.74487782700021,7681 "spec/workers/packages/debian/generate_distribution_worker_spec.rb": 81.72669903600013,7682 "spec/models/operations/feature_flags/strategy_spec.rb": 10.76594364399989,7683 "spec/services/event_create_service_spec.rb": 40.354935791000116,7684 "spec/lib/gitlab/ci/templates/Jobs/deploy_gitlab_ci_yaml_spec.rb": 51.5468523290001,7685 "spec/services/packages/maven/metadata/create_versions_xml_service_spec.rb": 50.60378287200001,7686 "spec/finders/releases/group_releases_finder_spec.rb": 38.691269150999915,7687 "spec/services/ci/reset_skipped_jobs_service_spec.rb": 33.77896359300007,7688 "spec/models/broadcast_message_spec.rb": 8.49078180000015,7689 "spec/workers/emails_on_push_worker_spec.rb": 27.95425137899997,7690 "spec/lib/container_registry/gitlab_api_client_spec.rb": 3.6719348020001235,7691 "spec/models/integrations/bamboo_spec.rb": 5.814159260999986,7692 "spec/services/merge_requests/approval_service_spec.rb": 28.758644885999956,7693 "spec/models/integrations/hangouts_chat_spec.rb": 11.670622388999845,7694 "spec/models/concerns/integrations/has_data_fields_spec.rb": 17.353043842000034,7695 "spec/models/ability_spec.rb": 17.355732234000016,7696 "spec/services/system_notes/time_tracking_service_spec.rb": 10.16646053699992,7697 "spec/models/ci/build_dependencies_spec.rb": 18.21246968200012,7698 "spec/models/concerns/project_api_compatibility_spec.rb": 13.523786673000131,7699 "spec/services/projects/import_export/export_service_spec.rb": 11.800723998999956,7700 "spec/workers/pages/invalidate_domain_cache_worker_spec.rb": 3.4140504760000567,7701 "spec/serializers/ci/pipeline_entity_spec.rb": 17.237344148000147,7702 "spec/models/integrations/unify_circuit_spec.rb": 7.810770473000048,7703 "spec/lib/gitlab/utils_spec.rb": 3.5489010210001197,7704 "spec/lib/banzai/filter/references/alert_reference_filter_spec.rb": 4.029404237000108,7705 "spec/lib/gitlab/cleanup/personal_access_tokens_spec.rb": 16.985606235999967,7706 "spec/lib/gitlab/relative_positioning/range_spec.rb": 2.6578339889999825,7707 "spec/models/bulk_imports/entity_spec.rb": 3.933241851000048,7708 "spec/models/ci/job_token/scope_spec.rb": 8.315348048000033,7709 "spec/routing/git_http_routing_spec.rb": 3.496556033999923,7710 "spec/views/notify/pipeline_fixed_email.html.haml_spec.rb": 11.192971251000017,7711 "spec/graphql/mutations/issues/set_assignees_spec.rb": 9.308359110000083,7712 "spec/lib/gitlab/changelog/config_spec.rb": 10.109454838999909,7713 "spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb": 13.603231552000125,7714 "spec/lib/gitlab/popen_spec.rb": 7.7795088610000676,7715 "spec/lib/gitlab/observability_spec.rb": 6.297424863999822,7716 "spec/lib/gitlab/alert_management/payload/generic_spec.rb": 1.761300816999892,7717 "spec/lib/gitlab/i18n/po_linter_spec.rb": 1.9264745970001513,7718 "spec/tooling/quality/test_level_spec.rb": 1.8758212699999604,7719 "spec/lib/gitlab/deploy_key_access_spec.rb": 8.116002718000118,7720 "spec/services/notes/copy_service_spec.rb": 9.201250651999999,7721 "spec/services/metrics/dashboard/annotations/delete_service_spec.rb": 9.343809711999938,7722 "spec/models/prometheus_alert_spec.rb": 2.8693180889999894,7723 "spec/services/projects/auto_devops/disable_service_spec.rb": 10.17784067599996,7724 "spec/models/concerns/ci/artifactable_spec.rb": 5.513494637000122,7725 "spec/views/projects/edit.html.haml_spec.rb": 11.715758372999971,7726 "spec/lib/gitlab/gitaly_client/repository_service_spec.rb": 2.9418593259999852,7727 "spec/lib/gitlab/ci/status/build/cancelable_spec.rb": 6.077029517000028,7728 "spec/workers/projects/post_creation_worker_spec.rb": 6.022855977000063,7729 "spec/lib/google_api/cloud_platform/client_spec.rb": 1.557535802000075,7730 "spec/services/ci/expire_pipeline_cache_service_spec.rb": 5.883053080999844,7731 "spec/tasks/rubocop_rake_spec.rb": 6.0691669040002125,7732 "spec/lib/event_filter_spec.rb": 4.0810350669999025,7733 "spec/models/ci_platform_metric_spec.rb": 5.415633688000071,7734 "spec/serializers/suggestion_entity_spec.rb": 6.618101948999993,7735 "spec/lib/gitlab/slash_commands/issue_move_spec.rb": 7.391988701999935,7736 "spec/services/ci/runners/set_runner_associated_projects_service_spec.rb": 8.481480042000157,7737 "spec/services/git/base_hooks_service_spec.rb": 4.167299613000068,7738 "spec/models/analytics/cycle_analytics/merge_request_stage_event_spec.rb": 2.891560462999678,7739 "spec/services/jira_connect_subscriptions/create_service_spec.rb": 3.728005035000024,7740 "spec/lib/bulk_imports/projects/pipelines/references_pipeline_spec.rb": 5.559944394000013,7741 "spec/lib/gitlab/import_export/project/sample/relation_factory_spec.rb": 6.094882136000251,7742 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_last_build_started_spec.rb": 2.724116450999645,7743 "spec/services/ci/test_failure_history_service_spec.rb": 3.203887132000091,7744 "spec/services/merge_requests/delete_non_latest_diffs_service_spec.rb": 10.060755493000215,7745 "spec/serializers/merge_request_metrics_helper_spec.rb": 6.954651733999981,7746 "spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb": 1.340984434999882,7747 "spec/services/feature_flags/update_service_spec.rb": 2.460919596000167,7748 "spec/services/packages/composer/version_parser_service_spec.rb": 0.901378575000308,7749 "spec/lib/gitlab/github_import/representation/note_spec.rb": 0.9627423020001515,7750 "spec/lib/gitlab/hook_data/user_builder_spec.rb": 0.8970445859999927,7751 "spec/services/merge_requests/migrate_external_diffs_service_spec.rb": 4.089861221999854,7752 "spec/graphql/resolvers/project_milestones_resolver_spec.rb": 2.02496331500015,7753 "spec/lib/sidebars/projects/menus/merge_requests_menu_spec.rb": 2.079456014000243,7754 "spec/lib/gitlab/bitbucket_server_import/user_finder_spec.rb": 0.9008482750000439,7755 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb": 2.024128975000167,7756 "spec/finders/concerns/finder_methods_spec.rb": 2.0526516989998527,7757 "spec/lib/gitlab/sidekiq_queue_spec.rb": 1.6822660749999159,7758 "spec/lib/gitlab/ci/config/entry/image_spec.rb": 0.9795963490000759,7759 "spec/workers/gitlab/jira_import/import_issue_worker_spec.rb": 1.3895954750000783,7760 "spec/views/projects/empty.html.haml_spec.rb": 2.756488474999969,7761 "spec/lib/banzai/filter/references/reference_cache_spec.rb": 1.6059219209996627,7762 "spec/lib/gitlab/file_finder_spec.rb": 1.5391524749998098,7763 "spec/db/production/settings_spec.rb": 3.6169334289998005,7764 "spec/services/packages/debian/update_distribution_service_spec.rb": 1.916006997000295,7765 "spec/lib/grafana/time_window_spec.rb": 1.383561396999994,7766 "spec/services/packages/cleanup/update_policy_service_spec.rb": 2.8263864900000044,7767 "spec/graphql/resolvers/group_members_resolver_spec.rb": 2.531876230999842,7768 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_last_build_finished_spec.rb": 2.8017760759998964,7769 "spec/lib/gitlab/redis/hll_spec.rb": 0.8115702230002171,7770 "spec/models/packages/debian/project_component_spec.rb": 1.3498346129999845,7771 "spec/lib/gitlab/ci/status/bridge/common_spec.rb": 2.944554536999931,7772 "spec/services/users/reject_service_spec.rb": 1.650310003999948,7773 "spec/finders/autocomplete/routes_finder_spec.rb": 2.8302717890001077,7774 "spec/tooling/lib/tooling/mappings/js_to_system_specs_mappings_spec.rb": 0.8845103560001917,7775 "spec/lib/gitlab/metrics/global_search_slis_spec.rb": 0.9909486880001168,7776 "spec/serializers/test_report_summary_entity_spec.rb": 3.5435070250000535,7777 "spec/lib/banzai/filter/front_matter_filter_spec.rb": 0.7244577550000031,7778 "spec/tasks/gitlab/x509/update_rake_spec.rb": 2.777537096999822,7779 "spec/helpers/ci/status_helper_spec.rb": 1.0479265579997445,7780 "spec/models/integrations/asana_spec.rb": 0.6221826230002989,7781 "spec/services/boards/lists/destroy_service_spec.rb": 4.15140061000011,7782 "spec/models/concerns/database_event_tracking_spec.rb": 0.5217535589999898,7783 "spec/models/ci/catalog/resource_spec.rb": 1.5688467380000475,7784 "spec/serializers/ci/job_serializer_spec.rb": 2.420424179999827,7785 "spec/presenters/ci/pipeline_artifacts/code_coverage_presenter_spec.rb": 2.099381474999973,7786 "spec/lib/gitlab/auth/o_auth/provider_spec.rb": 0.78294198399999,7787 "spec/lib/gitlab/github_import/importer/issues_importer_spec.rb": 0.5892594569995708,7788 "spec/helpers/operations_helper_spec.rb": 1.1117112570000245,7789 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_created_spec.rb": 1.0514129680000224,7790 "spec/helpers/feature_flags_helper_spec.rb": 0.7043868780001503,7791 "spec/lib/banzai/reference_parser/feature_flag_parser_spec.rb": 2.956586797,7792 "spec/presenters/ci/variable_presenter_spec.rb": 3.2046259740000096,7793 "spec/workers/import_issues_csv_worker_spec.rb": 1.4039804359999835,7794 "spec/workers/authorized_project_update/user_refresh_from_replica_worker_spec.rb": 1.1505475799999658,7795 "spec/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver_spec.rb": 0.8339555850002398,7796 "spec/services/ci/job_artifacts/destroy_associations_service_spec.rb": 3.187852935999672,7797 "spec/graphql/types/customer_relations/contact_sort_enum_spec.rb": 0.3740472049998971,7798 "spec/rubocop/cop/graphql/graphql_name_position_spec.rb": 0.4044430800004193,7799 "spec/workers/clusters/applications/deactivate_integration_worker_spec.rb": 3.5837979580001047,7800 "spec/services/packages/create_dependency_service_spec.rb": 3.228531910000129,7801 "spec/tasks/admin_mode_spec.rb": 1.8114637460002996,7802 "spec/lib/gitlab/database/query_analyzers/ci/partitioning_routing_analyzer_spec.rb": 0.4939204939996671,7803 "spec/lib/gitlab/legacy_github_import/comment_formatter_spec.rb": 1.2523437729996658,7804 "spec/services/system_notes/incidents_service_spec.rb": 1.8231997329999103,7805 "spec/serializers/review_app_setup_entity_spec.rb": 2.3418530140002076,7806 "spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb": 2.602048338000259,7807 "spec/models/packages/composer/metadatum_spec.rb": 1.2105141600000024,7808 "spec/services/personal_access_tokens/last_used_service_spec.rb": 2.2816511940000055,7809 "spec/rubocop/cop/gitlab/module_with_instance_variables_spec.rb": 0.6523443370001587,7810 "spec/workers/projects/schedule_refresh_build_artifacts_size_statistics_worker_spec.rb": 0.6391761889999543,7811 "spec/validators/array_members_validator_spec.rb": 0.7063594169999305,7812 "spec/lib/gitlab/github_import/page_counter_spec.rb": 0.5895451180003874,7813 "spec/services/google_cloud/get_cloudsql_instances_service_spec.rb": 1.1780914109999685,7814 "spec/workers/integrations/execute_worker_spec.rb": 0.767669719999958,7815 "spec/lib/sidebars/groups/super_sidebar_menus/secure_menu_spec.rb": 0.3523266010001862,7816 "spec/lib/gitlab/kubernetes/node_spec.rb": 2.1600759739999376,7817 "spec/lib/gitlab/rugged_instrumentation_spec.rb": 0.3813407859997824,7818 "spec/workers/repository_check/clear_worker_spec.rb": 0.7146336989999327,7819 "spec/services/milestones/update_service_spec.rb": 2.194078648999948,7820 "spec/graphql/resolvers/projects/services_resolver_spec.rb": 1.8754948830001013,7821 "spec/policies/system_hook_policy_spec.rb": 1.221201043000292,7822 "spec/lib/atlassian/jira_connect/serializers/base_entity_spec.rb": 0.43198037700040004,7823 "spec/serializers/codequality_degradation_entity_spec.rb": 0.3965513729999657,7824 "spec/models/concerns/ignorable_columns_spec.rb": 0.7896511960002499,7825 "spec/services/ide/terminal_config_service_spec.rb": 1.6930485739999313,7826 "spec/models/error_tracking/client_key_spec.rb": 0.5100940639999862,7827 "spec/lib/gitlab/database/schema_validation/inconsistency_spec.rb": 0.7313154660000691,7828 "spec/services/events/destroy_service_spec.rb": 2.127931179999905,7829 "spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb": 0.7323981059998914,7830 "spec/models/badges/group_badge_spec.rb": 0.46671632100014904,7831 "spec/workers/jira_connect/retry_request_worker_spec.rb": 0.49702174599997306,7832 "spec/services/ci/create_pipeline_service/custom_yaml_tags_spec.rb": 1.8616155750000871,7833 "spec/services/alert_management/http_integrations/update_service_spec.rb": 1.116998090999914,7834 "spec/serializers/accessibility_error_entity_spec.rb": 0.3581724590003432,7835 "spec/lib/gitlab/cleanup/remote_uploads_spec.rb": 2.005825640999774,7836 "spec/contracts/provider_specs/helpers/provider/contract_source_helper_spec.rb": 0.8037271939997481,7837 "spec/workers/packages/cleanup_package_file_worker_spec.rb": 1.6035953590003373,7838 "spec/graphql/types/work_items/widgets/description_input_type_spec.rb": 0.383739185000195,7839 "spec/lib/gitlab/github_import/importer/attachments/notes_importer_spec.rb": 1.1287622489999194,7840 "spec/lib/gitlab/grape_logging/loggers/perf_logger_spec.rb": 0.36859675799996694,7841 "spec/lib/gitlab/pages/cache_control_spec.rb": 0.6375607420000051,7842 "spec/serializers/ci/downloadable_artifact_entity_spec.rb": 1.7545970529999977,7843 "spec/lib/gitlab/auth/result_spec.rb": 0.8392215479998413,7844 "spec/services/ci/build_cancel_service_spec.rb": 1.2897661820002213,7845 "spec/lib/gitlab/experiment/rollout/feature_spec.rb": 0.6299118840001938,7846 "spec/lib/gitlab/ci/status/build/skipped_spec.rb": 1.5480685880002056,7847 "spec/models/list_user_preference_spec.rb": 1.2325746110000182,7848 "spec/lib/gitlab/cache/json_cache_spec.rb": 0.5450298279997696,7849 "spec/graphql/resolvers/error_tracking/sentry_detailed_error_resolver_spec.rb": 0.8653204229999574,7850 "spec/lib/sidebars/user_settings/menus/account_menu_spec.rb": 0.5926516089998586,7851 "spec/services/customer_relations/contacts/create_service_spec.rb": 1.19320173899996,7852 "spec/lib/gitlab/usage/metrics/instrumentations/count_projects_with_ml_experiments_metric_spec.rb": 1.4031079729998055,7853 "spec/views/projects/commits/show.html.haml_spec.rb": 1.5259341920000224,7854 "spec/lib/gitlab/ci/config/yaml/loader_spec.rb": 0.7085255299998607,7855 "spec/lib/gitlab/config/entry/validators/nested_array_helpers_spec.rb": 0.48442106799984685,7856 "spec/workers/user_status_cleanup/batch_worker_spec.rb": 0.7714674600001672,7857 "spec/workers/environments/canary_ingress/update_worker_spec.rb": 1.0503580929998861,7858 "spec/lib/gitlab/safe_request_purger_spec.rb": 0.4450568740003291,7859 "spec/models/work_items/widgets/start_and_due_date_spec.rb": 0.7987307440002951,7860 "spec/rubocop/cop/gitlab/doc_url_spec.rb": 0.5255654120001054,7861 "spec/models/blob_viewer/go_mod_spec.rb": 0.5476039780000974,7862 "spec/services/system_notes/base_service_spec.rb": 0.5560205460001271,7863 "spec/lib/gitlab/health_checks/master_check_spec.rb": 0.4960489850000158,7864 "spec/models/term_agreement_spec.rb": 0.6747140259999469,7865 "spec/workers/onboarding/progress_worker_spec.rb": 0.5915217189999566,7866 "spec/config/smime_signature_settings_spec.rb": 0.4872911170000407,7867 "spec/lib/gitlab/import_export/json/ndjson_writer_spec.rb": 0.43290255699957925,7868 "spec/models/exported_protected_branch_spec.rb": 0.9269467730000542,7869 "spec/services/webauthn/authenticate_service_spec.rb": 0.7623118110000178,7870 "spec/lib/gitlab/exceptions_app_spec.rb": 0.4471150240001407,7871 "spec/views/shared/milestones/_issuables.html.haml_spec.rb": 0.6747806160001346,7872 "spec/lib/gitlab/config/entry/validatable_spec.rb": 0.4355161860003136,7873 "spec/helpers/projects/cluster_agents_helper_spec.rb": 0.7262626070000806,7874 "spec/tooling/lib/tooling/test_map_packer_spec.rb": 0.41704745000015464,7875 "spec/serializers/feature_flags_client_serializer_spec.rb": 0.6238346939999246,7876 "spec/services/users/repair_ldap_blocked_service_spec.rb": 0.6718357969998578,7877 "spec/lib/banzai/filter/jira_import/adf_to_commonmark_filter_spec.rb": 0.41166447100022197,7878 "spec/rubocop/cop/group_public_or_visible_to_user_spec.rb": 0.4424376850001863,7879 "spec/lib/api/entities/bulk_imports/entity_failure_spec.rb": 0.49572859599993535,7880 "spec/lib/gitlab/pagination/offset_header_builder_spec.rb": 0.4057012810003471,7881 "spec/workers/gitlab/github_import/attachments/import_issue_worker_spec.rb": 0.7134757700000591,7882 "spec/graphql/types/error_tracking/sentry_error_stack_trace_type_spec.rb": 0.4268153180000809,7883 "spec/finders/analytics/cycle_analytics/stage_finder_spec.rb": 0.4139198900002157,7884 "spec/lib/gitlab/database/migration_helpers/announce_database_spec.rb": 0.44948721399987335,7885 "spec/models/concerns/database_reflection_spec.rb": 0.3641155189998244,7886 "spec/validators/future_date_validator_spec.rb": 0.3995017820002431,7887 "spec/serializers/integrations/harbor_serializers/artifact_entity_spec.rb": 0.7190632780002488,7888 "spec/lib/gitlab/console_spec.rb": 0.40924439099990195,7889 "spec/graphql/types/ci_configuration/sast/options_entity_spec.rb": 0.3561572499997965,7890 "spec/workers/members_destroyer/unassign_issuables_worker_spec.rb": 0.47391389900030845,7891 "spec/graphql/types/work_items/widget_type_enum_spec.rb": 0.3410116730001391,7892 "spec/lib/gitlab/diff/inline_diff_spec.rb": 0.36507359799998085,7893 "spec/views/help/drawers.html.haml_spec.rb": 0.4385674680002012,7894 "spec/lib/backup/task_spec.rb": 0.3707252660001359,7895 "spec/routing/web_ide_routing_spec.rb": 0.3622657719997733,7896 "spec/scripts/api/create_merge_request_note_spec.rb": 0.33662208300029306,7897 "spec/graphql/types/jira_import_type_spec.rb": 0.3578542059999563,7898 "spec/serializers/personal_access_token_entity_spec.rb": 0.44785684499993295,7899 "spec/lib/gitlab/patch/database_config_spec.rb": 0.3721149749999313,7900 "spec/services/users/validate_push_otp_service_spec.rb": 0.43392716500011375,7901 "spec/lib/gitlab/database/async_constraints/validators_spec.rb": 0.3811591869998665,7902 "spec/lib/sidebars/groups/super_sidebar_menus/analyze_menu_spec.rb": 0.33400661499990747,7903 "spec/serializers/access_token_entity_base_spec.rb": 0.3816061279999303,7904 "spec/graphql/types/project_statistics_redirect_type_spec.rb": 0.31238150199988013,7905 "spec/helpers/terms_helper_spec.rb": 0.3471963940000933,7906 "spec/lib/gitlab/email/hook/delivery_metrics_observer_spec.rb": 0.35065696200035745,7907 "spec/lib/gitlab/changes_list_spec.rb": 0.33552458399981333,7908 "spec/serializers/evidences/release_serializer_spec.rb": 0.31731325800001287,7909 "spec/workers/todos_destroyer/group_private_worker_spec.rb": 0.32581653099987307,7910 "spec/lib/gitlab/github_import/importer/attachments/base_importer_spec.rb": 0.4287873089997447,7911 "spec/graphql/types/permission_types/ci/runner_spec.rb": 0.40451226899995163,7912 "spec/graphql/types/packages/nuget/dependency_link_metdatum_type_spec.rb": 0.3252610409999761,7913 "spec/lib/forever_spec.rb": 0.3124189320001278,7914 "spec/lib/gitlab/kubernetes/pod_cmd_spec.rb": 0.32084194500021117915}7916Knapsack global time execution for tests: 23m 17s7917Pending: (Failures listed here are expected and do not affect your suite's status)7918 1) Projects::ImportExport::ExportService#execute saves the repo7919 # No reason given7920 # ./spec/services/projects/import_export/export_service_spec.rb:517921Finished in 23 minutes 21 seconds (files took 1 minute 33.87 seconds to load)79223386 examples, 0 failures, 1 pending7923Randomized with seed 154037924[TEST PROF INFO] Time spent in factories: 11:13.913 (46.78% of total time)7925RSpec exited with 0.7926No examples to retry, congrats!7928Running after script...7929$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"7936Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy7938Uploading artifacts...7939coverage/: found 5 matching artifact files and directories 7940WARNING: crystalball/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 7941deprecations/: found 27 matching artifact files and directories 7942knapsack/: found 4 matching artifact files and directories 7943query_recorder/: found 2 matching artifact files and directories 7944rspec/: found 10 matching artifact files and directories 7945WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 7946log/*.log: found 17 matching artifact files and directories 7947WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4541357788/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com7948WARNING: Retrying... context=artifacts-uploader error=request redirected7949Uploading artifacts as "archive" to coordinator... 201 Created id=4541357788 responseStatus=201 Created token=64_qMZBy7950Uploading artifacts...7951rspec/rspec-*.xml: found 1 matching artifact files and directories 7952WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4541357788/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com7953WARNING: Retrying... context=artifacts-uploader error=request redirected7954Uploading artifacts as "junit" to coordinator... 201 Created id=4541357788 responseStatus=201 Created token=64_qMZBy7956Job succeeded