Skip to content

Commit 64ad8f6

Browse files
committed
Fix bug
1 parent 96aacf8 commit 64ad8f6

File tree

3 files changed

+84
-9
lines changed

3 files changed

+84
-9
lines changed

services/convert/pull.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ func ToAPIPullRequests(ctx context.Context, baseRepo *repo_model.Repository, prs
305305

306306
reviewersMap := make(map[int64][]*user_model.User)
307307
for _, review := range reviews {
308-
if review.ReviewerID != 0 {
308+
if review.Reviewer != nil {
309309
reviewersMap[review.IssueID] = append(reviewersMap[review.IssueID], review.Reviewer)
310310
}
311311
}
@@ -481,7 +481,7 @@ func ToAPIPullRequests(ctx context.Context, baseRepo *repo_model.Repository, prs
481481
// Calculate diff
482482
startCommitID = pr.MergeBase
483483

484-
apiPullRequest.ChangedFiles, apiPullRequest.Additions, apiPullRequest.Deletions, err = gitRepo.GetDiffShortStat(startCommitID, endCommitID)
484+
apiPullRequest.ChangedFiles, apiPullRequest.Additions, apiPullRequest.Deletions, err = gitRepo.GetDiffShortStat(startCommitID, endCommitID)
485485
if err != nil {
486486
log.Error("GetDiffShortStat: %v", err)
487487
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
5f22f7d0d95d614d25a5b68592adb345a4b5c7fd
1+
985f0301dba5e7b34be866819cd15ad3d8f508ee

tests/integration/api_pull_test.go

Lines changed: 81 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
package integration
55

66
import (
7+
"bytes"
8+
"context"
79
"fmt"
810
"io"
911
"net/http"
@@ -19,6 +21,7 @@ import (
1921
"code.gitea.io/gitea/modules/setting"
2022
api "code.gitea.io/gitea/modules/structs"
2123
"code.gitea.io/gitea/services/forms"
24+
"code.gitea.io/gitea/services/gitdiff"
2225
issue_service "code.gitea.io/gitea/services/issue"
2326
"code.gitea.io/gitea/tests"
2427

@@ -41,25 +44,97 @@ func TestAPIViewPulls(t *testing.T) {
4144
expectedLen := unittest.GetCount(t, &issues_model.Issue{RepoID: repo.ID}, unittest.Cond("is_pull = ?", true))
4245
assert.Len(t, pulls, expectedLen)
4346

47+
assert.Len(t, pulls, 3)
4448
pull := pulls[0]
49+
assert.EqualValues(t, 1, pull.Poster.ID)
50+
assert.Len(t, pull.RequestedReviewers, 2)
51+
assert.Len(t, pull.RequestedReviewersTeams, 0)
52+
assert.EqualValues(t, 5, pull.RequestedReviewers[0].ID)
53+
assert.EqualValues(t, 6, pull.RequestedReviewers[1].ID)
54+
assert.EqualValues(t, 2, pull.ChangedFiles)
55+
4556
if assert.EqualValues(t, 5, pull.ID) {
4657
resp = ctx.Session.MakeRequest(t, NewRequest(t, "GET", pull.DiffURL), http.StatusOK)
47-
_, err := io.ReadAll(resp.Body)
58+
bs, err := io.ReadAll(resp.Body)
59+
assert.NoError(t, err)
60+
patch, err := gitdiff.ParsePatch(context.Background(), 1000, 5000, 10, bytes.NewReader(bs), "")
4861
assert.NoError(t, err)
49-
// TODO: use diff to generate stats to test against
62+
if assert.Len(t, patch.Files, pull.ChangedFiles) {
63+
assert.Equal(t, "File-WoW", patch.Files[0].Name)
64+
assert.Empty(t, patch.Files[0].OldName)
65+
assert.EqualValues(t, pull.Additions, patch.Files[0].Addition)
66+
assert.EqualValues(t, pull.Deletions, patch.Files[0].Deletion)
67+
assert.Equal(t, gitdiff.DiffFileAdd, patch.Files[0].Type)
68+
}
5069

5170
t.Run(fmt.Sprintf("APIGetPullFiles_%d", pull.ID),
5271
doAPIGetPullFiles(ctx, pull, func(t *testing.T, files []*api.ChangedFile) {
53-
if assert.Len(t, files, 1) {
72+
if assert.Len(t, files, pull.ChangedFiles) {
5473
assert.Equal(t, "File-WoW", files[0].Filename)
5574
assert.Empty(t, files[0].PreviousFilename)
56-
assert.EqualValues(t, 1, files[0].Additions)
57-
assert.EqualValues(t, 1, files[0].Changes)
58-
assert.EqualValues(t, 0, files[0].Deletions)
75+
assert.EqualValues(t, pull.Additions, files[0].Additions)
76+
assert.EqualValues(t, pull.Deletions, files[0].Deletions)
5977
assert.Equal(t, "added", files[0].Status)
6078
}
6179
}))
6280
}
81+
82+
pull = pulls[1]
83+
assert.EqualValues(t, 1, pull.Poster.ID)
84+
assert.Len(t, pull.RequestedReviewers, 4)
85+
assert.Len(t, pull.RequestedReviewersTeams, 0)
86+
assert.EqualValues(t, 3, pull.RequestedReviewers[0].ID)
87+
assert.EqualValues(t, 4, pull.RequestedReviewers[1].ID)
88+
assert.EqualValues(t, 2, pull.RequestedReviewers[2].ID)
89+
assert.EqualValues(t, 5, pull.RequestedReviewers[3].ID)
90+
assert.EqualValues(t, 1, pull.ChangedFiles)
91+
92+
if assert.EqualValues(t, 2, pull.ID) {
93+
resp = ctx.Session.MakeRequest(t, NewRequest(t, "GET", pull.DiffURL), http.StatusOK)
94+
bs, err := io.ReadAll(resp.Body)
95+
assert.NoError(t, err)
96+
patch, err := gitdiff.ParsePatch(context.Background(), 1000, 5000, 10, bytes.NewReader(bs), "")
97+
assert.NoError(t, err)
98+
if assert.Len(t, patch.Files, pull.ChangedFiles) {
99+
assert.Equal(t, "README.md", patch.Files[0].Name)
100+
assert.Empty(t, patch.Files[0].OldName)
101+
assert.EqualValues(t, pull.Additions, patch.Files[0].Addition)
102+
assert.EqualValues(t, pull.Deletions, patch.Files[0].Deletion)
103+
assert.Equal(t, gitdiff.DiffFileChange, patch.Files[0].Type)
104+
}
105+
106+
t.Run(fmt.Sprintf("APIGetPullFiles_%d", pull.ID),
107+
doAPIGetPullFiles(ctx, pull, func(t *testing.T, files []*api.ChangedFile) {
108+
if assert.Len(t, files, pull.ChangedFiles) {
109+
assert.Equal(t, "README.md", files[0].Filename)
110+
assert.Empty(t, files[0].PreviousFilename)
111+
assert.EqualValues(t, pull.Additions, files[0].Additions)
112+
assert.EqualValues(t, pull.Deletions, files[0].Deletions)
113+
assert.Equal(t, "changed", files[0].Status)
114+
}
115+
}))
116+
}
117+
118+
pull = pulls[2]
119+
assert.EqualValues(t, 1, pull.Poster.ID)
120+
assert.Len(t, pull.RequestedReviewers, 1)
121+
assert.Len(t, pull.RequestedReviewersTeams, 0)
122+
assert.EqualValues(t, 1, pull.RequestedReviewers[0].ID)
123+
assert.EqualValues(t, 0, pull.ChangedFiles)
124+
125+
if assert.EqualValues(t, 1, pull.ID) {
126+
resp = ctx.Session.MakeRequest(t, NewRequest(t, "GET", pull.DiffURL), http.StatusOK)
127+
bs, err := io.ReadAll(resp.Body)
128+
assert.NoError(t, err)
129+
patch, err := gitdiff.ParsePatch(context.Background(), 1000, 5000, 10, bytes.NewReader(bs), "")
130+
assert.NoError(t, err)
131+
assert.EqualValues(t, pull.ChangedFiles, patch.NumFiles)
132+
133+
t.Run(fmt.Sprintf("APIGetPullFiles_%d", pull.ID),
134+
doAPIGetPullFiles(ctx, pull, func(t *testing.T, files []*api.ChangedFile) {
135+
assert.Len(t, files, pull.ChangedFiles)
136+
}))
137+
}
63138
}
64139

65140
func TestAPIViewPullsByBaseHead(t *testing.T) {

0 commit comments

Comments
 (0)