rspec unit pg14-as-if-foss single-db-ci-connection 3/28
Passed Started
by
@vshushlin

Vladimir Shushlin
1INFO: analyzing "gitlab_partitions_dynamic.ci_runner_machine_builds_100"2INFO: "ci_runner_machine_builds_100": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows3INFO: analyzing "public.p_ci_job_annotations" inheritance tree4INFO: analyzing "gitlab_partitions_dynamic.ci_job_annotations_100"5INFO: "ci_job_annotations_100": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows6INFO: analyzing "public.p_ci_builds_metadata" inheritance tree7INFO: analyzing "public.ci_builds_metadata"8INFO: "ci_builds_metadata": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows9Run options: exclude {:quarantine=>true, :level=>"background_migration", :click_house=>true, :real_ai_request=>true}10Test environment set up in 1.025629157 seconds11Project12 returns valid url to repo13 behaves like having unique enum values14 has unique values in "auto_cancel_pending_pipelines"15 behaves like ensures runners_token is prefixed16 #runners_token17 generates runners_token which starts with runner prefix18 when record has an invalid token19 generates runners_token which starts with runner prefix20 associations21 is expected to belong to organization required: false22 is expected to belong to group required: false23 is expected to belong to namespace required: false24 is expected to belong to project_namespace class_name => Namespaces::ProjectNamespace required: false inverse_of => project25 is expected to belong to creator class_name => User required: false26 is expected to belong to pool_repository required: false27 is expected to have many users28 is expected to have many maintainers through project_members source => user29 is expected to have many events30 is expected to have many merge_requests31 is expected to have many merge_request_metrics class_name => MergeRequest::Metrics32 is expected to have many issues33 is expected to have many work_items34 is expected to have many incident_management_issuable_escalation_statuses class_name => IncidentManagement::IssuableEscalationStatus through issues inverse_of => project35 is expected to have many milestones36 is expected to have many project_members dependent => delete_all37 is expected to have many namespace_members38 is expected to have many users through project_members39 is expected to have many requesters dependent => delete_all40 is expected to have many namespace_requesters41 is expected to have many notes dependent => destroy42 is expected to have many snippets class_name => ProjectSnippet43 is expected to have many deploy_keys_projects44 is expected to have many deploy_keys45 is expected to have many hooks46 is expected to have many protected_branches47 is expected to have many exported_protected_branches48 is expected to have one wiki_repository class_name => Projects::WikiRepository inverse_of => project49 is expected to have one design_management_repository class_name => DesignManagement::Repository inverse_of => project50 is expected to have one slack_integration51 is expected to have one catalog_resource52 is expected to have many ci_components class_name => Ci::Catalog::Resources::Component53 is expected to have many catalog_resource_versions class_name => Ci::Catalog::Resources::Version54 is expected to have one microsoft_teams_integration55 is expected to have one mattermost_integration56 is expected to have one hangouts_chat_integration57 is expected to have one telegram_integration58 is expected to have one unify_circuit_integration59 is expected to have one pumble_integration60 is expected to have one webex_teams_integration61 is expected to have one packagist_integration62 is expected to have one pushover_integration63 is expected to have one apple_app_store_integration64 is expected to have one google_play_integration65 is expected to have one asana_integration66 is expected to have many boards67 is expected to have one campfire_integration68 is expected to have one datadog_integration69 is expected to have one discord_integration70 is expected to have one drone_ci_integration71 is expected to have one emails_on_push_integration72 is expected to have one pipelines_email_integration73 is expected to have one irker_integration74 is expected to have one pivotaltracker_integration75 is expected to have one assembla_integration76 is expected to have one slack_slash_commands_integration77 is expected to have one mattermost_slash_commands_integration78 is expected to have one buildkite_integration79 is expected to have one bamboo_integration80 is expected to have one teamcity_integration81 is expected to have one jira_integration82 is expected to have one harbor_integration83 is expected to have one redmine_integration84 is expected to have one youtrack_integration85 is expected to have one clickup_integration86 is expected to have one custom_issue_tracker_integration87 is expected to have one bugzilla_integration88 is expected to have one ewm_integration89 is expected to have one external_wiki_integration90 is expected to have one confluence_integration91 is expected to have one gitlab_slack_application_integration92 is expected to have one project_feature93 is expected to have one project_repository94 is expected to have one container_expiration_policy95 is expected to have one statistics class_name => ProjectStatistics96 is expected to have one import_data class_name => ProjectImportData97 is expected to have one last_event class_name => Event98 is expected to have one forked_from_project through fork_network_member99 is expected to have one auto_devops class_name => ProjectAutoDevops100 is expected to have one error_tracking_setting class_name => ErrorTracking::ProjectErrorTrackingSetting101 is expected to have one project_setting102 is expected to have one alerting_setting class_name => Alerting::ProjectAlertingSetting103 is expected to have one mock_ci_integration104 is expected to have one mock_monitoring_integration105 is expected to have one service_desk_custom_email_verification class_name => ServiceDesk::CustomEmailVerification106 is expected to have one container_registry_data_repair_detail class_name => ContainerRegistry::DataRepairDetail107 is expected to have many container_registry_protection_rules class_name => ContainerRegistry::Protection::Rule108 is expected to have many commit_statuses109 is expected to have many ci_pipelines110 is expected to have many ci_refs111 is expected to have many builds112 is expected to have many build_report_results113 is expected to have many runner_projects114 is expected to have many runners115 is expected to have many variables116 is expected to have many triggers117 is expected to have many labels class_name => ProjectLabel118 is expected to have many users_star_projects119 is expected to have many repository_languages120 is expected to have many environments121 is expected to have many deployments122 is expected to have many todos123 is expected to have many releases124 is expected to have many lfs_objects_projects125 is expected to have many project_group_links126 is expected to have many notification_settings dependent => delete_all127 is expected to have many forked_to_members class_name => ForkNetworkMember128 is expected to have many forks through forked_to_members129 is expected to have many uploads130 is expected to have many pipeline_schedules131 is expected to have many members_and_requesters132 is expected to have many namespace_members_and_requesters133 is expected to have many clusters134 is expected to have many management_clusters class_name => Clusters::Cluster135 is expected to have many kubernetes_namespaces136 is expected to have many cluster_agents class_name => Clusters::Agent137 is expected to have many custom_attributes class_name => ProjectCustomAttribute138 is expected to have many project_badges class_name => ProjectBadge139 is expected to have many lfs_file_locks140 is expected to have many project_deploy_tokens141 is expected to have many deploy_tokens through project_deploy_tokens142 is expected to have many external_pull_requests143 is expected to have many sourced_pipelines144 is expected to have many source_pipelines145 is expected to have many prometheus_alert_events146 is expected to have many alert_management_alerts147 is expected to have many alert_management_http_integrations148 is expected to have many jira_imports149 is expected to have many repository_storage_moves150 is expected to have many reviews inverse_of => project151 is expected to have many packages class_name => Packages::Package152 is expected to have many package_files class_name => Packages::PackageFile153 is expected to have many rpm_repository_files class_name => Packages::Rpm::RepositoryFile inverse_of => project dependent => destroy154 is expected to have many debian_distributions class_name => Packages::Debian::ProjectDistribution dependent => destroy155 is expected to have many npm_metadata_caches class_name => Packages::Npm::MetadataCache156 is expected to have one packages_cleanup_policy class_name => Packages::Cleanup::Policy inverse_of => project157 is expected to have many package_protection_rules class_name => Packages::Protection::Rule inverse_of => project158 is expected to have many pipeline_artifacts dependent => restrict_with_error159 is expected to have many terraform_states class_name => Terraform::State inverse_of => project160 is expected to have many timelogs161 is expected to have many error_tracking_client_keys class_name => ErrorTracking::ClientKey162 is expected to have many pending_builds class_name => Ci::PendingBuild163 is expected to have many ci_feature_usages class_name => Projects::CiFeatureUsage164 is expected to have many bulk_import_exports class_name => BulkImports::Export165 is expected to have many job_artifacts dependent => restrict_with_error166 is expected to have many build_trace_chunks through builds dependent => restrict_with_error167 is expected to have many secure_files class_name => Ci::SecureFile dependent => restrict_with_error168 is expected to have one build_artifacts_size_refresh class_name => Projects::BuildArtifactsSizeRefresh169 is expected to have many project_callouts class_name => Users::ProjectCallout170 is expected to have many pipeline_metadata class_name => Ci::PipelineMetadata171 is expected to have many incident_management_timeline_event_tags class_name => IncidentManagement::TimelineEventTag172 is expected to have many integrations173 is expected to have many push_hooks_integrations class_name => Integration174 is expected to have many tag_push_hooks_integrations class_name => Integration175 is expected to have many issue_hooks_integrations class_name => Integration176 is expected to have many confidential_issue_hooks_integrations class_name => Integration177 is expected to have many merge_request_hooks_integrations class_name => Integration178 is expected to have many note_hooks_integrations class_name => Integration179 is expected to have many confidential_note_hooks_integrations class_name => Integration180 is expected to have many job_hooks_integrations class_name => Integration181 is expected to have many archive_trace_hooks_integrations class_name => Integration182 is expected to have many pipeline_hooks_integrations class_name => Integration183 is expected to have many wiki_page_hooks_integrations class_name => Integration184 is expected to have many deployment_hooks_integrations class_name => Integration185 is expected to have many alert_hooks_integrations class_name => Integration186 is expected to have many incident_hooks_integrations class_name => Integration187 is expected to have many pages_domains188 is expected to have one pages_metadatum189 is expected to have many pages_deployments190 has an inverse relationship with merge requests191 has a distinct has_many :lfs_objects relation through lfs_objects_projects192 behaves like model with repository193 container class includes HasRepository194 #commits_by195 retrieves several commits from the repository by oid196 #web_url197 when given the only_path option198 when only_path is false199 returns the full web URL for this repo200 when only_path is true201 returns the relative web URL for this repo202 when only_path is nil203 returns the full web URL for this repo204 when not given the only_path option205 returns the full web URL for this repo206 #url_to_repo207 returns the SSH URL to the repository208 #ssh_url_to_repo209 returns the SSH URL to the repository210 #http_url_to_repo211 returns the HTTP URL to the repository212 #repository213 returns valid repo214 uses the same container215 #storage216 returns valid storage217 #full_path218 returns valid full_path219 #lfs_enabled?220 returns the expected value221 #empty_repo?222 when the repo does not exist223 returns true224 when the repo exists225 returns the empty state of the repository226 #valid_repo?227 is expected to equal false228 is expected to equal true229 #repository_exists?230 is expected to equal false231 is expected to equal true232 #repo_exists?233 is expected to equal false234 is expected to equal true235 #root_ref236 is expected to equal true237 is expected to equal false238 is expected to equal false239 Respond to240 is expected to respond to #base_dir241 is expected to respond to #disk_path242 is expected to respond to #gitlab_shell243 #change_head244 delegates #change_head to repository245 #after_repository_change_head246 calls #reload_default_branch247 publishes an Repositories::DefaultBranchChangedEvent event248 behaves like model with wiki249 #create_wiki250 returns true if the wiki repository already exists251 returns true if the wiki repository was created252 when the repository cannot be created253 returns false and adds a validation error254 #wiki_repository_exists?255 returns true when the wiki repository exists256 returns false when the wiki repository does not exist257 wiki path conflict258 when the new path has been used by the wiki of other Project259 has an error on the name attribute260 when the new wiki path has been used by the path of other Project261 has an error on the name attribute262 when the new path has been used by the wiki of other Group263 has an error on the name attribute264 when the new wiki path has been used by the path of other Group265 has an error on the name attribute266 behaves like can move repository storage267 #set_repository_read_only!268 makes the repository read-only269 raises an error if the project is already read-only270 raises an error when there is an existing git transfer in progress271 skip_git_transfer_check is true272 makes the project read-only when git transfers are in progress273 #set_repository_writable!274 sets repository_read_only to false275 #reference_counter276 returns a Gitlab::ReferenceCounter object277 maintainers association278 returns only maintainers279 after initialized280 has a project_feature281 when deleting project282 also deletes the associated ProjectNamespace283 when project has object storage attached to it284 when associated object storage object is not deleted before the project285 adds an error to project286 when associated object storage object is deleted before the project287 deletes the project288 when creating a new project289 automatically creates a CI/CD settings row290 automatically creates a container expiration policy row291 does not create another container expiration policy if there is already one292 automatically creates a Pages metadata row293 automatically builds a project setting row294 with project namespaces295 behaves like creates project namespace296 automatically creates a project namespace297 updating a project298 when project has an associated project namespace299 project is INVALID when trying to remove project namespace300 when same project is being updated in 2 instances301 syncs only changed attributes302 updating cd_cd_settings303 does not raise an error304 #namespace_members305 includes the correct users306 is equivalent to #project_members307 behaves like query without source filters308 is expected not to include "source_id" and "source_type"309 #namespace_requesters310 includes the correct users311 is equivalent to #project_members312 behaves like query without source filters313 is expected not to include "source_id" and "source_type"314 #namespace_members_and_requesters315 includes the correct users316 is equivalent to #project_members317 behaves like query without source filters318 is expected not to include "source_id" and "source_type"319 #namespace_members setters320 is expected to be an instance of ProjectMember321 is expected to eq #<User id:15 @user14>322 is expected to eq #<Project id:25 namespace1/project-29>>323 is expected to be nil324 behaves like polymorphic membership relationship325 is expected to include {"source_type" => "Project", "source_id" => 25}326 behaves like member_namespace membership relationship327 is expected to include {"member_namespace_id" => 42}328 #namespace_requesters setters329 is expected to be an instance of ProjectMember330 is expected to eq #<User id:16 @user15>331 is expected to eq #<Project id:26 namespace1/project-30>>332 is expected to eq 2023-10-20 08:30:22.427683717 +0000333 behaves like polymorphic membership relationship334 is expected to include {"source_type" => "Project", "source_id" => 26}335 behaves like member_namespace membership relationship336 is expected to include {"member_namespace_id" => 44}337 #namespace_members_and_requesters setters338 is expected to be an instance of ProjectMember339 is expected to eq #<User id:17 @user16>340 is expected to eq #<Project id:27 namespace1/project-31>>341 is expected to eq 2023-10-20 08:30:23.000941017 +0000342 behaves like polymorphic membership relationship343 is expected to include {"source_type" => "Project", "source_id" => 27}344 behaves like member_namespace membership relationship345 is expected to include {"member_namespace_id" => 46}346 #members & #requesters347 behaves like members and requesters associations348 #members_and_requesters349 includes members and requesters350 #members351 includes members and exclude requesters352 #requesters353 does not include requesters354 ci_pipelines association355 returns only pipelines from ci_sources356 order of the `has_many :notes` association357 has `has_many :notes` as the first association among all the other associations thatincludes the `Issuable` module358 modules359 is expected to includes the Gitlab::ConfigHelper module360 is expected to includes the Gitlab::ShellAdapter module361 is expected to includes the Gitlab::VisibilityLevel module362 is expected to includes the Referable module363 is expected to includes the Sortable module364 before_validation365 with removal of leading spaces366 removes the leading space367 when name is nil368 falls through to the presence validation369 validation370 is expected to validate that :name cannot be empty/falsy371 is expected to validate that :name is case-sensitively unique within the scope of :namespace_id372 is expected to validate that the length of :name is at most 255373 is expected to allow :name to be ‹"space last "›374 is expected not to allow :path to be ‹"colon:in:path"›375 is expected to validate that :path cannot be empty/falsy376 is expected to validate that the length of :path is at most 255377 is expected to validate that the length of :description is at most 2000378 is expected to validate that the length of :ci_config_path is at most 255379 is expected to allow :ci_config_path to be ‹""›380 is expected not to allow :ci_config_path to be ‹"test/../foo"›381 is expected not to allow :ci_config_path to be ‹"/test/foo"›382 is expected to validate that :creator cannot be empty/falsy383 is expected to validate that :namespace cannot be empty/falsy384 is expected to validate that :repository_storage cannot be empty/falsy385 is expected to validate that :max_artifacts_size looks like an integer greater than 0386 is expected to validate that the length of :suggestion_commit_message is at most 255387 validates build timeout constraints388 does not allow new projects beyond user limits389 validates the visibility390 validates presence of project_feature391 validates project namespace creation392 does not create project namespace if project is not created393 repository storages inclusion394 does not allow repository storages that don't match a label in the configuration395 import_url396 does not allow an invalid URI as import_url397 does allow a SSH URI as import_url for persisted projects398 does not allow a SSH URI as import_url for new projects399 does allow a valid URI as import_url400 allows an empty URI401 does not produce import data on an empty URI402 does not produce import data on an invalid URI403 does not allow import_url pointing to localhost404 does not allow import_url pointing to the local network405 does not allow import_url with invalid ports for new projects406 does not allow import_url with invalid ports for persisted projects407 does not allow import_url with invalid user408 does not allow URLs with unencoded CR or LF characters409 allow URLs with CR or LF characters410 project pending deletion411 contains errors related to the project being deleted412 name format validation413 rejects a name starting with '.'414 rejects a name starting with '-'415 rejects a name starting with '$'416 name is unchanged417 does not raise validation error for name for existing project418 path validation419 allows paths reserved on the root namespace420 rejects paths reserved on another level421 rejects nested paths422 allows a reserved group name423 rejects a path ending in '.'424 rejects a path starting with '.'425 rejects a path ending in '-'426 rejects a path starting with '-'427 rejects a path ending in '_'428 rejects a path starting with '_'429 when validating if path already exist as pages unique domain430 rejects paths that match pages unique domain431 accepts path when the host does not match432 accepts path when the domain does not match433 path is unchanged434 does not raise validation error for path for existing project435 behaves like a BulkUsersByEmailLoad model436 #users_by_emails437 when nothing is loaded438 preforms the yielded query and supplies the data with only emails desired439 when store is preloaded440 passes back loaded data and does not update the items that already exist441 #all_pipelines442 has all pipelines443 when builds are disabled444 returns .external pipelines445 #ci_pipelines446 excludes dangling pipelines such as :webide447 when builds are disabled448 returns .external pipelines449 #commit_notes450 returns project's commit notes451 #personal_namespace_holder?452 project: personal_project, user: namespace_user, result: true453 is expected to eq true454 project: personal_project, user: admin_user, result: false455 is expected to eq false456 project: personal_project, user: another_user, result: false457 is expected to eq false458 project: personal_project, user: nil, result: false459 is expected to eq false460 project: group_project, user: namespace_user, result: false461 is expected to eq false462 project: group_project, user: group_owner_user, result: false463 is expected to eq false464 project: group_project, user: another_user, result: false465 is expected to eq false466 project: group_project, user: nil, result: false467 is expected to eq false468 project: group_project, user: nil, result: false469 is expected to eq false470 project: group_project, user: admin_user, result: false471 is expected to eq false472 #invalidate_personal_projects_count_of_owner473 for personal projects474 invalidates personal_project_count cache of the the owner of the personal namespace475 for projects in groups476 does not invalidates any cache477 #default_pipeline_lock478 keep_latest_artifact_enabled: false, result_pipeline_locked: :unlocked479 is expected to eq :unlocked480 keep_latest_artifact_enabled: true, result_pipeline_locked: :artifacts_locked481 is expected to eq :artifacts_locked482 #membership_locked?483 returns false484 #autoclose_referenced_issues485 when DB entry is nil486 returns true487 when DB entry is true488 returns true489 when DB entry is false490 returns false491 project token492 sets an random token if none provided493 does not set an random token if one provided494 Respond to495 is expected to respond to #url_to_repo496 is expected to respond to #execute_hooks497 is expected to respond to #owner498 is expected to respond to #path_with_namespace499 is expected to respond to #full_path500 delegation501 is expected to delegate #add_guest to the #team object502 is expected to delegate #add_reporter to the #team object503 is expected to delegate #add_developer to the #team object504 is expected to delegate #add_maintainer to the #team object505 is expected to delegate #add_member to the #team object506 is expected to delegate #add_members to the #team object507 is expected to delegate #team_members to the #team object as #members508 is expected to delegate #owner_name to the #owner object as #name, allowing #owner to return nil509 is expected to delegate #root_ancestor to the #namespace object, allowing #namespace to return nil510 is expected to delegate #certificate_based_clusters_enabled? to the #namespace object, allowing #namespace to return nil511 is expected to delegate #last_pipeline to the #commit object, allowing #commit to return nil512 is expected to delegate #container_registry_enabled? to the #project_feature object513 is expected to delegate #container_registry_access_level to the #project_feature object514 is expected to delegate #environments_access_level to the #project_feature object515 is expected to delegate #model_experiments_access_level to the #project_feature object516 is expected to delegate #feature_flags_access_level to the #project_feature object517 is expected to delegate #releases_access_level to the #project_feature object518 is expected to delegate #infrastructure_access_level to the #project_feature object519 is expected to delegate #maven_package_requests_forwarding to the #namespace object520 is expected to delegate #pypi_package_requests_forwarding to the #namespace object521 is expected to delegate #npm_package_requests_forwarding to the #namespace object522 read project settings523 is expected to delegate #show_default_award_emojis to the #project_setting object, allowing #project_setting to return nil524 is expected to delegate #show_default_award_emojis? to the #project_setting object, allowing #project_setting to return nil525 is expected to delegate #warn_about_potentially_unwanted_characters to the #project_setting object, allowing #project_setting to return nil526 is expected to delegate #warn_about_potentially_unwanted_characters? to the #project_setting object, allowing #project_setting to return nil527 is expected to delegate #enforce_auth_checks_on_uploads to the #project_setting object, allowing #project_setting to return nil528 is expected to delegate #enforce_auth_checks_on_uploads? to the #project_setting object, allowing #project_setting to return nil529 write project settings530 is expected to delegate #show_default_award_emojis= to the #project_setting object passing arguments [:args], allowing #project_setting to return nil531 is expected to delegate #warn_about_potentially_unwanted_characters= to the #project_setting object passing arguments [:args], allowing #project_setting to return nil532 is expected to delegate #enforce_auth_checks_on_uploads= to the #project_setting object passing arguments [:args], allowing #project_setting to return nil533 when ci_cd_settings is destroyed but project is not534 allows methods delegated to ci_cd_settings to be nil535 #ci_forward_deployment_enabled?536 behaves like a ci_cd_settings predicate method537 when ci_cd_settings is nil538 returns false539 when ci_cd_settings is not nil540 delegated_method_return: true, subject_return: true541 returns the expected boolean value542 delegated_method_return: false, subject_return: false543 returns the expected boolean value544 #ci_forward_deployment_rollback_allowed?545 behaves like a ci_cd_settings predicate method546 when ci_cd_settings is nil547 returns false548 when ci_cd_settings is not nil549 delegated_method_return: true, subject_return: true550 returns the expected boolean value551 delegated_method_return: false, subject_return: false552 returns the expected boolean value553 #ci_allow_fork_pipelines_to_run_in_parent_project?554 behaves like a ci_cd_settings predicate method555 when ci_cd_settings is nil556 returns false557 when ci_cd_settings is not nil558 delegated_method_return: true, subject_return: true559 returns the expected boolean value560 delegated_method_return: false, subject_return: false561 returns the expected boolean value562 #ci_outbound_job_token_scope_enabled?563 behaves like a ci_cd_settings predicate method564 when ci_cd_settings is nil565 returns false566 when ci_cd_settings is not nil567 delegated_method_return: true, subject_return: true568 returns the expected boolean value569 delegated_method_return: false, subject_return: false570 returns the expected boolean value571 #ci_inbound_job_token_scope_enabled?572 behaves like a ci_cd_settings predicate method573 when ci_cd_settings is nil574 returns false575 when ci_cd_settings is not nil576 delegated_method_return: true, subject_return: true577 returns the expected boolean value578 delegated_method_return: false, subject_return: false579 returns the expected boolean value580 #restrict_user_defined_variables?581 behaves like a ci_cd_settings predicate method582 when ci_cd_settings is nil583 returns false584 when ci_cd_settings is not nil585 delegated_method_return: true, subject_return: true586 returns the expected boolean value587 delegated_method_return: false, subject_return: false588 returns the expected boolean value589 #keep_latest_artifacts_available?590 behaves like a ci_cd_settings predicate method591 when ci_cd_settings is nil592 returns false593 when ci_cd_settings is not nil594 delegated_method_return: true, subject_return: true595 returns the expected boolean value596 delegated_method_return: false, subject_return: false597 returns the expected boolean value598 #keep_latest_artifact?599 behaves like a ci_cd_settings predicate method600 when ci_cd_settings is nil601 returns false602 when ci_cd_settings is not nil603 delegated_method_return: true, subject_return: true604 returns the expected boolean value605 delegated_method_return: false, subject_return: false606 returns the expected boolean value607 #group_runners_enabled?608 behaves like a ci_cd_settings predicate method609 when ci_cd_settings is nil610 returns false611 when ci_cd_settings is not nil612 delegated_method_return: true, subject_return: true613 returns the expected boolean value614 delegated_method_return: false, subject_return: false615 returns the expected boolean value616 #merge_commit_template_or_default617 returns default merge commit template618 when merge commit template is set and not nil619 returns current value620 #merge_commit_template_or_default=621 sets template to nil when set to default value622 sets template to nil when set to default value but with CRLF line endings623 allows changing template624 allows setting template to nil625 #squash_commit_template_or_default626 returns default squash commit template627 when squash commit template is set and not nil628 returns current value629 #squash_commit_template_or_default=630 sets template to nil when set to default value631 allows changing template632 allows setting template to nil633 reference methods634 #to_reference635 returns the path with reference_postfix636 returns the path with reference_postfix when arg is self637 returns the full_path with reference_postfix when full638 returns the full_path with reference_postfix when cross-project639 #to_reference_base640 when nil argument641 returns nil642 when full is true643 returns complete path to the project644 when same project argument645 returns nil646 when cross namespace project argument647 returns complete path to the project648 when same namespace / cross-project argument649 returns path to the project650 when different namespace / cross-project argument with same owner651 returns full path to the project652 when argument is a namespace653 with same project path654 returns path to the project655 with different project path656 returns full path to the project657 when argument is a user658 returns full path to the project659 #to_human_reference660 when nil argument661 returns nil662 when same project argument663 returns nil664 when cross namespace project argument665 returns complete name with namespace of the project666 when same namespace / cross-project argument667 returns name of the project668 #to_reference_base669 project: project1, full: false, from: nil, result: nil670 returns correct path671 project: project1, full: true, from: nil, result: lazy { project.full_path }672 returns correct path673 project: project1, full: false, from: group, result: lazy { project.path }674 returns correct path675 project: project1, full: true, from: group, result: lazy { project.full_path }676 returns correct path677 project: project1, full: false, from: parent, result: lazy { project.full_path }678 returns correct path679 project: project1, full: true, from: parent, result: lazy { project.full_path }680 returns correct path681 project: project1, full: false, from: project1, result: nil682 returns correct path683 project: project1, full: true, from: project1, result: lazy { project.full_path }684 returns correct path685 project: project1, full: false, from: project_namespace, result: nil686 returns correct path687 project: project1, full: true, from: project_namespace, result: lazy { project.full_path }688 returns correct path689 project: project1, full: false, from: project2, result: lazy { project.path }690 returns correct path691 project: project1, full: true, from: project2, result: lazy { project.full_path }692 returns correct path693 project: project1, full: false, from: project_namespace2, result: lazy { project.path }694 returns correct path695 project: project1, full: true, from: project_namespace2, result: lazy { project.full_path }696 returns correct path697 project: project1, full: false, from: another_group, result: lazy { project.full_path }698 returns correct path699 project: project1, full: true, from: another_group, result: lazy { project.full_path }700 returns correct path701 project: project1, full: false, from: project3, result: lazy { project.full_path }702 returns correct path703 project: project1, full: true, from: project3, result: lazy { project.full_path }704 returns correct path705 project: project1, full: false, from: project_namespace3, result: lazy { project.full_path }706 returns correct path707 project: project1, full: true, from: project_namespace3, result: lazy { project.full_path }708 returns correct path709 project: project1, full: false, from: user_namespace, result: lazy { project.full_path }710 returns correct path711 project: project1, full: true, from: user_namespace, result: lazy { project.full_path }712 returns correct path713 #merge_method714 ff: true, rebase: true, method: :ff715 is expected to eq :ff716 ff: true, rebase: false, method: :ff717 is expected to eq :ff718 ff: false, rebase: true, method: :rebase_merge719 is expected to eq :rebase_merge720 ff: false, rebase: false, method: :merge721 is expected to eq :merge722 #readme_url723 with a non-existing repository724 returns nil725 with an existing repository726 when no README exists727 returns nil728 when a README exists729 returns the README730 #new_issuable_address731 incoming email enabled732 returns the address to create a new issue733 returns the address to create a new merge request734 returns nil with invalid address type735 incoming email disabled736 returns nil737 returns nil738 last_activity methods739 last_activity740 alias last_activity to last_event741 last_activity_date742 returns the project's last update date743 #get_issue744 with default issues tracker745 returns an issue746 returns count of open issues747 returns nil when no issue found748 returns nil when user doesn't have access749 with external issues tracker750 when internal issues are enabled751 returns interlan issue752 returns an ExternalIssue when internal issue does not exists753 when internal issues are disabled754 returns always an External issues755 returns an ExternalIssue when internal issue does not exists756 #open_issues_count757 provides the issue count758 invokes the count service with current_user759 invokes the batch count service with no current_user760 #open_merge_requests_count761 provides the merge request count762 #issue_exists?763 is truthy when issue exists764 is falsey when issue does not exist765 #to_param766 with namespace767 is expected to eq "gitlabhq"768 with invalid path769 returns previous path to keep project suitable for use in URLs when persisted770 returns current path when new record771 #default_issues_tracker?772 is true if used internal tracker773 is false if used other tracker774 #has_wiki?775 returns true if project is wiki enabled or has external wiki776 #first_owner777 the project does not have a group778 is the namespace owner779 the project is in a group780 is the group owner781 #external_issue_tracker782 sets Project#has_external_issue_tracker when it is nil783 returns nil and does not query services when there is no external issue tracker784 retrieves external_issue_tracker querying services and cache it when there is external issue tracker785 #has_external_issue_tracker786 is false when external issue tracker integration is not active787 is false when other integration is active788 when there is an active external issue tracker integration789 is expected to eq true790 becomes false when external issue tracker integration is destroyed791 becomes false when external issue tracker integration becomes inactive792 when there are two active external issue tracker integrations793 does not become false when external issue tracker integration is destroyed794 does not become false when external issue tracker integration becomes inactive795 #external_wiki796 returns an active external wiki797 does not return an inactive external wiki798 sets Project#has_external_wiki when it is nil799 #has_external_wiki800 is expected to eq false801 when there is an active external wiki integration802 is expected to eq true803 becomes false if the external wiki integration is destroyed804 becomes false if the external wiki integration becomes inactive805 when created as inactive806 is false807 #star_count808 counts stars from multiple users809 does not count stars from blocked users810 counts stars on the right project811 #avatar_type812 is true if avatar is image813 is false if avatar is html page814 #avatar_url815 when avatar file is uploaded816 shows correct url817 when avatar file in git818 is expected to eq "http://localhost/namespace1/project-181/-/avatar"819 when git repo is empty820 is expected to eq nil821 #builds_enabled822 is expected to be truthy823 .sort_by_attribute824 reorders the input relation by start count desc825 reorders the input relation by last activity desc826 reorders the input relation by last activity asc827 sorting by name828 when using .sort_by_name_desc829 reorders the projects by descending name order830 when using .sort_by_name_asc831 reorders the projects by ascending name order832 .with_shared_runners_enabled833 when shared runners are enabled for project834 returns a project835 when shared runners are disabled for project836 returns an empty array837 .with_remote_mirrors838 when some remote mirrors are enabled for the project839 returns a project840 when some remote mirrors exists but disabled for the project841 returns a project842 when no remote mirrors exist for the project843 returns an empty list844 .with_jira_dvcs_cloud845 returns the correct project846 .with_jira_dvcs_server847 returns the correct project848 .with_slack_application_disabled849 when the Slack app setting is enabled850 includes only projects where Slack app is disabled or absent851 when the Slack app setting is not enabled852 includes all projects853 .with_slack_integration854 returns projects with both active and inactive slack integrations855 .with_slack_slash_commands_integration856 returns projects with both active and inactive slack slash commands integrations857 .cached_count858 returns total project count859 .trending860 sorts projects by the amount of notes in descending order861 does not take system notes into account862 .starred_by863 returns only projects starred by the given user864 .with_limit865 limits the number of projects returned866 .visible_to_user867 when a user has access to a project868 is expected to eq [#<Project id:183 namespace1/project-218>>]869 when a user does not have access to any projects870 is expected to eq []871 .with_integration872 returns the correct projects873 .with_active_integration874 returns the correct projects875 .include_integration876 avoids n + 1877 .service_desk_enabled878 returns the correct project879 #service_desk_enabled?880 is enabled881 #service_desk_address882 when service_desk_email is disabled883 behaves like with incoming email address884 when incoming email is enabled885 uses project full path as service desk address key886 when incoming email is disabled887 uses project full path as service desk address key888 when service_desk_email is enabled889 when project_key is set890 returns Service Desk alias address including the project_key891 when project_key is not set892 returns Service Desk alias address including the project full path893 when custom email is enabled894 returns custom email address895 when feature flag service_desk_custom_email is disabled896 returns custom email address897 .with_service_desk_key898 returns projects with given key899 returns empty if there is no project with the key900 .find_by_url901 url is internal902 path is recognised as a project path903 is expected to eq #<Project id:200 namespace1/project-236>>904 returns nil if the path detection throws an error905 path is not a project path906 is expected to be nil907 url is external908 is expected to be nil909 .without_integration910 returns projects without the integration911 repository storage by default912 picks storage from ApplicationSetting913 shared runners by default914 are enabled915 is expected to be truthy916 are disabled917 is expected to be falsey918 #any_online_runners?919 shared runners920 for shared runners disabled921 has no runners available922 has a project runner923 has a shared runner, but they are prohibited to use924 checks the presence of project runner925 returns false if match cannot be found926 returns false if runner is offline927 for shared runners enabled928 has a shared runner929 checks the presence of shared runner930 returns false if match cannot be found931 group runners932 for group runners disabled933 has no runners available934 has a group runner, but they are prohibited to use935 for group runners enabled936 has a group runner937 has an offline group runner938 checks the presence of group runner939 returns false if match cannot be found940 #shared_runners941 behaves like shared_runners942 when shared runners are enabled for project943 returns a list of shared runners944 when shared runners are disabled for project945 returns a empty list946 #available_shared_runners947 behaves like shared_runners948 when shared runners are enabled for project949 returns a list of shared runners950 when shared runners are disabled for project951 returns a empty list952 #visibility_level953 by default954 is expected to eq 0955 when set to INTERNAL in application settings956 is expected to eq 10957 attribute_name: :visibility, value: "public"958 sets the visibility level959 attribute_name: :visibility_level, value: 20960 sets the visibility level961 attribute_name: "visibility", value: "public"962 sets the visibility level963 attribute_name: "visibility_level", value: 20964 sets the visibility level965 #visibility_level_allowed?966 when checking on non-forked project967 is expected to be truthy968 is expected to be truthy969 is expected to be truthy970 when checking on forked project971 is expected to be truthy972 is expected to be truthy973 is expected to be falsey974 #pages_show_onboarding?975 if there is no metadata976 is expected to be truthy977 if onboarding is complete978 is expected to be falsey979 if there is metadata, but onboarding is not complete980 is expected to be truthy981 will return false if pages is deployed even if onboarding_complete is false982 is expected to be falsey983 #pages_deployed?984 if pages are deployed985 is expected to be truthy986 if public folder doesn't exist987 is expected to be falsey988 #default_branch_protected?989 default_branch_protection_level: 0, result: false990 is expected to eq false991 default_branch_protection_level: 1, result: false992 is expected to eq false993 default_branch_protection_level: 3, result: true994 is expected to eq true995 default_branch_protection_level: 2, result: true996 is expected to eq true997 default_branch_protection_level: 4, result: true998 is expected to eq true999 initial_push_to_default_branch_allowed_for_developer?1000 default_branch_protection_level: 0, result: true1001 is expected to eq true1002 default_branch_protection_level: 1, result: true1003 is expected to eq true1004 default_branch_protection_level: 3, result: false1005 is expected to eq false1006 default_branch_protection_level: 2, result: false1007 is expected to eq false1008 default_branch_protection_level: 4, result: true1009 is expected to eq true1010 .search1011 returns projects with a matching name1012 returns projects with a partially matching name1013 returns projects with a matching name regardless of the casing1014 returns projects with a matching description1015 returns projects with a partially matching description1016 returns projects with a matching description regardless of the casing1017 returns projects with a matching path1018 returns projects with a partially matching path1019 returns projects with a matching path regardless of the casing1020 defaults use_minimum_char_limit to true1021 passes use_minimum_char_limit if it is set1022 when include_namespace is true1023 returns projects that match the group path1024 returns projects that match the full path1025 with pending_delete project1026 shows pending deletion project1027 .optionally_search1028 searches for projects matching the query if one is given1029 returns the current relation if no search query is given1030 .eager_load_namespace_and_owner1031 eager loads the namespace and namespace owner1032 #expire_caches_before_rename1033 expires the caches of the repository and wiki1034 .search_by_title1035 returns projects with a matching name1036 returns projects with a partially matching name1037 returns projects with a matching name regardless of the casing1038 when checking projects from groups1039 when group is private project can not be internal1040 is expected to be falsey1041 when group is internal project can not be public1042 is expected to be falsey1043 #track_project_repository1044 with projects on legacy storage1045 behaves like tracks storage location1046 when a project repository entry does not exist1047 creates a new entry1048 tracks the project storage location1049 when a tracking entry exists1050 does not create a new entry in the database1051 updates the project storage location1052 refreshes a memoized repository value1053 when "replicate_object_pool_on_move" FF is disabled1054 does not update a memoized repository value1055 with projects on hashed storage1056 behaves like tracks storage location1057 when a project repository entry does not exist1058 creates a new entry1059 tracks the project storage location1060 when a tracking entry exists1061 does not create a new entry in the database1062 updates the project storage location1063 refreshes a memoized repository value1064 when "replicate_object_pool_on_move" FF is disabled1065 does not update a memoized repository value1066 #create_repository1067 using a regular repository1068 creates the repository1069 adds an error if the repository could not be created1070 passes through default branch1071 using a forked repository1072 does nothing1073 #ensure_repository1074 creates the repository if it not exist1075 does not create the repository if it exists1076 creates the repository if it is a fork1077 handling import URL1078 returns the sanitized URL1079 saves the url credentials percent decoded1080 saves url with no credentials1081 #container_registry_url1082 for enabled registry1083 is expected not to be nil1084 for disabled registry1085 is expected to be nil1086 #container_repositories_size1087 on gitlab.com1088 no_container_repositories: true, all_migrated: nil, gitlab_api_supported: nil, returned_size: nil, expected_result: 01089 is expected to eq 01090 no_container_repositories: false, all_migrated: false, gitlab_api_supported: nil, returned_size: nil, expected_result: nil1091 is expected to eq nil1092 no_container_repositories: false, all_migrated: true, gitlab_api_supported: false, returned_size: nil, expected_result: nil1093 is expected to eq nil1094 no_container_repositories: false, all_migrated: true, gitlab_api_supported: true, returned_size: 555, expected_result: 5551095 is expected to eq 5551096 no_container_repositories: false, all_migrated: true, gitlab_api_supported: true, returned_size: nil, expected_result: nil1097 is expected to eq nil1098 not on gitlab.com1099 is expected to eq nil1100 #container_registry_enabled=1101 updates project_feature1102 #container_registry_enabled1103 delegates to project_feature1104 #has_container_registry_tags?1105 when container registry is enabled1106 when tags are present for multi-level registries1107 has image tags1108 when tags are present for root repository1109 has image tags1110 when there are no tags at all1111 does not have image tags1112 when container registry is disabled1113 does not have image tags1114 does not check root repository tags1115 iterates through container repositories1116 #ci_config_path=1117 default_ci_config_path: nil, project_ci_config_path: :notset, expected_ci_config_path: :default1118 returns the correct path1119 default_ci_config_path: nil, project_ci_config_path: nil, expected_ci_config_path: :default1120 returns the correct path1121 default_ci_config_path: nil, project_ci_config_path: "", expected_ci_config_path: :default1122 returns the correct path1123 default_ci_config_path: nil, project_ci_config_path: "cust\u0000om/\u0000/path", expected_ci_config_path: "custom//path"1124 returns the correct path1125 default_ci_config_path: "", project_ci_config_path: :notset, expected_ci_config_path: :default1126 returns the correct path1127 default_ci_config_path: "", project_ci_config_path: nil, expected_ci_config_path: :default1128 returns the correct path1129 default_ci_config_path: "", project_ci_config_path: "", expected_ci_config_path: :default1130 returns the correct path1131 default_ci_config_path: "", project_ci_config_path: "cust\u0000om/\u0000/path", expected_ci_config_path: "custom//path"1132 returns the correct path1133 default_ci_config_path: "global/path", project_ci_config_path: :notset, expected_ci_config_path: "global/path"1134 returns the correct path1135 default_ci_config_path: "global/path", project_ci_config_path: nil, expected_ci_config_path: :default1136 returns the correct path1137 default_ci_config_path: "global/path", project_ci_config_path: "", expected_ci_config_path: :default1138 returns the correct path1139 default_ci_config_path: "global/path", project_ci_config_path: "cust\u0000om/\u0000/path", expected_ci_config_path: "custom//path"1140 returns the correct path1141 #uses_default_ci_config?1142 has a custom ci config path1143 has a blank ci config path1144 does not have a custom ci config path1145 #latest_successful_build_for_ref1146 behaves like latest successful build for sha or ref1147 with many builds1148 gives the latest builds from latest pipeline1149 with succeeded pipeline1150 standalone pipeline1151 returns builds for ref for default_branch1152 with nonexistent build1153 returns empty relation if the build cannot be found1154 with some pending pipeline1155 gives the latest build from latest pipeline1156 with pending pipeline1157 returns empty relation1158 with build belonging to a child pipeline1159 returns the child build1160 with a specified ref1161 is expected to eq #<Ci::Build status: "pending", finished_at: "2023-10-20 08:53:29.000000000 +0000", created_at: "2023-..."stage", id: 14, stage_id: 13, partition_id: 100, auto_canceled_by_partition_id: 100, tag_list: nil>1162 #latest_pipeline1163 default repository branch1164 when explicitly provided1165 is expected to eq #<Ci::Pipeline id: 14, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: ni...ha: nil, external_pull_request_id: nil, ci_ref_id: 6, locked: "artifacts_locked", partition_id: 100>1166 when not provided1167 is expected to eq #<Ci::Pipeline id: 17, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: ni...ha: nil, external_pull_request_id: nil, ci_ref_id: 8, locked: "artifacts_locked", partition_id: 100>1168 with provided sha1169 is expected to eq #<Ci::Pipeline id: 22, ref: "master", sha: "1b12f15a11fc6e62177bef08f47bc7b5ce50b141", before_sha: ni...a: nil, external_pull_request_id: nil, ci_ref_id: 10, locked: "artifacts_locked", partition_id: 100>1170 provided ref1171 is expected to eq #<Ci::Pipeline id: 24, ref: "add-ipython-files", sha: "4963fefc990451a8ad34289ce266b757456fc88c", bef...a: nil, external_pull_request_id: nil, ci_ref_id: 13, locked: "artifacts_locked", partition_id: 100>1172 with provided sha1173 is expected to eq #<Ci::Pipeline id: 29, ref: "add-ipython-files", sha: "4963fefc990451a8ad34289ce266b757456fc88c", bef...a: nil, external_pull_request_id: nil, ci_ref_id: 15, locked: "artifacts_locked", partition_id: 100>1174 bad ref1175 is expected to be nil1176 on deleted ref1177 always returns nil despite a pipeline exists1178 #latest_successful_build_for_sha1179 behaves like latest successful build for sha or ref1180 with many builds1181 gives the latest builds from latest pipeline1182 with succeeded pipeline1183 standalone pipeline1184 returns builds for ref for default_branch1185 with nonexistent build1186 returns empty relation if the build cannot be found1187 with some pending pipeline1188 gives the latest build from latest pipeline1189 with pending pipeline1190 returns empty relation1191 with build belonging to a child pipeline1192 returns the child build1193 #latest_successful_build_for_ref!1194 with many builds1195 gives the latest builds from latest pipeline1196 with succeeded pipeline1197 standalone pipeline1198 returns builds for ref for default_branch1199 returns exception if the build cannot be found1200 with some pending pipeline1201 gives the latest build from latest pipeline1202 with pending pipeline1203 returns empty relation1204 #import_status1205 with import_state1206 returns the right status1207 without import_state1208 returns none1209 #import_checksums1210 with import_checksums1211 returns the right checksums1212 without import_state1213 returns empty hash1214 #jira_import_status1215 when no jira imports1216 returns none1217 when there are jira imports1218 when latest import status is initial or jira imports are mising1219 returns initial1220 when latest import status is scheduled1221 returns scheduled1222 #human_import_status_name1223 with import_state1224 returns the right human import status1225 without import_state1226 returns none1227 #beautified_import_status_name1228 when import not finished1229 returns the right beautified import status1230 when import is finished1231 when import is partially completed1232 returns partially completed1233 when import is fully completed1234 returns completed1235 #add_import_job1236 forked1237 schedules a RepositoryForkWorker job1238 without repository1239 schedules RepositoryImportWorker1240 not forked1241 schedules a RepositoryImportWorker job1242 jira import1243 schedules a jira import job1244 #jira_import?1245 is expected to equal true1246 is expected to equal true1247 #github_import?1248 is expected to equal true1249 #github_enterprise_import?1250 is expected to equal true1251 is expected to equal false1252 is expected to equal true1253 is expected to equal true1254 #remove_import_data1255 when jira import1256 does remove import data1257 when neither a mirror nor a jira import1258 removes import data1259 #gitlab_project_import?1260 is expected to equal true1261 #gitea_import?1262 is expected to equal true1263 #has_remote_mirror?1264 returns true when a remote mirror is enabled1265 returns false when remote mirror is disabled1266 #update_remote_mirrors1267 syncs enabled remote mirror1268 does nothing when remote mirror is disabled globally and not overridden1269 does not sync disabled remote mirrors1270 #remote_mirror_available?1271 when remote mirror global setting is enabled1272 returns true1273 when remote mirror global setting is disabled1274 returns true when overridden1275 returns false when not overridden1276 #mark_stuck_remote_mirrors_as_failed!1277 fails stuck remote mirrors1278 #ancestors1279 group ancestory1280 behaves like project with group ancestors1281 returns all ancestors1282 behaves like project with ordered group ancestors1283 returns ancestors ordered by descending hierarchy1284 namespace ancestry1285 is expected to be empty1286 #ancestors_upto1287 group ancestry1288 includes ancestors upto but excluding the given ancestor1289 behaves like project with group ancestors1290 returns all ancestors1291 behaves like project with ordered group ancestors1292 returns ancestors ordered by descending hierarchy1293 with hierarchy_order1294 can be used with upto option1295 namespace ancestry1296 is expected to be empty1297 #root_ancestor1298 is expected to eq #<Namespaces::UserNamespace id:1 @namespace1>1299 in a group1300 is expected to eq #<Group id:419 @group53>1301 in a nested group1302 is expected to eq #<Group id:422 @group54>1303 #emails_disabled?1304 is the opposite of emails_disabled1305 #lfs_enabled?1306 LFS disabled in group1307 behaves like project overrides group1308 returns true when enabled in project1309 returns false when disabled in project1310 returns the value from the namespace, when no value is set in project1311 LFS enabled in group1312 behaves like project overrides group1313 returns true when enabled in project1314 returns false when disabled in project1315 returns the value from the namespace, when no value is set in project1316 LFS disabled globally1317 when no values are set1318 behaves like it always returns false1319 is expected to be falsey1320 when all values are set to true1321 behaves like it always returns false1322 is expected to be falsey1323 #after_repository_change_head1324 updates commit count1325 reloads the default branch1326 #after_change_head_branch_does_not_exist1327 adds an error to container if branch does not exist1328 #lfs_objects_for_repository_types1329 returns LFS objects of the specified type only1330 forks1331 #fork_network1332 includes a fork of the project1333 includes a fork of a fork1334 includes sibling forks1335 includes the base project1336 #in_fork_network_of?1337 is true for a real fork1338 is true for a fork of a fork1339 is true for sibling forks1340 is false when another project is given1341 #fork_source1342 returns the direct source if it exists1343 returns the root of the fork network when the directs source was deleted1344 returns nil if it is the root of the fork network1345 #forks1346 includes direct forks of the project1347 #lfs_object_oids_from_fork_source1348 when fork has one of two LFS objects1349 returns OIDs of owned LFS objects1350 returns empty when project is not a fork1351 behaves like can housekeep repository1352 with a clean redis state1353 #pushes_since_gc1354 without any pushes1355 returns 01356 with a number of pushes1357 returns the number of pushes1358 #increment_pushes_since_gc1359 increments the number of pushes since the last GC1360 #reset_pushes_since_gc1361 resets the number of pushes since the last GC1362 #pushes_since_gc_redis_shared_state_key1363 returns the proper redis key format1364 #git_garbage_collect_worker_klass1365 defines a git gargabe collect worker1366 #deployment_variables1367 when the deployment platform is stubbed1368 when project has a deployment platform1369 is expected to eq ["platform", "variables"]1370 when project has no deployment platform1371 is expected to eq []1372 when project has a deployment platforms1373 when environment name is review/name1374 returns variables from this service1375 when environment name is other1376 returns variables from this service1377 #default_environment1378 returns production environment when it exists1379 returns first environment when no production environment exists1380 returns nil when no available environment exists1381 #any_lfs_file_locks?1382 returns false when there are no LFS file locks1383 returns a cached true when there are LFS file locks1384 #protected_for?1385 when ref is nil1386 returns false1387 when ref is ref name1388 when ref is ambiguous1389 raises an error1390 when the ref is not protected1391 behaves like ref is not protected1392 returns false1393 when the ref is a protected branch1394 behaves like ref is protected branch1395 returns true1396 when the ref is a protected tag1397 behaves like ref is protected tag1398 returns true1399 when ref does not exist1400 returns false1401 when ref is full ref1402 when the ref is not protected1403 behaves like ref is not protected1404 returns false1405 when the ref is a protected branch1406 behaves like ref is protected branch1407 returns true1408 when the ref is a protected tag1409 behaves like ref is protected tag1410 returns true1411 when branch ref name is a full tag ref1412 when ref is not protected1413 returns false1414 when ref is a protected branch1415 returns true1416 when ref does not exist1417 returns false1418 #update_project_statistics1419 is called after creation1420 copies the namespace_id1421 updates the namespace_id when changed1422 inside_path1423 returns correct project1424 #route_map_for1425 when there is a .gitlab/route-map.yml at the commit1426 when the route map is valid1427 returns a route map1428 when the route map is invalid1429 returns nil1430 when there is no .gitlab/route-map.yml at the commit1431 returns nil1432 #public_path_for_source_path1433 when there is a route map1434 returns a public path with a leading slash unmodified1435 when the source path is mapped1436 returns the public path1437 when the source path is not mapped1438 returns nil1439 when there is no route map1440 returns nil1441 #parent1442 is expected to eq #<Namespaces::UserNamespace id:1 @namespace1>1443 #parent_id1444 is expected to eq 11445 #parent_changed?1446 is expected to be truthy1447 #default_merge_request_target1448 when mr_default_target_self is set to true1449 returns the current project1450 when merge request can not target upstream1451 returns the current project1452 when merge request can target upstream1453 returns the source project1454 #mr_can_target_upstream?1455 when forked from a more visible project1456 can not target the upstream project1457 when forked from a project with disabled merge requests1458 can not target the upstream project1459 when forked from a project with enabled merge requests1460 can target the upstream project1461 when not forked1462 can not target the upstream project1463 #lfs_http_url_to_repo1464 when a custom HTTP clone URL root is not set1465 returns the url to the repo without a username1466 when a custom HTTP clone URL root is set1467 returns the url to the repo, with the root replaced with the custom one1468 #pipeline_status1469 builds a pipeline status1470 hase a loaded pipeline status1471 #update1472 validates the visibility1473 does not validate the visibility1474 when validating if path already exist as pages unique domain1475 rejects paths that match pages unique domain1476 accepts path when the host does not match1477 accepts path when the domain does not match1478 #last_repository_updated_at1479 sets to created_at upon creation1480 .public_or_visible_to_user1481 with a user1482 includes projects the user has access to1483 includes projects the user can see1484 without a user1485 only includes public projects1486 min_access_level1487 excludes projects when user does not have required minimum access level1488 with deploy token users1489 deploy token user without project1490 is expected to eq []1491 deploy token user with projects1492 is expected to contain exactly #<Project id:406 namespace1/project-507>>, #<Project id:407 namespace1/project-508>>, and #<Project id:408 namespace1/project-509>>1493 with chained filter1494 is expected to contain exactly #<Project id:406 namespace1/project-507>> and #<Project id:407 namespace1/project-508>>1495 .ids_with_issuables_available_for1496 returns project ids with milestones available for user1497 .with_feature_available_for_user1498 with user1499 behaves like feature disabled1500 does not return projects with the project feature disabled1501 behaves like feature public1502 returns projects with the project feature public1503 behaves like feature enabled1504 returns projects with the project feature enabled1505 behaves like feature access level is nil1506 returns projects with the project feature access level nil1507 when feature is private1508 when user does not have access to the feature1509 does not return projects with the project feature private1510 when user has access to the feature1511 returns projects with the project feature private1512 user is an admin1513 behaves like feature disabled1514 does not return projects with the project feature disabled1515 behaves like feature public1516 returns projects with the project feature public1517 behaves like feature enabled1518 returns projects with the project feature enabled1519 behaves like feature access level is nil1520 returns projects with the project feature access level nil1521 when feature is private1522 when admin mode is enabled1523 returns projects with the project feature private1524 when admin mode is disabled1525 does not return projects with the project feature private1526 without user1527 behaves like feature disabled1528 does not return projects with the project feature disabled1529 behaves like feature public1530 returns projects with the project feature public1531 behaves like feature enabled1532 returns projects with the project feature enabled1533 behaves like feature access level is nil1534 returns projects with the project feature access level nil1535 when feature is private1536 does not return projects with the project feature private1537 .filter_by_feature_visibility1538 with reporter level access1539 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11540 behaves like filter respects visibility1541 respects visibility1542 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11543 behaves like filter respects visibility1544 respects visibility1545 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11546 behaves like filter respects visibility1547 respects visibility1548 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11549 behaves like filter respects visibility1550 respects visibility1551 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11552 behaves like filter respects visibility1553 respects visibility1554 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11555 behaves like filter respects visibility1556 respects visibility1557 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11558 behaves like filter respects visibility1559 respects visibility1560 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01561 behaves like filter respects visibility1562 respects visibility1563 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11564 behaves like filter respects visibility1565 respects visibility1566 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01567 behaves like filter respects visibility1568 respects visibility1569 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01570 behaves like filter respects visibility1571 respects visibility1572 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01573 behaves like filter respects visibility1574 respects visibility1575 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01576 behaves like filter respects visibility1577 respects visibility1578 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01579 behaves like filter respects visibility1580 respects visibility1581 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01582 behaves like filter respects visibility1583 respects visibility1584 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01585 behaves like filter respects visibility1586 respects visibility1587 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11588 behaves like filter respects visibility1589 respects visibility1590 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11591 behaves like filter respects visibility1592 respects visibility1593 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11594 behaves like filter respects visibility1595 respects visibility1596 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11597 behaves like filter respects visibility1598 respects visibility1599 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11600 behaves like filter respects visibility1601 respects visibility1602 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01603 behaves like filter respects visibility1604 respects visibility1605 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11606 behaves like filter respects visibility1607 respects visibility1608 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01609 behaves like filter respects visibility1610 respects visibility1611 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11612 behaves like filter respects visibility1613 respects visibility1614 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01615 behaves like filter respects visibility1616 respects visibility1617 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01618 behaves like filter respects visibility1619 respects visibility1620 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01621 behaves like filter respects visibility1622 respects visibility1623 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01624 behaves like filter respects visibility1625 respects visibility1626 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01627 behaves like filter respects visibility1628 respects visibility1629 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01630 behaves like filter respects visibility1631 respects visibility1632 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01633 behaves like filter respects visibility1634 respects visibility1635 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11636 behaves like filter respects visibility1637 respects visibility1638 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01639 behaves like filter respects visibility1640 respects visibility1641 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11642 behaves like filter respects visibility1643 respects visibility1644 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01645 behaves like filter respects visibility1646 respects visibility1647 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01648 behaves like filter respects visibility1649 respects visibility1650 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01651 behaves like filter respects visibility1652 respects visibility1653 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01654 behaves like filter respects visibility1655 respects visibility1656 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01657 behaves like filter respects visibility1658 respects visibility1659 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01660 behaves like filter respects visibility1661 respects visibility1662 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01663 behaves like filter respects visibility1664 respects visibility1665 with feature issues1666 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11667 behaves like filter respects visibility1668 respects visibility1669 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11670 behaves like filter respects visibility1671 respects visibility1672 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11673 behaves like filter respects visibility1674 respects visibility1675 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11676 behaves like filter respects visibility1677 respects visibility1678 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11679 behaves like filter respects visibility1680 respects visibility1681 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11682 behaves like filter respects visibility1683 respects visibility1684 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11685 behaves like filter respects visibility1686 respects visibility1687 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01688 behaves like filter respects visibility1689 respects visibility1690 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11691 behaves like filter respects visibility1692 respects visibility1693 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11694 behaves like filter respects visibility1695 respects visibility1696 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01697 behaves like filter respects visibility1698 respects visibility1699 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01700 behaves like filter respects visibility1701 respects visibility1702 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01703 behaves like filter respects visibility1704 respects visibility1705 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01706 behaves like filter respects visibility1707 respects visibility1708 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01709 behaves like filter respects visibility1710 respects visibility1711 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01712 behaves like filter respects visibility1713 respects visibility1714 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11715 behaves like filter respects visibility1716 respects visibility1717 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11718 behaves like filter respects visibility1719 respects visibility1720 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11721 behaves like filter respects visibility1722 respects visibility1723 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11724 behaves like filter respects visibility1725 respects visibility1726 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11727 behaves like filter respects visibility1728 respects visibility1729 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01730 behaves like filter respects visibility1731 respects visibility1732 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11733 behaves like filter respects visibility1734 respects visibility1735 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01736 behaves like filter respects visibility1737 respects visibility1738 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11739 behaves like filter respects visibility1740 respects visibility1741 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11742 behaves like filter respects visibility1743 respects visibility1744 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01745 behaves like filter respects visibility1746 respects visibility1747 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01748 behaves like filter respects visibility1749 respects visibility1750 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01751 behaves like filter respects visibility1752 respects visibility1753 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01754 behaves like filter respects visibility1755 respects visibility1756 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01757 behaves like filter respects visibility1758 respects visibility1759 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01760 behaves like filter respects visibility1761 respects visibility1762 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11763 behaves like filter respects visibility1764 respects visibility1765 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01766 behaves like filter respects visibility1767 respects visibility1768 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11769 behaves like filter respects visibility1770 respects visibility1771 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11772 behaves like filter respects visibility1773 respects visibility1774 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01775 behaves like filter respects visibility1776 respects visibility1777 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01778 behaves like filter respects visibility1779 respects visibility1780 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01781 behaves like filter respects visibility1782 respects visibility1783 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01784 behaves like filter respects visibility1785 respects visibility1786 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01787 behaves like filter respects visibility1788 respects visibility1789 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01790 behaves like filter respects visibility1791 respects visibility1792 with feature wiki1793 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11794 behaves like filter respects visibility1795 respects visibility1796 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11797 behaves like filter respects visibility1798 respects visibility1799 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11800 behaves like filter respects visibility1801 respects visibility1802 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11803 behaves like filter respects visibility1804 respects visibility1805 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11806 behaves like filter respects visibility1807 respects visibility1808 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11809 behaves like filter respects visibility1810 respects visibility1811 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11812 behaves like filter respects visibility1813 respects visibility1814 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01815 behaves like filter respects visibility1816 respects visibility1817 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11818 behaves like filter respects visibility1819 respects visibility1820 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11821 behaves like filter respects visibility1822 respects visibility1823 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01824 behaves like filter respects visibility1825 respects visibility1826 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01827 behaves like filter respects visibility1828 respects visibility1829 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01830 behaves like filter respects visibility1831 respects visibility1832 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01833 behaves like filter respects visibility1834 respects visibility1835 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01836 behaves like filter respects visibility1837 respects visibility1838 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01839 behaves like filter respects visibility1840 respects visibility1841 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11842 behaves like filter respects visibility1843 respects visibility1844 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11845 behaves like filter respects visibility1846 respects visibility1847 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11848 behaves like filter respects visibility1849 respects visibility1850 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11851 behaves like filter respects visibility1852 respects visibility1853 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11854 behaves like filter respects visibility1855 respects visibility1856 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01857 behaves like filter respects visibility1858 respects visibility1859 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11860 behaves like filter respects visibility1861 respects visibility1862 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01863 behaves like filter respects visibility1864 respects visibility1865 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11866 behaves like filter respects visibility1867 respects visibility1868 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11869 behaves like filter respects visibility1870 respects visibility1871 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01872 behaves like filter respects visibility1873 respects visibility1874 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01875 behaves like filter respects visibility1876 respects visibility1877 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01878 behaves like filter respects visibility1879 respects visibility1880 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01881 behaves like filter respects visibility1882 respects visibility1883 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01884 behaves like filter respects visibility1885 respects visibility1886 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01887 behaves like filter respects visibility1888 respects visibility1889 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11890 behaves like filter respects visibility1891 respects visibility1892 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01893 behaves like filter respects visibility1894 respects visibility1895 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11896 behaves like filter respects visibility1897 respects visibility1898 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11899 behaves like filter respects visibility1900 respects visibility1901 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01902 behaves like filter respects visibility1903 respects visibility1904 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01905 behaves like filter respects visibility1906 respects visibility1907 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01908 behaves like filter respects visibility1909 respects visibility1910 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01911 behaves like filter respects visibility1912 respects visibility1913 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01914 behaves like filter respects visibility1915 respects visibility1916 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01917 behaves like filter respects visibility1918 respects visibility1919 with feature code1920 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11921 behaves like filter respects visibility1922 respects visibility1923 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11924 behaves like filter respects visibility1925 respects visibility1926 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11927 behaves like filter respects visibility1928 respects visibility1929 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11930 behaves like filter respects visibility1931 respects visibility1932 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11933 behaves like filter respects visibility1934 respects visibility1935 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11936 behaves like filter respects visibility1937 respects visibility1938 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11939 behaves like filter respects visibility1940 respects visibility1941 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01942 behaves like filter respects visibility1943 respects visibility1944 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11945 behaves like filter respects visibility1946 respects visibility1947 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11948 behaves like filter respects visibility1949 respects visibility1950 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01951 behaves like filter respects visibility1952 respects visibility1953 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01954 behaves like filter respects visibility1955 respects visibility1956 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01957 behaves like filter respects visibility1958 respects visibility1959 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01960 behaves like filter respects visibility1961 respects visibility1962 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01963 behaves like filter respects visibility1964 respects visibility1965 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01966 behaves like filter respects visibility1967 respects visibility1968 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11969 behaves like filter respects visibility1970 respects visibility1971 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11972 behaves like filter respects visibility1973 respects visibility1974 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11975 behaves like filter respects visibility1976 respects visibility1977 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11978 behaves like filter respects visibility1979 respects visibility1980 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11981 behaves like filter respects visibility1982 respects visibility1983 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01984 behaves like filter respects visibility1985 respects visibility1986 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11987 behaves like filter respects visibility1988 respects visibility1989 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01990 behaves like filter respects visibility1991 respects visibility1992 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11993 behaves like filter respects visibility1994 respects visibility1995 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11996 behaves like filter respects visibility1997 respects visibility1998 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01999 behaves like filter respects visibility2000 respects visibility2001 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 02002 behaves like filter respects visibility2003 respects visibility2004 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 02005 behaves like filter respects visibility2006 respects visibility2007 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 02008 behaves like filter respects visibility2009 respects visibility2010 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 02011 behaves like filter respects visibility2012 respects visibility2013 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 02014 behaves like filter respects visibility2015 respects visibility2016 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 12017 behaves like filter respects visibility2018 respects visibility2019 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 02020 behaves like filter respects visibility2021 respects visibility2022 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 12023 behaves like filter respects visibility2024 respects visibility2025 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 02026 behaves like filter respects visibility2027 respects visibility2028 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 02029 behaves like filter respects visibility2030 respects visibility2031 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 02032 behaves like filter respects visibility2033 respects visibility2034 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 02035 behaves like filter respects visibility2036 respects visibility2037 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 02038 behaves like filter respects visibility2039 respects visibility2040 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 02041 behaves like filter respects visibility2042 respects visibility2043 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 02044 behaves like filter respects visibility2045 respects visibility2046 .wrap_with_cte2047 wrapped query matches original2048 #remove_private_deploy_keys2049 for a private deploy key2050 when the key is not linked to another project2051 removes the key2052 when the key is linked to another project2053 does not remove the key2054 for a public deploy key2055 does not remove the key2056 #remove_export2057 removes the export2058 with export2059 #export_file_exists? returns true2060 #export_archive_exists? returns false2061 #forks_count2062 returns the number of forks2063 #git_transfer_in_progress?2064 project_reference_counter: 0, wiki_reference_counter: 0, design_reference_counter: 0, result: false2065 is expected to equal false2066 project_reference_counter: 2, wiki_reference_counter: 0, design_reference_counter: 0, result: true2067 is expected to equal true2068 project_reference_counter: 0, wiki_reference_counter: 2, design_reference_counter: 0, result: true2069 is expected to equal true2070 project_reference_counter: 0, wiki_reference_counter: 0, design_reference_counter: 2, result: true2071 is expected to equal true2072 legacy storage2073 #base_dir2074 returns base_dir based on namespace only2075 #disk_path2076 returns disk_path based on namespace and project path2077 #legacy_storage?2078 returns true when storage_version is nil2079 returns true when the storage_version is 02080 #hashed_storage?2081 returns false2082 hashed storage2083 #legacy_storage?2084 returns false2085 #hashed_storage?2086 returns true if rolled out2087 returns false when not rolled out yet2088 #base_dir2089 returns base_dir based on hash of project id2090 #disk_path2091 returns disk_path based on hash of project id2092 #has_ci?2093 when has .gitlab-ci.yml2094 CI is available2095 when there is no .gitlab-ci.yml2096 CI is available2097 when auto devops is disabled2098 CI is not available2099 #predefined_project_variables2100 is expected to include nil2101 when ci config path is overridden2102 is expected to include nil2103 #dependency_proxy_variables2104 when dependency_proxy is enabled2105 contains the downcased name2106 when dependency_proxy is disabled2107 is expected to be empty2108 #auto_devops_enabled?2109 when explicitly enabled2110 is expected to be truthy2111 when explicitly disabled2112 is expected to be falsey2113 when enabled in settings2114 is expected to be truthy2115 when disabled in settings2116 is expected to be falsey2117 when explicitly enabled2118 is expected to be truthy2119 when explicitly disabled2120 is expected to be falsey2121 when force_autodevops_on_by_default is enabled for the project2122 is expected to be truthy2123 with group parents2124 when enabled on parent2125 when auto devops instance enabled2126 is expected to be truthy2127 when auto devops instance disabled2128 is expected to be truthy2129 when disabled on parent2130 when auto devops instance enabled2131 is expected to be falsy2132 when auto devops instance disabled2133 is expected to be falsy2134 when enabled on root parent2135 when auto devops instance enabled2136 is expected to be truthy2137 when auto devops instance disabled2138 is expected to be truthy2139 when explicitly disabled on parent2140 is expected to be falsy2141 when disabled on root parent2142 when auto devops instance enabled2143 is expected to be falsy2144 when auto devops instance disabled2145 is expected to be falsy2146 when explicitly disabled on parent2147 is expected to be falsy2148 #has_auto_devops_implicitly_enabled?2149 when disabled in settings2150 does not have auto devops implicitly disabled2151 when enabled in settings2152 auto devops is implicitly disabled2153 when explicitly disabled2154 does not have auto devops implicitly disabled2155 when explicitly enabled2156 does not have auto devops implicitly disabled2157 when enabled on group2158 has auto devops implicitly enabled2159 when enabled on parent group2160 has auto devops implicitly enabled2161 #has_auto_devops_implicitly_disabled?2162 when explicitly disabled2163 does not have auto devops implicitly disabled2164 when explicitly enabled2165 does not have auto devops implicitly disabled2166 when enabled in settings2167 does not have auto devops implicitly disabled2168 when disabled in settings2169 auto devops is implicitly disabled2170 when force_autodevops_on_by_default is enabled for the project2171 does not have auto devops implicitly disabled2172 when disabled on group2173 has auto devops implicitly disabled2174 when disabled on parent group2175 has auto devops implicitly disabled2176 #api_variables2177 exposes API v4 URL2178 exposes API GraphQL URL2179 contains a URL variable for every supported API version2180 #latest_successful_builds_for2181 without a ref2182 returns a pipeline for the default branch2183 with the ref set to the default branch2184 returns a pipeline for the default branch2185 with a ref that is not the default branch2186 returns the latest successful pipeline for the given ref2187 #check_repository_path_availability2188 when the repository already exists2189 returns false when repository already exists2190 when the repository does not exist2191 returns false when repository already exists2192 skips gitlab-shell exists?2193 #latest_successful_pipeline_for_default_branch2194 memoizes and returns the latest successful pipeline for the default branch2195 #after_import2196 runs the correct hooks2197 project authorizations refresh2198 updates user authorizations2199 branch protection2200 does not protect when branch protection is disabled2201 gives developer access to push when branch protection is set to 'developers can push'2202 gives developer access to merge when branch protection is set to 'developers can merge'2203 protects default branch2204 project target platforms detection2205 calls enqueue_record_project_target_platforms2206 #update_project_counter_caches2207 updates all project counter caches2208 #set_full_path2209 writes full path in .git/config when key is missing2210 updates full path in .git/config when key is present2211 does not raise an error with an empty repository2212 #default_branch2213 with default_branch_name2214 instance_branch: "", root_group_branch: nil, project_group_branch: nil, project_branch: nil2215 is expected to eq nil2216 instance_branch: nil, root_group_branch: nil, project_group_branch: nil, project_branch: nil2217 is expected to eq nil2218 instance_branch: "main", root_group_branch: nil, project_group_branch: nil, project_branch: "main"2219 is expected to eq "main"2220 instance_branch: "main", root_group_branch: "root_branch", project_group_branch: nil, project_branch: "root_branch"2221 is expected to eq "root_branch"2222 instance_branch: "main", root_group_branch: "root_branch", project_group_branch: "group_branch", project_branch: "group_branch"2223 is expected to eq "group_branch"2224 #to_ability_name2225 returns project2226 #execute_hooks2227 executes active projects hooks with the specified scope2228 does not execute project hooks that dont match the specified scope2229 does not execute project hooks which are not active2230 executes hooks which were backed off and are no longer backed off2231 executes the system hooks with the specified scope2232 executes the system hooks when inside a transaction2233 #execute_integrations2234 executes integrations with the specified scope2235 does not execute integration that don't match the specified scope2236 does not trigger extra queries when called multiple times2237 with a CI integration2238 executes the integrations2239 and skipping ci2240 does not execute ci integrations2241 #has_active_hooks?2242 is expected to eq false2243 returns true when a matching push hook exists2244 returns true when a matching system hook exists2245 returns true when a plugin exists2246 with :emoji_hooks scope2247 returns true when a matching emoji hook exists2248 #has_active_integrations?2249 is expected to eq false2250 returns true when a matching service exists2251 caches matching integrations2252 #badges2253 returns the project and the project group badges2254 with nested_groups2255 returns the project and the project nested groups badges2256 with cross internal project merge requests2257 does not endlessly loop for internal projects with MRs to each other2258 #branch_allows_collaboration?2259 when there are open merge requests that have their source/target branches point to each other2260 when user is a developer2261 behaves like successful check2262 does not go into an infinite loop2263 when user is a reporter2264 behaves like successful check2265 does not go into an infinite loop2266 when user is a guest2267 behaves like successful check2268 does not go into an infinite loop2269 with cross project merge requests2270 #merge_requests_allowing_push_to_user2271 returns open merge requests for which the user has developer access to the target project2272 does not include merge requests for guest users2273 does not include the merge request for other users2274 is empty when no user is passed2275 when the merge requests are closed2276 does not include closed merge requests2277 #any_branch_allows_collaboration?2278 when there is an open merge request allowing collaboration2279 allows access2280 when the merge request author is not allowed to push_code2281 returns false2282 when the merge request is closed2283 returns false2284 when the merge request is merged2285 returns false2286 #branch_allows_collaboration?2287 allows access if the user can merge the merge request2288 does not allow guest users access2289 does not allow access to branches for which the merge request was closed2290 does not allow access if the user cannot merge the merge request2291 when the requeststore is active2292 only queries per project across instances2293 when the merge request author is not allowed to push_code2294 returns false2295 #external_authorization_classification_label2296 falls back to the default when none is configured2297 returns the classification label if it was configured on the project2298 #pages_https_only?2299 when HTTPS pages are disabled2300 is expected not to be pages https only2301 when HTTPS pages are enabled2302 is expected to be pages https only2303 #pages_https_only? validation2304 when no domains are associated2305 is expected to be valid2306 when domains including keys and certificates are associated2307 is expected to be valid2308 when domains including no keys or certificates are associated2309 is expected not to be valid2310 #toggle_ci_cd_settings!2311 toggles the value on #settings2312 #gitlab_deploy_token2313 when there is a gitlab deploy token associated2314 is expected to eq #<DeployToken id: 7, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-10...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2315 when there is no a gitlab deploy token associated2316 is expected to be nil2317 when there is a gitlab deploy token associated but is has been revoked2318 is expected to be nil2319 when there is a gitlab deploy token associated but it is expired2320 is expected to be nil2321 when there is a deploy token associated with a different name2322 is expected to be nil2323 when there is a deploy token associated to a different project2324 is expected to be nil2325 when the project group has a gitlab deploy token associated2326 is expected to eq #<DeployToken id: 12, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-1...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2327 when the project and its group has a gitlab deploy token associated2328 is expected to eq #<DeployToken id: 13, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-1...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2329 with uploads2330 behaves like model with uploads2331 .destroy2332 with mounted uploader2333 deletes remote uploads2334 with not mounted uploads2335 with local files2336 deletes any FileUploader uploads which are not mounted2337 deletes local files2338 with remote files2339 deletes any FileUploader uploads which are not mounted2340 deletes remote files2341 #members_among2342 when users is an Array2343 returns project members among the users2344 maintains input order2345 returns empty array if users is empty2346 when users is a relation2347 returns project members among the users2348 returns empty relation if users is empty2349 #find_or_initialize_integrations2350 avoids N+1 database queries2351 avoids N+1 database queries with more available integrations2352 with disabled integrations2353 returns only enabled integrations sorted2354 #disabled_integrations2355 is expected to include "gitlab_slack_application"2356 is expected not to include "slack_slash_commands"2357 when slack_app_enabled setting is enabled2358 is expected to include "slack_slash_commands"2359 is expected not to include "gitlab_slack_application"2360 when Rails.env.development?2361 is expected not to include "slack_slash_commands"2362 is expected not to include "gitlab_slack_application"2363 #find_or_initialize_integration2364 avoids N+1 database queries2365 returns nil if integration is disabled2366 returns nil if integration does not exist2367 with an existing integration2368 retrieves the integration2369 with an instance-level integration2370 builds the integration from the instance integration2371 without an existing integration or instance-level2372 builds the integration2373 .for_group2374 returns the projects for a given group2375 .for_group_and_its_ancestor_groups2376 returns projects for group and its ancestors2377 .pending_data_repair_analysis2378 returns projects that are not in ContainerRegistry::DataRepairDetail2379 .with_package_registry_enabled2380 returns projects with the package registry enabled2381 .deployments2382 when there is a deployment record with created status2383 does not return the record2384 when there is a deployment record with running status2385 does not return the record2386 when there is a deployment record with success status2387 returns the record2388 #snippets_visible?2389 returns true when a logged in user can read snippets2390 returns true when an anonymous user can read snippets2391 returns false when a user can not read snippets2392 #all_clusters2393 returns project level cluster2394 project belongs to a group2395 returns clusters for groups of this project2396 project is hosted on instance with integrated cluster2397 returns all available clusters for this project2398 #object_pool_params2399 when the objects cannot be pooled2400 is expected to be empty2401 when a pool is created2402 returns that pool repository2403 #git_objects_poolable?2404 when not using hashed storage2405 is expected not to be git objects poolable2406 when the project is private2407 is expected not to be git objects poolable2408 when the project is public2409 is expected to be git objects poolable2410 when the project is internal2411 is expected to be git objects poolable2412 when objects are poolable2413 is expected to be git objects poolable2414 #swap_pool_repository!2415 moves project to the new pool repository2416 when feature flag replicate_object_pool_on_move is disabled2417 behaves like no pool repository swap2418 does not change pool repository for the project2419 when repository does not exist2420 behaves like no pool repository swap2421 does not change pool repository for the project2422 when project does not have a pool repository2423 behaves like no pool repository swap2424 does not change pool repository for the project2425 when project pool is on the same shard as repository2426 behaves like no pool repository swap2427 does not change pool repository for the project2428 when pool repository for shard is missing2429 raises record not found error2430 when pool repository has a different disk path2431 raises record not found error2432 #leave_pool_repository2433 removes the membership and disconnects alternates2434 when the project is pending delete2435 removes the membership and does not disconnect alternates2436 #link_pool_repository2437 links pool repository to project repository2438 when pool repository is missing2439 does not link anything2440 when pool repository is on the different shard as project repository2441 does not link anything2442 when feature flag replicate_object_pool_on_move is disabled2443 links pool repository to project repository2444 #check_personal_projects_limit2445 when creating a project for a group2446 does nothing2447 when the user is not allowed to create a personal project2448 when the project limit is zero2449 adds a validation error2450 when the project limit is greater than zero2451 adds a validation error2452 when the user is allowed to create personal projects2453 does nothing2454 validation #changing_shared_runners_enabled_is_allowed2455 shared_runners_setting: :shared_runners_enabled, project_shared_runners_enabled: true, valid_record: true2456 validates the configuration2457 shared_runners_setting: :shared_runners_enabled, project_shared_runners_enabled: false, valid_record: true2458 validates the configuration2459 shared_runners_setting: :shared_runners_disabled_and_overridable, project_shared_runners_enabled: true, valid_record: true2460 validates the configuration2461 shared_runners_setting: :shared_runners_disabled_and_overridable, project_shared_runners_enabled: false, valid_record: true2462 validates the configuration2463 shared_runners_setting: :shared_runners_disabled_and_unoverridable, project_shared_runners_enabled: true, valid_record: false2464 validates the configuration2465 shared_runners_setting: :shared_runners_disabled_and_unoverridable, project_shared_runners_enabled: false, valid_record: true2466 validates the configuration2467 #mark_pages_onboarding_complete2468 creates new record and sets onboarding_complete to true if none exists yet2469 overrides an existing setting2470 #mark_pages_as_deployed2471 works when artifacts_archive is missing2472 creates new record and sets deployed to true if none exists yet2473 updates the existing record and sets deployed to true and records artifact archive2474 #mark_pages_as_not_deployed2475 creates new record and sets deployed to false if none exists yet2476 updates the existing record and sets deployed to false and clears artifacts_archive2477 #update_pages_deployment!2478 creates new metadata record if none exists yet and sets deployment2479 updates the existing metadara record with deployment2480 #set_first_pages_deployment!2481 creates new metadata record if none exists yet and sets deployment2482 updates the existing metadara record with deployment2483 only updates metadata for this project2484 does nothing if metadata already references some deployment2485 marks project as not deployed if deployment is nil2486 #has_pool_repository?2487 returns false when it does not have a pool repository2488 returns true when it has a pool repository2489 #access_request_approvers_to_be_notified2490 for a personal project2491 behaves like returns active, non_invited, non_requested owners/maintainers of the project2492 is expected to contain exactly #<ProjectMember id: 705, access_level: 40, source_id: 587, source_type: "Project", user_id: 359, noti...invite_email_success: true, member_namespace_id: 1086, member_role_id: nil, expiry_notified_at: nil> and #<ProjectMember id: 704, access_level: 50, source_id: 587, source_type: "Project", user_id: 1, notifi...invite_email_success: true, member_namespace_id: 1086, member_role_id: nil, expiry_notified_at: nil>2493 for a project in a group2494 returns a maximum of ten maintainers/owners of the project in recent_sign_in descending order2495 behaves like returns active, non_invited, non_requested owners/maintainers of the project2496 is expected to contain exactly #<ProjectMember id: 739, access_level: 40, source_id: 593, source_type: "Project", user_id: 378, noti...invite_email_success: true, member_namespace_id: 1100, member_role_id: nil, expiry_notified_at: nil> and #<ProjectMember id: 716, access_level: 50, source_id: 593, source_type: "Project", user_id: 366, noti...invite_email_success: true, member_namespace_id: 1100, member_role_id: nil, expiry_notified_at: nil>2497 .with_pages_deployed2498 returns only projects that have pages deployed2499 .pages_metadata_not_migrated2500 returns only projects that have pages deployed2501 #pages_variables2502 returns the pages variables2503 returns the pages variables2504 #closest_setting2505 when setting is of non-boolean type2506 global_setting: 100, group_setting: 200, project_setting: 300, result: 3002507 behaves like fetching closest setting2508 returns closest non-nil value2509 global_setting: 100, group_setting: 200, project_setting: nil, result: 2002510 behaves like fetching closest setting2511 returns closest non-nil value2512 global_setting: 100, group_setting: nil, project_setting: nil, result: 1002513 behaves like fetching closest setting2514 returns closest non-nil value2515 global_setting: nil, group_setting: nil, project_setting: nil, result: nil2516 behaves like fetching closest setting2517 returns closest non-nil value2518 when setting is of boolean type2519 global_setting: true, group_setting: true, project_setting: false, result: false2520 behaves like fetching closest setting2521 returns closest non-nil value2522 global_setting: true, group_setting: false, project_setting: nil, result: false2523 behaves like fetching closest setting2524 returns closest non-nil value2525 global_setting: true, group_setting: nil, project_setting: nil, result: true2526 behaves like fetching closest setting2527 returns closest non-nil value2528 #drop_visibility_level!2529 when has a group2530 when the group `visibility_level` is more strict2531 sets `visibility_level` value from the group2532 when the group `visibility_level` is less strict2533 does not change the value of the `visibility_level` field2534 when `restricted_visibility_levels` of the GitLab instance exist2535 when `visibility_level` is included into `restricted_visibility_levels`2536 sets `visibility_level` value to `PRIVATE`2537 when `restricted_visibility_levels` does not include `visibility_level`2538 does not change the value of the `visibility_level` field2539 #jira_subscription_exists?2540 jira connect subscription exists2541 is expected to eq true2542 with_issues_or_mrs_available_for_user2543 returns correct projects2544 #limited_protected_branches2545 returns limited number of protected branches based on specified limit2546 #group_protected_branches2547 returns protected branches of the group2548 when project belongs to namespace2549 returns empty relation2550 #all_protected_branches2551 when feature flag `group_protected_branches` enabled2552 return all protected branches2553 when feature flag `group_protected_branches` disabled2554 return only project-level protected branches2555 #lfs_objects_oids2556 when project has associated LFS objects2557 returns OIDs of LFS objects2558 lfs_objects_projects associations are deleted along with project2559 lfs_objects associations are unchanged when the assicated project is removed2560 and there are specified oids2561 returns OIDs of LFS objects that match specified oids2562 when project has no associated LFS objects2563 returns empty array2564 #prometheus_integration_active?2565 when project has an activated prometheus integration2566 is expected to be truthy2567 when project has an inactive prometheus integration2568 the integration is marked as inactive2569 #add_export_job2570 when project storage_size does not exceed the application setting max_export_size2571 starts project export worker2572 when project storage_size exceeds the application setting max_export_size2573 raises Project::ExportLimitExceeded2574 when application setting max_export_size is not set2575 starts project export worker2576 #export_in_progress?2577 when project export is enqueued2578 is expected to equal false2579 when project export is in progress2580 is expected to equal true2581 when project export is completed2582 is expected to equal false2583 #export_status2584 when project export is enqueued2585 is expected to eq :queued2586 when project export is in progress2587 is expected to eq :started2588 when project export is completed2589 is expected to eq :finished2590 when project export is being regenerated2591 is expected to eq :regeneration_in_progress2592 with Debian Distributions2593 behaves like model with Debian distributions2594 removes distribution files on removal2595 #environments_for_scope2596 retrieves all project environments when using the * wildcard2597 retrieves a specific project environment when using the name of that environment2598 #latest_jira_import2599 when no jira imports2600 returns nil2601 when single jira import2602 returns the jira import2603 when multiple jira imports2604 returns latest jira import by created_at2605 #packages_enabled2606 is expected to equal true2607 when packages_enabled is enabled2608 project_visibility: 0, expected_result: 102609 set package_registry_access_level to correct value2610 project_visibility: 10, expected_result: 202611 set package_registry_access_level to correct value2612 project_visibility: 20, expected_result: 302613 set package_registry_access_level to correct value2614 when packages_enabled is disabled2615 set package_registry_access_level to DISABLED2616 set package_registry_access_level to DISABLED2617 set package_registry_access_level to DISABLED2618 #related_group_ids2619 when associated with a namespace2620 only includes linked groups2621 when associated with a group2622 includes self, ancestors and linked groups2623 #has_namespaced_npm_packages?2624 with scope of the namespace path2625 is expected to equal true2626 without scope of the namespace path2627 is expected to equal false2628 without packages2629 is expected to equal false2630 #package_already_taken?2631 within the package project2632 package_name: "@test/bar", package_version: "1.2.3", expected_result: false2633 is expected to eq false2634 package_name: "@test/bar", package_version: "5.5.5", expected_result: false2635 is expected to eq false2636 package_name: "@test/foo", package_version: "1.2.3", expected_result: false2637 is expected to eq false2638 package_name: "@test/foo", package_version: "5.5.5", expected_result: false2639 is expected to eq false2640 within a different project2641 package_name: "@test/bar", package_version: "1.2.3", expected_result: false2642 is expected to eq false2643 package_name: "@test/bar", package_version: "5.5.5", expected_result: false2644 is expected to eq false2645 package_name: "@test/foo", package_version: "1.2.3", expected_result: true2646 is expected to eq true2647 package_name: "@test/foo", package_version: "5.5.5", expected_result: false2648 is expected to eq false2649 for a different package type2650 returns false2651 with a pending_destruction package2652 package_name: "@test/bar", package_version: "1.2.3", expected_result: false2653 is expected to eq false2654 package_name: "@test/bar", package_version: "5.5.5", expected_result: false2655 is expected to eq false2656 package_name: "@test/foo", package_version: "1.2.3", expected_result: false2657 is expected to eq false2658 package_name: "@test/foo", package_version: "5.5.5", expected_result: false2659 is expected to eq false2660 #design_management_enabled?2661 lfs_enabled: false, hashed_storage_enabled: false, expectation: false2662 is expected to equal false2663 lfs_enabled: true, hashed_storage_enabled: false, expectation: false2664 is expected to equal false2665 lfs_enabled: false, hashed_storage_enabled: true, expectation: false2666 is expected to equal false2667 lfs_enabled: true, hashed_storage_enabled: true, expectation: true2668 is expected to equal true2669 #parent_loaded?2670 is false when the parent is not loaded2671 is true when the parent is loaded2672 #bots2673 is expected to contain exactly #<User id:402 @user386>2674 is expected not to include #<User id:403 @user387>2675 #enabled_group_deploy_keys2676 when a project does not have a group2677 is expected to be empty2678 when a project has a parent group2679 and this group has a group deploy key enabled2680 is expected to contain exactly #<GroupDeployKey id: 1, user_id: 404, created_at: "2023-10-20 08:38:44.388206095 +0000", updated_at: ...3d:83:cc:38:ae", fingerprint_sha256: "OFcN76nNf5XiDy4GpDJ+T7kjzzzK3E70tbHFpqP74WQ", usage_type: nil>2681 and this group has parent group which also has a group deploy key enabled2682 returns both group deploy keys2683 and another group has a group deploy key enabled2684 does not return this group deploy key2685 #activity_path2686 returns the project activity_path2687 #default_branch_or_main2688 returns default branch2689 when default branch is nil2690 returns Gitlab::DefaultBranch.value2691 topics2692 topic_list returns correct string array2693 topics returns correct topic records2694 topic_list=2695 set topics if only the order is changed2696 does not persist topics before project is saved2697 does not update topics if project is not valid2698 does not add new topic if name is not unique (case insensitive)2699 topic_list: ["topicA", "topicB"], expected_result: ["topicA", "topicB"]2700 set topics2701 topic_list: ["topicB", "topicA"], expected_result: ["topicB", "topicA"]2702 set topics2703 topic_list: [" topicC ", " topicD "], expected_result: ["topicC", "topicD"]2704 set topics2705 topic_list: ["topicE", "topicF", "topicE"], expected_result: ["topicE", "topicF"]2706 set topics2707 topic_list: ["topicE ", "topicF", " topicE"], expected_result: ["topicE", "topicF"]2708 set topics2709 topic_list: "topicA, topicB", expected_result: ["topicA", "topicB"]2710 set topics2711 topic_list: "topicB, topicA", expected_result: ["topicB", "topicA"]2712 set topics2713 topic_list: " topicC , topicD ", expected_result: ["topicC", "topicD"]2714 set topics2715 topic_list: "topicE, topicF, topicE", expected_result: ["topicE", "topicF"]2716 set topics2717 topic_list: "topicE , topicF, topicE", expected_result: ["topicE", "topicF"]2718 set topics2719 public topics counter2720 initial_visibility: private, new_visibility: nil, new_topic_list: "t2, t3", expected_count_changes: [0, 0, 0]2721 increments or decrements counters of topics2722 initial_visibility: internal, new_visibility: nil, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2723 increments or decrements counters of topics2724 initial_visibility: public, new_visibility: nil, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2725 increments or decrements counters of topics2726 initial_visibility: private, new_visibility: public, new_topic_list: nil, expected_count_changes: [1, 1, 0]2727 increments or decrements counters of topics2728 initial_visibility: private, new_visibility: internal, new_topic_list: nil, expected_count_changes: [1, 1, 0]2729 increments or decrements counters of topics2730 initial_visibility: private, new_visibility: private, new_topic_list: nil, expected_count_changes: [0, 0, 0]2731 increments or decrements counters of topics2732 initial_visibility: internal, new_visibility: public, new_topic_list: nil, expected_count_changes: [0, 0, 0]2733 increments or decrements counters of topics2734 initial_visibility: internal, new_visibility: internal, new_topic_list: nil, expected_count_changes: [0, 0, 0]2735 increments or decrements counters of topics2736 initial_visibility: internal, new_visibility: private, new_topic_list: nil, expected_count_changes: [-1, -1, 0]2737 increments or decrements counters of topics2738 initial_visibility: public, new_visibility: public, new_topic_list: nil, expected_count_changes: [0, 0, 0]2739 increments or decrements counters of topics2740 initial_visibility: public, new_visibility: internal, new_topic_list: nil, expected_count_changes: [0, 0, 0]2741 increments or decrements counters of topics2742 initial_visibility: public, new_visibility: private, new_topic_list: nil, expected_count_changes: [-1, -1, 0]2743 increments or decrements counters of topics2744 initial_visibility: private, new_visibility: public, new_topic_list: "t2, t3", expected_count_changes: [0, 1, 1]2745 increments or decrements counters of topics2746 initial_visibility: private, new_visibility: internal, new_topic_list: "t2, t3", expected_count_changes: [0, 1, 1]2747 increments or decrements counters of topics2748 initial_visibility: private, new_visibility: private, new_topic_list: "t2, t3", expected_count_changes: [0, 0, 0]2749 increments or decrements counters of topics2750 initial_visibility: internal, new_visibility: public, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2751 increments or decrements counters of topics2752 initial_visibility: internal, new_visibility: internal, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2753 increments or decrements counters of topics2754 initial_visibility: internal, new_visibility: private, new_topic_list: "t2, t3", expected_count_changes: [-1, -1, 0]2755 increments or decrements counters of topics2756 initial_visibility: public, new_visibility: public, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2757 increments or decrements counters of topics2758 initial_visibility: public, new_visibility: internal, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2759 increments or decrements counters of topics2760 initial_visibility: public, new_visibility: private, new_topic_list: "t2, t3", expected_count_changes: [-1, -1, 0]2761 increments or decrements counters of topics2762 #all_runners2763 behaves like all_runners2764 when shared runners are enabled for project2765 returns a list with all runners2766 when shared runners are disabled for project2767 returns a list without shared runners2768 when group runners are enabled for project2769 returns a list with all runners2770 when group runners are disabled for project2771 returns a list without group runners2772 #all_available_runners2773 behaves like all_runners2774 when shared runners are enabled for project2775 returns a list with all runners2776 when shared runners are disabled for project2777 returns a list without shared runners2778 when group runners are enabled for project2779 returns a list with all runners2780 when group runners are disabled for project2781 returns a list without group runners2782 #enforced_runner_token_expiration_interval and #effective_runner_token_expiration_interval2783 when there is no interval2784 behaves like no enforced expiration interval2785 is expected to be nil2786 behaves like no effective expiration interval2787 is expected to be nil2788 when there is a project interval2789 behaves like no enforced expiration interval2790 is expected to be nil2791 behaves like effective expiration interval2792 is expected to eq 3 days2793 when there is a site-wide enforced shared interval2794 behaves like no enforced expiration interval2795 is expected to be nil2796 behaves like no effective expiration interval2797 is expected to be nil2798 when there is a site-wide enforced group interval2799 behaves like no enforced expiration interval2800 is expected to be nil2801 behaves like no effective expiration interval2802 is expected to be nil2803 when there is a site-wide enforced project interval2804 behaves like enforced expiration interval2805 is expected to eq 5 days2806 behaves like effective expiration interval2807 is expected to eq 5 days2808 when there is a group-enforced group interval2809 behaves like no enforced expiration interval2810 is expected to be nil2811 behaves like no effective expiration interval2812 is expected to be nil2813 when there is a group-enforced subgroup interval2814 behaves like no enforced expiration interval2815 is expected to be nil2816 behaves like no effective expiration interval2817 is expected to be nil2818 when there is an owner group-enforced project interval2819 behaves like enforced expiration interval2820 is expected to eq 4 days2821 behaves like effective expiration interval2822 is expected to eq 4 days2823 when there is a grandparent group-enforced interval2824 behaves like enforced expiration interval2825 is expected to eq 3 days2826 behaves like effective expiration interval2827 is expected to eq 3 days2828 when there is a parent group-enforced interval overridden by group-enforced interval2829 behaves like enforced expiration interval2830 is expected to eq 4 days2831 behaves like effective expiration interval2832 is expected to eq 4 days2833 when site-wide enforced interval overrides project interval2834 behaves like enforced expiration interval2835 is expected to eq 3 days2836 behaves like effective expiration interval2837 is expected to eq 3 days2838 when project interval overrides site-wide enforced interval2839 has human-readable expiration intervals2840 behaves like enforced expiration interval2841 is expected to eq 5 days2842 behaves like effective expiration interval2843 is expected to eq 4 days2844 when site-wide enforced interval overrides group-enforced interval2845 behaves like enforced expiration interval2846 is expected to eq 3 days2847 behaves like effective expiration interval2848 is expected to eq 3 days2849 when group-enforced interval overrides site-wide enforced interval2850 behaves like enforced expiration interval2851 is expected to eq 4 days2852 behaves like effective expiration interval2853 is expected to eq 4 days2854 when group-enforced interval overrides project interval2855 behaves like enforced expiration interval2856 is expected to eq 3 days2857 behaves like effective expiration interval2858 is expected to eq 3 days2859 when project interval overrides group-enforced interval2860 behaves like enforced expiration interval2861 is expected to eq 5 days2862 behaves like effective expiration interval2863 is expected to eq 4 days2864 when there is an enforced project interval in an unrelated group2865 behaves like no enforced expiration interval2866 is expected to be nil2867 behaves like no effective expiration interval2868 is expected to be nil2869 when there is an enforced project interval in a subgroup2870 behaves like no enforced expiration interval2871 is expected to be nil2872 behaves like no effective expiration interval2873 is expected to be nil2874 behaves like it has loose foreign keys2875 has at least one loose foreign key definition2876 has the deletion trigger present2877 records record deletions2878 cleans up record deletions2879 Projects::SyncEvent2880 when creating the project2881 creates a projects_sync_event record2882 enqueues ProcessProjectSyncEventsWorker2883 when updating project namespace_id2884 creates a projects_sync_event record2885 enqueues ProcessProjectSyncEventsWorker2886 when updating project other attribute2887 creates a projects_sync_event record2888 in the same transaction2889 when updating different namespace_id2890 creates two projects_sync_event records2891 when updating the same namespace_id2892 creates one projects_sync_event record2893 .not_hidden2894 lists projects that are not hidden2895 #pending_delete_or_hidden?2896 pending_delete: true, hidden: false, expected_result: true2897 returns true if project is pending delete or hidden2898 pending_delete: true, hidden: true, expected_result: true2899 returns true if project is pending delete or hidden2900 pending_delete: false, hidden: true, expected_result: true2901 returns true if project is pending delete or hidden2902 pending_delete: false, hidden: false, expected_result: false2903 returns true if project is pending delete or hidden2904 #work_items_feature_flag_enabled?2905 behaves like checks parent group feature flag2906 when feature flag is disabled globally2907 is expected to be falsey2908 when feature flag is enabled globally2909 is expected to be truthy2910 when feature flag is enabled for the root group2911 is expected to be truthy2912 when feature flag is enabled for the group2913 is expected to be truthy2914 when feature flag is enabled for the project2915 when project belongs to a group2916 is expected to be truthy2917 when project does not belong to a group2918 is expected to be truthy2919 #work_items_mvc_feature_flag_enabled?2920 behaves like checks parent group feature flag2921 when feature flag is disabled globally2922 is expected to be falsey2923 when feature flag is enabled globally2924 is expected to be truthy2925 when feature flag is enabled for the root group2926 is expected to be truthy2927 when feature flag is enabled for the group2928 is expected to be truthy2929 #work_items_mvc_2_feature_flag_enabled?2930 behaves like checks parent group feature flag2931 when feature flag is disabled globally2932 is expected to be falsey2933 when feature flag is enabled globally2934 is expected to be truthy2935 when feature flag is enabled for the root group2936 is expected to be truthy2937 when feature flag is enabled for the group2938 is expected to be truthy2939 serialization2940 behaves like blocks unsafe serialization2941 blocks as_json2942 blocks to_json2943 #enqueue_record_project_target_platforms2944 enqueues a Projects::RecordTargetPlatformsWorker2945 when not in gitlab.com2946 behaves like does not enqueue a Projects::RecordTargetPlatformsWorker2947 does not enqueue a Projects::RecordTargetPlatformsWorker2948 #inactive?2949 behaves like returns true if project is inactive2950 storage_size: 1048576, last_activity_at: Wed, 20 Sep 2023 08:29:52.547492726 UTC +00:00, expected_result: false2951 returns expected result2952 storage_size: 1048576, last_activity_at: Tue, 20 Oct 2020 08:29:52.547973176 UTC +00:00, expected_result: false2953 returns expected result2954 storage_size: 8388608, last_activity_at: Wed, 20 Sep 2023 08:29:52.548541256 UTC +00:00, expected_result: false2955 returns expected result2956 storage_size: 8388608, last_activity_at: Tue, 20 Oct 2020 08:29:52.548684956 UTC +00:00, expected_result: true2957 returns expected result2958 .inactive2959 returns projects that are inactive2960 #refreshing_build_artifacts_size?2961 when project has no existing refresh record2962 is expected to be falsey2963 when project has existing refresh record2964 and refresh has not yet started2965 is expected to eq false2966 and refresh has started2967 is expected to eq true2968 #group_group_links2969 with group project2970 returns group links of group2971 with personal project2972 returns none2973 #security_training_available?2974 returns false2975 #packages_policy_subject2976 returns wrapper2977 #destroy_deployment_by_id2978 will call fast_destroy_all on a specific deployment by id2979 #can_create_custom_domains?2980 when max custom domain setting is set to 02981 is expected to equal true2982 when max custom domain setting is not set to 02983 is expected to equal false2984 #can_suggest_reviewers?2985 is expected to equal false2986 #suggested_reviewers_available?2987 is expected to equal false2988 .cascading_with_parent_namespace2989 behaves like cascading settings2990 return self value when no parent2991 return self value when unlocked2992 still return self value when locked subgroup2993 still return unlocked value when locked group2994 behaves like cascading settings2995 return self value when no parent2996 return self value when unlocked2997 still return self value when locked subgroup2998 still return unlocked value when locked group2999 behaves like cascading settings3000 return self value when no parent3001 return self value when unlocked3002 still return self value when locked subgroup3003 still return unlocked value when locked group3004 #archived3005 is expected to be falsey3006 is expected to be truthy3007 #resolve_outdated_diff_discussions3008 is expected to be falsey3009 when set explicitly3010 is expected to be truthy3011 #only_allow_merge_if_all_discussions_are_resolved3012 is expected to be falsey3013 when set explicitly3014 is expected to be truthy3015 #remove_source_branch_after_merge3016 is expected to be truthy3017 when set explicitly3018 is expected to be falsey3019 .is_importing3020 returns projects that have import in progress3021 .without_created_and_owned_by_banned_user3022 when project creator is not banned3023 includes the project3024 when project creator is banned3025 when project creator is also an owner3026 excludes the project3027 when project creator is not an owner3028 includes the project3029 #created_and_owned_by_banned_user?3030 when creator is banned3031 is expected to eq false3032 when creator is an owner3033 is expected to eq true3034 when creator is not banned3035 is expected to eq false3036 when there is no creator3037 is expected to eq false3038 behaves like something that has web-hooks3039 #any_hook_failed?3040 when there are no hooks3041 is expected to eq false3042 when there are hooks3043 is expected to eq false3044 when there is a failed hook3045 is expected to eq true3046 #cache_web_hook_failure3047 when no value is passed3048 stores the return value of #any_hook_failed? and passes it back3049 when a value is passed3050 stores the value and passes it back3051 #get_web_hook_failure3052 when no value is stored3053 is expected to be nil3054 when stored as true3055 is expected to eq true3056 when stored as false3057 is expected to eq false3058 #fetch_web_hook_failure3059 when a value has not been stored3060 calls #any_hook_failed?3061 when a value has been stored3062 does not call #any_hook_failed?3063 deprecated project attributes3064 project_attr: :wiki_enabled, project_method: :wiki_enabled?, project_feature_attr: :wiki_access_level3065 delegates the attributes to project feature3066 sets the default value3067 project_attr: :builds_enabled, project_method: :builds_enabled?, project_feature_attr: :builds_access_level3068 delegates the attributes to project feature3069 sets the default value3070 project_attr: :merge_requests_enabled, project_method: :merge_requests_enabled?, project_feature_attr: :merge_requests_access_level3071 delegates the attributes to project feature3072 sets the default value3073 project_attr: :issues_enabled, project_method: :issues_enabled?, project_feature_attr: :issues_access_level3074 delegates the attributes to project feature3075 sets the default value3076 project_attr: :snippets_enabled, project_method: :snippets_enabled?, project_feature_attr: :snippets_access_level3077 delegates the attributes to project feature3078 sets the default value3079 #supports_lock_on_merge?3080 behaves like checks self (project) and root ancestor feature flag3081 when FF is enabled for the root group3082 is expected to be truthy3083 when FF is enabled for the group3084 is expected to be truthy3085 when FF is enabled for the project3086 is expected to be truthy3087 when FF is disabled globally3088 is expected to be falsey3089 when FF is enabled globally3090 is expected to be truthy3091 with loose foreign key on organization_id3092 behaves like cleanup by a loose foreign key3093 cleans up (delete or nullify) the model3094 with loose foreign key on projects.creator_id3095 behaves like cleanup by a loose foreign key3096 cleans up (delete or nullify) the model3097DeploymentsFinder3098 validation3099 when both updated_at and finished_at filters are specified3100 raises an error3101 when finished_at filter and id sorting3102 raises an error3103 when running status filter and finished_at sorting3104 raises an error3105 when finished_at filter with failed status filter3106 raises an error3107 when environment filter with non-project scope3108 raises an error3109 when status filter with mixed finished and upcoming statuses3110 raises an error3111 #execute3112 when project or group is missing3113 returns nothing3114 at project scope3115 filtering3116 when updated_at filters are specified3117 returns deployments with matched updated_at3118 when the environment name is specified3119 returns deployments for the given environment3120 when the environment ID is specified3121 returns deployments for the given environment3122 when the deployment status is specified3123 returns deployments for the given environment3124 when using an invalid deployment status3125 raises ArgumentError3126 ordering3127 order_by: "created_at", sort: "asc", ordered_deployments: [:deployment_1, :deployment_2, :deployment_3]3128 returns the deployments ordered3129 order_by: "created_at", sort: "desc", ordered_deployments: [:deployment_3, :deployment_2, :deployment_1]3130 returns the deployments ordered3131 order_by: "id", sort: "asc", ordered_deployments: [:deployment_1, :deployment_2, :deployment_3]3132 returns the deployments ordered3133 order_by: "id", sort: "desc", ordered_deployments: [:deployment_3, :deployment_2, :deployment_1]3134 returns the deployments ordered3135 order_by: "iid", sort: "asc", ordered_deployments: [:deployment_1, :deployment_2, :deployment_3]3136 returns the deployments ordered3137 order_by: "iid", sort: "desc", ordered_deployments: [:deployment_3, :deployment_2, :deployment_1]3138 returns the deployments ordered3139 order_by: "ref", sort: "asc", ordered_deployments: [:deployment_1, :deployment_2, :deployment_3]3140 returns the deployments ordered3141 order_by: "ref", sort: "desc", ordered_deployments: [:deployment_3, :deployment_2, :deployment_1]3142 returns the deployments ordered3143 order_by: "updated_at", sort: "asc", ordered_deployments: [:deployment_2, :deployment_3, :deployment_1]3144 returns the deployments ordered3145 order_by: "updated_at", sort: "desc", ordered_deployments: [:deployment_1, :deployment_3, :deployment_2]3146 returns the deployments ordered3147 order_by: "finished_at", sort: "asc", ordered_deployments: DeploymentsFinder::InefficientQueryError3148 returns the deployments ordered3149 order_by: "finished_at", sort: "desc", ordered_deployments: DeploymentsFinder::InefficientQueryError3150 returns the deployments ordered3151 order_by: "invalid", sort: "asc", ordered_deployments: [:deployment_1, :deployment_2, :deployment_3]3152 returns the deployments ordered3153 order_by: "iid", sort: "err", ordered_deployments: [:deployment_1, :deployment_2, :deployment_3]3154 returns the deployments ordered3155 transform `created_at` sorting to `id` sorting3156 sorts by only one column3157 sorts by `id`3158 transform `iid` sorting to `id` sorting3159 sorts by only one column3160 sorts by `id`3161 tie-breaker for `updated_at` sorting3162 sorts by two columns3163 adds `id` sorting as the second order column3164 uses the `id ASC` as tie-breaker when ordering3165 when sort direction is desc3166 uses the `id DESC` as tie-breaker when ordering3167 when `updated_at` is used for filtering without sorting by `updated_at`3168 raises an error3169 when filtering by finished time3170 when filtering by finished_after and finished_before3171 is expected to contain exactly #<Deployment id: 62, iid: 1, project_id: 740, environment_id: 72, ref: "master", tag: false, sha: "b8...shed_at: "2023-10-18 08:40:20.565485829 +0000", cluster_id: nil, deployable_id: 96, archived: false>3172 when the finished_before parameter is missing3173 is expected to contain exactly #<Deployment id: 65, iid: 1, project_id: 740, environment_id: 75, ref: "master", tag: false, sha: "b8...shed_at: "2023-10-18 08:40:22.893301242 +0000", cluster_id: nil, deployable_id: 99, archived: false> and #<Deployment id: 67, iid: 3, project_id: 740, environment_id: 77, ref: "master", tag: false, sha: "b8...hed_at: "2023-10-20 03:40:24.314407848 +0000", cluster_id: nil, deployable_id: 101, archived: false>3174 when finished_after is missing3175 is expected to contain exactly #<Deployment id: 69, iid: 2, project_id: 740, environment_id: 79, ref: "master", tag: false, sha: "b8...hed_at: "2023-10-16 08:40:25.918403234 +0000", cluster_id: nil, deployable_id: 103, archived: false>3176 with mixed deployable types3177 successfuly fetches deployments3178 at group scope3179 avoids N+1 queries3180 ordering3181 order_by: "created_at", sort: "asc"3182 returns the deployments unordered3183 order_by: "created_at", sort: "desc"3184 returns the deployments unordered3185 order_by: "id", sort: "asc"3186 returns the deployments unordered3187 order_by: "id", sort: "desc"3188 returns the deployments unordered3189 order_by: "iid", sort: "asc"3190 returns the deployments unordered3191 order_by: "iid", sort: "desc"3192 returns the deployments unordered3193 order_by: "ref", sort: "asc"3194 returns the deployments unordered3195 order_by: "ref", sort: "desc"3196 returns the deployments unordered3197 order_by: "invalid", sort: "asc"3198 returns the deployments unordered3199 order_by: "iid", sort: "err"3200 returns the deployments unordered3201SearchHelper3202 search_autocomplete_opts3203 with no current user3204 returns nil3205 with a standard user3206 includes Help sections3207 includes default sections3208 does not include admin sections3209 does not allow regular expression in search term3210 includes the user's groups3211 includes nested group3212 includes the user's projects3213 returns users matching the term3214 includes the required project attrs3215 includes the required group attrs3216 includes the users recently viewed issues and project with correct order3217 includes the users recently viewed issues with the exact same name3218 includes the users recently viewed merge requests3219 does not include the public group3220 when current_user cannot read_users_list3221 returns an empty array3222 permissions3223 when current_user is an admin3224 includes users with matching public emails3225 includes users in forbidden states3226 includes users without matching public emails but with matching private emails3227 includes users matching on secondary email3228 when current_user is not an admin3229 includes users with matching public emails3230 does not include users in forbidden states3231 does not include users without matching public emails but with matching private emails3232 does not include users matching on secondary email3233 with limiting3234 only returns the first 5 users3235 with a current project3236 returns repository related labels based on users abilities3237 when user does not have access to project3238 does not include issues by iid3239 when user has project access3240 includes issues by iid3241 with a search scope3242 returns scoped resource results3243 with an admin user3244 when admin mode setting is disabled3245 includes admin sections3246 when admin mode setting is enabled3247 when in admin mode3248 includes admin sections3249 when not in admin mode3250 does not include admin sections3251 resource_results3252 term: "g", size: 0, category: "Groups"3253 returns results only if the term is more than or equal to Gitlab::Search::Params::MIN_TERM_LENGTH3254 term: "gr", size: 1, category: "Groups"3255 returns results only if the term is more than or equal to Gitlab::Search::Params::MIN_TERM_LENGTH3256 term: "gro", size: 1, category: "Groups"3257 returns results only if the term is more than or equal to Gitlab::Search::Params::MIN_TERM_LENGTH3258 term: "p", size: 0, category: "Projects"3259 returns results only if the term is more than or equal to Gitlab::Search::Params::MIN_TERM_LENGTH3260 term: "pr", size: 1, category: "Projects"3261 returns results only if the term is more than or equal to Gitlab::Search::Params::MIN_TERM_LENGTH3262 term: "pro", size: 1, category: "Projects"3263 returns results only if the term is more than or equal to Gitlab::Search::Params::MIN_TERM_LENGTH3264 term: "u", size: 0, category: "Users"3265 returns results only if the term is more than or equal to Gitlab::Search::Params::MIN_TERM_LENGTH3266 term: "us", size: 1, category: "Users"3267 returns results only if the term is more than or equal to Gitlab::Search::Params::MIN_TERM_LENGTH3268 term: "use", size: 1, category: "Users"3269 returns results only if the term is more than or equal to Gitlab::Search::Params::MIN_TERM_LENGTH3270 term: issue_iid, size: 1, category: "In this project"3271 returns results only if the term is more than or equal to Gitlab::Search::Params::MIN_TERM_LENGTH3272 with a search scope3273 returns only scope-specific results3274 scope_specific_results3275 scope: "user", category: "Users"3276 returns results only for the specific scope3277 scope: "project", category: "Projects"3278 returns results only for the specific scope3279 scope: "issue", category: "Recent issues"3280 returns results only for the specific scope3281 when scope is unknown3282 does not return any results3283 projects_autocomplete3284 when the user does not have access to projects3285 does not return any results3286 when the user has access to one project3287 returns the project3288 when a project namespace matches the search term but the project does not3289 returns all projects matching the term3290 search_entries_info3291 raises an error for unrecognized scopes3292 scope: "blobs", label: "code result"3293 uses the correct singular label3294 uses the correct plural label3295 scope: "commits", label: "commit"3296 uses the correct singular label3297 uses the correct plural label3298 scope: "issues", label: "issue"3299 uses the correct singular label3300 uses the correct plural label3301 scope: "merge_requests", label: "merge request"3302 uses the correct singular label3303 uses the correct plural label3304 scope: "milestones", label: "milestone"3305 uses the correct singular label3306 uses the correct plural label3307 scope: "notes", label: "comment"3308 uses the correct singular label3309 uses the correct plural label3310 scope: "projects", label: "project"3311 uses the correct singular label3312 uses the correct plural label3313 scope: "snippet_titles", label: "snippet"3314 uses the correct singular label3315 uses the correct plural label3316 scope: "users", label: "user"3317 uses the correct singular label3318 uses the correct plural label3319 scope: "wiki_blobs", label: "wiki result"3320 uses the correct singular label3321 uses the correct plural label3322 search_entries_empty_message3323 global search3324 returns the formatted entry message3325 group search3326 returns the formatted entry message3327 project search3328 returns the formatted entry message3329 search_filter_input_options3330 project3331 includes id with type3332 includes project-id3333 includes project endpoints3334 includes autocomplete=off flag3335 group3336 does not includes project-id3337 includes group endpoints3338 dashboard3339 does not include group-id and project-id3340 includes dashboard endpoints3341 search_history_storage_prefix3342 project3343 returns project full_path3344 group3345 returns group full_path3346 dashboard3347 returns dashboard3348 search_md_sanitize3349 does not do extra sql queries for partial markdown rendering3350 search_filter_link3351 renders a search filter link for the current scope3352 renders a search filter link for another scope3353 merges in the current search params and given params3354 restricts the params3355 assigns given data attributes on the list container3356 #repository_ref3357 project_id: 123, ref: "ref-param", expected_ref: "ref-param"3358 returns expected_ref3359 project_id: 123, ref: nil, expected_ref: default_branch3360 returns expected_ref3361 project_id: 123, ref: 111111, expected_ref: "111111"3362 returns expected_ref3363 project_id: nil, ref: "ref-param", expected_ref: default_branch3364 returns expected_ref3365 #highlight_and_truncate_issuable3366 when description is not present3367 does nothing3368 when description present3369 description: "test", expected: "<span class=\"gl-text-gray-900 gl-font-weight-bold\">test</span>"3370 sanitizes, truncates, and highlights the search term3371 description: "<span style=\"color: blue;\">this test should not be blue</span>", expected: "this <span class=\"gl-text-gray-900 gl-font-weight-bold\">test</span> should not be blue"3372 sanitizes, truncates, and highlights the search term3373 description: "<a href=\"#\" onclick=\"alert('XSS')\">Click Me test</a>", expected: "<a href=\"#\">Click Me <span class=\"gl-text-gray-900 gl-font-weight-bold\">test</span></a>"3374 sanitizes, truncates, and highlights the search term3375 description: "<script type=\"text/javascript\">alert('Another XSS');</script> test", expected: " <span class=\"gl-text-gray-900 gl-font-weight-bold\">test</span>"3376 sanitizes, truncates, and highlights the search term3377 description: "Lorem test ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec.", expected: "Lorem <span class=\"gl-text-gray-900 gl-font-weight-bold\">test</span> ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Don..."3378 sanitizes, truncates, and highlights the search term3379 description: "<img src=\"https://random.foo.com/test.png\" width=\"128\" height=\"128\" />some image", expected: "some image"3380 sanitizes, truncates, and highlights the search term3381 description: "<h2 data-sourcepos=\"11:1-11:26\" dir=\"auto\"><a id=\"user-content-additional-information\" class=\"anchor\" href=\"#additional-information\" aria-hidden=\"true\"></a>Additional information test:</h2><textarea data-update-url=\"/freepascal.org/fpc/source/-/issues/6163.json\" dir=\"auto\" data-testid=\"textarea\" class=\"hidden js-task-list-field\"></textarea>", expected: "<a class=\"anchor\" href=\"#additional-information\"></a>Additional information <span class=\"gl-text-gray-900 gl-font-weight-bold\">test</span>:"3382 sanitizes, truncates, and highlights the search term3383 #issuable_state_to_badge_class3384 with merge request3385 returns correct badge based on status3386 with an issue3387 returns correct badge based on status3388 #issuable_state_text3389 with merge request3390 returns correct badge based on status3391 with an issue3392 returns correct badge based on status3393 #search_sort_options3394 returns the correct data3395 #header_search_context3396 no group or project data3397 does not add :group, :group_metadata, or :scope to hash3398 does not add :project, :project_metadata, :code_search, or :ref3399 group data3400 adds the :group, :group_metadata, and :scope correctly to hash3401 does not add :project, :project_metadata, :code_search, or :ref3402 project data3403 adds the :group and :group-metadata from the project correctly to hash3404 adds the :project and :project-metadata correctly to hash3405 feature issues is not available3406 adds the :project and :project-metadata correctly to hash3407 with scope3408 adds :scope and false :code_search to hash3409 without scope3410 adds code_search true to hash and not :scope3411 ref data3412 when user can? download project data3413 adds the :ref correctly to hash3414 when user cannot download project data3415 does not add the :ref to hash3416 snippet3417 when searching from snippets3418 adds :for_snippets true correctly to hash3419 when not searching from snippets3420 adds :for_snippets nil correctly to hash3421 .search_navigation_json3422 with some tab conditions set to false3423 data: {:projects=>{:label=>"Projects", :condition=>true}, :blobs=>{:label=>"Code", :condition=>false}}, matcher: -> { include("projects") }3424 renders data correctly3425 data: {:projects=>{:label=>"Projects", :condition=>false}, :blobs=>{:label=>"Code", :condition=>false}}, matcher: -> { eq("{}") }3426 renders data correctly3427 data: {:projects=>{:label=>"Projects", :condition=>true}, :blobs=>{:label=>"Code", :condition=>true}, :epics=>{:label=>"Epics", :condition=>true}}, matcher: -> { include("projects", "blobs", "epics") }3428 renders data correctly3429 when all options enabled3430 returns items in order3431 .search_filter_link_json3432 data3433 scope: "projects", label: "Projects", data: {:qa_selector=>"projects_tab"}, search: nil, active_scope: "projects"3434 converts correctly3435 scope: "snippet_titles", label: "Snippets", data: nil, search: {:snippets=>"test"}, active_scope: "code"3436 converts correctly3437 scope: "projects", label: "Projects", data: {:qa_selector=>"projects_tab"}, search: nil, active_scope: "issue"3438 converts correctly3439 scope: "snippet_titles", label: "Snippets", data: nil, search: {:snippets=>"test"}, active_scope: "snippet_titles"3440 converts correctly3441 #wiki_blob_link3442 is expected to eq "/namespace180/project-1042/-/wikis/test"3443MergeRequests::MergeabilityCheckService3444 #async_execute3445 updates merge status to checking3446 enqueues MergeRequestMergeabilityCheckWorker3447 when read-only DB3448 does not enqueue MergeRequestMergeabilityCheckWorker3449 #execute3450 behaves like mergeable merge request3451 updates or keeps merge status as can_be_merged3452 reloads merge head diff3453 update diff discussion positions3454 updates the merge ref3455 returns ServiceResponse.success3456 ServiceResponse has merge_ref_head payload3457 when concurrent calls3458 waits first lock and returns "cached" result in subsequent calls3459 writes the merge-ref once3460 resets one merge request upon execution3461 when retry_lease flag is false3462 the first call succeeds, subsequent concurrent calls get a lock error response3463 when broken3464 returns ServiceResponse.error3465 behaves like unmergeable merge request3466 updates or keeps merge status as cannot_be_merged3467 does not change the merge ref HEAD3468 returns ServiceResponse.error3469 when it cannot be merged on git3470 returns ServiceResponse.error and keeps merge status as cannot_be_merged3471 when MR cannot be merged and has no merge ref3472 returns ServiceResponse.error3473 behaves like unmergeable merge request3474 updates or keeps merge status as cannot_be_merged3475 does not change the merge ref HEAD3476 returns ServiceResponse.error3477 when MR cannot be merged and has outdated merge ref3478 returns ServiceResponse.error3479 behaves like unmergeable merge request3480 updates or keeps merge status as cannot_be_merged3481 does not change the merge ref HEAD3482 returns ServiceResponse.error3483 when merge request is not given3484 returns ServiceResponse.error3485 when read-only DB3486 returns ServiceResponse.error3487 when fails to update the merge-ref3488 reloads merge head diff3489 returns ServiceResponse.error3490 behaves like unmergeable merge request3491 updates or keeps merge status as cannot_be_merged3492 does not change the merge ref HEAD3493 returns ServiceResponse.error3494 recheck enforced3495 when MR is marked as mergeable, but repo is not mergeable and MR is not opened3496 returns ServiceResponse.error3497 does not change the merge status3498 when MR is mergeable but merge-ref does not exists3499 behaves like mergeable merge request3500 updates or keeps merge status as can_be_merged3501 reloads merge head diff3502 update diff discussion positions3503 updates the merge ref3504 returns ServiceResponse.success3505 ServiceResponse has merge_ref_head payload3506 when MR is mergeable but merge-ref is already updated3507 returns ServiceResponse.success3508 does not recreate the merge-ref3509 does not reload merge head diff3510FileUploader3511 legacy storage3512 behaves like builds correct legacy storage paths3513 #store_dir3514 behaves like matches the method pattern3515 is expected to match /awesome\/project\/\h+/3516 #cache_dir3517 behaves like matches the method pattern3518 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3519 #work_dir3520 behaves like matches the method pattern3521 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3522 #upload_path3523 behaves like matches the method pattern3524 is expected to match /\h+\/<filename>/3525 #relative_path3526 is relative (PENDING: Path not set, skipping.)3527 .absolute_path3528 behaves like matches the method pattern3529 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/awesome\/project\/55dc16aa0edd05693fd98b5051e83321\/foo.jpg/3530 .base_dir3531 behaves like matches the method pattern3532 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3533 path traversal exploits3534 throws an exception3535 uses hashed storage3536 when rolled out attachments3537 #store_dir3538 behaves like matches the method pattern3539 is expected to match /@hashed\/\h{2}\/\h{2}\/\h+/3540 #cache_dir3541 behaves like matches the method pattern3542 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3543 #work_dir3544 behaves like matches the method pattern3545 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3546 #upload_path3547 behaves like matches the method pattern3548 is expected to match /\h+\/<filename>/3549 #relative_path3550 is relative (PENDING: Path not set, skipping.)3551 .absolute_path3552 behaves like matches the method pattern3553 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3554 .base_dir3555 behaves like matches the method pattern3556 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3557 path traversal exploits3558 throws an exception3559 when only repositories are rolled out3560 behaves like builds correct legacy storage paths3561 #store_dir3562 behaves like matches the method pattern3563 is expected to match /awesome\/project\/\h+/3564 #cache_dir3565 behaves like matches the method pattern3566 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3567 #work_dir3568 behaves like matches the method pattern3569 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3570 #upload_path3571 behaves like matches the method pattern3572 is expected to match /\h+\/<filename>/3573 #relative_path3574 is relative (PENDING: Path not set, skipping.)3575 .absolute_path3576 behaves like matches the method pattern3577 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/awesome\/project\/55dc16aa0edd05693fd98b5051e83321\/foo.jpg/3578 .base_dir3579 behaves like matches the method pattern3580 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3581 path traversal exploits3582 throws an exception3583 object store is remote3584 behaves like builds correct paths3585 #store_dir3586 behaves like matches the method pattern3587 is expected to match /@hashed\/\h{2}\/\h{2}\/\h+/3588 #cache_dir3589 behaves like matches the method pattern3590 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3591 #work_dir3592 behaves like matches the method pattern3593 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3594 #upload_path3595 behaves like matches the method pattern3596 is expected to match /@hashed\/\h{2}\/\h{2}\/\h+\/\h+\/<filename>/3597 #relative_path3598 is relative (PENDING: Path not set, skipping.)3599 .absolute_path3600 behaves like matches the method pattern3601 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3602 .base_dir3603 behaves like matches the method pattern3604 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)3605 path traversal exploits3606 throws an exception3607 initialize3608 accepts a secret parameter3609 callbacks3610 #prune_store_dir after :remove3611 is called3612 prune the store directory3613 copy_to3614 files are stored locally3615 copies the file to the correct location3616 returned uploader3617 generates a new secret3618 creates new upload correctly3619 copies the file3620 files are stored remotely3621 copies the file to the correct location3622 returned uploader3623 generates a new secret3624 creates new upload correctly3625 copies the file3626 .extract_dynamic_path3627 with an absolute path without a slash in the beginning3628 behaves like a valid secret3629 with a 32-byte hexadecimal secret3630 extracts the secret3631 extracts the identifier3632 with a 10-byte hexadecimal secret3633 extracts the secret3634 extracts the identifier3635 with an invalid secret3636 returns nil3637 with an absolute path with a slash in the beginning3638 behaves like a valid secret3639 with a 32-byte hexadecimal secret3640 extracts the secret3641 extracts the identifier3642 with a 10-byte hexadecimal secret3643 extracts the secret3644 extracts the identifier3645 with an invalid secret3646 returns nil3647 with an relative path without a slash in the beginning3648 behaves like a valid secret3649 with a 32-byte hexadecimal secret3650 extracts the secret3651 extracts the identifier3652 with a 10-byte hexadecimal secret3653 extracts the secret3654 extracts the identifier3655 with an invalid secret3656 returns nil3657 with an relative path with a slash in the beginning3658 behaves like a valid secret3659 with a 32-byte hexadecimal secret3660 extracts the secret3661 extracts the identifier3662 with a 10-byte hexadecimal secret3663 extracts the secret3664 extracts the identifier3665 with an invalid secret3666 returns nil3667 #secret3668 generates a secret if none is provided3669 validation3670 32-byte hexadecimal3671 returns the secret3672 10-byte hexadecimal3673 returns the secret3674 invalid secret supplied3675 raises an exception3676 #migrate!3677 behaves like migrates3678 returns corresponding file type3679 does nothing when migrating to the current store3680 migrate to the specified store3681 removes the original file after the migration3682 can access to the original file during migration3683 when migrate! is not occupied by another process3684 executes migrate!3685 executes use_file3686 when migrate! is occupied by another process3687 does not execute migrate!3688 does not execute use_file3689 migration is unsuccessful3690 when the store is not supported3691 does not update the object_store3692 does not delete the original file3693 upon a fog failure3694 does not update the object_store3695 does not delete the original file3696 upon a database failure3697 does not update the object_store3698 does not delete the original file3699 behaves like migrates3700 returns corresponding file type3701 does nothing when migrating to the current store3702 migrate to the specified store3703 removes the original file after the migration3704 can access to the original file during migration3705 when migrate! is not occupied by another process3706 executes migrate!3707 executes use_file3708 when migrate! is occupied by another process3709 does not execute migrate!3710 does not execute use_file3711 migration is unsuccessful3712 when the store is not supported3713 does not update the object_store3714 does not delete the original file3715 upon a fog failure3716 does not update the object_store3717 does not delete the original file3718 upon a database failure3719 does not update the object_store3720 does not delete the original file3721 #upload=3722 handles nil3723 extract the uploader context from it3724 #replace_file_without_saving!3725 replaces an existing file without changing its metadata3726 when remote file is used3727 #cache!3728 file is stored remotely in permament location with sanitized name3729 #to_h3730 generates URL using original file name instead of filename returned by object storage3731project routing3732 ProjectsController routing3733 to #index3734 to #create3735 to #new3736 to #edit3737 to #update3738 to #destroy3739 to #preview_markdown3740 to #show3741 regular name3742 is expected to route {:get=>"/gitlab/gitlabhq"} to {:namespace_id=>"gitlab", :id=>"gitlabhq", :controller=>"projects", :action=>"show"}3743 name with dot3744 is expected to route {:get=>"/gitlab/gitlabhq.keys"} to {:namespace_id=>"gitlab", :id=>"gitlabhq.keys", :controller=>"projects", :action=>"show"}3745 with nested group3746 is expected to route {:get=>"/gitlab/subgroup/gitlabhq"} to {:namespace_id=>"gitlab/subgroup", :id=>"gitlabhq", :controller=>"projects", :action=>"show"}3747 Projects::RedirectController routing3748 to #redirect_from_id3749 Projects::AutocompleteSourcesController routing3750 to #members3751 to #issues3752 to #merge_requests3753 to #labels3754 to #milestones3755 to #commands3756 to #snippets3757 Projects::WikisController routing3758 behaves like wiki routing3759 redirects the base path to the home page3760 behaves like resource routing3761 routes resource actions3762 behaves like redirecting a legacy path3763 redirects /gitlab/gitlabhq/wikis to /gitlab/gitlabhq/-/wikis3764 behaves like redirecting a legacy path3765 redirects /gitlab/gitlabhq/wikis/home/edit to /gitlab/gitlabhq/-/wikis/home/edit3766 Projects::RepositoriesController routing3767 to #archive format:zip3768 to #archive format:tar.bz23769 to #archive with "/" in route3770 to #archive format:html3771 to #archive format:yaml3772 to #archive format:yml3773 Projects::BranchesController routing3774 to #branches3775 Projects::TagsController routing3776 to #tags3777 behaves like redirecting a legacy path3778 redirects /gitlab/gitlabhq/tags to /gitlab/gitlabhq/-/tags3779 Projects::DeployKeysController routing3780 behaves like resource routing3781 routes resource actions3782 Projects::ProtectedBranchesController routing3783 behaves like resource routing3784 routes resource actions3785 Projects::RefsController routing3786 to #switch3787 to #logs_tree3788 behaves like redirecting a legacy path3789 redirects /gitlab/gitlabhq/refs/switch to /gitlab/gitlabhq/-/refs/switch3790 behaves like redirecting a legacy path3791 redirects /gitlab/gitlabhq/refs/feature%2345/logs_tree to /gitlab/gitlabhq/-/refs/feature%2345/logs_tree3792 behaves like redirecting a legacy path3793 redirects /gitlab/gitlabhq/refs/stable/logs_tree/new%0A%0Aline.txt to /gitlab/gitlabhq/-/refs/stable/logs_tree/new%0A%0Aline.txt3794 behaves like redirecting a legacy path3795 redirects /gitlab/gitlabhq/refs/feature%2345/logs_tree/../../../../../@example.com/tree/a to /gitlab/gitlabhq/-/refs/feature#45/logs_tree/../../../../../-/example.com/tree/a3796 Projects::MergeRequestsController routing3797 to #commits3798 to #pipelines3799 to #merge3800 to #show3801 to #show from scoped route3802 behaves like resource routing3803 routes resource actions3804 behaves like redirecting a legacy path3805 redirects /gitlab/gitlabhq/merge_requests to /gitlab/gitlabhq/-/merge_requests3806 behaves like redirecting a legacy path3807 redirects /gitlab/gitlabhq/merge_requests/1/diffs to /gitlab/gitlabhq/-/merge_requests/1/diffs3808 Projects::MergeRequests::CreationsController routing3809 to #new3810 to #create3811 to #branch_from3812 to #branch_to3813 to #pipelines3814 to #diffs3815 behaves like redirecting a legacy path3816 redirects /gitlab/gitlabhq/merge_requests/new to /gitlab/gitlabhq/-/merge_requests/new3817 Projects::MergeRequests::DiffsController routing3818 to #show3819 Projects::MergeRequests::ConflictsController routing3820 to #show3821 SnippetsController routing3822 to #raw3823 to #index3824 to #new3825 to #edit3826 to #show3827 to #raw from unscope routing3828 behaves like redirecting a legacy path3829 redirects /gitlab/gitlabhq/snippets/1 to /gitlab/gitlabhq/-/snippets/13830 Projects::HooksController routing3831 to #test3832 behaves like resource routing3833 routes resource actions3834 behaves like redirecting a legacy path3835 redirects /gitlab/gitlabhq/hooks to /gitlab/gitlabhq/-/hooks3836 Projects::HookLogsController routing3837 to #retry3838 to #show3839 behaves like redirecting a legacy path3840 redirects /gitlab/gitlabhq/hooks/hook_logs/1 to /gitlab/gitlabhq/-/hooks/hook_logs/13841 Projects::CommitController routing3842 to #show3843 behaves like redirecting a legacy path3844 redirects /gitlab/gitlabhq/commit/4246fbd to /gitlab/gitlabhq/-/commit/4246fbd3845 Projects::CommitsController routing3846 to #show3847 behaves like resource routing3848 routes resource actions3849 behaves like redirecting a legacy path3850 redirects /gitlab/gitlabhq/commits/master to /gitlab/gitlabhq/-/commits/master3851 Projects::ProjectMembersController routing3852 behaves like resource routing3853 routes resource actions3854 Projects::MilestonesController routing3855 to #promote3856 behaves like resource routing3857 routes resource actions3858 Projects::LabelsController routing3859 to #index3860 Projects::IssuesController routing3861 to #bulk_update3862 behaves like resource routing3863 routes resource actions3864 behaves like redirecting a legacy path3865 redirects /gitlab/gitlabhq/issues to /gitlab/gitlabhq/-/issues3866 behaves like redirecting a legacy path3867 redirects /gitlab/gitlabhq/issues/1/edit to /gitlab/gitlabhq/-/issues/1/edit3868 Projects::NotesController routing3869 to #index3870 behaves like resource routing3871 routes resource actions3872 Projects::BlameController routing3873 to #show3874 to #streaming3875 to #page3876 Projects::BlobController routing3877 to #show3878 to #show from unscoped routing3879 Projects::TreeController routing3880 to #show3881 to #show from unscoped routing3882 Projects::FindFileController routing3883 to #show3884 to #list3885 behaves like redirecting a legacy path3886 redirects /gitlab/gitlabhq/find_file to /gitlab/gitlabhq/-/find_file3887 behaves like redirecting a legacy path3888 redirects /gitlab/gitlabhq/files/master to /gitlab/gitlabhq/-/files/master3889 Projects::BlobController routing3890 to #edit3891 to #preview3892 behaves like redirecting a legacy path3893 redirects /gitlab/gitlabhq/new/master to /gitlab/gitlabhq/-/new/master3894 behaves like redirecting a legacy path3895 redirects /gitlab/gitlabhq/edit/master/README to /gitlab/gitlabhq/-/edit/master/README3896 Projects::RawController routing3897 to #show3898 to #show from unscoped routing3899 Projects::CompareController routing3900 to #index3901 to #compare3902 to #show3903 behaves like redirecting a legacy path3904 redirects /gitlab/gitlabhq/compare to /gitlab/gitlabhq/-/compare3905 behaves like redirecting a legacy path3906 redirects /gitlab/gitlabhq/compare/master...stable to /gitlab/gitlabhq/-/compare/master...stable3907 Projects::NetworkController routing3908 to #show3909 Projects::GraphsController routing3910 to #show3911 Projects::ForksController routing3912 to #new3913 to #create3914 Projects::AvatarsController routing3915 to #destroy3916 Projects::PagesDomainsController routing3917 to #destroy with a valid domain name3918 to #show with a valid domain3919 behaves like resource routing3920 routes resource actions3921 Projects::ReleasesController routing3922 to #latest_permalink with a valid permalink path3923 to #show for the release with tag named permalink3924 Projects::Registry::TagsController routing3925 #destroy3926 correctly routes to a destroy action3927 takes registry tag name constrains into account3928 Projects::PipelinesController routing3929 to #index3930 to #show3931 behaves like redirecting a legacy path3932 redirects /gitlab/gitlabhq/pipelines to /gitlab/gitlabhq/-/pipelines3933 Projects::PipelineSchedulesController routing3934 to #index3935 behaves like redirecting a legacy path3936 redirects /gitlab/gitlabhq/pipeline_schedules to /gitlab/gitlabhq/-/pipeline_schedules3937 Projects::Settings::OperationsController routing3938 to #reset_alerting_token3939 Projects::Settings::RepositoryController routing3940 to #show3941 to repository#create_deploy_token3942 Projects::Settings::CiCdController routing3943 to #runner_setup_scripts3944 Projects::Settings::PackagesAndRegistriesController routing3945 to #show3946 to #cleanup_tags3947 Projects::Settings::IntegrationsController routing3948 to #index3949 to #edit3950 to #update3951 to #test3952 Projects::Settings::IntegrationHookLogsController3953 to #show3954 to #retry3955 Projects::TemplatesController routing3956 #show3957 routes when :template_type is `merge_request`3958 routes when :template_type is `issue`3959 routes to application#route_not_found when :template_type is unknown3960 Projects::DeployTokensController routing3961 routes to deploy_tokens#revoke3962 Projects::ServicePingController routing3963 routes to service_ping#web_ide_pipelines_count3964 Projects::EnvironmentsController routing3965 legacy routing3966 behaves like redirecting a legacy path3967 redirects /gitlab/gitlabhq/environments to /gitlab/gitlabhq/-/environments3968 Projects::ClustersController routing3969 legacy routing3970 behaves like redirecting a legacy path3971 redirects /gitlab/gitlabhq/clusters to /gitlab/gitlabhq/-/clusters3972 Projects::ErrorTrackingController routing3973 legacy routing3974 behaves like redirecting a legacy path3975 redirects /gitlab/gitlabhq/error_tracking to /gitlab/gitlabhq/-/error_tracking3976 Projects::Serverless routing3977 legacy routing3978 behaves like redirecting a legacy path3979 redirects /gitlab/gitlabhq/serverless to /gitlab/gitlabhq/-/serverless3980 Projects::DesignManagement::Designs::RawImagesController routing3981 to #show3982 Projects::DesignManagement::Designs::ResizedImageController routing3983 to #show3984 Projects::Snippets::BlobsController routing3985 to #raw3986 with a non-existent project3987 routes to 404 with get request3988 routes to 404 with delete request3989 routes to 404 with post request3990 routes to 404 with put request3991 with route to some action3992 routes to 404 with get request to3993 routes to 404 with delete request3994 routes to 404 with post request3995 routes to 404 with put request3996NamespaceSetting3997 is expected to define :jobs_to_be_done as an enum backed by an integer with values ‹[:basics, :move_repository, :code_storage, :exploring, :ci, :other]›, suffix: true3998 is expected to define :enabled_git_access_protocol as an enum backed by an integer, suffix: true3999 behaves like sanitizable4000 includes Sanitizable4001 #default_branch_name4002 when input includes javascript tags4003 gets sanitized4004 #default_branch_name validation4005 when input contains pre-escaped html entities4006 is not valid4007 when it contains a path component4008 is not valid4009 Associations4010 is expected to belong to namespace required: false4011 default values4012 is expected to eq {}4013 validations4014************************************************************************4015Warning from shoulda-matchers:4016You are using `validate_inclusion_of` to assert that a boolean column4017allows boolean values and disallows non-boolean ones. Be aware that it4018is not possible to fully test this, as boolean columns will4019automatically convert non-boolean values to boolean ones. Hence, you4020should consider removing this test.4021************************************************************************4022 is expected to validate that :code_suggestions is either ‹true› or ‹false›4023 #default_branch_name_content4024 when not set4025 behaves like doesn't return an error4026 doesn't return an error4027 when set4028 behaves like doesn't return an error4029 doesn't return an error4030 when an empty string4031 behaves like doesn't return an error4032 doesn't return an error4033 #code_suggestions4034 when group namespaces4035 when group is created4036 sets default code_suggestions value to true4037 when setting is updated4038 persists the code suggestions setting4039 when user namespace4040 defaults to false4041 #allow_mfa_for_group4042 group is top-level group4043 is valid4044 group is a subgroup4045 is invalid4046 #allow_resource_access_token_creation_for_group4047 group is top-level group4048 is valid4049 group is a subgroup4050 is invalid when resource access token creation is not enabled4051 is valid when resource access tokens are enabled4052 default_branch_protections_defaults validations4053 is expected to validate jsonb schema "default_branch_protection_defaults"4054 when json is more than 1kb4055 is expected not to allow :default_branch_protection_defaults to be ‹{name: "m828yt1ovv8xhdpv0ovw6yl0ev3k3rq0sxy5ihaoq3tq20m33cbdcat5h8kd1w8q1h8s7gfi1apgvnlmgc0xpn0y6341moauyzh3rxs7w54mvu18i6og4ca5cde9r6hgf3tumf9aqs6fafarmaahkxm0ldaytp8jrl34wnuqrxs9pxetw3cvyiwuzh49jtmoinpncok46be8dxv8ofhxzt21mau84rheity9pl4kwzvlgrzd6z6jvaiz71n6i7qsja4v05fq3vtdelqfhh0g1118softfx8pr8lvdgtqgbu8dhpn7g7r618sbwhpmu53ataq93i7ylyd4urtfttqxyot59k5u2vz98ghhn75cje4wpceg3jrpoctecyufgyfw6mb4fs0lb91rjkczgm2pg1jqkxdu0wgli093zkht0o7mpvd79e9khhewigb5p7dqyg5ocadn8a3e60tvbuyzaz6minz4oh814bh1xvmghs8xlospy870dly30nk1eb3ihqh81suyrsde0s4tk2jd6yns7pyk89jgcy1yvm4jc6ceu2f5ikk700cwyn5p7hmgrv1xau8prs52is7787m45wa5datf669m0mgwi2tq72g72323yj03trqfk6q9bsl6qeeb9gntqf9gsaloqwdhtlui0xcd59zz0q5bpjhwbkwc45idom5tsj4gfmsxc5z5gb5hto5egbkfi1itmrj637et1lh90kb0lkt3snswtoxxud4sfbyygbsjijhys52iwcrool9uwe8zgab3kd2uno6f9oxmblugizhrhl9hapgudlfks4k27gathj6jjjw2qkd3znvpqwures8jumkv6s5gnu9be4rynq5lsthldcxwy8y7rondogmoa26hqx2jyng8k2yrp358u9j2pu0eq6hqogzyb6y231352bn0ywbmjcginlpzlwgb28y2lng288r9u0kcpch2e6oq9pra2jzbvus0s4xnfocrkugskpd57qr2vt047ccnjjut9fw7v5dzwvdquskqz93p506kdoaiwb64claadgdcg1wmgwz1z2hyv1pj05hkcbz50y2te5snnwyjtnfztv2iawzqy3v7nuycz5vtcltqa"}›4056 when json less than 1kb4057 is expected to allow :default_branch_protection_defaults to be ‹{name: "3iukaykhg0ej52ohh0lnndx5sps58w8rtrfm6ceo6xkw5extib3b4oojoc18odkyrd3ebedfqlhm4p6c4a2n7u1bzq5nx4scacljm22q0ud4ljglks89biou4fs3ux0p8w911tlty68h7fa7g7wrlfp8w93ddyq5fss6j1dp7ynfbk1es4xy2nu6hue4j5peie5ad5wdxa5rcvhn3jgxbh93ecqk5rm7hmoouw8hh6gy8t33y9gn3w0ubxtjwoemlhtt7ap1th76a1kecq1rfdzlqg1lh7pk5s88yy0j4hp2itrl4ilkv30ur40smw5jr7aml4y9av4s25ieriv5ame3iq5qo3bbfffs5nhbf0l48gk5sv4eupw5a3p3t4hkuo5uzdseblkc0qqivcjjn59vg9yuoh72564kd1s1v6iusrb8w22ubktmmfoucsjnkmo5zsr43tqq8mp7r1u0m50u9kwrx75yudmqk02pmm4qib134vyl7hleiqfpnn97"}›4058 #prevent_sharing_groups_outside_hierarchy4059 when this namespace is a root ancestor4060 returns the actual stored value4061 when this namespace is a descendant4062 returns the value stored for the parent settings4063 #show_diff_preview_in_email?4064 when not a subgroup4065 does not query the db when there is no parent group4066 when :show_diff_preview_in_email is false4067 returns false4068 when :show_diff_preview_in_email is true4069 returns true4070 #emails_enabled?4071 when the groups setting is changed4072 returns false when the attribute is false4073 when a group has a parent4074 returns true when no parent has disabled emails4075 when ancestor emails are disabled4076 returns false4077 when a group has parent groups4078 when a parent group has disabled diff previews4079 returns false4080 when all parent groups have enabled diff previews4081 returns true4082 runner registration settings4083 #runner_registration_enabled?4084 when runner registration is enabled4085 is expected to be truthy4086 behaves like with runner registration settings changing in hierarchy4087 when there are no parents4088 is expected to be truthy4089 when no group can register runners4090 is expected to be falsey4091 when there are parents4092 when a parent group has runner registration disabled4093 is expected to be falsey4094 when all parent groups have runner registration enabled4095 is expected to be truthy4096 when runner registration is disabled4097 is expected to be falsey4098 does not query the db4099 when group runner registration is disallowed4100 is expected to be falsey4101 #all_ancestors_have_runner_registration_enabled?4102 behaves like with runner registration settings changing in hierarchy4103 when there are no parents4104 is expected to be truthy4105 when no group can register runners4106 is expected to be falsey4107 when there are parents4108 when a parent group has runner registration disabled4109 is expected to be falsey4110 when all parent groups have runner registration enabled4111 is expected to be truthy4112 #allow_runner_registration_token?4113 when a top-level group4114 when :allow_runner_registration_token is false4115 returns false4116 does not query the db4117 when :allow_runner_registration_token is true4118 returns true4119 when disallowed by application setting4120 is expected to be falsey4121 when a group has parent groups4122 when a parent group has runner registration disabled4123 is expected to be falsey4124 when all parent groups have runner registration enabled4125 is expected to be truthy4126 when disallowed by application setting4127 is expected to be falsey4128 #delayed_project_removal4129 behaves like a cascading namespace setting boolean attribute4130 #delayed_project_removal4131 when there is no parent4132 and the value is not nil4133 returns the local value4134 and the value is nil4135 returns the application settings value4136 when parent does not lock the attribute4137 and value is not nil4138 returns local setting when present4139 returns the parent value when local value is nil4140 returns the correct dirty value4141 does not return the application setting value when parent value is false4142 and the value is nil4143 cascades to the application settings value4144 when multiple ancestors set a value4145 returns the closest ancestor value4146 when parent locks the attribute4147 returns the parent value4148 does not allow the local value to be saved4149 when the application settings locks the attribute4150 returns the application setting value4151 does not allow the local value to be saved4152 when parent locked the attribute then the application settings locks it4153 returns the application setting value4154 #delayed_project_removal?4155 aliases the method when the attribute is a boolean4156 #delayed_project_removal=4157 parent_value: true, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: nil4158 validates starting values from before block4159 does not save the value locally when it matches cascaded value4160 when mass assigned4161 does not save the value locally when it matches cascaded value4162 parent_value: true, current_subgroup_value: nil, new_subgroup_value: "true", expected_subgroup_value_after_update: nil4163 validates starting values from before block4164 does not save the value locally when it matches cascaded value4165 when mass assigned4166 does not save the value locally when it matches cascaded value4167 parent_value: true, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true4168 validates starting values from before block4169 does not save the value locally when it matches cascaded value4170 when mass assigned4171 does not save the value locally when it matches cascaded value4172 parent_value: true, current_subgroup_value: false, new_subgroup_value: "true", expected_subgroup_value_after_update: true4173 validates starting values from before block4174 does not save the value locally when it matches cascaded value4175 when mass assigned4176 does not save the value locally when it matches cascaded value4177 parent_value: true, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false4178 validates starting values from before block4179 does not save the value locally when it matches cascaded value4180 when mass assigned4181 does not save the value locally when it matches cascaded value4182 parent_value: true, current_subgroup_value: true, new_subgroup_value: "false", expected_subgroup_value_after_update: false4183 validates starting values from before block4184 does not save the value locally when it matches cascaded value4185 when mass assigned4186 does not save the value locally when it matches cascaded value4187 parent_value: false, current_subgroup_value: nil, new_subgroup_value: false, expected_subgroup_value_after_update: nil4188 validates starting values from before block4189 does not save the value locally when it matches cascaded value4190 when mass assigned4191 does not save the value locally when it matches cascaded value4192 parent_value: false, current_subgroup_value: nil, new_subgroup_value: true, expected_subgroup_value_after_update: true4193 validates starting values from before block4194 does not save the value locally when it matches cascaded value4195 when mass assigned4196 does not save the value locally when it matches cascaded value4197 parent_value: false, current_subgroup_value: true, new_subgroup_value: false, expected_subgroup_value_after_update: false4198 validates starting values from before block4199 does not save the value locally when it matches cascaded value4200 when mass assigned4201 does not save the value locally when it matches cascaded value4202 parent_value: false, current_subgroup_value: false, new_subgroup_value: true, expected_subgroup_value_after_update: true4203 validates starting values from before block4204 does not save the value locally when it matches cascaded value4205 when mass assigned4206 does not save the value locally when it matches cascaded value4207 #delayed_project_removal_locked?4208 when attribute is locked by self4209 is not locked by default4210 is locked when including self4211 when parent does not lock the attribute4212 behaves like not locked4213 is not locked by an ancestor4214 is not locked by application setting4215 does not return a locked namespace4216 when parent locks the attribute4217 is locked by an ancestor4218 is not locked by application setting4219 returns a locked namespace settings object4220 when not locked by application settings4221 behaves like not locked4222 is not locked by an ancestor4223 is not locked by application setting4224 does not return a locked namespace4225 when locked by application settings4226 is not locked by an ancestor4227 is locked by application setting4228 does not return a locked namespace4229 #lock_delayed_project_removal=4230 when parent locks the attribute4231 does not allow the attribute to be saved4232 when parent does not lock the attribute4233 allows the lock to be set when the attribute is not nil4234 does not allow the lock to be saved when the attribute is nil4235 copies the cascaded value when locking the attribute if the local value is nil4236 when application settings locks the attribute4237 does not allow the attribute to be saved4238 when application_settings does not lock the attribute4239 allows the attribute to be saved4240 after update callback4241 clears descendant locks4242 default_branch_protection_defaults4243 returns the value for default_branch_protection_defaults4244 when provided with content that does not match the JSON schema4245 is expected to allow :default_branch_protection_defaults to be ‹{name: "bar"}›4246 is expected not to allow :default_branch_protection_defaults to be ‹{foo: "bar"}›4247Gitlab::SidekiqMiddleware::ServerMetrics4248 behaves like metrics middleware with worker attribution4249 when workers are not attributed4250 behaves like a metrics middleware4251 with mocked prometheus4252 .initialize_process_metrics4253 sets concurrency metrics4254 initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process4255 when emit_sidekiq_histogram FF is disabled4256 does not initialize sidekiq_jobs_completion_seconds4257 initializing execution and queueing SLIs4258 initializes the execution and queueing SLIs with labels4259 when the sidekiq_job_completion_metric_initialize feature flag is disabled4260 sets the concurrency metric4261 does not initialize sidekiq_jobs_completion_seconds4262 sidekiq execution SLIs4263 behaves like not initializing sidekiq SLIs4264 does not initialize sidekiq SLIs4265 sidekiq queueing SLIs4266 behaves like not initializing sidekiq SLIs4267 does not initialize sidekiq SLIs4268 #call4269 yields block4270 calls BackgroundTransaction4271 sets queue specific metrics4272 sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics4273 sets the thread name if it was nil4274 when job_duration is not available4275 does not set the queue_duration_seconds histogram4276 when error is raised4277 sets sidekiq_jobs_failed_total and reraises4278 records sidekiq SLI error but does not record sidekiq SLI apdex4279 when job is retried4280 sets sidekiq_jobs_retried_total metric4281 when job is interrupted4282 sets sidekiq_jobs_interrupted_total metric4283 with prometheus integrated4284 #call4285 yields block4286 when error is raised4287 sets sidekiq_jobs_failed_total and reraises4288 when a worker is wrapped into ActiveJob4289 behaves like a metrics middleware4290 with mocked prometheus4291 .initialize_process_metrics4292 sets concurrency metrics4293 initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process4294 when emit_sidekiq_histogram FF is disabled4295 does not initialize sidekiq_jobs_completion_seconds4296 initializing execution and queueing SLIs4297 initializes the execution and queueing SLIs with labels4298 when the sidekiq_job_completion_metric_initialize feature flag is disabled4299 sets the concurrency metric4300 does not initialize sidekiq_jobs_completion_seconds4301 sidekiq execution SLIs4302 behaves like not initializing sidekiq SLIs4303 does not initialize sidekiq SLIs4304 sidekiq queueing SLIs4305 behaves like not initializing sidekiq SLIs4306 does not initialize sidekiq SLIs4307 #call4308 yields block4309 calls BackgroundTransaction4310 sets queue specific metrics4311 sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics4312 sets the thread name if it was nil4313 when job_duration is not available4314 does not set the queue_duration_seconds histogram4315 when error is raised4316 sets sidekiq_jobs_failed_total and reraises4317 records sidekiq SLI error but does not record sidekiq SLI apdex4318 when job is retried4319 sets sidekiq_jobs_retried_total metric4320 when job is interrupted4321 sets sidekiq_jobs_interrupted_total metric4322 with prometheus integrated4323 #call4324 yields block4325 when error is raised4326 sets sidekiq_jobs_failed_total and reraises4327 when workers are attributed4328 high urgency4329 behaves like a metrics middleware4330 with mocked prometheus4331 .initialize_process_metrics4332 sets concurrency metrics4333 initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process4334 when emit_sidekiq_histogram FF is disabled4335 does not initialize sidekiq_jobs_completion_seconds4336 initializing execution and queueing SLIs4337 initializes the execution and queueing SLIs with labels4338 when the sidekiq_job_completion_metric_initialize feature flag is disabled4339 sets the concurrency metric4340 does not initialize sidekiq_jobs_completion_seconds4341 sidekiq execution SLIs4342 behaves like not initializing sidekiq SLIs4343 does not initialize sidekiq SLIs4344 sidekiq queueing SLIs4345 behaves like not initializing sidekiq SLIs4346 does not initialize sidekiq SLIs4347 #call4348 yields block4349 calls BackgroundTransaction4350 sets queue specific metrics4351 sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics4352 sets the thread name if it was nil4353 when job_duration is not available4354 does not set the queue_duration_seconds histogram4355 when error is raised4356 sets sidekiq_jobs_failed_total and reraises4357 records sidekiq SLI error but does not record sidekiq SLI apdex4358 when job is retried4359 sets sidekiq_jobs_retried_total metric4360 when job is interrupted4361 sets sidekiq_jobs_interrupted_total metric4362 with prometheus integrated4363 #call4364 yields block4365 when error is raised4366 sets sidekiq_jobs_failed_total and reraises4367 no urgency4368 behaves like a metrics middleware4369 with mocked prometheus4370 .initialize_process_metrics4371 sets concurrency metrics4372 initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process4373 when emit_sidekiq_histogram FF is disabled4374 does not initialize sidekiq_jobs_completion_seconds4375 initializing execution and queueing SLIs4376 initializes the execution and queueing SLIs with labels4377 when the sidekiq_job_completion_metric_initialize feature flag is disabled4378 sets the concurrency metric4379 does not initialize sidekiq_jobs_completion_seconds4380 sidekiq execution SLIs4381 behaves like not initializing sidekiq SLIs4382 does not initialize sidekiq SLIs4383 sidekiq queueing SLIs4384 behaves like not initializing sidekiq SLIs4385 does not initialize sidekiq SLIs4386 #call4387 yields block4388 calls BackgroundTransaction4389 sets queue specific metrics4390 sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics4391 sets the thread name if it was nil4392 when job_duration is not available4393 does not set the queue_duration_seconds histogram4394 when error is raised4395 sets sidekiq_jobs_failed_total and reraises4396 records sidekiq SLI error but does not record sidekiq SLI apdex4397 when job is retried4398 sets sidekiq_jobs_retried_total metric4399 when job is interrupted4400 sets sidekiq_jobs_interrupted_total metric4401 with prometheus integrated4402 #call4403 yields block4404 when error is raised4405 sets sidekiq_jobs_failed_total and reraises4406 external dependencies4407 behaves like a metrics middleware4408 with mocked prometheus4409 .initialize_process_metrics4410 sets concurrency metrics4411 initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process4412 when emit_sidekiq_histogram FF is disabled4413 does not initialize sidekiq_jobs_completion_seconds4414 initializing execution and queueing SLIs4415 initializes the execution and queueing SLIs with labels4416 when the sidekiq_job_completion_metric_initialize feature flag is disabled4417 sets the concurrency metric4418 does not initialize sidekiq_jobs_completion_seconds4419 sidekiq execution SLIs4420 behaves like not initializing sidekiq SLIs4421 does not initialize sidekiq SLIs4422 sidekiq queueing SLIs4423 behaves like not initializing sidekiq SLIs4424 does not initialize sidekiq SLIs4425 #call4426 yields block4427 calls BackgroundTransaction4428 sets queue specific metrics4429 sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics4430 sets the thread name if it was nil4431 when job_duration is not available4432 does not set the queue_duration_seconds histogram4433 when error is raised4434 sets sidekiq_jobs_failed_total and reraises4435 records sidekiq SLI error but does not record sidekiq SLI apdex4436 when job is retried4437 sets sidekiq_jobs_retried_total metric4438 when job is interrupted4439 sets sidekiq_jobs_interrupted_total metric4440 with prometheus integrated4441 #call4442 yields block4443 when error is raised4444 sets sidekiq_jobs_failed_total and reraises4445 cpu boundary4446 behaves like a metrics middleware4447 with mocked prometheus4448 .initialize_process_metrics4449 sets concurrency metrics4450 initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process4451 when emit_sidekiq_histogram FF is disabled4452 does not initialize sidekiq_jobs_completion_seconds4453 initializing execution and queueing SLIs4454 initializes the execution and queueing SLIs with labels4455 when the sidekiq_job_completion_metric_initialize feature flag is disabled4456 sets the concurrency metric4457 does not initialize sidekiq_jobs_completion_seconds4458 sidekiq execution SLIs4459 behaves like not initializing sidekiq SLIs4460 does not initialize sidekiq SLIs4461 sidekiq queueing SLIs4462 behaves like not initializing sidekiq SLIs4463 does not initialize sidekiq SLIs4464 #call4465 yields block4466 calls BackgroundTransaction4467 sets queue specific metrics4468 sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics4469 sets the thread name if it was nil4470 when job_duration is not available4471 does not set the queue_duration_seconds histogram4472 when error is raised4473 sets sidekiq_jobs_failed_total and reraises4474 records sidekiq SLI error but does not record sidekiq SLI apdex4475 when job is retried4476 sets sidekiq_jobs_retried_total metric4477 when job is interrupted4478 sets sidekiq_jobs_interrupted_total metric4479 with prometheus integrated4480 #call4481 yields block4482 when error is raised4483 sets sidekiq_jobs_failed_total and reraises4484 memory boundary4485 behaves like a metrics middleware4486 with mocked prometheus4487 .initialize_process_metrics4488 sets concurrency metrics4489 initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process4490 when emit_sidekiq_histogram FF is disabled4491 does not initialize sidekiq_jobs_completion_seconds4492 initializing execution and queueing SLIs4493 initializes the execution and queueing SLIs with labels4494 when the sidekiq_job_completion_metric_initialize feature flag is disabled4495 sets the concurrency metric4496 does not initialize sidekiq_jobs_completion_seconds4497 sidekiq execution SLIs4498 behaves like not initializing sidekiq SLIs4499 does not initialize sidekiq SLIs4500 sidekiq queueing SLIs4501 behaves like not initializing sidekiq SLIs4502 does not initialize sidekiq SLIs4503 #call4504 yields block4505 calls BackgroundTransaction4506 sets queue specific metrics4507 sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics4508 sets the thread name if it was nil4509 when job_duration is not available4510 does not set the queue_duration_seconds histogram4511 when error is raised4512 sets sidekiq_jobs_failed_total and reraises4513 records sidekiq SLI error but does not record sidekiq SLI apdex4514 when job is retried4515 sets sidekiq_jobs_retried_total metric4516 when job is interrupted4517 sets sidekiq_jobs_interrupted_total metric4518 with prometheus integrated4519 #call4520 yields block4521 when error is raised4522 sets sidekiq_jobs_failed_total and reraises4523 feature category4524 behaves like a metrics middleware4525 with mocked prometheus4526 .initialize_process_metrics4527 sets concurrency metrics4528 initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process4529 when emit_sidekiq_histogram FF is disabled4530 does not initialize sidekiq_jobs_completion_seconds4531 initializing execution and queueing SLIs4532 initializes the execution and queueing SLIs with labels4533 when the sidekiq_job_completion_metric_initialize feature flag is disabled4534 sets the concurrency metric4535 does not initialize sidekiq_jobs_completion_seconds4536 sidekiq execution SLIs4537 behaves like not initializing sidekiq SLIs4538 does not initialize sidekiq SLIs4539 sidekiq queueing SLIs4540 behaves like not initializing sidekiq SLIs4541 does not initialize sidekiq SLIs4542 #call4543 yields block4544 calls BackgroundTransaction4545 sets queue specific metrics4546 sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics4547 sets the thread name if it was nil4548 when job_duration is not available4549 does not set the queue_duration_seconds histogram4550 when error is raised4551 sets sidekiq_jobs_failed_total and reraises4552 records sidekiq SLI error but does not record sidekiq SLI apdex4553 when job is retried4554 sets sidekiq_jobs_retried_total metric4555 when job is interrupted4556 sets sidekiq_jobs_interrupted_total metric4557 with prometheus integrated4558 #call4559 yields block4560 when error is raised4561 sets sidekiq_jobs_failed_total and reraises4562 combined4563 behaves like a metrics middleware4564 with mocked prometheus4565 .initialize_process_metrics4566 sets concurrency metrics4567 initializes sidekiq_jobs_completion_seconds for the workers in the current Sidekiq process4568 when emit_sidekiq_histogram FF is disabled4569 does not initialize sidekiq_jobs_completion_seconds4570 initializing execution and queueing SLIs4571 initializes the execution and queueing SLIs with labels4572 when the sidekiq_job_completion_metric_initialize feature flag is disabled4573 sets the concurrency metric4574 does not initialize sidekiq_jobs_completion_seconds4575 sidekiq execution SLIs4576 behaves like not initializing sidekiq SLIs4577 does not initialize sidekiq SLIs4578 sidekiq queueing SLIs4579 behaves like not initializing sidekiq SLIs4580 does not initialize sidekiq SLIs4581 #call4582 yields block4583 calls BackgroundTransaction4584 sets queue specific metrics4585 sets sidekiq_jobs_completion_seconds values that are compatible with those from .initialize_process_metrics4586 sets the thread name if it was nil4587 when job_duration is not available4588 does not set the queue_duration_seconds histogram4589 when error is raised4590 sets sidekiq_jobs_failed_total and reraises4591 records sidekiq SLI error but does not record sidekiq SLI apdex4592 when job is retried4593 sets sidekiq_jobs_retried_total metric4594 when job is interrupted4595 sets sidekiq_jobs_interrupted_total metric4596 with prometheus integrated4597 #call4598 yields block4599 when error is raised4600 sets sidekiq_jobs_failed_total and reraises4601 DB load balancing4602 #call4603 when worker declares data consistency4604 increments load balancing counter with defined data consistency4605 when worker does not declare data consistency4606 increments load balancing counter with default data consistency4607 feature attribution4608 when a worker has a feature category4609 uses that category for metrics4610 when a worker does not have a feature category4611 uses the category from the context for metrics4612 when emit_sidekiq_histogram_metrics FF is disabled4613 does not emit histogram metrics4614 emits sidekiq_jobs_completion_seconds_sum metric4615Gitlab::Diff::Position4616 factory4617 produces a complete text position4618 produces a complete image position4619 allows the diff_refs to be passed as a single object4620 position for an added text file4621 is expected to be on text4622 is expected not to be on image4623 #diff_file4624 returns the correct diff file4625 #diff_line4626 returns the correct diff line4627 #line_code4628 returns the correct line code4629 position for an added image file4630 is expected not to be on text4631 is expected to be on image4632 returns the correct diff file4633 position for a changed file4634 position for an added line4635 #diff_file4636 returns the correct diff file4637 different folded positions in the same diff file4638 expands the diff file4639 #diff_line4640 returns the correct diff line4641 #line_code4642 returns the correct line code4643 position for an unchanged line4644 #diff_file4645 returns the correct diff file4646 #diff_line4647 returns the correct diff line4648 #line_code4649 returns the correct line code4650 position for a removed line4651 #diff_file4652 returns the correct diff file4653 #diff_line4654 returns the correct diff line4655 #line_code4656 returns the correct line code4657 position for a renamed file4658 position for an added line4659 #diff_file4660 returns the correct diff file4661 #diff_line4662 returns the correct diff line4663 #line_code4664 returns the correct line code4665 position for an unchanged line4666 #diff_file4667 returns the correct diff file4668 #diff_line4669 returns the correct diff line4670 #line_code4671 returns the correct line code4672 position for a removed line4673 #diff_file4674 returns the correct diff file4675 #diff_line4676 returns the correct diff line4677 #line_code4678 returns the correct line code4679 position for a deleted file4680 #diff_file4681 returns the correct diff file4682 #diff_line4683 returns the correct diff line4684 #line_code4685 returns the correct line code4686 position for a missing ref4687 #diff_file4688 does not raise exception4689 #diff_line4690 does not raise exception4691 #line_code4692 does not raise exception4693 position for a file in the initial commit4694 #diff_file4695 returns the correct diff file4696 #diff_line4697 returns the correct diff line4698 #line_code4699 returns the correct line code4700 position for a file in a straight comparison4701 #diff_file4702 returns the correct diff file4703 #diff_line4704 returns the correct diff line4705 #line_code4706 returns the correct line code4707 #==4708 when positions are equal4709 returns true4710 when positions are equal, except for truncated shas4711 returns true4712 when positions are unequal4713 returns false4714 #as_json4715 for text position4716 behaves like diff position json4717 returns the position as JSON4718 for image position4719 behaves like diff position json4720 returns the position as JSON4721 #to_json4722 for text position4723 behaves like diff position json4724 returns the position as JSON4725 works when nested under another hash4726 for image position4727 behaves like diff position json4728 returns the position as JSON4729 works when nested under another hash4730 #file_hash4731 returns SHA1 representation of the file_path4732 #multiline?4733 when the position type is text4734 when the start lines equal the end lines4735 returns true4736 when the start lines do not equal the end lines4737 returns true4738 when the position type is not text4739 returns false4740BulkImports::CreateService4741 #execute4742 when gitlab version is 15.5 or higher4743 when a BulkImports::Error is raised while validating the instance version4744 rescues the error and raises a ServiceResponse::Error4745 when direct transfer status query returns a 4034746 raises a ServiceResponse::Error4747 when direct transfer setting query returns a 4044748 raises a ServiceResponse::Error4749 when required scopes are not present4750 returns ServiceResponse with error if token does not have api scope4751 when token validation succeeds4752 creates bulk import4753 on the same instance4754 tracks the same instance migration4755 projects migration flag4756 when false4757 sets false4758 when true4759 sets true4760 when nil4761 sets true4762 when gitlab version is lower than 15.54763 creates bulk import4764 creates bulk import entities4765 creates bulk import configuration4766 enqueues BulkImportWorker4767 returns success ServiceResponse4768 returns ServiceResponse with error if validation fails4769 on the same instance4770 tracks the same instance migration4771 #user-role4772 defines access_level as not a member4773 when there is a parent_namespace and the user is a member4774 defines access_level from parent namespace membership4775 when there is a destination_namespace but no parent_namespace4776 defines access_level from destination_namespace4777 when there is no destination_namespace or parent_namespace4778 defines access_level as owner4779 #validate_setting_enabled!4780 when the source_type is a group4781 when the source_full_path contains only integer characters4782 makes a graphql request using the group full path and an http request with the correct id4783 when the source_type is a project4784 when the source_full_path contains only integer characters4785 makes a graphql request using the group full path and an http request with the correct id4786 #validate_destination_namespace4787 when the destination_namespace does not exist4788 returns ServiceResponse with an error message4789 when the user does not have permission to create subgroups4790 returns ServiceResponse with an error message4791 when the user does not have permission to create projects4792 returns ServiceResponse with an error message4793 #validate_destination_slug4794 when the destination_slug is invalid4795 returns ServiceResponse with an error message4796 #validate_destination_full_path4797 when the source_type is a group4798 when the provided destination_slug already exists in the destination_namespace4799 returns ServiceResponse with an error message4800 when the destination_slug conflicts with an existing top-level namespace4801 returns ServiceResponse with an error message4802 when the destination_slug does not conflict with an existing top-level namespace4803 returns success ServiceResponse4804 when the source_type is a project4805 when the provided destination_slug already exists in the destination_namespace4806 returns ServiceResponse with an error message4807 when the destination_slug does not conflict with an existing project4808 returns success ServiceResponse4809Ci::BuildRunnerSession4810 is expected to belong to build required: false4811 is expected to validate that :build cannot be empty/falsy4812 is expected to validate that :url cannot be empty/falsy, producing a custom validation error on failure4813 url validation of local web hook address4814 with allow_local_requests_from_web_hooks_and_services? stubbed4815 as returning true4816 creates a new session4817 as returning false4818 does not create a new session4819 nested attribute assignment4820 creates a new session4821 updates session with new attributes4822 #terminal_specification4823 returns terminal.gitlab.com protocol4824 returns a wss url4825 returns empty hash if no url4826 returns url with appended query if url has query4827 when url is present4828 returns ca_pem nil if empty certificate4829 adds Authorization header if authorization is present4830 #service_specification4831 returns service proxy url4832 returns default service proxy websocket subprotocol4833 returns empty hash if no url4834 returns url with appended query if url has query4835 when port is not present4836 uses the default port name4837 when the service is not present4838 uses the service name "build" as default4839 when url is present4840 returns ca_pem nil if empty certificate4841 adds Authorization header if authorization is present4842 when subprotocol is present4843 returns the new subprotocol4844 partitioning4845 assigns the same partition id as the one that build has4846Gitlab::Counters::BufferedCounter4847 # order random4848 #get4849 returns the value when there is an existing value stored in the counter4850 returns 0 when there is no existing value4851 #cleanup_refresh4852 removes all tracking keys4853 #increment4854 when the counter is not undergoing refresh4855 sets a new key by the given value4856 increments an existing key by the given value4857 returns the value of the key after the increment4858 schedules a worker to commit the counter key into database4859 when the counter is undergoing refresh4860 does not increment the counter key4861 increments the amount in the refresh key4862 schedules a worker to commit the counter key into database4863 when it is an increment (positive amount)4864 when it is the first increment on the ref4865 behaves like changing the counter refresh key by the given amount4866 changes the refresh counter key by the given value4867 returns the value of the key after the increment4868 when it follows an existing increment on the same ref4869 behaves like not changing the counter refresh key4870 does not change the counter4871 returns the unchanged value of the key4872 when it follows an existing decrement on the same ref4873 behaves like not changing the counter refresh key4874 does not change the counter4875 returns the unchanged value of the key4876 when there has been an existing increment on another ref4877 behaves like changing the counter refresh key by the given amount4878 changes the refresh counter key by the given value4879 returns the value of the key after the increment4880 when there has been an existing decrement on another ref4881 behaves like changing the counter refresh key by the given amount4882 changes the refresh counter key by the given value4883 returns the value of the key after the increment4884 when it is a decrement (negative amount)4885 when it is the first decrement on the same ref4886 behaves like not changing the counter refresh key4887 does not change the counter4888 returns the unchanged value of the key4889 when it follows an existing decrement on the ref4890 behaves like not changing the counter refresh key4891 does not change the counter4892 returns the unchanged value of the key4893 when it follows an existing increment on the ref4894 behaves like changing the counter refresh key by the given amount4895 changes the refresh counter key by the given value4896 returns the value of the key after the increment4897 when there has been an existing increment on another ref4898 behaves like not changing the counter refresh key4899 does not change the counter4900 returns the unchanged value of the key4901 when there has been an existing decrement on another ref4902 behaves like not changing the counter refresh key4903 does not change the counter4904 returns the unchanged value of the key4905 when the amount is 04906 when it is the first increment on the ref4907 behaves like not changing the counter refresh key4908 does not change the counter4909 returns the unchanged value of the key4910 when it follows the another increment on the ref4911 behaves like not changing the counter refresh key4912 does not change the counter4913 returns the unchanged value of the key4914 when the ref is greater than 67108863 (8MB)4915 deduplicates increments correctly4916 #amount_to_be_flushed4917 increment: nil, flushed: nil, result: 0, flushed_key_present: false4918 returns the current value to be flushed4919 drops the increment key and creates the flushed key if it does not exist4920 increment: nil, flushed: 0, result: 0, flushed_key_present: false4921 returns the current value to be flushed4922 drops the increment key and creates the flushed key if it does not exist4923 increment: 0, flushed: 0, result: 0, flushed_key_present: false4924 returns the current value to be flushed4925 drops the increment key and creates the flushed key if it does not exist4926 increment: 1, flushed: 0, result: 1, flushed_key_present: true4927 returns the current value to be flushed4928 drops the increment key and creates the flushed key if it does not exist4929 increment: 1, flushed: nil, result: 1, flushed_key_present: true4930 returns the current value to be flushed4931 drops the increment key and creates the flushed key if it does not exist4932 increment: 1, flushed: 1, result: 2, flushed_key_present: true4933 returns the current value to be flushed4934 drops the increment key and creates the flushed key if it does not exist4935 increment: 1, flushed: -2, result: -1, flushed_key_present: true4936 returns the current value to be flushed4937 drops the increment key and creates the flushed key if it does not exist4938 increment: -1, flushed: 1, result: 0, flushed_key_present: false4939 returns the current value to be flushed4940 drops the increment key and creates the flushed key if it does not exist4941 #bulk_increment4942 when the counter is not undergoing refresh4943 increments the key by the given values4944 returns the value of the key after the increment4945 schedules a worker to commit the counter into database4946 when the counter is undergoing refresh4947 when there are 2 increments on different ref4948 behaves like changing the counter refresh key by the expected amount4949 changes the counter refresh key by the net change4950 returns the value of the key after the increment4951 when there has been previous decrements4952 behaves like changing the counter refresh key by the expected amount4953 changes the counter refresh key by the net change4954 returns the value of the key after the increment4955 when one of the increment is repeated4956 behaves like changing the counter refresh key by the expected amount4957 changes the counter refresh key by the net change4958 returns the value of the key after the increment4959 when there are 2 decrements on different ref4960 behaves like changing the counter refresh key by the expected amount4961 changes the counter refresh key by the net change4962 returns the value of the key after the increment4963 when there has been previous increments4964 behaves like changing the counter refresh key by the expected amount4965 changes the counter refresh key by the net change4966 returns the value of the key after the increment4967 when there is a mixture of increment and decrement on different refs4968 behaves like changing the counter refresh key by the expected amount4969 changes the counter refresh key by the net change4970 returns the value of the key after the increment4971 when the increment ref has been decremented4972 behaves like changing the counter refresh key by the expected amount4973 changes the counter refresh key by the net change4974 returns the value of the key after the increment4975 when the decrement ref has been incremented4976 behaves like changing the counter refresh key by the expected amount4977 changes the counter refresh key by the net change4978 returns the value of the key after the increment4979 #initiate_refresh!4980 removes the key from Redis4981 resets the counter to 04982 resets the record to 04983 sets a refresh indicator with a long expiry4984 #finalize_refresh4985 with existing amount in refresh key4986 moves the deduplicated amount in the refresh key into the counter key4987 removes the refresh counter key and the refresh indicator4988 schedules a worker to clean up the refresh tracking keys4989 without existing amount in refresh key4990 does not change the counter key4991 removes the refresh indicator key4992 schedules a worker to commit the counter key into database4993 #commit_increment!4994 obtains an exclusive lease during processing4995 when there is an amount to commit4996 commits the increment into the database4997 removes the increment entry from Redis4998 when there are no counters to flush4999 when there are no counters in the relative :flushed key5000 does not change the record5001 when there are counters in the relative :flushed key5002 updates the record5003 deletes the relative :flushed key5004 when deleting :flushed key fails5005 does a rollback of the counter update5006 when the counter record has after_commit callbacks5007 has registered callbacks5008 when there are increments to flush5009 executes the callbacks5010 when there are no increments to flush5011 does not execute the callbacks5012VerifyPagesDomainService5013 #execute5014 domain_sym: :domain, code_sym: :verification_code5015 when domain is disabled(or new)5016 when txt record contains verification code5017 verifies and enables the domain5018 when txt record contains verification code with other text5019 verifies and enables the domain5020 when txt record does not contain verification code5021 unverifies domain5022 disables domain and shedules it for removal in 1 week5023 when txt record does not contain verification code5024 unverifies domain5025 disables domain and shedules it for removal in 1 week5026 when no txt records are present5027 unverifies domain5028 disables domain and shedules it for removal in 1 week5029 when domain is verified5030 when txt record contains verification code5031 verifies and enables the domain5032 when txt record contains verification code with other text5033 verifies and enables the domain5034 when txt record does not contain verification code5035 unverifies but does not disable domain5036 does not schedule domain for removal5037 when no txt records are present5038 unverifies but does not disable domain5039 does not schedule domain for removal5040 when domain is expired5041 when the right code is present5042 verifies and enables the domain5043 when the right code is not present5044 unverifies domain5045 disables domain and shedules it for removal in 1 week5046 when domain is disabled and scheduled for removal5047 when the right code is present5048 verifies and enables domain5049 prevent domain from being removed5050 when the right code is not present5051 keeps domain scheduled for removal but does not change removal time5052 invalid domain5053 can be disabled5054 domain_sym: :domain, code_sym: :keyed_verification_code5055 when domain is disabled(or new)5056 when txt record contains verification code5057 verifies and enables the domain5058 when txt record contains verification code with other text5059 verifies and enables the domain5060 when txt record does not contain verification code5061 unverifies domain5062 disables domain and shedules it for removal in 1 week5063 when txt record does not contain verification code5064 unverifies domain5065 disables domain and shedules it for removal in 1 week5066 when no txt records are present5067 unverifies domain5068 disables domain and shedules it for removal in 1 week5069 when domain is verified5070 when txt record contains verification code5071 verifies and enables the domain5072 when txt record contains verification code with other text5073 verifies and enables the domain5074 when txt record does not contain verification code5075 unverifies but does not disable domain5076 does not schedule domain for removal5077 when no txt records are present5078 unverifies but does not disable domain5079 does not schedule domain for removal5080 when domain is expired5081 when the right code is present5082 verifies and enables the domain5083 when the right code is not present5084 unverifies domain5085 disables domain and shedules it for removal in 1 week5086 when domain is disabled and scheduled for removal5087 when the right code is present5088 verifies and enables domain5089 prevent domain from being removed5090 when the right code is not present5091 keeps domain scheduled for removal but does not change removal time5092 invalid domain5093 can be disabled5094 domain_sym: :verification_domain, code_sym: :verification_code5095 when domain is disabled(or new)5096 when txt record contains verification code5097 verifies and enables the domain5098 when txt record contains verification code with other text5099 verifies and enables the domain5100 when txt record does not contain verification code5101 unverifies domain5102 disables domain and shedules it for removal in 1 week5103 when txt record does not contain verification code5104 unverifies domain5105 disables domain and shedules it for removal in 1 week5106 when no txt records are present5107 unverifies domain5108 disables domain and shedules it for removal in 1 week5109 when domain is verified5110 when txt record contains verification code5111 verifies and enables the domain5112 when txt record contains verification code with other text5113 verifies and enables the domain5114 when txt record does not contain verification code5115 unverifies but does not disable domain5116 does not schedule domain for removal5117 when no txt records are present5118 unverifies but does not disable domain5119 does not schedule domain for removal5120 when domain is expired5121 when the right code is present5122 verifies and enables the domain5123 when the right code is not present5124 unverifies domain5125 disables domain and shedules it for removal in 1 week5126 when domain is disabled and scheduled for removal5127 when the right code is present5128 verifies and enables domain5129 prevent domain from being removed5130 when the right code is not present5131 keeps domain scheduled for removal but does not change removal time5132 invalid domain5133 can be disabled5134 domain_sym: :verification_domain, code_sym: :keyed_verification_code5135 when domain is disabled(or new)5136 when txt record contains verification code5137 verifies and enables the domain5138 when txt record contains verification code with other text5139 verifies and enables the domain5140 when txt record does not contain verification code5141 unverifies domain5142 disables domain and shedules it for removal in 1 week5143 when txt record does not contain verification code5144 unverifies domain5145 disables domain and shedules it for removal in 1 week5146 when no txt records are present5147 unverifies domain5148 disables domain and shedules it for removal in 1 week5149 when domain is verified5150 when txt record contains verification code5151 verifies and enables the domain5152 when txt record contains verification code with other text5153 verifies and enables the domain5154 when txt record does not contain verification code5155 unverifies but does not disable domain5156 does not schedule domain for removal5157 when no txt records are present5158 unverifies but does not disable domain5159 does not schedule domain for removal5160 when domain is expired5161 when the right code is present5162 verifies and enables the domain5163 when the right code is not present5164 unverifies domain5165 disables domain and shedules it for removal in 1 week5166 when domain is disabled and scheduled for removal5167 when the right code is present5168 verifies and enables domain5169 prevent domain from being removed5170 when the right code is not present5171 keeps domain scheduled for removal but does not change removal time5172 invalid domain5173 can be disabled5174 timeout behaviour5175 sets a timeout on the DNS query5176 email notifications5177 factory: nil, verification_succeeds: true, expected_notification: nil5178 sends a notification if appropriate5179 factory: nil, verification_succeeds: false, expected_notification: :verification_failed5180 sends a notification if appropriate5181 factory: :reverify, verification_succeeds: true, expected_notification: nil5182 sends a notification if appropriate5183 factory: :reverify, verification_succeeds: false, expected_notification: :verification_failed5184 sends a notification if appropriate5185 factory: :unverified, verification_succeeds: true, expected_notification: :verification_succeeded5186 sends a notification if appropriate5187 factory: :unverified, verification_succeeds: false, expected_notification: nil5188 sends a notification if appropriate5189 factory: :expired, verification_succeeds: true, expected_notification: nil5190 sends a notification if appropriate5191 factory: :expired, verification_succeeds: false, expected_notification: :disabled5192 sends a notification if appropriate5193 factory: :disabled, verification_succeeds: true, expected_notification: :enabled5194 sends a notification if appropriate5195 factory: :disabled, verification_succeeds: false, expected_notification: nil5196 sends a notification if appropriate5197 pages verification disabled5198 skips email notifications5199 no verification code5200 returns an error5201 pages domain verification is disabled5202 extends domain validity by unconditionally reverifying5203 does not shorten any grace period5204Gitlab::Graphql::Pagination::Keyset::Connection5205 invokes no an extra query for the next page check5206 when the relation is loaded5207 invokes no extra query5208 with generic keyset order support5209 behaves like a connection with collection methods5210 responds to to_a5211 responds to size5212 responds to map5213 responds to include?5214 responds to empty?5215 behaves like a redactable connection5216 no redactor set5217 contains the unwanted item5218 does not redact more than once5219 redactor is set5220 does not contain the unwanted item5221 does not redact more than once5222 #cursor_for5223 returns an encoded ID5224 when an order is specified5225 returns the encoded value of the order5226 when multiple orders are specified5227 returns the encoded value of the order5228 #sliced_nodes5229 when before is passed5230 only returns the project before the selected one5231 when the sort order is descending5232 returns the correct nodes5233 when after is passed5234 only returns the project before the selected one5235 when the sort order is descending5236 returns the correct nodes5237 when both before and after are passed5238 returns the expected set5239 when multiple orders with nil values are defined5240 when ascending5241 behaves like nodes are in ascending order5242 when no cursor is passed5243 returns projects in ascending order5244 when before cursor value is not NULL5245 returns all projects before the cursor5246 when after cursor value is not NULL5247 returns all projects after the cursor5248 when before and after cursor5249 returns all projects after the cursor5250 when before cursor value is NULL5251 returns all projects before the cursor5252 when after cursor value is NULL5253 returns all projects after the cursor5254 when descending5255 behaves like nodes are in descending order5256 when no cursor is passed5257 only returns projects in descending order5258 when before cursor value is not NULL5259 returns all projects before the cursor5260 when after cursor value is not NULL5261 returns all projects after the cursor5262 when before and after cursor5263 returns all projects after the cursor5264 when before cursor value is NULL5265 returns all projects before the cursor5266 when after cursor value is NULL5267 returns all projects after the cursor5268 when ordering by similarity5269 behaves like nodes are in descending order5270 when no cursor is passed5271 only returns projects in descending order5272 when before cursor value is not NULL5273 returns all projects before the cursor5274 when after cursor value is not NULL5275 returns all projects after the cursor5276 when before and after cursor5277 returns all projects after the cursor5278 when an invalid cursor is provided5279 raises an error5280 #nodes5281 behaves like connection with paged nodes5282 returns the collection limited to max page size5283 is a loaded memoized array5284 when `first` is passed5285 returns only the first elements5286 when `last` is passed5287 returns only the last elements5288 when both are passed5289 raises an error5290 when primary key is not in original order5291 is added to end5292 when there is no primary key5293 raises an error5294 #has_previous_page and #has_next_page5295 when default query5296 has no previous, but a next5297 when before is first item5298 has no previous, but a next5299 using `before`5300 when before is the last item5301 has no previous, but a next5302 when before and last specified5303 has a previous and a next5304 when before and last does request all remaining nodes5305 has a previous and a next5306 using `after`5307 when after is the first item5308 has a previous, and a next5309 when after and first specified5310 has a previous and a next5311 when before and last does request all remaining nodes5312 has a previous but no next5313Packages::PackageFile5314 behaves like having unique enum values5315 has unique values in "status"5316 behaves like destructible5317 .next_pending_destruction5318 returns the oldest item pending destruction based on updated_at5319 returns the oldest item pending destruction based on created_at5320 relationships5321 is expected to belong to package required: false5322 is expected to have one conan_file_metadatum5323 is expected to have many package_file_build_infos inverse_of => package_file5324 is expected to have one debian_file_metadatum class_name => Packages::Debian::FileMetadatum inverse_of => package_file5325 is expected to have one helm_file_metadatum class_name => Packages::Helm::FileMetadatum inverse_of => package_file5326 validations5327 is expected to validate that :package cannot be empty/falsy5328 with pypi package5329 file_name5330 can not save a duplicated file5331 with a pending destruction package duplicated file5332 can save it5333 file_sha2565334 sha256_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", expected_success: true5335 does not allow invalid sha256 characters5336 sha256_value: nil, expected_success: true5337 does not allow invalid sha256 characters5338 sha256_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", expected_success: false5339 does not allow invalid sha256 characters5340 sha256_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", expected_success: false5341 does not allow invalid sha256 characters5342 sha256_value: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%", expected_success: false5343 does not allow invalid sha256 characters5344 sha256_value: "", expected_success: false5345 does not allow invalid sha256 characters5346 with package filenames5347 .with_file_name5348 is expected to contain exactly #<Packages::PackageFile id: 4, package_id: 4, created_at: "2023-10-20 08:46:22.529662494 +0000", upda...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5349 .with_file_name_like5350 is expected to contain exactly #<Packages::PackageFile id: 4, package_id: 4, created_at: "2023-10-20 08:46:22.529662494 +0000", upda...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5351 .with_format5352 is expected to contain exactly #<Packages::PackageFile id: 6, package_id: 6, created_at: "2023-10-20 08:46:23.130648940 +0000", upda...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5353 .with_nuget_format5354 is expected to contain exactly #<Packages::PackageFile id: 7, package_id: 7, created_at: "2023-10-20 08:46:23.433861668 +0000", upda...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5355 updating project statistics5356 when the package file has an explicit size5357 behaves like UpdateProjectStatistics5358 is expected to be a new record5359 when statistic is a counter attribute5360 when creating5361 stores pending increments for async update5362 when updating5363 stores pending increments for async update5364 avoids N + 1 queries5365 when destroying5366 stores pending increment for async update5367 when it is destroyed from the project level5368 does not store pending increments for async update5369 does not schedule a namespace statistics worker5370 .for_package_ids5371 returns matching packages5372 .with_conan_package_reference5373 returns matching packages5374 .for_rubygem_with_file_name5375 returns the matching gem file only for ruby packages5376 Debian scopes5377 #with_debian_file_type5378 is expected to contain exactly #<Packages::PackageFile id: 15, package_id: 8, created_at: "2023-10-20 08:46:23.661239000 +0000", upd...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5379 #with_debian_component_name5380 is expected to contain exactly #<Packages::PackageFile id: 41, package_id: 8, created_at: "2023-10-20 08:46:29.485615815 +0000", upd...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5381 #with_debian_architecture_name5382 is expected to contain exactly #<Packages::PackageFile id: 42, package_id: 8, created_at: "2023-10-20 08:46:29.507318593 +0000", upd...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5383 #with_debian_unknown_since5384 is expected to contain exactly #<Packages::PackageFile id: 43, package_id: 20, created_at: "2023-10-20 08:46:29.730265000 +0000", up...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5385 .for_helm_with_channel5386 returns the matching file only for Helm packages5387 with package files pending destruction5388 does not return them5389 .most_recent!5390 is expected to eq #<Packages::PackageFile id: 15, package_id: 8, created_at: "2023-10-20 08:46:23.661239000 +0000", upd...um: nil, verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5391 .most_recent_for5392 package_input1: 1, package_input2: 2, package_input3: 3, package_input4: 45393 is expected to contain exactly #<Packages::PackageFile id: 57, package_id: 24, created_at: "2023-10-20 08:46:30.823764000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>, #<Packages::PackageFile id: 67, package_id: 25, created_at: "2023-10-20 08:46:31.756425000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>, #<Packages::PackageFile id: 63, package_id: 26, created_at: "2023-10-20 08:46:31.704909000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>, and #<Packages::PackageFile id: 60, package_id: 27, created_at: "2023-10-20 08:46:31.665251000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5394 package_input1: 1, package_input2: 2, package_input3: 3, package_input4: nil5395 is expected to contain exactly #<Packages::PackageFile id: 57, package_id: 24, created_at: "2023-10-20 08:46:30.823764000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>, #<Packages::PackageFile id: 67, package_id: 25, created_at: "2023-10-20 08:46:31.756425000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>, and #<Packages::PackageFile id: 63, package_id: 26, created_at: "2023-10-20 08:46:31.704909000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5396 package_input1: 1, package_input2: 2, package_input3: nil, package_input4: 45397 is expected to contain exactly #<Packages::PackageFile id: 57, package_id: 24, created_at: "2023-10-20 08:46:30.823764000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>, #<Packages::PackageFile id: 67, package_id: 25, created_at: "2023-10-20 08:46:31.756425000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>, and #<Packages::PackageFile id: 60, package_id: 27, created_at: "2023-10-20 08:46:31.665251000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5398 package_input1: 1, package_input2: 2, package_input3: nil, package_input4: nil5399 is expected to contain exactly #<Packages::PackageFile id: 57, package_id: 24, created_at: "2023-10-20 08:46:30.823764000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil> and #<Packages::PackageFile id: 67, package_id: 25, created_at: "2023-10-20 08:46:31.756425000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5400 package_input1: 1, package_input2: nil, package_input3: 3, package_input4: 45401 is expected to contain exactly #<Packages::PackageFile id: 57, package_id: 24, created_at: "2023-10-20 08:46:30.823764000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>, #<Packages::PackageFile id: 63, package_id: 26, created_at: "2023-10-20 08:46:31.704909000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>, and #<Packages::PackageFile id: 60, package_id: 27, created_at: "2023-10-20 08:46:31.665251000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5402 package_input1: 1, package_input2: nil, package_input3: 3, package_input4: nil5403 is expected to contain exactly #<Packages::PackageFile id: 57, package_id: 24, created_at: "2023-10-20 08:46:30.823764000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil> and #<Packages::PackageFile id: 63, package_id: 26, created_at: "2023-10-20 08:46:31.704909000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5404 package_input1: 1, package_input2: nil, package_input3: nil, package_input4: 45405 is expected to contain exactly #<Packages::PackageFile id: 57, package_id: 24, created_at: "2023-10-20 08:46:30.823764000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil> and #<Packages::PackageFile id: 60, package_id: 27, created_at: "2023-10-20 08:46:31.665251000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5406 package_input1: 1, package_input2: nil, package_input3: nil, package_input4: nil5407 is expected to contain exactly #<Packages::PackageFile id: 57, package_id: 24, created_at: "2023-10-20 08:46:30.823764000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5408 package_input1: nil, package_input2: 2, package_input3: 3, package_input4: 45409 is expected to contain exactly #<Packages::PackageFile id: 67, package_id: 25, created_at: "2023-10-20 08:46:31.756425000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>, #<Packages::PackageFile id: 63, package_id: 26, created_at: "2023-10-20 08:46:31.704909000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>, and #<Packages::PackageFile id: 60, package_id: 27, created_at: "2023-10-20 08:46:31.665251000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5410 package_input1: nil, package_input2: 2, package_input3: 3, package_input4: nil5411 is expected to contain exactly #<Packages::PackageFile id: 67, package_id: 25, created_at: "2023-10-20 08:46:31.756425000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil> and #<Packages::PackageFile id: 63, package_id: 26, created_at: "2023-10-20 08:46:31.704909000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5412 package_input1: nil, package_input2: 2, package_input3: nil, package_input4: 45413 is expected to contain exactly #<Packages::PackageFile id: 67, package_id: 25, created_at: "2023-10-20 08:46:31.756425000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil> and #<Packages::PackageFile id: 60, package_id: 27, created_at: "2023-10-20 08:46:31.665251000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5414 package_input1: nil, package_input2: 2, package_input3: nil, package_input4: nil5415 is expected to contain exactly #<Packages::PackageFile id: 67, package_id: 25, created_at: "2023-10-20 08:46:31.756425000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5416 package_input1: nil, package_input2: nil, package_input3: 3, package_input4: 45417 is expected to contain exactly #<Packages::PackageFile id: 63, package_id: 26, created_at: "2023-10-20 08:46:31.704909000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil> and #<Packages::PackageFile id: 60, package_id: 27, created_at: "2023-10-20 08:46:31.665251000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5418 package_input1: nil, package_input2: nil, package_input3: 3, package_input4: nil5419 is expected to contain exactly #<Packages::PackageFile id: 63, package_id: 26, created_at: "2023-10-20 08:46:31.704909000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5420 package_input1: nil, package_input2: nil, package_input3: nil, package_input4: 45421 is expected to contain exactly #<Packages::PackageFile id: 60, package_id: 27, created_at: "2023-10-20 08:46:31.665251000 +0000", up...01c...", verification_state: 0, verification_started_at: nil, status: "default", new_file_path: nil>5422 package_input1: nil, package_input2: nil, package_input3: nil, package_input4: nil5423 is expected to contain exactly5424 extra join and extra where5425 returns the most recent package for the selected channel5426 with package files pending destruction5427 does not return them5428 #pipelines5429 package_file without pipeline5430 is expected to be empty5431 package_file with pipeline5432 is expected to contain exactly #<Ci::Pipeline id: 179, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: n...: nil, external_pull_request_id: nil, ci_ref_id: 151, locked: "artifacts_locked", partition_id: 100> and #<Ci::Pipeline id: 180, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: n...: nil, external_pull_request_id: nil, ci_ref_id: 152, locked: "artifacts_locked", partition_id: 100>5433 #update_file_store callback5434 updates metadata columns5435 update callbacks5436 with object storage disabled5437 behaves like executing the default callback5438 executes the default callback5439 with new_file_path set5440 behaves like executing the default callback5441 executes the default callback5442 with object storage enabled5443 behaves like executing the default callback5444 executes the default callback5445 with new_file_path set5446 executes the move_in_object_storage callback5447 status scopes5448 .installable5449 does not include non-displayable packages5450 .with_status5451 is expected to contain exactly #<Packages::PackageFile id: 81, package_id: 36, created_at: "2023-10-20 08:46:37.574860573 +0000", up...ification_state: 0, verification_started_at: nil, status: "pending_destruction", new_file_path: nil>5452MarkupHelper5453 #markdown5454 referencing multiple objects5455 links to the merge request5456 links to the commit5457 links to the issue5458 override default project5459 links to the issue5460 uploads5461 inside a project5462 renders uploads relative to project5463 inside a group5464 renders uploads relative to the group5465 with a group in the context5466 renders uploads relative to project5467 when text contains a relative link to an image in the repository5468 when requested_path is provided, but ref isn't5469 returns the correct HTML for the image5470 when requested_path and ref parameters are both provided5471 returns the correct HTML for the image5472 when ref is provided, but requested_path isn't5473 returns the correct HTML for the image5474 when neither requested_path, nor ref parameter is provided5475 returns the correct HTML for the image5476 #markdown_field5477 with already redacted attribute5478 returns the redacted attribute5479 without redacted attribute5480 renders the markdown value5481 when post_process is false5482 does not run Markdown post processing5483 #link_to_markdown_field5484 handles references nested in links with all the text5485 #link_to_markdown5486 handles references nested in links with all the text5487 forwards HTML options5488 escapes HTML passed in as the body5489 ignores reference links when they are the entire body5490 replaces commit message with emoji to link5491 #link_to_html5492 wraps the rendered content in a link5493 escapes HTML passed as an emoji5494 #render_wiki_content5495 when file is Markdown5496 renders using CommonMark method5497 when context has labels5498 renders label5499 when content has uploads5500 renders uploads relative to project5501 when file is Asciidoc5502 renders using Gitlab::Asciidoc5503 when file is R Markdown5504 renders using CommonMark method5505 any other format5506 renders all other formats using Gitlab::OtherMarkup5507 #markup5508 sets the :text_source to :blob in the context5509 preserves encoding5510 uses passed in rendered content5511 defaults to CommonMark5512 sets additional context for Asciidoc5513 #first_line_in_markdown5514 when the asked attribute can be redacted5515 displays inline code5516 truncates the text with multiple paragraphs5517 displays the first line of a code block5518 truncates a single long line of text5519 preserves code color scheme5520 removes any images5521 keeps whitelisted tags5522 does not post-process truncated text5523 strips non-user links5524 styles the current user link5525 labels formatting5526 preserves style attribute for a label that can be accessed by current_user5527 does not style a label that can not be accessed by current_user5528 when current_user is nil5529 renders the link with no styling when current_user is nil5530 when the asked attribute can not be redacted5531 displays inline code5532 truncates the text with multiple paragraphs5533 displays the first line of a code block5534 truncates a single long line of text5535 preserves code color scheme5536 removes any images5537 keeps whitelisted tags5538 does not post-process truncated text5539 strips non-user links5540 styles the current user link5541 labels formatting5542 preserves style attribute for a label that can be accessed by current_user5543 does not style a label that can not be accessed by current_user5544 when current_user is nil5545 renders the link with no styling when current_user is nil5546 #cross_project_reference5547 shows the full MR reference5548 shows the full issue reference5549Ability5550 using a nil subject5551 has no permissions5552 .users_that_can_read_project5553 using a public project5554 returns all the users5555 using an internal project5556 returns users that are administrators5557 returns internal users while skipping external users5558 returns external users if they are the project owner5559 returns external users if they are project members5560 returns an empty Array if all users are external users without access5561 using a private project5562 returns users that are administrators when admin mode is enabled5563 does not return users that are administrators when admin mode is disabled5564 returns external users if they are the project owner5565 returns external users if they are project members5566 returns an empty Array if all users are internal users without access5567 returns an empty Array if all users are external users without access5568 .users_that_can_read_personal_snippet5569 private snippet is readable only by its author5570 public snippet is readable by all users5571 .users_that_can_read_internal_note5572 for groups5573 behaves like filtering users that can read internal note5574 returns users that can read internal notes5575 for projects5576 behaves like filtering users that can read internal note5577 returns users that can read internal notes5578 .merge_requests_readable_by_user5579 with an admin when admin mode is enabled5580 returns all merge requests5581 with an admin when admin mode is disabled5582 returns merge_requests that are publicly visible5583 without a user5584 returns merge_requests that are publicly visible5585 with a user5586 returns projects visible to the user5587 when a user cannot read cross project and a filter is passed5588 returns only MRs of the specified project without checking access on others5589 .issues_readable_by_user5590 is aliased to .work_items_readable_by_user5591 with an admin when admin mode is enabled5592 returns all given issues5593 with an admin when admin mode is disabled5594 returns the issues readable by the admin5595 returns no issues when not given access5596 with a regular user5597 returns the issues readable by the user5598 returns an empty Array when no issues are readable5599 without a regular user5600 returns issues that are publicly visible5601 when the user cannot read cross project5602 excludes issues from other projects whithout checking separatly when passing a scope5603 .feature_flags_readable_by_user5604 without a user5605 returns no feature flags5606 with a user5607 returns feature flags visible to the user5608 when a user cannot read cross project and a filter is passed5609 returns only feature flags of the specified project without checking access on others5610 .project_disabled_features_rules5611 wiki named abilities5612 disables wiki abilities if the project has no wiki5613 forgetting5614 allows us to discard specific values from the DeclarativePolicy cache5615 when bypassing the session5616 allows us to have re-entrant evaluation of admin-only permissions5617Gitlab::FakeApplicationSettings5618 defines methods for default attributes5619 defines predicate methods for boolean properties5620 does not define a predicate method for non-boolean properties5621 returns nil for undefined attributes5622 does not override an existing predicate method5623 behaves like application settings examples5624 predicate method changes when value is updated5625 restricted signup domains5626 behaves like string of domains5627 sets single domain5628 sets multiple domains with spaces5629 sets multiple domains with newlines and a space5630 sets multiple domains with commas5631 sets multiple domains with semicolon5632 sets multiple domains with mixture of everything5633 removes duplicates5634 does not fail with garbage values5635 does not raise error with nil5636 denied signup domains5637 sets multiple domain with file5638 behaves like string of domains5639 sets single domain5640 sets multiple domains with spaces5641 sets multiple domains with newlines and a space5642 sets multiple domains with commas5643 sets multiple domains with semicolon5644 sets multiple domains with mixture of everything5645 removes duplicates5646 does not fail with garbage values5647 does not raise error with nil5648 outbound_local_requests_whitelist5649 clears outbound_local_requests_allowlist_arrays memoization5650 behaves like string of domains5651 sets single domain5652 sets multiple domains with spaces5653 sets multiple domains with newlines and a space5654 sets multiple domains with commas5655 sets multiple domains with semicolon5656 sets multiple domains with mixture of everything5657 removes duplicates5658 does not fail with garbage values5659 does not raise error with nil5660 outbound_local_requests_allowlist_arrays5661 separates the IPs and domains5662 add_to_outbound_local_requests_whitelist5663 adds entry to outbound_local_requests_whitelist5664 clears outbound_local_requests_allowlist_arrays memoization5665 does not raise error with nil5666 does not raise error with nil5667 usage ping settings5668 when the usage ping is disabled in gitlab.yml5669 does not allow the usage ping to be configured5670 when the usage ping is disabled in the DB5671 returns false for usage_ping_enabled5672 when the usage ping is enabled in the DB5673 returns false for usage_ping_enabled5674 when the usage ping is enabled in gitlab.yml5675 allows the usage ping to be configured5676 when the usage ping is disabled in the DB5677 returns false for usage_ping_enabled5678 when the usage ping is enabled in the DB5679 returns true for usage_ping_enabled5680 #allowed_key_types5681 excludes disabled key types5682 in non-FIPS mode5683 includes all key types by default5684 in FIPS mode5685 excludes DSA from supported key types5686 #key_restriction_for5687 returns the restriction value for recognised types5688 allows types to be passed as a string5689 returns forbidden for unrecognised type5690 #allow_signup?5691 returns true5692 returns false if signup is disabled5693 returns false if password authentication is disabled for the web interface5694 #pick_repository_storage5695 chooses repository based on weight5696 #normalized_repository_storage_weights5697 config_storages: ["default", "backup"], storages: {"default"=>0, "backup"=>100}, normalized: {"default"=>0.0, "backup"=>1.0}5698 normalizes storage weights5699 config_storages: ["default", "backup"], storages: {"default"=>100, "backup"=>100}, normalized: {"default"=>0.5, "backup"=>0.5}5700 normalizes storage weights5701 config_storages: ["default", "backup"], storages: {"default"=>20, "backup"=>80}, normalized: {"default"=>0.2, "backup"=>0.8}5702 normalizes storage weights5703 config_storages: ["default", "backup"], storages: {"default"=>0, "backup"=>0}, normalized: {"default"=>0.0, "backup"=>0.0}5704 normalizes storage weights5705 config_storages: ["default"], storages: {"default"=>0, "backup"=>100}, normalized: {"default"=>0.0}5706 normalizes storage weights5707 config_storages: ["default"], storages: {"default"=>100, "backup"=>100}, normalized: {"default"=>1.0}5708 normalizes storage weights5709 config_storages: ["default"], storages: {"default"=>20, "backup"=>80}, normalized: {"default"=>1.0}5710 normalizes storage weights5711 #user_default_internal_regex_enabled?5712 user_default_external: false, user_default_internal_regex: nil, result: false5713 is expected to eq false5714 user_default_external: false, user_default_internal_regex: "", result: false5715 is expected to eq false5716 user_default_external: false, user_default_internal_regex: "^(?:(?!\\.ext@).)*$\\r?\\n?", result: false5717 is expected to eq false5718 user_default_external: true, user_default_internal_regex: "", result: false5719 is expected to eq false5720 user_default_external: true, user_default_internal_regex: nil, result: false5721 is expected to eq false5722 user_default_external: true, user_default_internal_regex: "^(?:(?!\\.ext@).)*$\\r?\\n?", result: true5723 is expected to eq true5724 #archive_builds_older_than5725 when the archive_builds_in_seconds is set5726 is expected to be within 60 of 2023-10-20 07:47:12.256274066 +00005727 when the archive_builds_in_seconds is set5728 is expected to be nil5729 #commit_email_hostname5730 when the value is provided5731 returns the provided value5732 when the value is not provided5733 returns the default from the class5734Autocomplete::UsersFinder5735 #execute5736 is expected to contain exactly #<User id:1004 @johndoe>, #<User id:1007 @user663>, #<User id:1008 @user664>, and #<User id:1009 @user665>5737 preloads the status association5738 when current_user not passed or nil5739 is expected to contain exactly5740 when project passed5741 is expected to contain exactly #<User id:1011 @namespace481>5742 when author_id passed5743 and author is active5744 is expected to contain exactly #<User id:1011 @namespace481> and #<User id:1004 @johndoe>5745 and author is blocked5746 is expected to contain exactly #<User id:1011 @namespace481>5747 and author is banned5748 is expected to contain exactly #<User id:1011 @namespace481>5749 searching with less than 3 characters5750 allows partial matches5751 when group passed and project not passed5752 is expected to contain exactly #<User id:1004 @johndoe>5753 searching with less than 3 characters5754 allows partial matches5755 when passed a subgroup5756 includes users from parent groups, descendant groups, and descendant projects5757 when filtered by search5758 is expected to contain exactly #<User id:1004 @johndoe>5759 searching with less than 3 characters5760 does not allow partial matches5761 when todos exist5762 when filtered by todo_filter without todo_state_filter5763 is expected to contain exactly5764 when filtered by todo_filter with pending todo_state_filter5765 is expected to contain exactly #<User id:1004 @johndoe>5766 when filtered by todo_filter with done todo_state_filter5767 is expected to contain exactly #<User id:1007 @user663>5768 when filtered by current_user5769 is expected to contain exactly #<User id:1005 @blocked_user>, #<User id:1004 @johndoe>, #<User id:1007 @user663>, and #<User id:1008 @user664>5770 when filtered by author_id5771 is expected to contain exactly #<User id:1004 @johndoe>, #<User id:1007 @user663>, #<User id:1008 @user664>, and #<User id:1056 @user685>5772 when filtered by state5773 searching without states5774 is expected to contain exactly #<User id:1004 @johndoe>, #<User id:1007 @user663>, #<User id:1008 @user664>, and #<User id:1057 @user686>5775 searching with states=active5776 is expected to contain exactly #<User id:1004 @johndoe>, #<User id:1007 @user663>, #<User id:1008 @user664>, and #<User id:1058 @user687>5777 searching with states=blocked5778 is expected to contain exactly #<User id:1005 @blocked_user>5779 searching with states=banned5780 is expected to contain exactly #<User id:1006 @banned_user>5781 searching with states=blocked,banned5782 is expected to contain exactly #<User id:1005 @blocked_user> and #<User id:1006 @banned_user>5783BulkImports::Clients::HTTP5784 #get5785 performs network request5786 error handling5787 when any known HTTP error occurs5788 exception_class: Net::OpenTimeout5789 raises BulkImports::NetworkError5790 exception_class: Net::ReadTimeout5791 raises BulkImports::NetworkError5792 exception_class: Net::WriteTimeout5793 raises BulkImports::NetworkError5794 exception_class: Gitlab::HTTP_V2::ReadTotalTimeout5795 raises BulkImports::NetworkError5796 exception_class: EOFError5797 raises BulkImports::NetworkError5798 exception_class: SocketError5799 raises BulkImports::NetworkError5800 exception_class: OpenSSL::SSL::SSLError5801 raises BulkImports::NetworkError5802 exception_class: OpenSSL::OpenSSLError5803 raises BulkImports::NetworkError5804 exception_class: Errno::ECONNRESET5805 raises BulkImports::NetworkError5806 exception_class: Errno::ECONNREFUSED5807 raises BulkImports::NetworkError5808 exception_class: Errno::EHOSTUNREACH5809 raises BulkImports::NetworkError5810 exception_class: Errno::ENETUNREACH5811 raises BulkImports::NetworkError5812 exception_class: Gitlab::HTTP_V2::BlockedUrlError5813 raises BulkImports::NetworkError5814 exception_class: Gitlab::HTTP_V2::RedirectionTooDeep5815 raises BulkImports::NetworkError5816 exception_class: Net::HTTPBadResponse5817 raises BulkImports::NetworkError5818 when response is not success5819 raises BulkImports::NetworkError5820 #each_page5821 with a block5822 yields every retrieved page to the supplied block5823 without a block5824 returns an Enumerator5825 when the request is asynchronous5826 sets a timeout that is double the default read timeout5827 #post5828 performs network request5829 error handling5830 when any known HTTP error occurs5831 exception_class: Net::OpenTimeout5832 raises BulkImports::NetworkError5833 exception_class: Net::ReadTimeout5834 raises BulkImports::NetworkError5835 exception_class: Net::WriteTimeout5836 raises BulkImports::NetworkError5837 exception_class: Gitlab::HTTP_V2::ReadTotalTimeout5838 raises BulkImports::NetworkError5839 exception_class: EOFError5840 raises BulkImports::NetworkError5841 exception_class: SocketError5842 raises BulkImports::NetworkError5843 exception_class: OpenSSL::SSL::SSLError5844 raises BulkImports::NetworkError5845 exception_class: OpenSSL::OpenSSLError5846 raises BulkImports::NetworkError5847 exception_class: Errno::ECONNRESET5848 raises BulkImports::NetworkError5849 exception_class: Errno::ECONNREFUSED5850 raises BulkImports::NetworkError5851 exception_class: Errno::EHOSTUNREACH5852 raises BulkImports::NetworkError5853 exception_class: Errno::ENETUNREACH5854 raises BulkImports::NetworkError5855 exception_class: Gitlab::HTTP_V2::BlockedUrlError5856 raises BulkImports::NetworkError5857 exception_class: Gitlab::HTTP_V2::RedirectionTooDeep5858 raises BulkImports::NetworkError5859 exception_class: Net::HTTPBadResponse5860 raises BulkImports::NetworkError5861 when response is not success5862 raises BulkImports::NetworkError5863 #head5864 performs network request5865 error handling5866 when any known HTTP error occurs5867 exception_class: Net::OpenTimeout5868 raises BulkImports::NetworkError5869 exception_class: Net::ReadTimeout5870 raises BulkImports::NetworkError5871 exception_class: Net::WriteTimeout5872 raises BulkImports::NetworkError5873 exception_class: Gitlab::HTTP_V2::ReadTotalTimeout5874 raises BulkImports::NetworkError5875 exception_class: EOFError5876 raises BulkImports::NetworkError5877 exception_class: SocketError5878 raises BulkImports::NetworkError5879 exception_class: OpenSSL::SSL::SSLError5880 raises BulkImports::NetworkError5881 exception_class: OpenSSL::OpenSSLError5882 raises BulkImports::NetworkError5883 exception_class: Errno::ECONNRESET5884 raises BulkImports::NetworkError5885 exception_class: Errno::ECONNREFUSED5886 raises BulkImports::NetworkError5887 exception_class: Errno::EHOSTUNREACH5888 raises BulkImports::NetworkError5889 exception_class: Errno::ENETUNREACH5890 raises BulkImports::NetworkError5891 exception_class: Gitlab::HTTP_V2::BlockedUrlError5892 raises BulkImports::NetworkError5893 exception_class: Gitlab::HTTP_V2::RedirectionTooDeep5894 raises BulkImports::NetworkError5895 exception_class: Net::HTTPBadResponse5896 raises BulkImports::NetworkError5897 when response is not success5898 raises BulkImports::NetworkError5899 #stream5900 performs network request with stream_body option5901 #instance_version5902 returns version as an instance of Gitlab::VersionInfo5903 when /version endpoint is not available5904 requests /metadata endpoint5905 when /metadata endpoint returns a 4015906 raises a BulkImports:Error5907 when /metadata endpoint returns a 4035908 raises a BulkImports:Error5909 when /metadata endpoint returns a 4045910 raises a BulkImports:Error5911 when /metadata endpoint returns any other BulkImports::NetworkError5912 raises a BulkImports:NetworkError5913 #validate_instance_version!5914 when instance version is greater than or equal to the minimum major version5915 is expected to eq true5916 when instance version is less than the minimum major version5917 is expected to raise BulkImports::Error5918 #validate_import_scopes!5919 when the source_version is < 15.55920 skips validation5921 when source version is 15.5 or higher5922 when an HTTP error is raised5923 raises BulkImports::NetworkError5924 when scopes are valid5925 returns true5926 when scopes are invalid5927 raises a BulkImports error5928 #instance_enterprise5929 returns source instance enterprise information5930 when enterprise information is missing5931 defaults to true5932 #compatible_for_project_migration?5933 when instance version is lower the the expected minimum5934 returns false5935 when instance version is at least the expected minimum5936 returns true5937 when url is relative5938 performs network request to a relative gitlab url5939Gitlab::Database::PartitioningMigrationHelpers::TableManagementHelpers5940 list partitioning conversion helpers5941 #convert_table_to_first_list_partition5942 behaves like delegates to ConvertTable5943 throws an error if in a transaction5944 delegates to a method on List::ConvertTable5945 #revert_converting_table_to_first_list_partition5946 behaves like delegates to ConvertTable5947 throws an error if in a transaction5948 delegates to a method on List::ConvertTable5949 #prepare_constraint_for_list_partitioning5950 behaves like delegates to ConvertTable5951 throws an error if in a transaction5952 delegates to a method on List::ConvertTable5953 #revert_preparing_constraint_for_list_partitioning5954 behaves like delegates to ConvertTable5955 throws an error if in a transaction5956 delegates to a method on List::ConvertTable5957 #partition_table_by_date5958 when the table is not allowed5959 raises an error5960 when run inside a transaction block5961 raises an error5962 when the the max_date is less than the min_date5963 raises an error5964 when the max_date is equal to the min_date5965 raises an error5966 when the given table does not have a primary key5967 raises an error5968 when an invalid partition column is given5969 raises an error5970 constructing the partitioned table5971 creates a table partitioned by the proper column5972 requires the migration helper to be run in DDL mode5973 changes the primary key datatype to bigint5974 removes the default from the primary key column5975 creates the partitioned table with the same non-key columns5976 creates a partition spanning over each month in the range given5977 with a non-integer primary key datatype5978 does not change the primary key datatype5979 when min_date is not given5980 with records present already5981 creates a partition spanning over each month from the first record5982 without data5983 creates the catchall partition plus two actual partition5984 when max_date is not given5985 creates partitions including the next month from today5986 without min_date, max_date5987 creates partitions for the current and next month5988 keeping data in sync with the partitioned table5989 creates a trigger function on the original table5990 syncs inserts to the partitioned tables5991 syncs updates to the partitioned tables5992 syncs deletes to the partitioned tables5993 #drop_partitioned_table_for5994 drops the trigger syncing to the partitioned table5995 drops the partitioned copy and all partitions5996 when the table is not allowed5997 raises an error5998 #enqueue_partitioning_data_migration5999 when the table is not allowed6000 raises an error6001 when run inside a transaction block6002 raises an error6003 when records exist in the source table6004 enqueues jobs to copy each batch of data6005 #cleanup_partitioning_data_migration6006 when the table is not allowed6007 raises an error6008 when tracking records exist in the batched_background_migrations table6009 deletes those pertaining to the given table6010 #create_hash_partitions6011 creates partitions for the full hash space (8 partitions)6012 creates partitions for the full hash space (16 partitions)6013 #finalize_backfilling_partitioned_table6014 when the table is not allowed6015 raises an error6016 when the partitioned table does not exist6017 raises an error6018 finishing pending batched background migration jobs6019 ensures finishing of remaining jobs and vacuums the partitioned table6020 #replace_with_partitioned_table6021 replaces the original table with the partitioned table6022 moves the trigger from the original table to the new table6023 #rollback_replace_with_partitioned_table6024 replaces the partitioned table with the non-partitioned table6025 moves the trigger from the partitioned table to the non-partitioned table6026 #drop_nonpartitioned_archive_table6027 drops the archive table6028 drops the trigger on the source table6029 drops the sync function6030 #create_trigger_to_sync_tables6031 creates the sync function6032 installs the trigger6033Gitlab::Database::GitlabSchema6034 .deleted_views_and_tables_to_schema6035 all tables and views have assigned a known gitlab_schema6036 .views_and_tables_to_schema6037 all tables and views have assigned a known gitlab_schema6038 all tables and views are unique6039 for /builds/gitlab-org/gitlab/db/docs6040 validates 'main' using 'ActiveRecord::Base'6041 new data sources are added6042 non-existing data sources are removed6043 validates 'ci' using 'Ci::ApplicationRecord'6044 new data sources are added6045 non-existing data sources are removed6046 .dictionary_path_globs6047 returns an array of path globs6048 returns an array of path globs6049 returns an array of path globs6050 returns an array of path globs6051 .tables_to_schema6052 returns only tables6053 .views_to_schema6054 returns only views6055 .table_schemas!6056 returns the matched schemas6057 when one of the tables does not have a matching table schema6058 raises error6059 .table_schema6060 behaves like maps table name to table schema6061 name: "ci_builds", classification: :gitlab_ci6062 is expected to eq :gitlab_ci6063 name: "my_schema.ci_builds", classification: :gitlab_ci6064 is expected to eq :gitlab_ci6065 name: "my_schema.ci_runner_machine_builds_100", classification: :gitlab_ci6066 is expected to eq :gitlab_ci6067 name: "my_schema._test_gitlab_main_table", classification: :gitlab_main6068 is expected to eq :gitlab_main6069 name: "information_schema.columns", classification: :gitlab_internal6070 is expected to eq :gitlab_internal6071 name: "audit_events_part_5fc467ac26", classification: :gitlab_main6072 is expected to eq :gitlab_main6073 name: "_test_gitlab_main_table", classification: :gitlab_main6074 is expected to eq :gitlab_main6075 name: "_test_gitlab_ci_table", classification: :gitlab_ci6076 is expected to eq :gitlab_ci6077 name: "_test_gitlab_main_clusterwide_table", classification: :gitlab_main_clusterwide6078 is expected to eq :gitlab_main_clusterwide6079 name: "_test_gitlab_main_cell_table", classification: :gitlab_main_cell6080 is expected to eq :gitlab_main_cell6081 name: "_test_gitlab_pm_table", classification: :gitlab_pm6082 is expected to eq :gitlab_pm6083 name: "_test_my_table", classification: :gitlab_shared6084 is expected to eq :gitlab_shared6085 name: "pg_attribute", classification: :gitlab_internal6086 is expected to eq :gitlab_internal6087 when mapping fails6088 is expected to be nil6089 when an index name is used as the table name6090 is expected to be nil6091 .table_schema!6092 behaves like maps table name to table schema6093 name: "ci_builds", classification: :gitlab_ci6094 is expected to eq :gitlab_ci6095 name: "my_schema.ci_builds", classification: :gitlab_ci6096 is expected to eq :gitlab_ci6097 name: "my_schema.ci_runner_machine_builds_100", classification: :gitlab_ci6098 is expected to eq :gitlab_ci6099 name: "my_schema._test_gitlab_main_table", classification: :gitlab_main6100 is expected to eq :gitlab_main6101 name: "information_schema.columns", classification: :gitlab_internal6102 is expected to eq :gitlab_internal6103 name: "audit_events_part_5fc467ac26", classification: :gitlab_main6104 is expected to eq :gitlab_main6105 name: "_test_gitlab_main_table", classification: :gitlab_main6106 is expected to eq :gitlab_main6107 name: "_test_gitlab_ci_table", classification: :gitlab_ci6108 is expected to eq :gitlab_ci6109 name: "_test_gitlab_main_clusterwide_table", classification: :gitlab_main_clusterwide6110 is expected to eq :gitlab_main_clusterwide6111 name: "_test_gitlab_main_cell_table", classification: :gitlab_main_cell6112 is expected to eq :gitlab_main_cell6113 name: "_test_gitlab_pm_table", classification: :gitlab_pm6114 is expected to eq :gitlab_pm6115 name: "_test_my_table", classification: :gitlab_shared6116 is expected to eq :gitlab_shared6117 name: "pg_attribute", classification: :gitlab_internal6118 is expected to eq :gitlab_internal6119 when mapping fails6120 raises error6121 when testing cross schema access6122 .cross_joins_allowed?6123 schemas: [], tables: [], result: true6124 is expected to eq true6125 schemas: [:gitlab_main], tables: [], result: true6126 is expected to eq true6127 schemas: [:gitlab_main_clusterwide, :gitlab_main], tables: [], result: true6128 is expected to eq true6129 schemas: [:gitlab_main_clusterwide, :gitlab_ci], tables: [], result: false6130 is expected to eq false6131 schemas: [:gitlab_main_clusterwide, :gitlab_main, :gitlab_ci], tables: [], result: false6132 is expected to eq false6133 schemas: [:gitlab_main_clusterwide, :gitlab_internal], tables: [], result: false6134 is expected to eq false6135 schemas: [:gitlab_main, :gitlab_ci], tables: [], result: false6136 is expected to eq false6137 schemas: [:gitlab_main_clusterwide, :gitlab_main, :gitlab_shared], tables: [], result: true6138 is expected to eq true6139 schemas: [:gitlab_main_clusterwide, :gitlab_shared], tables: [], result: true6140 is expected to eq true6141 schemas: [:gitlab_main_clusterwide, :gitlab_main_cell], tables: ["users", "namespaces"], result: false6142 is expected to eq false6143 schemas: [:gitlab_main_clusterwide, :gitlab_main_cell], tables: ["plans", "namespaces"], result: true6144 is expected to eq true6145 .cross_transactions_allowed?6146 schemas: [], tables: [], result: true6147 is expected to eq true6148 schemas: [:gitlab_main], tables: [], result: true6149 is expected to eq true6150 schemas: [:gitlab_main_clusterwide, :gitlab_main], tables: [], result: true6151 is expected to eq true6152 schemas: [:gitlab_main_clusterwide, :gitlab_ci], tables: [], result: false6153 is expected to eq false6154 schemas: [:gitlab_main_clusterwide, :gitlab_main, :gitlab_ci], tables: [], result: false6155 is expected to eq false6156 schemas: [:gitlab_main_clusterwide, :gitlab_internal], tables: [], result: true6157 is expected to eq true6158 schemas: [:gitlab_main, :gitlab_ci], tables: [], result: false6159 is expected to eq false6160 schemas: [:gitlab_main_clusterwide, :gitlab_main, :gitlab_shared], tables: [], result: true6161 is expected to eq true6162 schemas: [:gitlab_main_clusterwide, :gitlab_shared], tables: [], result: true6163 is expected to eq true6164 schemas: [:gitlab_main_clusterwide, :gitlab_main_cell], tables: ["users", "namespaces"], result: false6165 is expected to eq false6166 schemas: [:gitlab_main_clusterwide, :gitlab_main_cell], tables: ["plans", "namespaces"], result: true6167 is expected to eq true6168 .cross_foreign_key_allowed?6169 schemas: [], tables: [], result: false6170 is expected to eq false6171 schemas: [:gitlab_main], tables: [], result: true6172 is expected to eq true6173 schemas: [:gitlab_main_clusterwide, :gitlab_main], tables: [], result: true6174 is expected to eq true6175 schemas: [:gitlab_main_clusterwide, :gitlab_ci], tables: [], result: false6176 is expected to eq false6177 schemas: [:gitlab_main_clusterwide, :gitlab_internal], tables: [], result: false6178 is expected to eq false6179 schemas: [:gitlab_main, :gitlab_ci], tables: [], result: false6180 is expected to eq false6181 schemas: [:gitlab_main_clusterwide, :gitlab_shared], tables: [], result: false6182 is expected to eq false6183 schemas: [:gitlab_main_clusterwide, :gitlab_main_cell], tables: ["users", "namespaces"], result: false6184 is expected to eq false6185 schemas: [:gitlab_main_clusterwide, :gitlab_main_cell], tables: ["plans", "namespaces"], result: true6186 is expected to eq true6187ContainerRegistry::Client6188 #repository_manifest6189 behaves like handling repository manifest6190 GET /v2/:name/manifests/mytag6191 behaves like handling timeouts6192 handles network timeouts6193 logs the error6194 behaves like handling repository manifest6195 GET /v2/:name/manifests/mytag6196 behaves like handling timeouts6197 handles network timeouts6198 logs the error6199 #blob6200 GET /v2/:name/blobs/:digest6201 with a 307 redirect6202 behaves like handling redirects6203 follows the redirect6204 with a redirect location with params ending with =6205 behaves like handling redirects6206 follows the redirect6207 with a redirect location with params ending with %3D6208 behaves like handling redirects6209 follows the redirect6210 behaves like handling timeouts6211 handles network timeouts6212 logs the error6213 #upload_blob6214 with successful uploads6215 starts the upload and posts the blob6216 with a failed upload6217 returns a failure6218 #generate_empty_manifest6219 uploads a random image and returns the manifest6220 when upload fails6221 is expected to equal nil6222 #put_tag6223 uploads the manifest and returns the digest6224 #delete_repository_tag_by_name6225 when the tag exists6226 is expected to be truthy6227 when the tag does not exist6228 is expected to be truthy6229 when an error occurs6230 is expected to be falsey6231 #supports_tag_delete?6232 registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true6233 returns the expected result6234 registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: true6235 returns the expected result6236 registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true6237 returns the expected result6238 registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true6239 returns the expected result6240 registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true6241 returns the expected result6242 registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: false6243 returns the expected result6244 registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false6245 returns the expected result6246 registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false6247 returns the expected result6248 #registry_info6249 behaves like handling registry info6250 when the check is successful6251 when using the GitLab container registry6252 identifies the vendor as "gitlab"6253 identifies version and features6254 identifies the registry DB as enabled6255 when using a third-party container registry6256 identifies the vendor as "other"6257 does not identify version or features6258 does not identify the registry DB as enabled6259 when the check is not successful6260 does not identify vendor, version or features6261 when the check returns an unexpected value in the database enabled header6262 does not identify the registry DB as enabled6263 .supports_tag_delete?6264 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true6265 returns the expected result6266 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: true6267 returns the expected result6268 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: true6269 returns the expected result6270 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: true, expected_result: false6271 returns the expected result6272 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false6273 returns the expected result6274 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false6275 returns the expected result6276 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false6277 returns the expected result6278 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false6279 returns the expected result6280 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true6281 returns the expected result6282 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: true6283 returns the expected result6284 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false6285 returns the expected result6286 registry_api_url: "http://sandbox.local", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: true, expected_result: false6287 returns the expected result6288 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false6289 returns the expected result6290 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false6291 returns the expected result6292 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false6293 returns the expected result6294 registry_api_url: "http://sandbox.local", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false6295 returns the expected result6296 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false6297 returns the expected result6298 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false6299 returns the expected result6300 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false6301 returns the expected result6302 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false6303 returns the expected result6304 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false6305 returns the expected result6306 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false6307 returns the expected result6308 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false6309 returns the expected result6310 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: ["tag_delete"], expect_registry_to_be_pinged: false, expected_result: false6311 returns the expected result6312 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false6313 returns the expected result6314 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false6315 returns the expected result6316 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false6317 returns the expected result6318 registry_api_url: "", registry_enabled: true, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false6319 returns the expected result6320 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false6321 returns the expected result6322 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: true, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false6323 returns the expected result6324 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: true, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false6325 returns the expected result6326 registry_api_url: "", registry_enabled: false, registry_tags_support_enabled: false, is_on_dot_com: false, container_registry_features: [], expect_registry_to_be_pinged: false, expected_result: false6327 returns the expected result6328 #repository_tags6329 returns a successful response6330 .registry_info6331 behaves like handling registry info6332 when the check is successful6333 when using the GitLab container registry6334 identifies the vendor as "gitlab"6335 identifies version and features6336 identifies the registry DB as enabled6337 when using a third-party container registry6338 identifies the vendor as "other"6339 does not identify version or features6340 does not identify the registry DB as enabled6341 when the check is not successful6342 does not identify vendor, version or features6343 when the check returns an unexpected value in the database enabled header6344 does not identify the registry DB as enabled6345Gitlab::Git::Diff6346 .new6347 using a Hash6348 with a small diff6349 initializes the diff6350 does not prune the diff6351 using a diff that is too large6352 prunes the diff6353 using a GitalyClient::Diff6354 with a small diff6355 initializes the diff6356 does not prune the diff6357 using a diff that is too large6358 prunes the diff6359 logs the event6360 using a collapsable diff that is too large6361 prunes the diff as a large diff instead of as a collapsed diff6362 when the patch passed is not UTF-8-encoded6363 encodes diff patch to UTF-86364 using a diff that it too large but collecting all paths6365 is already pruned and collapsed but not too large6366 using a Gitaly::CommitDelta6367 initializes the diff6368 is not too large6369 has an empty diff6370 is not a binary6371 when diff contains invalid characters6372 when replace_invalid_utf8_chars is true6373 will convert invalid characters and not cause an encoding error6374 when the diff is binary6375 will not try to replace characters6376 when replace_invalid_utf8_chars is false6377 will not try to convert invalid characters6378 straight diffs6379 has the correct size6380 diff6381 is an instance of Diff6382 has the correct new_path6383 has the correct diff6384 .between6385 is expected to be a kind of Gitlab::Git::DiffCollection6386 #size6387 is expected to eq 16388 diff6389 is expected to be a kind of Gitlab::Git::Diff6390 #new_path6391 is expected to eq "files/ruby/feature.rb"6392 #diff6393 is expected to include "+class Feature"6394 .filter_diff_options6395 without default options6396 filters invalid options6397 with default options6398 filters invalid options6399 merges with default options6400 overrides default options6401 #json_safe_diff6402 fake binary message when it detects binary6403 leave non-binary diffs as-is6404 #unidiff6405 when file was created6406 returns a correct header6407 when file was changed6408 returns a correct header6409 when file was moved without content change6410 returns an empty header6411 when file was moved with content change6412 returns a correct header6413 when file was deleted6414 returns a correct header6415 when empty file was created6416 returns an empty header6417 when file is binary6418 returns a binary files message6419 #submodule?6420 is expected to eq false6421 is expected to eq true6422 #line_count6423 returns the correct number of lines6424 #diff_bytesize6425 returns the size of the diff in bytes6426 #too_large?6427 returns true for a diff that is too large6428 returns false for a diff that is small enough6429 returns true for a diff that was explicitly marked as being too large6430 #collapsed?6431 returns false by default even on quite big diff6432 returns false by default for a diff that is small enough6433 returns true for a diff that was explicitly marked as being collapsed6434 #collapsed?6435 returns true for a diff that is quite large6436 returns false for a diff that is small enough6437 #collapse!6438 prunes the diff6439Packages::Go::SyncPackagesWorker6440 #perform6441 with no existing packages6442 behaves like it creates a package6443 returns a package for example.com/project@v1.0.16444 behaves like it creates a package6445 returns a package for example.com/project@v1.0.26446 behaves like it creates a package6447 returns a package for example.com/project@v1.0.36448 behaves like it creates a package6449 returns a package for example.com/project/mod@v1.0.36450 behaves like it creates a package6451 returns a package for example.com/project/v2@v2.0.06452 with existing packages6453 behaves like it creates a package6454 returns a package for example.com/project@v1.0.16455 behaves like it creates a package6456 returns a package for example.com/project@v1.0.26457 behaves like it creates a package6458 returns a package for example.com/project@v1.0.36459 behaves like it creates a package6460 returns a package for example.com/project/mod@v1.0.36461 behaves like it creates a package6462 returns a package for example.com/project/v2@v2.0.06463 marked as pending_destruction6464 behaves like it creates a package6465 returns a package for example.com/project@v1.0.16466 behaves like it creates a package6467 returns a package for example.com/project@v1.0.26468 behaves like it creates a package6469 returns a package for example.com/project@v1.0.36470 behaves like it creates a package6471 returns a package for example.com/project/mod@v1.0.36472 behaves like it creates a package6473 returns a package for example.com/project/v2@v2.0.06474 with a package that exceeds project limits6475 logs an exception6476 path: "", version: "v1.0.1"6477 behaves like an idempotent worker6478 is labeled as idempotent6479 performs multiple times sequentially without raising an exception6480 creates a package6481 path: "", version: "v1.0.2"6482 behaves like an idempotent worker6483 is labeled as idempotent6484 performs multiple times sequentially without raising an exception6485 creates a package6486 path: "", version: "v1.0.3"6487 behaves like an idempotent worker6488 is labeled as idempotent6489 performs multiple times sequentially without raising an exception6490 creates a package6491 path: "mod", version: "v1.0.3"6492 behaves like an idempotent worker6493 is labeled as idempotent6494 performs multiple times sequentially without raising an exception6495 creates a package6496 path: "v2", version: "v2.0.0"6497 behaves like an idempotent worker6498 is labeled as idempotent6499 performs multiple times sequentially without raising an exception6500 creates a package6501ApplicationWorker6502 Sidekiq attributes6503 sets the queue name based on the output of the router6504 when a worker attribute is updated6505 updates the queue name afterward6506 when the worker is inherited6507 sets the queue name for the inherited worker6508 #logging_extras6509 returns extra data to be logged that was set from #log_extra_metadata_on_done6510 returns extra data to be logged that was set from #log_hash_metadata_on_done6511 when nothing is set6512 returns {}6513 #structured_payload6514 adds worker related payload6515 adds labkit context6516 adds custom payload converting stringified keys6517 does not override predefined context keys with custom payload6518 .queue_namespace6519 updates the queue name from the router again6520 updates the queue_namespace options of the worker6521 .queue6522 returns the queue name6523 .data_consistency6524 data_consistency: :delayed, sidekiq_option_retry: false, expect_error: true6525 when workers data consistency is6526 not to raise an exception6527 data_consistency: :delayed, sidekiq_option_retry: 0, expect_error: true6528 when workers data consistency is6529 not to raise an exception6530 data_consistency: :delayed, sidekiq_option_retry: 3, expect_error: false6531 when workers data consistency is6532 not to raise an exception6533 data_consistency: :delayed, sidekiq_option_retry: nil, expect_error: false6534 when workers data consistency is6535 not to raise an exception6536 data_consistency: :sticky, sidekiq_option_retry: false, expect_error: false6537 when workers data consistency is6538 not to raise an exception6539 data_consistency: :sticky, sidekiq_option_retry: 0, expect_error: false6540 when workers data consistency is6541 not to raise an exception6542 data_consistency: :sticky, sidekiq_option_retry: 3, expect_error: false6543 when workers data consistency is6544 not to raise an exception6545 data_consistency: :sticky, sidekiq_option_retry: nil, expect_error: false6546 when workers data consistency is6547 not to raise an exception6548 data_consistency: :always, sidekiq_option_retry: false, expect_error: false6549 when workers data consistency is6550 not to raise an exception6551 data_consistency: :always, sidekiq_option_retry: 0, expect_error: false6552 when workers data consistency is6553 not to raise an exception6554 data_consistency: :always, sidekiq_option_retry: 3, expect_error: false6555 when workers data consistency is6556 not to raise an exception6557 data_consistency: :always, sidekiq_option_retry: nil, expect_error: false6558 when workers data consistency is6559 not to raise an exception6560 .retry6561 data_consistency: :delayed, sidekiq_option_retry: false, expect_error: true6562 when retry sidekiq option is6563 not to raise an exception6564 data_consistency: :delayed, sidekiq_option_retry: 0, expect_error: true6565 when retry sidekiq option is6566 not to raise an exception6567 data_consistency: :delayed, sidekiq_option_retry: 3, expect_error: false6568 when retry sidekiq option is6569 not to raise an exception6570 data_consistency: :sticky, sidekiq_option_retry: false, expect_error: false6571 when retry sidekiq option is6572 not to raise an exception6573 data_consistency: :sticky, sidekiq_option_retry: 0, expect_error: false6574 when retry sidekiq option is6575 not to raise an exception6576 data_consistency: :sticky, sidekiq_option_retry: 3, expect_error: false6577 when retry sidekiq option is6578 not to raise an exception6579 data_consistency: :always, sidekiq_option_retry: false, expect_error: false6580 when retry sidekiq option is6581 not to raise an exception6582 data_consistency: :always, sidekiq_option_retry: 0, expect_error: false6583 when retry sidekiq option is6584 not to raise an exception6585 data_consistency: :always, sidekiq_option_retry: 3, expect_error: false6586 when retry sidekiq option is6587 not to raise an exception6588 different kinds of push_bulk6589 .bulk_perform_async6590 push_bulk in safe limit batches6591 when the number of jobs to be enqueued does not exceed the safe limit6592 behaves like enqueues jobs in one go6593 enqueues jobs in one go6594 behaves like logs bulk insertions6595 logs arguments and job IDs6596 behaves like returns job_id of all enqueued jobs6597 returns job_id of all enqueued jobs6598 behaves like does not schedule the jobs for any specific time6599 does not schedule the jobs for any specific time6600 when the number of jobs to be enqueued exceeds safe limit6601 behaves like enqueues the jobs in a batched fashion, with each batch enqueing jobs as per the set safe limit6602 enqueues the jobs in a batched fashion, with each batch enqueing jobs as per the set safe limit6603 behaves like returns job_id of all enqueued jobs6604 returns job_id of all enqueued jobs6605 behaves like does not schedule the jobs for any specific time6606 does not schedule the jobs for any specific time6607 .bulk_perform_in6608 without batches6609 when the scheduled time falls in the past6610 raises an ArgumentError exception6611 push_bulk in safe limit batches6612 when the number of jobs to be enqueued does not exceed the safe limit6613 behaves like enqueues jobs in one go6614 enqueues jobs in one go6615 behaves like returns job_id of all enqueued jobs6616 returns job_id of all enqueued jobs6617 behaves like schedules all the jobs at a specific time6618 schedules all the jobs at a specific time6619 when the number of jobs to be enqueued exceeds safe limit6620 behaves like enqueues the jobs in a batched fashion, with each batch enqueing jobs as per the set safe limit6621 enqueues the jobs in a batched fashion, with each batch enqueing jobs as per the set safe limit6622 behaves like returns job_id of all enqueued jobs6623 returns job_id of all enqueued jobs6624 behaves like schedules all the jobs at a specific time6625 schedules all the jobs at a specific time6626 with batches6627 when the `batch_size` is invalid6628 when `batch_size` is 06629 raises an ArgumentError exception6630 when `batch_size` is negative6631 raises an ArgumentError exception6632 when the `batch_delay` is invalid6633 when `batch_delay` is 06634 raises an ArgumentError exception6635 when `batch_delay` is negative6636 raises an ArgumentError exception6637 push_bulk in safe limit batches6638 when the number of jobs to be enqueued does not exceed the safe limit6639 behaves like enqueues jobs in one go6640 enqueues jobs in one go6641 behaves like returns job_id of all enqueued jobs6642 returns job_id of all enqueued jobs6643 behaves like schedules all the jobs at a specific time, per batch6644 schedules all the jobs at a specific time, per batch6645 when the number of jobs to be enqueued exceeds safe limit6646 behaves like enqueues the jobs in a batched fashion, with each batch enqueing jobs as per the set safe limit6647 enqueues the jobs in a batched fashion, with each batch enqueing jobs as per the set safe limit6648 behaves like returns job_id of all enqueued jobs6649 returns job_id of all enqueued jobs6650 behaves like schedules all the jobs at a specific time, per batch6651 schedules all the jobs at a specific time, per batch6652 .with_status6653 when the worker does have status_expiration set6654 uses status_expiration from the worker6655 uses status_expiration from the worker without with_status6656 when the worker does not have status_expiration set6657 uses the default status_expiration6658 does not set status_expiration without with_status6659Gitlab::Pagination::Keyset::Order6660 paginate over items correctly6661 when ordering by a distinct column6662 behaves like order examples6663 is expected to eq [{"id"=>9, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>7, "month"=>0, "year"=>0}..."id"=>3, "month"=>0, "year"=>0}, {"id"=>2, "month"=>0, "year"=>0}, {"id"=>1, "month"=>0, "year"=>0}]6664 when paginating forwards6665 is expected to eq [{"id"=>9, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>7, "month"=>0, "year"=>0}..."id"=>3, "month"=>0, "year"=>0}, {"id"=>2, "month"=>0, "year"=>0}, {"id"=>1, "month"=>0, "year"=>0}]6666 with different page size6667 is expected to eq [{"id"=>9, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>7, "month"=>0, "year"=>0}..."id"=>3, "month"=>0, "year"=>0}, {"id"=>2, "month"=>0, "year"=>0}, {"id"=>1, "month"=>0, "year"=>0}]6668 when using the conditions in an UNION query6669 is expected to eq [{"id"=>9, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>7, "month"=>0, "year"=>0}..."id"=>3, "month"=>0, "year"=>0}, {"id"=>2, "month"=>0, "year"=>0}, {"id"=>1, "month"=>0, "year"=>0}]6670 when the cursor attributes are SQL literals6671 is expected to eq [{"id"=>9, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>7, "month"=>0, "year"=>0}..."id"=>3, "month"=>0, "year"=>0}, {"id"=>2, "month"=>0, "year"=>0}, {"id"=>1, "month"=>0, "year"=>0}]6672 when using the conditions in an UNION query6673 is expected to eq [{"id"=>9, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>7, "month"=>0, "year"=>0}..."id"=>3, "month"=>0, "year"=>0}, {"id"=>2, "month"=>0, "year"=>0}, {"id"=>1, "month"=>0, "year"=>0}]6674 when paginating backwards6675 is expected to eq [{"id"=>2, "month"=>0, "year"=>0}, {"id"=>3, "month"=>0, "year"=>0}, {"id"=>4, "month"=>0, "year"=>0}..."id"=>7, "month"=>0, "year"=>0}, {"id"=>8, "month"=>0, "year"=>0}, {"id"=>9, "month"=>0, "year"=>0}]6676 when ordering by two non-nullable columns and a distinct column6677 uses the row comparison method6678 behaves like order examples6679 is expected to eq [{"id"=>3, "month"=>2, "year"=>2009}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>1, "month"=>2, "yea..."month"=>1, "year"=>2011}, {"id"=>8, "month"=>4, "year"=>2012}, {"id"=>9, "month"=>5, "year"=>2013}]6680 when paginating forwards6681 is expected to eq [{"id"=>3, "month"=>2, "year"=>2009}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>1, "month"=>2, "yea..."month"=>1, "year"=>2011}, {"id"=>8, "month"=>4, "year"=>2012}, {"id"=>9, "month"=>5, "year"=>2013}]6682 with different page size6683 is expected to eq [{"id"=>3, "month"=>2, "year"=>2009}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>1, "month"=>2, "yea..."month"=>1, "year"=>2011}, {"id"=>8, "month"=>4, "year"=>2012}, {"id"=>9, "month"=>5, "year"=>2013}]6684 when using the conditions in an UNION query6685 is expected to eq [{"id"=>3, "month"=>2, "year"=>2009}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>1, "month"=>2, "yea..."month"=>1, "year"=>2011}, {"id"=>8, "month"=>4, "year"=>2012}, {"id"=>9, "month"=>5, "year"=>2013}]6686 when the cursor attributes are SQL literals6687 is expected to eq [{"id"=>3, "month"=>2, "year"=>2009}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>1, "month"=>2, "yea..."month"=>1, "year"=>2011}, {"id"=>8, "month"=>4, "year"=>2012}, {"id"=>9, "month"=>5, "year"=>2013}]6688 when using the conditions in an UNION query6689 is expected to eq [{"id"=>3, "month"=>2, "year"=>2009}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>1, "month"=>2, "yea..."month"=>1, "year"=>2011}, {"id"=>8, "month"=>4, "year"=>2012}, {"id"=>9, "month"=>5, "year"=>2013}]6690 when paginating backwards6691 is expected to eq [{"id"=>8, "month"=>4, "year"=>2012}, {"id"=>5, "month"=>1, "year"=>2011}, {"id"=>4, "month"=>1, "yea..."month"=>2, "year"=>2010}, {"id"=>6, "month"=>2, "year"=>2009}, {"id"=>3, "month"=>2, "year"=>2009}]6692 when ordering by nullable columns and a distinct column6693 behaves like order examples6694 is expected to eq [{"id"=>7, "month"=>2, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>1, "month"=>nil, "...onth"=>5, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}]6695 when paginating forwards6696 is expected to eq [{"id"=>7, "month"=>2, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>1, "month"=>nil, "...onth"=>5, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}]6697 with different page size6698 is expected to eq [{"id"=>7, "month"=>2, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>1, "month"=>nil, "...onth"=>5, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}]6699 when using the conditions in an UNION query6700 is expected to eq [{"id"=>7, "month"=>2, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>1, "month"=>nil, "...onth"=>5, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}]6701 when the cursor attributes are SQL literals6702 is expected to eq [{"id"=>7, "month"=>2, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>1, "month"=>nil, "...onth"=>5, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}]6703 when using the conditions in an UNION query6704 is expected to eq [{"id"=>7, "month"=>2, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>1, "month"=>nil, "...onth"=>5, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}]6705 when paginating backwards6706 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>4, "month"=>5, "year"=>nil}, {"id"=>9, "month"=>2, "yea...nth"=>nil, "year"=>2010}, {"id"=>11, "month"=>2, "year"=>2010}, {"id"=>7, "month"=>2, "year"=>2010}]6707 when ordering by nullable columns with nulls first ordering and a distinct column6708 behaves like order examples6709 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>9, "month"=>2, "..."month"=>2, "year"=>2011}, {"id"=>6, "month"=>2, "year"=>2011}, {"id"=>8, "month"=>2, "year"=>2012}]6710 when paginating forwards6711 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>9, "month"=>2, "..."month"=>2, "year"=>2011}, {"id"=>6, "month"=>2, "year"=>2011}, {"id"=>8, "month"=>2, "year"=>2012}]6712 with different page size6713 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>9, "month"=>2, "..."month"=>2, "year"=>2011}, {"id"=>6, "month"=>2, "year"=>2011}, {"id"=>8, "month"=>2, "year"=>2012}]6714 when using the conditions in an UNION query6715 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>9, "month"=>2, "..."month"=>2, "year"=>2011}, {"id"=>6, "month"=>2, "year"=>2011}, {"id"=>8, "month"=>2, "year"=>2012}]6716 when the cursor attributes are SQL literals6717 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>9, "month"=>2, "..."month"=>2, "year"=>2011}, {"id"=>6, "month"=>2, "year"=>2011}, {"id"=>8, "month"=>2, "year"=>2012}]6718 when using the conditions in an UNION query6719 is expected to eq [{"id"=>3, "month"=>nil, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>9, "month"=>2, "..."month"=>2, "year"=>2011}, {"id"=>6, "month"=>2, "year"=>2011}, {"id"=>8, "month"=>2, "year"=>2012}]6720 when paginating backwards6721 is expected to eq [{"id"=>6, "month"=>2, "year"=>2011}, {"id"=>2, "month"=>2, "year"=>2011}, {"id"=>11, "month"=>2, "ye...onth"=>2, "year"=>nil}, {"id"=>10, "month"=>nil, "year"=>nil}, {"id"=>3, "month"=>nil, "year"=>nil}]6722 when ordering by non-nullable columns with mixed directions and a distinct column6723 takes out a slice between two cursors6724 when ordering by the named function LOWER6725 uses downcased value for encoding and decoding a cursor6726 when the passed cursor values do not match with the order definition6727 when values are missing6728 raises error6729 when extra values are present6730 raises error6731 when values are missing and extra values are present6732 raises error6733 when no values are passed6734 returns empty array6735 extract and apply cursor attributes6736 when string attribute name is given6737 behaves like cursor attribute examples6738 #cursor_attributes_for_node6739 is expected to eq {"id"=>"100"}6740 #apply_cursor_conditions6741 when params with string keys are passed6742 is expected to include "\"projects\".\"id\" < 100)"6743 when params with symbol keys are passed6744 is expected to include "\"projects\".\"id\" < 100)"6745 when symbol attribute name is given6746 behaves like cursor attribute examples6747 #cursor_attributes_for_node6748 is expected to eq {"id"=>"100"}6749 #apply_cursor_conditions6750 when params with string keys are passed6751 is expected to include "\"projects\".\"id\" < 100)"6752 when params with symbol keys are passed6753 is expected to include "\"projects\".\"id\" < 100)"6754 with projections6755 when additional_projections is empty6756 has correct projections6757 when there are additional_projections6758 has correct projections6759 UNION optimization6760 when UNION optimization is off6761 returns items in the correct order6762 when UNION optimization is on6763 returns items in the correct order6764 calls Gitlab::SQL::Union6765 builds UNION query6766 when the scope model has ignored columns6767 when scope selects all columns6768 returns items in the correct order6769 when scope selects only specific columns6770 returns items in the correct order6771 #attribute_names6772 is expected to contain exactly "id" and "name"6773MergeRequests::LinkLfsObjectsService6774 when no oldrev and newrev passed6775 behaves like linking LFS objects6776 when source project is the same as target project6777 does not call Projects::LfsPointers::LfsLinkService#execute6778 when source project is different from target project6779 and there are changes6780 and there are LFS objects added6781 calls Projects::LfsPointers::LfsLinkService#execute with OIDs of LFS objects in merge request6782 but there are no LFS objects added6783 does not call Projects::LfsPointers::LfsLinkService#execute6784 and there are no changes6785 does not call Projects::LfsPointers::LfsLinkService#execute6786 when oldrev and newrev are passed6787 behaves like linking LFS objects6788 when source project is the same as target project6789 does not call Projects::LfsPointers::LfsLinkService#execute6790 when source project is different from target project6791 and there are changes6792 and there are LFS objects added6793 calls Projects::LfsPointers::LfsLinkService#execute with OIDs of LFS objects in merge request6794 but there are no LFS objects added6795 does not call Projects::LfsPointers::LfsLinkService#execute6796 and there are no changes6797 does not call Projects::LfsPointers::LfsLinkService#execute6798Projects::ImportExport::ExportService6799 #execute6800 saves the version6801 saves the avatar6802 saves the models6803 saves the uploads6804 saves the repo6805 saves the wiki repo6806 saves the design repo6807 saves the lfs objects6808 saves the snippets6809 avoids N+1 when exporting project members6810 when all saver services succeed6811 logs a successful message6812 saves the project in the file system6813 calls the after export strategy6814 when the upload fails6815 notifies the user of an error6816 when after export strategy fails6817 removes the remaining exported data6818 notifies the user6819 notifies logger6820 when saving services fail6821 removes the remaining exported data6822 notifies the user6823 notifies logger6824 does not call the export strategy6825 when one of the savers fail unexpectedly6826 removes the remaining exported data6827 when user does not have admin_project permission6828 fails6829NotificationRecipients::BuildService6830 #build_new_note_recipients6831 when there are multiple watchers6832 avoids N+1 queries6833 when there are multiple subscribers6834 avoids N+1 queries6835 when the project is private6836 avoids N+1 queries6837 #build_new_review_recipients6838 when there are multiple watchers6839 avoids N+1 queries6840 when there are multiple subscribers6841 avoids N+1 queries6842 when the project is private6843 avoids N+1 queries6844WorkItemPolicy6845 read_work_item6846 when project is public6847 when user is not a member of the project6848 is expected to be allowed :read_work_item6849 when user is a member of the project6850 is expected to be allowed :read_work_item6851 when work_item is confidential6852 is expected not to be allowed :read_work_item6853 when project is private6854 when user is not a member of the project6855 is expected to be disallowed :read_work_item6856 when user is a member of the project6857 is expected to be allowed :read_work_item6858 admin_work_item6859 when user is reporter6860 is expected to be allowed :admin_work_item6861 when user is guest6862 is expected to be disallowed :admin_work_item6863 when guest authored the work item6864 is expected to be disallowed :admin_work_item6865 update_work_item6866 when user is reporter6867 is expected to be allowed :update_work_item6868 when user is guest6869 is expected to be disallowed :update_work_item6870 when guest authored the work item6871 is expected to be allowed :update_work_item6872 delete_work_item6873 when user is a member of the project6874 when the user is not the author of the work item6875 is expected to be disallowed :delete_work_item6876 when guest authored the work item6877 is expected to be allowed :delete_work_item6878 when user is member of the project's group6879 when the user is not the author of the work item6880 is expected to be disallowed :delete_work_item6881 when user authored the work item6882 is expected to be allowed :delete_work_item6883 when user is not a member of the project6884 when the user authored the work item6885 is expected to be disallowed :delete_work_item6886 when the user is not the author of the work item6887 is expected to be disallowed :delete_work_item6888 admin_parent_link6889 when user is reporter6890 is expected to be allowed :admin_parent_link6891 when user is guest6892 is expected to be disallowed :admin_parent_link6893 when guest authored the work item6894 is expected to be disallowed :admin_parent_link6895 when guest is assigned to the work item6896 is expected to be disallowed :admin_parent_link6897 set_work_item_metadata6898 when user is reporter6899 is expected to be allowed :set_work_item_metadata6900 when user is guest6901 is expected to be disallowed :set_work_item_metadata6902 when the work item is not persisted yet6903 is expected to be allowed :set_work_item_metadata6904 admin_work_item_link6905 when user is not a member of the project6906 is expected to be disallowed :admin_work_item_link6907 when user is guest6908 is expected to be allowed :admin_work_item_link6909 when user is reporter6910 is expected to be allowed :admin_work_item_link6911 create_note6912 when work item is associated with a project6913 when project is public6914 when user is not a member of the project6915 is expected to be allowed :create_note6916 when user is a member of the project6917 is expected to be allowed :create_note6918 when work_item is confidential6919 is expected not to be allowed :create_note6920 when work item is associated with a group6921 when group is public6922 when user is not a member of the group6923 is expected to be allowed :create_note6924 when work_item is confidential6925 is expected not to be allowed :create_note6926 when user is a member of the group6927 is expected to be allowed :create_note6928 when work_item is confidential6929 is expected to be allowed :create_note6930 when group is not public6931 when user is not a member of the group6932 is expected not to be allowed :create_note6933 when user is a member of the group6934 is expected to be allowed :create_note6935 when work_item is confidential6936 is expected to be allowed :create_note6937bin/sidekiq-cluster6938 when selecting some queues and excluding others6939 args: ["--negate", "cronjob"], included: "-qdefault,1", excluded: "-qcronjob,1"6940 runs successfully6941 args: ["--queue-selector", "resource_boundary=cpu"], included: ["-qupdate_merge_requests,1", "-qdefault,1", "-qmailers,1"], excluded: "-qauthorized_keys_worker,1"6942 runs successfully6943 when selecting all queues6944 runs successfully with `["*"]`6945 runs successfully with `["--queue-selector", "*"]`6946 when arguments contain newlines6947 raises an error6948WikiPages::UpdateService6949 behaves like WikiPages::UpdateService#execute6950 updates the wiki page6951 executes webhooks6952 counts edit events6953 the page is at the top level6954 adds a new wiki page activity event6955 the page is in a subsection6956 adds a new wiki page activity event6957 when the options are bad6958 does not count an edit event6959 does not record the activity6960 reports the error6961 #execute6962 when wiki create fails due to git error6963 catches the thrown error and returns a ServiceResponse error6964gitlab:seed:runner_fleet rake task6965 # order random6966 with admin username6967 performs runner fleet seed successfully6968MergeRequests::AssignIssuesService6969 finds unassigned issues fixed in merge request6970 ignores issues the user cannot update assignee on6971 ignores issues already assigned to any user6972 ignores all issues unless current_user is merge_request.author6973 accepts precomputed data for closes_issues6974 assigns these to the merge request owner6975 ignores external issues6976Gitlab::Ci::Trace::ChunkedIO6977 #initialize6978 when a chunk exists6979 is expected to eq 36980 when two chunks exist6981 is expected to eq 66982 when no chunks exists6983 is expected to eq 06984 #seek6985 when moves pos to end of the file6986 is expected to eq 1924416987 when moves pos to middle of the file6988 is expected to eq 962206989 when moves pos around6990 matches the result6991 #eof?6992 when current pos is at end of the file6993 is expected to be truthy6994 when current pos is not at end of the file6995 is expected to be falsey6996 #each_line6997 when buffer size is smaller than file size6998 yields lines6999 when buffer size is larger than file size7000 calls get_chunk only once7001 when buffer consist of many empty lines7002 yields lines7003 #read7004 when read the whole size7005 when buffer size is smaller than file size7006 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"7007 when buffer size is larger than file size7008 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"7009 when chunk is missing data7010 raises an error7011 when read only first 100 bytes7012 when buffer size is smaller than file size7013 reads a trace7014 when buffer size is larger than file size7015 reads a trace7016 when tries to read oversize7017 when buffer size is smaller than file size7018 reads a trace7019 when buffer size is larger than file size7020 reads a trace7021 when tries to read 0 bytes7022 when buffer size is smaller than file size7023 reads a trace7024 when buffer size is larger than file size7025 reads a trace7026 #readline7027 when buffer size is smaller than file size7028 behaves like all line matching7029 is expected to eq "\e[0;m\n"7030 when buffer size is larger than file size7031 behaves like all line matching7032 is expected to eq "\e[0;m\n"7033 when pos is at middle of the file7034 reads from pos7035 when chunk is missing data7036 raises an error7037 when utf-8 is being used7038 has known length7039 behaves like all line matching7040 is expected to eq "\xF0\x9F\x98\xBA"7041 #write7042 when data does not exist7043 when buffer size is smaller than file size7044 behaves like writes a trace7045 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"7046 when buffer size is larger than file size7047 behaves like writes a trace7048 is expected to eq "\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 30d62d59\n\...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"7049 when data already exists7050 when buffer size is smaller than file size7051 behaves like appends a trace7052 is expected to eq "exist data\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 3...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"7053 when buffer size is larger than file size7054 behaves like appends a trace7055 is expected to eq "exist data\e[0KRunning with gitlab-runner 10.6.0 (a3543a27)\n\e[0;m\e[0K on docker-auto-scale-com 3...token\e[0;m=rusBKvxM\nsection_end:1522927520:upload_artifacts\n\e[0K\e[32;1mJob succeeded\n\e[0;m\n"7056 #truncate7057 when data does not exist7058 when buffer size is smaller than file size7059 behaves like truncates a trace7060 is expected to eq "\e[0KRunnin"7061 when buffer size is larger than file size7062 behaves like truncates a trace7063 is expected to eq "\e[0KRunnin"7064 #destroy!7065 deletes7066Pages::DeploymentUploader7067 behaves like builds correct paths7068 #store_dir7069 behaves like matches the method pattern7070 is expected to match /\/\h{2}\/\h{2}\/\h{64}\/pages_deployments\/\d+/7071 #cache_dir7072 behaves like matches the method pattern7073 is expected to match /pages\/@hashed\/tmp\/cache/7074 #work_dir7075 behaves like matches the method pattern7076 is expected to match /pages\/@hashed\/tmp\/work/7077 #upload_path7078 behaves like matches the method pattern7079 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)7080 #relative_path7081 is relative (PENDING: Path not set, skipping.)7082 .absolute_path7083 behaves like matches the method pattern7084 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)7085 .base_dir7086 behaves like matches the method pattern7087 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)7088 path traversal exploits7089 throws an exception7090 when object store is REMOTE7091 preserves original file when stores it7092 behaves like builds correct paths7093 #store_dir7094 behaves like matches the method pattern7095 is expected to match /\A\h{2}\/\h{2}\/\h{64}\/pages_deployments\/\d+\z/7096 #cache_dir7097 behaves like matches the method pattern7098 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)7099 #work_dir7100 behaves like matches the method pattern7101 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)7102 #upload_path7103 behaves like matches the method pattern7104 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)7105 #relative_path7106 is relative (PENDING: Path not set, skipping.)7107 .absolute_path7108 behaves like matches the method pattern7109 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)7110 .base_dir7111 behaves like matches the method pattern7112 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)7113 path traversal exploits7114 throws an exception7115 when file is stored in valid local_path7116 is expected to match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/pages\/@hashed\/\h{2}\/\h{2}\/\h{64}\/pages_deployments\/25\/pages.zip/7117 preserves original file when stores it7118 .default_store7119 returns local store when object storage is not enabled7120 returns remote store when object storage is enabled7121groups/edit.html.haml7122 "Share with group lock" setting7123 for a root group7124 behaves like "Share with group lock" setting7125 has the correct label, help text, and checkbox options7126 for a subgroup7127 when the root_group has "Share with group lock" disabled7128 when the subgroup has "Share with group lock" disabled7129 as the root_owner7130 behaves like "Share with group lock" setting7131 has the correct label, help text, and checkbox options7132 as the sub_owner7133 behaves like "Share with group lock" setting7134 has the correct label, help text, and checkbox options7135 when the subgroup has "Share with group lock" enabled7136 as the root_owner7137 behaves like "Share with group lock" setting7138 has the correct label, help text, and checkbox options7139 as the sub_owner7140 behaves like "Share with group lock" setting7141 has the correct label, help text, and checkbox options7142 when the root_group has "Share with group lock" enabled7143 when the subgroup has "Share with group lock" disabled (parent overridden)7144 as the root_owner7145 behaves like "Share with group lock" setting7146 has the correct label, help text, and checkbox options7147 as the sub_owner7148 behaves like "Share with group lock" setting7149 has the correct label, help text, and checkbox options7150 when the subgroup has "Share with group lock" enabled (same as parent)7151 as the root_owner7152 behaves like "Share with group lock" setting7153 has the correct label, help text, and checkbox options7154 as the sub_owner7155 behaves like "Share with group lock" setting7156 has the correct label, help text, and checkbox options7157 ip_restriction7158 prompt user about registration features7159 with service ping disabled7160 renders a placeholder input with registration features message7161 with service ping enabled7162 does not render a placeholder input with registration features message7163DiffViewer::Base7164 .can_render?7165 when the extension is supported7166 when the binaryness matches7167 returns true7168 when the binaryness does not match7169 returns false7170 when the extension and file type are not supported7171 returns false7172 when the file was renamed and only the old blob is supported7173 returns false7174 #collapsed?7175 when the combined blob size is larger than the collapse limit7176 returns true7177 when the combined blob size is smaller than the collapse limit7178 returns false7179 #too_large?7180 when the combined blob size is larger than the size limit7181 returns true7182 when the blob size is smaller than the size limit7183 returns false7184 #render_error7185 when the combined blob size is larger than the size limit7186 returns :too_large7187 when the combined blob size is smaller than the size limit7188 returns nil7189 #render_error_message7190 returns nothing when no render_error7191 when render_error error7192 returns an error message7193 includes a "view the blob" link7194Gitlab::UsageDataCounters::HLLRedisCounter7195 .known_events7196 returns ce events7197 does not return removed events7198 known_events7199 .track_event7200 with redis_hll_tracking7201 tracks the event when feature enabled7202 does not track the event with feature flag disabled7203 when usage_ping is disabled7204 does not track the event7205 when usage_ping is enabled7206 tracks event when using symbol7207 tracks events with multiple values7208 raise error if metrics of unknown event7209 reports an error if Feature.enabled raise an error7210 when Rails environment is production7211 reports only UnknownEvent exception7212 for weekly events7213 sets the keys in Redis to expire7214 .unique_events7215 returns 0 if there are no keys for the given events7216 when data for the last complete week7217 is expected to eq 17218 when data for the last 4 complete weeks7219 is expected to eq 27220 when data for the week 4 weeks ago7221 is expected to eq 17222 when using symbol as parameter7223 is expected to eq 17224 when no slot is set7225 is expected to eq 17226 when data crosses into new year7227 does not raise error7228 .keys_for_aggregation7229 returns 1 key for last for week7230 returns 4 key for last for weeks7231 start_date: "2020-12-21", end_date: "2020-12-21", keys: []7232 returns the correct keys7233 start_date: "2020-12-21", end_date: "2020-12-20", keys: []7234 returns the correct keys7235 start_date: "2020-12-21", end_date: "2020-11-21", keys: []7236 returns the correct keys7237 start_date: "2021-01-01", end_date: "2020-12-28", keys: []7238 returns the correct keys7239 start_date: "2020-12-21", end_date: "2020-12-28", keys: lazy { [week_one] }7240 returns the correct keys7241 start_date: "2020-12-21", end_date: "2021-01-01", keys: lazy { [week_one] }7242 returns the correct keys7243 start_date: "2020-12-27", end_date: "2021-01-01", keys: lazy { [week_one] }7244 returns the correct keys7245 start_date: "2020-12-26", end_date: "2021-01-04", keys: lazy { [week_one, week_two] }7246 returns the correct keys7247 start_date: "2020-12-26", end_date: "2021-01-11", keys: lazy { [week_one, week_two, week_three] }7248 returns the correct keys7249 start_date: "2020-12-26", end_date: "2021-01-17", keys: lazy { [week_one, week_two, week_three] }7250 returns the correct keys7251 start_date: "2020-12-26", end_date: "2021-01-18", keys: lazy { [week_one, week_two, week_three, week_four] }7252 returns the correct keys7253 .calculate_events_union7254 calculates union of given events7255 returns 0 if there are no keys for given events7256 .weekly_time_range7257 return hash with weekly time range boundaries7258 .monthly_time_range7259 return hash with monthly time range boundaries7260PersonalSnippet7261 #embeddable?7262 returns true when snippet is public7263 returns true when snippet is public7264 returns true when snippet is public7265 behaves like model with repository7266 container class includes HasRepository7267 #commits_by7268 retrieves several commits from the repository by oid7269 #web_url7270 when given the only_path option7271 when only_path is false7272 returns the full web URL for this repo7273 when only_path is true7274 returns the relative web URL for this repo7275 when only_path is nil7276 returns the full web URL for this repo7277 when not given the only_path option7278 returns the full web URL for this repo7279 #url_to_repo7280 returns the SSH URL to the repository7281 #ssh_url_to_repo7282 returns the SSH URL to the repository7283 #http_url_to_repo7284 returns the HTTP URL to the repository7285 #repository7286 returns valid repo7287 uses the same container7288 #storage7289 returns valid storage7290 #full_path7291 returns valid full_path7292 #lfs_enabled?7293 returns the expected value7294 #empty_repo?7295 when the repo does not exist7296 returns true7297 when the repo exists7298 returns the empty state of the repository7299 #valid_repo?7300 is expected to equal false7301 is expected to equal true7302 #repository_exists?7303 is expected to equal false7304 is expected to equal true7305 #repo_exists?7306 is expected to equal false7307 is expected to equal true7308 #root_ref7309 is expected to equal true7310 is expected to equal false7311 is expected to equal false7312 Respond to7313 is expected to respond to #base_dir7314 is expected to respond to #disk_path7315 is expected to respond to #gitlab_shell7316 #change_head7317 delegates #change_head to repository7318 #after_repository_change_head7319 calls #reload_default_branch7320 publishes an Repositories::DefaultBranchChangedEvent event7321 #parent_user7322 returns the snippet author7323load_balancing7324 # order random7325 with replica hosts configured7326 configures load balancer with two replica hosts7327 for a clustered puma worker7328 configures load balancer to have two replica hosts7329 makes a read query successfully7330 makes a write query successfully7331Projects::GitGarbageCollectWorker7332 behaves like can collect git garbage7333 #perform7334 with active lease_uuid7335 flushes ref caches when the task if 'gc'7336 handles gRPC errors7337 behaves like it calls Gitaly7338 is expected to receive optimize_repository(*(any args)) 1 time7339 behaves like it updates the resource statistics7340 updates the resource statistics7341 does nothing if the database is read-only7342 with different lease than the active one7343 returns silently7344 with no active lease7345 when is able to get the lease7346 flushes ref caches when the task if 'gc'7347 behaves like it calls Gitaly7348 is expected to receive optimize_repository(*(any args)) 1 time7349 behaves like it updates the resource statistics7350 updates the resource statistics7351 does nothing if the database is read-only7352 when no lease can be obtained7353 returns silently7354 prune7355 is expected to receive prune_unreachable_objects(*(any args)) 1 time7356 eager7357 is expected to receive optimize_repository({:eager=>true}) 1 time7358 when is able to get the lease7359 when the repository has joined a pool7360 ensures the repositories are linked7361 when deduplication service runs into a GRPC internal error7362 behaves like can collect git garbage7363 #perform7364 with active lease_uuid7365 flushes ref caches when the task if 'gc'7366 handles gRPC errors7367 behaves like it calls Gitaly7368 is expected to receive optimize_repository(*(any args)) 1 time7369 behaves like it updates the resource statistics7370 updates the resource statistics7371 does nothing if the database is read-only7372 with different lease than the active one7373 returns silently7374 with no active lease7375 when is able to get the lease7376 flushes ref caches when the task if 'gc'7377 behaves like it calls Gitaly7378 is expected to receive optimize_repository(*(any args)) 1 time7379 behaves like it updates the resource statistics7380 updates the resource statistics7381 does nothing if the database is read-only7382 when no lease can be obtained7383 returns silently7384 prune7385 is expected to receive prune_unreachable_objects(*(any args)) 1 time7386 eager7387 is expected to receive optimize_repository({:eager=>true}) 1 time7388 LFS object garbage collection7389 cleans up unreferenced LFS objects7390 catches and logs exceptions7391 does nothing if the database is read-only7392API::Entities::MergeRequestBasic7393 includes expected fields7394 with :with_api_entity_associations scope7395 avoids N+1 queries7396 reviewers7397 includes assigned reviewers7398 squash7399 is expected to eq true7400 squash_on_merge7401 is expected to eq false7402Projects::AutoDevops::DisableService#execute7403 when Auto DevOps disabled at instance level7404 is expected to be falsy7405 when Auto DevOps enabled at instance level7406 when Auto DevOps explicitly enabled on project7407 is expected to be falsy7408 when Auto DevOps explicitly disabled on project7409 is expected to be falsy7410 when Auto DevOps is implicitly enabled7411 when is the first pipeline failure7412 disables Auto DevOps for project7413 when it is not the first pipeline failure7414 explicitly disables Auto DevOps for project7415 when an Auto DevOps pipeline has succeeded before7416 does not disable Auto DevOps for project7417 when project does not have an Auto DevOps record related7418 disables Auto DevOps for project7419 creates a ProjectAutoDevops record7420Gitlab::I18n::PoLinter7421 #errors7422 only calls validation once7423 #validate_po7424 for a fuzzy message7425 has an error7426 for a translations with newlines7427 has an error for a normal string7428 has an error when a translation is defined over multiple lines7429 raises an error when a plural translation is defined over multiple lines7430 raises an error when the plural id is defined over multiple lines7431 with an invalid po7432 returns the error7433 does not validate entries7434 with missing metadata7435 returns the an error7436 with a valid po7437 parses the file7438 validates the entries7439 has no errors7440 with missing plurals7441 has errors7442 with multiple plurals7443 has errors7444 with unescaped chars7445 contains an error7446 when an entry contains html7447 presents an error for each component containing angle brackets7448 #parse_po7449 with a valid po7450 fills in the entries7451 does not have errors7452 with an invalid po7453 contains an error7454 sets the entries to an empty array7455 #validate_entries7456 keeps track of errors for entries7457 #validate_entry7458 validates the flags, variable usage, newlines, and unescaped chars7459 #validate_number_of_plurals7460 validates when there are an incorrect number of translations7461 #validate_variables7462 validates both singular and plural in a pluralized string when the entry has a singular7463 only validates plural when there is no separate singular7464 validates the message variables7465 validates variable usage in message ids7466 #validate_variables_in_message7467 detects when a variables are used incorrectly7468 does not allow combining 1 `%d` unnamed variable with named variables7469 #validate_translation7470 succeeds with valid variables7471 adds an error message when translating fails7472 adds an error message when translating fails when translating with context7473 adds an error when trying to translate with incorrect variables when using unnamed variables7474 adds an error when trying to translate with named variables when unnamed variables are expected7475 tests translation for all given forms7476 #numbers_covering_all_plurals7477 can correctly find all required numbers to translate to Polish7478 #fill_in_variables7479 builds an array for %d translations7480 builds an array for %s translations7481 builds a hash for named variables7482Ci::RunnerProject7483 behaves like includes Limitable concern7484 #exceeds_limits?7485 without plan limits configured7486 is expected to eq false7487 without plan limits configured7488 is expected to eq false7489 with an existing model7490 is expected to eq true7491 validations7492 is expected to be a kind of Limitable7493 without plan limits configured7494 can create new models7495 with plan limits configured7496 can create new models7497 with an existing model7498 cannot create new models exceeding the plan limits7499 loose foreign key on ci_runner_projects.project_id7500 behaves like cleanup by a loose foreign key7501 cleans up (delete or nullify) the model7502Gitlab::Pagination::Keyset::Paginator7503 pagination7504 when per_page is greater than the record count7505 is expected to eq [#<Project id:1350 namespace644/project-1496>>, #<Project id:1353 namespace647/project-1499>>, #<Proj...498>>, #<Project id:1351 namespace645/project-1497>>, #<Project id:1354 namespace648/project-1500>>]7506 is expected not to have next page7507 is expected not to have previous page7508 has no next and previous cursor values7509 when 0 records are returned7510 is expected to be empty7511 is expected not to have next page7512 is expected not to have previous page7513 when page size is smaller than the record count7514 is expected to eq [#<Project id:1350 namespace644/project-1496>>, #<Project id:1353 namespace647/project-1499>>]7515 is expected to have next page7516 is expected not to have previous page7517 has next page cursor7518 does not have previous page cursor7519 when on the second page7520 is expected to eq [#<Project id:1352 namespace646/project-1498>>, #<Project id:1351 namespace645/project-1497>>]7521 is expected to have next page7522 is expected to have previous page7523 and then going back to the first page7524 is expected to eq [#<Project id:1350 namespace644/project-1496>>, #<Project id:1353 namespace647/project-1499>>]7525 is expected to have next page7526 is expected not to have previous page7527 when jumping to the last page7528 is expected to eq [#<Project id:1351 namespace645/project-1497>>, #<Project id:1354 namespace648/project-1500>>]7529 is expected not to have next page7530 is expected to have previous page7531 when paginating backwards7532 is expected to eq [#<Project id:1353 namespace647/project-1499>>, #<Project id:1352 namespace646/project-1498>>]7533 is expected to have next page7534 is expected to have previous page7535 when jumping to the first page7536 is expected to eq [#<Project id:1350 namespace644/project-1496>>, #<Project id:1353 namespace647/project-1499>>]7537 is expected to have next page7538 is expected not to have previous page7539 default keyset direction parameter7540 exposes the direction parameter in the cursor7541 when unsupported order is given7542 raises error7543 when use_union_optimization option is true and ordering by two columns7544 uses UNION queries7545Gitlab::GithubImport::Importer::NoteAttachmentsImporter7546 # order random7547 #execute7548 when importing release attachments7549 behaves like updates record description7550 changes attachment links7551 changes link to project blob files7552 doesn't change links to other projects7553 with new github image format7554 changes image attachment links7555 when importing issue attachments7556 behaves like updates record description7557 changes attachment links7558 changes link to project blob files7559 doesn't change links to other projects7560 with new github image format7561 changes image attachment links7562 when importing merge request attachments7563 behaves like updates record description7564 changes attachment links7565 changes link to project blob files7566 doesn't change links to other projects7567 with new github image format7568 changes image attachment links7569 when importing note attachments7570 changes note text with new attachment urls7571 changes note links to project blob files7572 doesn't change note links to other projects7573 when attachment behind redirection link is unsupported file type7574 does not replace url7575AuditEvent7576 sanitizes custom_message in the details hash7577 associations7578 is expected to belong to user required: false inverse_of => audit_events7579 validations7580 is expected to allow :ip_address to be ‹"192.168.17.43"›7581 is expected to allow :ip_address to be ‹"2001:0db8:85a3:0000:0000:8a2e:0370:7334"›7582 is expected not to allow :ip_address to be ‹"invalid IP"›7583 callbacks7584 #parallel_persist7585 wih author_name7586 behaves like a parallel persisted field7587 column: :value, details: nil, expected_value: :value7588 sets both values to be the same7589 column: nil, details: :value, expected_value: :value7590 sets both values to be the same7591 column: :value, details: :another_value, expected_value: :value7592 sets both values to be the same7593 column: nil, details: nil, expected_value: nil7594 sets both values to be the same7595 with entity_path7596 behaves like a parallel persisted field7597 column: :value, details: nil, expected_value: :value7598 sets both values to be the same7599 column: nil, details: :value, expected_value: :value7600 sets both values to be the same7601 column: :value, details: :another_value, expected_value: :value7602 sets both values to be the same7603 column: nil, details: nil, expected_value: nil7604 sets both values to be the same7605 with target_details7606 behaves like a parallel persisted field7607 column: :value, details: nil, expected_value: :value7608 sets both values to be the same7609 column: nil, details: :value, expected_value: :value7610 sets both values to be the same7611 column: :value, details: :another_value, expected_value: :value7612 sets both values to be the same7613 column: nil, details: nil, expected_value: nil7614 sets both values to be the same7615 with target_type7616 behaves like a parallel persisted field7617 column: :value, details: nil, expected_value: :value7618 sets both values to be the same7619 column: nil, details: :value, expected_value: :value7620 sets both values to be the same7621 column: :value, details: :another_value, expected_value: :value7622 sets both values to be the same7623 column: nil, details: nil, expected_value: nil7624 sets both values to be the same7625 with target_id7626 behaves like a parallel persisted field7627 column: :value, details: nil, expected_value: :value7628 sets both values to be the same7629 column: nil, details: :value, expected_value: :value7630 sets both values to be the same7631 column: :value, details: :another_value, expected_value: :value7632 sets both values to be the same7633 column: nil, details: nil, expected_value: nil7634 sets both values to be the same7635 #as_json7636 ip_address7637 overrides the ip_address with its string value7638 #author7639 when the target type is not Ci::Runner7640 returns a NullAuthor7641 when the target type is Ci::Runner and details contain runner_registration_token7642 returns a CiRunnerTokenAuthor7643 name consists of prefix and token7644Gitlab::Database::LoadBalancing::SidekiqServerMiddleware7645 #call7646 when worker class does not include WorkerAttributes7647 sticks to the primary7648 sets load balancing strategy to primary7649 when job contains wrapped worker class7650 uses wrapped job if available7651 when worker data consistency is :always7652 sticks to the primary7653 sets load balancing strategy to primary7654 when delay interval has not elapsed7655 does not sleep7656 when worker data consistency is :delayed7657 when database wal location is set7658 behaves like replica is up to date7659 does not stick to the primary7660 sets load balancing strategy to replica7661 when deduplication wal location is set7662 behaves like replica is up to date7663 does not stick to the primary7664 sets load balancing strategy to replica7665 when database location is not set7666 sticks to the primary7667 sets load balancing strategy to primary_no_wal7668 when WAL locations are blank7669 does not sleep7670 when WAL locations are present7671 when delay interval has not elapsed7672 when replica is up to date7673 does not sleep7674 when replica is not up to date7675 sleeps until the minimum delay is reached7676 when replica is never not up to date7677 sleeps until the maximum delay is reached7678 when replica is not up to date7679 when job is executed first7680 raises an error and retries7681 sets load balancing strategy to retry7682 when job is retried7683 and replica still lagging behind7684 sticks to the primary7685 sets load balancing strategy to primary7686 and replica is now up-to-date7687 does not stick to the primary7688 sets load balancing strategy to replica_retried7689 when worker data consistency is :sticky7690 when database wal location is set7691 behaves like replica is up to date7692 does not stick to the primary7693 sets load balancing strategy to replica7694 when deduplication wal location is set7695 behaves like replica is up to date7696 does not stick to the primary7697 sets load balancing strategy to replica7698 when database location is not set7699 sticks to the primary7700 sets load balancing strategy to primary_no_wal7701 when WAL locations are blank7702 does not sleep7703 when WAL locations are present7704 when delay interval has not elapsed7705 when replica is up to date7706 does not sleep7707 when replica is not up to date7708 sleeps until the minimum delay is reached7709 when replica is never not up to date7710 sleeps until the maximum delay is reached7711 when replica is not up to date7712 sticks to the primary7713 sets load balancing strategy to primary7714 #databases_in_sync?7715 treats load balancers without WAL entries as in sync7716 returns true when all load balancers are in sync for some replicas7717 returns true when all load balancers are in sync for all replicas7718 returns false when the load balancers are not in sync7719 when locations have string keys7720 returns false when the load balancers are not in sync7721Gitlab::SidekiqLogging::StructuredLogger7722 #call7723 with SIDEKIQ_LOG_ARGUMENTS enabled7724 logs start and end of job7725 logs real job wrapped by active job worker7726 logs an exception in job7727 logs the normalized SQL query for statement timeouts7728 logs the root cause of an Sidekiq::JobRetry::Skip exception in the job7729 logs the root cause of an Sidekiq::JobRetry::Handled exception in the job7730 keeps Sidekiq::JobRetry::Handled exception if the cause does not exist7731 does not modify the job7732 does not modify the wrapped job7733 with SIDEKIQ_LOG_ARGUMENTS disabled7734 logs start and end of job without args7735 logs without created_at and enqueued_at fields7736 with latency7737 logs with scheduling latency7738 with enqueue latency7739 logs with scheduling latency7740 with Gitaly, Rugged, and Redis calls7741 logs with Gitaly and Rugged timing data7742 when the job performs database queries7743 when load balancing is enabled7744 logs the database time7745 prevents database time from leaking to the next job7746 when the job uses load balancing capabilities7747 logs the database chosen7748 when there is extra metadata set for the done log7749 logs it in the done log7750 when instrumentation data is not loaded7751 does not raise exception7752 when the job payload is compressed7753 logs it in the done log7754 when the job is deferred7755 logs start and end of job with "deferred" job_status7756 when the job is dropped7757 logs start and end of job with "dropped" job_status7758 with a real worker7759 logs job done with urgency, target_duration_s and target_scheduling_latency_s fields7760 #add_time_keys!7761 update payload correctly7762Gitlab::Ci::Pipeline::Chain::Seed7763 #perform!7764 allocates next IID7765 ensures ci_ref7766 sets the seeds in the command object7767 when no ref policy is specified7768 correctly fabricates stages and builds7769 when refs policy is specified7770 returns pipeline seed with jobs only assigned to master7771 when source policy is specified7772 returns pipeline seed with jobs only assigned to schedules7773 when kubernetes policy is specified7774 when kubernetes is active7775 when user configured kubernetes from CI/CD > Clusters7776 returns seeds for kubernetes dependent job7777 when kubernetes is not active7778 does not return seeds for kubernetes dependent job7779 when variables policy is specified7780 returns stage seeds only when variables expression is truthy7781 when there is seeds_block7782 does not execute the block7783 #root_variables7784 sends root variable with overridden by rules7785 #rule_variables7786 correctly parses rule variables7787 N+1 queries7788 avoids N+1 queries when calculating variables of jobs7789Gitlab::ImportExport::Base::RelationFactory7790 #create7791 when relation is invalid7792 returns without creating new relations7793 when the relation is predefined7794 returns without creating a new relation7795 when author relation7796 returns author hash unchanged7797 when #setup_models is not implemented7798 raises NotImplementedError7799 when #setup_models is implemented7800 creates imported object7801 when relation contains user references7802 maps the right author to the imported note7803 when relation contains token attributes7804 removes token attributes7805 when relation contains encrypted attributes7806 removes encrypted attributes7807 with duplicate assignees7808 when duplicate assignees are present7809 removes duplicate assignees7810 .relation_class7811 when relation name is pluralized7812 returns constantized class7813 when relation name is singularized7814 returns constantized class7815Gitlab::Ci::Reports::Sbom::Component7816 has correct attributes7817 #name7818 is expected to eq "component-name"7819 with namespace7820 is expected to eq "org.NameSpace/Name"7821 when needing normalization7822 is expected to eq "org.namespace/name"7823 #purl_type7824 is expected to eq "npm"7825 #type7826 is expected to eq "library"7827 #<=>7828 equal7829 is expected to eq 07830 name lesser7831 is expected to eq -17832 name greater7833 is expected to eq 17834 purl type lesser7835 is expected to eq -17836 purl type greater7837 is expected to eq 17838 purl type nulls first7839 is expected to eq -17840 version lesser7841 is expected to eq -17842 version greater7843 is expected to eq 17844 version nulls first7845 is expected to eq -17846 #ingestible?7847 when component_type is invalid7848 is expected to equal false7849 when purl_type is invalid7850 is expected to equal false7851 when component_type is valid7852 component_type: "library"7853 is expected to equal true7854 when purl_type is valid7855 purl_type: "composer"7856 is expected to equal true7857 purl_type: "conan"7858 is expected to equal true7859 purl_type: "gem"7860 is expected to equal true7861 purl_type: "golang"7862 is expected to equal true7863 purl_type: "maven"7864 is expected to equal true7865 purl_type: "npm"7866 is expected to equal true7867 purl_type: "nuget"7868 is expected to equal true7869 purl_type: "pypi"7870 is expected to equal true7871 purl_type: "apk"7872 is expected to equal true7873 purl_type: "rpm"7874 is expected to equal true7875 purl_type: "deb"7876 is expected to equal true7877 purl_type: "cbl_mariner"7878 is expected to equal true7879 when there is no purl7880 is expected to equal true7881ci/status/_icon7882 when rendering status for build7883 when user has ability to see details7884 has link to build details page7885 when user do not have ability to see build details7886 contains build status text7887 does not contain links7888 when rendering status for external job7889 when user has ability to see commit status details7890 status has external target url7891 contains valid commit status text7892 has link to external status page7893 status do not have external target url7894 contains valid commit status text7895 has link to external status page7896ClickHouse::QueryBuilder7897 # order random7898 #offset7899 builds correct offset query7900 overrides previous offset value when called multiple times7901 method chaining7902 builds correct SQL query when methods are chained7903 when combining with a raw query7904 correctly generates the SQL query7905 #order7906 builds correct order query with direction :desc7907 builds correct order query with default direction asc7908 appends orderings on multiple calls7909 appends orderings for the same column when ordered multiple times7910 raises error for invalid direction7911 behaves like generates correct sql on multiple calls to `to_sql`7912 returns the same SQL when called multiple times on the same builder7913 returns different SQL when called multiple times on different builders7914 #select7915 builds correct select query with single field7916 builds correct select query with multiple fields7917 adds new fields on multiple calls without duplicating7918 behaves like generates correct sql on multiple calls to `to_sql`7919 returns the same SQL when called multiple times on the same builder7920 returns different SQL when called multiple times on different builders7921 #to_sql7922 delegates to the Arel::SelectManager7923 #where7924 with simple conditions7925 builds correct where query7926 with array conditions7927 builds correct where query7928 behaves like generates correct sql on multiple calls to `to_sql`7929 returns the same SQL when called multiple times on the same builder7930 returns different SQL when called multiple times on different builders7931 with supported arel nodes7932 builds a query using the In node7933 builds a query using the Equality node7934 builds a query using the LessThan node7935 builds a query using the LessThanOrEqual node7936 builds a query using the GreaterThan node7937 builds a query using the GreaterThanOrEqual node7938 with unsupported arel nodes7939 raises an error for the unsupported node7940 #to_redacted_sql7941 calls ::ClickHouse::Redactor correctly7942 #limit7943 builds correct limit query7944 overrides previous limit value when called multiple times7945 #initialize7946 initializes with correct table7947 #apply_conditions!7948 applies conditions to the manager7949Projects::ErrorTrackingHelper7950 #error_tracking_data7951 without error_tracking_setting7952 returns frontend configuration7953 with error_tracking_setting7954 when enabled7955 show error tracking enabled7956 when disabled7957 show error tracking not enabled7958 with integrated error tracking feature7959 feature_flag: false, enabled: true, settings_integrated: true, show_alert: true, integrated_enabled: false7960 is expected to include {"show-integrated-tracking-disabled-alert" => "true", "integrated-error-tracking-enabled" => "false"}7961 feature_flag: false, enabled: true, settings_integrated: false, show_alert: false, integrated_enabled: false7962 is expected to include {"show-integrated-tracking-disabled-alert" => "false", "integrated-error-tracking-enabled" => "false"}7963 feature_flag: false, enabled: false, settings_integrated: true, show_alert: false, integrated_enabled: false7964 is expected to include {"show-integrated-tracking-disabled-alert" => "false", "integrated-error-tracking-enabled" => "false"}7965 feature_flag: false, enabled: false, settings_integrated: false, show_alert: false, integrated_enabled: false7966 is expected to include {"show-integrated-tracking-disabled-alert" => "false", "integrated-error-tracking-enabled" => "false"}7967 feature_flag: true, enabled: true, settings_integrated: true, show_alert: false, integrated_enabled: true7968 is expected to include {"show-integrated-tracking-disabled-alert" => "false", "integrated-error-tracking-enabled" => "true"}7969 feature_flag: true, enabled: true, settings_integrated: false, show_alert: false, integrated_enabled: false7970 is expected to include {"show-integrated-tracking-disabled-alert" => "false", "integrated-error-tracking-enabled" => "false"}7971 feature_flag: true, enabled: false, settings_integrated: true, show_alert: false, integrated_enabled: false7972 is expected to include {"show-integrated-tracking-disabled-alert" => "false", "integrated-error-tracking-enabled" => "false"}7973 feature_flag: true, enabled: false, settings_integrated: false, show_alert: false, integrated_enabled: false7974 is expected to include {"show-integrated-tracking-disabled-alert" => "false", "integrated-error-tracking-enabled" => "false"}7975 when user is not maintainer7976 shows error tracking enablement as disabled7977 #error_details_data7978 returns the correct issue id7979 returns the correct project path7980 returns the correct stack trace path7981 creates an issue and redirects to issue show page7982 with integrated error tracking feature7983 feature_flag: false, enabled: true, settings_integrated: true, integrated_enabled: false7984 is expected to eq "false"7985 feature_flag: false, enabled: true, settings_integrated: false, integrated_enabled: false7986 is expected to eq "false"7987 feature_flag: false, enabled: false, settings_integrated: true, integrated_enabled: false7988 is expected to eq "false"7989 feature_flag: false, enabled: false, settings_integrated: false, integrated_enabled: false7990 is expected to eq "false"7991 feature_flag: true, enabled: true, settings_integrated: true, integrated_enabled: true7992 is expected to eq "true"7993 feature_flag: true, enabled: true, settings_integrated: false, integrated_enabled: false7994 is expected to eq "false"7995 feature_flag: true, enabled: false, settings_integrated: true, integrated_enabled: false7996 is expected to eq "false"7997 feature_flag: true, enabled: false, settings_integrated: false, integrated_enabled: false7998 is expected to eq "false"7999JiraConnectSubscriptions::CreateService8000 remote user does not have access8001 behaves like a failed execution8002 does not create a subscription8003 returns an error status8004 remote user cannot be retrieved8005 behaves like a failed execution8006 does not create a subscription8007 returns an error status8008 when user does have access8009 creates a subscription8010 returns success8011 namespace has projects8012 starts workers to sync projects in batches with delay8013 when path is invalid8014 behaves like a failed execution8015 does not create a subscription8016 returns an error status8017 when user does not have access8018 behaves like a failed execution8019 does not create a subscription8020 returns an error status8021Commits::CherryPickService8022 #execute8023 behaves like successful cherry-pick8024 picks the commit into the branch8025 supports a custom commit message8026 when picking a merge-request8027 adds a system note8028 behaves like successful cherry-pick8029 picks the commit into the branch8030 supports a custom commit message8031Banzai::ReferenceRedactor8032 #redact8033 when reference not visible to user8034 redacts an array of documents8035 replaces redacted reference with inner HTML8036 when data-original attribute provided8037 replaces redacted reference with original content8038 does not replace redacted reference with original content if href is given8039 uses the original content as the link content if given8040 when project is in pending delete8041 redacts an issue attached8042 redacts an external issue8043 when reference visible to user8044 does not redact an array of documents8045 when the user cannot read cross project8046 skips links to issues within the same project8047 removes info from a cross project reference8048 #redact_nodes8049 redacts an Array of nodes8050 #nodes_visible_to_user8051 returns a Set containing the visible nodes8052 handles invalid references gracefully8053Todos::Destroy::ProjectPrivateService8054 #execute8055 when a project set to private8056 removes issue todos for a user who is not a member8057 when project is not private8058 does not remove any todos8059Ci::ExternalPullRequests::CreatePipelineWorker8060 #perform8061 creates the pipeline8062 when the project not found8063 behaves like not calling service8064 does not call the service8065 when the user not found8066 behaves like not calling service8067 does not call the service8068 when the pull request not found8069 behaves like not calling service8070 does not call the service8071 when the pull request does not belong to the project8072 behaves like not calling service8073 does not call the service8074X509IssuerCrlCheckWorker8075 #perform8076 valid crl8077 changes certificate status for revoked certificates8078 invalid crl8079 does not change certificate status8080 not found crl8081 does not change certificate status8082 unreachable crl8083 does not change certificate status8084MergeRequests::MergeOrchestrationService8085 #execute8086 when merge request is mergeable8087 when merge request can be merged automatically8088 schedules auto merge8089 when merge request cannot be merged automatically8090 merges immediately8091 when merge request is not mergeable8092 does nothing8093 #can_merge?8094 when merge request is mergeable8095 is expected to eq true8096 when merge request is not mergeable8097 is expected to eq false8098 #preferred_auto_merge_strategy8099 when merge request can be merged automatically8100 fetches preferred auto merge strategy8101 when merge request cannot be merged automatically8102 is expected to be nil8103Gitlab::Doctor::ResetTokens8104 # order random8105 prints progress along the way8106 fixes broken project and not the functional project8107 prints 'Something went wrong' error when encounters unexpected exception, but continues8108 fixes project with cipher error8109 fixes broken group and not the functional group8110 when non-existing token field is given8111 does not fix anything8112 when executing in a dry-run mode8113 prints info about fixed project, but does not actually do anything8114 when one model specified8115 fixes broken project8116 does not fix other models8117MergeRequests::HandleAssigneesChangeService8118 #async_execute8119 performs MergeRequests::HandleAssigneesChangeWorker asynchronously8120 #execute8121 creates assignee note8122 sends email notifications to old and new assignees8123 creates pending todo for assignee8124 tracks users assigned event8125 tracks assignees changed event8126 when unassigning all users8127 creates assignee note8128 when execute_hooks option is set to true8129 executes hooks and integrations8130Gitlab::ErrorTracking::ContextPayloadGenerator8131 user metadata8132 appends user metadata to the payload8133 tags metadata8134 when the GITLAB_SENTRY_EXTRA_TAGS env is not set8135 does not log into AppLogger8136 does not send any extra tags8137 when the GITLAB_SENTRY_EXTRA_TAGS env is a JSON hash8138 includes those tags in all events8139 does not log into AppLogger8140 when the GITLAB_SENTRY_EXTRA_TAGS env is not a JSON hash8141 env_var: "{:foo=>\"bar\", :baz=>\"quux\"}", error: "JSON::ParserError"8142 logs into AppLogger8143 does not include any extra tags8144 env_var: "[]", error: "NoMethodError"8145 logs into AppLogger8146 does not include any extra tags8147 env_var: "[[\"foo\",\"bar\"]]", error: "NoMethodError"8148 logs into AppLogger8149 does not include any extra tags8150 env_var: "[\"foo\",\"bar\"]", error: "NoMethodError"8151 logs into AppLogger8152 does not include any extra tags8153 env_var: "\"string\"", error: "NoMethodError"8154 logs into AppLogger8155 does not include any extra tags8156 extra metadata8157 appends extra metadata to the payload8158 appends exception embedded extra metadata to the payload8159 filters sensitive extra info8160Integrations::EmailsOnPush8161 Validations8162 when integration is active8163 is expected to validate that :recipients cannot be empty/falsy8164 when integration is inactive8165 is expected not to validate that :recipients cannot be empty/falsy8166 validates number of recipients8167 valid number of recipients8168 does not count duplicates and invalid emails8169 invalid number of recipients8170 is expected not to be valid8171 adds an error message8172 when integration is not active8173 is expected to be valid8174 .new8175 when properties is missing branches_to_be_notified8176 sets the default value to all8177 when branches_to_be_notified is already set8178 does not overwrite it with the default value8179 .valid_recipients8180 removes invalid email addresses and removes duplicates by keeping the original capitalization8181 #execute8182 when emails are disabled on the project8183 does not send emails8184 when emails are enabled on the project8185 pushing to a random branch and notification configured for all branches8186 sends email8187 pushing to the default branch and notification configured for all branches8188 sends email8189 pushing to a protected branch and notification configured for all branches8190 sends email8191 pushing to a random branch and notification configured for default branch only8192 does not send email8193 pushing to the default branch and notification configured for default branch only8194 sends email8195 pushing to a protected branch and notification configured for default branch only8196 does not send email8197 pushing to a random branch and notification configured for protected branches only8198 does not send email8199 pushing to the default branch and notification configured for protected branches only8200 does not send email8201 pushing to a protected branch and notification configured for protected branches only8202 sends email8203 pushing to a random branch and notification configured for default and protected branches only8204 does not send email8205 pushing to the default branch and notification configured for default and protected branches only8206 sends email8207 pushing to a protected branch and notification configured for default and protected branches only8208 sends email8209LfsFileLock8210 is expected to belong to project required: false8211 is expected to belong to user required: false8212 is expected to validate that :project_id cannot be empty/falsy8213 is expected to validate that :user_id cannot be empty/falsy8214 is expected to validate that :path cannot be empty/falsy8215 #can_be_unlocked_by?8216 when it's forced8217 can be unlocked by the author8218 can be unlocked by a maintainer8219 can't be unlocked by other user8220 when it isn't forced8221 can be unlocked by the author8222 can't be unlocked by a maintainer8223 can't be unlocked by other user8224Gitlab::GithubImport::Markdown::Attachment8225 # order random8226 #part_of_project_blob?8227 when url is a part of project blob8228 is expected to eq true8229 when url is not a part of project blob8230 is expected to eq false8231 #inspect8232 returns attachment basic info8233 #media?8234 when it is a media link8235 is expected to eq true8236 when it is a new media link8237 is expected to eq true8238 when it is not a media link8239 is expected to eq false8240 #doc_belongs_to_project?8241 when url relates to this project8242 is expected to eq true8243 when url is not related to this project8244 is expected to eq false8245 when url is a part of project blob8246 is expected to eq false8247 .from_markdown8248 when it's a doc attachment8249 returns instance with attachment info8250 when type is not in whitelist8251 is expected to eq nil8252 when domain name is unknown8253 is expected to eq nil8254 when URL is blank8255 is expected to eq nil8256 when it's an image attachment8257 returns instance with attachment info8258 when type is not in whitelist8259 is expected to eq nil8260 when domain name is unknown8261 is expected to eq nil8262 when URL is blank8263 is expected to eq nil8264 when image attachment is in the new format8265 returns instance with attachment info8266 when it's an inline html node8267 returns instance with attachment info8268 when image src is not present8269 is expected to eq nil8270Packages::Go::VersionFinder8271 #execute8272 for the root module8273 behaves like #execute8274 returns v1.0.1, v1.0.2, v1.0.3, v1.0.48275 for the package8276 behaves like #execute8277 returns nothing8278 for the submodule8279 behaves like #execute8280 returns v1.0.3, v1.0.48281 for the root module v28282 behaves like #execute8283 returns v2.0.08284 for the bad module8285 with gomod checking enabled8286 behaves like #execute8287 returns nothing8288 with gomod checking disabled8289 behaves like #execute8290 returns v1.0.48291 #find8292 with a ref8293 returns a ref version8294 with a semver tag8295 returns a version with a semver8296 with a semver tag string8297 returns a version with a semver8298 with a commit8299 retruns a commit version8300 with a pseudo-version8301 returns a pseudo version8302 with a string that is not a semantic version8303 returns nil8304 with a pseudo-version that does not reference a commit8305 behaves like #find with an invalid argument8306 raises an argument exception: invalid pseudo-version: unknown commit8307 with a pseudo-version with a short sha8308 behaves like #find with an invalid argument8309 raises an argument exception: invalid pseudo-version: revision is shorter than canonical8310 with a pseudo-version with an invalid timestamp8311 behaves like #find with an invalid argument8312 raises an argument exception: invalid pseudo-version: does not match version-control timestamp8313TwoFactor::DestroyService8314 disabling two-factor authentication8315 when the user does not have two-factor authentication enabled8316 returns error8317 behaves like does not send notification email8318 notification8319 does not send a notification8320 when the user has two-factor authentication enabled8321 when the executor is not authorized to disable two-factor authentication8322 disabling the two-factor authentication of another user8323 returns error8324 does not disable two-factor authentication8325 behaves like does not send notification email8326 notification8327 does not send a notification8328 when the executor is authorized to disable two-factor authentication8329 disabling their own two-factor authentication8330 behaves like disables two-factor authentication8331 returns success8332 disables the two-factor authentication of the user8333 notification8334 sends a notification8335 admin disables the two-factor authentication of another user8336 behaves like disables two-factor authentication8337 returns success8338 disables the two-factor authentication of the user8339 notification8340 sends a notification8341Gitlab::Consul::Internal8342 .api_url8343 returns correct value8344 when consul setting is not present in gitlab.yml8345 does not fail8346 .discover_service8347 behaves like returns nil given blank value of8348 with8349 is expected to be nil8350 with8351 is expected to be nil8352 behaves like returns nil given blank value of8353 with8354 is expected to be nil8355 with8356 is expected to be nil8357 one service discovered8358 returns the service address and port8359 multiple services discovered8360 uses the first service8361 behaves like handles failure response8362 raises Gitlab::Consul::Internal::SocketError when SocketError is rescued8363 raises Gitlab::Consul::Internal::SSLError when OpenSSL::SSL::SSLError is rescued8364 raises Gitlab::Consul::Internal::ECONNREFUSED when Errno::ECONNREFUSED is rescued8365 raises Consul::Internal::UnexpectedResponseError when StandardError is rescued8366 raises Consul::Internal::UnexpectedResponseError when request returns 5008367 raises Consul::Internal::UnexpectedResponseError when request returns non json data8368 .discover_prometheus_server_address8369 returns the server address8370 behaves like returns nil given blank value of8371 with8372 is expected to be nil8373 with8374 is expected to be nil8375 behaves like handles failure response8376 raises Gitlab::Consul::Internal::SocketError when SocketError is rescued8377 raises Gitlab::Consul::Internal::SSLError when OpenSSL::SSL::SSLError is rescued8378 raises Gitlab::Consul::Internal::ECONNREFUSED when Errno::ECONNREFUSED is rescued8379 raises Consul::Internal::UnexpectedResponseError when StandardError is rescued8380 raises Consul::Internal::UnexpectedResponseError when request returns 5008381 raises Consul::Internal::UnexpectedResponseError when request returns non json data8382Ci::CancelPipelineWorker8383 #perform8384 cancels the pipeline8385 if pipeline is deleted8386 does not error8387 with builds and state transition side effects8388 behaves like an idempotent worker8389 is labeled as idempotent8390 performs multiple times sequentially without raising an exception8391 cancels the pipeline8392RunPipelineScheduleWorker8393 has an until_executed deduplicate strategy8394 #perform8395 when a schedule not found8396 does not call the Service8397 when a schedule project is missing8398 does not call the Service8399 when a user not found8400 does not call the Service8401 #run_pipeline_schedule8402 when pipeline can be created8403 when pipeline is persisted8404 returns the service response8405 does not log errors8406 does not change the next_run_at8407 when scheduling option is given as true8408 returns the service response8409 does not log errors8410 changes the next_run_at8411 when pipeline was not persisted8412 logs a pipeline creation error8413 when schedule is already executed8414 does not change the next_run_at8415 creates a pipeline8416 with feature flag persist_failed_pipelines_from_schedules disabled8417 does not save_on_errors8418 when database statement timeout happens8419 increments Prometheus counter8420 logging a pipeline error8421MergeRequests::ReloadMergeHeadDiffService8422 #execute8423 creates a merge head diff8424 when merge ref head is not present8425 returns error8426 when failed to create merge head diff8427 returns error8428 when there is existing merge head diff8429 recreates merge head diff8430CrossDatabaseIgnoredTables8431 # order random8432 .cross_database_ignore_tables8433 when the tables are not ignored8434 raises an error when we doing cross-database modification using create8435 raises an error when we doing cross-database modification using update8436 raises an error when we doing cross-database modification using destroy8437 when the tables are ignored on save8438 does not raise an error when creating a new object8439 does not raise an error when updating an existing object8440 still raises an error when deleting an object8441 when the tables are ignored on save with if statement8442 when condition returns true8443 does not raise an error on creating a new object8444 when condition returns false8445 raises an error on creating a new object8446 when the tables are ignored on create8447 does not raise an error when creating a new object8448 raises an error when updating an existing object8449 still raises an error when deleting an object8450 when the tables are ignored on update8451 raises an error when creating a new object8452 does not raise an error when updating an existing object8453 still raises an error when deleting an object8454 when the tables are ignored on create and destroy8455 does not raise an error when creating a new object8456 raises an error when updating an existing object8457 does not raise an error when deleting an object8458ProtectedBranchesFinder8459 #execute8460 behaves like execute by entity8461 returns all protected branches of project by default8462 when search param is present8463 filters by search param8464 when there are more protected branches than the limit8465 returns limited protected branches of project8466 behaves like execute by entity8467 returns all protected branches of project by default8468 when search param is present8469 filters by search param8470 when there are more protected branches than the limit8471 returns limited protected branches of project8472Gitlab::GithubImport::ParallelScheduling8473 #parallel?8474 returns true when running in parallel mode8475 returns false when running in sequential mode8476 #execute8477 imports data in parallel when running in parallel mode8478 imports data in parallel when running in sequential mode8479 expires the cache used for tracking already imported objects8480 logs the the process8481 when abort_on_failure is false8482 logs the error when it fails8483 when abort_on_failure is true8484 logs the error when it fails and marks import as failed8485 #sequential_import8486 imports data in sequence8487 #parallel_import8488 imports data in parallel with delays respecting parallel_import_batch definition and return job waiter8489 when job restarts due to API rate limit or Sidekiq interruption8490 restores job waiter's key and jobs_remaining8491 #each_object_to_import8492 yields every object to import8493 resumes from the last page8494 does not yield any objects if the page number was not set8495 does not yield the object if it was already imported8496 #already_imported?8497 returns false when an object has not yet been imported8498 returns true when an object has already been imported8499 #mark_as_imported8500 marks an object as already imported8501 #increment_object_counter?8502 returns true8503Users::PhoneNumberValidation8504 # order random8505 is expected not to allow :phone_number to be ‹"555-555"›8506 is expected to validate that the length of :telesign_reference_xid is at most 2558507 is expected to validate that :phone_number cannot be empty/falsy8508 is expected to validate that the length of :phone_number is at most 128509 is expected not to allow :phone_number to be ‹"+555555"›8510 is expected to belong to banned_user required: false8511 is expected to validate that :country cannot be empty/falsy8512 is expected not to allow :phone_number to be ‹"555 555"›8513 is expected to belong to user required: false8514 is expected to validate that :international_dial_code cannot be empty/falsy8515 is expected to validate that :international_dial_code looks like an integer greater than or equal to 1 and less than or equal to 9998516 is expected to allow :phone_number to be ‹"555555"›8517 is expected to validate that the length of :country is at most 38518 #validated?8519 when phone number record is not validated8520 returns false8521 when phone number record is validated8522 returns true8523 .related_to_banned_user?8524 when banned user has the same international dial code and phone number8525 is expected to eq true8526 when banned user has the same international dial code and phone number, but different country code8527 is expected to eq true8528 when banned user does not have the same international dial code8529 is expected to eq false8530 when banned user does not have the same phone number8531 is expected to eq false8532 when not-banned user has the same international dial code and phone number8533 is expected to eq false8534 #for_user8535 when multiple records exist for multiple users8536 returns the correct phone number record for user8537Mutations::ContainerRepositories::DestroyTags8538 is expected to require graphql authorizations :destroy_container_image8539 #resolve8540 with valid id8541 user_role: :maintainer, shared_examples_name: "destroying container repository tags"8542 behaves like destroying container repository tags8543 destroys the container repository tags8544 creates a package event8545 user_role: :developer, shared_examples_name: "destroying container repository tags"8546 behaves like destroying container repository tags8547 destroys the container repository tags8548 creates a package event8549 user_role: :reporter, shared_examples_name: "denying access to container respository"8550 behaves like denying access to container respository8551 raises an error8552 user_role: :guest, shared_examples_name: "denying access to container respository"8553 behaves like denying access to container respository8554 raises an error8555 user_role: :anonymous, shared_examples_name: "denying access to container respository"8556 behaves like denying access to container respository8557 raises an error8558 with non-existing id8559 behaves like denying access to container respository8560 raises an error8561 with service error8562 is expected to eq {:deleted_tag_names=>[], :errors=>["could not delete tags"]}8563 does not create a package event8564Jobs/Code-Quality.gitlab-ci.yml8565 the created pipeline8566 on master8567 creates the code_quality job8568 on another branch8569 creates the code_quality job8570 on tag8571 creates the code_quality job8572 on merge request8573 has no jobs8574 CODE_QUALITY_DISABLED is set8575 on master8576 has no jobs8577 on another branch8578 has no jobs8579 on tag8580 has no jobs8581SnippetsHelper8582 #embedded_raw_snippet_button8583 for Personal Snippets8584 returns view raw button of embedded snippets8585 for Project Snippets8586 returns view raw button of embedded snippets8587 #embedded_snippet_download_button8588 for Personal Snippets8589 returns download button of embedded snippets8590 for Project Snippets8591 returns download button of embedded snippets8592 #embedded_snippet_copy_button8593 for Personal Snippets8594 returns copy button of embedded snippets8595 for Project Snippets8596 returns copy button of embedded snippets8597 path helpers8598 #toggle_award_emoji_project_project_snippet_path8599 #toggle_award_emoji_project_project_snippet_url8600 #snippet_badge8601 when snippet is private8602 returns the snippet badge8603 when snippet is public8604 does not return anything8605 when snippet is internal8606 does not return anything8607 #snippet_report_abuse_path8608 returns false if the user cannot submit the snippet as spam8609 returns true if the user can submit the snippet as spam8610BulkImports::Projects::Pipelines::CiPipelinesPipeline8611 #run8612 imports Ci::Pipeline into destination project8613 notes8614 imports pipeline with notes8615 stages8616 imports pipeline with notes8617 external pull request8618 imports pipeline with external pull request8619 merge request8620 imports pipeline with external pull request8621Gitlab::Middleware::SameSiteCookies8622 #call8623 without SSL enabled8624 with cookie8625 does not add headers to cookies8626 with SSL enabled8627 with no cookies8628 does not add headers8629 with different browsers8630 description: "iOS 12", user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1", expected: false8631 returns expected SameSite status8632 description: "macOS 10.14 + Safari", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15", expected: false8633 returns expected SameSite status8634 description: "macOS 10.14 + Opera", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36 OPR/47.0.2631.55", expected: false8635 returns expected SameSite status8636 description: "macOS 10.14 + Chrome v80", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36", expected: true8637 returns expected SameSite status8638 description: "Chrome v41", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", expected: true8639 returns expected SameSite status8640 description: "Chrome v50", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2348.1 Safari/537.36", expected: true8641 returns expected SameSite status8642 description: "Chrome v51", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2718.15 Safari/537.36", expected: false8643 returns expected SameSite status8644 description: "Chrome v62", user_agent: "Mozilla/5.0 (Macintosh; Intel NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36", expected: false8645 returns expected SameSite status8646 description: "Chrome v66", user_agent: "Mozilla/5.0 (Linux; Android 4.4.2; Avvio_793 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.126 Mobile Safari/537.36", expected: false8647 returns expected SameSite status8648 description: "Chrome v67", user_agent: "Mozilla/5.0 (Linux; Android 7.1.1; SM-J510F Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3371.0 Mobile Safari/537.36", expected: true8649 returns expected SameSite status8650 description: "Chrome v85", user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36", expected: true8651 returns expected SameSite status8652 description: "Chromium v66", user_agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 HeadlessChrome/66.0.3359.181 Safari/537.36", expected: false8653 returns expected SameSite status8654 description: "Chromium v85", user_agent: "Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/85.0.4183.59 Chrome/85.0.4183.59 Safari/537.36", expected: true8655 returns expected SameSite status8656 description: "UC Browser 12.0.4", user_agent: "Mozilla/5.0 (Linux; U; Android 4.4.4; zh-CN; A31 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.0.4.986 Mobile Safari/537.36", expected: false8657 returns expected SameSite status8658 description: "UC Browser 12.13.0", user_agent: "Mozilla/5.0 (Linux; U; Android 7.1.1; en-US; SM-C9000 Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.0.1207 Mobile Safari/537.36", expected: false8659 returns expected SameSite status8660 description: "UC Browser 12.13.2", user_agent: "Mozilla/5.0 (Linux; U; Android 9; en-US; Redmi Note 7 Build/PQ3B.190801.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.2.1208 Mobile Safari/537.36", expected: true8661 returns expected SameSite status8662 description: "UC Browser 12.13.5", user_agent: "Mozilla/5.0 (Linux; U; Android 5.1.1; en-US; PHICOMM C630 (CLUE L) Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.5.1209 Mobile Safari/537.36", expected: true8663 returns expected SameSite status8664 description: "Playstation", user_agent: "Mozilla/5.0 (PlayStation 4 2.51) AppleWebKit/537.73 (KHTML, like Gecko)", expected: true8665 returns expected SameSite status8666 with single cookie8667 adds required headers8668 multiple cookies8669 adds required headers8670 multiple cookies with some missing headers8671 adds missing headers8672 multiple cookies with all headers present8673 does not add new headers8674Ci::CreatePipelineService8675 tags:8676 with valid config8677 creates a pipeline8678 with too many tags8679 creates a pipeline without builds8680 tags persistence8681 with multiple tags8682 when the tags do not exist8683 does not execute N+1 queries8684 when tags are already persisted8685 does not execute N+1 queries8686 with bridge jobs8687 is expected to be empty8688Projects::AlertManagementHelper8689 #alert_management_data8690 without alert_managements_setting8691 returns index page configuration8692 with prometheus integration8693 when manual prometheus integration is active8694 enables alert management8695 when prometheus service is inactive8696 disables alert management8697 with http integration8698 when integration is active8699 enables alert management8700 when integration is inactive8701 disables alert management8702 with an alert8703 enables alert management8704 when user does not have requisite enablement permissions8705 shows error tracking enablement as disabled8706 #alert_management_detail_data8707 returns detail page configuration8708 when user cannot update alert8709 shows error tracking enablement as disabled8710Git::WikiPushService::Change8711 #page8712 the page does not exist8713 the operation is added8714 is expected to have attributes {:page => (be nil)}8715 the operation is deleted8716 is expected to have attributes {:page => (be nil)}8717 the operation is renamed8718 is expected to have attributes {:page => (be nil)}8719 the operation is modified8720 is expected to have attributes {:page => (be nil)}8721 the page can be found8722 the page has been deleted8723 is expected to have attributes {:page => #<Double "WikiPage">}8724 the operation is added8725 is expected to have attributes {:page => #<Double "WikiPage">}8726 the operation is renamed8727 is expected to have attributes {:page => #<Double "WikiPage">}8728 the operation is modified8729 is expected to have attributes {:page => #<Double "WikiPage">}8730 #last_known_slug8731 the page has been created8732 is expected to have attributes {:last_known_slug => "Page_11"}8733 the operation is renamed8734 is expected to have attributes {:last_known_slug => "Page_13"}8735 the operation is modified8736 is expected to have attributes {:last_known_slug => "Page_14"}8737 the operation is deleted8738 is expected to have attributes {:last_known_slug => "Page_15"}8739 #event_action8740 the page is deleted8741 is expected to have attributes {:event_action => :destroyed}8742 the page is added8743 is expected to have attributes {:event_action => :created}8744 the page is renamed8745 is expected to have attributes {:event_action => :updated}8746 the page is modified8747 is expected to have attributes {:event_action => :updated}8748NotificationsHelper8749 notification_icon8750 is expected to match "data-testid=\"notifications-off-icon\""8751 is expected to match "data-testid=\"notifications-off-icon\""8752 is expected to match "data-testid=\"notifications-icon\""8753 is expected to match "data-testid=\"at-icon\""8754 is expected to match "data-testid=\"earth-icon"8755 is expected to match "data-testid=\"eye-icon\""8756 is expected to equal ""8757 notification_title8758 is expected to match "Watch"8759 is expected to match "On mention"8760 is expected to match "Global"8761 #notification_icon_level8762 is expected to eq "owner_disabled"8763 is expected to eq "watch"8764 is expected to eq "participating"8765Gitlab::AuthorizedKeys8766 #accessible?8767 authorized_keys file exists8768 can open file8769 is expected to be truthy8770 cannot open file8771 is expected to be falsey8772 authorized_keys file does not exist8773 is expected to be falsey8774 #create8775 authorized_keys file exists8776 is expected to be truthy8777 authorized_keys file does not exist8778 creates authorized_keys file8779 cannot create file8780 is expected to be falsey8781 #add_key8782 authorized_keys file exists8783 adds a line at the end of the file and strips trailing garbage8784 authorized_keys file does not exist8785 creates the file8786 #batch_add_keys8787 authorized_keys file exists8788 adds lines at the end of the file8789 invalid key8790 doesn't add keys8791 authorized_keys file does not exist8792 creates the file8793 #remove_key8794 authorized_keys file exists8795 removes the right line8796 authorized_keys file does not exist8797 is expected to be falsey8798 #clear8799 authorized_keys file exists8800 is expected to be truthy8801 authorized_keys file does not exist8802 is expected to be truthy8803 #list_key_ids8804 authorized_keys file exists8805 is expected to eq [1, 2, 3, 9000]8806 authorized_keys file does not exist8807 is expected to be empty8808Tooling::FindCodeowners8809 #execute8810 prints CODEOWNERS as configured8811 #load_definitions8812 expands the allow and deny list with keywords and patterns8813 expands the patterns for the auth group8814 retains the array and expands the patterns for the compliance group8815 #load_config8816 loads the config with symbolized keys8817 when YAML has safe_load_file8818 calls safe_load_file8819 when YAML does not have safe_load_file8820 calls load_file8821 #path_matches?8822 passes flags we are expecting to File.fnmatch?8823 #normalize_pattern8824 returns /**/* if the input is *8825 prepends /** if the input does not start with /8826 returns the pattern if the input starts with /8827 appends **/* if the input ends with /8828 #consolidate_paths8829 when the directory has the same number of entries8830 consolidates into the directory8831 when the directory has different number of entries8832 returns the original paths8833Banzai::ReferenceParser::ProjectParser8834 #referenced_by8835 when the link has a data-project attribute8836 using an existing project ID8837 returns an Array of projects8838 using a non-existing project ID8839 returns an empty Array8840 using a private project ID8841 returns an empty Array when unauthorized8842 returns an Array when authorized8843ImportExportUploader8844 local store8845 #move_to_cache8846 returns false8847 with project export8848 returns true8849 #move_to_store8850 returns true8851 object_store is REMOTE8852 behaves like builds correct paths8853 #store_dir8854 behaves like matches the method pattern8855 is expected to match /import_export_upload\/import_file\//8856 #cache_dir8857 behaves like matches the method pattern8858 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)8859 #work_dir8860 behaves like matches the method pattern8861 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)8862 #upload_path8863 behaves like matches the method pattern8864 is expected to match /import_export_upload\/import_file\//8865 #relative_path8866 is relative (PENDING: Path not set, skipping.)8867 .absolute_path8868 behaves like matches the method pattern8869 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)8870 .base_dir8871 behaves like matches the method pattern8872 example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)8873 path traversal exploits8874 throws an exception8875 #move_to_cache8876 returns false8877 with project export8878 returns true8879 #move_to_store8880 returns false8881 with an export file directly uploaded8882 cleans up cached file8883 .workhorse_local_upload_path8884 returns path that includes uploads dir8885Sidebars::UserProfile::Menus::ContributedProjectsMenu8886 # order random8887 behaves like User profile menu8888 does not contain any sub menu8889 renders the correct link8890 renders the correct title8891 renders the correct icon8892 renders the correct avatar8893 defines correct active route8894 renders if user is logged in8895 when viewed user is blocked8896 when user is not logged in8897 is not allowed to view the menu item8898 when current user has permission8899 is allowed to view the menu item8900 when current user does not have permission8901 is not allowed to view the menu item8902 when viewed user is banned8903 when user is not logged in8904 is not allowed to view the menu item8905 when current user has permission8906 is allowed to view the menu item8907 when current user does not have permission8908 is not allowed to view the menu item8909Resolvers::IssueStatusCountsResolver8910 #resolve8911 is expected to be a kind of Gitlab::IssuablesCountForState8912 is expected to eq #<Project id:1458 group385/project-1676>>8913 filters by search8914 filters by issue type8915 behaves like returns expected results8916 returns expected results8917 project used as parent8918 behaves like returns expected results8919 returns expected results8920 group used as parent8921 behaves like returns expected results8922 returns expected results8923 when both assignee_username and assignee_usernames are provided8924 returns a mutually exclusive filter error8925Mutations::CustomerRelations::Contacts::Create8926 is expected to require graphql authorizations :admin_crm_contact8927 #resolve8928 when the user does not have permission8929 raises an error8930 when the user has permission8931 creates contact with correct values8932 when crm_enabled is false8933 raises an error8934 when the params are invalid8935 returns the validation error8936 when attaching to an crm_organization8937 when all ok8938 creates contact with correct values8939 when crm_organization does not exist8940 returns the relevant error8941 when crm_organzation belongs to a different group8942 returns the relevant error8943Gitlab::Kubernetes::Namespace8944 is expected to eq "a_namespace"8945 #exists?8946 when namespace do not exits8947 returns false8948 when namespace exits8949 returns true8950 when cluster cannot be reached8951 raises exception8952 #create!8953 creates a namespace8954 with labels8955 creates a namespace with labels8956 #ensure_exists!8957 checks for existing namespace before creating8958 do not re-create an existing namespace8959 when client errors8960 raises the exception8961 logs the error8962Packages::MarkPackagesForDestructionService8963 # order random8964 #execute8965 when the user is authorized8966 when it is successful8967 marks the packages as pending destruction8968 with maven packages8969 marks the packages as pending destruction8970 without version8971 marks the packages as pending destruction8972 when it is not successful8973 returns an error ServiceResponse8974 when the user is not authorized8975 returns an error ServiceResponse8976Gitlab::Database::Reindexing::IndexSelection8977 orders by highest relative bloat first8978 excludes indexes with a relative bloat level below 20%8979 excludes indexes smaller than 1 GiB ondisk size8980 includes indexes larger than 100 GiB ondisk size8981 with time frozen8982 does not return indexes with reindex action in the last 10 days8983 with restricted tables8984 when executed on Fridays8985 is expected not to include #<Gitlab::Database::PostgresIndex identifier: "public.some_index_74", indexrelid: 74, schema: "public...efinition: "CREATE INDEX public.some_index_74 ON ci_builds (ba...", ondisk_size_bytes: 107374182400>8986 when executed on Saturdays8987 is expected to include #<Gitlab::Database::PostgresIndex identifier: "public.some_index_85", indexrelid: 85, schema: "public...efinition: "CREATE INDEX public.some_index_85 ON ci_builds (ba...", ondisk_size_bytes: 107374182400>8988 when executed on Sundays8989 is expected not to include #<Gitlab::Database::PostgresIndex identifier: "public.some_index_96", indexrelid: 96, schema: "public...efinition: "CREATE INDEX public.some_index_96 ON ci_builds (ba...", ondisk_size_bytes: 107374182400>8990 when executed on Mondays8991 is expected not to include #<Gitlab::Database::PostgresIndex identifier: "public.some_index_107", indexrelid: 107, schema: "publ...efinition: "CREATE INDEX public.some_index_107 ON ci_builds (b...", ondisk_size_bytes: 107374182400>8992Packages::Debian::ProjectComponent8993 behaves like Debian Distribution Component8994 relationships8995 is expected to belong to distribution class_name => Packages::Debian::ProjectDistribution required: false inverse_of => components8996 is expected to have many files class_name => Packages::Debian::ProjectComponentFile inverse_of => component8997 validations8998 #distribution8999 is expected to validate that :distribution cannot be empty/falsy9000 #name9001 is expected to validate that :name cannot be empty/falsy9002 is expected to allow :name to be ‹"main"›9003 is expected to allow :name to be ‹"non-free"›9004 is expected to allow :name to be ‹"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"›9005 is expected not to allow :name to be ‹"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"›9006 is expected not to allow :name to be ‹"non/free"›9007 is expected not to allow :name to be ‹"hé"›9008 scopes9009 .ordered_by_name9010 sorts by name9011 .with_distribution9012 does not return other distributions9013 .with_name9014 does not return other distributions9015Gitlab::JiraImport::Stage::StartImportWorker9016 modules9017 behaves like include import workers modules9018 is expected to includes the ApplicationWorker module9019 is expected to includes the Gitlab::JiraImport::QueueOptions module9020 is expected to includes the ProjectStartImport module9021 is expected to includes the ProjectImportOptions module9022 #perform9023 when import is not scheduled9024 exits because import not started9025 when import is scheduled9026 advances to importing labels9027 when import is started9028 when this is the same worker that stated import9029 advances to importing labels9030 when this is a different worker that stated import9031 advances to importing labels9032 when import is finished9033 advances to importing labels9034Atlassian::Identity9035 associations9036 is expected to belong to user required: false9037 validations9038 is expected to validate that :extern_uid cannot be empty/falsy9039 is expected to validate that :extern_uid is case-sensitively unique9040 is expected to validate that :user cannot be empty/falsy9041 is expected to validate that :user is case-sensitively unique9042 encrypted tokens9043 saves the encrypted token, refresh token and corresponding ivs9044Gitlab::BitbucketServerImport::Importers::PullRequestNotesImporter9045 # order random9046 #execute9047 when a matching merge request is not found9048 does nothing9049 logs its progress9050 when a matching merge request is found9051 logs its progress9052 when PR has comments9053 imports the stand alone comments9054 logs its progress9055 when PR has threaded discussion9056 imports the threaded discussion9057 logs its progress9058 when PR has a merge event9059 imports the merge event9060Aws::Role9061 is expected to belong to user required: false9062 is expected to validate that the length of :role_external_id is between 1 and 649063 custom validations9064 :role_arn9065 length is zero9066 is expected to be falsey9067 length is longer than 20489068 is expected to be falsey9069 ARN is valid9070 is expected to be truthy9071 ARN is nil9072 is expected to be truthy9073 callbacks9074 #ensure_role_external_id!9075 for a new record9076 calls #ensure_role_external_id!9077 for an existing record9078 does not call #ensure_role_external_id!9079 #ensure_role_external_id!9080 role_external_id is blank9081 generates an external ID and assigns it to the record9082 role_external_id is already set9083 does not change the existing external id9084Packages::Debian::ProjectArchitecture9085 behaves like Debian Distribution Architecture9086 relationships9087 is expected to belong to distribution class_name => Packages::Debian::ProjectDistribution required: false inverse_of => architectures9088 is expected to have many files class_name => Packages::Debian::ProjectComponentFile inverse_of => architecture9089 validations9090 #distribution9091 is expected to validate that :distribution cannot be empty/falsy9092 #name9093 is expected to validate that :name cannot be empty/falsy9094 is expected to allow :name to be ‹"amd64"›9095 is expected to allow :name to be ‹"kfreebsd-i386"›9096 is expected not to allow :name to be ‹"-a"›9097 is expected not to allow :name to be ‹"AMD64"›9098 scopes9099 .ordered_by_name9100 is expected to contain exactly #<Packages::Debian::ProjectArchitecture id: 4, created_at: "2023-10-20 08:53:26.271560000 +0000", updated_at: "2023-10-20 08:53:26.271560000 +0000", distribution_id: 6, name: "name1"> and #<Packages::Debian::ProjectArchitecture id: 5, created_at: "2023-10-20 08:53:26.276513345 +0000", updated_at: "2023-10-20 08:53:26.276513345 +0000", distribution_id: 6, name: "name2">9101 .with_distribution9102 is expected to contain exactly #<Packages::Debian::ProjectArchitecture id: 4, created_at: "2023-10-20 08:53:26.271560000 +0000", updated_at: "2023-10-20 08:53:26.271560000 +0000", distribution_id: 6, name: "name1"> and #<Packages::Debian::ProjectArchitecture id: 5, created_at: "2023-10-20 08:53:26.276513345 +0000", updated_at: "2023-10-20 08:53:26.276513345 +0000", distribution_id: 6, name: "name2">9103 .with_name9104 is expected to contain exactly #<Packages::Debian::ProjectArchitecture id: 4, created_at: "2023-10-20 08:53:26.271560000 +0000", updated_at: "2023-10-20 08:53:26.271560000 +0000", distribution_id: 6, name: "name1"> and #<Packages::Debian::ProjectArchitecture id: 6, created_at: "2023-10-20 08:53:26.508731415 +0000", updated_at: "2023-10-20 08:53:26.508731415 +0000", distribution_id: 7, name: "name1">9105Autocomplete::ProjectFinder9106 #execute9107 without a project ID9108 returns nil9109 with an empty String as the project ID9110 returns nil9111 with a project ID9112 raises ActiveRecord::RecordNotFound if the project does not exist9113 raises ActiveRecord::RecordNotFound if the user can not read the project9114 raises ActiveRecord::RecordNotFound if an anonymous user can not read the project9115 returns the project if it exists and is readable9116Gitlab::Ci::Status::Build::Erased9117 #illustration9118 is expected to include :image, :size, and :title9119 .matches?9120 when build is erased9121 is a correct match9122 when build is not erased9123 does not match9124IssuableSeverity9125 associations9126 is expected to belong to issue required: false9127 validations9128 is expected to validate that :severity cannot be empty/falsy9129 is expected to validate that :issue cannot be empty/falsy9130 is expected to validate that :issue is case-sensitively unique9131 enums9132 is expected to define :severity as an enum backed by an integer with values ‹{unknown: 0, low: 1, medium: 2, high: 3, critical: 4}›9133WorkerContext9134 .worker_context9135 allows modifying the context for the entire worker9136 allows fetches the context from a superclass if none was defined9137 .bulk_perform_async_with_contexts9138 calls bulk_perform_async with the arguments9139 behaves like tracking bulk scheduling contexts9140 clears the contexts9141 context contents9142 keeps track of the context per key to schedule9143 does not share contexts across threads9144 .bulk_perform_in_with_contexts9145 calls bulk_perform_in with the arguments and delay9146 behaves like tracking bulk scheduling contexts9147 clears the contexts9148 context contents9149 keeps track of the context per key to schedule9150 does not share contexts across threads9151 #with_context9152 allows modifying context when the job is running9153 yields the arguments to the block9154Gitlab::Pages::VirtualHostFinder9155 # order random9156 returns nil when host is empty9157 when host is a unique domain9158 when pages unique domain is enabled9159 when there are no pages deployed for the project9160 returns nil9161 when there are pages deployed for the project9162 returns the virual domain when there are pages deployed for the project9163 when a project path conflicts with a unique domain9164 prioritizes the unique domain project9165 when pages unique domain is disabled9166 when there are no pages deployed for the project9167 returns nil9168 when there are pages deployed for the project9169 returns nil9170 when host is a namespace domain9171 when there are no pages deployed for the project9172 returns no result if the provided host is not subdomain of the Pages host9173 returns the virual domain with no lookup_paths9174 when there are pages deployed for the project9175 returns no result if the provided host is not subdomain of the Pages host9176 returns the virual domain when there are pages deployed for the project9177 finds domain with case-insensitive9178 when host is a pages custom domain host9179 when there are no pages deployed for the project9180 returns nil9181 when there are pages deployed for the project9182 returns the virual domain when there are pages deployed for the project9183DestroyPagesDeploymentsWorker9184 doesn't fail if project is already removed9185 can be called without last_deployment_id9186 calls destroy service9187Banzai::Filter::InlineDiffFilter9188 adds inline diff span tags for deletions when using square brackets9189 adds inline diff span tags for deletions when using curley braces9190 does not add inline diff span tags when a closing tag is not provided9191 adds inline span tags for additions when using square brackets9192 adds inline span tags for additions when using curley braces9193 does not add inline diff span tags when a closing addition tag is not provided9194 does not add inline diff span tags when the tags do not match9195 prevents user-land html being injected9196 preserves content inside pre tags9197 preserves content inside code tags9198 preserves content inside tt tags9199 protects against malicious backtracking9200Packages::Debian::ExtractChangesMetadataService9201 #execute9202 with valid package file9203 extract metadata9204 with invalid package file9205 raise ArgumentError9206 with invalid metadata9207 without Files field9208 raise ArgumentError9209 without Checksums-Sha1 field9210 raise ArgumentError9211 without Checksums-Sha256 field9212 raise ArgumentError9213 with file in Checksums-Sha1 but not in Files9214 raise ArgumentError9215 with different size in Checksums-Sha19216 raise ArgumentError9217 with file in Checksums-Sha256 but not in Files9218 raise ArgumentError9219 with different size in Checksums-Sha2569220 raise ArgumentError9221 with file in Files but not in Checksums-Sha19222 raise ArgumentError9223 with file in Files but not in Checksums-Sha2569224 raise ArgumentError9225 with invalid MD59226 raise ArgumentError9227 with invalid SHA19228 raise ArgumentError9229 with invalid SHA2569230 raise ArgumentError9231 with missing package file9232 raise ArgumentError9233Resolvers::Users::GroupsResolver9234 #resolve9235 when resolver object is current user9236 is expected to match [#<Group id:3441 @a-public-maintainer>, #<Group id:3442 @a-public-owner>, #<Group id:3439 @b-private-maintainer>, #<Group id:3440 @c-public-developer>, #<Group id:3438 @public-guest>]9237 when permission is :create_projects9238 is expected to match [#<Group id:3441 @a-public-maintainer>, #<Group id:3442 @a-public-owner>, #<Group id:3439 @b-private-maintainer>, #<Group id:3440 @c-public-developer>]9239 when permission is :transfer_projects9240 is expected to match [#<Group id:3441 @a-public-maintainer>, #<Group id:3442 @a-public-owner>, #<Group id:3439 @b-private-maintainer>]9241 when search is provided9242 is expected to match [#<Group id:3441 @a-public-maintainer>, #<Group id:3439 @b-private-maintainer>]9243 when resolver object is different from current user9244 is expected to be nil9245 when current_user is admin9246 is expected to match [#<Group id:3441 @a-public-maintainer>, #<Group id:3442 @a-public-owner>, #<Group id:3439 @b-private-maintainer>, #<Group id:3440 @c-public-developer>, #<Group id:3438 @public-guest>]9247Gitlab::Pagination::Keyset::RequestContext9248 #page9249 with only order_by given9250 extracts order_by/sorting information9251 with order_by and sort given9252 extracts order_by/sorting information and adds tie breaker9253 with no order_by information given9254 defaults to tie breaker9255 with per_page params given9256 extracts per_page information9257 #apply_headers9258 sets Link header with same host/path as the original request9259 sets Link header with a link to the next page9260 with descending order9261 sets Link header with a link to the next page9262Gitlab::Ci::Config::Entry::Rules9263 .new9264 with a list of rule rule9265 is expected to be a kind of Gitlab::Ci::Config::Entry::Rules9266 is expected to be valid9267 with a list of two rules9268 is expected to be valid9269 with a single rule object9270 is expected not to be valid9271 with nested rules9272 is expected to be valid9273 with rules nested more than one level9274 is expected to be valid9275 #value9276 with a list of rule rule9277 is expected to eq [{:if=>"$THIS == \"that\"", :when=>"never"}]9278 with a list of two rules9279 is expected to eq [{:if=>"$THIS == \"that\"", :when=>"always"}, {:if=>"$SKIP", :when=>"never"}]9280 with a single rule object9281 is expected to eq []9282 with nested rules9283 is expected to contain exactly {:if=>"$THIS == \"that\"", :when=>"always"} and {:if=>"$SKIP", :when=>"never"}9284 with rules nested more than one level9285 is expected to contain exactly {:if=>"$THIS == \"that\"", :when=>"always"}, {:if=>"$SKIP", :when=>"never"}, and {:if=>"$THIS == \"other\"", :when=>"always"}9286 .default9287 does not have default policy9288Gitlab::Database::Migrations::LockRetryMixin9289 Gitlab::Database::Migrations::LockRetryMixin::ActiveRecordMigrationProxyLockRetries9290 #enable_lock_retries?9291 delegates to #migration9292 #migration_class9293 retrieves actual migration class from #migration9294 #migration_connection9295 retrieves actual migration connection from #migration9296 Gitlab::Database::Migrations::LockRetryMixin::ActiveRecordMigratorLockRetries9297 with transactions disabled9298 calls super method9299 with transactions enabled, but lock retries disabled9300 calls super method9301 with transactions enabled and lock retries enabled9302 calls super method9303 .patch!9304 patches MigrationProxy9305 patches Migrator9306Namespaces::ProjectNamespacePolicy9307 behaves like checks timelog categories permissions9308 with no user9309 is expected to be disallowed :read_timelog_category9310 with a regular user9311 is expected to be disallowed :read_timelog_category9312 with a reporter user9313 when timelog_categories is enabled9314 is expected to be allowed :read_timelog_category9315 when timelog_categories is disabled9316 is expected to be disallowed :read_timelog_category9317Packages::MarkPackageFilesForDestructionWorker9318 #perform9319 with a valid package id9320 marks all package files as pending_destruction9321 behaves like an idempotent worker9322 is labeled as idempotent9323 performs multiple times sequentially without raising an exception9324 with an invalid package id9325 marks no packag files9326 behaves like an idempotent worker9327 is labeled as idempotent9328 performs multiple times sequentially without raising an exception9329 with a nil package id9330 marks no packag files9331 behaves like an idempotent worker9332 is labeled as idempotent9333 performs multiple times sequentially without raising an exception9334Tasks::Gitlab::AuditEventTypes::CheckDocsTask9335 # order random9336 #run9337 when audit_event_types.md is up to date9338Documentation compiled.9339 outputs success message after checking the documentation9340 when audit_event_types.md is updated manually9341Documentation compiled.9342 raises an error9343 when an existing audit event type is removed9344Documentation compiled.9345 raises an error9346 when an existing audit event type is updated9347Documentation compiled.9348 raises an error9349Gitlab::JiraImport::Stage::ImportIssuesWorker9350 modules9351 behaves like include import workers modules9352 is expected to includes the ApplicationWorker module9353 is expected to includes the Gitlab::JiraImport::QueueOptions module9354 is expected to includes the Gitlab::JiraImport::ImportWorker module9355 #perform9356 when import did not start9357 behaves like cannot do Jira import9358 does not advance to next stage9359 behaves like does not advance to next stage9360 does not advance to next stage9361 when import started9362 when start_at is nil9363 behaves like advance to next stage9364 advances to attachments stage9365 when start_at is zero9366 behaves like advance to next stage9367 advances to issues stage9368 when start_at is greater than zero9369 behaves like advance to next stage9370 advances to issues stage9371 when start_at is below zero9372 behaves like advance to next stage9373 advances to attachments stage9374Gitlab::Ci::Config::Entry::PullPolicy9375 #value9376 when config value is nil9377 is expected to be nil9378 when retry value is an empty array9379 is expected to eq nil9380 when retry value is string9381 is expected to eq ["always"]9382 when retry value is array9383 is expected to eq ["always", "if-not-present"]9384 validation9385 when retry value is nil9386 is expected to eq false9387 when retry value is an empty array9388 is expected to eq false9389 when retry value is a hash9390 is expected to eq false9391 when retry value is string9392 is expected to eq true9393 when it is an invalid policy9394 is expected to eq false9395 when it is an empty string9396 is expected to eq false9397 when retry value is array9398 is expected to eq true9399 when config contains an invalid policy9400 is expected to eq false9401Gitlab::Ci::Config::Normalizer::NumberStrategy9402 .applies_to?9403 with numbers9404 is expected to be truthy9405 with hash that has :number key9406 is expected to be truthy9407 with a float number9408 is expected to be falsey9409 with hash that does not have :number key9410 is expected to be falsey9411 .build_from9412 with numbers9413 behaves like parallelized job9414 is expected to eq 39415 has attributes9416 has parallelized name9417 with hash that has :number key9418 behaves like parallelized job9419 is expected to eq 39420 has attributes9421 has parallelized name9422 with one9423 behaves like single parallelized job9424 is expected to eq 19425 has attributes9426 has parallelized name9427Database::LockTablesWorker9428 # order random9429 #perform9430 when running with single database9431 skips executing the job9432 when running in decomposed database9433 when the table is wrong9434 when trying to lock tables on an unknown database9435 raises an exception (PENDING: Skipping because ci is shared or doesn't not exist)9436 when trying to lock tables on the database that does not support locking9437 raises an exception (PENDING: Skipping because ci is shared or doesn't not exist)9438 when trying to lock tables on the wrong database9439 raises an exception (PENDING: Skipping because ci is shared or doesn't not exist)9440 when trying to lock shared tables on the database9441 raises an exception (PENDING: Skipping because ci is shared or doesn't not exist)9442 when the table is correct9443 when the table is not locked for writes9444 database_name: :ci, tables: ["users", "namespaces"]9445 locks the tables on the corresponding database (PENDING: Skipping because ci is shared or doesn't not exist)9446 database_name: :main, tables: ["ci_pipelines", "ci_builds"]9447 locks the tables on the corresponding database (PENDING: Skipping because ci is shared or doesn't not exist)9448 when the table is already locked for writes9449 database_name: :ci, tables: ["users", "namespaces"]9450 skips locking the tables on the corresponding database (PENDING: Skipping because ci is shared or doesn't not exist)9451 database_name: :main, tables: ["ci_pipelines", "ci_builds"]9452 skips locking the tables on the corresponding database (PENDING: Skipping because ci is shared or doesn't not exist)9453Resolvers::IncidentManagement::TimelineEventsResolver9454 # order random9455 is expected to have nullable GraphQL type TimelineEventTypeConnection9456 returns timeline events9457 when user does not have permissions9458 returns no timeline events9459 when resolving a single item9460 when id given9461 returns the timeline event9462Mutations::AlertManagement::PrometheusIntegration::Update9463 is expected to require graphql authorizations :admin_project9464 #resolve9465 user has sufficient access to project9466 when ::Projects::Operations::UpdateService responds with success9467 returns the integration with no errors9468 when ::Projects::Operations::UpdateService responds with an error9469 returns errors9470 when resource is not accessible to the user9471 raises an error if the resource is not accessible to the user9472Gitlab::Database::MigrationHelpers::WraparoundVacuumHelpers9473 # order random9474 #check_if_wraparound_in_progress9475 delegates to the wraparound class9476 Gitlab::Database::MigrationHelpers::WraparoundVacuumHelpers::WraparoundCheck9477 #execute9478 with wraparound vacuuum running9479 outputs a message related to autovacuum9480 is expected to output /autovacuum: VACUUM public.ci_builds \(to prevent wraparound\)/ to stdout9481 is expected to output /Current duration: 2 hours, 30 minutes/ to stdout9482 when GITLAB_MIGRATIONS_DISABLE_WRAPAROUND_CHECK is set9483 is expected not to output /autovacuum/i to stdout9484 is disabled on .com9485 when executed by self-managed9486 is expected not to output /autovacuum/i to stdout9487 with wraparound vacuuum not running9488 is expected not to output /autovacuum/i to stdout9489 when the table does not exist9490 is expected to raise Gitlab::Database::MigrationHelpers::WraparoundVacuumHelpers::WraparoundCheck::WraparoundError with message matching /no_table/9491Gitlab::Cleanup::OrphanJobArtifactFilesBatch9492 no dry run9493 deletes only orphan job artifacts from disk9494 with dry run9495 does not remove files9496GroupDeployToken9497 relationships9498 is expected to belong to group required: false9499 is expected to belong to deploy_token required: false9500 validation9501 is expected to validate that :deploy_token cannot be empty/falsy9502 is expected to validate that :group cannot be empty/falsy9503 is expected to validate that :deploy_token_id is case-sensitively unique within the scope of :group_id9504 #has_access_to_group?9505 for itself9506 is expected to eq true9507 for a subgroup9508 is expected to eq true9509 for other group9510 is expected to eq false9511Gitlab::HTTP9512 .get9513 calls Gitlab::HTTP_V2.get with default options9514 when passing allow_object_storage:true9515 calls Gitlab::HTTP_V2.get with default options and extra_allowed_uris9516 .try_get9517 calls .get9518 returns nil when .get raises an error9519 .perform_request9520 when sending a GET request9521 calls Gitlab::HTTP_V2.get with default options9522 when sending a LOCK request9523 raises ArgumentError9524 when the FF use_gitlab_http_v2 is disabled9525 .get9526 calls Gitlab::LegacyHTTP.get with default options9527 .try_get9528 calls .get9529 returns nil when .get raises an error9530 .perform_request9531 calls Gitlab::LegacyHTTP.perform_request with default options9532Gitlab::GithubImport::Importer::Events::ChangedMilestone9533 #execute9534 with Issue9535 when importing a milestoned event9536 behaves like new event9537 creates a new milestone event9538 when importing demilestoned event9539 behaves like new event9540 creates a new milestone event9541 with MergeRequest9542 when importing a milestoned event9543 behaves like new event9544 creates a new milestone event9545 when importing demilestoned event9546 behaves like new event9547 creates a new milestone event9548Gitlab::HealthChecks::MasterCheck9549 when Puma runs in Clustered mode9550 .available?9551 is expected to equal true9552 .readiness9553 when no worker registered9554 succeeds9555 when worker registers itself9556 when reading from pipe succeeds9557 succeeds9558 when read pipe is open but not ready for reading9559 succeeds9560 when master finishes early9561 fails9562 when Puma runs in Single mode9563 .available?9564 is expected to equal false9565Gitlab::HealthChecks::PumaCheck9566 when Puma is not loaded9567 does not provide readiness and metrics9568 when Puma is loaded9569 when stats are missing9570 behaves like with state9571 does provide readiness9572 does provide metrics9573 for Single mode9574 behaves like with state9575 does provide readiness9576 does provide metrics9577 for Cluster mode9578 behaves like with state9579 does provide readiness9580 does provide metrics9581Gitlab::Ci::Reports::TestReportsComparer9582 #suite_comparers9583 when head and base reports include two test suites9584 returns test suite comparers with specified values9585 #total_status9586 when all tests cases are success in head suites9587 returns the total status9588 when there is a failed test case in head suites9589 returns the total status in head suite9590 when there is an error test case in head suites9591 returns the total status in head suite9592 #total_count9593 returns the total test counts in head suites9594 #resolved_count9595 when there is a resolved failure test case in head suites9596 returns the correct count9597 when there is a resolved error test case in head suites9598 returns the correct count9599 when there are no resolved test cases in head suites9600 returns the correct count9601 #failed_count9602 when there is a failed test case in head suites9603 returns the correct count9604 when there are no failed test cases in head suites9605 returns the correct count9606 #error_count9607 when there is an error test case in head suites9608 returns the correct count9609 when there are no error test cases in head suites9610 returns the correct count9611Atlassian::JiraConnect::Serializers::FeatureFlagEntity9612 when the feature flag does not belong to any Jira issue9613 #issue_keys9614 is empty9615 #to_json9616 can encode the object9617 is invalid, since it has no issue keys9618 when the feature flag does belong to a Jira issue9619 #issue_keys9620 is not empty9621 #to_json9622 is valid according to the feature flag info schema9623 it has a percentage strategy9624 is valid according to the feature flag info schema9625 has the correct summary9626 includes the correct environments9627Sidebars::Admin::Menus::DeployKeysMenu9628 # order random9629 behaves like Admin menu9630 renders the correct link9631 renders the correct title9632 renders the correct icon9633 renders the separator if needed9634 #render?9635 when user is admin9636 renders9637 when user is not admin9638 does not render9639 when user is not logged in9640 does not render9641 behaves like Admin menu without sub menus9642 does not contain any sub menu(s)9643 defines correct active route9644ExpireBuildArtifactsWorker9645 #perform9646 executes a service9647Ci::Runners::ResetRegistrationTokenService#execute9648 with instance scope9649 behaves like a registration token reset operation9650 without user9651 does not reset registration token and returns error response9652 with unauthorized user9653 does not reset registration token and returns error response9654 with admin user9655 resets registration token and returns value unchanged9656 with group scope9657 behaves like a registration token reset operation9658 without user9659 does not reset registration token and returns error response9660 with unauthorized user9661 does not reset registration token and returns error response9662 with admin user9663 resets registration token and returns value unchanged9664 with project scope9665 behaves like a registration token reset operation9666 without user9667 does not reset registration token and returns error response9668 with unauthorized user9669 does not reset registration token and returns error response9670 with admin user9671 resets registration token and returns value unchanged9672SystemNotes::ZoomService9673 #zoom_link_added9674 sets the zoom link added note text9675 behaves like a system note9676 has the correct attributes9677 #zoom_link_removed9678 sets the zoom link removed note text9679 behaves like a system note9680 has the correct attributes9681OperationsHelper9682 #alerts_settings_data9683 initial integration configuration9684 returns the correct values9685 with external Prometheus configured9686 with external Prometheus enabled9687 returns the correct values9688 with external Prometheus disabled9689 returns the correct values9690 when cluster managed9691 returns the correct values9692 with project alert setting9693 returns the correct values9694 #operations_settings_data9695 returns the correct set of data9696HooksHelper9697 #webhook_form_data9698 when there are no URL variables9699 returns proper data9700 when there are URL variables9701 returns proper data9702 #webhook_test_items9703 returns test items for disclosure9704 #test_hook_path9705 returns project namespaced link9706 returns admin namespaced link9707 #hook_log_path9708 with a project hook9709 returns project-namespaced link9710 with a service hook9711 returns project-namespaced link9712 with a system hook9713 returns admin-namespaced link9714Gitlab::Database::LoadBalancing::Sticking9715 #find_caught_up_replica9716 when no write location could be found9717 returns true9718 when use_primary_on_empty_location is true9719 returns false, does not unstick and calls use_primary!9720 when all replicas have caught up9721 returns true and unsticks9722 when only some of the replicas have caught up9723 returns true and does not unstick9724 when none of the replicas have caught up9725 returns false, does not unstick and calls use_primary!9726 when use_primary_on_failure is false9727 does not call use_primary!9728 #stick9729 behaves like sticking9730 sticks an entity to the primary9731 does not update the write location when no replicas are used9732 #bulk_stick9733 behaves like sticking9734 sticks an entity to the primary9735 does not update the write location when no replicas are used9736Gitlab::AlertManagement::AlertStatusCounts9737 #execute9738 for an unauthorized user9739 returns zero for all statuses9740 for an authorized user9741 returns the correct counts for each status9742 when filtering params are included9743 returns the correct counts for each status9744 when search param is included9745 returns the correct countss9746NestedAttributesDuplicatesValidator9747 #validate_each9748 with no scope9749 does not have any errors9750 with duplicates9751 has a duplicate key error9752 with a scope attribute9753 does not have any errors9754 with duplicates9755 has a duplicate key error9756 with a child attribute9757 does not have any errors9758 when name is duplicated9759 has a duplicate error9760 when url is duplicated9761 has a duplicate error9762Gitlab::SidekiqConfig::CliMethods9763 .worker_queues9764 when the file exists9765 when the file contains an array of hashes9766 memoizes the result9767 flattens and joins the contents9768 when the file does not exist9769 returns an empty array9770 .expand_queues9771 defaults the value of the second argument to .worker_queues9772 expands queue namespaces to concrete queue names9773 lets concrete queue names pass through9774 lets unknown queues pass through9775 .query_queues9776 returns the queue names of matched workers9777Gitlab::Ci::Status::Created9778 #text9779 is expected to eq "Created"9780 #label9781 is expected to eq "created"9782 #icon9783 is expected to eq "status_created"9784 #favicon9785 is expected to eq "favicon_status_created"9786 #group9787 is expected to eq "created"9788 #details_path9789 is expected to be nil9790Gitlab::CryptoHelper9791 .sha2569792 generates SHA256 digest Base46 encoded9793 .aes256_gcm_encrypt9794 is Base64 encoded string without new line character9795 encrypts using static iv9796 with provided iv9797 encrypts using provided iv9798 .aes256_gcm_decrypt9799 when token was encrypted using static nonce9800 correctly decrypts encrypted string9801 decrypts a value when it ends with a new line character9802 when token was encrypted using random nonce9803 correctly decrypts encrypted string9804Gitlab::Diff::FileCollection::Base9805 #overflow?9806 when it is not overflown9807 returns false9808 when it is overflown9809 returns true9810CustomerRelations::Organizations::UpdateService9811 #execute9812 when the user has no permission9813 returns an error9814 when user has permission9815 when name is changed9816 updates the crm_organization9817 when activating9818 updates the contact9819 when deactivating9820 updates the crm_organization9821 when the crm_organization is invalid9822 returns an error9823Gitlab::GrapeLogging::Loggers::ExceptionLogger9824 .parameters9825 when no exception is available9826 returns an empty hash9827 with a response9828 with a String response9829 logs the response body9830 with an Array response9831 casts all elements to strings9832 with a Rack BodyProxy response9833 logs the response body9834 unauthorized error9835 does not log an api_error field9836 HTTP success9837 does not log an api_error field9838 when an exception is available9839 returns the correct fields9840 with backtrace9841 includes the backtrace9842Gitlab::Plantuml9843 # order random9844 .configure9845 when PlantUML is enabled9846 configures the endpoint URL9847 enables PNG support9848 disables SVG support9849 disables TXT support9850 when PlantUML is disabled9851 configures the endpoint URL9852 enables PNG support9853 disables SVG support9854 disables TXT support9855Gitlab::Ci::Parsers::Sbom::Cyclonedx9856 when report JSON is invalid9857 handles errors and adds them to the report9858 when report uses an unsupported spec version9859 reports unsupported version as an error9860 when report does not conform to the CycloneDX schema9861 reports all errors returned by the validator9862 when cyclonedx report has no components9863 skips component processing9864 when report has components9865 adds each component, ignoring unused attributes9866 when a component has an invalid purl9867 adds an error to the report9868 when report has metadata tools, author and properties9869 when metadata attributes are present9870 passes them to the report9871 when metadata attributes are not present9872 passes them to the report9873BulkImports::RelationBatchExportService9874 # order random9875 #execute9876 exports relation batch9877 removes exported contents after export9878 when relation is empty and there is nothing to export9879 creates empty file on disk9880 when exception occurs9881 marks batch as failed9882Gitlab::Database::LoadBalancing::HostList9883 #initialize9884 sets metrics for current number of hosts and current index9885 #length9886 returns the number of hosts in the list9887 #host_names_and_ports9888 with ports9889 returns the host names of all hosts9890 without ports9891 returns the host names of all hosts9892 #hosts9893 returns a copy of the host9894 #hosts=9895 updates the list of hosts to use9896 #next9897 returns a host9898 cycles through all available hosts9899 skips hosts that are offline9900 returns nil if no hosts are online9901 returns nil if no hosts are available9902 #shuffle9903 randomizes the list9904notify/changed_milestone_email.html.haml9905 milestone without start and due dates9906 renders without date range9907 milestone with start and due dates9908 renders with date range9909Gitlab::Auth::Otp::Strategies::FortiAuthenticator::PushOtp9910 successful validation9911 returns success9912 unsuccessful validation9913 returns error9914 unexpected error9915 returns error9916Gitlab::Chat::Responder::Base9917 #pipeline9918 returns the pipeline9919 #project9920 returns the project9921 #success9922 raises NotImplementedError9923 #failure9924 raises NotImplementedError9925 #send_response9926 raises NotImplementedError9927 #scheduled_output9928 raises NotImplementedError9929Gitlab::DatabaseWarnings9930 # order random9931 .check_single_connection_and_print_warning9932 prints a warning if single connection9933 does not print a warning if single ci connection9934 does not print a warning if multiple connection9935 does not print a warning in Rails runner environment9936 .check_postgres_version_and_print_warning9937 prints a warning if not compliant with minimum postgres version9938 does not print a warning if compliant with minimum postgres version9939 does not print a warning in Rails runner environment9940 ignores ActiveRecord errors9941 ignores Postgres errors9942Members::InviteMemberBuilder9943 #execute9944 when user record found by email9945 returns member from existing members hash9946 builds a new member9947 when no existing users found by the email9948 finds existing member9949 builds a new member9950Gitlab::HookData::GroupBuilder9951 #build9952 data9953 on create9954 is expected to eq "group_create"9955 behaves like includes the required attributes9956 includes the required attributes9957 behaves like does not include old path attributes9958 does not include old path attributes9959 on destroy9960 is expected to eq "group_destroy"9961 behaves like includes the required attributes9962 includes the required attributes9963 behaves like does not include old path attributes9964 does not include old path attributes9965 on rename9966 is expected to eq "group_rename"9967 includes old path details9968 behaves like includes the required attributes9969 includes the required attributes9970Gitlab::GitAccessDesign9971 #check9972 when the user is allowed to manage designs9973 is expected to be a kind of Gitlab::GitAccessResult::Success9974 when the user is not allowed to manage designs9975 raises an error9976 when the protocol is not web9977 raises an error9978ActiveRecord::QueryRecorder9979 includes duration information9980 printing to the log9981 prints SQL, duration and backtrace, all prefixed with QueryRecorder9982 detecting the right number of calls and their origin9983 detects two separate queries9984Types::ReleaseAssetsInputType9985 is expected to eq "ReleaseAssetsInput"9986 has the correct arguments9987 sets the type of links argument to ReleaseAssetLinkInputType9988RuboCop::Cop::Graphql::JSONType9989 # order random9990 does not add an offense for uses outside of field or argument9991 fields9992 adds an offense when GraphQL::Types::JSON is used9993 adds an offense when GraphQL::Types::JSON is used with other keywords9994 does not add an offense for other types9995 arguments9996 adds an offense when GraphQL::Types::JSON is used9997 adds an offense when GraphQL::Types::JSON is used with other keywords9998 does not add an offense for other types9999BulkImports::Common::Extractors::JsonExtractor10000 #extract10001 returns ExtractedData10002 #remove_tmpdir10003 removes tmp dir10004Ml::FindOrCreateModelService10005 # order random10006 #execute10007 when model name does not exist in the project10008 creates a model10009 when model name exists but project is different10010 creates a model10011 when model with name exists10012 fetches existing model10013ResourceEvents::SyntheticStateNotesBuilderService10014 #execute10015 behaves like filters by paginated notes10016 only returns given notes10017 when paginated notes is empty10018 does not return any notes10019Gitlab::GithubGistsImport::FinishImportWorker10020 # order random10021 .sidekiq_retries_exhausted10022 sets status to failed10023 #perform10024 when there are no remaining jobs10025 marks import status as finished10026 when there are remaining jobs10027 reschedules the worker10028 when some gists were failed to import10029 sends an email to user10030Ci::InitializePipelinesIidSequenceWorker10031 # order random10032 creates an internal_ids sequence for ci_pipelines10033 when the internal_ids sequence is already initialized10034 does not reset the sequence10035 behaves like subscribes to event10036 consumes the published event10037 behaves like an idempotent worker10038 is labeled as idempotent10039 performs multiple times sequentially without raising an exception10040Support::AbilityCheck10041 # order random10042 checking ability10043 with valid direct ability10044 policy ability is found10045 with empty TODO yaml10046 policy ability is found10047 with non-Hash TODO yaml10048 policy ability is found10049 with unreachable ability10050 policy ability is not found and emits a warning10051 when ignored in TODO YAML10052 policy ability is not found without warning10053 with unknown ability10054 policy ability is not found and emits a warning10055 with delegated ability10056 policy ability is found10057Integrations::SlackOptions::LabelSearchHandler10058 # order random10059 #execute10060 when user has permission to read project and group labels10061 returns the labels matching the search term10062 when user does not have permissions to read project/group labels10063 returns empty array10064Banzai::Pipeline10065 .[]10066 for nil10067 is expected to eq Banzai::Pipeline::FullPipeline10068 for symbols10069 when known10070 is expected to eq Banzai::Pipeline::FullPipeline10071 when unknown10072 behaves like error10073 is expected to raise NameError with "uninitialized constant Banzai::Pipeline::UnknownPipeline"10074 for classes10075 subclassing Banzai::Pipeline::BasePipeline10076 is expected to eq #<Class:0x00007d94f12315c8>10077 subclassing other types10078 behaves like error10079 is expected to raise ArgumentError with "unsupported pipeline name Foo (Class)"10080 for other types10081 behaves like error10082 is expected to raise ArgumentError with "unsupported pipeline name \"label\" (String)"10083Ci::Catalog::ResourcesHelper10084 # order random10085 #can_add_catalog_resource?10086 user cannot add a catalog resource in CE regardless of permissions10087 #can_view_namespace_catalog?10088 user cannot view the Catalog in CE regardless of permissions10089 #js_ci_catalog_data10090 returns catalog data10091ExportCsvWorker10092 delegates call to IssuableExportCsvWorker10093Gitlab::UsageDataCounters::RedisCounter10094 .increment10095 when usage_ping is disabled10096 counter is not increased10097 when usage_ping is enabled10098 counter is increased10099 .increment_by10100 when usage_ping is disabled10101 counter is not increased10102 when usage_ping is enabled10103 counter is increased10104Resolvers::EchoResolver10105 is expected to have non-null GraphQL type String10106 #resolve10107 echoes text and username10108 echoes text and nil as username10109google cloud profiler10110 # order random10111 when GITLAB_GOOGLE_CLOUD_PROFILER_ENABLED is set to false10112 is expected not to receive new(*(any args)) 0 times10113 when GITLAB_GOOGLE_CLOUD_PROFILER_ENABLED is set to true10114 when GITLAB_GOOGLE_CLOUD_PROFILER_PROJECT_ID is not set10115 is expected not to receive new(*(any args)) 0 times10116 when GITLAB_GOOGLE_CLOUD_PROFILER_PROJECT_ID is set10117 when run in Puma context10118 calls the agent10119 when run in Sidekiq context10120 is expected not to receive new(*(any args)) 0 times10121 when run in another context10122 is expected not to receive new(*(any args)) 0 times10123 when GITLAB_GOOGLE_CLOUD_PROFILER_ENABLED is not set10124 is expected not to receive new(*(any args)) 0 times10125Gitlab::GithubImport::Representation::PullRequestReview10126 .from_api_response10127 does not set the user if the response did not include a user10128 behaves like a PullRequest review10129 returns an instance of PullRequest10130 .from_json_hash10131 does not set the user if the response did not include a user10132 does not fail when submitted_at is blank10133 behaves like a PullRequest review10134 returns an instance of PullRequest10135 #github_identifiers10136 returns a hash with needed identifiers10137Types::EventType10138 is expected to eq "Event"10139 is expected to require graphql authorizations :read_event10140 is expected to have graphql fields :id, :author, :action, :created_at, and :updated_at10141Gitlab::Metrics::Delta10142 #compared_with10143 returns the delta as a Numeric10144 bases the delta on a previously used value10145Gitlab::Ci::Config::Entry::Paths10146 validations10147 when entry config value is valid10148 #value10149 returns key value10150 #valid?10151 is valid10152 when entry value is not valid10153 #errors10154 saves errors10155Types::CommitType10156 is expected to eq "Commit"10157 is expected to require graphql authorizations :read_code10158 is expected to include Types::TodoableInterface10159 contains attributes related to commit10160 diffs10161 limits field call count10162RuboCop::Cop::CodeReuse::Serializer10163 # order random10164 flags the use of a Serializer in a Presenter10165 flags the use of a Serializer in a Service class10166 flags the use of a Serializer in a model class method10167 flags the use of a Serializer in a model instance method10168 flags the use of a Serializer in a worker10169 flags the use of a Serializer in a Finder10170 flags the use of a Serializer in a Serializer10171Resolvers::WorkItemResolver10172 #resolve10173 when the user can read the work item10174 is expected to eq #<WorkItem id:125 namespace902/project-1756#1>10175 when the user can not read the work item10176 raises a resource not available error10177Gitlab::Usage::Metrics::Instrumentations::AggregatedMetric10178 # order random10179 data_source: "redis_hll", time_frame: "28d", operator: "AND", expected_value: 210180 has correct value10181 data_source: "database", time_frame: "7d", operator: "OR", expected_value: 3.010182 has correct value10183 data_source: "database", time_frame: "7d", operator: "AND", expected_value: 1.010184 has correct value10185 data_source: "redis_hll", time_frame: "7d", operator: "AND", expected_value: 110186 has correct value10187 data_source: "redis_hll", time_frame: "7d", operator: "OR", expected_value: 210188 has correct value10189 data_source: "redis_hll", time_frame: "28d", operator: "OR", expected_value: 310190 has correct value10191DependencyProxy::CleanupDependencyProxyWorker10192 #perform10193 when there are records to be deleted10194 behaves like an idempotent worker10195 is labeled as idempotent10196 performs multiple times sequentially without raising an exception10197 queues the cleanup jobs10198 when there are not records to be deleted10199 behaves like an idempotent worker10200 is labeled as idempotent10201 performs multiple times sequentially without raising an exception10202 does not queue the cleanup jobs10203dashboard/projects/index.html.haml10204 shows the project the user is a member of in the list10205 shows the "New project" button10206DeployKeys::CreateService10207 creates a deploy key10208Ml::ModelPresenter10209 # order random10210 #latest_package_path10211 when model version does not have package10212 is expected to be nil10213 when latest model version has package10214 is expected to eq "/namespace905/project-1759/-/packages/1372"10215 #latest_version_name10216 when model has version10217 is the version of latest_version10218 when model has no versions10219 is expected to be nil10220 #path10221 is expected to eq "/namespace905/project-1759/-/ml/models/1367"10222TermAgreement10223 validations10224 is expected to validate that :term cannot be empty/falsy10225 is expected to validate that :user cannot be empty/falsy10226 .accepted10227 only includes accepted terms10228Sidebars::Groups::Menus::KubernetesMenu10229 behaves like serializable as super_sidebar_menu_args10230 returns hash with provided attributes10231 returns hash with an item_id10232 #render?10233 when user can read clusters10234 returns true10235 when user cannot read clusters rules10236 returns false10237 :certificate_based_clusters feature flag is disabled10238 returns false10239Ci::PipelineCreation::StartPipelineService10240 #execute10241 calls the pipeline process service10242 creates pipeline ref10243Namespace::AdminNote10244 associations10245 is expected to belong to namespace required: false10246 validations10247 is expected to validate that :namespace cannot be empty/falsy10248 is expected to validate that the length of :note is at most 100010249Gitlab::Graphql::Tracers::TimerTracer10250 adds duration_s to the trace metadata10251 adds a duration_s even if the query failed10252Gitlab::Ci::Status::Running10253 #text10254 is expected to eq "Running"10255 #label10256 is expected to eq "running"10257 #icon10258 is expected to eq "status_running"10259 #favicon10260 is expected to eq "favicon_status_running"10261 #group10262 is expected to eq "running"10263 #details_path10264 is expected to be nil10265Gitlab::Search::AbuseValidators::NoAbusiveCoercionFromStringValidator10266 attribute_value: ["this is an arry"], valid?: false10267 is expected to receive message chain errors.add10268 attribute_value: {:this=>"is a hash"}, valid?: false10269 is expected to receive message chain errors.add10270 attribute_value: 123, valid?: false10271 is expected to receive message chain errors.add10272 attribute_value: 456.78, valid?: false10273 is expected to receive message chain errors.add10274 attribute_value: "now this is a string", valid?: true10275 is expected not to receive errors(*(any args)) 0 times10276VulnerabilityFindingSignatureHelpers10277 #priority10278 returns numeric values of the priority string10279 #self.priority10280 returns the numeric value of the provided string10281ResourceStateEventPolicy10282 # order random10283 #read_resource_state_event10284 with non-member user10285 does not allow to read event10286 with member user10287 allows to read event for a state change10288Mutations::WorkItems::LinkedItems::Base10289 # order random10290 raises a NotImplementedError error if the update_links method is called on the base class10291Gitlab::Diff::ParallelDiff10292 #parallelize10293 returns an array of arrays containing the parsed diff10294Gitlab::QueryLimiting::Middleware10295 #call10296 runs the application with query limiting in place10297 #action_name10298 using a Rails request10299 returns the name of the controller and action10300 includes the content type if this is not text/html10301 using a Grape API request10302 returns the name of the request method and endpoint path10303 returns nil if the route can not be retrieved10304Gitlab::GithubGistsImport::StartImportWorker10305 # order random10306 #perform10307 when import was successfull10308 imports all the gists10309 when importer returns an error10310 raises an error10311 when rate limit is reached10312 reschedules worker10313 .sidekiq_retries_exhausted10314 sets status to failed10315Ci::DisableUserPipelineSchedulesService10316 #execute10317 when user has active pipeline schedules10318 disables all active pipeline schedules10319notify/user_deactivated_email.html.haml10320 # order random10321 displays the user's name10322 when additional text setting is set10323 when additional text feature flag is enabled10324 displays the additional text10325 when additional text setting is not set10326 does not display any additional text10327be_sorted10328 matches empty collections, regardless of arguments10329 matches in both directions10330 can match on a projection10331shared/milestones/_issuables.html.haml10332 shows the issuables count if show_counter is true10333 does not show the issuables count if show_counter is false10334 a high issuables count10335 shows a delimited number if show_counter is true10336Gitlab::GithubImport::ImportIssueEventWorker10337 #import10338 imports an issue event10339Integrations::SlackInteractions::BlockActionService10340 # order random10341 #execute10342 when action_id is incident_management_project10343 executes the correct handler10344 when action_id is not known10345 does not execute the handlers10346Gitlab::Ci::Pipeline::Expression::Lexeme::Null10347 .build10348 creates a new instance of the token10349 .type10350 is a value lexeme10351 #evaluate10352 always evaluates to `nil`10353Gitlab::Pagination::OffsetHeaderBuilder10354 #execute10355 sets headers to request context10356 exclude total headers10357 does not set total headers to request context10358 pass data without counts10359 does not set total headers to request context10360BulkImports::Clients::Graphql10361 #execute10362 network errors10363 when response cannot be parsed10364 raises network error10365 when response is unsuccessful10366 raises network error10367Gitlab::GrapeLogging::Formatters::LogrageWithTimestamp10368 turns the log entry to valid JSON10369 re-formats the params hash10370API::Entities::GroupDetail10371 #as_json10372 includes prevent_sharing_groups_outside_hierarchy for a root group10373 excludes prevent_sharing_groups_outside_hierarchy for a subgroup10374Types::RangeInputType10375 follows expected subtyping relationships for instances10376 follows expected subtyping relationships for classes10377 parameterized on Integer10378 accepts start and end10379 rejects inverted ranges10380Types::IncidentManagement::TimelineEventType10381 # order random10382 is expected to eq "TimelineEventType"10383 exposes the expected fields10384 is expected to require graphql authorizations :read_incident_management_timeline_event10385Types::ContainerExpirationPolicyKeepEnum10386 behaves like exposing container expiration policy option10387 exposes all options10388 uses all possible options from model10389VsCode::Settings::VsCodeManifestPresenter10390 # order random10391 #latest10392 when there are not persisted settings10393 includes default machine uuid10394 when there are persisted settings10395 includes the persisted setting uuid10396 #session10397 returns default session10398ActiveRecord Transaction Observer10399 # order random10400 when DBMS is not available10401 does not calls Gitlab::Database::Transaction::Observer10402 when DBMS is available10403 calls Gitlab::Database::Transaction::Observer10404 when flipper table does not exist10405 does not calls Gitlab::Database::Transaction::Observer10406Sidebars::YourWork::Menus::OrganizationsMenu10407 # order random10408 #render?10409 when `ui_for_organizations` feature flag is enabled10410 when `current_user` is available10411 returns true10412 when `current_user` is not available10413 returns false10414 when `ui_for_organizations` feature flag is disabled10415 returns false10416Achievements::AchievementsFinder10417 # order random10418 #execute10419 returns all achievements10420 when ids param provided10421 returns specified achievements10422Gitlab::CrossProjectAccess::CheckCollection10423 #add_collection10424 merges the checks of 2 collections10425 #should_run?10426 returns true if one of the check says it should run10427 returns false if one of the check says it should be skipped10428projects/issues/_related_issues.html.haml10429 # order random10430 when current user can read issue link for the project10431 adds the report abuse path as a data attribute10432 when current user cannot read issue link for the project10433 does not render the related issues root node10434API::Validations::Validators::BulkImports::DestinationNamespacePath10435 # order random10436 when destination namespace param is valid10437 raises a validation error10438 when destination namespace param is invalid10439 does not raise a validation error10440Gitlab::Ci::JwtV2::ClaimMapper::Repository10441 # order random10442 #to_h10443 returns expected claims10444 when ref is a tag10445 returns expected claims10446Types::Packages::Helm::MetadataType10447 is expected to eq "PackageHelmMetadataType"10448 includes helm json fields10449Types::CommitEncodingEnum10450 is expected to eq "CommitEncoding"10451 exposes all the existing encoding option10452Gitlab::Database::PostgresqlAdapter::DumpSchemaVersionsMixin10453 calls SchemaMigrations touch_all and skips original implementation10454 does not call touch_all in production10455Gitlab::Usage::Metrics::Instrumentations::SmtpEncryptedSecretsMetric10456 # order random10457 smtp_encrypted_secrets_enabled: true, expected_value: true10458 behaves like a correct instrumented metric value10459 has correct value10460 smtp_encrypted_secrets_enabled: false, expected_value: false10461 behaves like a correct instrumented metric value10462 has correct value10463Types::WorkItems::Widgets::NotificationsUpdateInputType10464 # order random10465 is expected to eq "WorkItemWidgetNotificationsUpdateInput"10466 is expected to contain exactly "subscribed"10467RuboCop::Cop::AvoidRouteRedirectLeadingSlash10468 # order random10469 does not register an offense when redirect does not have a leading slash10470 registers an offense when redirect has a leading slash and corrects10471ActiveRecord::Relation patch for PostgreSQL WITH statements10472 # order random10473 ActiveRecord::Relation::WithChain#recursive10474 sets recursive value flag on the relation10475 raises an error when #update_all is called10476Gitlab::GrapeLogging::Loggers::QueueDurationLogger10477 .parameters10478 when no proxy duration is available10479 returns an empty hash10480 when a proxy duration is available10481 adds the duration to log parameters10482Types::Snippets::BlobActionEnum10483 is expected to eq "SnippetBlobActionEnum"10484 exposes all file input action types10485groups/settings/_remove.html.haml10486 render10487 enables the Remove group button for a group10488Gitlab::SidekiqMiddleware::InstrumentationLogger10489 #call10490 merges all instrumentation data in the job10491Gitlab::Usage::Metrics::Instrumentations::VersionMetric10492 # order random10493 behaves like a correct instrumented metric value10494 has correct value10495Gitlab::Serializer::Ci::Variables10496 converts keys into strings and symbolizes hash10497BulkImports::GetImportableDataService10498 #execute10499 returns version_validation and a response10500Ci::CodequalityMrDiffEntity10501 #as_json10502 when quality report has degradations10503 contains correct codequality mr diff report10504Session initializer for GitLab10505 config#session_store10506 initialized as a redis_store with a proper servers configuration10507Gitlab::Database::Migrations::Squasher10508 # order random10509 #files_to_delete10510 only deletes the files we're expecting10511#<Class:0x00007d9524f2eb80>10512 has the expected fields10513ProjectMirrorSerializer10514 represents ProjectMirror entities10515ClickHouse::Models::AuditEvent10516 # order random10517 #by_entity_id10518 builds the correct SQL10519 #by_entity_type10520 builds the correct SQL10521 #by_author_username10522 builds the correct SQL10523 #by_author_id10524 builds the correct SQL10525 #by_entity_username10526 builds the correct SQL10527 method chaining10528 builds the correct SQL with chained methods10529 class methods10530 .by_entity_type10531 calls the corresponding instance method10532 .by_entity_id10533 calls the corresponding instance method10534 .by_author_id10535 calls the corresponding instance method10536 .by_entity_username10537 calls the corresponding instance method10538 .by_author_username10539 calls the corresponding instance method10540auto_explain log contains 1796 entries for main, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-as-if-foss-single-db-ci-connection-3-28.328.main.ndjson.gz10541took 18.72355911410542auto_explain log contains 1796 entries for ci, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-as-if-foss-single-db-ci-connection-3-28.328.ci.ndjson.gz10543took 18.55389770910544Pending: (Failures listed here are expected and do not affect your suite's status)10545 1) FileUploader legacy storage behaves like builds correct legacy storage paths #cache_dir behaves like matches the method pattern 10546 # No pattern provided, skipping.10547 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810548 2) FileUploader legacy storage behaves like builds correct legacy storage paths #work_dir behaves like matches the method pattern 10549 # No pattern provided, skipping.10550 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810551 3) FileUploader legacy storage behaves like builds correct legacy storage paths #relative_path is relative10552 # Path not set, skipping.10553 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010554 4) FileUploader legacy storage behaves like builds correct legacy storage paths .base_dir behaves like matches the method pattern 10555 # No pattern provided, skipping.10556 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810557 5) FileUploader legacy storage uses hashed storage when rolled out attachments #cache_dir behaves like matches the method pattern 10558 # No pattern provided, skipping.10559 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810560 6) FileUploader legacy storage uses hashed storage when rolled out attachments #work_dir behaves like matches the method pattern 10561 # No pattern provided, skipping.10562 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810563 7) FileUploader legacy storage uses hashed storage when rolled out attachments #relative_path is relative10564 # Path not set, skipping.10565 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010566 8) FileUploader legacy storage uses hashed storage when rolled out attachments .absolute_path behaves like matches the method pattern 10567 # No pattern provided, skipping.10568 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810569 9) FileUploader legacy storage uses hashed storage when rolled out attachments .base_dir behaves like matches the method pattern 10570 # No pattern provided, skipping.10571 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810572 10) FileUploader legacy storage uses hashed storage when only repositories are rolled out behaves like builds correct legacy storage paths #cache_dir behaves like matches the method pattern 10573 # No pattern provided, skipping.10574 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810575 11) FileUploader legacy storage uses hashed storage when only repositories are rolled out behaves like builds correct legacy storage paths #work_dir behaves like matches the method pattern 10576 # No pattern provided, skipping.10577 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810578 12) FileUploader legacy storage uses hashed storage when only repositories are rolled out behaves like builds correct legacy storage paths #relative_path is relative10579 # Path not set, skipping.10580 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010581 13) FileUploader legacy storage uses hashed storage when only repositories are rolled out behaves like builds correct legacy storage paths .base_dir behaves like matches the method pattern 10582 # No pattern provided, skipping.10583 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810584 14) FileUploader object store is remote behaves like builds correct paths #cache_dir behaves like matches the method pattern 10585 # No pattern provided, skipping.10586 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810587 15) FileUploader object store is remote behaves like builds correct paths #work_dir behaves like matches the method pattern 10588 # No pattern provided, skipping.10589 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810590 16) FileUploader object store is remote behaves like builds correct paths #relative_path is relative10591 # Path not set, skipping.10592 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010593 17) FileUploader object store is remote behaves like builds correct paths .absolute_path behaves like matches the method pattern 10594 # No pattern provided, skipping.10595 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810596 18) FileUploader object store is remote behaves like builds correct paths .base_dir behaves like matches the method pattern 10597 # No pattern provided, skipping.10598 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810599 19) Pages::DeploymentUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 10600 # No pattern provided, skipping.10601 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810602 20) Pages::DeploymentUploader behaves like builds correct paths #relative_path is relative10603 # Path not set, skipping.10604 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010605 21) Pages::DeploymentUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 10606 # No pattern provided, skipping.10607 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810608 22) Pages::DeploymentUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 10609 # No pattern provided, skipping.10610 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810611 23) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 10612 # No pattern provided, skipping.10613 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810614 24) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 10615 # No pattern provided, skipping.10616 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810617 25) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 10618 # No pattern provided, skipping.10619 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810620 26) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths #relative_path is relative10621 # Path not set, skipping.10622 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010623 27) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 10624 # No pattern provided, skipping.10625 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810626 28) Pages::DeploymentUploader when object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 10627 # No pattern provided, skipping.10628 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810629 29) ImportExportUploader object_store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 10630 # No pattern provided, skipping.10631 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810632 30) ImportExportUploader object_store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 10633 # No pattern provided, skipping.10634 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810635 31) ImportExportUploader object_store is REMOTE behaves like builds correct paths #relative_path is relative10636 # Path not set, skipping.10637 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:4010638 32) ImportExportUploader object_store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 10639 # No pattern provided, skipping.10640 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810641 33) ImportExportUploader object_store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 10642 # No pattern provided, skipping.10643 # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:810644 34) Database::LockTablesWorker#perform when running in decomposed database when the table is wrong when trying to lock tables on an unknown database raises an exception10645 # Skipping because ci is shared or doesn't not exist10646 # ./spec/workers/database/lock_tables_worker_spec.rb:3110647 35) Database::LockTablesWorker#perform when running in decomposed database when the table is wrong when trying to lock tables on the database that does not support locking raises an exception10648 # Skipping because ci is shared or doesn't not exist10649 # ./spec/workers/database/lock_tables_worker_spec.rb:3910650 36) Database::LockTablesWorker#perform when running in decomposed database when the table is wrong when trying to lock tables on the wrong database raises an exception10651 # Skipping because ci is shared or doesn't not exist10652 # ./spec/workers/database/lock_tables_worker_spec.rb:4710653 37) Database::LockTablesWorker#perform when running in decomposed database when the table is wrong when trying to lock shared tables on the database raises an exception10654 # Skipping because ci is shared or doesn't not exist10655 # ./spec/workers/database/lock_tables_worker_spec.rb:5510656 38) Database::LockTablesWorker#perform when running in decomposed database when the table is correct when the table is not locked for writes database_name: :ci, tables: ["users", "namespaces"] locks the tables on the corresponding database10657 # Skipping because ci is shared or doesn't not exist10658 # ./spec/workers/database/lock_tables_worker_spec.rb:7110659 39) Database::LockTablesWorker#perform when running in decomposed database when the table is correct when the table is not locked for writes database_name: :main, tables: ["ci_pipelines", "ci_builds"] locks the tables on the corresponding database10660 # Skipping because ci is shared or doesn't not exist10661 # ./spec/workers/database/lock_tables_worker_spec.rb:7110662 40) Database::LockTablesWorker#perform when running in decomposed database when the table is correct when the table is not locked for writes when the table is already locked for writes database_name: :ci, tables: ["users", "namespaces"] skips locking the tables on the corresponding database10663 # Skipping because ci is shared or doesn't not exist10664 # ./spec/workers/database/lock_tables_worker_spec.rb:9610665 41) Database::LockTablesWorker#perform when running in decomposed database when the table is correct when the table is not locked for writes when the table is already locked for writes database_name: :main, tables: ["ci_pipelines", "ci_builds"] skips locking the tables on the corresponding database10666 # Skipping because ci is shared or doesn't not exist10667 # ./spec/workers/database/lock_tables_worker_spec.rb:9610668Finished in 25 minutes 26 seconds (files took 1 minute 4.33 seconds to load)106695188 examples, 0 failures, 41 pending10670Randomized with seed 1952110671[TEST PROF INFO] Time spent in factories: 14:56.085 (57.51% of total time)10672RSpec exited with 0.10673No examples to retry, congrats!10675Running after script...10676$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"10680$ tooling/bin/push_job_metrics || true10681[job-metrics] Pushing job metrics file for the CI/CD job.10682[job-metrics] Pushed 4 CI job metric entries to InfluxDB.10684Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy10686Uploading artifacts...10687auto_explain/: found 3 matching artifact files and directories 10688coverage/: found 5 matching artifact files and directories 10689crystalball/: found 2 matching artifact files and directories 10690deprecations/: found 3 matching artifact files and directories 10691knapsack/: found 4 matching artifact files and directories 10692rspec/: found 14 matching artifact files and directories 10693WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 10694log/*.log: found 20 matching artifact files and directories 10695WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/5336651471/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com10696WARNING: Retrying... context=artifacts-uploader error=request redirected10697Uploading artifacts as "archive" to coordinator... 201 Created id=5336651471 responseStatus=201 Created token=64_bdYHq10698Uploading artifacts...10699rspec/rspec-*.xml: found 1 matching artifact files and directories 10700WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/5336651471/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com10701WARNING: Retrying... context=artifacts-uploader error=request redirected10702Uploading artifacts as "junit" to coordinator... 201 Created id=5336651471 responseStatus=201 Created token=64_bdYHq10704Job succeeded