diff --git a/routers/api/v1/repo/status.go b/routers/api/v1/repo/status.go index 34fd0d0c0a..768a0652b0 100644 --- a/routers/api/v1/repo/status.go +++ b/routers/api/v1/repo/status.go @@ -201,15 +201,10 @@ func getCommitStatuses(ctx *context.APIContext, commitID string) { return } - apiStatuses := make([]*api.CommitStatus, 0, len(statuses)) - for _, status := range statuses { - apiStatuses = append(apiStatuses, convert.ToCommitStatus(ctx, status)) - } - ctx.SetLinkHeader(int(maxResults), listOptions.PageSize) ctx.SetTotalCountHeader(maxResults) - ctx.JSON(http.StatusOK, apiStatuses) + ctx.JSON(http.StatusOK, convert.ToCommitStatuses(ctx, statuses)) } // GetCombinedCommitStatusByRef returns the combined status for any given commit hash diff --git a/services/convert/status.go b/services/convert/status.go index 469f30bee3..a772721025 100644 --- a/services/convert/status.go +++ b/services/convert/status.go @@ -33,6 +33,14 @@ func ToCommitStatus(ctx context.Context, status *git_model.CommitStatus) *api.Co return apiStatus } +func ToCommitStatuses(ctx context.Context, statuses []*git_model.CommitStatus) []*api.CommitStatus { + apiStatuses := make([]*api.CommitStatus, len(statuses)) + for i, status := range statuses { + apiStatuses[i] = ToCommitStatus(ctx, status) + } + return apiStatuses +} + // ToCombinedStatus converts List of CommitStatus to a CombinedStatus func ToCombinedStatus(ctx context.Context, statuses []*git_model.CommitStatus, repo *api.Repository) *api.CombinedStatus { if len(statuses) == 0 { @@ -42,6 +50,7 @@ func ToCombinedStatus(ctx context.Context, statuses []*git_model.CommitStatus, r combinedStatus := git_model.CalcCombinedStatus(statuses) return &api.CombinedStatus{ State: combinedStatus.State, + Statuses: ToCommitStatuses(ctx, statuses), SHA: combinedStatus.SHA, TotalCount: len(statuses), Repository: repo, diff --git a/tests/integration/pull_status_test.go b/tests/integration/pull_status_test.go index c198ad8b4b..0f02e9cc3a 100644 --- a/tests/integration/pull_status_test.go +++ b/tests/integration/pull_status_test.go @@ -100,7 +100,7 @@ func TestPullCreate_CommitStatus(t *testing.T) { repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerName: "user1", Name: "repo1"}) css := unittest.AssertExistsAndLoadBean(t, &git_model.CombinedStatus{RepoID: repo1.ID, SHA: commitID}) - assert.Equal(t, commitstatus.CommitStatusWarning, css.State) + assert.Equal(t, commitstatus.CombinedStatusSuccess, css.State) // warning will also be counted as success }) }