diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go index 943c84e9c0..d15e5b91c8 100644 --- a/routers/web/repo/commit.go +++ b/routers/web/repo/commit.go @@ -457,7 +457,9 @@ func processGitCommits(ctx *context.Context, gitCommits []*git.Commit) ([]*git_m } if !ctx.Repo.CanRead(unit_model.TypeActions) { for _, commit := range commits { - commit.Status.HideActionsURL(ctx) + if commit.Status != nil { + commit.Status.HideActionsURL(ctx) + } git_model.CommitStatusesHideActionsURL(ctx, commit.Statuses) } } diff --git a/routers/web/repo/issue_view.go b/routers/web/repo/issue_view.go index 13b9d83da4..9e39aa7163 100644 --- a/routers/web/repo/issue_view.go +++ b/routers/web/repo/issue_view.go @@ -757,7 +757,9 @@ func prepareIssueViewCommentsAndSidebarParticipants(ctx *context.Context, issue } if !ctx.Repo.CanRead(unit.TypeActions) { for _, commit := range comment.Commits { - commit.Status.HideActionsURL(ctx) + if commit.Status != nil { + commit.Status.HideActionsURL(ctx) + } git_model.CommitStatusesHideActionsURL(ctx, commit.Statuses) } } diff --git a/services/pull/commit_status.go b/services/pull/commit_status.go index 2e386b08a5..64ac7eb2fb 100644 --- a/services/pull/commit_status.go +++ b/services/pull/commit_status.go @@ -40,8 +40,15 @@ func MergeRequiredContextsCommitStatus(commitStatuses []*git_model.CommitStatus, } } if len(requiredCommitStatuses) > 0 { - return git_model.CalcCombinedStatusState(requiredCommitStatuses) + returnedStatus := git_model.CalcCombinedStatusState(requiredCommitStatuses) + if len(requiredCommitStatuses) == len(requiredContexts) { + return returnedStatus + } + if returnedStatus == commitstatus.CombinedStatusFailure { + return commitstatus.CombinedStatusFailure + } } + return commitstatus.CombinedStatusPending } return git_model.CalcCombinedStatusState(commitStatuses) diff --git a/services/pull/commit_status_test.go b/services/pull/commit_status_test.go index fdec95f43c..8d8e436bdd 100644 --- a/services/pull/commit_status_test.go +++ b/services/pull/commit_status_test.go @@ -58,8 +58,9 @@ func TestMergeRequiredContextsCommitStatus(t *testing.T) { } for i, commitStatuses := range testCases { - if MergeRequiredContextsCommitStatus(commitStatuses, testCasesRequiredContexts[i]) != testCasesExpected[i] { - assert.Fail(t, "Test case failed", "Test case %d failed", i+1) + status := MergeRequiredContextsCommitStatus(commitStatuses, testCasesRequiredContexts[i]) + if status != testCasesExpected[i] { + assert.Fail(t, "Test case failed", "Test case %d failed: expect %s, got %s", i+1, testCasesExpected[i], status) } } }