From ebe569a268bbe71bf2bc30cd2829227700688b57 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 21 Apr 2022 21:55:45 +0000 Subject: Set correct PR status on 3way on conflict checking (#19457) * Set correct PR status on 3way on conflict checking - When 3-way merge is enabled for conflict checking, it has a new interesting behavior that it doesn't return any error when it found a conflict, so we change the condition to not check for the error, but instead check if conflictedfiles is populated, this fixes a issue whereby PR status wasn't correctly on conflicted PR's. - Refactor the mergeable property(which was incorrectly set and lead me this bug) to be more maintainable. - Add a dedicated test for conflicting checking, so it should prevent future issues with this. * Fix linter --- models/pull.go | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'models/pull.go') diff --git a/models/pull.go b/models/pull.go index 439005deb4..ac44ebf0be 100644 --- a/models/pull.go +++ b/models/pull.go @@ -701,3 +701,14 @@ func (pr *PullRequest) GetHeadBranchHTMLURL() string { } return pr.HeadRepo.HTMLURL() + "/src/branch/" + util.PathEscapeSegments(pr.HeadBranch) } + +// Mergeable returns if the pullrequest is mergeable. +func (pr *PullRequest) Mergeable() bool { + // If a pull request isn't mergable if it's: + // - Being conflict checked. + // - Has a conflict. + // - Received a error while being conflict checked. + // - Is a work-in-progress pull request. + return pr.Status != PullRequestStatusChecking && pr.Status != PullRequestStatusConflict && + pr.Status != PullRequestStatusError && !pr.IsWorkInProgress() +} -- cgit v1.2.3