Skip to content

Commit bf69723

Browse files
committed
search refs before passing sha
1 parent 61b8f01 commit bf69723

File tree

3 files changed

+78
-19
lines changed

3 files changed

+78
-19
lines changed

models/commit_status_test.go

Lines changed: 52 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"github.com/stretchr/testify/assert"
1111
)
1212

13-
func TestGetCommitStatuses(t *testing.T) {
13+
func TestGetCommitStatusesViaSHA(t *testing.T) {
1414
assert.NoError(t, PrepareTestDatabase())
1515

1616
repo1 := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository)
@@ -20,20 +20,59 @@ func TestGetCommitStatuses(t *testing.T) {
2020
statuses, maxResults, err := GetCommitStatuses(repo1, sha1, &CommitStatusOptions{})
2121
assert.NoError(t, err)
2222
assert.Equal(t, int(maxResults), 5)
23-
if assert.Len(t, statuses, 5) {
24-
assert.Equal(t, statuses[0].Context, "ci/awesomeness")
25-
assert.Equal(t, statuses[0].State, CommitStatusPending)
23+
assert.Len(t, statuses, 5)
2624

27-
assert.Equal(t, statuses[1].Context, "cov/awesomeness")
28-
assert.Equal(t, statuses[1].State, CommitStatusWarning)
25+
assert.Equal(t, statuses[0].Context, "ci/awesomeness")
26+
assert.Equal(t, statuses[0].State, CommitStatusPending)
27+
assert.Equal(t, statuses[0].APIURL(), "TODO")
2928

30-
assert.Equal(t, statuses[2].Context, "cov/awesomeness")
31-
assert.Equal(t, statuses[2].State, CommitStatusSuccess)
29+
assert.Equal(t, statuses[1].Context, "cov/awesomeness")
30+
assert.Equal(t, statuses[1].State, CommitStatusWarning)
31+
assert.Equal(t, statuses[1].APIURL(), "TODO")
3232

33-
assert.Equal(t, statuses[3].Context, "ci/awesomeness")
34-
assert.Equal(t, statuses[3].State, CommitStatusFailure)
33+
assert.Equal(t, statuses[2].Context, "cov/awesomeness")
34+
assert.Equal(t, statuses[2].State, CommitStatusSuccess)
35+
assert.Equal(t, statuses[2].APIURL(), "TODO")
3536

36-
assert.Equal(t, statuses[4].Context, "deploy/awesomeness")
37-
assert.Equal(t, statuses[4].State, CommitStatusError)
38-
}
37+
assert.Equal(t, statuses[3].Context, "ci/awesomeness")
38+
assert.Equal(t, statuses[3].State, CommitStatusFailure)
39+
assert.Equal(t, statuses[3].APIURL(), "TODO")
40+
41+
assert.Equal(t, statuses[4].Context, "deploy/awesomeness")
42+
assert.Equal(t, statuses[4].State, CommitStatusError)
43+
assert.Equal(t, statuses[4].APIURL(), "TODO")
44+
}
45+
46+
/* TODO
47+
func TestGetCommitStatusesViaBranch(t *testing.T) {
48+
assert.NoError(t, PrepareTestDatabase())
49+
50+
repo1 := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository)
51+
52+
sha1 := "master"
53+
statuses, maxResults, err := GetCommitStatuses(repo1, sha1, &CommitStatusOptions{})
54+
assert.NoError(t, err)
55+
assert.Equal(t, int(maxResults), 5)
56+
assert.Len(t, statuses, 5)
57+
58+
assert.Equal(t, statuses[0].Context, "ci/awesomeness")
59+
assert.Equal(t, statuses[0].State, CommitStatusPending)
60+
assert.Equal(t, statuses[0].APIURL(), "TODO")
61+
62+
assert.Equal(t, statuses[1].Context, "cov/awesomeness")
63+
assert.Equal(t, statuses[1].State, CommitStatusWarning)
64+
assert.Equal(t, statuses[1].APIURL(), "TODO")
65+
66+
assert.Equal(t, statuses[2].Context, "cov/awesomeness")
67+
assert.Equal(t, statuses[2].State, CommitStatusSuccess)
68+
assert.Equal(t, statuses[2].APIURL(), "TODO")
69+
70+
assert.Equal(t, statuses[3].Context, "ci/awesomeness")
71+
assert.Equal(t, statuses[3].State, CommitStatusFailure)
72+
assert.Equal(t, statuses[3].APIURL(), "TODO")
73+
74+
assert.Equal(t, statuses[4].Context, "deploy/awesomeness")
75+
assert.Equal(t, statuses[4].State, CommitStatusError)
76+
assert.Equal(t, statuses[4].APIURL(), "TODO")
3977
}
78+
*/

routers/api/v1/repo/git_ref.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,19 +71,22 @@ func GetGitRefs(ctx *context.APIContext) {
7171
getGitRefsInternal(ctx, ctx.Params("*"))
7272
}
7373

74-
func getGitRefsInternal(ctx *context.APIContext, filter string) {
74+
func getGitRefs(ctx *context.APIContext, filter string) ([]*git.Reference, string, error) {
7575
gitRepo, err := git.OpenRepository(ctx.Repo.Repository.RepoPath())
7676
if err != nil {
77-
ctx.Error(500, "OpenRepository", err)
78-
return
77+
return nil, "OpenRepository", err
7978
}
8079
if len(filter) > 0 {
8180
filter = "refs/" + filter
8281
}
83-
8482
refs, err := gitRepo.GetRefsFiltered(filter)
83+
return refs, "GetRefsFiltered", err
84+
}
85+
86+
func getGitRefsInternal(ctx *context.APIContext, filter string) {
87+
refs, lastMethodName, err := getGitRefs(ctx, filter)
8588
if err != nil {
86-
ctx.Error(500, "GetRefsFiltered", err)
89+
ctx.Error(500, lastMethodName, err)
8790
return
8891
}
8992

routers/api/v1/repo/status.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,24 @@ func GetCommitStatusesByRef(ctx *context.APIContext) {
155155
// responses:
156156
// "200":
157157
// "$ref": "#/responses/StatusList"
158-
getCommitStatuses(ctx, ctx.Params("ref"))
158+
159+
filter := ctx.Params("ref")
160+
sha := filter //By default and will be overridden if we found a good ref match
161+
162+
refs, lastMethodName, err := getGitRefs(ctx, filter)
163+
if err != nil {
164+
ctx.Error(500, lastMethodName, err)
165+
return
166+
}
167+
168+
if len(refs) > 0 {
169+
c, err := refs[0].Commit()
170+
if err == nil {
171+
sha = c.ID.String() //Replace SHA with ref tag
172+
}
173+
}
174+
175+
getCommitStatuses(ctx, sha)
159176
}
160177

161178
func getCommitStatuses(ctx *context.APIContext, sha string) {

0 commit comments

Comments
 (0)