diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-10-23 21:11:07 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-10-23 21:11:07 +0300 |
commit | c5da163db1c10676b1a01a898b7b3a4506e65b89 (patch) | |
tree | 0110bf1518c8049cddab8d62e77d4f7dad2478a7 /app/services/merge_requests | |
parent | 750a63ac4cc7acbecff3b8d22232cb1c15af34fb (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/merge_requests')
6 files changed, 15 insertions, 4 deletions
diff --git a/app/services/merge_requests/mergeability/check_base_service.rb b/app/services/merge_requests/mergeability/check_base_service.rb index e1c4d751296..b8a275b6c32 100644 --- a/app/services/merge_requests/mergeability/check_base_service.rb +++ b/app/services/merge_requests/mergeability/check_base_service.rb @@ -42,6 +42,11 @@ module MergeRequests .failed(payload: default_payload(args)) end + def inactive(**args) + Gitlab::MergeRequests::Mergeability::CheckResult + .inactive(payload: default_payload(args)) + end + def default_payload(args) args.merge(identifier: self.class.identifier) end diff --git a/app/services/merge_requests/mergeability/check_ci_status_service.rb b/app/services/merge_requests/mergeability/check_ci_status_service.rb index f7fa3259d97..b4e60e964b7 100644 --- a/app/services/merge_requests/mergeability/check_ci_status_service.rb +++ b/app/services/merge_requests/mergeability/check_ci_status_service.rb @@ -7,6 +7,8 @@ module MergeRequests end def execute + return inactive unless merge_request.only_allow_merge_if_pipeline_succeeds? + if merge_request.mergeable_ci_state? success else diff --git a/app/services/merge_requests/mergeability/check_discussions_status_service.rb b/app/services/merge_requests/mergeability/check_discussions_status_service.rb index 34db5f8a944..f9cff5d1e5f 100644 --- a/app/services/merge_requests/mergeability/check_discussions_status_service.rb +++ b/app/services/merge_requests/mergeability/check_discussions_status_service.rb @@ -7,6 +7,8 @@ module MergeRequests end def execute + return inactive unless merge_request.only_allow_merge_if_all_discussions_are_resolved? + if merge_request.mergeable_discussions_state? success else diff --git a/app/services/merge_requests/mergeability/check_rebase_status_service.rb b/app/services/merge_requests/mergeability/check_rebase_status_service.rb index 2163fec8bd6..02cd0587be0 100644 --- a/app/services/merge_requests/mergeability/check_rebase_status_service.rb +++ b/app/services/merge_requests/mergeability/check_rebase_status_service.rb @@ -8,6 +8,8 @@ module MergeRequests end def execute + return inactive unless merge_request.project.ff_merge_must_be_possible? + if merge_request.should_be_rebased? failure(reason: failure_reason) else diff --git a/app/services/merge_requests/mergeability/detailed_merge_status_service.rb b/app/services/merge_requests/mergeability/detailed_merge_status_service.rb index 86c8122604c..92f0fb0429c 100644 --- a/app/services/merge_requests/mergeability/detailed_merge_status_service.rb +++ b/app/services/merge_requests/mergeability/detailed_merge_status_service.rb @@ -18,10 +18,10 @@ module MergeRequests # If everything else is mergeable, but CI is not, the frontend expects two potential states to be returned # See discussion: gitlab.com/gitlab-org/gitlab/-/merge_requests/96778#note_1093063523 - if check_ci_results.success? - :mergeable - else + if check_ci_results.failed? ci_check_failure_reason + else + :mergeable end else check_results.payload[:failure_reason] diff --git a/app/services/merge_requests/mergeability/run_checks_service.rb b/app/services/merge_requests/mergeability/run_checks_service.rb index 5150c03d0a3..92f3e5e951a 100644 --- a/app/services/merge_requests/mergeability/run_checks_service.rb +++ b/app/services/merge_requests/mergeability/run_checks_service.rb @@ -65,7 +65,7 @@ module MergeRequests end def all_results_success? - results.all?(&:success?) + results.none?(&:failed?) end def failure_reason |