rspec unit pg14 4/24
Passed Started
by
@seggenberger

Sascha Eggenberger
1 is expected to have many issue_hooks_integrations class_name => Integration2 is expected to have many confidential_issue_hooks_integrations class_name => Integration3 is expected to have many merge_request_hooks_integrations class_name => Integration4 is expected to have many note_hooks_integrations class_name => Integration5 is expected to have many confidential_note_hooks_integrations class_name => Integration6 is expected to have many job_hooks_integrations class_name => Integration7 is expected to have many archive_trace_hooks_integrations class_name => Integration8 is expected to have many pipeline_hooks_integrations class_name => Integration9 is expected to have many wiki_page_hooks_integrations class_name => Integration10 is expected to have many deployment_hooks_integrations class_name => Integration11 is expected to have many alert_hooks_integrations class_name => Integration12 is expected to have many incident_hooks_integrations class_name => Integration13 is expected to have many pages_domains14 is expected to have one pages_metadatum15 is expected to have many pages_deployments16 has an inverse relationship with merge requests17 has a distinct has_many :lfs_objects relation through lfs_objects_projects18 behaves like model with repository19 container class includes HasRepository20 #commits_by21 retrieves several commits from the repository by oid22 #web_url23 when given the only_path option24 when only_path is false25 returns the full web URL for this repo26 when only_path is true27 returns the relative web URL for this repo28 when only_path is nil29 returns the full web URL for this repo30 when not given the only_path option31 returns the full web URL for this repo32 #url_to_repo33 returns the SSH URL to the repository34 #ssh_url_to_repo35 returns the SSH URL to the repository36 #http_url_to_repo37 returns the HTTP URL to the repository38 #repository39 returns valid repo40 uses the same container41 #storage42 returns valid storage43 #full_path44 returns valid full_path45 #lfs_enabled?46 returns the expected value47 #empty_repo?48 when the repo does not exist49 returns true50 when the repo exists51 returns the empty state of the repository52 #valid_repo?53 is expected to equal false54 is expected to equal true55 #repository_exists?56 is expected to equal false57 is expected to equal true58 #repo_exists?59 is expected to equal false60 is expected to equal true61 #root_ref62 is expected to equal true63 is expected to equal false64 is expected to equal false65 Respond to66 is expected to respond to #base_dir67 is expected to respond to #disk_path68 is expected to respond to #gitlab_shell69 #change_head70 delegates #change_head to repository71 #after_repository_change_head72 calls #reload_default_branch73 publishes an Repositories::DefaultBranchChangedEvent event74 behaves like model with wiki75 #create_wiki76 returns true if the wiki repository already exists77 returns true if the wiki repository was created78 when the repository cannot be created79 returns false and adds a validation error80 #wiki_repository_exists?81 returns true when the wiki repository exists82 returns false when the wiki repository does not exist83 wiki path conflict84 when the new path has been used by the wiki of other Project85 has an error on the name attribute86 when the new wiki path has been used by the path of other Project87 has an error on the name attribute88 when the new path has been used by the wiki of other Group89 has an error on the name attribute90 when the new wiki path has been used by the path of other Group91 has an error on the name attribute92 behaves like can move repository storage93 #set_repository_read_only!94 makes the repository read-only95 raises an error if the project is already read-only96 raises an error when there is an existing git transfer in progress97 skip_git_transfer_check is true98 makes the project read-only when git transfers are in progress99 #set_repository_writable!100 sets repository_read_only to false101 raises an error when the update fails102 #reference_counter103 returns a Gitlab::ReferenceCounter object104 maintainers association105 returns only maintainers106 after initialized107 has a project_feature108 when deleting project109 also deletes the associated ProjectNamespace110 when project has object storage attached to it111 when associated object storage object is not deleted before the project112 adds an error to project113 when associated object storage object is deleted before the project114 deletes the project115 when creating a new project116 automatically creates a CI/CD settings row117 automatically creates a container expiration policy row118 does not create another container expiration policy if there is already one119 automatically creates a Pages metadata row120 automatically builds a project setting row121 with project namespaces122 behaves like creates project namespace123 automatically creates a project namespace124 updating a project125 when project has an associated project namespace126 project is INVALID when trying to remove project namespace127 when same project is being updated in 2 instances128 syncs only changed attributes129 updating cd_cd_settings130 does not raise an error131 #namespace_members132 includes the correct users133 is equivalent to #project_members134 behaves like query without source filters135 is expected not to include "source_id" and "source_type"136 #namespace_requesters137 includes the correct users138 is equivalent to #project_members139 behaves like query without source filters140 is expected not to include "source_id" and "source_type"141 #namespace_members_and_requesters142 includes the correct users143 is equivalent to #project_members144 behaves like query without source filters145 is expected not to include "source_id" and "source_type"146 #namespace_members setters147 is expected to be an instance of ProjectMember148 is expected to eq #<User id:15 @user14>149 is expected to eq #<Project id:25 namespace1/project-29>>150 is expected to be nil151 behaves like polymorphic membership relationship152 is expected to include {"source_type" => "Project", "source_id" => 25}153 behaves like member_namespace membership relationship154 is expected to include {"member_namespace_id" => 42}155 #namespace_requesters setters156 is expected to be an instance of ProjectMember157 is expected to eq #<User id:16 @user15>158 is expected to eq #<Project id:26 namespace1/project-30>>159 is expected to eq 2023-11-22 16:00:57.575325294 +0000160 behaves like polymorphic membership relationship161 is expected to include {"source_type" => "Project", "source_id" => 26}162 behaves like member_namespace membership relationship163 is expected to include {"member_namespace_id" => 44}164 #namespace_members_and_requesters setters165 is expected to be an instance of ProjectMember166 is expected to eq #<User id:17 @user16>167 is expected to eq #<Project id:27 namespace1/project-31>>168 is expected to eq 2023-11-22 16:00:58.148544134 +0000169 behaves like polymorphic membership relationship170 is expected to include {"source_type" => "Project", "source_id" => 27}171 behaves like member_namespace membership relationship172 is expected to include {"member_namespace_id" => 46}173 #members & #requesters174 behaves like members and requesters associations175 #members_and_requesters176 includes members and requesters177 #members178 includes members and exclude requesters179 #requesters180 does not include requesters181 ci_pipelines association182 returns only pipelines from ci_sources183 order of the `has_many :notes` association184 has `has_many :notes` as the first association among all the other associations thatincludes the `Issuable` module185 modules186 is expected to includes the Gitlab::ConfigHelper module187 is expected to includes the Gitlab::ShellAdapter module188 is expected to includes the Gitlab::VisibilityLevel module189 is expected to includes the Referable module190 is expected to includes the Sortable module191 before_validation192 with removal of leading spaces193 removes the leading space194 when name is nil195 falls through to the presence validation196 validation197 is expected to validate that :name cannot be empty/falsy198 is expected to validate that :name is case-sensitively unique within the scope of :namespace_id199 is expected to validate that the length of :name is at most 255200 is expected to allow :name to be ‹"space last "›201 is expected not to allow :path to be ‹"colon:in:path"›202 is expected to validate that :path cannot be empty/falsy203 is expected to validate that the length of :path is at most 255204 is expected to validate that the length of :description is at most 2000205 is expected to validate that the length of :ci_config_path is at most 255206 is expected to allow :ci_config_path to be ‹""›207 is expected not to allow :ci_config_path to be ‹"test/../foo"›208 is expected not to allow :ci_config_path to be ‹"/test/foo"›209 is expected to validate that :creator cannot be empty/falsy210 is expected to validate that :namespace cannot be empty/falsy211 is expected to validate that :repository_storage cannot be empty/falsy212 is expected to validate that :max_artifacts_size looks like an integer greater than 0213 is expected to validate that the length of :suggestion_commit_message is at most 255214 validates build timeout constraints215 does not allow new projects beyond user limits216 validates the visibility217 validates presence of project_feature218 validates project namespace creation219 does not create project namespace if project is not created220 repository storages inclusion221 does not allow repository storages that don't match a label in the configuration222 import_url223 does not allow an invalid URI as import_url224 does allow a SSH URI as import_url for persisted projects225 does not allow a SSH URI as import_url for new projects226 does allow a valid URI as import_url227 allows an empty URI228 does not produce import data on an empty URI229 does not produce import data on an invalid URI230 does not allow import_url pointing to localhost231 does not allow import_url pointing to the local network232 does not allow import_url with invalid ports for new projects233 does not allow import_url with invalid ports for persisted projects234 does not allow import_url with invalid user235 does not allow URLs with unencoded CR or LF characters236 allow URLs with CR or LF characters237 project pending deletion238 contains errors related to the project being deleted239 name format validation240 rejects a name starting with '.'241 rejects a name starting with '-'242 rejects a name starting with '$'243 name is unchanged244 does not raise validation error for name for existing project245 path validation246 allows paths reserved on the root namespace247 rejects paths reserved on another level248 rejects nested paths249 allows a reserved group name250 rejects a path ending in '.'251 rejects a path starting with '.'252 rejects a path ending in '-'253 rejects a path starting with '-'254 rejects a path ending in '_'255 rejects a path starting with '_'256 when validating if path already exist as pages unique domain257 rejects paths that match pages unique domain258 accepts path when the host does not match259 accepts path when the domain does not match260 path is unchanged261 does not raise validation error for path for existing project262 behaves like a BulkUsersByEmailLoad model263 #users_by_emails264 when nothing is loaded265 preforms the yielded query and supplies the data with only emails desired266 when store is preloaded267 passes back loaded data and does not update the items that already exist268 #all_pipelines269 has all pipelines270 when builds are disabled271 returns .external pipelines272 #ci_pipelines273 excludes dangling pipelines such as :webide274 when builds are disabled275 returns .external pipelines276 #commit_notes277 returns project's commit notes278 #personal_namespace_holder?279 project: personal_project, user: namespace_user, result: true280 is expected to eq true281 project: personal_project, user: admin_user, result: false282 is expected to eq false283 project: personal_project, user: another_user, result: false284 is expected to eq false285 project: personal_project, user: nil, result: false286 is expected to eq false287 project: group_project, user: namespace_user, result: false288 is expected to eq false289 project: group_project, user: group_owner_user, result: false290 is expected to eq false291 project: group_project, user: another_user, result: false292 is expected to eq false293 project: group_project, user: nil, result: false294 is expected to eq false295 project: group_project, user: nil, result: false296 is expected to eq false297 project: group_project, user: admin_user, result: false298 is expected to eq false299 #invalidate_personal_projects_count_of_owner300 for personal projects301 invalidates personal_project_count cache of the the owner of the personal namespace302 for projects in groups303 does not invalidates any cache304 #default_pipeline_lock305 keep_latest_artifact_enabled: false, result_pipeline_locked: :unlocked306 is expected to eq :unlocked307 keep_latest_artifact_enabled: true, result_pipeline_locked: :artifacts_locked308 is expected to eq :artifacts_locked309 #membership_locked?310 returns false311 #autoclose_referenced_issues312 when DB entry is nil313 returns true314 when DB entry is true315 returns true316 when DB entry is false317 returns false318 project token319 sets an random token if none provided320 does not set an random token if one provided321 Respond to322 is expected to respond to #url_to_repo323 is expected to respond to #execute_hooks324 is expected to respond to #owner325 is expected to respond to #path_with_namespace326 is expected to respond to #full_path327 delegation328 is expected to delegate #add_guest to the #team object329 is expected to delegate #add_reporter to the #team object330 is expected to delegate #add_developer to the #team object331 is expected to delegate #add_maintainer to the #team object332 is expected to delegate #add_member to the #team object333 is expected to delegate #add_members to the #team object334 is expected to delegate #team_members to the #team object as #members335 is expected to delegate #owner_name to the #owner object as #name, allowing #owner to return nil336 is expected to delegate #root_ancestor to the #namespace object, allowing #namespace to return nil337 is expected to delegate #certificate_based_clusters_enabled? to the #namespace object, allowing #namespace to return nil338 is expected to delegate #last_pipeline to the #commit object, allowing #commit to return nil339 is expected to delegate #container_registry_enabled? to the #project_feature object340 is expected to delegate #container_registry_access_level to the #project_feature object341 is expected to delegate #environments_access_level to the #project_feature object342 is expected to delegate #model_experiments_access_level to the #project_feature object343 is expected to delegate #feature_flags_access_level to the #project_feature object344 is expected to delegate #releases_access_level to the #project_feature object345 is expected to delegate #infrastructure_access_level to the #project_feature object346 is expected to delegate #maven_package_requests_forwarding to the #namespace object347 is expected to delegate #pypi_package_requests_forwarding to the #namespace object348 is expected to delegate #npm_package_requests_forwarding to the #namespace object349 read project settings350 is expected to delegate #show_default_award_emojis to the #project_setting object, allowing #project_setting to return nil351 is expected to delegate #show_default_award_emojis? to the #project_setting object, allowing #project_setting to return nil352 is expected to delegate #warn_about_potentially_unwanted_characters to the #project_setting object, allowing #project_setting to return nil353 is expected to delegate #warn_about_potentially_unwanted_characters? to the #project_setting object, allowing #project_setting to return nil354 is expected to delegate #enforce_auth_checks_on_uploads to the #project_setting object, allowing #project_setting to return nil355 is expected to delegate #enforce_auth_checks_on_uploads? to the #project_setting object, allowing #project_setting to return nil356 write project settings357 is expected to delegate #show_default_award_emojis= to the #project_setting object passing arguments [:args], allowing #project_setting to return nil358 is expected to delegate #warn_about_potentially_unwanted_characters= to the #project_setting object passing arguments [:args], allowing #project_setting to return nil359 is expected to delegate #enforce_auth_checks_on_uploads= to the #project_setting object passing arguments [:args], allowing #project_setting to return nil360 when ci_cd_settings is destroyed but project is not361 allows methods delegated to ci_cd_settings to be nil362 #ci_forward_deployment_enabled?363 behaves like a ci_cd_settings predicate method364 when ci_cd_settings is nil365 returns false366 when ci_cd_settings is not nil367 delegated_method_return: true, subject_return: true368 returns the expected boolean value369 delegated_method_return: false, subject_return: false370 returns the expected boolean value371 #ci_forward_deployment_rollback_allowed?372 behaves like a ci_cd_settings predicate method373 when ci_cd_settings is nil374 returns false375 when ci_cd_settings is not nil376 delegated_method_return: true, subject_return: true377 returns the expected boolean value378 delegated_method_return: false, subject_return: false379 returns the expected boolean value380 #ci_allow_fork_pipelines_to_run_in_parent_project?381 behaves like a ci_cd_settings predicate method382 when ci_cd_settings is nil383 returns false384 when ci_cd_settings is not nil385 delegated_method_return: true, subject_return: true386 returns the expected boolean value387 delegated_method_return: false, subject_return: false388 returns the expected boolean value389 #ci_outbound_job_token_scope_enabled?390 behaves like a ci_cd_settings predicate method391 when ci_cd_settings is nil392 returns false393 when ci_cd_settings is not nil394 delegated_method_return: true, subject_return: true395 returns the expected boolean value396 delegated_method_return: false, subject_return: false397 returns the expected boolean value398 #ci_inbound_job_token_scope_enabled?399 behaves like a ci_cd_settings predicate method400 when ci_cd_settings is nil401 returns false402 when ci_cd_settings is not nil403 delegated_method_return: true, subject_return: true404 returns the expected boolean value405 delegated_method_return: false, subject_return: false406 returns the expected boolean value407 #restrict_user_defined_variables?408 behaves like a ci_cd_settings predicate method409 when ci_cd_settings is nil410 returns false411 when ci_cd_settings is not nil412 delegated_method_return: true, subject_return: true413 returns the expected boolean value414 delegated_method_return: false, subject_return: false415 returns the expected boolean value416 #keep_latest_artifacts_available?417 behaves like a ci_cd_settings predicate method418 when ci_cd_settings is nil419 returns false420 when ci_cd_settings is not nil421 delegated_method_return: true, subject_return: true422 returns the expected boolean value423 delegated_method_return: false, subject_return: false424 returns the expected boolean value425 #keep_latest_artifact?426 behaves like a ci_cd_settings predicate method427 when ci_cd_settings is nil428 returns false429 when ci_cd_settings is not nil430 delegated_method_return: true, subject_return: true431 returns the expected boolean value432 delegated_method_return: false, subject_return: false433 returns the expected boolean value434 #group_runners_enabled?435 behaves like a ci_cd_settings predicate method436 when ci_cd_settings is nil437 returns false438 when ci_cd_settings is not nil439 delegated_method_return: true, subject_return: true440 returns the expected boolean value441 delegated_method_return: false, subject_return: false442 returns the expected boolean value443 #merge_commit_template_or_default444 returns default merge commit template445 when merge commit template is set and not nil446 returns current value447 #merge_commit_template_or_default=448 sets template to nil when set to default value449 sets template to nil when set to default value but with CRLF line endings450 allows changing template451 allows setting template to nil452 #squash_commit_template_or_default453 returns default squash commit template454 when squash commit template is set and not nil455 returns current value456 #squash_commit_template_or_default=457 sets template to nil when set to default value458 allows changing template459 allows setting template to nil460 reference methods461 #to_reference462 returns the path with reference_postfix463 returns the path with reference_postfix when arg is self464 returns the full_path with reference_postfix when full465 returns the full_path with reference_postfix when cross-project466 #to_reference_base467 when nil argument468 returns nil469 when full is true470 returns complete path to the project471 when same project argument472 returns nil473 when cross namespace project argument474 returns complete path to the project475 when same namespace / cross-project argument476 returns path to the project477 when different namespace / cross-project argument with same owner478 returns full path to the project479 when argument is a namespace480 with same project path481 returns path to the project482 with different project path483 returns full path to the project484 when argument is a user485 returns full path to the project486 #to_human_reference487 when nil argument488 returns nil489 when same project argument490 returns nil491 when cross namespace project argument492 returns complete name with namespace of the project493 when same namespace / cross-project argument494 returns name of the project495 #to_reference_base496 project: project1, full: false, from: nil, result: nil497 returns correct path498 project: project1, full: true, from: nil, result: lazy { project.full_path }499 returns correct path500 project: project1, full: false, from: group, result: lazy { project.path }501 returns correct path502 project: project1, full: true, from: group, result: lazy { project.full_path }503 returns correct path504 project: project1, full: false, from: parent, result: lazy { project.full_path }505 returns correct path506 project: project1, full: true, from: parent, result: lazy { project.full_path }507 returns correct path508 project: project1, full: false, from: project1, result: nil509 returns correct path510 project: project1, full: true, from: project1, result: lazy { project.full_path }511 returns correct path512 project: project1, full: false, from: project_namespace, result: nil513 returns correct path514 project: project1, full: true, from: project_namespace, result: lazy { project.full_path }515 returns correct path516 project: project1, full: false, from: project2, result: lazy { project.path }517 returns correct path518 project: project1, full: true, from: project2, result: lazy { project.full_path }519 returns correct path520 project: project1, full: false, from: project_namespace2, result: lazy { project.path }521 returns correct path522 project: project1, full: true, from: project_namespace2, result: lazy { project.full_path }523 returns correct path524 project: project1, full: false, from: another_group, result: lazy { project.full_path }525 returns correct path526 project: project1, full: true, from: another_group, result: lazy { project.full_path }527 returns correct path528 project: project1, full: false, from: project3, result: lazy { project.full_path }529 returns correct path530 project: project1, full: true, from: project3, result: lazy { project.full_path }531 returns correct path532 project: project1, full: false, from: project_namespace3, result: lazy { project.full_path }533 returns correct path534 project: project1, full: true, from: project_namespace3, result: lazy { project.full_path }535 returns correct path536 project: project1, full: false, from: user_namespace, result: lazy { project.full_path }537 returns correct path538 project: project1, full: true, from: user_namespace, result: lazy { project.full_path }539 returns correct path540 #merge_method541 ff: true, rebase: true, method: :ff542 is expected to eq :ff543 ff: true, rebase: false, method: :ff544 is expected to eq :ff545 ff: false, rebase: true, method: :rebase_merge546 is expected to eq :rebase_merge547 ff: false, rebase: false, method: :merge548 is expected to eq :merge549 #readme_url550 with a non-existing repository551 returns nil552 with an existing repository553 when no README exists554 returns nil555 when a README exists556 returns the README557 #new_issuable_address558 incoming email enabled559 returns the address to create a new issue560 returns the address to create a new merge request561 returns nil with invalid address type562 incoming email disabled563 returns nil564 returns nil565 last_activity methods566 last_activity567 alias last_activity to last_event568 last_activity_date569 returns the project's last update date570 #get_issue571 with default issues tracker572 returns an issue573 returns count of open issues574 returns nil when no issue found575 returns nil when user doesn't have access576 with external issues tracker577 when internal issues are enabled578 returns interlan issue579 returns an ExternalIssue when internal issue does not exists580 when internal issues are disabled581 returns always an External issues582 returns an ExternalIssue when internal issue does not exists583 #open_issues_count584 provides the issue count585 invokes the count service with current_user586 invokes the batch count service with no current_user587 #open_merge_requests_count588 provides the merge request count589 #issue_exists?590 is truthy when issue exists591 is falsey when issue does not exist592 #to_param593 with namespace594 is expected to eq "gitlabhq"595 with invalid path596 returns previous path to keep project suitable for use in URLs when persisted597 returns current path when new record598 #default_issues_tracker?599 is true if used internal tracker600 is false if used other tracker601 #has_wiki?602 returns true if project is wiki enabled or has external wiki603 #first_owner604 the project does not have a group605 is the namespace owner606 the project is in a group607 is the group owner608 #external_issue_tracker609 sets Project#has_external_issue_tracker when it is nil610 returns nil and does not query services when there is no external issue tracker611 retrieves external_issue_tracker querying services and cache it when there is external issue tracker612 #has_external_issue_tracker613 is false when external issue tracker integration is not active614 is false when other integration is active615 when there is an active external issue tracker integration616 is expected to eq true617 becomes false when external issue tracker integration is destroyed618 becomes false when external issue tracker integration becomes inactive619 when there are two active external issue tracker integrations620 does not become false when external issue tracker integration is destroyed621 does not become false when external issue tracker integration becomes inactive622 #external_wiki623 returns an active external wiki624 does not return an inactive external wiki625 sets Project#has_external_wiki when it is nil626 #has_external_wiki627 is expected to eq false628 when there is an active external wiki integration629 is expected to eq true630 becomes false if the external wiki integration is destroyed631 becomes false if the external wiki integration becomes inactive632 when created as inactive633 is false634 #star_count635 counts stars from multiple users636 does not count stars from blocked users637 counts stars on the right project638 #avatar_type639 is true if avatar is image640 is false if avatar is html page641 #avatar_url642 when avatar file is uploaded643 shows correct url644 when avatar file in git645 is expected to eq "http://localhost/namespace1/project-181/-/avatar"646 when git repo is empty647 is expected to eq nil648 #builds_enabled649 is expected to be truthy650 .sort_by_attribute651 reorders the input relation by start count desc652 reorders the input relation by last activity desc653 reorders the input relation by last activity asc654 .with_shared_runners_enabled655 when shared runners are enabled for project656 returns a project657 when shared runners are disabled for project658 returns an empty array659 .with_remote_mirrors660 when some remote mirrors are enabled for the project661 returns a project662 when some remote mirrors exists but disabled for the project663 returns a project664 when no remote mirrors exist for the project665 returns an empty list666 .with_jira_dvcs_server667 returns the correct project668 .with_slack_application_disabled669 when the Slack app setting is enabled670 includes only projects where Slack app is disabled or absent671 when the Slack app setting is not enabled672 includes all projects673 .with_slack_integration674 returns projects with both active and inactive slack integrations675 .with_slack_slash_commands_integration676 returns projects with both active and inactive slack slash commands integrations677 .cached_count678 returns total project count679 .trending680 sorts projects by the amount of notes in descending order681 does not take system notes into account682 .starred_by683 returns only projects starred by the given user684 .with_limit685 limits the number of projects returned686 .visible_to_user687 when a user has access to a project688 is expected to eq [#<Project id:177 namespace1/project-212>>]689 when a user does not have access to any projects690 is expected to eq []691 .with_integration692 returns the correct projects693 .with_active_integration694 returns the correct projects695 .include_integration696 avoids n + 1697 .service_desk_enabled698 returns the correct project699 #service_desk_enabled?700 is enabled701 #service_desk_address702 when service_desk_email is disabled703 behaves like with incoming email address704 when incoming email is enabled705 uses project full path as service desk address key706 when incoming email is disabled707 uses project full path as service desk address key708 when service_desk_email is enabled709 when project_key is set710 returns Service Desk alias address including the project_key711 when project_key is not set712 returns Service Desk alias address including the project full path713 when custom email is enabled714 returns custom email address715 when feature flag service_desk_custom_email is disabled716 returns custom email address717 .with_service_desk_key718 returns projects with given key719 returns empty if there is no project with the key720 .find_by_url721 url is internal722 path is recognised as a project path723 is expected to eq #<Project id:194 namespace1/project-230>>724 returns nil if the path detection throws an error725 path is not a project path726 is expected to be nil727 url is external728 is expected to be nil729 .without_integration730 returns projects without the integration731 repository storage by default732 picks storage from ApplicationSetting733 shared runners by default734 are enabled735 is expected to be truthy736 are disabled737 is expected to be falsey738 #any_online_runners?739 shared runners740 for shared runners disabled741 has no runners available742 has a project runner743 has a shared runner, but they are prohibited to use744 checks the presence of project runner745 returns false if match cannot be found746 returns false if runner is offline747 for shared runners enabled748 has a shared runner749 checks the presence of shared runner750 returns false if match cannot be found751 group runners752 for group runners disabled753 has no runners available754 has a group runner, but they are prohibited to use755 for group runners enabled756 has a group runner757 has an offline group runner758 checks the presence of group runner759 returns false if match cannot be found760 #shared_runners761 behaves like shared_runners762 when shared runners are enabled for project763 returns a list of shared runners764 when shared runners are disabled for project765 returns a empty list766 #available_shared_runners767 behaves like shared_runners768 when shared runners are enabled for project769 returns a list of shared runners770 when shared runners are disabled for project771 returns a empty list772 #visibility_level773 by default774 is expected to eq 0775 when set to INTERNAL in application settings776 is expected to eq 10777 attribute_name: :visibility, value: "public"778 sets the visibility level779 attribute_name: :visibility_level, value: 20780 sets the visibility level781 attribute_name: "visibility", value: "public"782 sets the visibility level783 attribute_name: "visibility_level", value: 20784 sets the visibility level785 #visibility_level_allowed?786 when checking on non-forked project787 is expected to be truthy788 is expected to be truthy789 is expected to be truthy790 when checking on forked project791 is expected to be truthy792 is expected to be truthy793 is expected to be falsey794 #pages_show_onboarding?795 if there is no metadata796 is expected to be truthy797 if onboarding is complete798 is expected to be falsey799 if there is metadata, but onboarding is not complete800 is expected to be truthy801 will return false if pages is deployed even if onboarding_complete is false802 is expected to be falsey803 #pages_deployed?804 if pages are deployed805 is expected to be truthy806 if public folder doesn't exist807 is expected to be falsey808 #default_branch_protected?809 default_branch_protection_level: 0, result: false810 is expected to eq false811 default_branch_protection_level: 1, result: false812 is expected to eq false813 default_branch_protection_level: 3, result: true814 is expected to eq true815 default_branch_protection_level: 2, result: true816 is expected to eq true817 default_branch_protection_level: 4, result: true818 is expected to eq true819 initial_push_to_default_branch_allowed_for_developer?820 default_branch_protection_level: 0, result: true821 is expected to eq true822 default_branch_protection_level: 1, result: true823 is expected to eq true824 default_branch_protection_level: 3, result: false825 is expected to eq false826 default_branch_protection_level: 2, result: false827 is expected to eq false828 default_branch_protection_level: 4, result: true829 is expected to eq true830 .search831 returns projects with a matching name832 returns projects with a partially matching name833 returns projects with a matching name regardless of the casing834 returns projects with a matching description835 returns projects with a partially matching description836 returns projects with a matching description regardless of the casing837 returns projects with a matching path838 returns projects with a partially matching path839 returns projects with a matching path regardless of the casing840 defaults use_minimum_char_limit to true841 passes use_minimum_char_limit if it is set842 when include_namespace is true843 returns projects that match the group path844 returns projects that match the full path845 with pending_delete project846 shows pending deletion project847 .optionally_search848 searches for projects matching the query if one is given849 returns the current relation if no search query is given850 .eager_load_namespace_and_owner851 eager loads the namespace and namespace owner852 #expire_caches_before_rename853 expires the caches of the repository and wiki854 .search_by_title855 returns projects with a matching name856 returns projects with a partially matching name857 returns projects with a matching name regardless of the casing858 when checking projects from groups859 when group is private project can not be internal860 is expected to be falsey861 when group is internal project can not be public862 is expected to be falsey863 #track_project_repository864 with projects on legacy storage865 behaves like tracks storage location866 when a project repository entry does not exist867 creates a new entry868 tracks the project storage location869 when a tracking entry exists870 does not create a new entry in the database871 updates the project storage location872 refreshes a memoized repository value873 when "replicate_object_pool_on_move" FF is disabled874 does not update a memoized repository value875 with projects on hashed storage876 behaves like tracks storage location877 when a project repository entry does not exist878 creates a new entry879 tracks the project storage location880 when a tracking entry exists881 does not create a new entry in the database882 updates the project storage location883 refreshes a memoized repository value884 when "replicate_object_pool_on_move" FF is disabled885 does not update a memoized repository value886 #create_repository887 using a regular repository888 creates the repository889 adds an error if the repository could not be created890 passes through default branch891 using a forked repository892 does nothing893 using a SHA256 repository894 creates the repository895 #ensure_repository896 creates the repository if it not exist897 does not create the repository if it exists898 creates the repository if it is a fork899 handling import URL900 returns the sanitized URL901 saves the url credentials percent decoded902 saves url with no credentials903 #container_registry_url904 for enabled registry905 is expected not to be nil906 for disabled registry907 is expected to be nil908 #container_repositories_size909 on gitlab.com910 no_container_repositories: true, all_migrated: nil, gitlab_api_supported: nil, returned_size: nil, expected_result: 0911 is expected to eq 0912 no_container_repositories: false, all_migrated: false, gitlab_api_supported: nil, returned_size: nil, expected_result: nil913 is expected to eq nil914 no_container_repositories: false, all_migrated: true, gitlab_api_supported: false, returned_size: nil, expected_result: nil915 is expected to eq nil916 no_container_repositories: false, all_migrated: true, gitlab_api_supported: true, returned_size: 555, expected_result: 555917 is expected to eq 555918 no_container_repositories: false, all_migrated: true, gitlab_api_supported: true, returned_size: nil, expected_result: nil919 is expected to eq nil920 not on gitlab.com921 is expected to eq nil922 #container_registry_enabled=923 updates project_feature924 #container_registry_enabled925 delegates to project_feature926 #has_container_registry_tags?927 when container registry is enabled928 when tags are present for multi-level registries929 has image tags930 when tags are present for root repository931 has image tags932 when there are no tags at all933 does not have image tags934 when container registry is disabled935 does not have image tags936 does not check root repository tags937 iterates through container repositories938 #ci_config_path=939 default_ci_config_path: nil, project_ci_config_path: :notset, expected_ci_config_path: :default940 returns the correct path941 default_ci_config_path: nil, project_ci_config_path: nil, expected_ci_config_path: :default942 returns the correct path943 default_ci_config_path: nil, project_ci_config_path: "", expected_ci_config_path: :default944 returns the correct path945 default_ci_config_path: nil, project_ci_config_path: "cust\u0000om/\u0000/path", expected_ci_config_path: "custom//path"946 returns the correct path947 default_ci_config_path: "", project_ci_config_path: :notset, expected_ci_config_path: :default948 returns the correct path949 default_ci_config_path: "", project_ci_config_path: nil, expected_ci_config_path: :default950 returns the correct path951 default_ci_config_path: "", project_ci_config_path: "", expected_ci_config_path: :default952 returns the correct path953 default_ci_config_path: "", project_ci_config_path: "cust\u0000om/\u0000/path", expected_ci_config_path: "custom//path"954 returns the correct path955 default_ci_config_path: "global/path", project_ci_config_path: :notset, expected_ci_config_path: "global/path"956 returns the correct path957 default_ci_config_path: "global/path", project_ci_config_path: nil, expected_ci_config_path: :default958 returns the correct path959 default_ci_config_path: "global/path", project_ci_config_path: "", expected_ci_config_path: :default960 returns the correct path961 default_ci_config_path: "global/path", project_ci_config_path: "cust\u0000om/\u0000/path", expected_ci_config_path: "custom//path"962 returns the correct path963 #uses_default_ci_config?964 has a custom ci config path965 has a blank ci config path966 does not have a custom ci config path967 #latest_successful_build_for_ref968 behaves like latest successful build for sha or ref969 with many builds970 gives the latest builds from latest pipeline971 with succeeded pipeline972 standalone pipeline973 returns builds for ref for default_branch974 with nonexistent build975 returns empty relation if the build cannot be found976 with some pending pipeline977 gives the latest build from latest pipeline978 with pending pipeline979 returns empty relation980 with build belonging to a child pipeline981 returns the child build982 with a specified ref983 is expected to eq #<Ci::Build status: "pending", finished_at: "2023-11-22 08:53:29.000000000 +0000", created_at: "2023-..."stage", id: 14, stage_id: 13, partition_id: 101, auto_canceled_by_partition_id: 100, tag_list: nil>984 #latest_pipeline985 default repository branch986 when explicitly provided987 is expected to eq #<Ci::Pipeline id: 14, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: ni...uest_id: nil, ci_ref_id: 6, locked: "artifacts_locked", partition_id: 101, auto_canceled_by_id: nil>988 when not provided989 is expected to eq #<Ci::Pipeline id: 17, ref: "master", sha: "b83d6e391c22777fca1ed3012fce84f633d7fed0", before_sha: ni...uest_id: nil, ci_ref_id: 8, locked: "artifacts_locked", partition_id: 101, auto_canceled_by_id: nil>990 with provided sha991 is expected to eq #<Ci::Pipeline id: 22, ref: "master", sha: "1b12f15a11fc6e62177bef08f47bc7b5ce50b141", before_sha: ni...est_id: nil, ci_ref_id: 10, locked: "artifacts_locked", partition_id: 101, auto_canceled_by_id: nil>992 provided ref993 is expected to eq #<Ci::Pipeline id: 24, ref: "add-ipython-files", sha: "4963fefc990451a8ad34289ce266b757456fc88c", bef...est_id: nil, ci_ref_id: 13, locked: "artifacts_locked", partition_id: 101, auto_canceled_by_id: nil>994 with provided sha995 is expected to eq #<Ci::Pipeline id: 29, ref: "add-ipython-files", sha: "4963fefc990451a8ad34289ce266b757456fc88c", bef...est_id: nil, ci_ref_id: 15, locked: "artifacts_locked", partition_id: 101, auto_canceled_by_id: nil>996 bad ref997 is expected to be nil998 on deleted ref999 always returns nil despite a pipeline exists1000 #latest_successful_build_for_sha1001 behaves like latest successful build for sha or ref1002 with many builds1003 gives the latest builds from latest pipeline1004 with succeeded pipeline1005 standalone pipeline1006 returns builds for ref for default_branch1007 with nonexistent build1008 returns empty relation if the build cannot be found1009 with some pending pipeline1010 gives the latest build from latest pipeline1011 with pending pipeline1012 returns empty relation1013 with build belonging to a child pipeline1014 returns the child build1015 #latest_successful_build_for_ref!1016 with many builds1017 gives the latest builds from latest pipeline1018 with succeeded pipeline1019 standalone pipeline1020 returns builds for ref for default_branch1021 returns exception if the build cannot be found1022 with some pending pipeline1023 gives the latest build from latest pipeline1024 with pending pipeline1025 returns empty relation1026 #import_status1027 with import_state1028 returns the right status1029 without import_state1030 returns none1031 #import_checksums1032 with import_checksums1033 returns the right checksums1034 without import_state1035 returns empty hash1036 #jira_import_status1037 when no jira imports1038 returns none1039 when there are jira imports1040 when latest import status is initial or jira imports are mising1041 returns initial1042 when latest import status is scheduled1043 returns scheduled1044 #human_import_status_name1045 with import_state1046 returns the right human import status1047 without import_state1048 returns none1049 #beautified_import_status_name1050 when import not finished1051 returns the right beautified import status1052 when import is finished1053 when import is partially completed1054 returns partially completed1055 when import is fully completed1056 returns completed1057 #add_import_job1058 forked1059 schedules a RepositoryForkWorker job1060 without repository1061 schedules RepositoryImportWorker1062 not forked1063 schedules a RepositoryImportWorker job1064 jira import1065 schedules a jira import job1066 #jira_import?1067 is expected to equal true1068 is expected to equal true1069 #github_import?1070 is expected to equal true1071 #github_enterprise_import?1072 is expected to equal true1073 is expected to equal false1074 is expected to equal true1075 is expected to equal true1076 #remove_import_data1077 when jira import1078 does remove import data1079 when neither a mirror nor a jira import1080 removes import data1081 #gitlab_project_import?1082 is expected to equal true1083 #gitea_import?1084 is expected to equal true1085 #has_remote_mirror?1086 returns true when a remote mirror is enabled1087 returns false when remote mirror is disabled1088 #update_remote_mirrors1089 syncs enabled remote mirror1090 does nothing when remote mirror is disabled globally and not overridden1091 does not sync disabled remote mirrors1092 #remote_mirror_available?1093 when remote mirror global setting is enabled1094 returns true1095 when remote mirror global setting is disabled1096 returns true when overridden1097 returns false when not overridden1098 #mark_stuck_remote_mirrors_as_failed!1099 fails stuck remote mirrors1100 #ancestors1101 group ancestory1102 behaves like project with group ancestors1103 returns all ancestors1104 behaves like project with ordered group ancestors1105 returns ancestors ordered by descending hierarchy1106 namespace ancestry1107 is expected to be empty1108 #ancestors_upto1109 group ancestry1110 includes ancestors upto but excluding the given ancestor1111 behaves like project with group ancestors1112 returns all ancestors1113 behaves like project with ordered group ancestors1114 returns ancestors ordered by descending hierarchy1115 with hierarchy_order1116 can be used with upto option1117 namespace ancestry1118 is expected to be empty1119 #root_ancestor1120 is expected to eq #<Namespaces::UserNamespace id:1 @namespace1>1121 in a group1122 is expected to eq #<Group id:413 @group53>1123 in a nested group1124 is expected to eq #<Group id:416 @group54>1125 #emails_disabled?1126 is the opposite of emails_disabled1127 #lfs_enabled?1128 LFS disabled in group1129 behaves like project overrides group1130 returns true when enabled in project1131 returns false when disabled in project1132 returns the value from the namespace, when no value is set in project1133 LFS enabled in group1134 behaves like project overrides group1135 returns true when enabled in project1136 returns false when disabled in project1137 returns the value from the namespace, when no value is set in project1138 LFS disabled globally1139 when no values are set1140 behaves like it always returns false1141 is expected to be falsey1142 when all values are set to true1143 behaves like it always returns false1144 is expected to be falsey1145 #after_repository_change_head1146 updates commit count1147 reloads the default branch1148 #after_change_head_branch_does_not_exist1149 adds an error to container if branch does not exist1150 #lfs_objects_for_repository_types1151 returns LFS objects of the specified type only1152 forks1153 #fork_network1154 includes a fork of the project1155 includes a fork of a fork1156 includes sibling forks1157 includes the base project1158 #in_fork_network_of?1159 is true for a real fork1160 is true for a fork of a fork1161 is true for sibling forks1162 is false when another project is given1163 #fork_source1164 returns the direct source if it exists1165 returns the root of the fork network when the directs source was deleted1166 returns nil if it is the root of the fork network1167 #forks1168 includes direct forks of the project1169 #lfs_object_oids_from_fork_source1170 when fork has one of two LFS objects1171 returns OIDs of owned LFS objects1172 returns empty when project is not a fork1173 behaves like can housekeep repository1174 with a clean redis state1175 #pushes_since_gc1176 without any pushes1177 returns 01178 with a number of pushes1179 returns the number of pushes1180 #increment_pushes_since_gc1181 increments the number of pushes since the last GC1182 #reset_pushes_since_gc1183 resets the number of pushes since the last GC1184 #pushes_since_gc_redis_shared_state_key1185 returns the proper redis key format1186 #git_garbage_collect_worker_klass1187 defines a git gargabe collect worker1188 #deployment_variables1189 when the deployment platform is stubbed1190 when project has a deployment platform1191 is expected to eq ["platform", "variables"]1192 when project has no deployment platform1193 is expected to eq []1194 when project has a deployment platforms1195 when environment name is review/name1196 returns variables from this service1197 when environment name is other1198 returns variables from this service1199 #default_environment1200 returns production environment when it exists1201 returns first environment when no production environment exists1202 returns nil when no available environment exists1203 #any_lfs_file_locks?1204 returns false when there are no LFS file locks1205 returns a cached true when there are LFS file locks1206 #protected_for?1207 when ref is nil1208 returns false1209 when ref is ref name1210 when ref is ambiguous1211 raises an error1212 when the ref is not protected1213 behaves like ref is not protected1214 returns false1215 when the ref is a protected branch1216 behaves like ref is protected branch1217 returns true1218 when the ref is a protected tag1219 behaves like ref is protected tag1220 returns true1221 when ref does not exist1222 returns false1223 when ref is full ref1224 when the ref is not protected1225 behaves like ref is not protected1226 returns false1227 when the ref is a protected branch1228 behaves like ref is protected branch1229 returns true1230 when the ref is a protected tag1231 behaves like ref is protected tag1232 returns true1233 when branch ref name is a full tag ref1234 when ref is not protected1235 returns false1236 when ref is a protected branch1237 returns true1238 when ref does not exist1239 returns false1240 #update_project_statistics1241 is called after creation1242 copies the namespace_id1243 updates the namespace_id when changed1244 inside_path1245 returns correct project1246 #route_map_for1247 when there is a .gitlab/route-map.yml at the commit1248 when the route map is valid1249 returns a route map1250 when the route map is invalid1251 returns nil1252 when there is no .gitlab/route-map.yml at the commit1253 returns nil1254 #public_path_for_source_path1255 when there is a route map1256 returns a public path with a leading slash unmodified1257 when the source path is mapped1258 returns the public path1259 when the source path is not mapped1260 returns nil1261 when there is no route map1262 returns nil1263 #parent1264 is expected to eq #<Namespaces::UserNamespace id:1 @namespace1>1265 #parent_id1266 is expected to eq 11267 #parent_changed?1268 is expected to be truthy1269 #default_merge_request_target1270 when mr_default_target_self is set to true1271 returns the current project1272 when merge request can not target upstream1273 returns the current project1274 when merge request can target upstream1275 returns the source project1276 #mr_can_target_upstream?1277 when forked from a more visible project1278 can not target the upstream project1279 when forked from a project with disabled merge requests1280 can not target the upstream project1281 when forked from a project with enabled merge requests1282 can target the upstream project1283 when not forked1284 can not target the upstream project1285 #lfs_http_url_to_repo1286 when a custom HTTP clone URL root is not set1287 returns the url to the repo without a username1288 when a custom HTTP clone URL root is set1289 returns the url to the repo, with the root replaced with the custom one1290 #pipeline_status1291 builds a pipeline status1292 hase a loaded pipeline status1293 #update1294 validates the visibility1295 does not validate the visibility1296 when validating if path already exist as pages unique domain1297 rejects paths that match pages unique domain1298 accepts path when the host does not match1299 accepts path when the domain does not match1300 #last_repository_updated_at1301 sets to created_at upon creation1302 .public_or_visible_to_user1303 with a user1304 includes projects the user has access to1305 includes projects the user can see1306 without a user1307 only includes public projects1308 min_access_level1309 excludes projects when user does not have required minimum access level1310 with deploy token users1311 deploy token user without project1312 is expected to eq []1313 deploy token user with projects1314 is expected to contain exactly #<Project id:400 namespace1/project-501>>, #<Project id:401 namespace1/project-502>>, and #<Project id:402 namespace1/project-503>>1315 with chained filter1316 is expected to contain exactly #<Project id:400 namespace1/project-501>> and #<Project id:401 namespace1/project-502>>1317 .ids_with_issuables_available_for1318 returns project ids with milestones available for user1319 .with_feature_available_for_user1320 with user1321 behaves like feature disabled1322 does not return projects with the project feature disabled1323 behaves like feature public1324 returns projects with the project feature public1325 behaves like feature enabled1326 returns projects with the project feature enabled1327 behaves like feature access level is nil1328 returns projects with the project feature access level nil1329 when feature is private1330 when user does not have access to the feature1331 does not return projects with the project feature private1332 when user has access to the feature1333 returns projects with the project feature private1334 user is an admin1335 behaves like feature disabled1336 does not return projects with the project feature disabled1337 behaves like feature public1338 returns projects with the project feature public1339 behaves like feature enabled1340 returns projects with the project feature enabled1341 behaves like feature access level is nil1342 returns projects with the project feature access level nil1343 when feature is private1344 when admin mode is enabled1345 returns projects with the project feature private1346 when admin mode is disabled1347 does not return projects with the project feature private1348 without user1349 behaves like feature disabled1350 does not return projects with the project feature disabled1351 behaves like feature public1352 returns projects with the project feature public1353 behaves like feature enabled1354 returns projects with the project feature enabled1355 behaves like feature access level is nil1356 returns projects with the project feature access level nil1357 when feature is private1358 does not return projects with the project feature private1359 .filter_by_feature_visibility1360 with reporter level access1361 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11362 behaves like filter respects visibility1363 respects visibility1364 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11365 behaves like filter respects visibility1366 respects visibility1367 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11368 behaves like filter respects visibility1369 respects visibility1370 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11371 behaves like filter respects visibility1372 respects visibility1373 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11374 behaves like filter respects visibility1375 respects visibility1376 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11377 behaves like filter respects visibility1378 respects visibility1379 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11380 behaves like filter respects visibility1381 respects visibility1382 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01383 behaves like filter respects visibility1384 respects visibility1385 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11386 behaves like filter respects visibility1387 respects visibility1388 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01389 behaves like filter respects visibility1390 respects visibility1391 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01392 behaves like filter respects visibility1393 respects visibility1394 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01395 behaves like filter respects visibility1396 respects visibility1397 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01398 behaves like filter respects visibility1399 respects visibility1400 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01401 behaves like filter respects visibility1402 respects visibility1403 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01404 behaves like filter respects visibility1405 respects visibility1406 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01407 behaves like filter respects visibility1408 respects visibility1409 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11410 behaves like filter respects visibility1411 respects visibility1412 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11413 behaves like filter respects visibility1414 respects visibility1415 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11416 behaves like filter respects visibility1417 respects visibility1418 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11419 behaves like filter respects visibility1420 respects visibility1421 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11422 behaves like filter respects visibility1423 respects visibility1424 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01425 behaves like filter respects visibility1426 respects visibility1427 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11428 behaves like filter respects visibility1429 respects visibility1430 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01431 behaves like filter respects visibility1432 respects visibility1433 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11434 behaves like filter respects visibility1435 respects visibility1436 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01437 behaves like filter respects visibility1438 respects visibility1439 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01440 behaves like filter respects visibility1441 respects visibility1442 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01443 behaves like filter respects visibility1444 respects visibility1445 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01446 behaves like filter respects visibility1447 respects visibility1448 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01449 behaves like filter respects visibility1450 respects visibility1451 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01452 behaves like filter respects visibility1453 respects visibility1454 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01455 behaves like filter respects visibility1456 respects visibility1457 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11458 behaves like filter respects visibility1459 respects visibility1460 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01461 behaves like filter respects visibility1462 respects visibility1463 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11464 behaves like filter respects visibility1465 respects visibility1466 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01467 behaves like filter respects visibility1468 respects visibility1469 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01470 behaves like filter respects visibility1471 respects visibility1472 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01473 behaves like filter respects visibility1474 respects visibility1475 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01476 behaves like filter respects visibility1477 respects visibility1478 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01479 behaves like filter respects visibility1480 respects visibility1481 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01482 behaves like filter respects visibility1483 respects visibility1484 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01485 behaves like filter respects visibility1486 respects visibility1487 with feature issues1488 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11489 behaves like filter respects visibility1490 respects visibility1491 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11492 behaves like filter respects visibility1493 respects visibility1494 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11495 behaves like filter respects visibility1496 respects visibility1497 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11498 behaves like filter respects visibility1499 respects visibility1500 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11501 behaves like filter respects visibility1502 respects visibility1503 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11504 behaves like filter respects visibility1505 respects visibility1506 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11507 behaves like filter respects visibility1508 respects visibility1509 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01510 behaves like filter respects visibility1511 respects visibility1512 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11513 behaves like filter respects visibility1514 respects visibility1515 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11516 behaves like filter respects visibility1517 respects visibility1518 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01519 behaves like filter respects visibility1520 respects visibility1521 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01522 behaves like filter respects visibility1523 respects visibility1524 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01525 behaves like filter respects visibility1526 respects visibility1527 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01528 behaves like filter respects visibility1529 respects visibility1530 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01531 behaves like filter respects visibility1532 respects visibility1533 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01534 behaves like filter respects visibility1535 respects visibility1536 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11537 behaves like filter respects visibility1538 respects visibility1539 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11540 behaves like filter respects visibility1541 respects visibility1542 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11543 behaves like filter respects visibility1544 respects visibility1545 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11546 behaves like filter respects visibility1547 respects visibility1548 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11549 behaves like filter respects visibility1550 respects visibility1551 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01552 behaves like filter respects visibility1553 respects visibility1554 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11555 behaves like filter respects visibility1556 respects visibility1557 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01558 behaves like filter respects visibility1559 respects visibility1560 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11561 behaves like filter respects visibility1562 respects visibility1563 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11564 behaves like filter respects visibility1565 respects visibility1566 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01567 behaves like filter respects visibility1568 respects visibility1569 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01570 behaves like filter respects visibility1571 respects visibility1572 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01573 behaves like filter respects visibility1574 respects visibility1575 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01576 behaves like filter respects visibility1577 respects visibility1578 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01579 behaves like filter respects visibility1580 respects visibility1581 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01582 behaves like filter respects visibility1583 respects visibility1584 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11585 behaves like filter respects visibility1586 respects visibility1587 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01588 behaves like filter respects visibility1589 respects visibility1590 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11591 behaves like filter respects visibility1592 respects visibility1593 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11594 behaves like filter respects visibility1595 respects visibility1596 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01597 behaves like filter respects visibility1598 respects visibility1599 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01600 behaves like filter respects visibility1601 respects visibility1602 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01603 behaves like filter respects visibility1604 respects visibility1605 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01606 behaves like filter respects visibility1607 respects visibility1608 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01609 behaves like filter respects visibility1610 respects visibility1611 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01612 behaves like filter respects visibility1613 respects visibility1614 with feature wiki1615 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11616 behaves like filter respects visibility1617 respects visibility1618 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11619 behaves like filter respects visibility1620 respects visibility1621 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11622 behaves like filter respects visibility1623 respects visibility1624 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11625 behaves like filter respects visibility1626 respects visibility1627 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11628 behaves like filter respects visibility1629 respects visibility1630 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11631 behaves like filter respects visibility1632 respects visibility1633 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11634 behaves like filter respects visibility1635 respects visibility1636 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01637 behaves like filter respects visibility1638 respects visibility1639 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11640 behaves like filter respects visibility1641 respects visibility1642 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11643 behaves like filter respects visibility1644 respects visibility1645 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01646 behaves like filter respects visibility1647 respects visibility1648 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01649 behaves like filter respects visibility1650 respects visibility1651 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01652 behaves like filter respects visibility1653 respects visibility1654 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01655 behaves like filter respects visibility1656 respects visibility1657 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01658 behaves like filter respects visibility1659 respects visibility1660 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01661 behaves like filter respects visibility1662 respects visibility1663 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11664 behaves like filter respects visibility1665 respects visibility1666 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11667 behaves like filter respects visibility1668 respects visibility1669 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11670 behaves like filter respects visibility1671 respects visibility1672 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11673 behaves like filter respects visibility1674 respects visibility1675 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11676 behaves like filter respects visibility1677 respects visibility1678 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01679 behaves like filter respects visibility1680 respects visibility1681 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11682 behaves like filter respects visibility1683 respects visibility1684 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01685 behaves like filter respects visibility1686 respects visibility1687 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11688 behaves like filter respects visibility1689 respects visibility1690 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11691 behaves like filter respects visibility1692 respects visibility1693 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01694 behaves like filter respects visibility1695 respects visibility1696 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01697 behaves like filter respects visibility1698 respects visibility1699 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01700 behaves like filter respects visibility1701 respects visibility1702 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01703 behaves like filter respects visibility1704 respects visibility1705 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01706 behaves like filter respects visibility1707 respects visibility1708 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01709 behaves like filter respects visibility1710 respects visibility1711 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11712 behaves like filter respects visibility1713 respects visibility1714 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01715 behaves like filter respects visibility1716 respects visibility1717 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11718 behaves like filter respects visibility1719 respects visibility1720 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11721 behaves like filter respects visibility1722 respects visibility1723 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01724 behaves like filter respects visibility1725 respects visibility1726 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01727 behaves like filter respects visibility1728 respects visibility1729 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01730 behaves like filter respects visibility1731 respects visibility1732 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01733 behaves like filter respects visibility1734 respects visibility1735 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01736 behaves like filter respects visibility1737 respects visibility1738 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01739 behaves like filter respects visibility1740 respects visibility1741 with feature code1742 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11743 behaves like filter respects visibility1744 respects visibility1745 project_level: :public, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11746 behaves like filter respects visibility1747 respects visibility1748 project_level: :public, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11749 behaves like filter respects visibility1750 respects visibility1751 project_level: :public, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11752 behaves like filter respects visibility1753 respects visibility1754 project_level: :public, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11755 behaves like filter respects visibility1756 respects visibility1757 project_level: :public, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 11758 behaves like filter respects visibility1759 respects visibility1760 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11761 behaves like filter respects visibility1762 respects visibility1763 project_level: :public, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01764 behaves like filter respects visibility1765 respects visibility1766 project_level: :public, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11767 behaves like filter respects visibility1768 respects visibility1769 project_level: :public, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11770 behaves like filter respects visibility1771 respects visibility1772 project_level: :public, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01773 behaves like filter respects visibility1774 respects visibility1775 project_level: :public, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01776 behaves like filter respects visibility1777 respects visibility1778 project_level: :public, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01779 behaves like filter respects visibility1780 respects visibility1781 project_level: :public, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01782 behaves like filter respects visibility1783 respects visibility1784 project_level: :public, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01785 behaves like filter respects visibility1786 respects visibility1787 project_level: :public, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01788 behaves like filter respects visibility1789 respects visibility1790 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: true, expected_count: 11791 behaves like filter respects visibility1792 respects visibility1793 project_level: :internal, feature_access_level: :enabled, membership: :admin, admin_mode: false, expected_count: 11794 behaves like filter respects visibility1795 respects visibility1796 project_level: :internal, feature_access_level: :enabled, membership: :reporter, admin_mode: nil, expected_count: 11797 behaves like filter respects visibility1798 respects visibility1799 project_level: :internal, feature_access_level: :enabled, membership: :guest, admin_mode: nil, expected_count: 11800 behaves like filter respects visibility1801 respects visibility1802 project_level: :internal, feature_access_level: :enabled, membership: :non_member, admin_mode: nil, expected_count: 11803 behaves like filter respects visibility1804 respects visibility1805 project_level: :internal, feature_access_level: :enabled, membership: :anonymous, admin_mode: nil, expected_count: 01806 behaves like filter respects visibility1807 respects visibility1808 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11809 behaves like filter respects visibility1810 respects visibility1811 project_level: :internal, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01812 behaves like filter respects visibility1813 respects visibility1814 project_level: :internal, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11815 behaves like filter respects visibility1816 respects visibility1817 project_level: :internal, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 11818 behaves like filter respects visibility1819 respects visibility1820 project_level: :internal, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01821 behaves like filter respects visibility1822 respects visibility1823 project_level: :internal, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01824 behaves like filter respects visibility1825 respects visibility1826 project_level: :internal, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01827 behaves like filter respects visibility1828 respects visibility1829 project_level: :internal, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01830 behaves like filter respects visibility1831 respects visibility1832 project_level: :internal, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01833 behaves like filter respects visibility1834 respects visibility1835 project_level: :internal, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01836 behaves like filter respects visibility1837 respects visibility1838 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: true, expected_count: 11839 behaves like filter respects visibility1840 respects visibility1841 project_level: :private, feature_access_level: :private, membership: :admin, admin_mode: false, expected_count: 01842 behaves like filter respects visibility1843 respects visibility1844 project_level: :private, feature_access_level: :private, membership: :reporter, admin_mode: nil, expected_count: 11845 behaves like filter respects visibility1846 respects visibility1847 project_level: :private, feature_access_level: :private, membership: :guest, admin_mode: nil, expected_count: 01848 behaves like filter respects visibility1849 respects visibility1850 project_level: :private, feature_access_level: :private, membership: :non_member, admin_mode: nil, expected_count: 01851 behaves like filter respects visibility1852 respects visibility1853 project_level: :private, feature_access_level: :private, membership: :anonymous, admin_mode: nil, expected_count: 01854 behaves like filter respects visibility1855 respects visibility1856 project_level: :private, feature_access_level: :disabled, membership: :reporter, admin_mode: nil, expected_count: 01857 behaves like filter respects visibility1858 respects visibility1859 project_level: :private, feature_access_level: :disabled, membership: :guest, admin_mode: nil, expected_count: 01860 behaves like filter respects visibility1861 respects visibility1862 project_level: :private, feature_access_level: :disabled, membership: :non_member, admin_mode: nil, expected_count: 01863 behaves like filter respects visibility1864 respects visibility1865 project_level: :private, feature_access_level: :disabled, membership: :anonymous, admin_mode: nil, expected_count: 01866 behaves like filter respects visibility1867 respects visibility1868 .wrap_with_cte1869 wrapped query matches original1870 #remove_private_deploy_keys1871 for a private deploy key1872 when the key is not linked to another project1873 removes the key1874 when the key is linked to another project1875 does not remove the key1876 for a public deploy key1877 does not remove the key1878 #remove_export1879 removes the export1880 with export1881 #export_file_exists? returns true1882 #export_archive_exists? returns false1883 #forks_count1884 returns the number of forks1885 #git_transfer_in_progress?1886 project_reference_counter: 0, wiki_reference_counter: 0, design_reference_counter: 0, result: false1887 is expected to equal false1888 project_reference_counter: 2, wiki_reference_counter: 0, design_reference_counter: 0, result: true1889 is expected to equal true1890 project_reference_counter: 0, wiki_reference_counter: 2, design_reference_counter: 0, result: true1891 is expected to equal true1892 project_reference_counter: 0, wiki_reference_counter: 0, design_reference_counter: 2, result: true1893 is expected to equal true1894 legacy storage1895 #base_dir1896 returns base_dir based on namespace only1897 #disk_path1898 returns disk_path based on namespace and project path1899 #legacy_storage?1900 returns true when storage_version is nil1901 returns true when the storage_version is 01902 #hashed_storage?1903 returns false1904 hashed storage1905 #legacy_storage?1906 returns false1907 #hashed_storage?1908 returns true if rolled out1909 returns false when not rolled out yet1910 #base_dir1911 returns base_dir based on hash of project id1912 #disk_path1913 returns disk_path based on hash of project id1914 #has_ci?1915 when has .gitlab-ci.yml1916 CI is available1917 when there is no .gitlab-ci.yml1918 CI is available1919 when auto devops is disabled1920 CI is not available1921 #predefined_project_variables1922 is expected to include nil1923 when ci config path is overridden1924 is expected to include nil1925 #dependency_proxy_variables1926 when dependency_proxy is enabled1927 contains the downcased name1928 when dependency_proxy is disabled1929 is expected to be empty1930 #auto_devops_enabled?1931 when explicitly enabled1932 is expected to be truthy1933 when explicitly disabled1934 is expected to be falsey1935 when enabled in settings1936 is expected to be truthy1937 when disabled in settings1938 is expected to be falsey1939 when explicitly enabled1940 is expected to be truthy1941 when explicitly disabled1942 is expected to be falsey1943 when force_autodevops_on_by_default is enabled for the project1944 is expected to be truthy1945 with group parents1946 when enabled on parent1947 when auto devops instance enabled1948 is expected to be truthy1949 when auto devops instance disabled1950 is expected to be truthy1951 when disabled on parent1952 when auto devops instance enabled1953 is expected to be falsy1954 when auto devops instance disabled1955 is expected to be falsy1956 when enabled on root parent1957 when auto devops instance enabled1958 is expected to be truthy1959 when auto devops instance disabled1960 is expected to be truthy1961 when explicitly disabled on parent1962 is expected to be falsy1963 when disabled on root parent1964 when auto devops instance enabled1965 is expected to be falsy1966 when auto devops instance disabled1967 is expected to be falsy1968 when explicitly disabled on parent1969 is expected to be falsy1970 #has_auto_devops_implicitly_enabled?1971 when disabled in settings1972 does not have auto devops implicitly disabled1973 when enabled in settings1974 auto devops is implicitly disabled1975 when explicitly disabled1976 does not have auto devops implicitly disabled1977 when explicitly enabled1978 does not have auto devops implicitly disabled1979 when enabled on group1980 has auto devops implicitly enabled1981 when enabled on parent group1982 has auto devops implicitly enabled1983 #has_auto_devops_implicitly_disabled?1984 when explicitly disabled1985 does not have auto devops implicitly disabled1986 when explicitly enabled1987 does not have auto devops implicitly disabled1988 when enabled in settings1989 does not have auto devops implicitly disabled1990 when disabled in settings1991 auto devops is implicitly disabled1992 when force_autodevops_on_by_default is enabled for the project1993 does not have auto devops implicitly disabled1994 when disabled on group1995 has auto devops implicitly disabled1996 when disabled on parent group1997 has auto devops implicitly disabled1998 #api_variables1999 exposes API v4 URL2000 exposes API GraphQL URL2001 contains a URL variable for every supported API version2002 #latest_successful_builds_for2003 without a ref2004 returns a pipeline for the default branch2005 with the ref set to the default branch2006 returns a pipeline for the default branch2007 with a ref that is not the default branch2008 returns the latest successful pipeline for the given ref2009 #check_repository_path_availability2010 when the repository already exists2011 returns false when repository already exists2012 when the repository does not exist2013 returns false when repository already exists2014 skips gitlab-shell exists?2015 #latest_successful_pipeline_for_default_branch2016 memoizes and returns the latest successful pipeline for the default branch2017 #after_import2018 runs the correct hooks2019 project authorizations refresh2020 updates user authorizations2021 branch protection2022 does not protect when branch protection is disabled2023 gives developer access to push when branch protection is set to 'developers can push'2024 gives developer access to merge when branch protection is set to 'developers can merge'2025 protects default branch2026 project target platforms detection2027 calls enqueue_record_project_target_platforms2028 #update_project_counter_caches2029 updates all project counter caches2030 #set_full_path2031 writes full path in .git/config when key is missing2032 updates full path in .git/config when key is present2033 does not raise an error with an empty repository2034 #default_branch2035 with default_branch_name2036 instance_branch: "", root_group_branch: nil, project_group_branch: nil, project_branch: nil2037 is expected to eq nil2038 instance_branch: nil, root_group_branch: nil, project_group_branch: nil, project_branch: nil2039 is expected to eq nil2040 instance_branch: "main", root_group_branch: nil, project_group_branch: nil, project_branch: "main"2041 is expected to eq "main"2042 instance_branch: "main", root_group_branch: "root_branch", project_group_branch: nil, project_branch: "root_branch"2043 is expected to eq "root_branch"2044 instance_branch: "main", root_group_branch: "root_branch", project_group_branch: "group_branch", project_branch: "group_branch"2045 is expected to eq "group_branch"2046 #to_ability_name2047 returns project2048 #execute_hooks2049 executes active projects hooks with the specified scope2050 does not execute project hooks that dont match the specified scope2051 does not execute project hooks which are not active2052 executes hooks which were backed off and are no longer backed off2053 executes the system hooks with the specified scope2054 executes the system hooks when inside a transaction2055 #execute_integrations2056 executes integrations with the specified scope2057 does not execute integration that don't match the specified scope2058 does not trigger extra queries when called multiple times2059 with a CI integration2060 executes the integrations2061 and skipping ci2062 does not execute ci integrations2063 #has_active_hooks?2064 is expected to eq false2065 returns true when a matching push hook exists2066 returns true when a matching system hook exists2067 returns true when a plugin exists2068 with :emoji_hooks scope2069 returns true when a matching emoji hook exists2070 #has_active_integrations?2071 is expected to eq false2072 returns true when a matching service exists2073 caches matching integrations2074 #badges2075 returns the project and the project group badges2076 with nested_groups2077 returns the project and the project nested groups badges2078 with cross internal project merge requests2079 does not endlessly loop for internal projects with MRs to each other2080 #branch_allows_collaboration?2081 when there are open merge requests that have their source/target branches point to each other2082 when user is a developer2083 behaves like successful check2084 does not go into an infinite loop2085 when user is a reporter2086 behaves like successful check2087 does not go into an infinite loop2088 when user is a guest2089 behaves like successful check2090 does not go into an infinite loop2091 with cross project merge requests2092 #merge_requests_allowing_push_to_user2093 returns open merge requests for which the user has developer access to the target project2094 does not include merge requests for guest users2095 does not include the merge request for other users2096 is empty when no user is passed2097 when the merge requests are closed2098 does not include closed merge requests2099 #any_branch_allows_collaboration?2100 when there is an open merge request allowing collaboration2101 allows access2102 when the merge request author is not allowed to push_code2103 returns false2104 when the merge request is closed2105 returns false2106 when the merge request is merged2107 returns false2108 #branch_allows_collaboration?2109 allows access if the user can merge the merge request2110 does not allow guest users access2111 does not allow access to branches for which the merge request was closed2112 does not allow access if the user cannot merge the merge request2113 when the requeststore is active2114 only queries per project across instances2115 when the merge request author is not allowed to push_code2116 returns false2117 #external_authorization_classification_label2118 falls back to the default when none is configured2119 returns the classification label if it was configured on the project2120 #pages_https_only?2121 when HTTPS pages are disabled2122 is expected not to be pages https only2123 when HTTPS pages are enabled2124 is expected to be pages https only2125 #pages_https_only? validation2126 when no domains are associated2127 is expected to be valid2128 when domains including keys and certificates are associated2129 is expected to be valid2130 when domains including no keys or certificates are associated2131 is expected not to be valid2132 #toggle_ci_cd_settings!2133 toggles the value on #settings2134 #gitlab_deploy_token2135 when there is a gitlab deploy token associated2136 is expected to eq #<DeployToken id: 7, revoked: false, read_repository: true, read_registry: true, expires_at: "2023-11...write_registry: false, read_package_registry: false, write_package_registry: false, creator_id: nil>2137 when there is no a gitlab deploy token associated2138 is expected to be nil2139 when there is a gitlab deploy token associated but is has been revoked2140 is expected to be nil2141 when there is a gitlab deploy token associated but it is expired2142 is expected to be nil2143 when there is a deploy token associated with a different name2144 is expected to be nil2145 when there is a deploy token associated to a different project2146 is expected to be nil2147 when the project group has a gitlab deploy token associated2148 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>2149 when the project and its group has a gitlab deploy token associated2150 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>2151 with uploads2152 behaves like model with uploads2153 .destroy2154 with mounted uploader2155 deletes remote uploads2156 with not mounted uploads2157 with local files2158 deletes any FileUploader uploads which are not mounted2159 deletes local files2160 with remote files2161 deletes any FileUploader uploads which are not mounted2162 deletes remote files2163 #members_among2164 when users is an Array2165 returns project members among the users2166 maintains input order2167 returns empty array if users is empty2168 when users is a relation2169 returns project members among the users2170 returns empty relation if users is empty2171 #find_or_initialize_integrations2172 avoids N+1 database queries2173 avoids N+1 database queries with more available integrations2174 with disabled integrations2175 returns only enabled integrations sorted2176 #disabled_integrations2177 is expected to include "gitlab_slack_application"2178 is expected not to include "slack_slash_commands"2179 when slack_app_enabled setting is enabled2180 is expected to include "slack_slash_commands"2181 is expected not to include "gitlab_slack_application"2182 when Rails.env.development?2183 is expected not to include "slack_slash_commands"2184 is expected not to include "gitlab_slack_application"2185 #find_or_initialize_integration2186 avoids N+1 database queries2187 returns nil if integration is disabled2188 returns nil if integration does not exist2189 with an existing integration2190 retrieves the integration2191 with an instance-level integration2192 builds the integration from the instance integration2193 without an existing integration or instance-level2194 builds the integration2195 .for_group2196 returns the projects for a given group2197 .for_group_and_its_ancestor_groups2198 returns projects for group and its ancestors2199 .pending_data_repair_analysis2200 returns projects that are not in ContainerRegistry::DataRepairDetail2201 .with_package_registry_enabled2202 returns projects with the package registry enabled2203 .deployments2204 when there is a deployment record with created status2205 does not return the record2206 when there is a deployment record with running status2207 does not return the record2208 when there is a deployment record with success status2209 returns the record2210 #snippets_visible?2211 returns true when a logged in user can read snippets2212 returns true when an anonymous user can read snippets2213 returns false when a user can not read snippets2214 #all_clusters2215 returns project level cluster2216 project belongs to a group2217 returns clusters for groups of this project2218 project is hosted on instance with integrated cluster2219 returns all available clusters for this project2220 #object_pool_params2221 when the objects cannot be pooled2222 is expected to be empty2223 when a pool is created2224 returns that pool repository2225 #git_objects_poolable?2226 when not using hashed storage2227 is expected not to be git objects poolable2228 when the project is private2229 is expected not to be git objects poolable2230 when the project is public2231 is expected to be git objects poolable2232 when the project is internal2233 is expected to be git objects poolable2234 when objects are poolable2235 is expected to be git objects poolable2236 #swap_pool_repository!2237 moves project to the new pool repository2238 when feature flag replicate_object_pool_on_move is disabled2239 behaves like no pool repository swap2240 does not change pool repository for the project2241 when repository does not exist2242 behaves like no pool repository swap2243 does not change pool repository for the project2244 when project does not have a pool repository2245 behaves like no pool repository swap2246 does not change pool repository for the project2247 when project pool is on the same shard as repository2248 behaves like no pool repository swap2249 does not change pool repository for the project2250 when pool repository for shard is missing2251 raises record not found error2252 when pool repository has a different disk path2253 raises record not found error2254 #leave_pool_repository2255 removes the membership and disconnects alternates2256 when the project is pending delete2257 removes the membership and does not disconnect alternates2258 #link_pool_repository2259 links pool repository to project repository2260 when pool repository is missing2261 does not link anything2262 when pool repository is on the different shard as project repository2263 does not link anything2264 when feature flag replicate_object_pool_on_move is disabled2265 links pool repository to project repository2266 #check_personal_projects_limit2267 when creating a project for a group2268 does nothing2269 when the user is not allowed to create a personal project2270 when the project limit is zero2271 adds a validation error2272 when the project limit is greater than zero2273 adds a validation error2274 when the user is allowed to create personal projects2275 does nothing2276 validation #changing_shared_runners_enabled_is_allowed2277 shared_runners_setting: :shared_runners_enabled, project_shared_runners_enabled: true, valid_record: true2278 validates the configuration2279 shared_runners_setting: :shared_runners_enabled, project_shared_runners_enabled: false, valid_record: true2280 validates the configuration2281 shared_runners_setting: :shared_runners_disabled_and_overridable, project_shared_runners_enabled: true, valid_record: true2282 validates the configuration2283 shared_runners_setting: :shared_runners_disabled_and_overridable, project_shared_runners_enabled: false, valid_record: true2284 validates the configuration2285 shared_runners_setting: :shared_runners_disabled_and_unoverridable, project_shared_runners_enabled: true, valid_record: false2286 validates the configuration2287 shared_runners_setting: :shared_runners_disabled_and_unoverridable, project_shared_runners_enabled: false, valid_record: true2288 validates the configuration2289 #mark_pages_onboarding_complete2290 creates new record and sets onboarding_complete to true if none exists yet2291 overrides an existing setting2292 #has_pool_repository?2293 returns false when it does not have a pool repository2294 returns true when it has a pool repository2295 #access_request_approvers_to_be_notified2296 for a personal project2297 behaves like returns active, non_invited, non_requested owners/maintainers of the project2298 is expected to contain exactly #<ProjectMember id: 686, access_level: 40, source_id: 568, source_type: "Project", user_id: 359, noti...invite_email_success: true, member_namespace_id: 1067, member_role_id: nil, expiry_notified_at: nil> and #<ProjectMember id: 685, access_level: 50, source_id: 568, source_type: "Project", user_id: 1, notifi...invite_email_success: true, member_namespace_id: 1067, member_role_id: nil, expiry_notified_at: nil>2299 for a project in a group2300 returns a maximum of ten maintainers/owners of the project in recent_sign_in descending order2301 behaves like returns active, non_invited, non_requested owners/maintainers of the project2302 is expected to contain exactly #<ProjectMember id: 720, access_level: 40, source_id: 574, source_type: "Project", user_id: 378, noti...invite_email_success: true, member_namespace_id: 1081, member_role_id: nil, expiry_notified_at: nil> and #<ProjectMember id: 697, access_level: 50, source_id: 574, source_type: "Project", user_id: 366, noti...invite_email_success: true, member_namespace_id: 1081, member_role_id: nil, expiry_notified_at: nil>2303 .with_pages_deployed2304 returns only projects that have pages deployed2305 .pages_metadata_not_migrated2306 returns only projects that have pages deployed2307 #pages_variables2308 returns the pages variables2309 returns the pages variables2310 #closest_setting2311 when setting is of non-boolean type2312 global_setting: 100, group_setting: 200, project_setting: 300, result: 3002313 behaves like fetching closest setting2314 returns closest non-nil value2315 global_setting: 100, group_setting: 200, project_setting: nil, result: 2002316 behaves like fetching closest setting2317 returns closest non-nil value2318 global_setting: 100, group_setting: nil, project_setting: nil, result: 1002319 behaves like fetching closest setting2320 returns closest non-nil value2321 global_setting: nil, group_setting: nil, project_setting: nil, result: nil2322 behaves like fetching closest setting2323 returns closest non-nil value2324 when setting is of boolean type2325 global_setting: true, group_setting: true, project_setting: false, result: false2326 behaves like fetching closest setting2327 returns closest non-nil value2328 global_setting: true, group_setting: false, project_setting: nil, result: false2329 behaves like fetching closest setting2330 returns closest non-nil value2331 global_setting: true, group_setting: nil, project_setting: nil, result: true2332 behaves like fetching closest setting2333 returns closest non-nil value2334 #drop_visibility_level!2335 when has a group2336 when the group `visibility_level` is more strict2337 sets `visibility_level` value from the group2338 when the group `visibility_level` is less strict2339 does not change the value of the `visibility_level` field2340 when `restricted_visibility_levels` of the GitLab instance exist2341 when `visibility_level` is included into `restricted_visibility_levels`2342 sets `visibility_level` value to `PRIVATE`2343 when `restricted_visibility_levels` does not include `visibility_level`2344 does not change the value of the `visibility_level` field2345 #jira_subscription_exists?2346 jira connect subscription exists2347 is expected to eq true2348 with_issues_or_mrs_available_for_user2349 returns correct projects2350 #limited_protected_branches2351 returns limited number of protected branches based on specified limit2352 #group_protected_branches2353 returns protected branches of the group2354 when project belongs to namespace2355 returns empty relation2356 #all_protected_branches2357 when feature flag `group_protected_branches` enabled2358 return all protected branches2359 when feature flag `group_protected_branches` disabled2360 return only project-level protected branches2361 #lfs_objects_oids2362 when project has associated LFS objects2363 returns OIDs of LFS objects2364 lfs_objects_projects associations are deleted along with project2365 lfs_objects associations are unchanged when the assicated project is removed2366 and there are specified oids2367 returns OIDs of LFS objects that match specified oids2368 when project has no associated LFS objects2369 returns empty array2370 #prometheus_integration_active?2371 when project has an activated prometheus integration2372 is expected to be truthy2373 when project has an inactive prometheus integration2374 the integration is marked as inactive2375 #add_export_job2376 when project storage_size does not exceed the application setting max_export_size2377 starts project export worker2378 when project storage_size exceeds the application setting max_export_size2379 raises Project::ExportLimitExceeded2380 when application setting max_export_size is not set2381 starts project export worker2382 #export_in_progress?2383 when project export is enqueued2384 is expected to equal false2385 when project export is in progress2386 is expected to equal true2387 when project export is completed2388 is expected to equal false2389 #export_status2390 when project export is enqueued2391 is expected to eq :queued2392 when project export is in progress2393 is expected to eq :started2394 when project export is completed2395 is expected to eq :finished2396 when project export is being regenerated2397 is expected to eq :regeneration_in_progress2398 with Debian Distributions2399 behaves like model with Debian distributions2400 removes distribution files on removal2401 #environments_for_scope2402 retrieves all project environments when using the * wildcard2403 retrieves a specific project environment when using the name of that environment2404 #latest_jira_import2405 when no jira imports2406 returns nil2407 when single jira import2408 returns the jira import2409 when multiple jira imports2410 returns latest jira import by created_at2411 #packages_enabled2412 is expected to equal true2413 when packages_enabled is enabled2414 project_visibility: 0, expected_result: 102415 set package_registry_access_level to correct value2416 project_visibility: 10, expected_result: 202417 set package_registry_access_level to correct value2418 project_visibility: 20, expected_result: 302419 set package_registry_access_level to correct value2420 when packages_enabled is disabled2421 set package_registry_access_level to DISABLED2422 set package_registry_access_level to DISABLED2423 set package_registry_access_level to DISABLED2424 #related_group_ids2425 when associated with a namespace2426 only includes linked groups2427 when associated with a group2428 includes self, ancestors and linked groups2429 #has_namespaced_npm_packages?2430 with scope of the namespace path2431 is expected to equal true2432 without scope of the namespace path2433 is expected to equal false2434 without packages2435 is expected to equal false2436 #package_already_taken?2437 within the package project2438 package_name: "@test/bar", package_version: "1.2.3", expected_result: false2439 is expected to eq false2440 package_name: "@test/bar", package_version: "5.5.5", expected_result: false2441 is expected to eq false2442 package_name: "@test/foo", package_version: "1.2.3", expected_result: false2443 is expected to eq false2444 package_name: "@test/foo", package_version: "5.5.5", expected_result: false2445 is expected to eq false2446 within a different project2447 package_name: "@test/bar", package_version: "1.2.3", expected_result: false2448 is expected to eq false2449 package_name: "@test/bar", package_version: "5.5.5", expected_result: false2450 is expected to eq false2451 package_name: "@test/foo", package_version: "1.2.3", expected_result: true2452 is expected to eq true2453 package_name: "@test/foo", package_version: "5.5.5", expected_result: false2454 is expected to eq false2455 for a different package type2456 returns false2457 with a pending_destruction package2458 package_name: "@test/bar", package_version: "1.2.3", expected_result: false2459 is expected to eq false2460 package_name: "@test/bar", package_version: "5.5.5", expected_result: false2461 is expected to eq false2462 package_name: "@test/foo", package_version: "1.2.3", expected_result: false2463 is expected to eq false2464 package_name: "@test/foo", package_version: "5.5.5", expected_result: false2465 is expected to eq false2466 #design_management_enabled?2467 lfs_enabled: false, hashed_storage_enabled: false, expectation: false2468 is expected to equal false2469 lfs_enabled: true, hashed_storage_enabled: false, expectation: false2470 is expected to equal false2471 lfs_enabled: false, hashed_storage_enabled: true, expectation: false2472 is expected to equal false2473 lfs_enabled: true, hashed_storage_enabled: true, expectation: true2474 is expected to equal true2475 #parent_loaded?2476 is false when the parent is not loaded2477 is true when the parent is loaded2478 #bots2479 is expected to contain exactly #<User id:402 @user386>2480 is expected not to include #<User id:403 @user387>2481 #enabled_group_deploy_keys2482 when a project does not have a group2483 is expected to be empty2484 when a project has a parent group2485 and this group has a group deploy key enabled2486 is expected to contain exactly #<GroupDeployKey id: 1, user_id: 404, created_at: "2023-11-22 16:09:29.661566910 +0000", updated_at: ...ff:07:b8:fa:9a", fingerprint_sha256: "3ihBUFF3jB2UlbmVoqnQ2x0qOXLqcBNmblgcAgkOiwY", usage_type: nil>2487 and this group has parent group which also has a group deploy key enabled2488 returns both group deploy keys2489 and another group has a group deploy key enabled2490 does not return this group deploy key2491 #activity_path2492 returns the project activity_path2493 #default_branch_or_main2494 returns default branch2495 when default branch is nil2496 returns Gitlab::DefaultBranch.value2497 topics2498 topic_list returns correct string array2499 topics returns correct topic records2500 topic_list=2501 set topics if only the order is changed2502 does not persist topics before project is saved2503 does not update topics if project is not valid2504 does not add new topic if name is not unique (case insensitive)2505 topic_list: ["topicA", "topicB"], expected_result: ["topicA", "topicB"]2506 set topics2507 topic_list: ["topicB", "topicA"], expected_result: ["topicB", "topicA"]2508 set topics2509 topic_list: [" topicC ", " topicD "], expected_result: ["topicC", "topicD"]2510 set topics2511 topic_list: ["topicE", "topicF", "topicE"], expected_result: ["topicE", "topicF"]2512 set topics2513 topic_list: ["topicE ", "topicF", " topicE"], expected_result: ["topicE", "topicF"]2514 set topics2515 topic_list: "topicA, topicB", expected_result: ["topicA", "topicB"]2516 set topics2517 topic_list: "topicB, topicA", expected_result: ["topicB", "topicA"]2518 set topics2519 topic_list: " topicC , topicD ", expected_result: ["topicC", "topicD"]2520 set topics2521 topic_list: "topicE, topicF, topicE", expected_result: ["topicE", "topicF"]2522 set topics2523 topic_list: "topicE , topicF, topicE", expected_result: ["topicE", "topicF"]2524 set topics2525 public topics counter2526 initial_visibility: private, new_visibility: nil, new_topic_list: "t2, t3", expected_count_changes: [0, 0, 0]2527 increments or decrements counters of topics2528 initial_visibility: internal, new_visibility: nil, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2529 increments or decrements counters of topics2530 initial_visibility: public, new_visibility: nil, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2531 increments or decrements counters of topics2532 initial_visibility: private, new_visibility: public, new_topic_list: nil, expected_count_changes: [1, 1, 0]2533 increments or decrements counters of topics2534 initial_visibility: private, new_visibility: internal, new_topic_list: nil, expected_count_changes: [1, 1, 0]2535 increments or decrements counters of topics2536 initial_visibility: private, new_visibility: private, new_topic_list: nil, expected_count_changes: [0, 0, 0]2537 increments or decrements counters of topics2538 initial_visibility: internal, new_visibility: public, new_topic_list: nil, expected_count_changes: [0, 0, 0]2539 increments or decrements counters of topics2540 initial_visibility: internal, new_visibility: internal, new_topic_list: nil, expected_count_changes: [0, 0, 0]2541 increments or decrements counters of topics2542 initial_visibility: internal, new_visibility: private, new_topic_list: nil, expected_count_changes: [-1, -1, 0]2543 increments or decrements counters of topics2544 initial_visibility: public, new_visibility: public, new_topic_list: nil, expected_count_changes: [0, 0, 0]2545 increments or decrements counters of topics2546 initial_visibility: public, new_visibility: internal, new_topic_list: nil, expected_count_changes: [0, 0, 0]2547 increments or decrements counters of topics2548 initial_visibility: public, new_visibility: private, new_topic_list: nil, expected_count_changes: [-1, -1, 0]2549 increments or decrements counters of topics2550 initial_visibility: private, new_visibility: public, new_topic_list: "t2, t3", expected_count_changes: [0, 1, 1]2551 increments or decrements counters of topics2552 initial_visibility: private, new_visibility: internal, new_topic_list: "t2, t3", expected_count_changes: [0, 1, 1]2553 increments or decrements counters of topics2554 initial_visibility: private, new_visibility: private, new_topic_list: "t2, t3", expected_count_changes: [0, 0, 0]2555 increments or decrements counters of topics2556 initial_visibility: internal, new_visibility: public, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2557 increments or decrements counters of topics2558 initial_visibility: internal, new_visibility: internal, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2559 increments or decrements counters of topics2560 initial_visibility: internal, new_visibility: private, new_topic_list: "t2, t3", expected_count_changes: [-1, -1, 0]2561 increments or decrements counters of topics2562 initial_visibility: public, new_visibility: public, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2563 increments or decrements counters of topics2564 initial_visibility: public, new_visibility: internal, new_topic_list: "t2, t3", expected_count_changes: [-1, 0, 1]2565 increments or decrements counters of topics2566 initial_visibility: public, new_visibility: private, new_topic_list: "t2, t3", expected_count_changes: [-1, -1, 0]2567 increments or decrements counters of topics2568 #all_runners2569 behaves like all_runners2570 when shared runners are enabled for project2571 returns a list with all runners2572 when shared runners are disabled for project2573 returns a list without shared runners2574 when group runners are enabled for project2575 returns a list with all runners2576 when group runners are disabled for project2577 returns a list without group runners2578 #all_available_runners2579 behaves like all_runners2580 when shared runners are enabled for project2581 returns a list with all runners2582 when shared runners are disabled for project2583 returns a list without shared runners2584 when group runners are enabled for project2585 returns a list with all runners2586 when group runners are disabled for project2587 returns a list without group runners2588 #enforced_runner_token_expiration_interval and #effective_runner_token_expiration_interval2589 when there is no interval2590 behaves like no enforced expiration interval2591 is expected to be nil2592 behaves like no effective expiration interval2593 is expected to be nil2594 when there is a project interval2595 behaves like no enforced expiration interval2596 is expected to be nil2597 behaves like effective expiration interval2598 is expected to eq 3 days2599 when there is a site-wide enforced shared interval2600 behaves like no enforced expiration interval2601 is expected to be nil2602 behaves like no effective expiration interval2603 is expected to be nil2604 when there is a site-wide enforced group interval2605 behaves like no enforced expiration interval2606 is expected to be nil2607 behaves like no effective expiration interval2608 is expected to be nil2609 when there is a site-wide enforced project interval2610 behaves like enforced expiration interval2611 is expected to eq 5 days2612 behaves like effective expiration interval2613 is expected to eq 5 days2614 when there is a group-enforced group interval2615 behaves like no enforced expiration interval2616 is expected to be nil2617 behaves like no effective expiration interval2618 is expected to be nil2619 when there is a group-enforced subgroup interval2620 behaves like no enforced expiration interval2621 is expected to be nil2622 behaves like no effective expiration interval2623 is expected to be nil2624 when there is an owner group-enforced project interval2625 behaves like enforced expiration interval2626 is expected to eq 4 days2627 behaves like effective expiration interval2628 is expected to eq 4 days2629 when there is a grandparent group-enforced interval2630 behaves like enforced expiration interval2631 is expected to eq 3 days2632 behaves like effective expiration interval2633 is expected to eq 3 days2634 when there is a parent group-enforced interval overridden by group-enforced interval2635 behaves like enforced expiration interval2636 is expected to eq 4 days2637 behaves like effective expiration interval2638 is expected to eq 4 days2639 when site-wide enforced interval overrides project interval2640 behaves like enforced expiration interval2641 is expected to eq 3 days2642 behaves like effective expiration interval2643 is expected to eq 3 days2644 when project interval overrides site-wide enforced interval2645 has human-readable expiration intervals2646 behaves like enforced expiration interval2647 is expected to eq 5 days2648 behaves like effective expiration interval2649 is expected to eq 4 days2650 when site-wide enforced interval overrides group-enforced interval2651 behaves like enforced expiration interval2652 is expected to eq 3 days2653 behaves like effective expiration interval2654 is expected to eq 3 days2655 when group-enforced interval overrides site-wide enforced interval2656 behaves like enforced expiration interval2657 is expected to eq 4 days2658 behaves like effective expiration interval2659 is expected to eq 4 days2660 when group-enforced interval overrides project interval2661 behaves like enforced expiration interval2662 is expected to eq 3 days2663 behaves like effective expiration interval2664 is expected to eq 3 days2665 when project interval overrides group-enforced interval2666 behaves like enforced expiration interval2667 is expected to eq 5 days2668 behaves like effective expiration interval2669 is expected to eq 4 days2670 when there is an enforced project interval in an unrelated group2671 behaves like no enforced expiration interval2672 is expected to be nil2673 behaves like no effective expiration interval2674 is expected to be nil2675 when there is an enforced project interval in a subgroup2676 behaves like no enforced expiration interval2677 is expected to be nil2678 behaves like no effective expiration interval2679 is expected to be nil2680 behaves like it has loose foreign keys2681 has at least one loose foreign key definition2682 has the deletion trigger present2683 records record deletions2684 cleans up record deletions2685 Projects::SyncEvent2686 when creating the project2687 creates a projects_sync_event record2688 enqueues ProcessProjectSyncEventsWorker2689 when updating project namespace_id2690 creates a projects_sync_event record2691 enqueues ProcessProjectSyncEventsWorker2692 when updating project other attribute2693 creates a projects_sync_event record2694 in the same transaction2695 when updating different namespace_id2696 creates two projects_sync_event records2697 when updating the same namespace_id2698 creates one projects_sync_event record2699 .not_hidden2700 lists projects that are not hidden2701 #pending_delete_or_hidden?2702 pending_delete: true, hidden: false, expected_result: true2703 returns true if project is pending delete or hidden2704 pending_delete: true, hidden: true, expected_result: true2705 returns true if project is pending delete or hidden2706 pending_delete: false, hidden: true, expected_result: true2707 returns true if project is pending delete or hidden2708 pending_delete: false, hidden: false, expected_result: false2709 returns true if project is pending delete or hidden2710 #work_items_feature_flag_enabled?2711 behaves like checks parent group feature flag2712 when feature flag is disabled globally2713 is expected to be falsey2714 when feature flag is enabled globally2715 is expected to be truthy2716 when feature flag is enabled for the root group2717 is expected to be truthy2718 when feature flag is enabled for the group2719 is expected to be truthy2720 when feature flag is enabled for the project2721 when project belongs to a group2722 is expected to be truthy2723 when project does not belong to a group2724 is expected to be truthy2725 #work_items_mvc_feature_flag_enabled?2726 behaves like checks parent group feature flag2727 when feature flag is disabled globally2728 is expected to be falsey2729 when feature flag is enabled globally2730 is expected to be truthy2731 when feature flag is enabled for the root group2732 is expected to be truthy2733 when feature flag is enabled for the group2734 is expected to be truthy2735 #work_items_mvc_2_feature_flag_enabled?2736 behaves like checks parent group feature flag2737 when feature flag is disabled globally2738 is expected to be falsey2739 when feature flag is enabled globally2740 is expected to be truthy2741 when feature flag is enabled for the root group2742 is expected to be truthy2743 when feature flag is enabled for the group2744 is expected to be truthy2745 serialization2746 behaves like blocks unsafe serialization2747 blocks as_json2748 blocks to_json2749 #enqueue_record_project_target_platforms2750 enqueues a Projects::RecordTargetPlatformsWorker2751 when not in gitlab.com2752 behaves like does not enqueue a Projects::RecordTargetPlatformsWorker2753 does not enqueue a Projects::RecordTargetPlatformsWorker2754 #inactive?2755 behaves like returns true if project is inactive2756 storage_size: 1048576, last_activity_at: Sun, 22 Oct 2023 16:00:25.847180314 UTC +00:00, expected_result: false2757 returns expected result2758 storage_size: 1048576, last_activity_at: Sun, 22 Nov 2020 16:00:25.847641874 UTC +00:00, expected_result: false2759 returns expected result2760 storage_size: 8388608, last_activity_at: Sun, 22 Oct 2023 16:00:25.847828304 UTC +00:00, expected_result: false2761 returns expected result2762 storage_size: 8388608, last_activity_at: Sun, 22 Nov 2020 16:00:25.847947974 UTC +00:00, expected_result: true2763 returns expected result2764 .inactive2765 returns projects that are inactive2766 #refreshing_build_artifacts_size?2767 when project has no existing refresh record2768 is expected to be falsey2769 when project has existing refresh record2770 and refresh has not yet started2771 is expected to eq false2772 and refresh has started2773 is expected to eq true2774 #group_group_links2775 with group project2776 returns group links of group2777 with personal project2778 returns none2779 #security_training_available?2780 returns false2781 #packages_policy_subject2782 returns wrapper2783 #destroy_deployment_by_id2784 will call fast_destroy_all on a specific deployment by id2785 #can_create_custom_domains?2786 when max custom domain setting is set to 02787 is expected to equal true2788 when max custom domain setting is not set to 02789 is expected to equal false2790 #can_suggest_reviewers?2791 is expected to equal false2792 #suggested_reviewers_available?2793 is expected to equal false2794 .cascading_with_parent_namespace2795 behaves like cascading settings2796 return self value when no parent2797 return self value when unlocked2798 still return self value when locked subgroup2799 still return unlocked value when locked group2800 behaves like cascading settings2801 return self value when no parent2802 return self value when unlocked2803 still return self value when locked subgroup2804 still return unlocked value when locked group2805 behaves like cascading settings2806 return self value when no parent2807 return self value when unlocked2808 still return self value when locked subgroup2809 still return unlocked value when locked group2810 #archived2811 is expected to be falsey2812 is expected to be truthy2813 #resolve_outdated_diff_discussions2814 is expected to be falsey2815 when set explicitly2816 is expected to be truthy2817 #only_allow_merge_if_all_discussions_are_resolved2818 is expected to be falsey2819 when set explicitly2820 is expected to be truthy2821 #remove_source_branch_after_merge2822 is expected to be truthy2823 when set explicitly2824 is expected to be falsey2825 .is_importing2826 returns projects that have import in progress2827 .without_created_and_owned_by_banned_user2828 when project creator is not banned2829 includes the project2830 when project creator is banned2831 when project creator is also an owner2832 excludes the project2833 when project creator is not an owner2834 includes the project2835 #created_and_owned_by_banned_user?2836 when creator is banned2837 is expected to eq false2838 when creator is an owner2839 is expected to eq true2840 when creator is not banned2841 is expected to eq false2842 when there is no creator2843 is expected to eq false2844 behaves like something that has web-hooks2845 #any_hook_failed?2846 when there are no hooks2847 is expected to eq false2848 when there are hooks2849 is expected to eq false2850 when there is a failed hook2851 is expected to eq true2852 #cache_web_hook_failure2853 when no value is passed2854 stores the return value of #any_hook_failed? and passes it back2855 when a value is passed2856 stores the value and passes it back2857 #get_web_hook_failure2858 when no value is stored2859 is expected to be nil2860 when stored as true2861 is expected to eq true2862 when stored as false2863 is expected to eq false2864 #fetch_web_hook_failure2865 when a value has not been stored2866 calls #any_hook_failed?2867 when a value has been stored2868 does not call #any_hook_failed?2869 deprecated project attributes2870 project_attr: :wiki_enabled, project_method: :wiki_enabled?, project_feature_attr: :wiki_access_level2871 delegates the attributes to project feature2872 sets the default value2873 project_attr: :builds_enabled, project_method: :builds_enabled?, project_feature_attr: :builds_access_level2874 delegates the attributes to project feature2875 sets the default value2876 project_attr: :merge_requests_enabled, project_method: :merge_requests_enabled?, project_feature_attr: :merge_requests_access_level2877 delegates the attributes to project feature2878 sets the default value2879 project_attr: :issues_enabled, project_method: :issues_enabled?, project_feature_attr: :issues_access_level2880 delegates the attributes to project feature2881 sets the default value2882 project_attr: :snippets_enabled, project_method: :snippets_enabled?, project_feature_attr: :snippets_access_level2883 delegates the attributes to project feature2884 sets the default value2885 #supports_lock_on_merge?2886 behaves like checks self (project) and root ancestor feature flag2887 when FF is enabled for the root group2888 is expected to be truthy2889 when FF is enabled for the group2890 is expected to be truthy2891 when FF is enabled for the project2892 is expected to be truthy2893 when FF is disabled globally2894 is expected to be falsey2895 when FF is enabled globally2896 is expected to be truthy2897 with loose foreign key on organization_id2898 behaves like cleanup by a loose foreign key2899 cleans up (delete or nullify) the model2900 #update_catalog_resource2901 when the project name is updated2902 behaves like name, description, and visibility_level of the catalog resource match the project2903 is expected to eq 02904 when the project description is updated2905 behaves like name, description, and visibility_level of the catalog resource match the project2906 is expected to eq 02907 when the project visibility_level is updated2908 behaves like name, description, and visibility_level of the catalog resource match the project2909 is expected to eq 102910 when neither the project name, description, nor visibility_level are updated2911 does not call update_catalog_resource2912 when the project does not have a catalog resource2913 does not call update_catalog_resource2914 with loose foreign key on projects.creator_id2915 behaves like cleanup by a loose foreign key2916 cleans up (delete or nullify) the model2917Gitlab::GithubImport::UserFinder2918 #author_id_for2919 with default author_key2920 returns the user ID for the author of an object2921 returns the ID of the project creator if no user ID could be found2922 returns the ID of the ghost user when the object has no user2923 returns the ID of the ghost user when the given object is nil2924 with a non-default author_key2925 when the author_key parameter is :actor2926 behaves like user ID finder2927 returns the user ID for an object2928 when the author_key parameter is :assignee2929 behaves like user ID finder2930 returns the user ID for an object2931 when the author_key parameter is :requested_reviewer2932 behaves like user ID finder2933 returns the user ID for an object2934 when the author_key parameter is :review_requester2935 behaves like user ID finder2936 returns the user ID for an object2937 #assignee_id_for2938 returns the user ID for the assignee of an issuable2939 returns nil if the issuable does not have an assignee2940 #user_id_for2941 returns the user ID for the given user2942 does not fail with empty input2943 #find2944 without a cache2945 finds a GitLab user for a GitHub user ID2946 finds a GitLab user for a GitHub Email address2947 with a cache2948 returns the cached user ID2949 does not query the database if the cache key exists but is empty2950 #find_from_cache2951 retrieves a GitLab user ID for a GitHub user ID2952 retrieves a GitLab user ID for a GitHub Email address2953 does not query the cache for an Email address when none is given2954 #find_id_from_database2955 returns the GitLab user ID for a GitHub user ID2956 returns the GitLab user ID for a GitHub Email address2957 #email_for_github_username2958 when the email is cached2959 returns the email from the cache2960 does not make a rate-limited API call2961 when the email cache is nil2962 if the email has not been checked for the project2963 if the cached etag is nil2964 makes an API call2965 if the response contains an email2966 behaves like returns and caches the email2967 returns the email2968 caches the email and expires the etag and project check caches2969 if the response does not contain an email2970 returns nil2971 caches a blank email and etag and marks the project as checked2972 if the cached etag is not nil2973 makes a non-rate-limited API call2974 if the response contains an email2975 behaves like returns and caches the email2976 returns the email2977 caches the email and expires the etag and project check caches2978 if the response does not contain an email2979 behaves like returns nil and caches a negative lookup2980 returns nil2981 caches a blank email and marks the project as checked2982 if the response is nil2983 returns nil2984 marks the project as checked2985 if the email has been checked for the project2986 returns nil2987 behaves like does not change caches2988 does not write to any of the caches2989 behaves like a user resource not found on GitHub2990 returns nil2991 caches a blank email2992 when the email cache is blank2993 if the email has not been checked for the project2994 if the cached etag is not nil2995 makes a non-rate-limited API call2996 if the response contains an email2997 behaves like returns and caches the email2998 returns the email2999 caches the email and expires the etag and project check caches3000 if the response does not contain an email3001 behaves like returns nil and caches a negative lookup3002 returns nil3003 caches a blank email and marks the project as checked3004 if the response is nil3005 behaves like returns nil and caches a negative lookup3006 returns nil3007 caches a blank email and marks the project as checked3008 behaves like a user resource not found on GitHub3009 returns nil3010 caches a blank email3011 if the email has been checked for the project3012 returns nil3013 behaves like does not change caches3014 does not write to any of the caches3015 #cached_id_for_github_id3016 reads a user ID from the cache3017 reads a non existing cache key3018 #cached_id_for_github_email3019 reads a user ID from the cache3020 reads a non existing cache key3021 #id_for_github_id3022 queries and caches the user ID for a given GitHub ID3023 caches a nil value if no ID could be found3024 when importing from github enterprise3025 does not look up the user by external id3026 #id_for_github_email3027 queries and caches the user ID for a given Email address3028 caches a nil value if no ID could be found3029 #query_id_for_github_id3030 returns the ID of the user for the given GitHub user ID3031 returns nil when no user ID could be found3032 #query_id_for_github_email3033 returns the ID of the user for the given Email address3034 returns nil if no user ID could be found3035 #read_id_from_cache3036 reads an ID from the cache3037 reads a cache key with an empty value3038 reads a cache key that does not exist3039gitlab:usage data take tasks3040 dump_sql_in_yaml3041 dumps SQL queries in yaml format3042 dump_sql_in_json3043 dumps SQL queries in json format3044 dump_non_sql_in_json3045 dumps non SQL data in json format3046 generate_sql_metrics_fixture3047 generates fixture file correctly3048 generate_and_send3049 generates and sends Service Ping payload3050Gitlab::ImportExport::Project::RelationFactory3051 hook object3052 does not have the original ID3053 does not have the original integration_id3054 does not have the original project_id3055 has the new project_id3056 has a nil token3057 original service exists3058 does not have the original integration_id3059 excluded attributes3060 are removed from the imported object3061 merge_request object3062 has preloaded author3063 has preloaded updated_by3064 has preloaded source project3065 has preloaded target project3066 has MWPS set to false3067 issue object3068 has preloaded project3069 computing relative position3070 when max relative position in the hierarchy is not cached3071 has computed new relative_position3072 when max relative position in the hierarchy is cached3073 has computed new relative_position3074 when issue_type is provided in the hash3075 sets the correct work_item_type3076 when work_item_type is provided in the hash3077 sets the correct work_item_type3078 when issue_type is provided in the hash as well as a work_item_type3079 makes work_item_type take precedence over issue_type3080 label object3081 has preloaded project3082 has preloaded group3083 pipeline setup3084 when relation_hash has a completed status of success}3085 does not change the created object status3086 when relation_hash has a completed status of failed}3087 does not change the created object status3088 when relation_hash has a completed status of canceled}3089 does not change the created object status3090 when relation_hash has a completed status of skipped}3091 does not change the created object status3092 when relation_hash has cancelable status of waiting_for_resource}3093 sets the created object status to canceled3094 when relation_hash has cancelable status of preparing}3095 sets the created object status to canceled3096 when relation_hash has cancelable status of waiting_for_callback}3097 sets the created object status to canceled3098 when relation_hash has cancelable status of pending}3099 sets the created object status to canceled3100 when relation_hash has cancelable status of running}3101 sets the created object status to canceled3102 when relation_hash has cancelable status of created}3103 sets the created object status to canceled3104 when relation_hash has cancelable status of scheduled}3105 sets the created object status to canceled3106 pipeline_schedule3107 sets importer user as owner3108 when relation_hash has active set to true3109 the created object is not active3110 when relation_hash has active set to false3111 the created object is not active3112 Potentially hazardous foreign keys3113 does not preserve any foreign key IDs3114 overrided model with pluralized name3115 does not raise errors3116 Project references3117 does not preserve any project foreign key IDs3118 behaves like Notes user references3119 when the importer is admin3120 and the note author is not mapped3121 is expected to eq #<User id:629 @user497>3122 is expected to include "*By Administrator"3123 and the note author is the importer user3124 is expected to eq #<User id:635 @user501>3125 is expected not to include "*By Administrator"3126 and the note author exists in the target instance3127 is expected to eq #<User id:644 @user507>3128 is expected not to include "*By Administrator"3129 when the importer is not admin3130 and the note author is not mapped3131 is expected to eq #<User id:649 @user511>3132 is expected to include "*By Administrator"3133 and the note author is the importer user3134 is expected to eq #<User id:655 @user515>3135 is expected to include "*By Administrator"3136 and the note author exists in the target instance3137 is expected to eq #<User id:661 @user519>3138 is expected to include "*By Administrator"3139 encrypted attributes3140 has no value for the encrypted attribute3141 event object3142 has preloaded project3143 protected branch access levels3144 merge access level3145 when access level is no one3146 keeps no one access level3147 when access level is below maintainer3148 sets access level to maintainer3149 when access level is above maintainer3150 sets access level to maintainer3151 root ancestor membership3152 when importer user is root group owner3153 keeps access level as is3154 when user membership in root group is missing3155 sets access level to maintainer3156 when root ancestor is not a group3157 sets access level to maintainer3158 push access level3159 when access level is no one3160 keeps no one access level3161 when access level is below maintainer3162 sets access level to maintainer3163 when access level is above maintainer3164 sets access level to maintainer3165 root ancestor membership3166 when importer user is root group owner3167 keeps access level as is3168 when user membership in root group is missing3169 sets access level to maintainer3170 when root ancestor is not a group3171 sets access level to maintainer3172Notes::CreateService3173 #execute3174 valid params3175 returns a valid note3176 returns a persisted note3177 checks for spam3178 does not persist when spam3179 note has valid content3180 note belongs to the correct project3181 TodoService#new_note is called3182 enqueues NewNoteWorker3183 when noteable is an issue that belongs directly to a group3184 creates a note without a project and correct namespace3185 when noteable is a work item that belongs directly to a group3186 creates a note without a project and correct namespace3187 behaves like does not trigger GraphQL subscription mergeRequestMergeStatusUpdated3188 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times3189 with internal parameter3190 when confidential3191 returns a confidential note3192 when not confidential3193 returns a confidential note3194 with confidential parameter3195 when confidential3196 returns a confidential note3197 when not confidential3198 returns a confidential note3199 with confidential and internal parameter set3200 prefers the internal parameter3201 issue is an incident3202 behaves like an incident management tracked event3203 .track_event3204 tracks the event using redis3205 behaves like Snowplow event tracking with RedisHLL context3206 behaves like Snowplow event tracking3207 is emitted3208 in a commit3209 tracks commit comment usage data3210 behaves like Snowplow event tracking with Redis context3211 behaves like Snowplow event tracking3212 is emitted3213 event tracking3214 tracks issue comment usage data3215 does not track merge request usage data3216 behaves like internal event tracking3217 logs to Snowplow3218 in a merge request3219 when mr_request_changes feature flag is disabled3220 calls MergeRequests::UpdateReviewerStateService service3221 does not call MergeRequests::UpdateReviewerStateService service when skip_set_reviewed is true3222 when mr_request_changes feature flag is enabled3223 does not call MergeRequests::UpdateReviewerStateService service when skip_set_reviewed is true3224 noteable highlight cache clearing3225 does not track issue comment usage data3226 tracks merge request usage data3227 clears noteable diff cache when it was unfolded for the note position3228 does not clear cache when note is not the first of the discussion3229 note diff file3230 when eligible to have a note diff file3231 note is associated with a note diff file3232 does not track ipynb note usage data3233 behaves like triggers GraphQL subscription mergeRequestMergeStatusUpdated3234 is expected to receive merge_request_merge_status_updated(#<MergeRequest id:36 namespace168/project-1005!1>) 1 time3235 when skip_capture_diff_note_position execute option is set to true3236 does not execute Discussions::CaptureDiffNotePositionService3237 when skip_merge_status_trigger execute option is set to true3238 behaves like does not trigger GraphQL subscription mergeRequestMergeStatusUpdated3239 is expected not to receive merge_request_merge_status_updated(*(any args)) 0 times3240 is ipynb file3241 tracks ipynb diff note creation3242 when DiffNote is a reply3243 note is not associated with a note diff file3244 when DiffNote from an image3245 note is not associated with a note diff file3246 note with commands3247 all quick actions3248 for issues3249 behaves like issuable quick actions3250 when user can update issuable3251 saves the note and updates the issue3252 when user cannot update issuable3253 applies commands that user can execute3254 for merge requests3255 behaves like issuable quick actions3256 when user can update issuable3257 saves the note and updates the issue3258 when user cannot update issuable3259 applies commands that user can execute3260 when note only has commands3261 adds commands applied message to note errors3262 adds commands failed message to note errors3263 generates success and failed error messages3264 does not check for spam3265 generates failed update error messages3266 personal snippet note3267 returns a valid note3268 returns a persisted note3269 note has valid content3270 design note3271 can create diff notes for designs3272 sends a notification about this note3273 correctly builds the position of the note3274 note with emoji only3275 creates regular note3276 reply to individual note3277 creates a DiscussionNote in reply to existing note3278 converts existing note to DiscussionNote3279 returns a DiscussionNote with its parent discussion refreshed correctly3280 failure in when_saved3281 converts existing note to DiscussionNote3282 discussion to reply cannot be found3283 returns an note with errors3284 usage counter3285 snippet note3286 increments usage counter3287 does not increment usage counter when creation fails3288 issue note3289 does not increment usage counter3290SystemHook3291 behaves like a hook that does not get automatically disabled on failure3292 .executable/.disabled3293 finds the correct set of project hooks3294 when silent mode is enabled3295 causes no hooks to be considered executable3296 causes all hooks to be considered disabled3297 #executable?3298 recent_failures: 0, not_until: :not_set3299 has the correct state3300 recent_failures: 0, not_until: :past3301 has the correct state3302 recent_failures: 0, not_until: :future3303 has the correct state3304 recent_failures: 0, not_until: :now3305 has the correct state3306 recent_failures: 1, not_until: :not_set3307 has the correct state3308 recent_failures: 1, not_until: :past3309 has the correct state3310 recent_failures: 1, not_until: :future3311 has the correct state3312 recent_failures: 3, not_until: :not_set3313 has the correct state3314 recent_failures: 3, not_until: :past3315 has the correct state3316 recent_failures: 3, not_until: :future3317 has the correct state3318 recent_failures: 4, not_until: :not_set3319 has the correct state3320 recent_failures: 4, not_until: :past3321 has the correct state3322 recent_failures: 4, not_until: :now3323 has the correct state3324 recent_failures: 4, not_until: :future3325 has the correct state3326 #enable!3327 makes a hook executable if it was marked as failed3328 makes a hook executable if it is currently backed off3329 does not update hooks unless necessary3330 #backoff!3331 when we have not backed off before3332 does not disable the hook3333 when we have exhausted the grace period3334 does not disable the hook3335 #temporarily_disabled?3336 is false3337 #permanently_disabled?3338 is false3339 #alert_status3340 is expected to eq :executable3341 when hook has been disabled3342 is expected to eq :executable3343 when hook has been backed off3344 is expected to eq :executable3345 default attributes3346 sets defined default parameters3347 validations3348 url3349 is expected not to allow :url to be ‹"http://localhost:9000"›3350 is valid if application settings allow local requests from system hooks3351 execute3352 project_create hook3353 project_destroy hook3354 user_create hook3355 user_destroy hook3356 project member create hook3357 project member destroy hook3358 project member update hook3359 group create hook3360 group destroy hook3361 group member create hook3362 group member destroy hook3363 group member update hook3364 .repository_update_hooks3365 returns hooks for repository update events only3366 execute WebHookService3367 #execute3368 #async_execute3369 #application_context3370 includes the type3371Gitlab::RackAttack::Request3372 FILES_PATH_REGEX3373 is expected to match "/api/v4/projects/1/repository/files/README"3374 is expected to match "/api/v4/projects/1/repository/files/README?ref=master"3375 is expected to match "/api/v4/projects/1/repository/files/README/blame"3376 is expected to match "/api/v4/projects/1/repository/files/README/raw"3377 is expected to match "/api/v4/projects/some%2Fnested%2Frepo/repository/files/README"3378 is expected not to match "/api/v4/projects/some/nested/repo/repository/files/README"3379 #api_request?3380 path: "/", expected: false3381 is expected to eq false3382 when the application is mounted at a relative URL3383 is expected to eq false3384 path: "/groups", expected: false3385 is expected to eq false3386 when the application is mounted at a relative URL3387 is expected to eq false3388 path: "/foo/api", expected: false3389 is expected to eq false3390 when the application is mounted at a relative URL3391 is expected to eq false3392 path: "/api", expected: false3393 is expected to eq false3394 when the application is mounted at a relative URL3395 is expected to eq false3396 path: "/api/", expected: true3397 is expected to eq true3398 when the application is mounted at a relative URL3399 is expected to eq true3400 path: "/api/v4/groups/1", expected: true3401 is expected to eq true3402 when the application is mounted at a relative URL3403 is expected to eq true3404 path: "/oauth/tokens", expected: true3405 is expected to eq true3406 when the application is mounted at a relative URL3407 is expected to eq true3408 path: "/oauth/userinfo", expected: true3409 is expected to eq true3410 when the application is mounted at a relative URL3411 is expected to eq true3412 when rate_limit_oauth_api feature flag is disabled3413 path: "/", expected: false3414 is expected to eq false3415 when the application is mounted at a relative URL3416 is expected to eq false3417 path: "/groups", expected: false3418 is expected to eq false3419 when the application is mounted at a relative URL3420 is expected to eq false3421 path: "/foo/api", expected: false3422 is expected to eq false3423 when the application is mounted at a relative URL3424 is expected to eq false3425 path: "/api", expected: true3426 is expected to eq true3427 when the application is mounted at a relative URL3428 is expected to eq true3429 path: "/api/v4/groups/1", expected: true3430 is expected to eq true3431 when the application is mounted at a relative URL3432 is expected to eq true3433 path: "/oauth/tokens", expected: false3434 is expected to eq false3435 when the application is mounted at a relative URL3436 is expected to eq false3437 path: "/oauth/userinfo", expected: false3438 is expected to eq false3439 when the application is mounted at a relative URL3440 is expected to eq false3441 #api_internal_request?3442 path: "/", expected: false3443 is expected to eq false3444 when the application is mounted at a relative URL3445 is expected to eq false3446 path: "/groups", expected: false3447 is expected to eq false3448 when the application is mounted at a relative URL3449 is expected to eq false3450 path: "/api", expected: false3451 is expected to eq false3452 when the application is mounted at a relative URL3453 is expected to eq false3454 path: "/api/v4/groups/1", expected: false3455 is expected to eq false3456 when the application is mounted at a relative URL3457 is expected to eq false3458 path: "/api/v4/internal", expected: false3459 is expected to eq false3460 when the application is mounted at a relative URL3461 is expected to eq false3462 path: "/foo/api/v4/internal", expected: false3463 is expected to eq false3464 when the application is mounted at a relative URL3465 is expected to eq false3466 path: "/api/v4/internal/", expected: true3467 is expected to eq true3468 when the application is mounted at a relative URL3469 is expected to eq true3470 path: "/api/v4/internal/foo", expected: true3471 is expected to eq true3472 when the application is mounted at a relative URL3473 is expected to eq true3474 path: "/api/v1/internal/foo", expected: true3475 is expected to eq true3476 when the application is mounted at a relative URL3477 is expected to eq true3478 #health_check_request?3479 path: "/", expected: false3480 is expected to eq false3481 when the application is mounted at a relative URL3482 is expected to eq false3483 path: "/groups", expected: false3484 is expected to eq false3485 when the application is mounted at a relative URL3486 is expected to eq false3487 path: "/foo/-/health", expected: false3488 is expected to eq false3489 when the application is mounted at a relative URL3490 is expected to eq false3491 path: "/-/health", expected: true3492 is expected to eq true3493 when the application is mounted at a relative URL3494 is expected to eq true3495 path: "/-/liveness", expected: true3496 is expected to eq true3497 when the application is mounted at a relative URL3498 is expected to eq true3499 path: "/-/readiness", expected: true3500 is expected to eq true3501 when the application is mounted at a relative URL3502 is expected to eq true3503 path: "/-/metrics", expected: true3504 is expected to eq true3505 when the application is mounted at a relative URL3506 is expected to eq true3507 path: "/-/health/foo", expected: true3508 is expected to eq true3509 when the application is mounted at a relative URL3510 is expected to eq true3511 path: "/-/liveness/foo", expected: true3512 is expected to eq true3513 when the application is mounted at a relative URL3514 is expected to eq true3515 path: "/-/readiness/foo", expected: true3516 is expected to eq true3517 when the application is mounted at a relative URL3518 is expected to eq true3519 path: "/-/metrics/foo", expected: true3520 is expected to eq true3521 when the application is mounted at a relative URL3522 is expected to eq true3523 #container_registry_event?3524 path: "/", expected: false3525 is expected to eq false3526 when the application is mounted at a relative URL3527 is expected to eq false3528 path: "/groups", expected: false3529 is expected to eq false3530 when the application is mounted at a relative URL3531 is expected to eq false3532 path: "/api/v4/container_registry_event", expected: false3533 is expected to eq false3534 when the application is mounted at a relative URL3535 is expected to eq false3536 path: "/foo/api/v4/container_registry_event/", expected: false3537 is expected to eq false3538 when the application is mounted at a relative URL3539 is expected to eq false3540 path: "/api/v4/container_registry_event/", expected: true3541 is expected to eq true3542 when the application is mounted at a relative URL3543 is expected to eq true3544 path: "/api/v4/container_registry_event/foo", expected: true3545 is expected to eq true3546 when the application is mounted at a relative URL3547 is expected to eq true3548 path: "/api/v1/container_registry_event/foo", expected: true3549 is expected to eq true3550 when the application is mounted at a relative URL3551 is expected to eq true3552 #product_analytics_collector_request?3553 path: "/", expected: false3554 is expected to eq false3555 when the application is mounted at a relative URL3556 is expected to eq false3557 path: "/groups", expected: false3558 is expected to eq false3559 when the application is mounted at a relative URL3560 is expected to eq false3561 path: "/-/collector", expected: false3562 is expected to eq false3563 when the application is mounted at a relative URL3564 is expected to eq false3565 path: "/-/collector/foo", expected: false3566 is expected to eq false3567 when the application is mounted at a relative URL3568 is expected to eq false3569 path: "/foo/-/collector/i", expected: false3570 is expected to eq false3571 when the application is mounted at a relative URL3572 is expected to eq false3573 path: "/-/collector/i", expected: true3574 is expected to eq true3575 when the application is mounted at a relative URL3576 is expected to eq true3577 path: "/-/collector/ifoo", expected: true3578 is expected to eq true3579 when the application is mounted at a relative URL3580 is expected to eq true3581 path: "/-/collector/i/foo", expected: true3582 is expected to eq true3583 when the application is mounted at a relative URL3584 is expected to eq true3585 #should_be_skipped?3586 api_internal_request: true, health_check_request: true, container_registry_event: true3587 returns true if any condition is true3588 api_internal_request: true, health_check_request: true, container_registry_event: false3589 returns true if any condition is true3590 api_internal_request: true, health_check_request: false, container_registry_event: true3591 returns true if any condition is true3592 api_internal_request: true, health_check_request: false, container_registry_event: false3593 returns true if any condition is true3594 api_internal_request: false, health_check_request: true, container_registry_event: true3595 returns true if any condition is true3596 api_internal_request: false, health_check_request: true, container_registry_event: false3597 returns true if any condition is true3598 api_internal_request: false, health_check_request: false, container_registry_event: true3599 returns true if any condition is true3600 api_internal_request: false, health_check_request: false, container_registry_event: false3601 returns true if any condition is true3602 #web_request?3603 path: "/", expected: true3604 is expected to eq true3605 when the application is mounted at a relative URL3606 is expected to eq true3607 path: "/groups", expected: true3608 is expected to eq true3609 when the application is mounted at a relative URL3610 is expected to eq true3611 path: "/foo/api", expected: true3612 is expected to eq true3613 when the application is mounted at a relative URL3614 is expected to eq true3615 path: "/api", expected: true3616 is expected to eq true3617 when the application is mounted at a relative URL3618 is expected to eq true3619 path: "/api/", expected: false3620 is expected to eq false3621 when the application is mounted at a relative URL3622 is expected to eq false3623 path: "/api/v4/groups/1", expected: false3624 is expected to eq false3625 when the application is mounted at a relative URL3626 is expected to eq false3627 #protected_path?3628 path: "/", expected: false3629 is expected to eq false3630 when the application is mounted at a relative URL3631 is expected to eq false3632 path: "/groups", expected: false3633 is expected to eq false3634 when the application is mounted at a relative URL3635 is expected to eq false3636 path: "/foo/protected", expected: false3637 is expected to eq false3638 when the application is mounted at a relative URL3639 is expected to eq false3640 path: "/foo/secure", expected: false3641 is expected to eq false3642 when the application is mounted at a relative URL3643 is expected to eq false3644 path: "/protected", expected: true3645 is expected to eq true3646 when the application is mounted at a relative URL3647 is expected to eq true3648 path: "/secure", expected: true3649 is expected to eq true3650 when the application is mounted at a relative URL3651 is expected to eq true3652 path: "/secure/", expected: true3653 is expected to eq true3654 when the application is mounted at a relative URL3655 is expected to eq true3656 path: "/secure/foo", expected: true3657 is expected to eq true3658 when the application is mounted at a relative URL3659 is expected to eq true3660 #get_request_protected_path?3661 path: "/", expected: false3662 is expected to eq false3663 when the application is mounted at a relative URL3664 is expected to eq false3665 path: "/groups", expected: false3666 is expected to eq false3667 when the application is mounted at a relative URL3668 is expected to eq false3669 path: "/foo/protected", expected: false3670 is expected to eq false3671 when the application is mounted at a relative URL3672 is expected to eq false3673 path: "/foo/secure", expected: false3674 is expected to eq false3675 when the application is mounted at a relative URL3676 is expected to eq false3677 path: "/protected", expected: true3678 is expected to eq true3679 when the application is mounted at a relative URL3680 is expected to eq true3681 path: "/secure", expected: true3682 is expected to eq true3683 when the application is mounted at a relative URL3684 is expected to eq true3685 path: "/secure/", expected: true3686 is expected to eq true3687 when the application is mounted at a relative URL3688 is expected to eq true3689 path: "/secure/foo", expected: true3690 is expected to eq true3691 when the application is mounted at a relative URL3692 is expected to eq true3693 #frontend_request?3694 session: {}, env: {}, expected: false3695 is expected to eq false3696 session: {}, env: {"HTTP_X_CSRF_TOKEN"=>"TdC7Wq0aJnYp3Ab6a/TfdB13ZyV0/NRdeN+RrbLI06Y="}, expected: false3697 is expected to eq false3698 session: {:_csrf_token=>"TdC7Wq0aJnYp3Ab6a/TfdB13ZyV0/NRdeN+RrbLI06Y="}, env: {"HTTP_X_CSRF_TOKEN"=>"91bWCRMj1w5jO+CYYMIcGK0VCjlvpcVDzwcXQE6iv5U="}, expected: false3699 is expected to eq false3700 session: {:_csrf_token=>"TdC7Wq0aJnYp3Ab6a/TfdB13ZyV0/NRdeN+RrbLI06Y="}, env: {"HTTP_X_CSRF_TOKEN"=>"TdC7Wq0aJnYp3Ab6a/TfdB13ZyV0/NRdeN+RrbLI06Y="}, expected: true3701 is expected to eq true3702 #deprecated_api_request?3703 path: "/", query: "", expected: false3704 is expected to eq false3705 when the application is mounted at a relative URL3706 is expected to eq false3707 path: "/api/v4/groups/1/", query: "", expected: true3708 is expected to eq true3709 when the application is mounted at a relative URL3710 is expected to eq true3711 path: "/api/v4/groups/1", query: "", expected: true3712 is expected to eq true3713 when the application is mounted at a relative URL3714 is expected to eq true3715 path: "/api/v4/groups/foo/", query: "", expected: true3716 is expected to eq true3717 when the application is mounted at a relative URL3718 is expected to eq true3719 path: "/api/v4/groups/foo", query: "", expected: true3720 is expected to eq true3721 when the application is mounted at a relative URL3722 is expected to eq true3723 path: "/api/v4/groups/1", query: "with_projects=", expected: true3724 is expected to eq true3725 when the application is mounted at a relative URL3726 is expected to eq true3727 path: "/api/v4/groups/1", query: "with_projects=1", expected: true3728 is expected to eq true3729 when the application is mounted at a relative URL3730 is expected to eq true3731 path: "/api/v4/groups/1", query: "with_projects=0", expected: false3732 is expected to eq false3733 when the application is mounted at a relative URL3734 is expected to eq false3735 path: "/foo/api/v4/groups/1", query: "", expected: false3736 is expected to eq false3737 when the application is mounted at a relative URL3738 is expected to eq false3739 path: "/api/v4/groups/1/foo", query: "", expected: false3740 is expected to eq false3741 when the application is mounted at a relative URL3742 is expected to eq false3743 path: "/api/v4/groups/nested%2Fgroup", query: "", expected: true3744 is expected to eq true3745 when the application is mounted at a relative URL3746 is expected to eq true3747MergeRequestWidgetEntity3748 has email_patches_path3749 has plain_diff_path3750 has human access3751 has new pipeline path for project3752 has security_reports_docs_path3753 source_project_full_path3754 includes the full path of the source project3755 when the source project is missing3756 returns `nil` for the source project3757 can_create_pipeline_in_target_project3758 when user has permission3759 includes the correct permission info3760 when user does not have permission3761 includes the correct permission info3762 issues links3763 includes issues links when requested3764 omits issue links by default3765 merge_request_add_ci_config_path3766 when there is a standard ci config file in the source project3767 no ci config path3768 when there is no standard ci config file in the source project3769 when user has permissions3770 has add ci config path3771 has expected params3772 when auto devops is enabled3773 returns a blank ci config path3774 when source project is missing3775 returns a blank ci config path3776 when there are no commits3777 returns a blank ci config path3778 when build feature is disabled3779 has no path3780 when creating the pipeline is not allowed3781 has no path3782 when merge request is merged3783 returns a blank ci config path3784 when merge request is closed3785 returns a blank ci config path3786 when source branch does not exist3787 returns a blank ci config path3788 when user does not have permissions3789 has add ci config path3790 user callouts3791 provides a valid path value for user callout path3792 provides a valid value for suggest pipeline feature id3793 when source project is deleted3794 returns a blank rebase_path3795 has source_project_default_url3796 returns the default url to the source project3797 when source project is nil3798 returns nil3799 when gitpod is disabled3800 exposes gitpod attributes3801 when gitpod is enabled3802 exposes gitpod attributes3803 when gitpod is enabled for user3804 exposes gitpod_enabled as true3805 is_dismissed_suggest_pipeline3806 when user is logged in3807 when the suggest pipeline feature is enabled3808 is false3809 when suggest pipeline has been dismissed3810 is true3811 when the suggest pipeline feature is disabled3812 is true3813 when user is not logged in3814 is true3815Ci::BuildRunnerPresenter3816 #artifacts3817 when option contains archive-type artifacts3818 presents correct hash3819 when untracked is specified3820 presents correct hash3821 when untracked and paths are missing3822 does not present hash3823 when artifacts exclude is defined3824 includes the list of excluded paths3825 when artifacts exclude is not defined3826 does not include an empty list of excluded paths3827 with reports3828 archive3829 presents correct hash3830 metadata3831 presents correct hash3832 trace3833 presents correct hash3834 metrics_referee3835 presents correct hash3836 network_referee3837 presents correct hash3838 junit3839 presents correct hash3840 accessibility3841 presents correct hash3842 codequality3843 presents correct hash3844 sast3845 presents correct hash3846 secret_detection3847 presents correct hash3848 dependency_scanning3849 presents correct hash3850 container_scanning3851 presents correct hash3852 cluster_image_scanning3853 presents correct hash3854 dast3855 presents correct hash3856 license_scanning3857 presents correct hash3858 performance3859 presents correct hash3860 browser_performance3861 presents correct hash3862 load_performance3863 presents correct hash3864 metrics3865 presents correct hash3866 lsif3867 presents correct hash3868 dotenv3869 presents correct hash3870 cobertura3871 presents correct hash3872 terraform3873 presents correct hash3874 cluster_applications3875 presents correct hash3876 requirements3877 presents correct hash3878 requirements_v23879 presents correct hash3880 coverage_fuzzing3881 presents correct hash3882 api_fuzzing3883 presents correct hash3884 cyclonedx3885 presents correct hash3886 annotations3887 presents correct hash3888 when a specific coverage_report type is given3889 presents the coverage report hash with the coverage format3890 when a specific coverage_report type is given with another report type3891 presents both reports3892 when option has both archive and reports specification3893 presents correct hash3894 when archive specifies 'expire_in' keyword3895 inherits expire_in from archive3896 when option has no artifact keywords3897 does not present hash3898 #ref_type3899 returns the correct ref type3900 when tag is false3901 returns the correct ref type3902 #git_depth3903 defaults to git depth setting for the project3904 when GIT_DEPTH variable is specified3905 returns its value3906 #refspecs3907 returns the correct refspecs3908 when ref is tag3909 returns the correct refspecs3910 when GIT_DEPTH is zero3911 returns the correct refspecs3912 when pipeline is detached merge request pipeline3913 returns the correct refspecs3914 when GIT_DEPTH is zero3915 returns the correct refspecs3916 when pipeline is legacy detached merge request pipeline3917 returns the correct refspecs3918 when persistent pipeline ref exists3919 exposes the persistent pipeline ref3920 #runner_variables3921 returns an array3922 returns the expected variables3923 when there is a file variable to expand3924 returns variables with expanded3925 when there is a raw variable to expand3926 returns expanded variables without expanding raws3927 #runner_variables subset3928 with references in pipeline variables3929 returns expanded and sorted variables3930Gitlab::Ci::Config::Entry::Job3931 behaves like with inheritable CI config3932 does prepend an Inheritable mixin3933 all inheritable entries are covered3934 all entries do have inherit flag3935 for non-inheritable entries3936 entry_key: :stage3937 inheritable_class does not define entry3938 entry_key: :only3939 inheritable_class does not define entry3940 entry_key: :except3941 inheritable_class does not define entry3942 entry_key: :rules3943 inheritable_class does not define entry3944 entry_key: :variables3945 inheritable_class does not define entry3946 entry_key: :inherit3947 inheritable_class does not define entry3948 entry_key: :environment3949 inheritable_class does not define entry3950 entry_key: :script3951 inheritable_class does not define entry3952 entry_key: :needs3953 inheritable_class does not define entry3954 entry_key: :coverage3955 inheritable_class does not define entry3956 entry_key: :release3957 inheritable_class does not define entry3958 entry_key: :parallel3959 inheritable_class does not define entry3960 entry_key: :allow_failure3961 inheritable_class does not define entry3962 entry_key: :publish3963 inheritable_class does not define entry3964 entry_key: :pages3965 inheritable_class does not define entry3966 entry_key: :dast_configuration3967 inheritable_class does not define entry3968 entry_key: :secrets3969 inheritable_class does not define entry3970 for inheritable entries3971 entry_key: :before_script, entry_class: Gitlab::Ci::Config::Entry::Commands3972 inheritable_class does define entry3973 when is specified3974 does inherit value3975 when entry is specified3976 does not inherit value3977 when inheritable does not specify3978 does not inherit value3979 entry_key: :after_script, entry_class: Gitlab::Ci::Config::Entry::Commands3980 inheritable_class does define entry3981 when is specified3982 does inherit value3983 when entry is specified3984 does not inherit value3985 when inheritable does not specify3986 does not inherit value3987 entry_key: :hooks, entry_class: Gitlab::Ci::Config::Entry::Hooks3988 inheritable_class does define entry3989 when is specified3990 does inherit value3991 when entry is specified3992 does not inherit value3993 when inheritable does not specify3994 does not inherit value3995 entry_key: :cache, entry_class: Gitlab::Ci::Config::Entry::Caches3996 inheritable_class does define entry3997 when is specified3998 does inherit value3999 when entry is specified4000 does not inherit value4001 when inheritable does not specify4002 does not inherit value4003 entry_key: :image, entry_class: Gitlab::Ci::Config::Entry::Image4004 inheritable_class does define entry4005 when is specified4006 does inherit value4007 when entry is specified4008 does not inherit value4009 when inheritable does not specify4010 does not inherit value4011 entry_key: :services, entry_class: Gitlab::Ci::Config::Entry::Services4012 inheritable_class does define entry4013 when is specified4014 does inherit value4015 when entry is specified4016 does not inherit value4017 when inheritable does not specify4018 does not inherit value4019 entry_key: :interruptible, entry_class: Gitlab::Config::Entry::Boolean4020 inheritable_class does define entry4021 when is specified4022 does inherit value4023 when entry is specified4024 does not inherit value4025 when inheritable does not specify4026 does not inherit value4027 entry_key: :timeout, entry_class: Gitlab::Ci::Config::Entry::Timeout4028 inheritable_class does define entry4029 when is specified4030 does inherit value4031 when entry is specified4032 does not inherit value4033 when inheritable does not specify4034 does not inherit value4035 entry_key: :retry, entry_class: Gitlab::Ci::Config::Entry::Retry4036 inheritable_class does define entry4037 when is specified4038 does inherit value4039 when entry is specified4040 does not inherit value4041 when inheritable does not specify4042 does not inherit value4043 entry_key: :tags, entry_class: Gitlab::Ci::Config::Entry::Tags4044 inheritable_class does define entry4045 when is specified4046 does inherit value4047 when entry is specified4048 does not inherit value4049 when inheritable does not specify4050 does not inherit value4051 entry_key: :artifacts, entry_class: Gitlab::Ci::Config::Entry::Artifacts4052 inheritable_class does define entry4053 when is specified4054 does inherit value4055 when entry is specified4056 does not inherit value4057 when inheritable does not specify4058 does not inherit value4059 entry_key: :id_tokens, entry_class: Gitlab::Config::Entry::ComposableHash4060 inheritable_class does define entry4061 when is specified4062 does inherit value4063 when entry is specified4064 does not inherit value4065 when inheritable does not specify4066 does not inherit value4067 .nodes4068 when filtering all the entry/node names4069 is expected to include :before_script, :script, :after_script, :hooks, :stage, :cache, :image, :services, :only, :except, :rules, :needs, :variables, :artifacts, :coverage, :retry, :interruptible, :timeout, :release, :tags, :inherit, and :parallel4070 .matching?4071 when config is not a hash4072 is expected to be falsey4073 when config is a regular job4074 is expected to be truthy4075 when config is a bridge job4076 is expected to be falsey4077 when config is a hidden job4078 is expected to be falsey4079 when using the default job without script4080 is expected to be falsey4081 when using the default job with script4082 is expected to be truthy4083 validations4084 when entry config value is correct4085 #valid?4086 is valid4087 when job name is empty4088 reports error4089 when config uses both "when:" and "rules:"4090 is valid4091 when delayed job4092 when start_in is specified4093 is expected to be valid4094 when has needs4095 is expected to be valid4096 returns scheduling_type as :dag4097 when has dependencies4098 is expected to be valid4099 when it is a release4100 is expected to be valid4101 when rules are used4102 is expected to be valid4103 when entry value is not correct4104 incorrect config value type4105 #errors4106 reports error about a config type4107 when config is empty4108 #valid4109 is invalid4110 when unknown keys detected4111 #valid4112 is not valid4113 when script is not provided4114 returns error about missing script entry4115 when extends key is not a string4116 returns error about wrong value type4117 when parallel value is not correct4118 when it is not a numeric value4119 returns error about invalid type4120 when it is lower than one4121 returns error about value too low4122 when it is an empty hash4123 returns error about missing matrix4124 when delayed job4125 when start_in is specified4126 is expected to be valid4127 when start_in is empty4128 returns error about invalid type4129 when start_in is not formatted as a duration4130 returns error about invalid type4131 when start_in is longer than one week4132 returns error about exceeding the limit4133 when the `when` keyword is not a string4134 when it is an array4135 returns error4136 when it is a boolean4137 returns error4138 when start_in specified without delayed specification4139 returns error about invalid type4140 when it has dependencies4141 that are not a array of strings4142 returns error about invalid type4143 when the job has needs4144 and there are dependencies that are not included in needs4145 returns error about invalid data4146 and they are only cross pipeline needs4147 adds an error for dependency keyword usage4148 when timeout value is not correct4149 when it is higher than instance wide timeout4150 returns error about value too high4151 when it is not a duration4152 returns error about wrong value4153 when timeout value is correct4154 returns correct timeout4155 when it is a release4156 when `release:description` is missing4157 returns error4158 when invalid rules are used4159 with rules nested more than max allowed levels4160 is expected not to be valid4161 with rules with invalid keys4162 is expected not to be valid4163 when only: is used with rules:4164 returns error about mixing only: with rules:4165 and only: is blank4166 is valid:4167 and rules: is blank4168 is valid4169 when except: is used with rules:4170 returns error about mixing except: with rules:4171 and except: is blank4172 is valid4173 and rules: is blank4174 is valid4175 when only: and except: are both used with rules:4176 returns errors about mixing both only: and except: with rules:4177 when only: and except: as both blank4178 is valid4179 when rules: is blank4180 is valid4181 when job is not a pages job4182 if the config contains a publish entry4183 is invalid4184 if the config contains a pages entry4185 is invalid4186 when job is a pages job4187 when it does not have a publish entry4188 is valid4189 when it has a publish entry4190 is valid4191 when it has a pages entry4192 is valid4193 #pages_job?4194 name: :pages, result: true4195 is expected to eq true4196 name: :"pages:staging", result: false4197 is expected to eq false4198 name: :"something:pages:else", result: false4199 is expected to eq false4200 #relevant?4201 is a relevant entry4202 #compose!4203 when job config overrides default config4204 overrides default config4205 when job config does not override default config4206 uses config from default entry4207 with workflow rules4208 name: "uses default only", has_workflow_rules?: false, only: nil, rules: nil, result: {:refs=>["branches", "tags"]}4209 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesDefaultOnlyHasWorkflowRulesFalseOnlyNilRulesNilResultRefsBranchesTags4210 name: "uses user only", has_workflow_rules?: false, only: ["branches"], rules: nil, result: {:refs=>["branches"]}4211 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesUserOnlyHasWorkflowRulesFalseOnlyBranchesRulesNilResultRefsBranches4212 name: "does not define only", has_workflow_rules?: false, only: nil, rules: [], result: nil4213 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesFalseOnlyNilRulesResultNil4214 name: "does not define only", has_workflow_rules?: true, only: nil, rules: nil, result: nil4215 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesTrueOnlyNilRulesNilResultNil4216 name: "uses user only", has_workflow_rules?: true, only: ["branches"], rules: nil, result: {:refs=>["branches"]}4217 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameUsesUserOnlyHasWorkflowRulesTrueOnlyBranchesRulesNilResultRefsBranches4218 name: "does not define only", has_workflow_rules?: true, only: nil, rules: [], result: nil4219 RSpec::ExampleGroups::GitlabCiConfigEntryJob::Compose::WithWorkflowRules::NameDoesNotDefineOnlyHasWorkflowRulesTrueOnlyNilRulesResultNil4220 when workflow rules is used4221 when rules are used4222 does not define only4223 when rules are not used4224 does not define only4225 when composed4226 #value4227 when entry is correct4228 returns correct value4229 when job is using tags4230 when limit is reached4231 returns error4232 when limit is not reached4233 returns a valid entry4234 #manual_action?4235 when job is a manual action4236 is a manual action4237 when job is not a manual action4238 is not a manual action4239 #delayed?4240 when job is a delayed4241 is a delayed4242 when job is not a delayed4243 is not a delayed4244 #ignored?4245 when job is a manual action4246 when it is not specified if job is allowed to fail4247 is an ignored job4248 when job is allowed to fail4249 is an ignored job4250 when job is not allowed to fail4251 is not an ignored job4252 when job is dynamically allowed to fail4253 is not an ignored job4254 when job is not a manual action4255 when it is not specified if job is allowed to fail4256 is not an ignored job4257 does not return allow_failure4258 when job is allowed to fail4259 is an ignored job4260 does not return allow_failure_criteria4261 when job is not allowed to fail4262 is not an ignored job4263 does not return allow_failure_criteria4264 when job is dynamically allowed to fail4265 is not an ignored job4266 returns allow_failure_criteria4267Banzai::ReferenceParser::SnippetParser4268 #nodes_visible_to_user4269 when a project is public and the snippets feature is enabled for everyone4270 avoids N+1 cached queries4271 creates a reference for guest for a public snippet4272 creates a reference for a regular user for a public snippet4273 creates a reference for a regular user for an internal snippet4274 does not create a reference for an external user for an internal snippet4275 creates a reference for a project member for a private snippet4276 does not create a reference for a regular user for a private snippet4277 when a project is public and the snippets feature is enabled for project team members4278 creates a reference for a project member for a public snippet4279 does not create a reference for guest for a public snippet4280 does not create a reference for a regular user for a public snippet4281 creates a reference for a project member for an internal snippet4282 does not create a reference for a regular user for an internal snippet4283 creates a reference for a project member for a private snippet4284 does not create a reference for a regular user for a private snippet4285 when a project is internal and the snippets feature is enabled for everyone4286 does not create a reference for guest for a public snippet4287 does not create a reference for an external user for a public snippet4288 creates a reference for a regular user for a public snippet4289 creates a reference for a regular user for an internal snippet4290 does not create a reference for an external user for an internal snippet4291 creates a reference for a project member for a private snippet4292 does not create a reference for a regular user for a private snippet4293 when a project is internal and the snippets feature is enabled for project team members4294 creates a reference for a project member for a public snippet4295 does not create a reference for guest for a public snippet4296 does not create reference for a regular user for a public snippet4297 creates a reference for a project member for an internal snippet4298 does not create a reference for a regular user for an internal snippet4299 creates a reference for a project member for a private snippet4300 does not create reference for a regular user for a private snippet4301 when a project is private and the snippets feature is enabled for project team members4302 creates a reference for a project member for a public snippet4303 does not create a reference for guest for a public snippet4304 does not create a reference for a regular user for a public snippet4305 creates a reference for a project member for an internal snippet4306 does not create a reference for a regular user for an internal snippet4307 creates a reference for a project member for a private snippet4308 does not create a reference for a regular user for a private snippet4309 #referenced_by4310 when the link has a data-snippet attribute4311 using an existing snippet ID4312 returns an Array of snippets4313 using a non-existing snippet ID4314 returns an empty Array4315Releases::GroupReleasesFinder4316 when parent is a group4317 without subgroups4318 behaves like preload4319 preloads associations4320 when preload is false4321 does not preload associations4322 behaves like when the user is not part of the group4323 returns no releases4324 when the user is a project guest on one sibling project4325 does not return any releases4326 when the user is a guest on the group4327 sorts by release date and id4328 with subgroups4329 with a single-level subgroup4330 behaves like when the user is not part of the group4331 returns no releases4332 when the user a project guest in the subgroup project4333 does not return any releases4334 when the user is a guest on the group4335 returns all releases4336 with a multi-level subgroup4337 behaves like when the user is not part of the group4338 returns no releases4339 when the user a project guest in the subgroup and subsubgroup project4340 does not return any releases4341 when the user a project guest in the subsubgroup project4342 does not return any releases4343 performance testing4344 behaves like avoids N+1 queries4345 with subgroups4346 subgroups avoids N+1 queries4347Integrations::DroneCi4348 behaves like Integrations::BaseCi4349 default values4350 is expected to eq :ci4351 behaves like Integrations::ResetSecretFields4352 #exposing_secrets_fields4353 returns an array of strings4354 #reset_secret_fields?4355 returns false if no exposing field has changed4356 returns true if any exposing field has changed4357 validation callback4358 when an exposing field has changed4359 clears all secret fields4360 when a secret field has been updated4361 does not clear this secret field4362 when a secret field has been updated with the same value4363 does not clear this secret field4364 when no exposing field has changed4365 does not clear any secret fields4366 validations4367 active4368 is expected to validate that :token cannot be empty/falsy4369 is expected to validate that :drone_url cannot be empty/falsy4370 behaves like issue tracker integration URL attribute4371 is expected to allow :drone_url to be ‹"https://example.com"›4372 is expected not to allow :drone_url to be ‹"example.com"›4373 is expected not to allow :drone_url to be ‹"ftp://example.com"›4374 is expected not to allow :drone_url to be ‹"herp-and-derp"›4375 inactive4376 is expected not to validate that :token cannot be empty/falsy4377 is expected not to validate that :drone_url cannot be empty/falsy4378 accessors4379 is expected to respond to #enable_ssl_verification4380 is expected to respond to #enable_ssl_verification?4381 #initialize_properties4382 enables the setting by default4383 does not enable the setting if the record is already persisted4384 does not enable the setting if a custom value was set4385 #fields4386 inserts the checkbox field after the first URL field, or at the end4387 does not insert the field repeatedly4388 #enable_ssl_verification4389 returns true for a known hostname4390 returns true for new records4391 returns false for an unknown hostname4392 returns false for a HTTP URL4393 returns false for an invalid URL4394 returns the persisted value if present4395 behaves like Integrations::HasWebHook4396 does not create a hook if project is not present4397 associations4398 is expected to have one service_hook inverse_of => integration4399 callbacks4400 calls #update_web_hook! when enabled4401 does not call #update_web_hook! when disabled4402 does not call #update_web_hook! when validation fails4403 #hook_url4404 returns a string4405 #url_variables4406 returns a hash4407 #hook_ssl_verification4408 returns a boolean4409 delegates to #enable_ssl_verification if the concern is included4410 #update_web_hook!4411 creates or updates a service hook4412 raises an error if the service hook could not be saved4413 does not attempt to save the service hook if there are no changes4414 #execute_web_hook!4415 creates the webhook if necessary and executes it4416 raises an error if the service hook could not be saved4417 integration page/path methods4418 is expected to eq "http://drone.example.com/gitlab/namespace307/project-1175/redirect/commits/2ab7834c?branch=dev"4419 is expected to eq "http://drone.example.com/gitlab/namespace307/project-1175/commits/2ab7834c?branch=dev&access_token=secret"4420 #commit_status4421 returns the contents of the reactive cache4422 #calculate_reactive_cache4423 #commit_status4424 sets commit status to :error when status is 5004425 sets commit status to :error when status is 4044426 sets commit status to :error with a Net::OpenTimeout error4427 sets commit status to :error with a Net::ReadTimeout error4428 sets commit status to :error with a Net::WriteTimeout error4429 sets commit status to :error with a Gitlab::HTTP_V2::ReadTotalTimeout error4430 sets commit status to :error with a EOFError error4431 sets commit status to :error with a SocketError error4432 sets commit status to :error with a OpenSSL::SSL::SSLError error4433 sets commit status to :error with a OpenSSL::OpenSSLError error4434 sets commit status to :error with a Errno::ECONNRESET error4435 sets commit status to :error with a Errno::ECONNREFUSED error4436 sets commit status to :error with a Errno::EHOSTUNREACH error4437 sets commit status to :error with a Errno::ENETUNREACH error4438 sets commit status to :error with a Gitlab::HTTP_V2::BlockedUrlError error4439 sets commit status to :error with a Gitlab::HTTP_V2::RedirectionTooDeep error4440 sets commit status to :error with a Net::HTTPBadResponse error4441 sets commit status to :canceled when returned status is "killed"4442 sets commit status to :failed when returned status is "failure"4443 sets commit status to :failed when returned status is "error"4444 sets commit status to "success" when returned status is "success"4445 execute4446 executes the webhook4447 does not try to execute the webhook if the integration is not in a project4448Gitlab::DataBuilder::Push4449 .build4450 with changed files4451 returns commit hook data4452 without changed files4453 returns commit hook data without include deltas4454 .build_sample4455 is expected to be a kind of Hash4456 is expected to eq "1b12f15a11fc6e62177bef08f47bc7b5ce50b141"4457 is expected to eq "b83d6e391c22777fca1ed3012fce84f633d7fed0"4458 is expected to eq "refs/heads/master"4459 is expected to eq 34460 is expected to eq 34461 is expected to eq ["bar/branch-test.txt"]4462 is expected to eq []4463 is expected to eq []4464 contains project data4465 contains deprecated repository data4466 .sample_data4467 is expected to be a kind of Hash4468 is expected to eq "95790bf891e76fee5e1747ab589903a6a1f80f22"4469 is expected to eq "da1560886d4f094c3e6c9ef40349f7d38b5d27d7"4470 is expected to eq "refs/heads/master"4471 is expected to eq 154472 is expected to eq 14473 is expected to eq 14474 contains project data4475 .build4476 is expected to be a kind of Hash4477 is expected to eq "0000000000000000000000000000000000000000"4478 is expected to eq "5937ac0a7beb003549fc5fd26fc247adbce4a52e"4479 is expected to eq "8a2a6eb295bb170b34c24c76c49ed0e9b2eaf34b"4480 is expected to eq "refs/tags/v1.1.0"4481 is expected to eq nil4482 is expected to eq "Sidney Jones1025"4483 is expected to eq "user805"4484 is expected to eq "public-email@example.com"4485 is expected to eq "https://www.gravatar.com/avatar/b38bdb9578aa0751d3ef8ba4c9473fe7?s=80&d=identicon"4486 is expected to eq 10494487 is expected to be a kind of Hash4488 is expected to be empty4489 is expected to be zero4490 contains project data4491 contains deprecated repository data4492 does not raise an error when given nil commits4493 .build_bulk4494 is expected to eq {:action=>:created, :ref_count=>2, :ref_type=>:branch}4495GroupsHelper4496 #group_icon_url4497 returns an url for the avatar4498 gives default avatar_icon when no avatar is present4499 #group_lfs_status4500 only one project in group4501 returns all projects as enabled4502 returns all projects as disabled4503 more than one project in group4504 LFS enabled in group4505 returns both projects as enabled4506 returns only one as enabled4507 LFS disabled in group4508 returns both projects as disabled4509 returns only one as disabled4510 #group_title4511 enqueues the elements in the breadcrumb schema list4512 avoids N+1 queries4513 traversal queries4514 outputs the groups in the correct order4515 #group_title_link4516 link4517 uses the group name as innerText4518 links to the group path4519 icon4520 specifies the group name as the alt text4521 uses the group's avatar_url4522 #share_with_group_lock_help_text4523 traversal queries4524 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil4525 has the correct help text with correct ancestor links4526 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil4527 has the correct help text with correct ancestor links4528 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil4529 has the correct help text with correct ancestor links4530 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil4531 has the correct help text with correct ancestor links4532 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil4533 has the correct help text with correct ancestor links4534 root_share_with_group_locked: false, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil4535 has the correct help text with correct ancestor links4536 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup4537 has the correct help text with correct ancestor links4538 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup4539 has the correct help text with correct ancestor links4540 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :subgroup4541 has the correct help text with correct ancestor links4542 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup4543 has the correct help text with correct ancestor links4544 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :subgroup4545 has the correct help text with correct ancestor links4546 root_share_with_group_locked: false, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :subgroup4547 has the correct help text with correct ancestor links4548 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil4549 has the correct help text with correct ancestor links4550 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil4551 has the correct help text with correct ancestor links4552 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil4553 has the correct help text with correct ancestor links4554 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :default_help, linked_ancestor: nil4555 has the correct help text with correct ancestor links4556 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :default_help, linked_ancestor: nil4557 has the correct help text with correct ancestor links4558 root_share_with_group_locked: true, subgroup_share_with_group_locked: false, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :default_help, linked_ancestor: nil4559 has the correct help text with correct ancestor links4560 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :root_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group4561 has the correct help text with correct ancestor links4562 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group4563 has the correct help text with correct ancestor links4564 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: false, current_user: :sub_sub_owner, help_text: :ancestor_locked_and_has_been_overridden, linked_ancestor: :root_group4565 has the correct help text with correct ancestor links4566 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :root_owner, help_text: :ancestor_locked_but_you_can_override, linked_ancestor: :root_group4567 has the correct help text with correct ancestor links4568 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group4569 has the correct help text with correct ancestor links4570 root_share_with_group_locked: true, subgroup_share_with_group_locked: true, sub_subgroup_share_with_group_locked: true, current_user: :sub_sub_owner, help_text: :ancestor_locked_so_ask_the_owner, linked_ancestor: :root_group4571 has the correct help text with correct ancestor links4572 #can_disable_group_emails?4573 returns true for the group owner4574 returns false for anyone else4575 when subgroups4576 returns false if parent group is disabling emails4577 returns true if parent group is not disabling emails4578 #can_update_default_branch_protection?4579 for users who can update default branch protection of the group4580 is expected to be truthy4581 for users who cannot update default branch protection of the group4582 is expected to be falsey4583 #show_thanks_for_purchase_alert?4584 with quantity present4585 returns true4586 with quantity not present4587 returns false4588 with quantity empty4589 returns false4590 #render_setting_to_allow_project_access_token_creation?4591 returns true if group is root4592 returns false if group is subgroup4593 #can_admin_group_member?4594 returns true when current_user can admin members4595 returns false when current_user can not admin members4596 #can_admin_service_accounts?4597 returns false when current_user can not admin members4598 #localized_jobs_to_be_done_choices4599 has a translation for all `jobs_to_be_done` values4600 #subgroup_creation_data4601 when group has a parent4602 returns expected hash4603 when group does not have a parent4604 returns expected hash4605 #group_name_and_path_app_data4606 when group has a parent4607 returns expected hash4608 #group_overview_tabs_app_data4609 returns expected hash4610 #show_group_readme?4611 when project is public4612 is expected to equal true4613 when project is private4614 when user can not see the project4615 when user can see the project4616 is expected to equal true4617 #enabled_git_access_protocol_options_for_group4618 instance setting is nil4619 is expected to include ["Both SSH and HTTP(S)", "all"], ["Only SSH", "ssh"], and ["Only HTTP(S)", "http"]4620 instance setting is blank4621 is expected to include ["Both SSH and HTTP(S)", "all"], ["Only SSH", "ssh"], and ["Only HTTP(S)", "http"]4622 instance setting is ssh4623 is expected to contain exactly ["Only SSH", "ssh"]4624 instance setting is http4625 is expected to contain exactly ["Only HTTP(S)", "http"]4626 #new_custom_emoji_path4627 with feature flag disabled4628 is expected to eq nil4629 with feature flag enabled4630 with nil group4631 is expected to eq nil4632 with current_user who has no permissions4633 is expected to eq nil4634 with current_user who has permissions4635 is expected to eq "/groups/group318/-/custom_emoji/new"4636DesignManagement::CopyDesignCollection::CopyService4637 returns an error response4638 when user has permission to read the design collection4639 returns an error response4640 when the user also has permission to admin the target issue4641 returns an error response4642 when the target design collection has been queued4643 returns an error response4644 when design collection has designs4645 returns a success response4646 creates a design repository for the target project4647 copies the designs correctly4648 copies the design versions correctly4649 copies the design actions correctly4650 copies design notes correctly4651 links the LfsObjects4652 copies the Git repository data4653 creates a default branch if none previously existed4654 does not create default branch when one exists4655 leaves the design collection in the correct copy state4656 when target issue already has designs4657 returns an error response4658 when target project already has designs4659 sets IIDs for new designs above existing ones4660 does not allow for IID collisions4661 when the target project already has a design repository4662 returns a success response4663 rollback4664 returns an error response4665 rollsback all PostgreSQL data created4666 does not alter master branch4667 sets the design collection copy state4668 Alert if schema changes4669 is expected to contain exactly "id", "project_id", "issue_id", "filename", "relative_position", "iid", "cached_markdown_version", "description", and "description_html"4670 is expected to contain exactly "id", "design_id", "version_id", "event", and "image_v432x230"4671 is expected to contain exactly "id", "sha", "issue_id", "created_at", and "author_id"4672ErrorTracking::SentryClient::Issue4673 #issue_details4674 behaves like maps Sentry exceptions4675 HTTParty::Error4676 is expected to raise ErrorTracking::SentryClient::Error with "Error when connecting to Sentry"4677 Net::OpenTimeout4678 is expected to raise ErrorTracking::SentryClient::Error with "Connection to Sentry timed out"4679 SocketError4680 is expected to raise ErrorTracking::SentryClient::Error with "Received SocketError when trying to connect to Sentry"4681 OpenSSL::SSL::SSLError4682 is expected to raise ErrorTracking::SentryClient::Error with "Sentry returned invalid SSL data"4683 Errno::ECONNREFUSED4684 is expected to raise ErrorTracking::SentryClient::Error with "Connection refused"4685 StandardError4686 is expected to raise ErrorTracking::SentryClient::Error with "Sentry request failed due to StandardError"4687 behaves like Sentry API response size limit4688 raises an exception when response is too large4689 with error object created from sentry response4690 has a correct external URL4691 issue has a correct external base url4692 has a correct GitLab issue url4693 has an integrated attribute set to false4694 has the correct tags4695 error_object: :id, sentry_response: :id4696 is expected to eq "11"4697 error_object: :first_seen, sentry_response: :firstSeen4698 is expected to eq "2018-11-06T21:19:55Z"4699 error_object: :last_seen, sentry_response: :lastSeen4700 is expected to eq "2018-11-06T21:19:55Z"4701 error_object: :title, sentry_response: :title4702 is expected to eq "This is an example Python exception"4703 error_object: :type, sentry_response: :type4704 is expected to eq "default"4705 error_object: :user_count, sentry_response: :userCount4706 is expected to eq 04707 error_object: :count, sentry_response: :count4708 is expected to eq "1"4709 error_object: :message, sentry_response: [:metadata, :value]4710 is expected to eq nil4711 error_object: :culprit, sentry_response: :culprit4712 is expected to eq "raven.scripts.runner in main"4713 error_object: :short_id, sentry_response: :shortId4714 is expected to eq "PUMP-STATION-1"4715 error_object: :status, sentry_response: :status4716 is expected to eq "unresolved"4717 error_object: :frequency, sentry_response: [:stats, "24h"]4718 is expected to eq [[1541451600.0, 557], [1541455200.0, 473], [1541458800.0, 914], [1541462400.0, 991], [1541466000.0, 9...1523600.0, 111], [1541527200.0, 926], [1541530800.0, 772], [1541534400.0, 400], [1541538000.0, 943]]4719 error_object: :project_id, sentry_response: [:project, :id]4720 is expected to eq "2"4721 error_object: :project_name, sentry_response: [:project, :name]4722 is expected to eq "Pump Station"4723 error_object: :project_slug, sentry_response: [:project, :slug]4724 is expected to eq "pump-station"4725 error_object: :first_release_last_commit, sentry_response: [:firstRelease, :lastCommit]4726 is expected to eq nil4727 error_object: :last_release_last_commit, sentry_response: [:lastRelease, :lastCommit]4728 is expected to eq {}4729 error_object: :first_release_short_version, sentry_response: [:firstRelease, :shortVersion]4730 is expected to eq "1764232"4731 error_object: :last_release_short_version, sentry_response: [:lastRelease, :shortVersion]4732 is expected to eq "27de6b42eb4"4733 error_object: :first_release_version, sentry_response: [:firstRelease, :version]4734 is expected to eq "17642328ead24b51867165985996d04b29310337"4735 error_object: :last_release_version, sentry_response: [:lastRelease, :version]4736 is expected to eq "17642328ead24b51867165985996d04b29321448"4737 when issue annotations exist4738 has a correct GitLab issue url4739 when no GitLab issue is linked4740 does not find a GitLab issue4741 behaves like non-numeric input handling in Sentry response4742 with non-numeric error id4743 id_input: "string"4744 raises exception4745 id_input: "-1"4746 raises exception4747 id_input: "1\\n2"4748 raises exception4749 #update_issue4750 returns a truthy result4751 behaves like Sentry API response size limit4752 raises an exception when response is too large4753 behaves like calls sentry api4754 calls sentry api4755 when error is encountered4756 raises the error4757 #list_issues4758 behaves like calls sentry api4759 calls sentry api4760 behaves like issues have correct return type4761 returns objects of type Gitlab::ErrorTracking::Error4762 behaves like issues have correct length4763 is expected to eq 34764 behaves like maps Sentry exceptions4765 HTTParty::Error4766 is expected to raise ErrorTracking::SentryClient::Error with "Error when connecting to Sentry"4767 Net::OpenTimeout4768 is expected to raise ErrorTracking::SentryClient::Error with "Connection to Sentry timed out"4769 SocketError4770 is expected to raise ErrorTracking::SentryClient::Error with "Received SocketError when trying to connect to Sentry"4771 OpenSSL::SSL::SSLError4772 is expected to raise ErrorTracking::SentryClient::Error with "Sentry returned invalid SSL data"4773 Errno::ECONNREFUSED4774 is expected to raise ErrorTracking::SentryClient::Error with "Connection refused"4775 StandardError4776 is expected to raise ErrorTracking::SentryClient::Error with "Sentry request failed due to StandardError"4777 behaves like Sentry API response size limit4778 raises an exception when response is too large4779 when response has a pagination info4780 parses the pagination4781 when error object created from sentry response4782 error_object: :id, sentry_response: :id4783 is expected to eq "11"4784 error_object: :first_seen, sentry_response: :firstSeen4785 is expected to eq "2018-12-17T12:00:14Z"4786 error_object: :last_seen, sentry_response: :lastSeen4787 is expected to eq "2018-12-31T12:00:11Z"4788 error_object: :title, sentry_response: :title4789 is expected to eq "gaierror: [Errno -2] Name or service not known"4790 error_object: :type, sentry_response: :type4791 is expected to eq "error"4792 error_object: :user_count, sentry_response: :userCount4793 is expected to eq 04794 error_object: :count, sentry_response: :count4795 is expected to eq "21"4796 error_object: :message, sentry_response: [:metadata, :value]4797 is expected to eq "[Errno -2] Name or service not known"4798 error_object: :culprit, sentry_response: :culprit4799 is expected to eq "sentry.tasks.reports.deliver_organization_user_report"4800 error_object: :short_id, sentry_response: :shortId4801 is expected to eq "INTERNAL-4"4802 error_object: :status, sentry_response: :status4803 is expected to eq "unresolved"4804 error_object: :frequency, sentry_response: [:stats, "24h"]4805 is expected to eq [[1546437600, 0]]4806 error_object: :project_id, sentry_response: [:project, :id]4807 is expected to eq "1"4808 error_object: :project_name, sentry_response: [:project, :name]4809 is expected to eq "Internal"4810 error_object: :project_slug, sentry_response: [:project, :slug]4811 is expected to eq "internal"4812 behaves like has correct external_url4813 #external_url4814 is constructed correctly4815 with redirects4816 behaves like no Sentry redirects4817 does not follow redirects4818 with sort parameter in sentry api4819 calls the sentry api with sort params4820 with invalid sort params4821 throws an error4822 with older sentry versions where keys are not present4823 behaves like calls sentry api4824 calls sentry api4825 behaves like issues have correct return type4826 returns objects of type Gitlab::ErrorTracking::Error4827 behaves like issues have correct length4828 is expected to eq 14829 behaves like has correct external_url4830 #external_url4831 is constructed correctly4832 when essential keys are missing in API response4833 raises exception4834 when search term is present4835 behaves like calls sentry api4836 calls sentry api4837 behaves like issues have correct return type4838 returns objects of type Gitlab::ErrorTracking::Error4839 behaves like issues have correct length4840 is expected to eq 34841 when cursor is present4842 behaves like calls sentry api4843 calls sentry api4844 behaves like issues have correct return type4845 returns objects of type Gitlab::ErrorTracking::Error4846 behaves like issues have correct length4847 is expected to eq 34848 behaves like non-numeric input handling in Sentry response4849 with non-numeric error id4850 id_input: "string"4851 raises exception4852 id_input: "-1"4853 raises exception4854 id_input: "1\\n2"4855 raises exception4856MetricsServer4857 when targeting puma4858 .fork4859 when in parent process4860 forks into a new process and detaches it4861 when in child process4862 starts the metrics server with the given arguments4863 resets signal handlers from parent process4864 .spawn4865 spawns a new server process and returns its PID4866 when targeting sidekiq4867 .fork4868 when in parent process4869 forks into a new process and detaches it4870 when in child process4871 starts the metrics server with the given arguments4872 resets signal handlers from parent process4873 .spawn4874 spawns a new server process and returns its PID4875 when targeting invalid target4876 .fork4877 raises an error4878 .spawn4879 raises an error4880 for puma4881 behaves like a metrics exporter4882 #start4883 configures ::Prometheus::Client4884 ensures that metrics directory exists in correct mode (0700)4885 starts a metrics server4886 starts a RubySampler instance4887 when wipe_metrics_dir is true4888 removes any old metrics files4889 when wipe_metrics_dir is false4890 does not remove any old metrics files4891 #name4892 is expected to eq "web_exporter"4893 for sidekiq4894 behaves like a metrics exporter4895 #start4896 configures ::Prometheus::Client4897 ensures that metrics directory exists in correct mode (0700)4898 starts a metrics server4899 starts a RubySampler instance4900 when wipe_metrics_dir is true4901 removes any old metrics files4902 when wipe_metrics_dir is false4903 does not remove any old metrics files4904 #name4905 is expected to eq "sidekiq_exporter"4906 .start_for_puma4907 spawns a server process and supervises it4908 when the supervisor callback is invoked4909 restarts the metrics server4910 .start_for_sidekiq4911 forks the parent process4912 .name4913 for puma4914 is expected to eq "web_exporter"4915 for sidekiq4916 is expected to eq "sidekiq_exporter"4917 for invalid target4918 raises error4919Snippets::CreateService4920 #execute4921 when ProjectSnippet4922 behaves like a service that creates a snippet4923 creates a snippet with the provided attributes4924 behaves like public visibility level restrictions apply4925 when user is not an admin4926 responds with an error4927 does not create a public snippet4928 when user is an admin4929 responds with success4930 creates a public snippet4931 when visibility level is passed as a string4932 assigns the correct visibility level4933 behaves like checking spam4934 executes SpamActionService4935 behaves like snippet create data is tracked4936 increments count when create succeeds4937 when create fails4938 does not increment count4939 behaves like an error service response when save fails4940 responds with an error4941 does not create the snippet4942 behaves like creates repository and files4943 creates repository4944 commits the files to the repository4945 when repository creation action fails4946 does not create the snippet4947 returns a generic creation error4948 does not return a snippet with an id4949 when repository creation fails with invalid file name4950 returns an appropriate error4951 when the commit action fails4952 does not create the snippet4953 destroys the created repository4954 destroys the snippet_repository4955 logs the error4956 returns a generic error4957 when snippet creation fails4958 does not create repository4959 behaves like after_save callback to store_mentions4960 when mentionable attributes change4961 saves mentions4962 when mentionable attributes do not change4963 does not call store_mentions4964 when save fails4965 does not call store_mentions4966 behaves like when snippet_actions param is present4967 creates a snippet with the provided attributes4968 commit the files to the repository4969 when content or file_name params are present4970 a validation error is raised4971 when snippet_actions param is invalid4972 a validation error is raised4973 when snippet_actions contain an action different from "create"4974 a validation error is raised4975 when "create" operation does not have file_path or is empty4976 generates the file path for the files4977 behaves like invalid params error response4978 responds to errors appropriately4979 when uploaded files are passed to the service4980 does not move uploaded files to the snippet4981 when PersonalSnippet4982 behaves like a service that creates a snippet4983 creates a snippet with the provided attributes4984 behaves like public visibility level restrictions apply4985 when user is not an admin4986 responds with an error4987 does not create a public snippet4988 when user is an admin4989 responds with success4990 creates a public snippet4991 when visibility level is passed as a string4992 assigns the correct visibility level4993 behaves like checking spam4994 executes SpamActionService4995 behaves like snippet create data is tracked4996 increments count when create succeeds4997 when create fails4998 does not increment count4999 behaves like an error service response when save fails5000 responds with an error5001 does not create the snippet5002 behaves like creates repository and files5003 creates repository5004 commits the files to the repository5005 when repository creation action fails5006 does not create the snippet5007 returns a generic creation error5008 does not return a snippet with an id5009 when repository creation fails with invalid file name5010 returns an appropriate error5011 when the commit action fails5012 does not create the snippet5013 destroys the created repository5014 destroys the snippet_repository5015 logs the error5016 returns a generic error5017 when snippet creation fails5018 does not create repository5019 behaves like after_save callback to store_mentions5020 when mentionable attributes change5021 saves mentions5022 when mentionable attributes do not change5023 does not call store_mentions5024 when save fails5025 does not call store_mentions5026 behaves like when snippet_actions param is present5027 creates a snippet with the provided attributes5028 commit the files to the repository5029 when content or file_name params are present5030 a validation error is raised5031 when snippet_actions param is invalid5032 a validation error is raised5033 when snippet_actions contain an action different from "create"5034 a validation error is raised5035 when "create" operation does not have file_path or is empty5036 generates the file path for the files5037 behaves like invalid params error response5038 responds to errors appropriately5039 when the snippet description contains files5040 stores the snippet description correctly5041 when there is a validation error5042 does not move uploaded files to the snippet5043Blob5044 .decorate5045 returns NilClass when given nil5046 .lazy5047 with project5048 behaves like .lazy checks5049 does not fetch blobs when none are accessed5050 fetches all blobs for the same repository when one is accessed5051 does not include blobs from previous requests in later requests5052 with personal snippet5053 behaves like .lazy checks5054 does not fetch blobs when none are accessed5055 fetches all blobs for the same repository when one is accessed5056 does not include blobs from previous requests in later requests5057 with project snippet5058 behaves like .lazy checks5059 does not fetch blobs when none are accessed5060 fetches all blobs for the same repository when one is accessed5061 does not include blobs from previous requests in later requests5062 #data5063 with project5064 behaves like #data checks5065 using a binary blob5066 returns the data as-is5067 using a text blob5068 converts the data to UTF-85069 with personal snippet5070 behaves like #data checks5071 using a binary blob5072 returns the data as-is5073 using a text blob5074 converts the data to UTF-85075 with project snippet5076 behaves like #data checks5077 using a binary blob5078 returns the data as-is5079 using a text blob5080 converts the data to UTF-85081 #external_storage_error?5082 if the blob is stored in LFS5083 when LFS is enabled5084 is expected to be falsy5085 when LFS is not enabled5086 is expected to be truthy5087 if the blob is not stored in LFS5088 is expected to be falsy5089 #stored_externally?5090 if the blob is stored in LFS5091 when LFS is enabled5092 is expected to be truthy5093 when LFS is not enabled5094 is expected to be falsy5095 if the blob is not stored in LFS5096 is expected to be falsy5097 #binary?5098 an lfs object5099 filename: "file.pdf", is_binary: true5100 is expected to eq true5101 filename: "file.md", is_binary: false5102 is expected to eq false5103 filename: "file.txt", is_binary: false5104 is expected to eq false5105 filename: "file.ics", is_binary: false5106 is expected to eq false5107 filename: "file.rb", is_binary: false5108 is expected to eq false5109 filename: "file.exe", is_binary: true5110 is expected to eq true5111 filename: "file.ini", is_binary: false5112 is expected to eq false5113 filename: "file.wtf", is_binary: true5114 is expected to eq true5115 a non-lfs object5116 delegates to binary_in_repo?5117 #symlink?5118 is true for symlinks5119 is false for non-symlinks5120 #executable?5121 is true for executables5122 is false for non-executables5123 #extension5124 returns the extension5125 #file_type5126 returns the file type5127 #simple_viewer5128 when the blob is empty5129 returns an empty viewer5130 when the file represented by the blob is binary5131 returns a download viewer5132 when the file represented by the blob is text-based5133 returns a text viewer5134 #rich_viewer5135 when the blob has an external storage error5136 returns nil5137 when the blob is empty5138 returns nil5139 when the blob is stored externally5140 returns a matching viewer5141 when the blob is binary5142 returns a matching binary viewer5143 when the blob is text-based5144 returns a matching text-based viewer5145 when the blob is video5146 returns a video viewer5147 when the blob is audio5148 returns an audio viewer5149 #auxiliary_viewer5150 when the blob has an external storage error5151 returns nil5152 when the blob is empty5153 returns nil5154 when the blob is stored externally5155 returns a matching viewer5156 when the blob is binary5157 returns nil5158 when the blob is text-based5159 returns a matching text-based viewer5160 when the blob is GitlabCiYml5161 returns a matching viewer for .gitlab-ci.yml5162 returns nil for non .gitlab-ci.yml5163 when the project has a custom CI config path5164 returns a matching viewer for the custom CI file5165 returns nil for the incorrect CI file5166 #rendered_as_text?5167 when ignoring errors5168 when the simple viewer is text-based5169 is expected to be truthy5170 when the simple viewer is binary5171 is expected to be falsy5172 when not ignoring errors5173 when the viewer has render errors5174 is expected to be falsy5175 when the viewer doesn't have render errors5176 is expected to be truthy5177 policy5178 works with policy5179 when project is nil5180 does not err5181Integrations::ChatMessage::PipelineMessage5182 returns an empty pretext5183 returns the pipeline summary in the activity's title5184 returns pipeline name5185 returns a link to the project in the activity's subtitle5186 returns the build duration in the activity's text property5187 returns the user's avatar image URL in the activity's image property5188 returns the pipeline summary as the attachment's fallback property5189 returns 'good' as the attachment's color property5190 returns the committer's name and username as the attachment's author_name property5191 returns the committer's avatar URL as the attachment's author_icon property5192 returns the committer's GitLab profile URL as the attachment's author_link property5193 returns the pipeline ID, status, and duration as the attachment's title property5194 returns the pipeline URL as the attachment's title_link property5195 returns three attachment fields5196 returns the commit message as the attachment's second field property5197 returns the ref name and link as the attachment's second field property5198 returns the project's name as the attachment's footer property5199 returns the project's avatar URL as the attachment's footer_icon property5200 returns the pipeline's timestamp as the attachment's ts property5201 behaves like Integrations::ChatMessage5202 when input contains link markup5203 strips all link markup characters5204 when the pipeline failed5205 returns the summary with a 'failed' status5206 when the pipeline passed with warnings5207 returns the summary with a 'passed with warnings' status5208 when no user is provided because the pipeline was triggered by the API5209 returns the summary with 'API' as the username5210 when the user does not have an avatar5211 returns an empty string in the activity's image property5212 when the pipeline failed5213 returns 'danger' as the attachment's color property5214 when the pipeline passed with warnings5215 returns 'warning' as the attachment's color property5216 when no user is provided because the pipeline was triggered by the API5217 returns the committer's name and username as the attachment's author_name property5218 returns nil as the attachment's author_icon property5219 returns nil as the attachment's author_link property5220 when a job in the pipeline fails5221 returns five attachment fields5222 returns the stage name and link to the 'Failed jobs' tab on the pipeline's page as the attachment's third field property5223 returns the job name and link as the attachment's fourth field property5224 when lots of jobs across multiple stages fail5225 returns the stage names and links to the 'Failed jobs' tab on the pipeline's page as the attachment's third field property5226 returns the job names and links as the attachment's fourth field property5227 when jobs succeed on retries5228 do not return a job which succeeded on retry5229 when jobs failed even on retries5230 returns only first instance of the failed job5231 when the CI config file contains a YAML error5232 returns four attachment fields5233 returns the YAML error deatils as the attachment's third field property5234 when rendering markdown5235 returns the pipeline summary as the attachments in markdown format5236 #attachment_color5237 when success5238 is expected to eq "good"5239 when passed with warnings5240 is expected to eq "warning"5241 when failed5242 is expected to eq "danger"5243Gitlab::BitbucketImport::Importer5244 #import_pull_requests5245 imports threaded discussions5246 calls RefConverter to convert Bitbucket refs to Gitlab refs5247 when author is blank5248 adds created by anonymous in the description5249 when user exists in GitLab5250 does not add author line to comments5251 when importing a pull request throws an exception5252 logs an error without the backtrace5253 when source SHA is not found in the repository5254 uses merge commit SHA for source5255 when the merge commit SHA is also not found5256 uses the pull request sha references5257 when target_branch_sha is blank5258 creates the merge request with no target branch5259 metrics5260 counts imported pull requests5261 when pull request was already imported5262 does not import the previously imported pull requests5263 issues statuses5264 maps statuses to open or closed5265 creating labels on project5266 creates labels as expected5267 does not fail if label is already existing5268 does not create new labels5269 does not update existing ones5270 raises an error if a label is not valid5271 wiki import5272 is skipped when the wiki exists5273 imports to the project disk_path5274 issue import5275 allocates internal ids5276 maps reporters to anonymous if bitbucket reporter is nil5277 sets work item type on new issues5278 with issue comments5279 imports issue comments5280 calls RefConverter to convert Bitbucket refs to Gitlab refs5281 when issue was already imported5282 does not import previously imported issues5283 metrics5284 counts imported issues5285 #execute5286 metrics5287 counts and measures duration of imported projects5288Mutations::MergeRequests::SetMilestone5289 is expected to require graphql authorizations :update_merge_request5290 #resolve5291 raises an error if the resource is not accessible to the user5292 behaves like permission level for merge request mutation is correctly verified5293 when the user is not a project member5294 behaves like when the user does not have access to the resource5295 raises an error5296 even if assigned to the merge request5297 does not modify merge request5298 even if reviewer of the merge request5299 raises an error5300 even if author of the merge request5301 raises an error5302 when the user is a project member5303 with guest role5304 behaves like when the user does not have access to the resource5305 raises an error5306 even if assigned to the merge request5307 does not modify merge request5308 even if reviewer of the merge request5309 raises an error5310 even if author of the merge request5311 raises an error5312 with reporter role5313 behaves like when the user does not have access to the resource5314 raises an error5315 even if assigned to the merge request5316 does not modify merge request5317 even if reviewer of the merge request5318 raises an error5319 even if author of the merge request5320 raises an error5321 when the user can update the merge request5322 returns the merge request with the milestone5323 returns errors merge request could not be updated5324 when passing milestone_id as nil5325 removes the milestone5326 does not do anything if the MR already does not have a milestone5327 when issue assignee is a guest5328 does not update the milestone5329 when passing milestone_id as nil5330 does not remove the milestone5331CommitCollection5332 #each5333 yields every commit5334 .committers5335 returns a relation of users when users are found5336 returns empty array when committers cannot be found5337 when is with_merge_commits false5338 excludes authors of merge commits5339 when is with_merge_commits true5340 does not exclude authors of merge commits5341 when committer email is nil5342 returns empty array when committers cannot be found5343 #committer_user_ids5344 returns an array of committer user IDs5345 when there are no committers5346 returns an empty array5347 #without_merge_commits5348 returns all commits except merge commits5349 #with_latest_pipeline5350 sets the latest pipeline for every commit so no additional queries are necessary5351 performs a single query to fetch pipeline warnings5352 #with_markdown_cache5353 preloads commits cache markdown5354 enrichment methods5355 #unenriched5356 returns all commits that are not backed by gitaly data5357 #fully_enriched?5358 returns true when all commits are backed by gitaly data5359 returns false when any commits are not backed by gitaly data5360 returns true when the collection is empty5361 #enrich!5362 replaces commits in the collection with those backed by gitaly data5363 maintains the original order of the commits5364 fetches data if there are unenriched commits5365 does not fetch data if all commits are enriched5366 returns the original commit if the commit could not be lazy loaded5367 #load_tags5368 loads tags5369 #respond_to_missing?5370 returns true when the underlying Array responds to the message5371 returns false when the underlying Array does not respond to the message5372 #method_missing5373 delegates undefined methods to the underlying Array5374API::Validations::Validators::BulkImports::SourceFullPath5375 when source_type is project_entity5376 when source_full_path param is invalid5377 invalid_param: ""5378 raises a validation error5379 invalid_param: "?gitlab"5380 raises a validation error5381 invalid_param: "Users's something"5382 raises a validation error5383 invalid_param: "/source"5384 raises a validation error5385 invalid_param: "http:"5386 raises a validation error5387 invalid_param: "https:"5388 raises a validation error5389 invalid_param: "example.com/?stuff=true"5390 raises a validation error5391 invalid_param: "example.com:5000/?stuff=true"5392 raises a validation error5393 invalid_param: "http://gitlab.example/gitlab-org/manage/import/gitlab-migration-test"5394 raises a validation error5395 invalid_param: "good_for_me!"5396 raises a validation error5397 invalid_param: "good_for+you"5398 raises a validation error5399 invalid_param: "source/"5400 raises a validation error5401 invalid_param: "source"5402 raises a validation error5403 invalid_param: ".source/full./path"5404 raises a validation error5405 invalid_param: "domain_namespace"5406 raises a validation error5407 invalid_param: "gitlab-migration-test"5408 raises a validation error5409 invalid_param: "1-project-path"5410 raises a validation error5411 invalid_param: "e-project-path"5412 raises a validation error5413 when source_full_path param is valid5414 valid_param: "source/full"5415 does not raise a validation error5416 valid_param: "source/full/path"5417 does not raise a validation error5418 valid_param: "sou_rce/fu-ll/pa.th"5419 does not raise a validation error5420 valid_param: "source/full/path---"5421 does not raise a validation error5422 valid_param: "source/full/..path"5423 does not raise a validation error5424 when source_type is group_entity5425 when source_full_path param is invalid5426 invalid_param: ""5427 raises a validation error5428 invalid_param: "?gitlab"5429 raises a validation error5430 invalid_param: "Users's something"5431 raises a validation error5432 invalid_param: "/source"5433 raises a validation error5434 invalid_param: "http:"5435 raises a validation error5436 invalid_param: "https:"5437 raises a validation error5438 invalid_param: "example.com/?stuff=true"5439 raises a validation error5440 invalid_param: "example.com:5000/?stuff=true"5441 raises a validation error5442 invalid_param: "http://gitlab.example/gitlab-org/manage/import/gitlab-migration-test"5443 raises a validation error5444 invalid_param: "good_for_me!"5445 raises a validation error5446 invalid_param: "good_for+you"5447 raises a validation error5448 invalid_param: "source/"5449 raises a validation error5450 invalid_param: ".source/full/path."5451 raises a validation error5452 when source_full_path param is valid5453 valid_param: "source"5454 does not raise a validation error5455 valid_param: "source/full"5456 does not raise a validation error5457 valid_param: "source/full/path"5458 does not raise a validation error5459 valid_param: "sou_rce/fu-ll/pa.th"5460 does not raise a validation error5461 valid_param: "source/full/path---"5462 does not raise a validation error5463 valid_param: "source/full/..path"5464 does not raise a validation error5465 valid_param: "domain_namespace"5466 does not raise a validation error5467 valid_param: "gitlab-migration-test"5468 does not raise a validation error5469 valid_param: "1-project-path"5470 does not raise a validation error5471 valid_param: "e-project-path"5472 does not raise a validation error5473 when source_type is invalid5474 when source_full_path param is invalid5475 invalid_param: ""5476 raises a validation error5477 invalid_param: "?gitlab"5478 raises a validation error5479 invalid_param: "Users's something"5480 raises a validation error5481 invalid_param: "/source"5482 raises a validation error5483 invalid_param: "http:"5484 raises a validation error5485 invalid_param: "https:"5486 raises a validation error5487 invalid_param: "example.com/?stuff=true"5488 raises a validation error5489 invalid_param: "example.com:5000/?stuff=true"5490 raises a validation error5491 invalid_param: "http://gitlab.example/gitlab-org/manage/import/gitlab-migration-test"5492 raises a validation error5493 invalid_param: "good_for_me!"5494 raises a validation error5495 invalid_param: "good_for+you"5496 raises a validation error5497 invalid_param: "source/"5498 raises a validation error5499 invalid_param: ".source/full./path"5500 raises a validation error5501 invalid_param: "source"5502 raises a validation error5503 invalid_param: "source/full"5504 raises a validation error5505 invalid_param: "source/full/path"5506 raises a validation error5507 invalid_param: "sou_rce/fu-ll/pa.th"5508 raises a validation error5509 invalid_param: "domain_namespace"5510 raises a validation error5511 invalid_param: "gitlab-migration-test"5512 raises a validation error5513 invalid_param: "1-project-path"5514 raises a validation error5515 invalid_param: "e-project-path"5516 raises a validation error5517DependencyProxy::ImageTtlGroupPolicies::UpdateService5518 #execute5519 with existing dependency proxy image ttl policy5520 user_role: :owner, shared_examples_name: "updating the dependency proxy image ttl policy"5521 behaves like updating the dependency proxy image ttl policy5522 behaves like updating the dependency proxy image ttl policy attributes5523 updates the dependency proxy image ttl policy5524 behaves like not creating the dependency proxy image ttl policy5525 doesn't create the dependency proxy image ttl policy5526 behaves like returning a success5527 returns a success5528 with invalid params5529 doesn't update5530 behaves like not creating the dependency proxy image ttl policy5531 doesn't create the dependency proxy image ttl policy5532 behaves like returning an error5533 returns an error5534 user_role: :maintainer, shared_examples_name: "denying access to dependency proxy image ttl policy"5535 behaves like denying access to dependency proxy image ttl policy5536 with existing dependency proxy image ttl policy5537 behaves like not creating the dependency proxy image ttl policy5538 doesn't create the dependency proxy image ttl policy5539 behaves like returning an error5540 returns an error5541 behaves like disabling admin_package feature flag5542 behaves like updating the dependency proxy image ttl policy5543 behaves like updating the dependency proxy image ttl policy attributes5544 updates the dependency proxy image ttl policy5545 behaves like not creating the dependency proxy image ttl policy5546 doesn't create the dependency proxy image ttl policy5547 behaves like returning a success5548 returns a success5549 with invalid params5550 doesn't update5551 behaves like not creating the dependency proxy image ttl policy5552 doesn't create the dependency proxy image ttl policy5553 behaves like returning an error5554 returns an error5555 user_role: :developer, shared_examples_name: "denying access to dependency proxy image ttl policy"5556 behaves like denying access to dependency proxy image ttl policy5557 with existing dependency proxy image ttl policy5558 behaves like not creating the dependency proxy image ttl policy5559 doesn't create the dependency proxy image ttl policy5560 behaves like returning an error5561 returns an error5562 user_role: :reporter, shared_examples_name: "denying access to dependency proxy image ttl policy"5563 behaves like denying access to dependency proxy image ttl policy5564 with existing dependency proxy image ttl policy5565 behaves like not creating the dependency proxy image ttl policy5566 doesn't create the dependency proxy image ttl policy5567 behaves like returning an error5568 returns an error5569 user_role: :guest, shared_examples_name: "denying access to dependency proxy image ttl policy"5570 behaves like denying access to dependency proxy image ttl policy5571 with existing dependency proxy image ttl policy5572 behaves like not creating the dependency proxy image ttl policy5573 doesn't create the dependency proxy image ttl policy5574 behaves like returning an error5575 returns an error5576 user_role: :anonymous, shared_examples_name: "denying access to dependency proxy image ttl policy"5577 behaves like denying access to dependency proxy image ttl policy5578 with existing dependency proxy image ttl policy5579 behaves like not creating the dependency proxy image ttl policy5580 doesn't create the dependency proxy image ttl policy5581 behaves like returning an error5582 returns an error5583 without existing dependency proxy image ttl policy5584 user_role: :owner, shared_examples_name: "creating the dependency proxy image ttl policy"5585 behaves like creating the dependency proxy image ttl policy5586 creates a new package setting5587 saves the settings5588 behaves like returning a success5589 returns a success5590 user_role: :maintainer, shared_examples_name: "denying access to dependency proxy image ttl policy"5591 behaves like denying access to dependency proxy image ttl policy5592 with existing dependency proxy image ttl policy5593 behaves like not creating the dependency proxy image ttl policy5594 doesn't create the dependency proxy image ttl policy5595 behaves like returning an error5596 returns an error5597 behaves like disabling admin_package feature flag5598 behaves like creating the dependency proxy image ttl policy5599 creates a new package setting5600 saves the settings5601 behaves like returning a success5602 returns a success5603 user_role: :developer, shared_examples_name: "denying access to dependency proxy image ttl policy"5604 behaves like denying access to dependency proxy image ttl policy5605 with existing dependency proxy image ttl policy5606 behaves like not creating the dependency proxy image ttl policy5607 doesn't create the dependency proxy image ttl policy5608 behaves like returning an error5609 returns an error5610 user_role: :reporter, shared_examples_name: "denying access to dependency proxy image ttl policy"5611 behaves like denying access to dependency proxy image ttl policy5612 with existing dependency proxy image ttl policy5613 behaves like not creating the dependency proxy image ttl policy5614 doesn't create the dependency proxy image ttl policy5615 behaves like returning an error5616 returns an error5617 user_role: :guest, shared_examples_name: "denying access to dependency proxy image ttl policy"5618 behaves like denying access to dependency proxy image ttl policy5619 with existing dependency proxy image ttl policy5620 behaves like not creating the dependency proxy image ttl policy5621 doesn't create the dependency proxy image ttl policy5622 behaves like returning an error5623 returns an error5624 user_role: :anonymous, shared_examples_name: "denying access to dependency proxy image ttl policy"5625 behaves like denying access to dependency proxy image ttl policy5626 with existing dependency proxy image ttl policy5627 behaves like not creating the dependency proxy image ttl policy5628 doesn't create the dependency proxy image ttl policy5629 behaves like returning an error5630 returns an error5631 when the policy is not found5632 when user is owner5633 behaves like returning an error5634 returns an error5635 when user is maintainer5636 behaves like returning an error5637 returns an error5638Mutations::Issues::Update5639 is expected to require graphql authorizations :update_issue5640 #resolve5641 behaves like permission level for issue mutation is correctly verified5642 when the user is not a project member5643 behaves like when the user does not have access to the resource5644 raises an error5645 even if assigned to the issue5646 does not modify issue5647 even if author of the issue5648 does not modify issue5649 when the user is a project member5650 with guest role5651 behaves like when the user does not have access to the resource5652 raises an error5653 even if assigned to the issue5654 does not modify issue5655 even if author of the issue5656 does not modify issue5657 when the user can update the issue5658 when all attributes except timeEstimate are provided5659 updates issue with correct values5660 when iid does not exist5661 raises resource not available error5662 when setting milestone to nil5663 changes the milestone corrrectly5664 when changing state5665 closes issue5666 reopens issue5667 when changing labels5668 adds and removes labels correctly5669 does not add label if label id is nil5670 does not add label if label is not found5671 does not modify labels if label is already present5672 does not modify labels if label is addded and removed in the same request5673 when setting labels with label_ids5674 replaces existing labels with provided ones5675 raises error when label_ids is combined with remove_label_ids5676 raises error when label_ids is combined with add_label_ids5677 when changing type5678 changes the type of the issue5679 when timeEstimate attribute is provided5680 when timeEstimate is invalid5681 raises an argument error and changes are not applied5682 when timeEstimate is negative5683 raises an argument error and changes are not applied5684 when timeEstimate is 05685 resets the time estimate5686 when timeEstimate is a valid human readable time5687 updates the time estimate5688notify/pipeline_failed_email.html.haml5689 when pipeline has a name attribute5690 behaves like pipeline status changes email5691 when the pipeline contains a failed job5692 behaves like renders the pipeline status changes email correctly5693 pipeline with user5694 renders the email correctly5695 behaves like correct pipeline information for pipelines for merge requests5696 when pipeline for merge request5697 renders a source ref of the pipeline5698 pipeline without user5699 renders the email correctly5700 when the latest failed job is a bridge job5701 behaves like renders the pipeline status changes email correctly5702 pipeline with user5703 renders the email correctly5704 behaves like correct pipeline information for pipelines for merge requests5705 when pipeline for merge request5706 renders a source ref of the pipeline5707 pipeline without user5708 renders the email correctly5709 when pipeline does not have a name attribute5710 behaves like pipeline status changes email5711 when the pipeline contains a failed job5712 behaves like renders the pipeline status changes email correctly5713 pipeline with user5714 renders the email correctly5715 behaves like correct pipeline information for pipelines for merge requests5716 when pipeline for merge request5717 renders a source ref of the pipeline5718 pipeline without user5719 renders the email correctly5720 when the latest failed job is a bridge job5721 behaves like renders the pipeline status changes email correctly5722 pipeline with user5723 renders the email correctly5724 behaves like correct pipeline information for pipelines for merge requests5725 when pipeline for merge request5726 renders a source ref of the pipeline5727 pipeline without user5728 renders the email correctly5729Lfs::FileTransformer5730 #new_file5731 with lfs disabled5732 skips gitattributes check5733 returns untransformed content5734 returns untransformed encoding5735 with lfs enabled5736 reuses cached gitattributes5737 creates an LfsObject with the file's content5738 returns an LFS pointer5739 returns LFS pointer encoding as text5740 links LfsObjects to project5741 saves the repository_type to LfsObjectsProject5742 when an actual file is passed5743 creates an LfsObject with the file's content5744 when repository is a design repository5745 creates an LfsObject with the file's content5746 saves the correct repository_type to LfsObjectsProject5747 when content type detection enabled5748 when mime type detected5749 creates a file with custom content type5750 when mime type not detected5751 creates a file with default content type5752 when doesn't use LFS5753 doesn't create LFS pointers5754 when LfsObject already exists5755 links LfsObjects to project5756 when the LfsObject is already linked to project5757 and the service is called again with the same repository type5758 is expected not to change `project.lfs_objects.count`5759 does not create a new LfsObjectsProject record5760 and the service is called again with a different repository type5761 is expected not to change `project.lfs_objects.count`5762 creates a new LfsObjectsProject record5763 sets the correct repository_type on the new LfsObjectsProject record5764Integrations::Harbor5765 behaves like Integrations::ResetSecretFields5766 #exposing_secrets_fields5767 returns an array of strings5768 #reset_secret_fields?5769 returns false if no exposing field has changed5770 returns true if any exposing field has changed5771 validation callback5772 when an exposing field has changed5773 clears all secret fields5774 when a secret field has been updated5775 does not clear this secret field5776 when a secret field has been updated with the same value5777 does not clear this secret field5778 when no exposing field has changed5779 does not clear any secret fields5780 masked password5781 is expected not to allow :password to be ‹"hello"›5782 is expected not to allow :password to be ‹"hello world"›5783 is expected not to allow :password to be ‹"hello$VARIABLEworld"›5784 is expected not to allow :password to be ‹"hello\\rworld"›5785 is expected to allow :password to be ‹"helloworld"›5786 url5787 is expected not to allow :url to be ‹"https://192.168.1.1"›5788 is expected not to allow :url to be ‹"https://127.0.0.1"›5789 is expected to allow :url to be ‹"https://demo.goharbor.io"›5790 hostname5791 returns the host of the integration url5792 #fields5793 returns custom fields5794 #test5795 gets response from Gitlab::Harbor::Client#ping5796 #help5797 renders prompt information5798 .to_param5799 returns the name of the integration5800 ci variables5801 returns vars when harbor_integration is activated5802 when harbor_integration is inactive5803 returns []5804 with robot username5805 returns username variable with $$5806Integrations::GitlabSlackApplication5807 #execute5808 notifies Slack5809 when the integration is not configured for event5810 does not notify Slack5811 when Slack API responds with an error5812 logs the error and API response5813 when there is an HTTP error5814 logs the error5815 when configured to post to multiple Slack channels5816 posts to both Slack channels and returns true5817 when one of the posts responds with an error5818 posts to both channels and returns true5819 when both of the posts respond with an error5820 posts to both channels and returns false5821 when one of the posts raises an HTTP exception5822 posts to one channel and returns true5823 when both of the posts raise an HTTP exception5824 posts to one channel and returns true5825 #description5826 is expected to be present5827 default values5828 is expected to eq :chat5829 is expected not to be alert events5830 is expected not to be commit events5831 is expected not to be confidential issues events5832 is expected not to be confidential note events5833 is expected not to be deployment events5834 is expected not to be issues events5835 is expected not to be job events5836 is expected not to be merge requests events5837 is expected not to be note events5838 is expected not to be pipeline events5839 is expected not to be push events5840 is expected not to be tag push events5841 is expected not to be vulnerability events5842 is expected not to be wiki page events5843 behaves like Integrations::BaseSlackNotification5844 #execute5845 uses only known events5846 when hook data includes a user object5847 when event is not supported for usage log5848 does not increase the usage data counter5849 for issue notification5850 behaves like increases the usage data counter5851 increases the usage data counter5852 behaves like Snowplow event tracking with RedisHLL context5853 behaves like Snowplow event tracking5854 is emitted5855 for push notification5856 behaves like increases the usage data counter5857 increases the usage data counter5858 behaves like Snowplow event tracking with RedisHLL context5859 behaves like Snowplow event tracking5860 is emitted5861 for deployment notification5862 behaves like increases the usage data counter5863 increases the usage data counter5864 behaves like Snowplow event tracking with RedisHLL context5865 behaves like Snowplow event tracking5866 is emitted5867 for wiki_page notification5868 behaves like increases the usage data counter5869 increases the usage data counter5870 behaves like Snowplow event tracking with RedisHLL context5871 behaves like Snowplow event tracking5872 is emitted5873 for merge_request notification5874 behaves like increases the usage data counter5875 increases the usage data counter5876 behaves like Snowplow event tracking with RedisHLL context5877 behaves like Snowplow event tracking5878 is emitted5879 for note notification5880 behaves like increases the usage data counter5881 increases the usage data counter5882 behaves like Snowplow event tracking with RedisHLL context5883 behaves like Snowplow event tracking5884 is emitted5885 for tag_push notification5886 behaves like increases the usage data counter5887 increases the usage data counter5888 behaves like Snowplow event tracking with RedisHLL context5889 behaves like Snowplow event tracking5890 is emitted5891 for confidential note notification5892 behaves like increases the usage data counter5893 increases the usage data counter5894 behaves like Snowplow event tracking with RedisHLL context5895 behaves like Snowplow event tracking5896 is emitted5897 for confidential issue notification5898 behaves like increases the usage data counter5899 increases the usage data counter5900 behaves like Snowplow event tracking with RedisHLL context5901 behaves like Snowplow event tracking5902 is emitted5903 when hook data does not include a user5904 does not increase the usage data counter5905 #upgrade_needed?5906 with all_features_supported5907 is false5908 without all_features_supported5909 is true5910 without slack_integration5911 is false5912 validations5913 is expected not to validate that :webhook cannot be empty/falsy5914 when the integration is not active5915 is not editable, and presents no editable fields5916 does not include sections5917 when the integration is active5918 is editable, and presents editable fields5919 includes the expected sections5920 #test5921 when all channels can be posted to5922 is successful5923 when the same channel is used for multiple events5924 only tests the channel once5925 when there are channels that cannot be posted to5926 returns an error message informing which channels cannot be posted to5927 when integration is not configured for notifications5928 is successful5929 when integration is using legacy version of Slack app5930 returns an error to inform the user to update their integration5931IssueLinks::ListService5932 #execute5933 user can see all issues5934 ensures no N+1 queries are made5935 returns related issues JSON5936 referencing a public project issue5937 presents issue5938 referencing issue with removed relationships5939 when referenced a deleted issue5940 ignores issue5941 when referenced an issue with deleted project5942 ignores issue5943 when referenced an issue with deleted namespace5944 ignores issue5945 user cannot see relations5946 when user cannot see the referenced issue5947 returns an empty list5948 when user cannot see the issue that referenced5949 returns an empty list5950 remove relations5951 user can admin related issues just on target project5952 returns no destroy relation path5953 user can admin related issues just on source project5954 returns no destroy relation path5955 when user can admin related issues on both projects5956 returns related issue destroy relation path5957projects/_home_panel5958 admin area link5959 renders admin area link for admin5960 does not render admin area link for non-admin5961 does not render admin area link for anonymous5962 notifications5963 when user is signed in5964 renders Vue app root5965 when user is signed out5966 does not render Vue app root5967 badges5968 has no badges5969 does not render any badge5970 only has group badges5971 behaves like show badges5972 renders the all badges5973 only has project badges5974 behaves like show badges5975 renders the all badges5976 has both group and project badges5977 behaves like show badges5978 renders the all badges5979 project id5980 user can read project5981 is shown5982 user cannot read project5983 is not shown5984 forks5985 user can read fork source5986 does not show the forked-from project5987 user cannot read fork source5988 shows the message that forked project is inaccessible5989Appearance5990 example at ./spec/models/appearance_spec.rb:95991 is expected to eq nil5992 is expected to have many uploads5993 default values5994 is expected to eq ""5995 is expected to eq ""5996 is expected to eq ""5997 is expected to eq ""5998 is expected to eq ""5999 is expected to eq ""6000 is expected to eq ""6001 is expected to eq ""6002 is expected to eq ""6003 is expected to eq "#E75E40"6004 is expected to eq "#FFFFFF"6005 is expected to eq false6006 is expected to contain exactly 192 and 5126007 #single_appearance_row6008 adds an error when more than 1 row exists6009 with uploads6010 behaves like model with uploads6011 .destroy6012 with mounted uploader6013 deletes remote uploads6014 with not mounted uploads6015 with local files6016 deletes any FileUploader uploads which are not mounted (PENDING: No reason given)6017 deletes local files (PENDING: No reason given)6018 with remote files6019 deletes any FileUploader uploads which are not mounted (PENDING: No reason given)6020 deletes remote files (PENDING: No reason given)6021 behaves like logo paths6022 returns nil when there is no upload6023 returns the path when the upload has been orphaned6024 returns a local path using the system route6025 with asset host configured6026 returns a full URL with the system path6027 behaves like logo paths6028 returns nil when there is no upload6029 returns the path when the upload has been orphaned6030 returns a local path using the system route6031 with asset host configured6032 returns a full URL with the system path6033 behaves like logo paths6034 returns nil when there is no upload6035 returns the path when the upload has been orphaned6036 returns a local path using the system route6037 with asset host configured6038 returns a full URL with the system path6039 behaves like logo paths6040 returns nil when there is no upload6041 returns the path when the upload has been orphaned6042 returns a local path using the system route6043 with asset host configured6044 returns a full URL with the system path6045 behaves like icon paths sized6046 returns icon path with size parameter6047 behaves like icon paths sized6048 returns icon path with size parameter6049 validations6050 is expected to allow :message_background_color to be ‹nil›6051 is expected to allow :message_background_color to be ‹"#000"›6052 is expected to allow :message_background_color to be ‹"#AABBCC"›6053 is expected not to allow :message_background_color to be ‹"000"›6054 is expected to allow :message_font_color to be ‹nil›6055 is expected to allow :message_font_color to be ‹"#000"›6056 is expected to allow :message_font_color to be ‹"#AABBCC"›6057 is expected not to allow :message_font_color to be ‹"000"›6058 valid pwa attributes6059 attribute: :pwa_name, value: nil6060 behaves like validation allows6061 is expected to allow :pwa_name to be ‹nil›6062 attribute: :pwa_name, value: "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"6063 behaves like validation allows6064 is expected to allow :pwa_name to be ‹"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"›6065 attribute: :pwa_short_name, value: nil6066 behaves like validation allows6067 is expected to allow :pwa_short_name to be ‹nil›6068 attribute: :pwa_short_name, value: "SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"6069 behaves like validation allows6070 is expected to allow :pwa_short_name to be ‹"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"›6071 attribute: :pwa_description, value: nil6072 behaves like validation allows6073 is expected to allow :pwa_description to be ‹nil›6074 attribute: :pwa_description, value: "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"6075 behaves like validation allows6076 is expected to allow :pwa_description to be ‹"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT...›6077 invalid pwa attributes6078 attribute: :pwa_name, value: "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", message: "is too long (maximum is 255 characters)"6079 behaves like validation permits with message6080 is expected not to allow :pwa_name to be ‹"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"›, producing a custom validation error on failure6081 attribute: :pwa_short_name, value: "SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS", message: "is too long (maximum is 255 characters)"6082 behaves like validation permits with message6083 is expected not to allow :pwa_short_name to be ‹"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"›, producing a custom validation error on failure6084 attribute: :pwa_description, value: "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT", message: "is too long (maximum is 2048 characters)"6085 behaves like validation permits with message6086 is expected not to allow :pwa_description to be ‹"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT...›, producing a custom validation error on failure6087 email_header_and_footer_enabled6088 default email_header_and_footer_enabled flag value6089 returns email_header_and_footer_enabled as true6090 when setting email_header_and_footer_enabled flag value6091 returns email_header_and_footer_enabled as true6092Projects::ProjectMembersHelper6093 project members6094 #project_members_app_data_json6095 returns expected json6096 sets `members` property that matches json schema6097 sets `member_path` property6098 when pagination is not available6099 sets `pagination` attribute to expected json6100 when pagination is available6101 sets `pagination` attribute to expected json6102 group links6103 sets `group.members` property that matches json schema6104 sets `member_path` property6105 inherited6106 include_relations: [:inherited, :direct], result: lazy { [group_link_7, group_link_4, group_link_9, group_link_5, group_link_3].map(&:id) }6107 returns correct group links6108 include_relations: [:inherited], result: lazy { [group_link_1, group_link_4, group_link_5, group_link_3].map(&:id) }6109 returns correct group links6110 include_relations: [:direct], result: lazy { [group_link_7, group_link_8, group_link_9].map(&:id) }6111 returns correct group links6112 #project_member_header_subtext6113 when user can admin project members6114 contains expected text6115 when user cannot admin project members6116 contains expected text6117load_balancing6118 with replica hosts configured6119 configures load balancer with two replica hosts6120 for a clustered puma worker6121 configures load balancer to have two replica hosts6122 makes a read query successfully6123 makes a write query successfully6124Gitlab::Redis::SidekiqStatus6125 .config_file_name6126 when there is no config file anywhere6127 is expected to be nil6128 .store6129 with old format6130 behaves like redis store6131 instantiates Redis::Store6132 with the namespace6133 uses specified namespace6134 with new format6135 behaves like redis store6136 instantiates Redis::Store6137 with the namespace6138 uses specified namespace6139 .params6140 withstands mutation6141 when url contains unix socket reference6142 with old format6143 returns path key instead6144 with new format6145 returns path key instead6146 when url is host based6147 with old format6148 returns hash with host, port, db, and password6149 with new format6150 rails_env: "development", host: "development-host"6151 returns hash with host, port, db, and password6152 rails_env: "test", host: "test-host"6153 returns hash with host, port, db, and password6154 rails_env: "production", host: "production-host"6155 returns hash with host, port, db, and password6156 with redis cluster format6157 rails_env: "development", host: "development-master"6158 returns hash with cluster and password6159 rails_env: "test", host: "test-master"6160 returns hash with cluster and password6161 rails_env: "production", host: "production-master"6162 returns hash with cluster and password6163 .url6164 withstands mutation6165 when yml file with env variable6166 reads redis url from env variable6167 .version6168 returns a version6169 .with6170 when running on single-threaded runtime6171 instantiates a connection pool with size 56172 when running on multi-threaded runtime6173 instantiates a connection pool with a size based on the concurrency of the worker6174 when there is no config at all6175 can run an empty block6176 #db6177 with old format6178 returns the correct db6179 with new format6180 returns the correct db6181 with cluster-mode6182 returns the correct db6183 #sentinels6184 when sentinels are defined6185 rails_env: "development", hosts: ["development-replica1", "development-replica2"]6186 returns an array of hashes with host and port keys6187 rails_env: "test", hosts: ["test-replica1", "test-replica2"]6188 returns an array of hashes with host and port keys6189 rails_env: "production", hosts: ["production-replica1", "production-replica2"]6190 returns an array of hashes with host and port keys6191 when sentinels are not defined6192 returns nil6193 when cluster is defined6194 returns nil6195 #sentinels?6196 when sentinels are defined6197 returns true6198 when sentinels are not defined6199 is expected to eq nil6200 when cluster is defined6201 returns false6202 #raw_config_hash6203 returns old-style single url config in a hash6204 returns cluster config without url key in a hash6205 #secret_file6206 when explicitly specified in config file6207 returns the absolute path of specified file inside Rails root6208 when not explicitly specified6209 returns the default path in the encrypted settings shared directory6210 #parse_client_tls_options6211 when configuration does not have TLS related options6212 returns the coniguration as-is6213 when specified certificate file does not exist6214 raises error about missing certificate file6215 when specified key file does not exist6216 raises error about missing key file6217 when only certificate file is specified6218 renders resque.yml correctly6219 when only key file is specified6220 renders resque.yml correctly6221 when configuration valid TLS related options6222 converts cert_file and key_file appropriately6223 #fetch_config6224 raises an exception when the config file contains invalid yaml6225 when redis.yml exists6226 uses config/redis.yml6227 when no config file exsits6228 returns nil6229 when resque.yml exists6230 returns the config from resque.yml6231 #pool6232 instantiates an instance of MultiStore6233 behaves like multi store feature flags6234 with feature flag :use_primary_and_secondary_stores_for_sidekiq_status is enabled6235 multi store is enabled6236 with feature flag :use_primary_and_secondary_stores_for_sidekiq_status is disabled6237 multi store is disabled6238 with feature flag :use_primary_store_as_default_for_sidekiq_status is enabled6239 primary store is enabled6240 with feature flag :use_primary_store_as_default_for_sidekiq_status is disabled6241 primary store is disabled6242 #store_name6243 returns the name of the SharedState store6244Search::GlobalService6245 #execute6246 unauthenticated6247 returns public projects only6248 authenticated6249 returns public, internal and private projects6250 returns only public & internal projects6251 project name is searchable6252 does not return archived projects6253 returns archived projects if the include_archived option is passed6254 issues6255 sorting6256 sort: created_desc6257 sorts results by created_at6258 sort: created_asc6259 sorts results by created_at6260 sort: updated_desc6261 sorts results by updated_desc6262 sort: updated_asc6263 sorts results by updated_asc6264 merge_request6265 sorting6266 sort: created_desc6267 sorts results by created_at6268 sort: created_asc6269 sorts results by created_at6270 sort: updated_desc6271 sorts results by updated_desc6272 sort: updated_asc6273 sorts results by updated_asc6274ReactiveCaching6275 #with_reactive_cache6276 when cache is empty6277 is expected to be nil6278 updates the cache lifespan6279 behaves like reactive worker call6280 performs caching with correct worker6281 behaves like reactive worker call6282 performs caching with correct worker6283 when the cache is full6284 behaves like a cacheable value6285 is expected to eq 46286 does not enqueue a background worker6287 updates the cache lifespan6288 and expired6289 is expected to be nil6290 behaves like reactive worker call6291 performs caching with correct worker6292 behaves like reactive worker call6293 performs caching with correct worker6294 when the cache contains non-nil but blank value6295 behaves like a cacheable value6296 is expected to eq false6297 does not enqueue a background worker6298 updates the cache lifespan6299 and expired6300 is expected to be nil6301 behaves like reactive worker call6302 performs caching with correct worker6303 behaves like reactive worker call6304 performs caching with correct worker6305 when the cache contains nil value6306 behaves like a cacheable value6307 is expected to eq nil6308 does not enqueue a background worker6309 updates the cache lifespan6310 and expired6311 is expected to be nil6312 behaves like reactive worker call6313 performs caching with correct worker6314 behaves like reactive worker call6315 performs caching with correct worker6316 #with_reactive_cache_set6317 calls with_reactive_cache6318 data returned6319 saves keys in set6320 returns the data6321 .reactive_cache_worker_finder6322 with default reactive_cache_worker_finder6323 calls the activerecord find_by method6324 with custom reactive_cache_worker_finder6325 overrides the default reactive_cache_worker_finder6326 #clear_reactive_cache!6327 is expected to be nil6328 is expected to be falsy6329 #exclusively_update_reactive_cache!6330 when the lease is free and lifetime is not exceeded6331 takes and releases the lease6332 enqueues a repeat worker6333 calls a reactive_cache_updated only once if content did not change on subsequent update6334 does not delete the value key6335 behaves like successful cache6336 caches the result of #calculate_reactive_cache6337 does not raise the exception6338 when :external_dependency cache6339 enqueues a repeat worker6340 when reactive_cache_hard_limit is set6341 when cache size is over the overridden limit6342 raises ExceededReactiveCacheLimit exception and does not cache new data6343 when reactive_cache_limit_enabled? is overridden to return false6344 behaves like successful cache6345 caches the result of #calculate_reactive_cache6346 does not raise the exception6347 when cache size is within the overridden limit6348 behaves like successful cache6349 caches the result of #calculate_reactive_cache6350 does not raise the exception6351 and #calculate_reactive_cache raises an exception6352 leaves the cache untouched6353 does not enqueue a repeat worker6354 when lifetime is exceeded6355 skips the calculation6356 deletes the value key6357 when the lease is already taken6358 skips the calculation6359 default options6360 is expected to be a kind of ActiveSupport::Duration6361 is expected to be a kind of ActiveSupport::Duration6362 is expected to be a kind of ActiveSupport::Duration6363 is expected to respond to #call6364 is expected to be nil6365 is expected to respond to #call6366 classes including this concern6367 sets reactive_cache_work_type6368Gitlab::Redis::TraceChunks6369 behaves like redis_shared_examples6370 .config_file_name6371 when there is no config file anywhere6372 is expected to be nil6373 .store6374 with old format6375 behaves like redis store6376 instantiates Redis::Store6377 with the namespace6378 uses specified namespace6379 with new format6380 behaves like redis store6381 instantiates Redis::Store6382 with the namespace6383 uses specified namespace6384 .params6385 withstands mutation6386 when url contains unix socket reference6387 with old format6388 returns path key instead6389 with new format6390 returns path key instead6391 when url is host based6392 with old format6393 returns hash with host, port, db, and password6394 with new format6395 rails_env: "development", host: "development-host"6396 returns hash with host, port, db, and password6397 rails_env: "test", host: "test-host"6398 returns hash with host, port, db, and password6399 rails_env: "production", host: "production-host"6400 returns hash with host, port, db, and password6401 with redis cluster format6402 rails_env: "development", host: "development-master"6403 returns hash with cluster and password6404 rails_env: "test", host: "test-master"6405 returns hash with cluster and password6406 rails_env: "production", host: "production-master"6407 returns hash with cluster and password6408 .url6409 withstands mutation6410 when yml file with env variable6411 reads redis url from env variable6412 .version6413 returns a version6414 .with6415 when running on single-threaded runtime6416 instantiates a connection pool with size 56417 when running on multi-threaded runtime6418 instantiates a connection pool with a size based on the concurrency of the worker6419 when there is no config at all6420 can run an empty block6421 #db6422 with old format6423 returns the correct db6424 with new format6425 returns the correct db6426 with cluster-mode6427 returns the correct db6428 #sentinels6429 when sentinels are defined6430 rails_env: "development", hosts: ["development-replica1", "development-replica2"]6431 returns an array of hashes with host and port keys6432 rails_env: "test", hosts: ["test-replica1", "test-replica2"]6433 returns an array of hashes with host and port keys6434 rails_env: "production", hosts: ["production-replica1", "production-replica2"]6435 returns an array of hashes with host and port keys6436 when sentinels are not defined6437 returns nil6438 when cluster is defined6439 returns nil6440 #sentinels?6441 when sentinels are defined6442 returns true6443 when sentinels are not defined6444 is expected to eq nil6445 when cluster is defined6446 returns false6447 #raw_config_hash6448 returns old-style single url config in a hash6449 returns cluster config without url key in a hash6450 #secret_file6451 when explicitly specified in config file6452 returns the absolute path of specified file inside Rails root6453 when not explicitly specified6454 returns the default path in the encrypted settings shared directory6455 #parse_client_tls_options6456 when configuration does not have TLS related options6457 returns the coniguration as-is6458 when specified certificate file does not exist6459 raises error about missing certificate file6460 when specified key file does not exist6461 raises error about missing key file6462 when only certificate file is specified6463 renders resque.yml correctly6464 when only key file is specified6465 renders resque.yml correctly6466 when configuration valid TLS related options6467 converts cert_file and key_file appropriately6468 #fetch_config6469 raises an exception when the config file contains invalid yaml6470 when redis.yml exists6471 uses config/redis.yml6472 when no config file exsits6473 returns nil6474 when resque.yml exists6475 returns the config from resque.yml6476 #fetch_config6477 when redis.yml exists6478 when the fallback has a redis.yml entry6479 is expected to eq {"fallback redis.yml"=>123}6480 and an instance config file exists6481 is expected to eq {"instance specific file"=>456}6482 and the instance has a redis.yml entry6483 is expected to eq {"instance redis.yml"=>789}6484 when no redis config file exsits6485 returns nil6486 when resque.yml exists6487 returns the config from resque.yml6488Gitlab::Patch::RedisCacheStore6489 #delete_multi_entries6490 when cache is Rails.cache6491 behaves like deleting using cache stores6492 deletes multiple cross-slot keys6493 deletes multiple keys6494 when deleting large amount of keys6495 calls pipeline multiple times6496 when cache is feature flag cache store6497 behaves like deleting using cache stores6498 deletes multiple cross-slot keys6499 deletes multiple keys6500 when deleting large amount of keys6501 calls pipeline multiple times6502 when cache is repository cache store6503 behaves like deleting using cache stores6504 deletes multiple cross-slot keys6505 deletes multiple keys6506 when deleting large amount of keys6507 calls pipeline multiple times6508 #read_multi_mget6509 when cache is Rails.cache6510 behaves like reading using cache stores6511 gets multiple cross-slot keys6512 gets multiple keys6513 when reading large amount of keys6514 when GITLAB_REDIS_CLUSTER_PIPELINE_BATCH_LIMIT is smaller than the default6515 behaves like read large amount of keys6516 breaks the input into 2 chunks for redis cluster6517 when GITLAB_REDIS_CLUSTER_PIPELINE_BATCH_LIMIT is larger than the default6518 behaves like read large amount of keys6519 breaks the input into 2 chunks for redis cluster6520 behaves like read large amount of keys6521 breaks the input into 2 chunks for redis cluster6522 when cache is feature flag cache store6523 behaves like reading using cache stores6524 gets multiple cross-slot keys6525 gets multiple keys6526 when reading large amount of keys6527 when GITLAB_REDIS_CLUSTER_PIPELINE_BATCH_LIMIT is smaller than the default6528 behaves like read large amount of keys6529 breaks the input into 2 chunks for redis cluster6530 when GITLAB_REDIS_CLUSTER_PIPELINE_BATCH_LIMIT is larger than the default6531 behaves like read large amount of keys6532 breaks the input into 2 chunks for redis cluster (FAILED - 1)65341st Try error in ./spec/lib/gitlab/patch/redis_cache_store_spec.rb:41:6535(Gitlab::Redis::CrossSlot::Pipeline (class)).new(#<Redis client v4.8.0 for redis://172.19.0.3:7001/0 redis://172.19.0.3:7002/0 redis://172.19.0.3:7003/0>)6536 expected: 2 times with any arguments6537 received: 3 times with arguments: (#<Redis client v4.8.0 for redis://172.19.0.3:7001/0 redis://172.19.0.3:7002/0 redis://172.19.0.3:7003/0>)6539RSpec::Retry: 2nd try ./spec/lib/gitlab/patch/redis_cache_store_spec.rb:416540 behaves like read large amount of keys6541 breaks the input into 2 chunks for redis cluster6542 when cache is repository cache store6543 behaves like reading using cache stores6544 gets multiple cross-slot keys6545 gets multiple keys6546 when reading large amount of keys6547 when GITLAB_REDIS_CLUSTER_PIPELINE_BATCH_LIMIT is smaller than the default6548 behaves like read large amount of keys6549 breaks the input into 2 chunks for redis cluster6550 when GITLAB_REDIS_CLUSTER_PIPELINE_BATCH_LIMIT is larger than the default6551 behaves like read large amount of keys6552 breaks the input into 2 chunks for redis cluster (FAILED - 2)65541st Try error in ./spec/lib/gitlab/patch/redis_cache_store_spec.rb:41:6555(Gitlab::Redis::CrossSlot::Pipeline (class)).new(#<Redis client v4.8.0 for redis://172.19.0.3:7001/0 redis://172.19.0.3:7002/0 redis://172.19.0.3:7003/0>)6556 expected: 2 times with any arguments6557 received: 3 times with arguments: (#<Redis client v4.8.0 for redis://172.19.0.3:7001/0 redis://172.19.0.3:7002/0 redis://172.19.0.3:7003/0>)6559RSpec::Retry: 2nd try ./spec/lib/gitlab/patch/redis_cache_store_spec.rb:416560 behaves like read large amount of keys6561 breaks the input into 2 chunks for redis cluster6562DeploymentMetrics6563 #has_metrics?6564 when deployment is failed6565 is expected to be falsy6566 when deployment is success6567 without a monitoring integration6568 is expected to be falsy6569 with a Prometheus integration6570 is expected to be truthy6571 with a Prometheus integration that cannot query6572 is expected to be falsy6573 with a Prometheus integration that is not configured6574 is expected to be falsy6575 with a cluster Prometheus6576 is expected to be truthy6577 #metrics6578 metrics are disabled6579 is expected to eq {}6580 metrics are enabled6581 is expected to eq {:deployment_time=>1700670469, :last_update=>42, :metrics=>{}, :success=>true}6582 #additional_metrics6583 metrics are disabled6584 is expected to eq {}6585 metrics are enabled6586 is expected to eq {:deployment_time=>1700670471, :last_update=>42, :metrics=>{}, :success=>true}6587CreateCommitSignatureWorker6588 when a signature is found6589 calls Gitlab::Gpg::Commit#signature6590 can recover from exception and continue the signature process6591 calls Gitlab::X509::Commit#signature6592 can recover from exception and continue the X509 signature process6593 behaves like an idempotent worker6594 is labeled as idempotent6595 performs multiple times sequentially without raising an exception6596 handles when a string is passed in for the commit SHA6597 creates a signature once6598 when Commit is not found6599 does not raise errors6600 when Project is not found6601 does not raise errors6602 does not call Gitlab::Gpg::Commit#signature6603 does not call Gitlab::X509::Commit#signature6604 fetching signatures6605 X5096606 performs a single query for commit signatures6607 PGP6608 performs a single query for commit signatures6609Gitlab::Cache::Ci::ProjectPipelineStatus6610 .load_for_project6611 loads the status6612 loading in batches6613 .load_in_batch_for_projects6614 loads pipeline_status on projects6615 loads 10 projects without hitting Gitaly call limit6616 .update_for_pipeline6617 refreshes the cache if nescessary6618 #has_status?6619 is false when the status wasn't loaded yet6620 is true when all status information was loaded6621 #load_status6622 loads the status from the cache when there is one6623 loads the status from the project commit when there is no cache6624 stores the status in the cache when it loading it from the project6625 sets the state to loaded6626 only loads the status once6627 handles Gitaly unavailable exceptions gracefully6628 handles Gitaly timeout exceptions gracefully6629 gitaly call counts6630 not cached6631 makes a Gitaly call6632 cached6633 makes no Gitaly calls6634 #load_from_project6635 reads the status from the pipeline for the commit6636 doesn't fail for an empty project6637 #store_in_cache6638 sets the object in caching6639 #store_in_cache_if_needed6640 stores the state in the cache when the sha is the HEAD of the project6641 doesn't store the status in redis_cache when the sha is not the head of the project6642 deletes the cache if the repository doesn't have a head commit6643 with a status in caching6644 #load_from_cache6645 reads the status from redis_cache6646 refreshes ttl6647 when status is empty string6648 reads the status as nil6649 #has_cache?6650 knows the status is cached6651 #delete_from_cache6652 deletes values from redis_cache6653UploadService6654 File service6655 for valid gif file6656 is expected to have key :alt6657 is expected to have key :url6658 is expected to have value "banana_sample"6659 is expected to match "banana_sample.gif"6660 for valid png file6661 is expected to have key :alt6662 is expected to have key :url6663 is expected to have value "dk"6664 is expected to match "dk.png"6665 for valid jpg file6666 is expected to have key :alt6667 is expected to have key :url6668 is expected to have value "rails_sample"6669 is expected to match "rails_sample.jpg"6670 for txt file6671 is expected to have key :alt6672 is expected to have key :url6673 is expected to have value "doc_sample.txt"6674 is expected to match "doc_sample.txt"6675 for too large a file6676 is expected to eq {}6677 #override_max_attachment_size6678 allows the upload6679 disallows the upload6680MergeRequestCleanupRefsWorker6681 #perform_work6682 when next cleanup schedule is found6683 marks the cleanup schedule as completed on success6684 when service fails6685 marks the cleanup schedule as unstarted and track the failure6686 and cleanup schedule has already failed 3 times6687 marks the cleanup schedule as failed and track the failure6688 when there is no next cleanup schedule found6689 does nothing6690 #remaining_work_count6691 returns number of scheduled and unstarted cleanup schedule records6692 when count exceeds max_running_jobs6693 gets capped at max_running_jobs6694 #max_running_jobs6695 returns the value of MAX_RUNNING_JOBS6696Ci::DeleteUnitTestsService6697 #execute6698 does not delete unit test failures not older than 14 days6699 deletes unit test failures older than 14 days6700 deletes unit tests that have no more associated unit test failures6701ForkProjectsFinder6702 #execute6703 without a user6704 is expected to eq [#<Project id:1367 group335/project-1665>>]6705 with a user6706 is expected to eq [#<Project id:1371 group338/project-1669>>, #<Project id:1370 group337/project-1668>>]6707 with a member6708 is expected to eq [#<Project id:1375 group341/project-1673>>, #<Project id:1374 group340/project-1672>>, #<Project id:1373 group339/project-1671>>]6709API::Entities::MergeRequestBasic6710 includes expected fields6711 with :with_api_entity_associations scope6712 avoids N+1 queries6713 reviewers6714 includes assigned reviewers6715 squash6716 is expected to eq true6717 squash_on_merge6718 is expected to eq false6719AccessRequestsFinder6720 behaves like #execute6721 when current user cannot see project access requests6722 behaves like a finder returning no results6723 raises Gitlab::Access::AccessDeniedError6724 behaves like a finder returning no results6725 raises Gitlab::Access::AccessDeniedError6726 when current user can see access requests6727 behaves like a finder returning access requesters6728 returns access requesters6729 behaves like a finder returning access requesters6730 returns access requesters6731 behaves like #execute!6732 when current user cannot see access requests6733 behaves like a finder raising Gitlab::Access::AccessDeniedError6734 raises Gitlab::Access::AccessDeniedError6735 behaves like a finder raising Gitlab::Access::AccessDeniedError6736 raises Gitlab::Access::AccessDeniedError6737 when current user can see access requests6738 behaves like a finder returning access requesters6739 returns access requesters6740 behaves like a finder returning access requesters6741 returns access requesters6742User6743 types consistency checks6744 validations6745 validates type presence6746 scopes & predicates6747 .bots6748 includes all bots6749 .without_bots6750 includes everyone except bots6751 .non_internal6752 includes all non_internal users6753 .without_ghosts6754 includes everyone except ghosts6755 .without_project_bot6756 includes everyone except project_bot6757 #bot?6758 is true for all bot user types and false for others6759 #internal?6760 is true for all internal user types and false for others6761 #redacted_name(viewing_user)6762 when user is not a project bot6763 is expected to eq "Sidney Jones1704"6764 when user is a project_bot6765 when groups are present and user can :read_group6766 is expected to eq "Sidney Jones1709"6767 when user can :read_project6768 is expected to eq "Sidney Jones1709"6769 when requester does not have permissions to read project_bot name6770 is expected to eq "****"6771 #resource_bot_resource6772 bot_user: human, member_of: [group], owning_resource: nil6773 returns the owning resource6774 bot_user: project_bot, member_of: [], owning_resource: nil6775 returns the owning resource6776 bot_user: project_bot, member_of: [group], owning_resource: group6777 returns the owning resource6778 bot_user: project_bot, member_of: [project], owning_resource: project6779 returns the owning resource6780 bot_user: project_bot, member_of: [group, project], owning_resource: group6781 returns the owning resource6782 bot_user: project_bot, member_of: [group, group2], owning_resource: group6783 returns the owning resource6784 bot_user: project_bot, member_of: [project, group], owning_resource: project6785 returns the owning resource6786 bot_user: project_bot, member_of: [project, project2], owning_resource: project6787 returns the owning resource6788 resource_bot_owners6789 returns nil when user is not a project bot6790 when the user is a project bot6791 returns an empty array when there is no owning resource6792 returns group owners when owned by a group6793 returns project maintainers when owned by a project6794Gitlab::HTTPConnectionAdapter6795 #connection6796 when local requests are allowed6797 sets up the connection6798 when local requests are not allowed6799 sets up the connection6800 when it is a request to local network6801 raises error6802 when local request allowed6803 sets up the connection6804 when it is a request to local address6805 raises error6806 when local request allowed6807 sets up the connection6808 when port different from URL scheme is used6809 sets up the addr_port accordingly6810 when DNS rebinding protection is disabled6811 sets up the connection6812 when proxy is enabled6813 proxy stays configured6814 when no_proxy matches the request6815 proxy is disabled6816 when no_proxy does not match the request6817 proxy stays configured6818 when URL scheme is not HTTP/HTTPS6819 raises error6820AwardEmojis::DestroyService6821 #execute6822 when user is not authorized6823 behaves like a service that does not authorize the user6824 does not remove the emoji6825 returns an error state6826 returns a nil award6827 returns the error6828 when the user is authorized6829 when user has not awarded an emoji to the awardable6830 behaves like a service that does not authorize the user6831 does not remove the emoji6832 returns an error state6833 returns a nil award6834 returns the error6835 when user has awarded an emoji to the awardable6836 removes the emoji6837 returns a success status6838 returns no errors6839 returns the destroyed award6840 executes hooks6841Gitlab::SidekiqConfig::WorkerMatcher6842 #match?6843 with valid input6844 query: "worker_name=WorkerA", expected_metadatas: ["WorkerA"]6845 is expected to contain exactly "WorkerA"6846 query: "worker_name=WorkerA2", expected_metadatas: ["WorkerA2"]6847 is expected to contain exactly "WorkerA2"6848 query: "worker_name=WorkerB|worker_name=WorkerD", expected_metadatas: ["WorkerB"]6849 is expected to contain exactly "WorkerB"6850 query: "worker_name!=WorkerA", expected_metadatas: ["WorkerA2", "WorkerB", "WorkerC"]6851 is expected to contain exactly "WorkerA2", "WorkerB", and "WorkerC"6852 query: "feature_category=category_a", expected_metadatas: ["WorkerA", "WorkerA2"]6853 is expected to contain exactly "WorkerA" and "WorkerA2"6854 query: "feature_category=category_a,category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6855 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6856 query: "feature_category=category_a|feature_category=category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6857 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6858 query: "feature_category!=category_a", expected_metadatas: ["WorkerB", "WorkerC"]6859 is expected to contain exactly "WorkerB" and "WorkerC"6860 query: "has_external_dependencies=true", expected_metadatas: ["WorkerB"]6861 is expected to contain exactly "WorkerB"6862 query: "has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6863 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6864 query: "has_external_dependencies=true,false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6865 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6866 query: "has_external_dependencies=true|has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6867 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6868 query: "has_external_dependencies!=true", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]6869 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"6870 query: "urgency=high", expected_metadatas: ["WorkerA2", "WorkerB"]6871 is expected to contain exactly "WorkerA2" and "WorkerB"6872 query: "urgency=low", expected_metadatas: ["WorkerA"]6873 is expected to contain exactly "WorkerA"6874 query: "urgency=high,low,throttled", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6875 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6876 query: "urgency=low|urgency=throttled", expected_metadatas: ["WorkerA", "WorkerC"]6877 is expected to contain exactly "WorkerA" and "WorkerC"6878 query: "urgency!=high", expected_metadatas: ["WorkerA", "WorkerC"]6879 is expected to contain exactly "WorkerA" and "WorkerC"6880 query: "name=a", expected_metadatas: ["WorkerA"]6881 is expected to contain exactly "WorkerA"6882 query: "name=a,b", expected_metadatas: ["WorkerA", "WorkerB"]6883 is expected to contain exactly "WorkerA" and "WorkerB"6884 query: "name=a,a:2|name=b", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]6885 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"6886 query: "name!=a,a:2", expected_metadatas: ["WorkerB", "WorkerC"]6887 is expected to contain exactly "WorkerB" and "WorkerC"6888 query: "resource_boundary=memory", expected_metadatas: ["WorkerB", "WorkerC"]6889 is expected to contain exactly "WorkerB" and "WorkerC"6890 query: "resource_boundary=memory,cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]6891 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"6892 query: "resource_boundary=memory|resource_boundary=cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]6893 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"6894 query: "resource_boundary!=memory,cpu", expected_metadatas: ["WorkerA2"]6895 is expected to contain exactly "WorkerA2"6896 query: "tags=no_disk_io", expected_metadatas: ["WorkerA", "WorkerB"]6897 is expected to contain exactly "WorkerA" and "WorkerB"6898 query: "tags=no_disk_io,git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]6899 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"6900 query: "tags=no_disk_io|tags=git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]6901 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"6902 query: "tags=no_disk_io&tags=git_access", expected_metadatas: ["WorkerA"]6903 is expected to contain exactly "WorkerA"6904 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]6905 is expected to contain exactly "WorkerA2" and "WorkerC"6906 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]6907 is expected to contain exactly "WorkerC"6908 query: "tags=unknown_tag", expected_metadatas: []6909 is expected to contain exactly6910 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]6911 is expected to contain exactly "WorkerA2" and "WorkerC"6912 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]6913 is expected to contain exactly "WorkerC"6914 query: "tags!=unknown_tag", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6915 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6916 query: "feature_category=category_a&urgency=high", expected_metadatas: ["WorkerA2"]6917 is expected to contain exactly "WorkerA2"6918 query: "feature_category=category_a&urgency=high|feature_category=category_c", expected_metadatas: ["WorkerA2", "WorkerC"]6919 is expected to contain exactly "WorkerA2" and "WorkerC"6920 query: "*", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]6921 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"6922 with invalid input6923 query: "feature_category=\"category_a\"", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6924 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6925 query: "feature_category=", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6926 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6927 query: "feature_category~category_a", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6928 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm6929 query: "invalid_term=a", error: Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate6930 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate6931Gitlab::DataBuilder::Pipeline6932 .build6933 has correct attributes6934 pipeline with metadata6935 has pipeline name6936 build with runner6937 has runner attributes6938 pipeline without variables6939 has empty variables hash6940 pipeline with variables6941 is expected to be a kind of Array6942 is expected to contain exactly {:key=>"TRIGGER_KEY_1", :value=>"TRIGGER_VALUE_1"}6943 when pipeline is a detached merge request pipeline6944 returns a source ref6945 returns merge request6946 when pipeline has retried builds6947 does not contain retried builds in payload6948 contains retried builds if requested6949 build with environment6950 has environment attributes6951 when the pipeline has an upstream6952 in same project6953 behaves like source pipeline attributes6954 has source pipeline attributes6955 in different project6956 is expected not to eq 14056957 behaves like source pipeline attributes6958 has source pipeline attributes6959 avoids N+1 database queries6960 with multiple builds6961 with multiple retried builds6962 .build failed6963 has failure_reason6964gitlab:artifacts namespace rake task6965 gitlab:artifacts:migrate6966 when local storage is used6967 and remote storage is defined6968 migrates file to remote storage6969 and remote storage is not defined6970 fails to migrate to remote storage6971 when remote storage is used6972 file stays on remote storage6973 gitlab:artifacts:migrate_to_local6974 when remote storage is used6975 and job has remote file store defined6976 migrates file to local storage6977 when local storage is used6978 file stays on local storage6979MergeWorker6980 remove source branch6981 clears cache of source repo after removing source branch6982 behaves like an idempotent worker6983 is labeled as idempotent6984 performs multiple times sequentially without raising an exception6985 the merge request is still shown as merged6986 delegation to MergeRequests::MergeService6987 does not call MergeRequests::MergeService6988 when user exists6989 does not call MergeRequests::MergeService6990 and merge request exists6991 delegates to MergeRequests::MergeService6992 and check_mergeability_retry_lease is specified6993 does not change the check_mergeability_retry_lease parameter6994LastGroupOwnerAssigner6995 #execute6996 avoids extra database queries utilizing memoization6997 when there are unblocked owners6998 with one unblocked owner6999 is expected to change `GroupMember#last_owner` from nil to true7000 with multiple unblocked owners7001 is expected to change `GroupMember#last_owner` from nil to false7002 has many members passed7003 with owners from a parent7004 when top-level group7005 with group sharing7006 is expected to change `GroupMember#last_owner` from nil to true7007 when subgroup7008 is expected to change `GroupMember#last_owner` from nil to false7009 when there are blocked owners7010 with one blocked owner7011 is expected to change `GroupMember#last_owner` from nil to true7012 with multiple unblocked owners7013 is expected to change `GroupMember#last_owner` from nil to false7014 with multiple blocked owners7015 is expected to change `GroupMember#last_owner` from nil to false7016 with owners from a parent7017 when top-level group7018 with group sharing7019 is expected to change `GroupMember#last_owner` from nil to true7020 when subgroup7021 is expected to change `GroupMember#last_owner` from nil to true7022 with two owners7023 is expected to change `GroupMember#last_owner` from nil to false7024 when there are bot members7025 with a bot owner7026 is expected to change `GroupMember#last_owner` from nil to true7027IncidentManagement::TimelineEvent7028 #cache_markdown_field7029 on create7030 updates note_html7031 on update7032 updates note_html7033 .order_occurred_at_asc_id_asc7034 sorts timeline events by occurred_at7035 when two events occured at the same time7036 sorts timeline events by occurred_at then sorts by id7037 validations7038 is expected to validate that :project cannot be empty/falsy7039 is expected to validate that :incident cannot be empty/falsy7040 is expected to validate that :note cannot be empty/falsy7041 is expected to validate that the length of :note is at most 2807042 is expected to validate that the length of :note is at most 100007043 is expected to validate that the length of :note_html is at most 100007044 is expected to validate that :occurred_at cannot be empty/falsy7045 is expected to validate that :action cannot be empty/falsy7046 is expected to validate that the length of :action is at most 1287047 associations7048 is expected to belong to project required: false7049 is expected to belong to author required: false7050 is expected to belong to incident required: false7051 is expected to belong to updated_by_user required: false7052 is expected to belong to promoted_from_note required: false7053 is expected to have many timeline_event_tag_links class_name => IncidentManagement::TimelineEventTagLink7054 is expected to have many timeline_event_tags class_name => IncidentManagement::TimelineEventTag through timeline_event_tag_links7055BulkImports::Projects::Pipelines::LegacyReferencesPipeline7056 #load7057 saves the object when object body changed7058 when object body is not changed7059 does not save the object7060 #transform7061 updates matching urls and usernames with new ones7062 handles situations where old usernames are substrings of new usernames7063 handles situations where old and new usernames are interchanged7064 when object does not have reference or username7065 returns object unchanged7066 when there are not matched urls or usernames7067 returns object unchanged7068 when url path does not start with source full path7069 returns object unchanged7070 when host does not match and url path starts with source full path7071 returns object unchanged7072 when url does not match at all7073 returns object unchanged7074 #extract7075 returns ExtractedData containing issues, mrs & their notes7076 when object body is nil7077 returns ExtractedData not containing the object7078ZoomMeeting7079 Factory7080 is expected to be valid7081 Associations7082 is expected to belong to project required: false7083 is expected to belong to issue required: false7084 scopes7085 .added_to_issue7086 gets only added meetings7087 .removed_from_issue7088 gets only removed meetings7089 Validations7090 is expected to validate that :project cannot be empty/falsy7091 is expected to validate that :issue cannot be empty/falsy7092 when importing7093 is expected not to validate that :project cannot be empty/falsy7094 is expected not to validate that :issue cannot be empty/falsy7095 url7096 is expected to validate that :url cannot be empty/falsy7097 is expected to validate that the length of :url is at most 2557098 with non-Zoom URL7099 is expected to contain exactly "must contain one valid Zoom URL"7100 with multiple Zoom-URLs7101 is expected to contain exactly "must contain one valid Zoom URL"7102 issue association7103 for the same project7104 is expected to be valid7105 for a different project7106 is expected to contain exactly "must associate the same project"7107 limit number of meetings per issue7108 without meetings7109 behaves like can add meetings7110 can add new Zoom meetings7111 when no other meeting is added7112 behaves like can add meetings7113 can add new Zoom meetings7114 when meeting is added7115 behaves like cannot add meetings7116 fails to add a new meeting7117 when meeting is added to another issue7118 behaves like can add meetings7119 can add new Zoom meetings7120 when second meeting is removed7121 behaves like can remove meetings7122 can remove Zoom meetings7123Ci::RunnerProject7124 behaves like includes Limitable concern7125 #exceeds_limits?7126 without plan limits configured7127 is expected to eq false7128 without plan limits configured7129 is expected to eq false7130 with an existing model7131 is expected to eq true7132 validations7133 is expected to be a kind of Limitable7134 without plan limits configured7135 can create new models7136 with plan limits configured7137 can create new models7138 with an existing model7139 cannot create new models exceeding the plan limits7140 loose foreign key on ci_runner_projects.project_id7141 behaves like cleanup by a loose foreign key7142 cleans up (delete or nullify) the model7143Ci::NamespaceMirror7144 scopes7145 .by_group_and_descendants7146 returns groups having group2.id in traversal_ids7147 .contains_any_of_namespaces7148 returns groups having group2.id in traversal_ids7149 .contains_traversal_ids7150 when passing a top-level group7151 returns only itself and children of that group7152 when passing many levels of groups7153 returns only the asked group7154 when passing invalid data7155 data is properly sanitised7156 .by_namespace_id7157 returns namespace mirrors of namespace id7158 .sync!7159 when namespace mirror does not exist in the first place7160 creates the mirror7161 when namespace mirror does already exist7162 updates the mirror7163Gitlab::Instrumentation::RedisClusterValidator7164 .validate7165 command: :rename, arguments: ["foo", "bar"], keys: 2, is_valid: false7166 is expected to eq 27167 command: :RENAME, arguments: ["foo", "bar"], keys: 2, is_valid: false7168 is expected to eq 27169 command: "rename", arguments: ["foo", "bar"], keys: 2, is_valid: false7170 is expected to eq 27171 command: "RENAME", arguments: ["foo", "bar"], keys: 2, is_valid: false7172 is expected to eq 27173 command: :rename, arguments: ["iaa", "ahy"], keys: 2, is_valid: true7174 is expected to eq 27175 command: :rename, arguments: ["{foo}:1", "{foo}:2"], keys: 2, is_valid: true7176 is expected to eq 27177 command: :rename, arguments: ["foo", "foo", "bar"], keys: 2, is_valid: true7178 is expected to eq 27179 command: :mget, arguments: ["foo", "bar"], keys: 2, is_valid: false7180 is expected to eq 27181 command: :mget, arguments: ["foo", "foo", "bar"], keys: 3, is_valid: false7182 is expected to eq 37183 command: :mget, arguments: ["foo", "foo"], keys: 2, is_valid: true7184 is expected to eq 27185 command: :blpop, arguments: ["foo", "bar", "1"], keys: 2, is_valid: false7186 is expected to eq 27187 command: :blpop, arguments: ["foo", "foo", "1"], keys: 2, is_valid: true7188 is expected to eq 27189 command: :mset, arguments: ["foo", "a", "bar", "a"], keys: 2, is_valid: false7190 is expected to eq 27191 command: :mset, arguments: ["foo", "a", "foo", "a"], keys: 2, is_valid: true7192 is expected to eq 27193 command: :del, arguments: ["foo", "bar"], keys: 2, is_valid: false7194 is expected to eq 27195 command: :del, arguments: [["foo", "bar"]], keys: 2, is_valid: false7196 is expected to eq 27197 command: :del, arguments: ["foo", "foo"], keys: 2, is_valid: true7198 is expected to eq 27199 command: :hset, arguments: ["foo", "bar"], keys: 1, is_valid: nil7200 is expected to eq nil7201 command: :get, arguments: ["foo"], keys: 1, is_valid: nil7202 is expected to eq nil7203 command: :mget, arguments: [], keys: 0, is_valid: true7204 is expected to eq 07205 arguments: [[:get, "foo"], [:get, "bar"]], should_raise: true, output: {:valid=>false, :key_count=>2, :command_name=>"PIPELINE/MULTI", :allowed=>false}7206 is expected to eq {:allowed=>false, :command_name=>"PIPELINE/MULTI", :key_count=>2, :valid=>false}7207 arguments: [[:get, "foo"], [:mget, "foo", "bar"]], should_raise: true, output: {:valid=>false, :key_count=>3, :command_name=>"PIPELINE/MULTI", :allowed=>false}7208 is expected to eq {:allowed=>false, :command_name=>"PIPELINE/MULTI", :key_count=>3, :valid=>false}7209 arguments: [[:get, "{foo}:name"], [:get, "{foo}:profile"]], should_raise: false, output: {:valid=>true, :key_count=>2, :command_name=>"PIPELINE/MULTI", :allowed=>false}7210 is expected to eq {:allowed=>false, :command_name=>"PIPELINE/MULTI", :key_count=>2, :valid=>true}7211 arguments: [[:del, "foo"], [:del, "bar"]], should_raise: true, output: {:valid=>false, :key_count=>2, :command_name=>"PIPELINE/MULTI", :allowed=>false}7212 is expected to eq {:allowed=>false, :command_name=>"PIPELINE/MULTI", :key_count=>2, :valid=>false}7213 arguments: [], should_raise: false, output: nil7214 is expected to eq nil7215 .allow_cross_slot_commands7216 skips validation for allowed commands7217 allows nested invocation7218Projects::GroupsFinder7219 #execute7220 Public project7221 behaves like finding related groups7222 returns ancestor groups for this project7223 when the project does not belong to any group7224 is expected to eq []7225 when shared groups option is on7226 returns ancestor and all shared groups7227 when shared_min_access_level is developer7228 returns ancestor and shared groups with at least developer access7229 when shared_visible_only is on7230 returns ancestor and public shared groups7231 when user has access to the private shared group7232 returns ancestor and shared groups user has access to7233 when skip group option is on7234 excludes provided groups7235 when user is not authorized7236 returns ancestor groups for this project7237 when visible shared groups are requested7238 returns ancestor groups and public shared groups for this project7239 Private project7240 behaves like finding related groups7241 returns ancestor groups for this project7242 when the project does not belong to any group7243 is expected to eq []7244 when shared groups option is on7245 returns ancestor and all shared groups7246 when shared_min_access_level is developer7247 returns ancestor and shared groups with at least developer access7248 when shared_visible_only is on7249 returns ancestor and public shared groups7250 when user has access to the private shared group7251 returns ancestor and shared groups user has access to7252 when skip group option is on7253 excludes provided groups7254 when user is not authorized7255 is expected to eq []7256 Missing project7257 is expected to eq []7258Todos::Destroy::ConfidentialIssueService7259 #execute7260 when issue_id parameter is present7261 when provided issue is confidential7262 removes issue todos for users who can not access the confidential issue7263 when provided issue is not confidential7264 does not remove any todos7265 when project_id parameter is present7266 removes issues todos for users that cannot access confidential issues7267Ci::Catalog::Resources::ValidateService7268 #execute7269 when a project has a README, a description, and at least one component7270 is valid7271 when a project has neither a description nor a README nor components7272 is not valid7273 when a project has components but has neither a description nor a README7274 is not valid7275 when a project has a description but has neither a README nor components7276 is not valid7277 when a project has a README but has neither a description nor components7278 is not valid7279 when a project has components and a description but no README7280 is not valid7281 when a project has components and a README but no description7282 is not valid7283 when a project has a description and a README but no components7284 is not valid7285CiPlatformMetric7286 behaves like a BulkInsertSafe model7287 when calling class methods directly7288 raises an error when method is not bulk-insert safe7289 does not raise an error when method is bulk-insert safe7290 .bulk_insert!7291 when all items are valid7292 inserts them all7293 returns an empty array7294 when some items are invalid7295 does not insert any of them and raises an error7296 inserts them anyway when bypassing validations7297 validations7298 is expected to validate that :recorded_at cannot be empty/falsy7299 is expected to validate that :count cannot be empty/falsy7300 is expected to validate that :count looks like an integer greater than 07301 is expected to allow :platform_target to be ‹""›7302 is expected not to allow :platform_target to be ‹nil›7303 is expected to validate that the length of :platform_target is at most 2557304 .insert_auto_devops_platform_targets!7305 when there is already existing metrics data7306 does not erase any existing data7307 when there are multiple platform target variables7308 inserts platform target counts for that day7309 when there are invalid ci variable values for platform_target7310 ignores those values7311 when there are no platform target variables7312 does not generate any new platform metrics7313Gitlab::Database::Partitioning7314 .register_models7315 ensure that the registered models have partitioning strategy7316 fails when partitioning_strategy is not specified for the model7317 .sync_partitions_ignore_db_error7318 calls sync_partitions7319 when ActiveRecord::ActiveRecordError is raised7320 ignores it7321 when PG::Error is raised7322 ignores it7323 when DISABLE_POSTGRES_PARTITION_CREATION_ON_STARTUP is set7324 does not call sync_partitions7325 .sync_partitions7326 manages partitions for each given model7327 for analyze7328 when analyze_interval is not set7329 behaves like not running analyze7330 is expected not to include /ANALYZE VERBOSE /7331 when analyze is set to false7332 behaves like not running analyze7333 is expected not to include /ANALYZE VERBOSE /7334 when analyze_interval is set7335INFO: analyzing "public._test_partitioning_test1" inheritance tree7336INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_000000"7337INFO: "_test_partitioning_test1_000000": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7338INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202311"7339INFO: "_test_partitioning_test1_202311": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7340INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202312"7341INFO: "_test_partitioning_test1_202312": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7342INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202401"7343INFO: "_test_partitioning_test1_202401": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7344INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202402"7345INFO: "_test_partitioning_test1_202402": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7346INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202403"7347INFO: "_test_partitioning_test1_202403": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7348INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202404"7349INFO: "_test_partitioning_test1_202404": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7350INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202405"7351INFO: "_test_partitioning_test1_202405": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7352INFO: analyzing "public._test_partitioning_test2" inheritance tree7353INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_000000"7354INFO: "_test_partitioning_test2_000000": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7355INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202311"7356INFO: "_test_partitioning_test2_202311": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7357INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202312"7358INFO: "_test_partitioning_test2_202312": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7359INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202401"7360INFO: "_test_partitioning_test2_202401": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7361INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202402"7362INFO: "_test_partitioning_test2_202402": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7363INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202403"7364INFO: "_test_partitioning_test2_202403": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7365INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202404"7366INFO: "_test_partitioning_test2_202404": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7367INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202405"7368INFO: "_test_partitioning_test2_202405": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7369INFO: analyzing "public._test_partitioning_test1" inheritance tree7370INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_000000"7371INFO: "_test_partitioning_test1_000000": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7372INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202311"7373INFO: "_test_partitioning_test1_202311": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7374INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202312"7375INFO: "_test_partitioning_test1_202312": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7376INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202401"7377INFO: "_test_partitioning_test1_202401": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7378INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202402"7379INFO: "_test_partitioning_test1_202402": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7380INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202403"7381INFO: "_test_partitioning_test1_202403": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7382INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202404"7383INFO: "_test_partitioning_test1_202404": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7384INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test1_202405"7385INFO: "_test_partitioning_test1_202405": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7386INFO: analyzing "public._test_partitioning_test2" inheritance tree7387INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_000000"7388INFO: "_test_partitioning_test2_000000": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7389INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202311"7390INFO: "_test_partitioning_test2_202311": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7391INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202312"7392INFO: "_test_partitioning_test2_202312": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7393INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202401"7394INFO: "_test_partitioning_test2_202401": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7395INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202402"7396INFO: "_test_partitioning_test2_202402": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7397INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202403"7398INFO: "_test_partitioning_test2_202403": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7399INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202404"7400INFO: "_test_partitioning_test2_202404": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7401INFO: analyzing "gitlab_partitions_dynamic._test_partitioning_test2_202405"7402INFO: "_test_partitioning_test2_202405": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows7403 runs analyze7404 analyze is false7405 behaves like not running analyze7406 is expected not to include /ANALYZE VERBOSE /7407 with multiple databases7408 creates partitions in each database7409 without ci database7410 only creates partitions for main database (PENDING: Skipping because database ci exists)7411 when no partitioned models are given7412 manages partitions for each registered model7413 when only a specific database is requested7414 manages partitions for models for the given database7415 when partition_manager_sync_partitions feature flag is disabled7416 skips sync_partitions7417 when disallow_database_ddl_feature_flags feature flag is enabled7418 skips sync_partitions7419 .report_metrics7420 when no partitioned models are given7421 reports metrics for each registered model7422 when partitioned models are given7423 reports metrics for each given model7424 .drop_detached_partitions7425 drops detached partitions for each database7426 when the feature flag is disabled7427 does not call the DetachedPartitionDropper7428 when the feature disallow DDL feature flags is enabled7429 does not call the DetachedPartitionDropper7430ProductAnalyticsEvent7431 is expected to belong to project required: false7432 is expected to respond to #order_by_time7433 validations7434 is expected to validate that :project_id cannot be empty/falsy7435 is expected to validate that :event_id cannot be empty/falsy7436 is expected to validate that :v_collector cannot be empty/falsy7437 is expected to validate that :v_etl cannot be empty/falsy7438 .timerange7439 is expected to contain exactly #<ProductAnalyticsEvent id: 1, project_id: 1485, platform: "web", etl_tstamp: nil, collector_tstamp: ...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>7440 is expected to contain exactly #<ProductAnalyticsEvent id: 1, project_id: 1485, platform: "web", etl_tstamp: nil, collector_tstamp: ...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil> and #<ProductAnalyticsEvent id: 2, project_id: 1486, platform: "web", etl_tstamp: nil, collector_tstamp: ...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>7441 is expected to contain exactly #<ProductAnalyticsEvent id: 1, project_id: 1485, platform: "web", etl_tstamp: nil, collector_tstamp: ...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>, #<ProductAnalyticsEvent id: 2, project_id: 1486, platform: "web", etl_tstamp: nil, collector_tstamp: ...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>, and #<ProductAnalyticsEvent id: 3, project_id: 1487, platform: "web", etl_tstamp: nil, collector_tstamp: ...l, event_name: nil, event_format: nil, event_version: nil, event_fingerprint: nil, true_tstamp: nil>7442 .count_by_graph7443 is expected to eq {"app"=>1, "web"=>2}7444 is expected to eq {"app"=>1, "mobile"=>1, "web"=>2}7445 .count_collector_tstamp_by_day7446 is expected to eq {2023-11-22 00:00:00.000000000 +0000=>3, 2023-11-17 00:00:00.000000000 +0000=>2}7447TagsFinder7448 #execute7449 sort only7450 sorts by name7451 sorts by recently_updated7452 sorts by last_updated7453 when sort is not a string7454 ignores sort parameter7455 filter only7456 filters tags by name7457 does not find any tags with that name7458 filters tags by name that begins with7459 filters tags by name that ends with7460 filters tags by name with wildcard7461 filters tags by nonexistent name that begins with7462 filters tags by nonexistent name that ends with7463 filters tags by nonexistent name with wildcard7464 when search is not a string7465 returns no matches7466 filter and sort7467 when sort by updated_desc7468 filters tags by name7469 when sort by updated_asc7470 filters tags by name7471 with Gitaly pagination7472 by page_token and per_page7473 filters tags7474 by next page_token and per_page7475 filters branches7476 by per_page only7477 filters branches7478 by page_token only7479 raises an error7480 pagination and sort7481 by per_page7482 filters branches7483 by page_token and per_page7484 filters branches7485 pagination and search7486 ignores the pagination for search7487 when Gitaly is unavailable7488 raises an exception7489 #next_cursor7490 always nil before #execute call7491 after #execute7492 with gitaly pagination7493 without pagination params7494 is expected to be nil7495 with pagination params7496 is expected to be present7497 when all objects can be returned on the same page7498 is expected to be present7499 without gitaly pagination7500 without pagination params7501 is expected to be nil7502 with pagination params7503 is expected to be nil7504 when all objects can be returned on the same page7505 is expected to be nil7506Projects::ImportExport::RelationExportService7507 #execute7508 removes temporary paths used to export files7509 when saver fails to export relation7510 flags export as failed7511 logs failed message7512 when an exception is raised7513 flags export as failed7514 logs exception error message7515 relation name and saver class7516 relation_name: "uploads", saver: Gitlab::ImportExport::UploadsSaver7517 exports relation using correct saver7518 assigns finished status and relation file7519 relation_name: "repository", saver: Gitlab::ImportExport::RepoSaver7520 exports relation using correct saver7521 assigns finished status and relation file7522 relation_name: "wiki_repository", saver: Gitlab::ImportExport::WikiRepoSaver7523 exports relation using correct saver7524 assigns finished status and relation file7525 relation_name: "lfs_objects", saver: Gitlab::ImportExport::LfsSaver7526 exports relation using correct saver7527 assigns finished status and relation file7528 relation_name: "snippets_repository", saver: Gitlab::ImportExport::SnippetsRepoSaver7529 exports relation using correct saver7530 assigns finished status and relation file7531 relation_name: "design_repository", saver: Gitlab::ImportExport::DesignRepoSaver7532 exports relation using correct saver7533 assigns finished status and relation file7534 relation_name: "project", saver: Gitlab::ImportExport::Project::RelationSaver7535 exports relation using correct saver7536 assigns finished status and relation file7537 relation_name: "labels", saver: Gitlab::ImportExport::Project::RelationSaver7538 exports relation using correct saver7539 assigns finished status and relation file7540FeatureFlags::UpdateService7541 #execute7542 returns success status7543 creates audit event with correct message7544 when Jira Connect subscription does not exist7545 does not sync the feature flag to Jira7546 when Jira Connect subscription exists7547 syncs the feature flag to Jira7548 behaves like update feature flag client7549 updates last feature flag updated at7550 with invalid params7551 returns error status7552 returns error messages7553 does not create audit event7554 does not sync the feature flag to Jira7555 behaves like does not update feature flag client7556 does not update last feature flag updated at7557 when user is reporter7558 returns error status7559 when nothing is changed7560 returns success status7561 does not create audit event7562 description is being changed7563 creates audit event with changed description7564 when flag active state is changed7565 creates audit event about changing active state7566 executes hooks7567Gitlab::Conflict::FileCollection7568 #files7569 returns an array of Conflict::Files7570 #cache7571 specifies a custom namespace with the merge request commit ids7572 #can_be_resolved_in_ui?7573 returns true if conflicts for this collection can be resolved in the UI7574 returns false if conflicts for this collection can't be resolved in the UI7575 caches the result7576 #default_commit_message7577 matches the format of the git CLI commit message7578Gitlab::Database::HealthStatus::Indicators::WalRate7579 behaves like Prometheus Alert based health indicator7580 #evaluate7581 behaves like Patroni Apdex Evaluator7582 with main schema7583 returns NoSignal signal in case the feature flag is disabled7584 returns Normal signal when SLI condition is met7585 returns Stop signal when SLI condition is not met7586 without prometheus_alert_db_indicators_settings7587 returns Unknown signal7588 when Prometheus client is not ready7589 returns Unknown signal7590 when apdex SLI query is not configured7591 returns Unknown signal7592 when slo is not configured7593 returns Unknown signal7594 when SLI can not be calculated7595 result: nil7596 returns Unknown signal7597 result: []7598 returns Unknown signal7599 result: [{}]7600 returns Unknown signal7601 result: [{"value"=>1}]7602 returns Unknown signal7603 result: [{"value"=>[1]}]7604 returns Unknown signal7605 behaves like Patroni Apdex Evaluator7606 with ci schema7607 returns NoSignal signal in case the feature flag is disabled7608 returns Normal signal when SLI condition is met7609 returns Stop signal when SLI condition is not met7610 without prometheus_alert_db_indicators_settings7611 returns Unknown signal7612 when Prometheus client is not ready7613 returns Unknown signal7614 when apdex SLI query is not configured7615 returns Unknown signal7616 when slo is not configured7617 returns Unknown signal7618 when SLI can not be calculated7619 result: nil7620 returns Unknown signal7621 result: []7622 returns Unknown signal7623 result: [{}]7624 returns Unknown signal7625 result: [{"value"=>1}]7626 returns Unknown signal7627 result: [{"value"=>[1]}]7628 returns Unknown signal7629Packages::Protection::CreateRuleService#execute7630 when disallowed params are passed7631 behaves like a successful service response7632 is expected to be success7633 is expected to have attributes {:payload => (include {:package_protection_rule => (be a kind of Packages::Protection::Rule(id: integer...eger, package_type: integer, package_name_pattern: text, package_name_pattern_ilike_query: text))})}7634 is expected to include {:package_protection_rule => (be a kind of Packages::Protection::Rule(id: integer, project_id: integer, created_at: timestamptz, updated_at: tim... integer, package_type: integer, package_name_pattern: text, package_name_pattern_ilike_query: text))}7635 is expected to exist7636 without existing PackageProtectionRules7637 when fields are valid7638 behaves like a successful service response7639 is expected to be success7640 is expected to have attributes {:payload => (include {:package_protection_rule => (be a kind of Packages::Protection::Rule(id: integer...eger, package_type: integer, package_name_pattern: text, package_name_pattern_ilike_query: text))})}7641 is expected to include {:package_protection_rule => (be a kind of Packages::Protection::Rule(id: integer, project_id: integer, created_at: timestamptz, updated_at: tim... integer, package_type: integer, package_name_pattern: text, package_name_pattern_ilike_query: text))}7642 is expected to exist7643 when fields are invalid7644 behaves like an erroneous service response7645 is expected to be error7646 is expected to have attributes {:payload => (include {:package_protection_rule => nil})}7647 is expected not to exist7648 with forbidden user access level (project developer role)7649 is expected to have attributes {:message => (match /Unauthorized/)}7650 behaves like an erroneous service response7651 is expected to be error7652 is expected to have attributes {:payload => (include {:package_protection_rule => nil})}7653 is expected not to exist7654 with existing PackageProtectionRule7655 when package name pattern is slightly different7656 behaves like a successful service response7657 is expected to be success7658 is expected to have attributes {:payload => (include {:package_protection_rule => (be a kind of Packages::Protection::Rule(id: integer...eger, package_type: integer, package_name_pattern: text, package_name_pattern_ilike_query: text))})}7659 is expected to include {:package_protection_rule => (be a kind of Packages::Protection::Rule(id: integer, project_id: integer, created_at: timestamptz, updated_at: tim... integer, package_type: integer, package_name_pattern: text, package_name_pattern_ilike_query: text))}7660 is expected to exist7661 when field `package_name_pattern` is taken7662 is expected to be error7663 is expected to exist7664BulkInsertSafe7665-- create_table(:_test_bulk_insert_parent_items, {:force=>true})7666 -> 0.0050s7667-- create_table(:_test_bulk_insert_items, {:force=>true})7668 -> 0.0250s7669-- create_table(:_test_bulk_insert_items_with_composite_pk, {:id=>false, :force=>true})7670 -> 0.0025s7671-- execute("ALTER TABLE _test_bulk_insert_items_with_composite_pk ADD PRIMARY KEY (id,name);")7672 -> 0.0016s7673 BulkInsertItem7674 behaves like a BulkInsertSafe model7675 when calling class methods directly7676 raises an error when method is not bulk-insert safe7677 does not raise an error when method is bulk-insert safe7678 .bulk_insert!7679 when all items are valid7680 inserts them all7681 returns an empty array7682 when some items are invalid7683 does not insert any of them and raises an error7684 inserts them anyway when bypassing validations7685 when inheriting class methods7686 raises an error when method is not bulk-insert safe7687 does not raise an error when method is bulk-insert safe7688 primary keys7689 raises error if primary keys are set prior to insertion7690 .bulk_insert!7691 inserts items in the given number of batches7692 inserts items with belongs_to association7693 items can be properly fetched from database7694 rolls back the transaction when any item is invalid7695 does nothing and returns an empty array when items are empty7696 with returns option set7697 when is set to :ids7698 is expected to contain exactly (a kind of Integer)7699 when is set to nil7700 is expected to eq []7701 when is set to a list of attributes7702 is expected to contain exactly [(a kind of Integer), "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"]7703 when duplicate items are to be inserted7704 .bulk_insert!7705 when skip_duplicates is set to false7706 raises an exception7707 when skip_duplicates is set to true7708 does not update existing object7709 .bulk_upsert!7710 updates existing object7711 when the `created_at` attribute is provided7712 does not change the existing `created_at` value7713 when a model with composite primary key is inserted7714WARNING: Active Record does not support composite primary key.7715_test_bulk_insert_items_with_composite_pk has composite primary key. Composite primary key is ignored.7716 successfully inserts an item7717-- drop_table(:_test_bulk_insert_items, {:force=>true})7718 -> 0.0137s7719-- drop_table(:_test_bulk_insert_parent_items, {:force=>true})7720 -> 0.0012s7721-- drop_table(:_test_bulk_insert_items_with_composite_pk, {:force=>true})7722 -> 0.0010s7723Todos::Destroy::DesignService7724 #execute7725 when the design has been archived7726 removes todos for that design7727 when no design has been archived7728 does not remove any todos7729Gitlab::Ci::Config::Entry::Service7730 when configuration is a string7731 #valid?7732 is valid7733 #value7734 returns valid hash7735 #image7736 returns service's image name7737 #alias7738 returns service's alias7739 #command7740 returns service's command7741 #ports7742 returns service's ports7743 when configuration is a hash7744 #valid?7745 is valid7746 #value7747 returns valid hash7748 #image7749 returns service's image name7750 #alias7751 returns service's alias7752 #command7753 returns service's command7754 #entrypoint7755 returns service's entrypoint7756 #pull_policy7757 returns nil7758 when configuration has ports7759 when with_image_ports metadata is not enabled7760 #valid?7761 is not valid7762 when with_image_ports metadata is enabled7763 #valid?7764 is valid7765 when unknown port keys detected7766 is not valid7767 #ports7768 returns image's ports7769 when configuration has pull_policy7770 #valid?7771 is valid7772 #value7773 returns value7774 when entry value is not correct7775 #errors7776 saves errors7777 #valid?7778 is not valid7779 when unexpected key is specified7780 #errors7781 saves errors7782 #valid?7783 is not valid7784 when service has ports7785 alias field is mandatory7786 when service does not have ports7787 alias field is optional7788CustomerRelations::Organization7789 associations7790 is expected to belong to group required: false7791 validations7792 is expected to validate that :group cannot be empty/falsy7793 is expected to validate that :name cannot be empty/falsy7794 is expected to validate that :name is case-insensitively unique within the scope of :group_id7795 is expected to validate that the length of :name is at most 2557796 is expected to validate that the length of :description is at most 10247797 #root_group7798 when root group7799 is expected to be valid7800 when subgroup7801 is expected to be invalid7802 #name7803 strips name7804 #find_by_name7805 strips name7806 #self.move_to_root_group7807 moves organizations with unique names and deletes the rest7808 updates contact.organization_id for dupes and leaves the rest untouched7809 .search7810 when search term is empty7811 returns all group crm_organizations7812 when search term is not empty7813 when searching for name7814 is expected to contain exactly #<CustomerRelations::Organization id: 17, group_id: 3765, created_at: "2023-11-22 16:31:42.074448963 ...31:42.074448963 +0000", state: "active", default_rate: nil, name: "ABC_st", description: [FILTERED]>7815 when searching for description7816 is expected to contain exactly #<CustomerRelations::Organization id: 16, group_id: 3765, created_at: "2023-11-22 16:31:42.069326223 ...:31:42.069326223 +0000", state: "inactive", default_rate: nil, name: "DEF", description: [FILTERED]>7817 when searching for name and description7818 is expected to contain exactly #<CustomerRelations::Organization id: 16, group_id: 3765, created_at: "2023-11-22 16:31:42.069326223 ...:31:42.069326223 +0000", state: "inactive", default_rate: nil, name: "DEF", description: [FILTERED]> and #<CustomerRelations::Organization id: 17, group_id: 3765, created_at: "2023-11-22 16:31:42.074448963 ...31:42.074448963 +0000", state: "active", default_rate: nil, name: "ABC_st", description: [FILTERED]>7819 .search_by_state7820 when searching for crm_organizations state7821 returns only inactive crm_organizations7822 returns only active crm_organizations7823 .counts_by_state7824 returns correct crm_organization counts7825 returns 0 with no results7826 sorting7827 .sort_by_name7828 sorts them by name in ascendent order7829 .sort_by_field7830 sorts them by description in descending order7831Projects::ContainerRepository::CleanupTagsService7832 #execute7833 with valid user7834 behaves like handling invalid regular expressions7835 when name_regex_delete is invalid7836 behaves like handling invalid regex7837 calls error tracking service7838 behaves like returning error message7839 returns error invalid regex7840 when name_regex is invalid7841 behaves like handling invalid regex7842 calls error tracking service7843 behaves like returning error message7844 returns error invalid regex7845 when name_regex_keep is invalid7846 behaves like handling invalid regex7847 calls error tracking service7848 behaves like returning error message7849 returns error invalid regex7850 behaves like handling all types of container repositories7851 with a migrated repository7852 supporting the gitlab api7853 behaves like calling service7854 uses cleanup tags service Projects::ContainerRepository::Gitlab::CleanupTagsService7855 not supporting the gitlab api7856 behaves like calling service7857 uses cleanup tags service Projects::ContainerRepository::ThirdParty::CleanupTagsService7858 with a non migrated repository7859 behaves like calling service7860 uses cleanup tags service Projects::ContainerRepository::ThirdParty::CleanupTagsService7861 for container expiration policy7862 behaves like handling invalid regular expressions7863 when name_regex_delete is invalid7864 behaves like handling invalid regex7865 calls error tracking service7866 behaves like returning error message7867 returns error invalid regex7868 when name_regex is invalid7869 behaves like handling invalid regex7870 calls error tracking service7871 behaves like returning error message7872 returns error invalid regex7873 when name_regex_keep is invalid7874 behaves like handling invalid regex7875 calls error tracking service7876 behaves like returning error message7877 returns error invalid regex7878 behaves like handling all types of container repositories7879 with a migrated repository7880 supporting the gitlab api7881 behaves like calling service7882 uses cleanup tags service Projects::ContainerRepository::Gitlab::CleanupTagsService7883 not supporting the gitlab api7884 behaves like calling service7885 uses cleanup tags service Projects::ContainerRepository::ThirdParty::CleanupTagsService7886 with a non migrated repository7887 behaves like calling service7888 uses cleanup tags service Projects::ContainerRepository::ThirdParty::CleanupTagsService7889 with not allowed user7890 behaves like returning error message7891 returns error access denied7892 with no user7893 behaves like returning error message7894 returns error access denied7895Users::InProductMarketingEmail7896 .ACTIVE_TRACKS7897 has an entry for every track7898 does not include INACTIVE_TRACK_NAMES7899 associations7900 is expected to belong to user required: false7901 .for_user_with_track_and_series7902 when record for user with given track and series exists7903 is expected to eq #<Users::InProductMarketingEmail id: 1, user_id: 1837, cta_clicked_at: nil, track: "create", series: ...reated_at: "2023-11-22 16:31:44.645255813 +0000", updated_at: "2023-11-22 16:31:44.645255813 +0000">7904 when user is different7905 is expected to be nil7906 when track is different7907 is expected to be nil7908 when series is different7909 is expected to be nil7910 .save_cta_click7911 when there is no record7912 does not error7913 when there is no record for the track and series7914 does not perform an update7915 when there is a record for the track and series7916 saves the cta click date7917 when cta_clicked_at is already set7918 does not update7919 .without_track_and_series7920 when given track and series already exists7921 is expected to be empty7922 when track does not exist7923 is expected to eq [#<User id:1842 @user1051>]7924 when series does not exist7925 is expected to eq [#<User id:1842 @user1051>]7926 when no track or series for a user exists7927 is expected to eq [#<User id:1843 @user1052>]7928 validations7929 is expected to validate that :user cannot be empty/falsy7930 when track+series email7931 is expected to validate that :track cannot be empty/falsy7932 is expected to validate that :series cannot be empty/falsy7933 is expected to validate that :user_id is case-sensitively unique within the scope of :track and :series, producing a custom validation error on failure7934IncidentManagement::PagerDuty::CreateIncidentIssueService7935 #execute7936 when PagerDuty webhook setting is active7937 when issue can be created7938 creates a new issue7939 responds with success7940 the issue author is Alert bot7941 issue has a correct title7942 issue has a correct description7943 when the payload does not contain a title7944 does not create a GitLab issue7945 responds with error7946 when PagerDuty webhook setting is not active7947 does not create a GitLab issue7948 responds with forbidden7949Sidebars::Groups::Menus::PackagesRegistriesMenu7950 behaves like not serializable as super_sidebar_menu_args7951 returns nil7952 #render?7953 when menu has menu items to show7954 returns true7955 #link7956 when Packages Registry is visible7957 menu link points to Packages Registry page7958 when Packages Registry is not visible7959 menu link points to Container Registry page7960 when Container Registry is not visible7961 menu link points to Harbor Registry page7962 Menu items7963 Packages Registry7964 when user can read packages7965 when config package setting is disabled7966 behaves like the menu entry is not available7967 the menu item is not added to list of menu items7968 when config package setting is enabled7969 behaves like the menu entry is available7970 the menu item is added to list of menu items7971 Container Registry7972 when user can read container images7973 when config registry setting is disabled7974 behaves like the menu entry is not available7975 the menu item is not added to list of menu items7976 when config registry setting is enabled7977 behaves like the menu entry is available7978 the menu item is added to list of menu items7979 when user cannot read container images7980 behaves like the menu entry is not available7981 the menu item is not added to list of menu items7982 Dependency Proxy7983 when user can read dependency proxy7984 when config dependency_proxy is enabled7985 behaves like the menu entry is available7986 the menu item is added to list of menu items7987 when the group settings exist7988 behaves like the menu entry is available7989 the menu item is added to list of menu items7990 when the proxy is disabled at the group level7991 behaves like the menu entry is not available7992 the menu item is not added to list of menu items7993 when config dependency_proxy is not enabled7994 behaves like the menu entry is not available7995 the menu item is not added to list of menu items7996 when user cannot read dependency proxy7997 behaves like the menu entry is not available7998 the menu item is not added to list of menu items7999 Harbor Registry8000 behaves like the menu entry is available8001 the menu item is added to list of menu items8002 when config harbor registry setting is not activated8003 behaves like the menu entry is not available8004 the menu item is not added to list of menu items8005Gitlab::Git::Conflict::Parser8006 .parse8007 when the file has valid conflicts8008 content has LF endings8009 behaves like successful parsing8010 sets our lines as new lines8011 sets their lines as old lines8012 sets non-conflicted lines as both8013 sets consecutive line numbers for line_obj_index, line_old, and line_new8014 content has CRLF endings8015 behaves like successful parsing8016 sets our lines as new lines8017 sets their lines as old lines8018 sets non-conflicted lines as both8019 sets consecutive line numbers for line_obj_index, line_old, and line_new8020 content has mixed LF and CRLF endings8021 behaves like successful parsing8022 sets our lines as new lines8023 sets their lines as old lines8024 sets non-conflicted lines as both8025 sets consecutive line numbers for line_obj_index, line_old, and line_new8026 when the file contents include conflict delimiters8027 raises MissingEndDelimiter when there is no end delimiter at the end8028 when there is a non-start delimiter first8029 raises UnexpectedDelimiter when there is a middle delimiter first8030 raises UnexpectedDelimiter when there is an end delimiter first8031 does not raise when there is an end delimiter for a different path first8032 when a start delimiter is followed by a non-middle delimiter8033 raises UnexpectedDelimiter when it is followed by an end delimiter8034 raises UnexpectedDelimiter when it is followed by another start delimiter8035 does not raise when it is followed by a start delimiter for a different path8036 when a middle delimiter is followed by a non-end delimiter8037 raises UnexpectedDelimiter when it is followed by another middle delimiter8038 raises UnexpectedDelimiter when it is followed by a start delimiter8039 does not raise when it is followed by a start delimiter for another path8040 other file types8041 raises UnmergeableFile when lines is blank, indicating a binary file8042 raises UnmergeableFile when the file is over 200 KiB8043 when the file contains UTF-8 characters8044 does not raise8045Issues::RebalancingWorker8046 has the `until_executed` deduplicate strategy8047 #perform8048 without root_namespace param8049 is labeled as idempotent8050 performs multiple times sequentially without raising an exception8051 is labeled as idempotent8052 performs multiple times sequentially without raising an exception8053 behaves like running the worker8054 runs an instance of Issues::RelativePositionRebalancingService8055 anticipates there being too many concurent rebalances8056 takes no action if the value is nil8057 does not schedule a new rebalance if it finished under 1h ago8058 behaves like safely handles non-existent ids8059 anticipates the inability to find the issue8060 with root_namespace param8061 is labeled as idempotent8062 performs multiple times sequentially without raising an exception8063 is labeled as idempotent8064 performs multiple times sequentially without raising an exception8065 behaves like running the worker8066 runs an instance of Issues::RelativePositionRebalancingService8067 anticipates there being too many concurent rebalances8068 takes no action if the value is nil8069 does not schedule a new rebalance if it finished under 1h ago8070 behaves like safely handles non-existent ids8071 anticipates the inability to find the issue8072ManualInverseAssociation8073 .manual_inverse_association8074 when the relation exists8075 loads the relation8076 does not perform extra queries after loading8077 allows reloading the relation8078 when the relation does not return a value8079 does not try to set an inverse8080Packages::Pypi::CreatePackageService8081 #execute8082 without an existing package8083 creates the package8084 with FIPS mode8085 does not generate file_md58086 without required_python8087 creates the package8088 with additional metadata8089 creates the package8090 with a very long metadata description field8091 truncates the description field8092 with an invalid metadata8093 raises an error8094 behaves like assigns the package creator8095 assigns the package creator8096 behaves like assigns build to package8097 with build info8098 assigns the pipeline to the package8099 behaves like assigns status to package8100 with status param8101 assigns the status to the package8102 with an existing package8103 with an existing file8104 throws an error8105 with a pending_destruction package8106 creates a new package8107 without an existing file8108 adds the file8109Groups::GroupLinks::DestroyService#execute8110 when authorizing by user8111 single link8112 destroys the link8113 with skip_group_share_unlink_auth_refresh feature flag disabled8114 revokes project authorization8115 with skip_group_share_unlink_auth_refresh feature flag enabled8116 maintains project authorization8117 multiple links8118 with skip_group_share_unlink_auth_refresh feature flag disabled8119 updates project authorization once per group8120 with skip_group_share_unlink_auth_refresh feature flag enabled8121 does not update project authorization once per group8122 when skipping authorization8123 with provided group and owner8124 destroys the link8125 without providing group or owner8126 destroys the link8127BlobViewer::GitlabCiYml8128 #validation_message8129 calls prepare! on the viewer8130 when the configuration is valid8131 returns nil8132 when the configuration is invalid8133 returns the error message8134 when the sha is from a fork8135 when a project ref contains the sha8136 returns nil8137 when a project ref does not contain the sha8138 returns an error8139Gitlab::Ci::Build::Policy::Refs8140 #satisfied_by?8141 when matching ref8142 is satisfied when pipeline branch matches8143 is not satisfied when pipeline branch does not match8144 when matching tags8145 when pipeline runs for a tag8146 is satisfied when tags matcher is specified8147 when pipeline is not created for a tag8148 is not satisfied when tag match is specified8149 when also matching a path8150 is satisfied when provided patch matches specified one8151 is not satisfied when path differs8152 when matching a source8153 is satisfied when provided source keyword matches8154 is not satisfied when provided source keyword does not match8155 when source is merge_request_event8156 is satisfied with only: merge_request8157 is not satisfied with only: merge_request_event8158 when source is external_pull_request_event8159 is satisfied with only: external_pull_request8160 is not satisfied with only: external_pull_request_event8161 when source is pipeline8162 is satisfied with only: pipelines8163 is satisfied with only: pipeline8164 when source is parent_pipeline8165 is satisfied with only: parent_pipelines8166 is satisfied with only: parent_pipeline8167 when matching a ref by a regular expression8168 is satisfied when regexp matches pipeline ref8169 is satisfied when case-insensitive regexp matches pipeline ref8170 is not satisfied when regexp does not match pipeline ref8171 when unsafe regexp is used8172 ignores invalid regexp8173 malicious regexp8174 takes under a second8175Types::UserMergeRequestInteractionType8176 is expected to require graphql authorizations :read_merge_request8177 has the expected fields8178 #can_merge8179 when the user cannot merge8180 is expected to equal false8181 when the user can merge8182 is expected to equal true8183 #can_update8184 when the user cannot update the MR8185 is expected to equal false8186 when the user can update the MR8187 is expected to equal true8188 #review_state8189 when the user has not been asked to review the MR8190 is expected to be nil8191 implies not reviewed8192 when the user has been asked to review the MR8193 implies not reviewed8194 when the user has provided a review8195 is expected to eq "reviewed"8196 implies reviewed8197 #approved8198 when the user has not approved the MR8199 is expected to equal false8200 when the user has approved the MR8201 is expected to equal true8202Gitlab::Database::BackgroundMigration::BatchedMigrationWrapper#perform8203 runs the migration job8204 updates the tracking record in the database8205 when running a job that failed previously8206 increments attempts and updates other fields8207 when the migration job does not raise an error8208 marks the tracking record as succeeded8209 tracks metrics of the execution8210 when the migration job raises an error8211 behaves like an error is raised8212 marks the tracking record as failed8213 tracks metrics of the execution8214 behaves like an error is raised8215 marks the tracking record as failed8216 tracks metrics of the execution8217 behaves like an error is raised8218 marks the tracking record as failed8219 tracks metrics of the execution8220 behaves like an error is raised8221 marks the tracking record as failed8222 tracks metrics of the execution8223 when the batched background migration does not inherit from BatchedMigrationJob8224 runs the job with the correct arguments8225Exportable8226 .restricted_associations8227 when `exportable_restricted_associations` is not defined in inheriting class8228 returns empty array8229 when `exportable_restricted_associations` is defined in inheriting class8230 returns empty array if provided key are not restricted8231 returns array with restricted keys8232 .exportable_association?8233 when model does not respond to association name8234 returns false8235 when model responds to association name8236 when association contains records8237 when current_user is not present8238 returns false8239 when current_user can read association8240 returns true8241 when current_user can not read association8242 returns false8243 when association is empty8244 returns true8245 when association type is has_many8246 returns true8247 .to_authorized_json8248 when key to authorize is not an association name8249 returns string without given key8250 when key to authorize is an association name8251 when there are no records8252 returns string including the empty association8253 when association has #exportable_record? defined8254 when user can read all records8255 returns string containing all records8256 when user can not read records8257 returns string including the empty association8258 when user can read some records8259 returns string containing readable records only8260 when association does not have #exportable_record? defined8261 calls #readable_by?8262 with single relation8263 when user can read the record8264 returns string including association8265 when user can not read the record8266 returns string with null association8267Users::MergeRequestInteraction8268 declarative policy delegation8269 delegates to the merge request8270 #can_merge?8271 when the user cannot merge8272 is expected not to be can merge8273 when the user can merge8274 is expected to be can merge8275 #can_update?8276 when the user cannot update the MR8277 is expected not to be can update8278 when the user can update the MR8279 is expected to be can update8280 #review_state8281 when the user has not been asked to review the MR8282 is expected to be nil8283 implies not reviewed8284 when the user has been asked to review the MR8285 implies not reviewed8286 when the user has provided a review8287 is expected to eq "reviewed"8288 implies reviewed8289 #approved?8290 when the user has not approved the MR8291 is expected not to be approved8292 when the user has approved the MR8293 is expected to be approved8294CachingArrayResolver8295 #resolve8296 does not perform a union of a query with itself8297 force . resolve === to_a . query_for . query_input8298 there are more than MAX_UNION_SIZE queries8299 executes the queries in multiple batches8300 all queries return results8301 batches the queries8302 finds the correct values8303 one of the queries returns no results8304 finds the correct values8305 one of the queries has already been cached8306 avoids further queries8307 the resolver overrides item_found8308 receives item_found for each key the item mapped to8309 the max_page_size is lower than the total result size8310 respects the max_page_size, on a per subset basis8311 the field does not declare max_page_size8312 takes the page size from schema.default_max_page_size8313Milestones::ClosedIssuesCountService8314 counts closed issues including confidential8315 behaves like a counter caching service8316 #count8317 caches the count8318 #refresh_cache8319 refreshes the cache8320 #delete_cache8321 removes the cache8322 #uncached_count8323 does not cache the count8324Releases::Links::CreateService8325 #execute8326 successfully creates a release link8327 when user does not have access to create release link8328 returns an error8329 when url is invalid8330 returns an error8331 when both direct_asset_path and filepath are provided8332 prefers direct_asset_path8333 when only filepath is set8334 uses filepath8335Resolvers::ProjectMilestonesResolver8336 #resolve8337 calls MilestonesFinder to retrieve all milestones8338 when including ancestor milestones8339 calls MilestonesFinder with correct parameters8340 by ids8341 calls MilestonesFinder with correct parameters8342 by state8343 calls MilestonesFinder with correct parameters8344 by sort8345 calls MilestonesFinder with correct parameters8346 uses offset-pagination when sorting by EXPIRED_LAST_DUE_DATE_ASC8347 uses offset-pagination when sorting by EXPIRED_LAST_DUE_DATE_DESC8348 by timeframe8349 when passing a timeframe8350 calls MilestonesFinder with correct parameters8351 when title is present8352 calls MilestonesFinder with correct parameters8353 when search_title is present8354 calls MilestonesFinder with correct parameters8355 when containing date is present8356 calls MilestonesFinder with correct parameters8357BulkImports::Export8358 associations8359 is expected to belong to group required: false8360 is expected to belong to project required: false8361 is expected to have one upload8362 is expected to have many batches8363 validations8364 is expected to validate that :relation cannot be empty/falsy8365 is expected to validate that :status cannot be empty/falsy8366 when not associated with a group or project8367 is invalid8368 when associated with a group8369 is valid8370 when associated with a project8371 is valid8372 when relation is invalid8373 is invalid8374 #portable8375 when associated with project8376 returns project8377 when associated with group8378 returns group8379 #config8380 when associated with project8381 returns project config8382 when associated with group8383 returns group config8384 #remove_existing_upload!8385 when upload exists8386 removes the upload8387 when upload does not exist8388 returns8389Gitlab::Ci::Config::Entry::Jobs8390 .all_types8391 is expected to include Gitlab::Ci::Config::Entry::Hidden8392 is expected to include Gitlab::Ci::Config::Entry::Job8393 is expected to include Gitlab::Ci::Config::Entry::Bridge8394 .find_type8395 name: :".hidden_job", type: Gitlab::Ci::Config::Entry::Hidden8396 is expected to eq Gitlab::Ci::Config::Entry::Hidden8397 name: :".hidden_bridge", type: Gitlab::Ci::Config::Entry::Hidden8398 is expected to eq Gitlab::Ci::Config::Entry::Hidden8399 name: :regular_job, type: Gitlab::Ci::Config::Entry::Job8400 is expected to eq Gitlab::Ci::Config::Entry::Job8401 name: :my_trigger, type: Gitlab::Ci::Config::Entry::Bridge8402 is expected to eq Gitlab::Ci::Config::Entry::Bridge8403 name: :invalid_job, type: nil8404 is expected to eq nil8405 validations8406 when entry config value is correct8407 #valid?8408 is valid8409 when entry value is not correct8410 #errors8411 incorrect config value type8412 returns error about incorrect type8413 when job is invalid8414 reports error8415 when the job name cannot be cast directly to a symbol8416 properly parses the job name without raising a NoMethodError8417 when no visible jobs present8418 returns error about no visible jobs defined8419 .compose!8420 when valid job entries composed8421 #value8422 returns key value8423 #descendants8424 creates valid descendant nodes8425 #value8426 returns value of visible jobs only8427FeatureFlags::CreateService8428 #execute8429 when feature flag can not be created8430 returns status error8431 returns validation errors8432 does not create audit log8433 does not sync the feature flag to Jira8434 behaves like does not update feature flag client8435 does not update last feature flag updated at8436 when feature flag is saved correctly8437 returns status success8438 creates feature flag8439 creates audit event8440 behaves like update feature flag client8441 updates last feature flag updated at8442 when Jira Connect subscription does not exist8443 does not sync the feature flag to Jira8444 when Jira Connect subscription exists8445 syncs the feature flag to Jira8446 when user is reporter8447 returns error status8448Ci::PipelineProcessing::AtomicProcessingService::StatusCollection8449 #set_job_status8450 does update existing status of job8451 ignores a missing job8452 #status_of_all8453 returns composite status of the collection8454 #status_of_jobs8455 names: ["build-a"], status: "success"8456 returns composite status of given names8457 names: ["build-a", "build-b"], status: "failed"8458 returns composite status of given names8459 names: ["build-a", "test-a"], status: "running"8460 returns composite status of given names8461 #status_of_jobs_prior_to_stage8462 stage: 0, status: "success"8463 returns composite status for jobs in prior stages8464 stage: 1, status: "failed"8465 returns composite status for jobs in prior stages8466 stage: 2, status: "running"8467 returns composite status for jobs in prior stages8468 #status_of_stage8469 stage: 0, status: "failed"8470 returns composite status for jobs at a given stages8471 stage: 1, status: "running"8472 returns composite status for jobs at a given stages8473 stage: 2, status: "created"8474 returns composite status for jobs at a given stages8475 #created_job_ids_in_stage8476 returns IDs of jobs at a given stage position8477 #processing_jobs8478 returns jobs marked as processing8479 #stopped_job_names8480 returns names of jobs that have a stopped status8481Milestones::CloseService8482 #execute8483 is expected to be valid8484 is expected to be closed8485 event8486 is expected to be truthy8487 is expected to eq #<Milestone id:32 namespace1007/project-1905%"Milestone v1.2">8488 is expected to eq "closed"8489DesignManagement::GenerateImageVersionsService8490 #execute8491 generates the image8492 skips generating image versions if the mime type is not allowlisted8493 skips generating image versions if the design file size is too large8494 returns the status8495 returns the version8496 logs if the raw image cannot be found8497 when an error is encountered when generating the image versions8498 CarrierWave::IntegrityError8499 logs the exception8500 logs the error8501 CarrierWave::UploadError8502 logs the error8503 tracks the error8504BulkImports::ExportRequestWorker8505 #perform8506 when entity is group8507 behaves like requests relations export for api resource8508 behaves like an idempotent worker8509 is labeled as idempotent8510 performs multiple times sequentially without raising an exception8511 requests relations export & schedules entity worker8512 when source id is nil8513 updates entity source id & requests export using source id8514 when something goes wrong during source id fetch8515 logs the error & requests relations export using full path url8516 when entity is project8517 behaves like requests relations export for api resource8518 behaves like an idempotent worker8519 is labeled as idempotent8520 performs multiple times sequentially without raising an exception8521 requests relations export & schedules entity worker8522 when source id is nil8523 updates entity source id & requests export using source id8524 when something goes wrong during source id fetch8525 logs the error & requests relations export using full path url8526 when source supports batched migration8527 requests relations export & schedules entity worker8528 when bulk_imports_batched_import_export feature flag is disabled8529 requests relation export without batched param8530 #sidekiq_retries_exhausted8531 logs export failure and marks entity as failed8532ObjectStorage::CDN::GoogleCDN8533 #signed_url8534 with UTF-8 characters in path8535 returns a valid signed URL8536 with default query parameters8537 returns a valid signed URL8538 with nil query parameters8539 returns a valid signed URL8540 with extra query parameters8541 returns a valid signed URL8542 #use_cdn?8543 ip_address: "34.80.0.1", expected: false8544 is expected to eq false8545 ip_address: "18.245.0.42", expected: true8546 is expected to eq true8547 ip_address: "2500:1900:4180:0000:0000:0000:0000:0000", expected: true8548 is expected to eq true8549 ip_address: "2600:1900:4180:0000:0000:0000:0000:0000", expected: false8550 is expected to eq false8551 ip_address: "10.10.1.5", expected: false8552 is expected to eq false8553 ip_address: "fc00:0000:0000:0000:0000:0000:0000:0000", expected: false8554 is expected to eq false8555 ip_address: "127.0.0.1", expected: false8556 is expected to eq false8557 ip_address: "169.254.0.0", expected: false8558 is expected to eq false8559 when the key name is missing8560 returns false8561 when the key is missing8562 returns false8563 when the key is invalid8564 returns false8565 when the URL is missing8566 returns false8567 when URL is a domain8568 returns false8569 when URL uses HTTP8570 returns false8571JiraConnectHelper8572 #jira_connect_app_data8573 user is not logged in8574 includes Jira Connect app attributes8575 passes group as "skip_groups" param8576 assigns gitlab_user_path to nil8577 assignes public_key_storage_enabled to false8578 with oauth_metadata8579 assigns oauth_metadata8580 includes oauth_authorize_url with all params8581 with self-managed instance8582 points urls to the self-managed instance8583 when public_key_storage is enabled8584 assignes public_key_storage_enabled to true8585 user is logged in8586 assigns users_path to nil8587 assigns gitlab_user_path correctly8588BlobViewer::Base8589 .can_render?8590 when the extension is supported8591 when the binaryness matches8592 returns true8593 when the binaryness does not match8594 returns false8595 when the file type is supported8596 when the binaryness matches8597 returns true8598 when the binaryness does not match8599 returns false8600 when the extension and file type are not supported8601 returns false8602 #collapsed?8603 when the blob size is larger than the collapse limit8604 returns true8605 when the blob size is smaller than the collapse limit8606 returns false8607 #too_large?8608 when the blob size is larger than the size limit8609 returns true8610 when the blob size is smaller than the size limit8611 returns false8612 #render_error8613 when the blob is expanded8614 when the blob size is larger than the size limit8615 returns :too_large8616 when the blob size is smaller than the size limit8617 returns nil8618 when not expanded8619 when the blob size is larger than the collapse limit8620 returns :collapsed8621 when the blob size is smaller than the collapse limit8622 returns nil8623BulkImports::UploadsExportService8624 #execute8625 exports project uploads and avatar8626 when export is batched8627 exports only specified uploads8628 when upload has underlying file missing8629 with an upload missing its file8630 does not cause errors8631 when upload is in object storage8632 when filename is too long8633 ignores problematic upload and logs exception8634 when network exception occurs8635 ignores problematic upload and logs exception8636 #exported_objects_count8637 return the number of exported uploads8638projects/diffs/_viewer.html.haml8639 when there is a render error8640 renders the error8641 when the viewer is collapsed8642 renders the collapsed view8643 when there is no render error8644 prepares the viewer8645 renders the viewer8646Sidebars::Panel8647 #renderable_menus8648 returns only renderable menus8649 #super_sidebar_menu_items8650 serializes every renderable menu and returns a flattened result8651 #super_sidebar_context_header8652 raises `NotImplementedError`8653 #render?8654 returns false with no menus8655 returns false with no renderable menus8656 returns true with renderable menus8657 #add_element8658 adds the element to the last position of the list8659 does not add nil elements8660 #insert_element_before8661 adds element before the specific element class8662 does not add nil elements8663 when reference element does not exist8664 adds the element to the top of the list8665 #insert_element_after8666 adds element after the specific element class8667 does not add nil elements8668 when reference element does not exist8669 adds the element to the end of the list8670 #replace_element8671 replace existing element in the list8672 does not add nil elements8673 does not add the element if the other element is not found8674FormHelper8675 #dropdown_max_select8676 correctly returns the max amount of reviewers or assignees to allow8677 #assignees_dropdown_options8678 with multiple assignees8679 correctly returns the max amount of assignees to allow8680 with only 1 assignee8681 correctly returns the max amount of assignees to allow8682 #reviewers_dropdown_options8683 with multiple reviewers8684 correctly returns the max amount of reviewers or assignees to allow8685 with only 1 reviewer8686 correctly returns the max amount of reviewers or assignees to allow8687 form_errors8688 returns nil when model has no errors8689 renders an appropriately styled alert div8690 contains a summary message8691 renders each message8692 renders messages truncated if requested8693 renders custom messages without the attribute name prefix8694 renders help page links8695Gitlab::BitbucketImport::Stage::ImportIssuesWorker8696 #perform8697 when the import succeeds8698 schedules the next stage8699 logs stage start and finish8700 when project does not exists8701 does not call the importer8702 when project import state is not `started`8703 does not call the importer8704 when the importer fails8705 does not schedule the next stage and raises error8706 behaves like Gitlab::BitbucketImport::StageMethods8707 .sidekiq_retries_exhausted8708 tracks the import failure8709 .perform8710 executes the import8711AlertManagement::AlertPolicy8712 rules8713 is expected to be disallowed :read_alert_management_alert8714 is expected to be disallowed :update_alert_management_alert8715 when developer8716 is expected to be allowed :read_alert_management_alert8717 is expected to be allowed :update_alert_management_alert8718 when user is not a member8719 is expected to be disallowed :read_alert_management_metric_image8720 is expected to be disallowed :destroy_alert_management_metric_image8721 when user is a guest8722 is expected to be disallowed :read_alert_management_metric_image8723 is expected to be disallowed :destroy_alert_management_metric_image8724 when user is a developer8725 is expected to be allowed :read_alert_management_metric_image8726 is expected to be allowed :destroy_alert_management_metric_image8727Gitlab::Analytics::CycleAnalytics::StageEvents::MergeRequestMerged8728 behaves like value stream analytics event8729 is expected to be a kind of String8730 is expected to be a kind of Symbol8731 is expected to include ApplicationRecord(abstract)8732 is expected to respond to #timestamp_projection8733 is expected to respond to #html_description8734 is expected to be a kind of Array8735 #apply_query_customization8736 expects an ActiveRecord::Relation object as argument and returns a modified version of it8737 #hash_code8738 returns a hash that uniquely identifies an event8739 does not differ when the same object is built with the same params8740 behaves like LEFT JOIN-able value stream analytics event8741 can use the event as LEFT JOIN8742 when looking at the record with data8743 contains the timestamp expression8744 when looking at the record without data8745 returns nil for the timestamp expression8746Banzai::ReferenceParser::DesignParser8747 #nodes_visible_to_user8748 behaves like referenced feature visibility8749 when feature is disabled8750 does not create reference8751 when feature is enabled only for team members8752 does not create reference for non member8753 creates reference for member8754 when feature is enabled8755 creates reference8756 specific states8757 redacts links we should not have access to8758 design management is not available8759 redacts all nodes8760 #process8761 returns the correct designs8762Boards::CreateService8763 #execute8764 when board parent is a project8765 behaves like boards create service8766 when parent does not have a board8767 creates a new board8768 creates the default lists8769 when parent has a board8770 does not create a new board8771 when board parent is a group8772 behaves like boards create service8773 when parent does not have a board8774 creates a new board8775 creates the default lists8776 when parent has a board8777 does not create a new board8778Pages::LookupPath8779 #project_id8780 delegates to Project#id8781 #access_control8782 delegates to Project#private_pages?8783 #https_only8784 when no domain provided8785 delegates to Project#pages_https_only?8786 when there is domain provided8787 takes into account the https setting of the domain8788 #source8789 uses deployment from object storage8790 does not recreate source hash8791 when deployment is in the local storage8792 uses file protocol8793 #prefix8794 full_path: "mygroup/myproject", trim_prefix: nil, path_prefix: nil, result: "/"8795 is expected to eq "/"8796 full_path: "mygroup/myproject", trim_prefix: "mygroup", path_prefix: nil, result: "/myproject/"8797 is expected to eq "/myproject/"8798 full_path: "mygroup/myproject", trim_prefix: nil, path_prefix: "PREFIX", result: "/PREFIX/"8799 is expected to eq "/PREFIX/"8800 full_path: "mygroup/myproject", trim_prefix: "mygroup", path_prefix: "PREFIX", result: "/myproject/PREFIX/"8801 is expected to eq "/myproject/PREFIX/"8802 #unique_host8803 when unique domain is disabled8804 returns nil8805 when unique domain is enabled8806 returns the project unique domain8807 #root_directory8808 when there is a deployment8809 returns the deployment's root_directory8810Preloaders::ProjectPolicyPreloader8811 avoids N+1 queries when authorizing a list of projects8812Constraints::GroupUrlConstrainer8813 #matches?8814 valid request8815 is expected to be truthy8816 valid request for nested group8817 is expected to be truthy8818 valid request for nested group with reserved top level name8819 is expected to be truthy8820 invalid request8821 is expected to be falsey8822 when the request matches a redirect route8823 for a root group8824 and is a GET request8825 is expected to be truthy8826 and is NOT a GET request8827 is expected to be falsey8828 for a nested group8829 is expected to be truthy8830SystemHooksService8831 #execute_hooks_for8832 model_name: :group_member, builder_class: Gitlab::HookData::GroupMemberBuilder8833 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8834 model_name: :group, builder_class: Gitlab::HookData::GroupBuilder8835 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8836 model_name: :project_member, builder_class: Gitlab::HookData::ProjectMemberBuilder8837 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8838 model_name: :user, builder_class: Gitlab::HookData::UserBuilder8839 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8840 model_name: :project, builder_class: Gitlab::HookData::ProjectBuilder8841 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8842 model_name: :key, builder_class: Gitlab::HookData::KeyBuilder8843 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8844 model_name: :deploy_key, builder_class: Gitlab::HookData::KeyBuilder8845 builds the data with the relevant builder class and then calls #execute_hooks with the obtained data8846 #execute_hooks8847 executes system hooks with the given data8848 executes FileHook with the given data8849LegacyDiffDiscussion8850 #reply_attributes8851 includes line_code8852 #merge_request_version_params8853 when the discussion is active8854 returns an empty hash, which will end up showing the latest version8855 when the discussion is outdated8856 returns nil8857ResourceEvents::ChangeMilestoneService8858 behaves like timebox(milestone or iteration) resource events creator8859 when milestone/iteration is added8860 creates the expected event record8861 when milestone/iteration is removed8862 creates the expected event records8863 behaves like timebox(milestone or iteration) resource events creator8864 when milestone/iteration is added8865 creates the expected event record8866 when milestone/iteration is removed8867 creates the expected event records8868 events tracking8869 when the resource is a work item8870 tracks work item usage data counters8871 when the resource is not a work item8872 does not track work item usage data counters8873Resolvers::AlertManagement::AlertResolver8874 user does not have permission8875 is expected to eq #<ActiveRecord::Relation []>8876 user has permission8877 is expected to contain exactly #<AlertManagement::Alert id:2 namespace1072/project-1957^alert#1> and #<AlertManagement::Alert id:3 namespace1072/project-1957^alert#2>8878 finding by iid8879 is expected to contain exactly #<AlertManagement::Alert id:2 namespace1072/project-1957^alert#1>8880 finding by status8881 is expected to contain exactly #<AlertManagement::Alert id:3 namespace1072/project-1957^alert#2>8882 filtering by domain8883 is expected to contain exactly #<AlertManagement::Alert id:2 namespace1072/project-1957^alert#1>, #<AlertManagement::Alert id:3 namespace1072/project-1957^alert#2>, and #<AlertManagement::Alert id:7 namespace1072/project-1957^alert#5>8884 sorting8885 when sorting by events count8886 sorts alerts ascending8887 sorts alerts descending8888Gitlab::EtagCaching::Store8889 #get8890 with invalid keys8891 raises errors8892 does not raise errors in production8893 with GraphQL keys8894 returns a stored value8895 with RESTful keys8896 returns a stored value8897 #touch8898 with invalid keys8899 raises errors8900 with GraphQL keys8901 stores and returns a value8902 with RESTful keys8903 stores and returns a value8904 with multiple keys8905 stores and returns multiple values8906Gitlab::Checks::GlobalFileSizeCheck8907 #validate!8908 checks for file sizes8909 when global_file_size_check is disabled8910 does not log8911 when there are oversized blobs8912 logs a message with blob size and raises an exception8913 when the enforce_global_file_size_limit feature flag is disabled8914 does not raise an exception8915Resolvers::GroupMembersResolver8916 is expected to have nullable GraphQL type GroupMemberConnection8917 behaves like querying members with a group8918 #resolve8919 finds all resource members8920 with sort options8921 searches users by user name8922 with search8923 when the search term matches a user8924 searches users by user name8925 when the search term does not match any user8926 is empty8927 when user can not see resource members8928 generates an error8929Database::MarkMigrationService8930 #execute8931 marks the migration as successful8932 when the migration does not exist8933 is expected to be error8934 is expected to eq :not_found8935 does not insert records8936 when the migration was already executed8937 is expected to be error8938 is expected to eq :invalid8939 does not insert records8940 when the insert fails8941 returns an error response8942Gitlab::SetupHelper::Praefect8943 .configuration_toml8944 defaults to in memory queue8945 provides database details if wanted8946 fails when pghost is missing8947 uses the provided pghost8948 fails when pgport is missing8949 uses the provided pgport8950 fails when pguser is missing8951 uses the provided pguser8952 defaults to praefect_test if dbname is missing8953 uses the provided dbname8954 .get_config_path8955 defaults to praefect.config.toml8956 takes the provided config_filename8957Gitlab::BitbucketServerImport::UserFinder8958 #find_user_id8959 when user cannot be found8960 caches and returns nil8961 when user can be found8962 caches and returns the user ID by email8963 caches and returns the user ID by username8964 #uid8965 when provided object is a Hash8966 maps to an existing user with the same username8967 when provided object is a representation Object8968 maps to a existing user with the same username8969 when corresponding user does not exist8970 returns nil8971 when bitbucket_server_user_mapping_by_username is disabled8972 when provided object is a Hash8973 maps to an existing user with the same email8974 when provided object is a representation Object8975 maps to an existing user with the same email8976 when corresponding user does not exist8977 returns nil8978 #author_id8979 calls uid method8980 when corresponding user does not exist8981 fallsback to project creator_id8982Banzai::Filter::FrontMatterFilter8983 allows for `encoding:` before the front matter8984 converts YAML front matter to a fenced code block8985 converts TOML frontmatter to a fenced code block8986 converts JSON front matter to a fenced code block8987 converts arbitrary front matter to a fenced code block8988 source position mapping8989 keeps spaces before and after8990 keeps an empty line in place of the encoding8991 on content without front matter8992 returns the content unmodified8993 on front matter without content8994 converts YAML front matter to a fenced code block8995 protects against malicious backtracking8996 fails fast for strings with many spaces8997 fails fast for strings with many newlines8998 fails fast for strings with many `coding:`8999Packages::Debian::ProjectDistributionKey9000 behaves like Debian Distribution Key9001 relationships9002 is expected to belong to distribution class_name => Packages::Debian::ProjectDistribution required: false inverse_of => key9003 validations9004 #distribution9005 is expected to validate that :distribution cannot be empty/falsy9006 #private_key9007 is expected to validate that :private_key cannot be empty/falsy9008 is expected to allow :private_key to be ‹"-----BEGIN PGP PRIVATE KEY BLOCK-----\n..."›9009 is expected not to allow :private_key to be ‹"A"›, producing a custom validation error on failure9010 #passphrase9011 is expected to validate that :passphrase cannot be empty/falsy9012 is expected to allow :passphrase to be ‹"P@$$w0rd"›9013 is expected to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›9014 is expected not to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›9015 #public_key9016 is expected to validate that :public_key cannot be empty/falsy9017 is expected to allow :public_key to be ‹"-----BEGIN PGP PUBLIC KEY BLOCK-----\n..."›9018 is expected not to allow :public_key to be ‹"A"›, producing a custom validation error on failure9019 #fingerprint9020 is expected to validate that :passphrase cannot be empty/falsy9021 is expected to allow :passphrase to be ‹"abc"›9022 is expected to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›9023 is expected not to allow :passphrase to be ‹"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"›9024IncidentManagement::ProjectIncidentManagementSetting9025 Associations9026 is expected to belong to project required: false9027 #issue_template_content9028 with valid issue_template_key9029 returns issue content9030 with unknown issue_template_key9031 behaves like no content9032 returns no content9033 without issue_template_key9034 behaves like no content9035 returns no content9036 #pagerduty_token9037 when token already set9038 reads the token9039 when not set9040 when PagerDuty webhook is active9041 generates a token before validation9042 when PagerDuty webhook is not active9043 does not generate a token before validation9044 Validations9045 validate issue_template_exists9046 with create_issue enabled9047 with valid issue_template_key9048 is expected to be valid9049 with empty issue_template_key9050 is expected to be valid9051 with nil issue_template_key9052 is expected to be valid9053 with invalid issue_template_key9054 is expected to be invalid9055 returns error9056 with create_issue disabled9057 with unknown issue_template_key9058 is expected to be valid9059Banzai::ReferenceParser::MentionedUserParser9060 #gather_references9061 when the link has a data-group attribute9062 using an existing group ID9063 returns empty list of users9064 when the link has a data-project attribute9065 using an existing project ID9066 returns empty list of users9067 when the link has a data-user attribute9068 returns an Array of users9069Create base work item types in production9070 behaves like work item base types importer9071OK9072 creates all base work item types if they don't exist9073OK9074 creates all default widget definitions9075OK9076 upserts base work item types if they already exist9077OK9078 upserts default widget definitions if they already exist and type changes9079OK9080 does not change default widget definitions if they already exist with changed disabled status9081OK9082 executes single INSERT query per types and widget definitions9083 when some base types exist9084OK9085 inserts all types and does nothing if some already existed9086 when some widget definitions exist9087OK9088 inserts all widget definitions and does nothing if some already existed9089ContainerExpirationPolicies::CleanupService9090 #execute9091 with a successful cleanup tags service execution9092 completely clean up the repository9093 without a successful cleanup tags service execution9094 partially clean up the repository9095 with a truncated cleanup tags service response9096 partially clean up the repository9097 with no repository9098 returns an error response9099 with an invalid policy9100 returns an error response9101 with a network error9102 raises an error9103 next run scheduling9104 with cleanups started_at before policy next_run_at9105 behaves like not scheduling the next run9106 does not scheduled the next run9107 with cleanups started_at around policy next_run_at9108 behaves like not scheduling the next run9109 does not scheduled the next run9110 with only the current repository started_at before the policy next_run_at9111 behaves like scheduling the next run9112 schedules the next run9113 with cleanups started_at after policy next_run_at9114 behaves like scheduling the next run9115 schedules the next run9116 with a future policy next_run_at9117 behaves like not scheduling the next run9118 does not scheduled the next run9119Packages::Rubygems::ProcessGemService9120 #execute9121 no gem file9122 returns an error9123 success9124 returns successfully9125 updates the package name and version9126 updates the package file name9127 when the package already exists9128 assigns the package_file to the existing package and deletes the temporary package9129 when the package already exists marked as pending_destruction9130 reuses the processing package9131 sub-service failure9132 returns an error9133 bad gem file9134 returns an error9135 without obtaining an exclusive lease9136 does not perform the services9137 with invalid metadata9138 raises the correct error9139Mutations::IncidentManagement::TimelineEventTag::Create9140 is expected to require graphql authorizations :admin_incident_management_timeline_event_tag9141 #resolve9142 when user has permission to create timeline event tag9143 adds the tag to the project9144 when TimelineEventTags::CreateService responds with an error9145 returns errors9146 when user has no permissions to create tags on a project9147 raises an error9148Gitlab::ImportExport::UploadsRestorer9149 bundle a project Git repo9150 legacy storage9151 saves the uploads successfully9152 copies the uploads to the project path9153 hashed storage9154 saves the uploads successfully9155 copies the uploads to the project path9156Organizations::GroupsFinder9157 #execute9158 when user is not authorized to read the organization9159 is expected to be empty9160 when organization is nil9161 is expected to be empty9162 when user is authorized to read the organization9163 return all accessible groups9164 when search param is passed9165 filters the groups by search9166 when sort param is not passed9167 return groups sorted by name in ascending order by default9168 when sort param is passed9169 field: "name", direction: "asc", sorted_groups: lazy { [other_group, private_group, public_group] }9170 sorts the groups9171 field: "name", direction: "desc", sorted_groups: lazy { [public_group, private_group, other_group] }9172 sorts the groups9173 field: "path", direction: "asc", sorted_groups: lazy { [other_group, private_group, public_group] }9174 sorts the groups9175 field: "path", direction: "desc", sorted_groups: lazy { [public_group, private_group, other_group] }9176 sorts the groups9177layouts/project9178 without ability to invite members9179 is expected not to have visible css ".js-invite-members-modal"9180 with ability to invite members9181 is expected to have visible css ".js-invite-members-modal"9182WorkItems::Widgets::CurrentUserTodos9183 .process_quick_action_param9184 when quick action param is todo_event9185 when param value is `done`9186 is expected to eq {:action=>"mark_as_done"}9187 when param value is `add`9188 is expected to eq {:action=>"add"}9189 when quick action param is not todo_event9190 is expected to eq {:foo=>"foo"}9191 .quick_action_params9192 is expected to contain exactly :todo_event9193 #type9194 is expected to eq :current_user_todos9195 .type9196 is expected to eq :current_user_todos9197 .quick_action_commands9198 is expected to contain exactly :todo and :done9199Gitlab::Analytics::CycleAnalytics::Aggregated::BaseQueryBuilder9200 scopes the query for the given project9201 author_username param9202 returns stage events associated with the given author9203 returns empty result when unknown author is given9204 milestone_title param9205 returns stage events associated with the milestone9206 returns empty result when unknown milestone is given9207 label_name param9208 returns stage events associated with multiple labels9209 does not include records with partial label match9210 assignee_username param9211 returns stage events associated assignee9212 timestamp filtering9213 filters by the end event time range9214 when in_progress items are requested9215 filters by the start event time range9216Gitlab::Metrics::Subscribers::ActionCable9217 #transmit9218 for transmissions initiated by Channel instance9219 tracks the event with "caller" set to "channel"9220 for transmissions initiated by GraphQL event subscriber9221 tracks the event with correct "caller" and "broadcasting"9222 is indifferent to keys being symbols or strings in result payload9223 when transmission is coming from unknown source9224 tracks the event with "caller" set to "unknown"9225 #broadcast9226 when broadcast is for a GraphQL event9227 tracks the event with broadcasting set to event topic9228 when broadcast is for a GraphQL channel subscription9229 strips out subscription ID from broadcasting9230 when broadcast is something else9231 tracks the event as "unknown"9232 #transmit_subscription_confirmation9233 tracks the subscription confirmation event9234 #transmit_subscription_rejection9235 tracks the subscription rejection event9236FailedTests9237 missing report file9238[FailedTests] Creating output directory...9239 does not fail for output files9240 returns empty results for suite failures9241 #output_failed_tests9242 with a valid report file9243[FailedTests] Detected 1 failed tests in suite rspec...9244[FailedTests] Detected 1 failed tests in suite rspec_ee...9245 writes the file for the suite9246 when given a valid format9247[FailedTests] Detected 1 failed tests in suite rspec...9248[FailedTests] Detected 1 failed tests in suite rspec_ee...9249 writes the file for the suite9250 when given an invalid format9251[FailedTests] Detected 1 failed tests in suite rspec...9252 raises an exception9253 empty report9254 does not fail for output files9255 returns empty results for suite failures9256Gitlab::Pagination::Keyset9257 .available_for_type?9258 returns true for Project9259 return false for other types of relations9260 .available?9261 with order-by id asc9262 behaves like keyset pagination is available9263 returns true for Project9264 return false for other types of relations9265 with order-by id desc9266 behaves like keyset pagination is available9267 returns true for Project9268 return false for other types of relations9269 with other order-by columns9270 returns false for Project9271 return false for other types of relations9272ProjectHookPolicy9273 when the user is not a maintainer9274 cannot read and destroy web-hooks9275 when the user is a maintainer9276 can read and destroy web-hooks9277Gitlab::Import::Metrics9278 #track_start_import9279 when project is not a github import9280 does not emit importer metrics9281 when project is a github import9282 emits importer metrics9283 #track_failed_import9284 when project is not a github import9285 does not emit importer metrics9286 when project is a github import9287 emits importer metrics9288 #track_finished_import9289 when project is a github import9290 emits importer metrics9291 when import is partially completed9292 emits snowplow metrics9293 when project is not a github import9294 does not emit importer metrics9295 #track_cancelled_import9296 when project is not a github import9297 does not emit importer metrics9298 when project is a github import9299 emits importer metrics9300 #issues_counter9301 creates a counter for issues9302 #merge_requests_counter9303 creates a counter for issues9304ProtectedBranches::UpdateService9305 with entity project9306 behaves like execute with entity9307 #execute9308 updates a protected branch9309 refreshes the cache9310 when updating name of a protected branch to one that contains HTML tags9311 updates a protected branch9312 when a policy restricts rule update9313 prevents update of the protected branch rule9314 with entity group9315 behaves like execute with entity9316 #execute9317 updates a protected branch9318 refreshes the cache9319 when updating name of a protected branch to one that contains HTML tags9320 updates a protected branch9321 when a policy restricts rule update9322 prevents update of the protected branch rule9323Gitlab::Git::HookEnv9324 .set9325 with RequestStore disabled9326 does not store anything9327 with RequestStore enabled9328 whitelist some `GIT_*` variables and stores them using RequestStore9329 .all9330 with RequestStore enabled9331 returns an env hash9332 .to_env_hash9333 with RequestStore enabled9334 input: nil, output: nil9335 puts the right value in the hash9336 input: "foo", output: "foo"9337 puts the right value in the hash9338 input: [], output: ""9339 puts the right value in the hash9340 input: ["foo"], output: "foo"9341 puts the right value in the hash9342 input: ["foo", "bar"], output: "foo:bar"9343 puts the right value in the hash9344 thread-safety9345 with RequestStore enabled9346 is thread-safe9347RedirectRoute9348 relationships9349 is expected to belong to source required: false9350 validations9351 is expected to validate that :source cannot be empty/falsy9352 is expected to validate that :path cannot be empty/falsy9353 is expected to validate that :path is case-insensitively unique9354 .matching_path_and_descendants9355 when the redirect route matches with same casing9356 returns correct routes9357 when the redirect route matches with different casing9358 returns correct routes9359IncidentManagement::TimelineEventTags::CreateService9360 #execute9361 when current user is nil9362 behaves like error response9363 has an informative message9364 when user does not have permissions to create tags9365 behaves like error response9366 has an informative message9367 when error occurs during creation9368 behaves like error response9369 has an informative message9370 when user has permissions9371 creates database record9372 behaves like success response9373 has timeline event tag9374Ci::PipelineArtifacts::CoverageReportWorker9375 #perform9376 when pipeline exists9377 calls the pipeline coverage report service9378 when the pipeline is part of a hierarchy9379 when all pipelines is complete9380 calls the pipeline coverage report service on the root ancestor pipeline9381 when the pipeline hierarchy has incomplete pipeline9382 does not call pipeline coverage report service9383 when pipeline does not exist9384 does not call pipeline create artifact service9385AwardEmojisFinder9386 param validation9387 raises an error if `name` is invalid9388 does not raise an error if `name` is numeric9389 raises an error if `awarded_by` is invalid9390 #execute9391 scopes to the awardable9392 filters by emoji name9393 filters by user9394Gitlab::Database::Partitioning::SingleNumericListPartition9395 .from_sql9396 uses specified table name9397 uses specified partition name9398 parses the definition9399 #partition_name9400 is the explicit name if provided9401 defaults to the table name followed by the partition value9402 sorting9403 is incomparable if the tables do not match9404 sorts by the value when the tables match9405 sorts by numeric value rather than text value9406Gitlab::GithubImport::Importer::Attachments::NotesImporter9407 #collection_method9408 is expected to eq :note_attachments9409 #sequential_import9410 imports each project user note9411 when note is already processed9412 doesn't import this note9413 #id_for_already_imported_cache9414 is expected to eq 11729415 #sidekiq_worker_class9416 is expected to eq Gitlab::GithubImport::Attachments::ImportNoteWorker9417 #object_type9418 is expected to eq :note_attachment9419Ml::ModelMetadata9420 associations9421 is expected to belong to model required: true9422 validations9423 is unique within the model9424 a model is required9425Releases::CreateEvidenceWorker9426 creates a new Evidence record9427 creates a new Evidence record with pipeline9428events/event/_common.html.haml9429 when it is a work item event9430 renders the correct url with iid9431 uses issue_type for the target_name9432 when it is an issue event9433 renders the correct url9434 uses issue_type for the target_name9435SafelyChangeColumnDefault9436 does not send the old column value if the default has changed9437 prevents writing new default in place of the old default9438 forces the column to be written on a change9439 does not write the column without a change9440MergeRequests::PushedBranchesService9441 when branches pushed9442 returns only branches which have a open and closed merge request9443 when tags pushed9444 returns empty result without any SQL query performed9445Gitlab::BitbucketServerImport::Stage::ImportRepositoryWorker9446 #perform9447 when the import succeeds9448 schedules the next stage9449 logs stage start and finish9450 when project does not exists9451 does not call importer9452 when project import state is not `started`9453 does not call importer9454 when the importer fails9455 does not schedule the next stage and raises error9456 behaves like Gitlab::BitbucketServerImport::StageMethods9457 .sidekiq_retries_exhausted9458 tracks the import failure9459Gitlab::Loggable9460 #build_structured_payload9461 adds class and returns formatted json9462 appends additional params and returns formatted json9463 does not raise an error in loggers when passed non-symbols9464 handles anonymous classes9465 handles duplicate keys9466CleanupContainerRepositoryWorker9467 #perform9468 bulk delete api9469 executes the destroy service9470 does not raise error when user could not be found9471 does not raise error when repository could not be found9472Mutations::Achievements::Create9473 is expected to require graphql authorizations :admin_achievement9474 #resolve9475 when the user does not have permission9476 raises an error9477 when the user has permission9478 creates contact with correct values9479 when the params are invalid9480 returns the validation error9481BaseCountService9482 #relation_for_count9483 raises NotImplementedError9484 #count9485 returns the number of values9486 #uncached_count9487 returns the uncached number of values9488 #refresh_cache9489 refreshes the cache9490 #delete_cache9491 deletes the cache9492 #raw?9493 returns false9494 #cache_key9495 raises NotImplementedError9496 #cache_options9497 returns the default in options9498Admin::AbuseReports::UpdateService9499 #execute9500 with invalid parameters9501 invalid user9502 when no user is given9503 behaves like returns an error response9504 returns an error response9505 when given user is not an admin9506 behaves like returns an error response9507 returns an error response9508 invalid label_ids9509 does not update the abuse report9510 is expected to be success9511 with valid parameters9512 when label_ids is empty9513 when abuse report has existing labels9514 clears the abuse report labels9515 is expected to be success9516 when abuse report has no existing labels9517 does not update the abuse report9518 is expected to be success9519 when label_ids is not empty9520 updates the abuse report9521 is expected to be success9522Gitlab::Search::Query9523 is expected to be < SimpleDelegator9524 leaves undefined filters in the main query9525 parses filters9526 with an empty filter9527 ignores empty filters9528 with a pipe9529 does not escape the pipe9530 with an exclusive filter9531 negates the filter9532 with filter value in quotes9533 does not break the filter value in quotes9534 with extra white spaces between the query words9535 removes the extra whitespace between tokens9536 with mutliple filename filters9537 creates a filter for each filename in query9538 when multiple extension filters are added9539 creates a filter for each filename and extension in query9540BuildHooksWorker9541 #perform9542 when build exists9543 calls build hooks9544 when build does not exist9545 does not raise exception9546 .perform_async9547 sends a message to the application logger, before performing9548 behaves like worker with data consistency9549 .get_data_consistency_feature_flag_enabled?9550 returns true9551 .get_data_consistency9552 returns correct data consistency9553Gitlab::Ci::Status::Pipeline::Blocked9554 #text9555 overrides status text9556 #label9557 overrides status label9558 .matches?9559 when pipeline is blocked9560 is a correct match9561 when pipeline is not blocked9562 does not match9563ProtectedBranches::ApiService9564 with entity group9565 behaves like execute with entity9566 creates a protected branch with prefilled defaults9567 updates a protected branch without prefilled defaults9568 with entity project9569 behaves like execute with entity9570 creates a protected branch with prefilled defaults9571 updates a protected branch without prefilled defaults9572Gitlab::SQL::RecursiveCTE9573 #to_arel9574 generates an Arel relation for the CTE body9575 #alias_to9576 returns an alias for the CTE9577 replaces dots with an underscore9578 #apply_to9579 applies a CTE to an ActiveRecord::Relation9580 behaves like CTE with MATERIALIZED keyword examples9581 adding MATERIALIZE to the CTE9582 adds MATERIALIZE keyword9583 when materialized is disabled9584 does not add MATERIALIZE keyword9585Mutations::Boards::Update9586 is expected to require graphql authorizations :admin_issue_board9587 #resolve9588 when the user cannot admin the board9589 raises an error9590 when user can update board9591 updates board with correct values9592Resolvers::ErrorTracking::SentryDetailedErrorResolver9593 is expected to have nullable GraphQL type SentryDetailedError9594 #resolve9595 fetches the data via the sentry API9596 when error matches9597 resolves to a detailed error9598 assigns the gitlab project9599 when id does not match issue9600 resolves to nil9601Sidebars::UserSettings::Menus::ChatMenu9602 behaves like User settings menu9603 does not contain any sub menu9604 renders the correct link9605 renders the correct title9606 renders the correct icon9607 defines correct active route9608 behaves like User settings menu #render? method9609 #render?9610 when user is logged in9611 renders9612 when user is not logged in9613 does not render9614CommitUserMention9615 associations9616 is expected to belong to note required: false9617 behaves like has user mentions9618 #has_mentions?9619 when no mentions9620 returns false9621 when mentioned_users_ids not null9622 returns true9623 when mentioned projects9624 returns true9625 when mentioned groups9626 returns true9627RuboCop::Cop::Graphql::AuthorizeTypes9628 does not add an offense for classes that have an authorize call9629 adds add an offense when authorize is empty9630 does not add an offense for subtypes of BaseInputObject9631 does not add an offense for subtypes of BaseUnion9632 does not add an offense for Enums9633 adds an offense when there is no authorize call9634 adds add an offense when authorize has no arguments9635 does not add an offense for base types9636 does not add an offense for classes that only have an authorize call9637 does not add an offense for InputTypes9638Gitlab::Memory::Instrumentation9639 .available?9640 returns true9641 .start_thread_memory_allocations9642 a hash is returned9643 when feature is unavailable9644 a nil is returned9645 .with_memory_allocations9646 a hash is returned9647 when feature is unavailable9648 a nil is returned9649Pajamas::SpinnerComponent9650 class9651 has the correct custom class9652 color9653 by default9654 is dark9655 set to light9656 is light9657 inline9658 by default9659 renders a div9660 set to true9661 renders a span9662 label9663 by default9664 has "Loading" as aria-label9665 when set to something else9666 has a custom aria-label9667 size9668 has the correct size class9669Resolvers::DeploymentsResolver9670 #resolve9671 finds the deployment9672 finds the deployment when status matches9673 does not find the deployment when status does not match9674 transforms order_by for finder9675admin/groups/_form9676 group runner registration setting9677 runner_registration_enabled: true, valid_runner_registrars: ["group"], checked: true, disabled: false9678 renders the checkbox correctly9679 runner_registration_enabled: false, valid_runner_registrars: ["group"], checked: false, disabled: false9680 renders the checkbox correctly9681 runner_registration_enabled: false, valid_runner_registrars: ["project"], checked: false, disabled: true9682 renders the checkbox correctly9683Gitlab::Usage::Metrics::Instrumentations::CountProjectsWithMlCandidatesMetric9684 behaves like a correct instrumented metric value and query9685 behaves like a correct instrumented metric value9686 has correct value9687 behaves like a correct instrumented metric query9688 has correct generate query9689Gitlab::Usage::Metrics::Instrumentations::AggregatedMetric9690 data_source: "redis_hll", time_frame: "28d", operator: "OR", expected_value: 39691 has correct value9692 data_source: "database", time_frame: "7d", operator: "AND", expected_value: 1.09693 has correct value9694 data_source: "redis_hll", time_frame: "7d", operator: "AND", expected_value: 19695 has correct value9696 data_source: "database", time_frame: "7d", operator: "OR", expected_value: 3.09697 has correct value9698 data_source: "redis_hll", time_frame: "7d", operator: "OR", expected_value: 29699 has correct value9700 data_source: "redis_hll", time_frame: "28d", operator: "AND", expected_value: 29701 has correct value9702BulkImports::Common::Pipelines::WikiPipeline9703 #run9704 behaves like wiki pipeline imports a wiki for an entity9705 #run9706 when wiki exists9707 imports new wiki into destination project9708 when wiki does not exist9709 does not import wiki9710 when scheme is blocked9711 prevents import9712 when wiki is disabled9713 unsuccessful response9714 when response is forbidden9715 does not raise an error9716 when response is not found9717 does not raise an error9718 when response is not 4039719 does not raise an error9720Gitlab::Middleware::BasicHealthCheck9721 #call9722 outside IP9723 returns a 4049724 forwards the call for other paths9725 with X-Forwarded-For headers9726 returns 200 response when endpoint is allowed9727 returns 404 when whitelist is not configured9728 whitelisted IP9729 returns 200 response when endpoint is hit9730 forwards the call for other paths9731Emails::DestroyService9732 #execute9733 removes an email9734 when it corresponds to the user primary email9735 does not remove the email and raises an exception9736WorkItems::Widgets::AwardEmoji9737 #upvotes9738 is expected to eq 19739 .type9740 is expected to eq :award_emoji9741 #award_emoji9742 is expected to contain exactly #<AwardEmoji id: 29, name: "star", user_id: 2065, awardable_type: "Issue", created_at: "2023-11-22 16:34:23.818309279 +0000", updated_at: "2023-11-22 16:34:23.818309279 +0000", awardable_id: 304>, #<AwardEmoji id: 30, name: "thumbsup", user_id: 2066, awardable_type: "Issue", created_at: "2023-11-22 16:34:23.946669587 +0000", updated_at: "2023-11-22 16:34:23.946669587 +0000", awardable_id: 304>, and #<AwardEmoji id: 31, name: "thumbsdown", user_id: 2067, awardable_type: "Issue", created_at: "2023-11...-22 16:34:24.105479973 +0000", updated_at: "2023-11-22 16:34:24.105479973 +0000", awardable_id: 304>9743 #downvotes9744 is expected to eq 19745 #type9746 is expected to eq :award_emoji9747EnvironmentsHelper9748 #metrics_data9749 returns data9750 without admin_operations permission9751 is expected to include {"can_access_operations_settings" => "false"}9752 when the environment is not available9753 is expected to include {"environment_state" => "stopped"}9754 when metrics dashboard feature is unavailable9755 does not return data9756 #custom_metrics_available?9757 returns true9758API::Ci::Helpers::Runner9759 #get_runner_details_from_request9760 when no runner info is present9761 returns the runner IP9762 when runner info is present9763 extracts the runner details9764 #log_artifacts_filesize9765 behaves like storing arguments in the application context9766 places the expected params in the application context9767 behaves like not executing any extra queries for the application context9768 does not execute more queries than without adding anything to the application context9769Gitlab::UsageDataNonSqlMetrics9770 #add_metric9771 computes the metric value for given metric9772 .count9773 returns default value for count9774 .distinct_count9775 returns default value for distinct count9776 .estimate_batch_distinct_count9777 returns default value for estimate_batch_distinct_count9778 .sum9779 returns default value for sum9780 .histogram9781 returns default value for histogram9782 min/max methods9783 model: User(id: integer, email: string, encrypted_password: string, reset_password_token: string, reset_password_sent_at: datetime, remember_created_at: datetime, sign_in_count: integer, current_sign_in_at: datetime, last_sign_in_at: datetime, current_sign_in_ip: string, last_sign_in_ip: string, created_at: datetime, updated_at: datetime, name: string, admin: boolean, projects_limit: integer, failed_attempts: integer, locked_at: datetime, username: string, can_create_group: boolean, can_create_team: boolean, state: string, color_scheme_id: integer, password_expires_at: datetime, created_by_id: integer, last_credential_check_at: datetime, avatar: string, confirmation_token: string, confirmed_at: datetime, confirmation_sent_at: datetime, unconfirmed_email: string, hide_no_ssh_key: boolean, admin_email_unsubscribed_at: datetime, notification_email: string, hide_no_password: boolean, password_automatically_set: boolean, encrypted_otp_secret: string, encrypted_otp_secret_iv: string, encrypted_otp_secret_salt: string, otp_required_for_login: boolean, otp_backup_codes: text, public_email: string, dashboard: integer, project_view: integer, consumed_timestep: integer, layout: integer, hide_project_limit: boolean, note: text, unlock_token: string, otp_grace_period_started_at: datetime, external: boolean, incoming_email_token: string, auditor: boolean, require_two_factor_authentication_from_group: boolean, two_factor_grace_period: integer, last_activity_on: date, notified_of_own_activity: boolean, preferred_language: string, theme_id: integer, accepted_term_id: integer, feed_token: string, private_profile: boolean, roadmap_layout: integer, include_private_contributions: boolean, commit_email: string, group_view: integer, managing_group_id: integer, first_name: string, last_name: string, static_object_token: string, role: integer, user_type: integer, static_object_token_encrypted: text, otp_secret_expires_at: timestamptz, onboarding_in_progress: boolean, otp_secret: ), result: nil9784 returns nil9785 model: Issue(id: integer, title: string, author_id: integer, project_id: integer, created_at: datetime, updated_at: datetime, description: text, milestone_id: integer, iid: integer, updated_by_id: integer, weight: integer, confidential: boolean, due_date: date, moved_to_id: integer, lock_version: integer, title_html: text, description_html: text, time_estimate: integer, relative_position: integer, service_desk_reply_to: string, cached_markdown_version: integer, last_edited_at: datetime, last_edited_by_id: integer, discussion_locked: boolean, closed_at: timestamptz, closed_by_id: integer, state_id: integer, duplicated_to_id: integer, promoted_to_epic_id: integer, health_status: integer, external_key: string, sprint_id: integer, blocking_issues_count: integer, upvotes_count: integer, work_item_type_id: integer, namespace_id: integer, start_date: date), result: nil9786 returns nil9787 model: Deployment(id: integer, iid: integer, project_id: integer, environment_id: integer, ref: string, tag: boolean, sha: string, user_id: integer, deployable_type: string, created_at: datetime, updated_at: datetime, on_stop: string, status: integer, finished_at: timestamptz, deployable_id: integer, archived: boolean), result: nil9788 returns nil9789 model: Project(id: integer, name: string, path: string, description: text, created_at: datetime, updated_at: datetime, creator_id: integer, namespace_id: integer, last_activity_at: datetime, import_url: string, visibility_level: integer, archived: boolean, avatar: string, merge_requests_template: text, star_count: integer, merge_requests_rebase_enabled: boolean, import_type: string, import_source: string, approvals_before_merge: integer, reset_approvals_on_push: boolean, merge_requests_ff_only_enabled: boolean, issues_template: text, mirror: boolean, mirror_last_update_at: datetime, mirror_last_successful_update_at: datetime, mirror_user_id: integer, shared_runners_enabled: boolean, runners_token: string, build_allow_git_fetch: boolean, build_timeout: integer, mirror_trigger_builds: boolean, pending_delete: boolean, public_builds: boolean, last_repository_check_failed: boolean, last_repository_check_at: datetime, only_allow_merge_if_pipeline_succeeds: boolean, has_external_issue_tracker: boolean, repository_storage: string, repository_read_only: boolean, request_access_enabled: boolean, has_external_wiki: boolean, ci_config_path: string, lfs_enabled: boolean, description_html: text, only_allow_merge_if_all_discussions_are_resolved: boolean, repository_size_limit: integer, printing_merge_request_link_enabled: boolean, auto_cancel_pending_pipelines: integer, service_desk_enabled: boolean, cached_markdown_version: integer, delete_error: text, last_repository_updated_at: datetime, disable_overriding_approvers_per_merge_request: boolean, storage_version: integer, resolve_outdated_diff_discussions: boolean, remote_mirror_available_overridden: boolean, only_mirror_protected_branches: boolean, pull_mirror_available_overridden: boolean, jobs_cache_index: integer, external_authorization_classification_label: string, mirror_overwrites_diverged_branches: boolean, pages_https_only: boolean, external_webhook_token: string, packages_enabled: boolean, merge_requests_author_approval: boolean, pool_repository_id: integer, runners_token_encrypted: string, bfg_object_map: string, detected_repository_languages: boolean, merge_requests_disable_committers_approval: boolean, require_password_to_approve: boolean, max_pages_size: integer, max_artifacts_size: integer, pull_mirror_branch_prefix: string, remove_source_branch_after_merge: boolean, marked_for_deletion_at: date, marked_for_deletion_by_user_id: integer, autoclose_referenced_issues: boolean, suggestion_commit_message: string, project_namespace_id: integer, hidden: boolean, organization_id: integer, verification_checksum: binary), result: nil9790 returns nil9791Gitlab::HookData::ProjectMemberBuilder9792 #build9793 data9794 on create9795 is expected to eq "user_add_to_team"9796 behaves like includes the required attributes9797 includes the required attributes9798 on update9799 is expected to eq "user_update_for_team"9800 behaves like includes the required attributes9801 includes the required attributes9802 on destroy9803 is expected to eq "user_remove_from_team"9804 behaves like includes the required attributes9805 includes the required attributes9806Gitlab::Database::MigrationHelpers::CascadingNamespaceSettings9807 #add_cascading_namespace_setting9808-- column_exists?(:namespace_settings, :some_setting)9809 -> 0.0056s9810-- column_exists?(:namespace_settings, :lock_some_setting)9811 -> 0.0046s9812-- column_exists?(:application_settings, :some_setting)9813 -> 0.2549s9814-- column_exists?(:application_settings, :lock_some_setting)9815 -> 0.2516s9816 creates the required columns9817 when columns already exist9818-- add_column(:namespace_settings, :cascading_setting, :integer)9819 -> 0.0178s9820-- add_column(:application_settings, :lock_cascading_setting, :boolean)9821 -> 0.0115s9822-- column_exists?(:namespace_settings, :cascading_setting)9823 -> 0.0056s9824-- column_exists?(:namespace_settings, :lock_cascading_setting)9825 -> 0.0051s9826-- column_exists?(:application_settings, :cascading_setting)9827 -> 0.2513s9828-- column_exists?(:application_settings, :lock_cascading_setting)9829 -> 0.2550s9830 raises an error when some columns already exist9831 #remove_cascading_namespace_setting9832 removes the columns9833BulkImports::Common::Pipelines::BoardsPipeline9834 when issue board belongs to a project9835 #run9836 imports issue boards into destination project9837 when issue board belongs to a group9838 #run9839 imports issue boards into destination group9840Mutations::Pages::MarkOnboardingComplete9841 #resolve9842 when the current user has access to update pages9843 calls mark_pages_onboarding_complete on the project9844 returns onboarding_complete state9845 returns no errors9846 when the current user doesn't have access to update pages9847 raises an error9848Gitlab::Usage::Metrics::Instrumentations::CountProjectsMetric9849 with all time frame9850 behaves like a correct instrumented metric value and query9851 behaves like a correct instrumented metric value9852 has correct value9853 behaves like a correct instrumented metric query9854 has correct generate query9855 with 28d time frame9856 behaves like a correct instrumented metric value and query9857 behaves like a correct instrumented metric value9858 has correct value9859 behaves like a correct instrumented metric query9860 has correct generate query9861Sidebars::UserSettings::Menus::AuthenticationLogMenu9862 behaves like User settings menu #render? method9863 #render?9864 when user is logged in9865 renders9866 when user is not logged in9867 does not render9868 behaves like User settings menu9869 does not contain any sub menu9870 renders the correct link9871 renders the correct title9872 renders the correct icon9873 defines correct active route9874Gitlab::Ci::Config::Interpolation::Functions::Truncate9875 matches exactly the truncate function with 2 numeric arguments9876 truncates the given input9877 when given a non-string input9878 returns an error9879Gitlab::GithubImport::Stage::ImportLfsObjectsWorker9880 behaves like Gitlab::GithubImport::StageMethods9881 .sidekiq_retries_exhausted9882 tracks the exception and marks the import as failed9883 #import9884 imports all the lfs objects9885Gitlab::StringRegexMarker9886 #mark9887 with a single occurrence9888 marks the match9889 with multiple occurrences9890 marks the matches9891 with a Gitlab::UntrustedRegexp9892 marks the matches9893Gitlab::Database::ConnectionTimer9894 .starting_now9895 when the configured interval is positive9896 randomizes the interval of the created timer9897 when the configured interval is not positive9898 sets the interval of the created timer to nil9899 .expired?9900 when the interval is positive9901 when the interval has elapsed9902 returns true9903 when the interval has not elapsed9904 returns false9905 when the interval is not positive9906 when the interval has elapsed9907 returns false9908 when the interval has not elapsed9909 returns false9910 when the interval is nil9911 returns false9912 .reset!9913 updates the timer clock value9914BuildQueueWorker9915 #perform9916 when build exists9917 ticks runner queue value9918 when build does not exist9919 does not raise exception9920 behaves like worker with data consistency9921 .get_data_consistency_feature_flag_enabled?9922 returns true9923 .get_data_consistency9924 returns correct data consistency9925Resolvers::GroupsResolver9926 #resolve9927 includes public groups9928 includes accessible private groups9929 ordering9930 orders by name ascending9931 with `search` argument9932 filters groups by name9933ListUserPreference9934 relationships9935 is expected to belong to list required: false9936 is expected to belong to user required: false9937 is expected to validate that :user_id is case-sensitively unique within the scope of :list_id, producing a custom validation error on failure9938ObjectStorage::S39939 .signed_head_url9940 when the provider is AWS9941 generates a signed url9942 delegates to Fog::AWS::Storage::Files#head_url9943Ci::Runners::StaleManagersCleanupService9944 with no stale runner managers9945 does not clean any runner managers and returns :success status9946 with some stale runner managers9947 only leaves non-stale runners9948 with more stale runners than SUB_BATCH_LIMIT9949 only leaves non-stale runners9950 with more stale runners than MAX_DELETIONS9951 only leaves non-stale runners9952DeployKeys::DeployKeyEntity9953 returns deploy keys with projects a user can read9954 is expected to eq {:almost_orphaned=>false, :can_edit=>false, :created_at=>2023-11-22 16:34:40.157558121 +0000, :deploy...A", :id=>6, :title=>"My title 658", :updated_at=>2023-11-22 16:34:40.157558121 +0000, :user_id=>nil}9955Gitlab::ContainerRepository::Tags::Cache9956 #populate9957 with tags9958 gets values from redis9959 with cached values9960 gets values from redis9961 with no tags9962 behaves like not interacting with redis9963 does not interact with redis9964 #insert9965 with tags9966 inserts values in redis9967 with some of them already cached9968 behaves like not interacting with redis9969 does not interact with redis9970 with no tags9971 behaves like not interacting with redis9972 does not interact with redis9973 with no expires_in9974 behaves like not interacting with redis9975 does not interact with redis9976Gitlab::Usage::Metrics::Instrumentations::CountUserAuthMetric9977 with all time frame9978 behaves like a correct instrumented metric value9979 has correct value9980 with 28d time frame9981 behaves like a correct instrumented metric value9982 has correct value9983Gitlab::Asciidoc::Html5Converter9984 convert AsciiDoc to HTML59985 appends user-content- prefix on ref (anchor)9986Packages::Event9987 .unique_counters_for9988 is expected to contain exactly "i_package_npm_deploy_token"9989 behaves like handle forbidden event type9990 is expected to eq []9991 when an originator type is quest9992 is expected to eq []9993 .event_allowed?9994 is expected to eq true9995 behaves like handle forbidden event type9996 is expected to eq false9997 .counters_for9998 is expected to contain exactly "i_package_push_package", "i_package_push_package_by_deploy_token", and "i_package_npm_push_package"9999 behaves like handle forbidden event type10000 is expected to eq []10001Gitlab::Ci::Reports::Security::Locations::Sast10002 behaves like vulnerability location10003 #initialize10004 when all params are given10005 initializes an instance10006 param: :file_path10007 when param file_path is missing10008 raises an error10009 param: :start_line10010 when param start_line is missing10011 raises an error10012 #fingerprint10013 generates expected fingerprint10014 #fingerprint_path10015 generates expected fingerprint10016 #==10017 returns true when fingerprints are equal10018 returns false when fingerprints are different10019Gitlab::Memory::Watchdog::Monitor::HeapFragmentation10020 #call10021 gets gc_heap_fragmentation10022 when process exceeds threshold10023 returns if threshold is violated and payload10024 when process does not exceed threshold10025 returns if threshold is violated and payload10026 #initialize10027 sets the heap fragmentation limit gauge10028Banzai::Filter::ImageLazyLoadFilter10029 adds a class attribute10030 appends to the current class attribute10031 adds a async decoding attribute10032 transforms the image src to a data-src10033 works with external images10034RuboCop::Cop::CodeReuse::Presenter10035 flags the use of a Service class in a Presenter10036 flags the use of a Presenter in a worker10037 flags the use of a Presenter in a model class method10038 flags the use of a Presenter in a Service class10039 flags the use of a Presenter in a model instance method10040 flags the use of a Presenter in a Finder10041 flags the use of a Presenter in a Serializer10042RuboCop::Cop::RSpec::TopLevelDescribePath10043 when the file is a frontend fixture10044 registers no offenses10045 when the describe is in a shared context10046 with shared_context10047 registers no offenses10048 when the describe is at the top level10049 marks the describe as offending10050 when the describe is in a shared example10051 with shared_examples10052 registers no offenses10053 with shared_examples_for10054 registers no offenses10055 when the file ends in _spec.rb10056 registers no offenses10057GRPC monkey patch10058 raises DeadlineExceeded on a late server streaming response10059Packages::PackageFinder10060 #execute10061 is expected to eq #<Packages::Package id: 23, project_id: 1667, created_at: "2023-11-22 16:34:46.306875000 +0000", upda...ge_type: "maven", creator_id: 2102, status: "default", last_downloaded_at: nil, status_message: nil>10062 with non-displayable package10063 raises an exception10064 processing packages10065 are not returned10066Gitlab::MergeRequests::Mergeability::RedisInterface10067 #save_check10068 saves the hash10069 #retrieve_check10070 returns the hash10071ApplicationCable::Connection10072 when session cookie is set10073 when user is logged in10074 sets current_user10075 with a stale password10076 sets current_user to nil10077 when user is not logged in10078 sets current_user to nil10079 when session cookie is not set10080 sets current_user to nil10081 when session cookie is an empty string10082 sets current_user to nil10083Ci::Runners::UpdateRunnerService#execute10084 with description params10085 updates the runner and ticking the queue10086 with paused param10087 updates the runner and ticking the queue10088 with cost factor params10089 updates the runner cost factors10090 when params are not valid10091 does not update and returns error because it is not valid10092Ci::ChangeVariablesService10093 #execute10094 delegates to ActiveRecord update10095Services::ReturnServiceResponses10096 #error10097 returns a ServiceResponse instance10098 #success10099 returns a ServiceResponse instance10100Gitlab::Git::CommitStats10101 returns commit stats and caches them10102Sidebars::YourWork::Menus::TodosMenu10103 #has_pill?10104 when count is zero10105 returns false10106 when count is larger than zero10107 returns true10108 #pill_count10109 returns the todos_pending_count of the user10110 memoizes the query10111Gitlab::Ci::Status::Success10112 #text10113 is expected to eq "Passed"10114 #label10115 is expected to eq "passed"10116 #icon10117 is expected to eq "status_success"10118 #favicon10119 is expected to eq "favicon_status_success"10120 #group10121 is expected to eq "success"10122 #details_path10123 is expected to be nil10124MergeRequests::Mergeability::CheckBaseService10125 #merge_request10126 returns the merge_request10127 #params10128 returns the params10129 #skip?10130 raises NotImplementedError10131 #cacheable?10132 raises NotImplementedError10133 #cache_key?10134 raises NotImplementedError10135Gitlab::Git::LfsChanges10136 #new_pointers10137 filters new objects to find lfs pointers10138 limits new_objects using object_limit10139 times out if given a small dynamic timeout10140Types::ErrorTracking::SentryErrorCollectionType10141 is expected to eq "SentryErrorCollection"10142 is expected to require graphql authorizations :read_sentry_issue10143 exposes the expected fields10144 errors field10145 returns errors10146Types::ProjectMemberType10147 is expected to expose permissions using Types::PermissionTypes::Project10148 is expected to eq "ProjectMember"10149 is expected to require graphql authorizations :read_project10150 has the expected fields10151DependencyProxy::ImageTtlGroupPolicyWorker10152 #perform10153 when there are images to expire10154 updates the old images to pending_destruction10155 counts logging10156 logs all the counts10157 with load balancing enabled10158 reads the counts from the replica10159trusted_proxies10160 with default config10161 preserves private IPs10162 filters out localhost10163 filters out bad values10164 with private IP ranges added10165 filters out private and local IPs10166 with proxy IP added10167 filters out proxy IP10168 handles invalid ip addresses10169Packages::Composer::CacheFile10170 relationships10171 is expected to belong to group required: false10172 is expected to belong to namespace required: false10173 validations10174 is expected to validate that :namespace cannot be empty/falsy10175 scopes10176 .with_namespace10177 is expected to eq [#<Packages::Composer::CacheFile id: 1, created_at: "2023-11-22 16:34:51.916109821 +0000", updated_at...00", delete_at: nil, namespace_id: 4259, file_store: 1, file: "123456.json", file_sha256: "123456">]10178 .with_sha10179 is expected to eq [#<Packages::Composer::CacheFile id: 1, created_at: "2023-11-22 16:34:51.916109821 +0000", updated_at...00", delete_at: nil, namespace_id: 4259, file_store: 1, file: "123456.json", file_sha256: "123456">]10180Gitlab::LegacyGithubImport::LabelFormatter10181 #attributes10182 returns formatted attributes10183 #create!10184 when label does not exist10185 creates a new label10186 when label exists10187 does not create a new label10188Tooling::Crystalball::CoverageLinesExecutionDetector10189 #detect10190 is expected to eq ["file.rb"]10191 with no changes10192 is expected to eq []10193 with previously uncovered file10194 is expected to eq ["file.rb"]10195 with path outside of root10196 is expected to eq []10197 with path in excluded prefix10198 is expected to eq []10199OmniAuth::Strategies::OAuth210200 verifies the gem version10201 when a Faraday exception is raised10202 exception: Faraday::TimeoutError10203 passes the exception to OmniAuth10204 exception: Faraday::ConnectionFailed10205 passes the exception to OmniAuth10206RuboCop::Cop::Migration::WithLockRetriesDisallowedMethod10207 when outside of migration10208 registers no offense10209 when in migration10210 registers an offense when `with_lock_retries` block has disallowed method10211 registers an offense when `with_lock_retries` block has disallowed methods10212 registers no offense when `with_lock_retries` has only allowed method10213 for `add_foreign_key`10214 registers an offense when more than two FKs are added10215Types::Kas::AgentConfigurationType10216 is expected to eq "AgentConfiguration"10217 is expected to eq "Configuration details for an Agent"10218 is expected to have graphql fields :agent_name10219shared/milestones/_top.html.haml10220 does not render a deprecation message for a non-legacy and non-dashboard milestone10221Web IDE routing10222 remote10223 routes to #index, without remote_path10224 routes to #index, with remote_path10225GitHelper10226 #short_sha10227 is expected to eq "d4e043f6"10228 #strip_signature10229 strips PGP SIGNATURE10230 is expected to eq "Version 1.69.0\n\n"10231 strips PGP MESSAGE10232 is expected to eq "Version 1.69.0\n\n"10233 strips SIGNED MESSAGE10234 is expected to eq "this is Roger's signed tag\n\n"10235Gitlab::Tracking::Destinations::Snowplow10236 when snowplow is enabled10237 #event10238 sends event to tracker10239 increase total snowplow events counter10240 when snowplow is not enabled10241 #event10242 does not send event to tracker10243 callbacks10244 on success10245 increase gitlab_successful_snowplow_events_total counter10246 on failure10247 increase gitlab_failed_snowplow_events_total counter and logs failures10248Gitlab::GithubImport::Stage::ImportProtectedBranchesWorker10249 #import10250 imports all the pull requests10251 behaves like Gitlab::GithubImport::StageMethods10252 .sidekiq_retries_exhausted10253 tracks the exception and marks the import as failed10254DevOpsReport::MetricPresenter10255 #cards10256 includes instance score, leader score and percentage score10257 #idea_to_production_steps10258 returns percentage score when it depends on a single feature10259 returns percentage score when it depends on two features10260 #average_percentage_score10261 calculates an average value across all the features10262Integrations::HasWebHook10263 when integration does not respond to enable_ssl_verification10264 is expected to eq true10265 when hook_url and url_variables are not implemented10266 is expected to raise NotImplementedError10267 is expected to raise NotImplementedError10268 when integration responds to enable_ssl_verification10269 is expected to eq true10270Gitlab::Graphql::Loaders::BatchLfsOidLoader10271 #find10272 batch-resolves LFS blob IDs10273Gitlab::Auth::Otp::Strategies::FortiAuthenticator::PushOtp10274 successful validation10275 returns success10276 unsuccessful validation10277 returns error10278 unexpected error10279 returns error10280WorkItems::Widgets::HierarchyService::CreateService10281 #create10282 when invalid params are present10283 behaves like raises a WidgetError10284 is expected to raise WorkItems::Widgets::BaseService::WidgetError with "One or more arguments are invalid: other_parent."10285errors/access_denied10286 does not fail to render when there is no message provided10287Banzai::Pipeline::EmojiPipeline10288 replaces emoji10289 filters out HTML tags10290Types::AlertManagement::IntegrationTypeEnum10291 is expected to eq "AlertManagementIntegrationType"10292 statuses10293 name: "PROMETHEUS", value: :prometheus10294 exposes a type with the correct value10295 name: "HTTP", value: :http10296 exposes a type with the correct value10297Gitlab::Usage::Metrics::Instrumentations::CountPersonalSnippetsMetric10298 with a timeframe of all10299 behaves like a correct instrumented metric value10300 has correct value10301 with a time_frame of 28 days10302 behaves like a correct instrumented metric value10303 has correct value10304Gitlab::Ci::Build::Policy10305 .fabricate10306 when policy exists10307 fabricates and initializes relevant policy10308 when some policies are not defined10309 gracefully skips unknown policies10310 when passing a nil value as specs10311 returns an empty array10312Gitlab::HashedPath10313 #to_s10314 when path contains a single value10315 returns the disk path10316 when path contains multiple values10317 returns the disk path10318Gitlab::AppLogger10319 is expected to equal Gitlab::AppJsonLogger10320 logs to AppJsonLogger10321Gitlab::GitalyClient::Util10322 .repository10323 creates a Gitaly::Repository with the given data10324Types::CiConfiguration::Sast::AnalyzersEntityInputType10325 is expected to eq "SastCiConfigurationAnalyzersEntityInput"10326 is expected to contain exactly "enabled", "name", and "variables"10327Gitlab::Database::GitlabSchemaInfo10328 .new10329 does ensure that name is always symbol10330 does raise error when using invalid argument10331 .load_file10332 does load YAML file and has file_path specified10333Members::BaseService10334 #resolve_access_request_todos10335 calls the resolve_access_request_todos of todo service10336Admin::ReportedContentEntity10337 #as_json10338 exposes correct attributes10339 includes correct value for global_id10340 correctly exposes `reporter`10341Gitlab::Metrics::Memory10342 .gc_heap_fragmentation10343 when the Ruby heap is perfectly utilized10344 is expected to eq 010345 when the Ruby heap is greatly fragmented10346 is expected to be > 0.9910347 when the Ruby heap is semi-fragmented10348 is expected to eq 0.510349Achievements::AchievementsFinder10350 #execute10351 returns all achievements10352 when ids param provided10353 returns specified achievements10354Packages::CleanupArtifactWorker10355 #model10356 is expected to raise NotImplementedError10357 #log_metadata10358 is expected to raise NotImplementedError10359 #log_cleanup_item10360 is expected to raise NotImplementedError10361Banzai::Querying10362 .css10363 optimizes queries for elements with classes10364Sidebars::Organizations::Menus::ScopeMenu10365 behaves like serializable as super_sidebar_menu_args10366 returns hash with provided attributes10367 returns hash with an item_id10368Types::UserStatusType10369 is expected to eq "UserStatus"10370 exposes the expected fields10371Sidebars::Groups::SuperSidebarMenus::BuildMenu10372 defines list of NilMenuItem placeholders10373 has title and sprite_icon10374Types::Packages::Nuget::DependencyLinkMetadatumType10375 includes nuget dependency link metadatum fields10376Gitlab::Usage::Metrics::Instrumentations::PrometheusEnabledMetric10377 when the setting is false10378 behaves like a correct instrumented metric value10379 has correct value10380 when the setting is true10381 behaves like a correct instrumented metric value10382 has correct value10383Gitlab::Analytics::CycleAnalytics::StageEvents10384 #selectable_events10385 excludes internal events10386Types::ProjectMemberRelationEnum10387 is expected to eq "ProjectMemberRelation"10388 exposes all the existing project member relation type values10389Banzai::Filter::OutputSafety10390 when given HTML is safe10391 returns safe HTML10392 when given HTML is not safe10393 returns escaped HTML10394Types::ReleaseSourceType10395 is expected to require graphql authorizations :read_code10396 has the expected fields10397CodequalityReportsComparerEntity10398 #as_json10399 when base and head report have errors10400 contains correct compared codequality report details10401Gitlab::Usage::Metrics::Instrumentations::GitalyApdexMetric10402 gathers gitaly apdex10403NamespaceCiCdSetting10404 associations10405 is expected to belong to namespace required: false inverse_of => ci_cd_settings10406rubocop/rubocop10407 loads activesupport to enhance Enumerable10408Gitlab::Redis::Wrapper10409 .instrumentation_class10410 raises a NameError10411Types::MergeRequestReviewStateEnum10412 the correct enum members10413AbuseReportsHelper10414 #valid_image_mimetypes10415 is expected to eq "image/png, image/jpg, image/jpeg, image/gif, image/bmp, image/tiff, image/ico or image/webp"10416Gitlab::Usage::Metrics::Instrumentations::VersionMetric10417 behaves like a correct instrumented metric value10418 has correct value10419Ci::DailyBuildGroupReportResultSerializer10420 #to_json10421 returns an array of group results10422Gitlab::Usage::Metrics::Instrumentations::HostnameMetric10423 behaves like a correct instrumented metric value10424 has correct value10425circuitbox10426 configures Circuitbox10427Gitlab::Serializer::Ci::Variables10428 converts keys into strings and symbolizes hash10429Types::PermissionTypes::Ci::Job10430 has expected permission fields10431auto_explain log contains 1754 entries for main, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-4-24.338.main.ndjson.gz10432took 21.71486666110433auto_explain log contains 1754 entries for ci, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-4-24.338.ci.ndjson.gz10434took 20.36202315310435Knapsack report was generated. Preview:10437 "spec/models/project_spec.rb": 588.1187320810002,10438 "spec/lib/gitlab/github_import/user_finder_spec.rb": 119.47510438899985,10439 "spec/tasks/gitlab/usage_data_rake_spec.rb": 149.44902011799968,10440 "spec/lib/gitlab/import_export/project/relation_factory_spec.rb": 76.62875717099996,10441 "spec/services/notes/create_service_spec.rb": 64.43795998899986,10442 "spec/models/hooks/system_hook_spec.rb": 64.64978409700007,10443 "spec/lib/gitlab/rack_attack/request_spec.rb": 6.590470087000085,10444 "spec/serializers/merge_request_widget_entity_spec.rb": 50.09937733000015,10445 "spec/presenters/ci/build_runner_presenter_spec.rb": 34.38174266899978,10446 "spec/lib/gitlab/ci/config/entry/job_spec.rb": 8.266141955999956,10447 "spec/lib/banzai/reference_parser/snippet_parser_spec.rb": 35.86682992700025,10448 "spec/finders/releases/group_releases_finder_spec.rb": 36.442921061000106,10449 "spec/models/integrations/drone_ci_spec.rb": 24.849596894000115,10450 "spec/lib/gitlab/data_builder/push_spec.rb": 23.393973643999743,10451 "spec/helpers/groups_helper_spec.rb": 15.57603420400028,10452 "spec/services/design_management/copy_design_collection/copy_service_spec.rb": 30.673556106999968,10453 "spec/lib/error_tracking/sentry_client/issue_spec.rb": 3.564136898000015,10454 "spec/metrics_server/metrics_server_spec.rb": 12.926257963999888,10455 "spec/services/snippets/create_service_spec.rb": 15.754698674999872,10456 "spec/models/blob_spec.rb": 9.712253340999723,10457 "spec/models/integrations/chat_message/pipeline_message_spec.rb": 15.023628117000044,10458 "spec/lib/gitlab/bitbucket_import/importer_spec.rb": 22.828246796999792,10459 "spec/graphql/mutations/merge_requests/set_milestone_spec.rb": 22.910087568000108,10460 "spec/models/commit_collection_spec.rb": 17.989720904000023,10461 "spec/lib/api/validations/validators/bulk_imports/source_full_path_validator_spec.rb": 3.3877742450004007,10462 "spec/services/dependency_proxy/image_ttl_group_policies/update_service_spec.rb": 10.483334044999992,10463 "spec/graphql/mutations/issues/update_spec.rb": 14.448052492999977,10464 "spec/views/notify/pipeline_failed_email.html.haml_spec.rb": 17.831413157000043,10465 "spec/services/lfs/file_transformer_spec.rb": 15.806830864999938,10466 "spec/models/integrations/harbor_spec.rb": 13.299557068000013,10467 "spec/models/integrations/gitlab_slack_application_spec.rb": 7.7361404060002315,10468 "spec/services/issue_links/list_service_spec.rb": 15.29793268100002,10469 "spec/views/projects/_home_panel.html.haml_spec.rb": 16.37050413499992,10470 "spec/models/appearance_spec.rb": 3.8752314779999324,10471 "spec/helpers/projects/project_members_helper_spec.rb": 12.510413375000098,10472 "spec/initializers/load_balancing_spec.rb": 15.73552289700001,10473 "spec/lib/gitlab/redis/sidekiq_status_spec.rb": 3.443674589999773,10474 "spec/services/search/global_service_spec.rb": 12.222684933999972,10475 "spec/models/concerns/reactive_caching_spec.rb": 3.109518262000165,10476 "spec/lib/gitlab/redis/trace_chunks_spec.rb": 1.9888822339999024,10477 "spec/lib/gitlab/patch/redis_cache_store_spec.rb": 6.30463687800011,10478 "spec/models/deployment_metrics_spec.rb": 12.643913932000032,10479 "spec/workers/create_commit_signature_worker_spec.rb": 10.859635417999925,10480 "spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb": 8.990975353000067,10481 "spec/services/upload_service_spec.rb": 7.969893652999872,10482 "spec/workers/merge_request_cleanup_refs_worker_spec.rb": 11.03699952099987,10483 "spec/services/ci/delete_unit_tests_service_spec.rb": 12.647633791999851,10484 "spec/finders/fork_projects_finder_spec.rb": 10.801572123999904,10485 "spec/lib/api/entities/merge_request_basic_spec.rb": 9.325152440000238,10486 "spec/finders/access_requests_finder_spec.rb": 8.80885465099982,10487 "spec/models/concerns/has_user_type_spec.rb": 7.058432863000235,10488 "spec/lib/gitlab/http_connection_adapter_spec.rb": 7.815595529000348,10489 "spec/services/award_emojis/destroy_service_spec.rb": 9.207867320999867,10490 "spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb": 2.309571821999725,10491 "spec/lib/gitlab/data_builder/pipeline_spec.rb": 7.205858058999638,10492 "spec/tasks/gitlab/artifacts/migrate_rake_spec.rb": 8.387365361999855,10493 "spec/workers/merge_worker_spec.rb": 8.265749644000152,10494 "spec/models/members/last_group_owner_assigner_spec.rb": 7.477472421999664,10495 "spec/models/incident_management/timeline_event_spec.rb": 5.712373327000023,10496 "spec/lib/bulk_imports/projects/pipelines/legacy_references_pipeline_spec.rb": 6.392768799999885,10497 "spec/models/zoom_meeting_spec.rb": 3.8769078770001215,10498 "spec/models/ci/runner_project_spec.rb": 8.042377706000025,10499 "spec/models/ci/namespace_mirror_spec.rb": 6.377657860999989,10500 "spec/lib/gitlab/instrumentation/redis_cluster_validator_spec.rb": 1.1352606380000907,10501 "spec/finders/projects/groups_finder_spec.rb": 4.458372320000308,10502 "spec/services/todos/destroy/confidential_issue_service_spec.rb": 7.1811989409998205,10503 "spec/services/ci/catalog/resources/validate_service_spec.rb": 5.857573371999933,10504 "spec/models/ci_platform_metric_spec.rb": 5.298578188000192,10505 "spec/lib/gitlab/database/partitioning_spec.rb": 3.084976975000245,10506 "spec/models/product_analytics_event_spec.rb": 4.346498251999947,10507 "spec/finders/tags_finder_spec.rb": 2.074866424999982,10508 "spec/services/projects/import_export/relation_export_service_spec.rb": 3.6894316110001455,10509 "spec/services/feature_flags/update_service_spec.rb": 3.8176457800000207,10510 "spec/lib/gitlab/conflict/file_collection_spec.rb": 5.857009968000057,10511 "spec/lib/gitlab/database/health_status/indicators/wal_rate_spec.rb": 1.3113895330002379,10512 "spec/services/packages/protection/create_rule_service_spec.rb": 2.213909611999952,10513 "spec/models/concerns/bulk_insert_safe_spec.rb": 1.999765391999972,10514 "spec/services/todos/destroy/design_service_spec.rb": 6.0065887830000975,10515 "spec/lib/gitlab/ci/config/entry/service_spec.rb": 1.1804579539998485,10516 "spec/models/customer_relations/organization_spec.rb": 2.5396256839999296,10517 "spec/services/projects/container_repository/cleanup_tags_service_spec.rb": 1.613507595000101,10518 "spec/models/users/in_product_marketing_email_spec.rb": 2.001707431000341,10519 "spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb": 3.1912609450000673,10520 "spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb": 1.886096171999725,10521 "spec/lib/gitlab/git/conflict/parser_spec.rb": 1.398950524999691,10522 "spec/workers/issues/rebalancing_worker_spec.rb": 1.6000414569998611,10523 "spec/models/concerns/manual_inverse_association_spec.rb": 4.669930182999906,10524 "spec/services/packages/pypi/create_package_service_spec.rb": 2.394389216000036,10525 "spec/services/groups/group_links/destroy_service_spec.rb": 4.299079126999914,10526 "spec/models/blob_viewer/gitlab_ci_yml_spec.rb": 3.476385709999704,10527 "spec/lib/gitlab/ci/build/policy/refs_spec.rb": 1.2536128279998593,10528 "spec/graphql/types/user_merge_request_interaction_type_spec.rb": 2.241675639999812,10529 "spec/lib/gitlab/database/background_migration/batched_migration_wrapper_spec.rb": 1.2783405469999707,10530 "spec/models/concerns/exportable_spec.rb": 1.3469325290002416,10531 "spec/models/users/merge_request_interaction_spec.rb": 1.8363104969998858,10532 "spec/graphql/resolvers/concerns/caching_array_resolver_spec.rb": 2.0428259670002262,10533 "spec/services/milestones/closed_issues_count_service_spec.rb": 4.35551131200009,10534 "spec/services/releases/links/create_service_spec.rb": 4.005012521999561,10535 "spec/graphql/resolvers/project_milestones_resolver_spec.rb": 2.098324952999974,10536 "spec/models/bulk_imports/export_spec.rb": 2.0701261950002845,10537 "spec/lib/gitlab/ci/config/entry/jobs_spec.rb": 0.8205451969997739,10538 "spec/services/feature_flags/create_service_spec.rb": 2.6472362539998358,10539 "spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb": 1.2753570659997422,10540 "spec/services/milestones/close_service_spec.rb": 3.7951326709999194,10541 "spec/services/design_management/generate_image_versions_service_spec.rb": 2.2058684129997346,10542 "spec/workers/bulk_imports/export_request_worker_spec.rb": 1.4625581690002036,10543 "spec/uploaders/object_storage/cdn/google_cdn_spec.rb": 1.211334122000153,10544 "spec/helpers/jira_connect_helper_spec.rb": 1.1863148239999646,10545 "spec/models/blob_viewer/base_spec.rb": 0.6635024610000073,10546 "spec/services/bulk_imports/uploads_export_service_spec.rb": 2.948876247000044,10547 "spec/views/projects/diffs/_viewer.html.haml_spec.rb": 3.276879327000188,10548 "spec/lib/sidebars/panel_spec.rb": 0.8030782189998718,10549 "spec/helpers/form_helper_spec.rb": 0.6916603979998399,10550 "spec/workers/gitlab/bitbucket_import/stage/import_issues_worker_spec.rb": 1.1465637969999989,10551 "spec/policies/alert_management/alert_policy_spec.rb": 1.6739947009996285,10552 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/merge_request_merged_spec.rb": 2.0785928440000134,10553 "spec/lib/banzai/reference_parser/design_parser_spec.rb": 2.951735546999771,10554 "spec/services/boards/create_service_spec.rb": 2.0060391110000637,10555 "spec/models/pages/lookup_path_spec.rb": 0.9174104379999335,10556 "spec/models/preloaders/project_policy_preloader_spec.rb": 3.295350356000199,10557 "spec/lib/constraints/group_url_constrainer_spec.rb": 1.5073791149998215,10558 "spec/services/system_hooks_service_spec.rb": 1.7156782870001734,10559 "spec/models/legacy_diff_discussion_spec.rb": 3.1247094509999442,10560 "spec/services/resource_events/change_milestone_service_spec.rb": 2.2840426970001317,10561 "spec/graphql/resolvers/alert_management/alert_resolver_spec.rb": 1.873126062999745,10562 "spec/lib/gitlab/etag_caching/store_spec.rb": 0.43503192100024535,10563 "spec/lib/gitlab/checks/global_file_size_check_spec.rb": 1.3518993900001988,10564 "spec/graphql/resolvers/group_members_resolver_spec.rb": 2.061736075999761,10565 "spec/services/database/mark_migration_service_spec.rb": 0.44374698000001445,10566 "spec/lib/gitlab/setup_helper/praefect_spec.rb": 0.49789475599982325,10567 "spec/lib/gitlab/bitbucket_server_import/user_finder_spec.rb": 0.6993305770001825,10568 "spec/lib/banzai/filter/front_matter_filter_spec.rb": 0.49561658599986913,10569 "spec/models/packages/debian/project_distribution_key_spec.rb": 1.0888457230003041,10570 "spec/models/incident_management/project_incident_management_setting_spec.rb": 1.260344196999995,10571 "spec/lib/banzai/reference_parser/mentioned_user_parser_spec.rb": 2.6107011670001157,10572 "spec/db/production/create_base_work_item_types_spec.rb": 0.9124776690000544,10573 "spec/services/container_expiration_policies/cleanup_service_spec.rb": 1.3486287489999995,10574 "spec/services/packages/rubygems/process_gem_service_spec.rb": 1.556899021999925,10575 "spec/graphql/mutations/incident_management/timeline_event_tag/create_spec.rb": 1.405613594999977,10576 "spec/lib/gitlab/import_export/uploads_restorer_spec.rb": 1.992876152000008,10577 "spec/finders/organizations/groups_finder_spec.rb": 1.538989582999875,10578 "spec/views/layouts/project.html.haml_spec.rb": 1.261717408000095,10579 "spec/models/work_items/widgets/current_user_todos_spec.rb": 0.7230874150000091,10580 "spec/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder_spec.rb": 1.8609745740000108,10581 "spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb": 0.43019437100019786,10582 "spec/scripts/failed_tests_spec.rb": 0.37212205599962545,10583 "spec/lib/gitlab/pagination/keyset_spec.rb": 0.39852508499961914,10584 "spec/policies/project_hook_policy_spec.rb": 2.680548490000092,10585 "spec/lib/gitlab/import/metrics_spec.rb": 0.6344644239998161,10586 "spec/services/protected_branches/update_service_spec.rb": 1.2759296059998633,10587 "spec/lib/gitlab/git/hook_env_spec.rb": 0.5431854519997614,10588 "spec/models/redirect_route_spec.rb": 1.1685557460000382,10589 "spec/services/incident_management/timeline_event_tags/create_service_spec.rb": 2.2437876200001483,10590 "spec/workers/ci/pipeline_artifacts/coverage_report_worker_spec.rb": 1.6914719189999232,10591 "spec/finders/award_emojis_finder_spec.rb": 1.731777095000325,10592 "spec/lib/gitlab/database/partitioning/single_numeric_list_partition_spec.rb": 0.42807761199992456,10593 "spec/lib/gitlab/github_import/importer/attachments/notes_importer_spec.rb": 0.9169725179999659,10594 "spec/models/ml/model_metadata_spec.rb": 0.8562186539998038,10595 "spec/workers/releases/create_evidence_worker_spec.rb": 1.7834604609997768,10596 "spec/views/events/event/_common.html.haml_spec.rb": 1.1110508709998612,10597 "spec/models/concerns/safely_change_column_default_spec.rb": 0.32322040100007143,10598 "spec/services/merge_requests/pushed_branches_service_spec.rb": 2.35451884000031,10599 "spec/workers/gitlab/bitbucket_server_import/stage/import_repository_worker_spec.rb": 1.2230833300000086,10600 "spec/lib/gitlab/loggable_spec.rb": 0.2867777249998653,10601 "spec/workers/cleanup_container_repository_worker_spec.rb": 1.4011744239996915,10602 "spec/graphql/mutations/achievements/create_spec.rb": 1.447880060999978,10603 "spec/services/base_count_service_spec.rb": 0.43966499099997236,10604 "spec/services/admin/abuse_reports/update_service_spec.rb": 0.951511494999977,10605 "spec/lib/gitlab/search/query_spec.rb": 0.46156727900006445,10606 "spec/workers/build_hooks_worker_spec.rb": 1.561917791000269,10607 "spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb": 1.1732710860001134,10608 "spec/services/protected_branches/api_service_spec.rb": 1.063826765000158,10609 "spec/lib/gitlab/sql/recursive_cte_spec.rb": 0.4221727119997922,10610 "spec/graphql/mutations/boards/update_spec.rb": 0.8047693979997348,10611 "spec/graphql/resolvers/error_tracking/sentry_detailed_error_resolver_spec.rb": 0.6714635799999087,10612 "spec/lib/sidebars/user_settings/menus/chat_menu_spec.rb": 0.4111718630001633,10613 "spec/models/user_mentions/commit_user_mention_spec.rb": 0.35417430800043803,10614 "spec/rubocop/cop/graphql/authorize_types_spec.rb": 0.555768149999949,10615 "spec/lib/gitlab/memory/instrumentation_spec.rb": 0.28407162499979677,10616 "spec/components/pajamas/spinner_component_spec.rb": 0.39389643499998783,10617 "spec/graphql/resolvers/deployments_resolver_spec.rb": 1.1052467209997303,10618 "spec/views/admin/groups/_form.html.haml_spec.rb": 0.4754176980000011,10619 "spec/lib/gitlab/usage/metrics/instrumentations/count_projects_with_ml_candidates_metric_spec.rb": 1.6134773260000657,10620 "spec/lib/gitlab/usage/metrics/instrumentations/aggregated_metric_spec.rb": 0.39620907400012584,10621 "spec/lib/bulk_imports/common/pipelines/wiki_pipeline_spec.rb": 1.3036915130001034,10622 "spec/lib/gitlab/middleware/basic_health_check_spec.rb": 0.3053481329998249,10623 "spec/services/emails/destroy_service_spec.rb": 0.43212046100006773,10624 "spec/models/work_items/widgets/award_emoji_spec.rb": 1.0809165640002902,10625 "spec/helpers/environments_helper_spec.rb": 1.0766995049998513,10626 "spec/lib/api/ci/helpers/runner_helpers_spec.rb": 1.1994280819999403,10627 "spec/lib/gitlab/usage_data_non_sql_metrics_spec.rb": 0.430269591999604,10628 "spec/lib/gitlab/hook_data/project_member_builder_spec.rb": 1.0222595789996376,10629 "spec/lib/gitlab/database/migration_helpers/cascading_namespace_settings_spec.rb": 1.2936198239999612,10630 "spec/lib/bulk_imports/common/pipelines/boards_pipeline_spec.rb": 1.4373497720002888,10631 "spec/graphql/mutations/pages/mark_onboarding_complete_spec.rb": 1.1820915150001383,10632 "spec/lib/gitlab/usage/metrics/instrumentations/count_projects_metric_spec.rb": 1.1345282880001832,10633 "spec/lib/sidebars/user_settings/menus/authentication_log_menu_spec.rb": 0.5288332630002515,10634 "spec/lib/gitlab/ci/config/interpolation/functions/truncate_spec.rb": 0.2233739900002547,10635 "spec/workers/gitlab/github_import/stage/import_lfs_objects_worker_spec.rb": 0.5380852319999576,10636 "spec/lib/gitlab/string_regex_marker_spec.rb": 0.22186316999977862,10637 "spec/lib/gitlab/database/connection_timer_spec.rb": 0.38954627500015704,10638 "spec/workers/build_queue_worker_spec.rb": 0.7563461029999416,10639 "spec/graphql/resolvers/groups_resolver_spec.rb": 1.0814152130001276,10640 "spec/models/list_user_preference_spec.rb": 1.0762829540003622,10641 "spec/uploaders/object_storage/s3_spec.rb": 0.9979482009998719,10642 "spec/services/ci/runners/stale_managers_cleanup_service_spec.rb": 0.5862838279999778,10643 "spec/serializers/deploy_keys/deploy_key_entity_spec.rb": 1.2693179060001967,10644 "spec/lib/gitlab/container_repository/tags/cache_spec.rb": 0.7037513870000112,10645 "spec/lib/gitlab/usage/metrics/instrumentations/count_user_auth_metric_spec.rb": 0.6847392479999144,10646 "spec/lib/gitlab/asciidoc/html5_converter_spec.rb": 0.15992484600019452,10647 "spec/models/packages/event_spec.rb": 0.3638925680002103,10648 "spec/lib/gitlab/ci/reports/security/locations/sast_spec.rb": 0.34899682900004336,10649 "spec/lib/gitlab/memory/watchdog/monitor/heap_fragmentation_spec.rb": 0.2506741880001755,10650 "spec/lib/banzai/filter/image_lazy_load_filter_spec.rb": 0.29567520399996283,10651 "spec/rubocop/cop/code_reuse/presenter_spec.rb": 0.4044439849999435,10652 "spec/rubocop/cop/rspec/top_level_describe_path_spec.rb": 0.39717509499996595,10653 "spec/initializers/grpc_patch_spec.rb": 1.1646992860000864,10654 "spec/finders/packages/package_finder_spec.rb": 0.8763295220001055,10655 "spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb": 0.18833026299989797,10656 "spec/channels/application_cable/connection_spec.rb": 0.5603291399997943,10657 "spec/services/ci/runners/update_runner_service_spec.rb": 0.3584933980000642,10658 "spec/services/ci/change_variables_service_spec.rb": 0.21130242099980023,10659 "spec/services/concerns/services/return_service_responses_spec.rb": 0.18033373400021446,10660 "spec/lib/gitlab/git/commit_stats_spec.rb": 0.5872503769996911,10661 "spec/lib/sidebars/your_work/menus/todos_menu_spec.rb": 0.2716580860001159,10662 "spec/lib/gitlab/ci/status/success_spec.rb": 0.2850226850000581,10663 "spec/services/merge_requests/mergeability/check_base_service_spec.rb": 0.34333801000002495,10664 "spec/lib/gitlab/git/lfs_changes_spec.rb": 0.6984177279996402,10665 "spec/graphql/types/error_tracking/sentry_error_collection_type_spec.rb": 0.24404015899972364,10666 "spec/graphql/types/project_member_type_spec.rb": 0.24294549899968843,10667 "spec/workers/dependency_proxy/image_ttl_group_policy_worker_spec.rb": 0.5575846299998375,10668 "spec/initializers/trusted_proxies_spec.rb": 0.30595913300021493,10669 "spec/models/packages/composer/cache_file_spec.rb": 0.44823944999961896,10670 "spec/lib/gitlab/legacy_github_import/label_formatter_spec.rb": 0.6570234709997749,10671 "spec/tooling/lib/tooling/crystalball/coverage_lines_execution_detector_spec.rb": 0.36763065700006337,10672 "spec/initializers/100_patch_omniauth_oauth2_spec.rb": 0.20989729099983379,10673 "spec/rubocop/cop/migration/with_lock_retries_disallowed_method_spec.rb": 0.30021654399979525,10674 "spec/graphql/types/kas/agent_configuration_type_spec.rb": 0.2058378309998261,10675 "spec/views/shared/milestones/_top.html.haml_spec.rb": 0.8526289140004337,10676 "spec/routing/web_ide_routing_spec.rb": 0.17775244399990697,10677 "spec/helpers/git_helper_spec.rb": 0.27564127499999813,10678 "spec/lib/gitlab/tracking/destinations/snowplow_spec.rb": 0.3157763710000836,10679 "spec/workers/gitlab/github_import/stage/import_protected_branches_worker_spec.rb": 0.44074309099960374,10680 "spec/presenters/dev_ops_report/metric_presenter_spec.rb": 0.26830823600039366,10681 "spec/models/concerns/integrations/has_web_hook_spec.rb": 0.34434351900017646,10682 "spec/lib/gitlab/graphql/loaders/batch_lfs_oid_loader_spec.rb": 0.5885518179998144,10683 "spec/lib/gitlab/auth/otp/strategies/forti_authenticator/push_otp_spec.rb": 0.28746558400007416,10684 "spec/services/work_items/widgets/hierarchy_service/create_service_spec.rb": 0.5895044170001711,10685 "spec/views/errors/access_denied.html.haml_spec.rb": 0.2351792290000958,10686 "spec/lib/banzai/pipeline/emoji_pipeline_spec.rb": 0.17606052500013902,10687 "spec/graphql/types/alert_management/integration_type_enum_spec.rb": 0.21667957099998603,10688 "spec/lib/gitlab/usage/metrics/instrumentations/count_personal_snippets_metric_spec.rb": 0.40221408400020664,10689 "spec/lib/gitlab/ci/build/policy_spec.rb": 0.1977046820002215,10690 "spec/lib/gitlab/hashed_path_spec.rb": 0.1653991460002544,10691 "spec/lib/gitlab/app_logger_spec.rb": 0.1780237739999393,10692 "spec/lib/gitlab/gitaly_client/util_spec.rb": 0.14682323599981828,10693 "spec/graphql/types/ci_configuration/sast/analyzers_entity_input_type_spec.rb": 0.1785415440003817,10694 "spec/lib/gitlab/database/gitlab_schema_info_spec.rb": 0.22527580099995248,10695 "spec/services/members/base_service_spec.rb": 0.43002824100040016,10696 "spec/serializers/admin/reported_content_entity_spec.rb": 0.22006006099991282,10697 "spec/lib/gitlab/metrics/memory_spec.rb": 0.20294920300011654,10698 "spec/finders/achievements/achievements_finder_spec.rb": 0.26924860700000863,10699 "spec/workers/concerns/packages/cleanup_artifact_worker_spec.rb": 0.23148217000016302,10700 "spec/lib/banzai/querying_spec.rb": 0.154408145999696,10701 "spec/lib/sidebars/organizations/menus/scope_menu_spec.rb": 0.19072514299978138,10702 "spec/graphql/types/user_status_type_spec.rb": 0.1774445440000818,10703 "spec/lib/sidebars/groups/super_sidebar_menus/build_menu_spec.rb": 0.17448461499998302,10704 "spec/graphql/types/packages/nuget/dependency_link_metdatum_type_spec.rb": 0.143617247000293,10705 "spec/lib/gitlab/usage/metrics/instrumentations/prometheus_enabled_metric_spec.rb": 0.17621945499968206,10706 "spec/lib/gitlab/analytics/cycle_analytics/stage_events_spec.rb": 0.14446732700025677,10707 "spec/graphql/types/project_member_relation_enum_spec.rb": 0.17736758399996688,10708 "spec/lib/banzai/filter/output_safety_spec.rb": 0.17479815400020016,10709 "spec/graphql/types/release_source_type_spec.rb": 0.17405741499987926,10710 "spec/serializers/codequality_reports_comparer_entity_spec.rb": 0.1610909050000373,10711 "spec/lib/gitlab/usage/metrics/instrumentations/gitaly_apdex_metric_spec.rb": 0.152992126999834,10712 "spec/models/namespace_ci_cd_setting_spec.rb": 0.15265781600010087,10713 "spec/rubocop/rubocop_spec.rb": 0.14664348699989205,10714 "spec/lib/gitlab/redis/wrapper_spec.rb": 0.14667696699962107,10715 "spec/graphql/types/merge_request_review_state_enum_spec.rb": 0.14615409800035195,10716 "spec/helpers/abuse_reports_helper_spec.rb": 0.13873391800007084,10717 "spec/lib/gitlab/usage/metrics/instrumentations/version_metric_spec.rb": 0.15268243599984999,10718 "spec/serializers/ci/daily_build_group_report_result_serializer_spec.rb": 0.19274090199996863,10719 "spec/lib/gitlab/usage/metrics/instrumentations/hostname_metric_spec.rb": 0.1492071269999542,10720 "spec/initializers/circuitbox_spec.rb": 0.14767758700008926,10721 "spec/lib/gitlab/serializer/ci/variables_spec.rb": 0.14759225600028003,10722 "spec/graphql/types/permission_types/ci/job_spec.rb": 0.1438973560002523310724Knapsack global time execution for tests: 34m 29s10725Pending: (Failures listed here are expected and do not affect your suite's status)10726 1) Appearance with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes any FileUploader uploads which are not mounted10727 # No reason given10728 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:2310729 2) Appearance with uploads behaves like model with uploads .destroy with not mounted uploads with local files deletes local files10730 # No reason given10731 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:2710732 3) Appearance with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes any FileUploader uploads which are not mounted10733 # No reason given10734 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:3710735 4) Appearance with uploads behaves like model with uploads .destroy with not mounted uploads with remote files deletes remote files10736 # No reason given10737 # ./spec/support/shared_examples/models/with_uploads_shared_examples.rb:4110738 5) Gitlab::Database::Partitioning.sync_partitions without ci database only creates partitions for main database10739 # Skipping because database ci exists10740 # ./spec/lib/gitlab/database/partitioning_spec.rb:16910741Failures:10742 1) Gitlab::Patch::RedisCacheStore#read_multi_mget when cache is feature flag cache store behaves like reading using cache stores when reading large amount of keys when GITLAB_REDIS_CLUSTER_PIPELINE_BATCH_LIMIT is larger than the default behaves like read large amount of keys breaks the input into 2 chunks for redis cluster10743 Failure/Error:10744 Gitlab::Redis::CrossSlot::Pipeline.new(conn).pipelined do |p|10745 subset.each { |key| p.get(key) }10746 end10747 (Gitlab::Redis::CrossSlot::Pipeline (class)).new(#<Redis client v4.8.0 for redis://172.19.0.3:7001/0 redis://172.19.0.3:7002/0 redis://172.19.0.3:7003/0>)10748 expected: 2 times with any arguments10749 received: 3 times with arguments: (#<Redis client v4.8.0 for redis://172.19.0.3:7001/0 redis://172.19.0.3:7002/0 redis://172.19.0.3:7003/0>)10750 Shared Example Group: "read large amount of keys" called from ./spec/lib/gitlab/patch/redis_cache_store_spec.rb:8010751 Shared Example Group: "reading using cache stores" called from ./spec/lib/gitlab/patch/redis_cache_store_spec.rb:9610752 # ./lib/gitlab/patch/redis_cache_store.rb:61:in `block in pipeline_mget'10753 # ./lib/gitlab/patch/redis_cache_store.rb:60:in `each'10754 # ./lib/gitlab/patch/redis_cache_store.rb:60:in `each_slice'10755 # ./lib/gitlab/patch/redis_cache_store.rb:60:in `each'10756 # ./lib/gitlab/patch/redis_cache_store.rb:60:in `flat_map'10757 # ./lib/gitlab/patch/redis_cache_store.rb:60:in `pipeline_mget'10758 # ./lib/gitlab/patch/redis_cache_store.rb:45:in `block (2 levels) in patched_read_multi_mget'10759 # ./lib/gitlab/patch/redis_cache_store.rb:44:in `block in patched_read_multi_mget'10760 # ./lib/gitlab/patch/redis_cache_store.rb:43:in `patched_read_multi_mget'10761 # ./lib/gitlab/patch/redis_cache_store.rb:12:in `read_multi_mget'10762 # ./spec/lib/gitlab/patch/redis_cache_store_spec.rb:59:in `block (7 levels) in <top (required)>'10763 # ./lib/gitlab/instrumentation/redis_cluster_validator.rb:208:in `allow_cross_slot_commands'10764 # ./spec/lib/gitlab/patch/redis_cache_store_spec.rb:58:in `block (6 levels) in <top (required)>'10765 # ./spec/spec_helper.rb:426:in `block (3 levels) in <top (required)>'10766 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'10767 # ./spec/spec_helper.rb:417:in `block (2 levels) in <top (required)>'10768 # ./spec/spec_helper.rb:413:in `block (3 levels) in <top (required)>'10769 # ./lib/gitlab/application_context.rb:68:in `with_raw_context'10770 # ./spec/spec_helper.rb:413:in `block (2 levels) in <top (required)>'10771 # ./spec/spec_helper.rb:266:in `block (2 levels) in <top (required)>'10772 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'10773 # ./spec/support/fast_quarantine.rb:22:in `block (2 levels) in <top (required)>'10774 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'10775 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'10776 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'10777 # ./spec/support/caching.rb:30:in `block (2 levels) in <top (required)>'10778 2) Gitlab::Patch::RedisCacheStore#read_multi_mget when cache is repository cache store behaves like reading using cache stores when reading large amount of keys when GITLAB_REDIS_CLUSTER_PIPELINE_BATCH_LIMIT is larger than the default behaves like read large amount of keys breaks the input into 2 chunks for redis cluster10779 Failure/Error:10780 Gitlab::Redis::CrossSlot::Pipeline.new(conn).pipelined do |p|10781 subset.each { |key| p.get(key) }10782 end10783 (Gitlab::Redis::CrossSlot::Pipeline (class)).new(#<Redis client v4.8.0 for redis://172.19.0.3:7001/0 redis://172.19.0.3:7002/0 redis://172.19.0.3:7003/0>)10784 expected: 2 times with any arguments10785 received: 3 times with arguments: (#<Redis client v4.8.0 for redis://172.19.0.3:7001/0 redis://172.19.0.3:7002/0 redis://172.19.0.3:7003/0>)10786 Shared Example Group: "read large amount of keys" called from ./spec/lib/gitlab/patch/redis_cache_store_spec.rb:8010787 Shared Example Group: "reading using cache stores" called from ./spec/lib/gitlab/patch/redis_cache_store_spec.rb:10210788 # ./lib/gitlab/patch/redis_cache_store.rb:61:in `block in pipeline_mget'10789 # ./lib/gitlab/patch/redis_cache_store.rb:60:in `each'10790 # ./lib/gitlab/patch/redis_cache_store.rb:60:in `each_slice'10791 # ./lib/gitlab/patch/redis_cache_store.rb:60:in `each'10792 # ./lib/gitlab/patch/redis_cache_store.rb:60:in `flat_map'10793 # ./lib/gitlab/patch/redis_cache_store.rb:60:in `pipeline_mget'10794 # ./lib/gitlab/patch/redis_cache_store.rb:45:in `block (2 levels) in patched_read_multi_mget'10795 # ./lib/gitlab/patch/redis_cache_store.rb:44:in `block in patched_read_multi_mget'10796 # ./lib/gitlab/patch/redis_cache_store.rb:43:in `patched_read_multi_mget'10797 # ./lib/gitlab/patch/redis_cache_store.rb:12:in `read_multi_mget'10798 # ./spec/lib/gitlab/patch/redis_cache_store_spec.rb:59:in `block (7 levels) in <top (required)>'10799 # ./lib/gitlab/instrumentation/redis_cluster_validator.rb:208:in `allow_cross_slot_commands'10800 # ./spec/lib/gitlab/patch/redis_cache_store_spec.rb:58:in `block (6 levels) in <top (required)>'10801 # ./spec/spec_helper.rb:426:in `block (3 levels) in <top (required)>'10802 # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'10803 # ./spec/spec_helper.rb:417:in `block (2 levels) in <top (required)>'10804 # ./spec/spec_helper.rb:413:in `block (3 levels) in <top (required)>'10805 # ./lib/gitlab/application_context.rb:68:in `with_raw_context'10806 # ./spec/spec_helper.rb:413:in `block (2 levels) in <top (required)>'10807 # ./spec/spec_helper.rb:266:in `block (2 levels) in <top (required)>'10808 # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'10809 # ./spec/support/fast_quarantine.rb:22:in `block (2 levels) in <top (required)>'10810 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <top (required)>'10811 # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'10812 # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <top (required)>'10813 # ./spec/support/caching.rb:30:in `block (2 levels) in <top (required)>'10814Finished in 35 minutes 16 seconds (files took 47.76 seconds to load)108155158 examples, 2 failures, 5 pending10816Failed examples:10817rspec './spec/lib/gitlab/patch/redis_cache_store_spec.rb[1:1:2:1:3:2:1:1]' # Gitlab::Patch::RedisCacheStore#read_multi_mget when cache is feature flag cache store behaves like reading using cache stores when reading large amount of keys when GITLAB_REDIS_CLUSTER_PIPELINE_BATCH_LIMIT is larger than the default behaves like read large amount of keys breaks the input into 2 chunks for redis cluster10818rspec './spec/lib/gitlab/patch/redis_cache_store_spec.rb[1:1:3:1:3:2:1:1]' # Gitlab::Patch::RedisCacheStore#read_multi_mget when cache is repository cache store behaves like reading using cache stores when reading large amount of keys when GITLAB_REDIS_CLUSTER_PIPELINE_BATCH_LIMIT is larger than the default behaves like read large amount of keys breaks the input into 2 chunks for redis cluster10819Randomized with seed 6349010820[TEST PROF INFO] Time spent in factories: 19:16.697 (54.41% of total time)10821Stopped processing SimpleCov as a previous error not related to SimpleCov has been detected10822RSpec exited with 1.10823[job-metrics] Updating job metrics tag for the CI/CD job.10824RSPEC_RETRIED_TESTS_REPORT_PATH: rspec/retried_tests-5597251207.txt10825Retrying the failing examples in a new RSpec process...10826$ gem install junit_merge --no-document --version 0.1.210827Successfully installed nokogiri-1.15.5-x86_64-linux10828Successfully installed junit_merge-0.1.2108292 gems installed10830==> 'gem install junit_merge --no-document --version 0.1.2' succeeded in 1 seconds.10831Running RSpec command: bin/rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-retry-5597251207.json --format RspecJunitFormatter --out rspec/rspec-retry-5597251207.xml --only-failures --pattern "spec/{bin,channels,click_house,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling}{,/**/}*_spec.rb"10832Run options: include {:last_run_status=>"failed"}10833unknown OID 2249: failed to recognize type of 'pg_stat_file'. It will be treated as String.10834unknown OID 2249: failed to recognize type of 'pg_stat_file'. It will be treated as String.10835Test environment set up in 0.468094088 seconds10836Gitlab::Patch::RedisCacheStore10837 #read_multi_mget10838 when cache is feature flag cache store10839 behaves like reading using cache stores10840 when reading large amount of keys10841 when GITLAB_REDIS_CLUSTER_PIPELINE_BATCH_LIMIT is larger than the default10842 behaves like read large amount of keys10843 breaks the input into 2 chunks for redis cluster10844 when cache is repository cache store10845 behaves like reading using cache stores10846 when reading large amount of keys10847 when GITLAB_REDIS_CLUSTER_PIPELINE_BATCH_LIMIT is larger than the default10848 behaves like read large amount of keys10849 breaks the input into 2 chunks for redis cluster10850auto_explain log contains 1756 entries for main, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-4-24.10978.main.ndjson.gz10851took 20.94238640110852auto_explain log contains 1757 entries for ci, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-4-24.10978.ci.ndjson.gz10853took 20.62388062810854Finished in 46.18 seconds (files took 49.11 seconds to load)108552 examples, 0 failures10856Randomized with seed 5175410857[TEST PROF INFO] Time spent in factories: 00:00.023 (0.05% of total time)10858Loading rspec/rspec-5597251207.json...10859Merged rspec/rspec-retry-5597251207.json adding 5 results.10860Saved rspec/rspec-5597251207.json.10861A test was flaky and succeeded after being retried. Checking to see if flaky test is part of this MR...10862Flaky test was not part of this MR.10864Running after script...10865$ echo -e "\e[0Ksection_start:`date +%s`:report_results_section[collapsed=true]\r\e[0KReport results"10874$ tooling/bin/push_job_metrics || true10875[job-metrics] Pushing job metrics file for the CI/CD job.10876[job-metrics] Pushed 4 CI job metric entries to InfluxDB.10878Not uploading cache ruby-gems-debian-bullseye-ruby-3.1-16 due to policy10880Uploading artifacts...10881auto_explain/: found 5 matching artifact files and directories 10882coverage/: found 4 matching artifact files and directories 10883crystalball/: found 2 matching artifact files and directories 10884WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 10885knapsack/: found 4 matching artifact files and directories 10886rspec/: found 19 matching artifact files and directories 10887WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 10888log/*.log: found 20 matching artifact files and directories 10889WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/5597251207/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com10890WARNING: Retrying... context=artifacts-uploader error=request redirected10891Uploading artifacts as "archive" to coordinator... 201 Created id=5597251207 responseStatus=201 Created token=64_Rrj5810892Uploading artifacts...10893rspec/rspec-*.xml: found 2 matching artifact files and directories 10894WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/5597251207/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com10895WARNING: Retrying... context=artifacts-uploader error=request redirected10896Uploading artifacts as "junit" to coordinator... 201 Created id=5597251207 responseStatus=201 Created token=64_Rrj5810898Job succeeded