Skip to content

Commit 4e5aca6

Browse files
authored
Fix panic when comment is nil (#34257) (#34277)
Fix #34254 Backport #34257
1 parent 030ed94 commit 4e5aca6

File tree

3 files changed

+10
-22
lines changed

3 files changed

+10
-22
lines changed

models/issues/review.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,7 @@ func AddReviewRequest(ctx context.Context, issue *Issue, reviewer, doer *user_mo
663663
}
664664

665665
if review != nil {
666-
// skip it when reviewer hase been request to review
666+
// skip it when reviewer has been request to review
667667
if review.Type == ReviewTypeRequest {
668668
return nil, committer.Commit() // still commit the transaction, or committer.Close() will rollback it, even if it's a reused transaction.
669669
}

services/issue/pull.go

+6
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,9 @@ func PullRequestCodeOwnersReviewSpecialCommits(ctx context.Context, pr *issues_m
145145
log.Warn("Failed add assignee user: %s to PR review: %s#%d, error: %s", u.Name, pr.BaseRepo.Name, pr.ID, err)
146146
return nil, err
147147
}
148+
if comment == nil { // comment maybe nil if review type is ReviewTypeRequest
149+
continue
150+
}
148151
notifiers = append(notifiers, &ReviewRequestNotifier{
149152
Comment: comment,
150153
IsAdd: true,
@@ -158,6 +161,9 @@ func PullRequestCodeOwnersReviewSpecialCommits(ctx context.Context, pr *issues_m
158161
log.Warn("Failed add assignee team: %s to PR review: %s#%d, error: %s", t.Name, pr.BaseRepo.Name, pr.ID, err)
159162
return nil, err
160163
}
164+
if comment == nil { // comment maybe nil if review type is ReviewTypeRequest
165+
continue
166+
}
161167
notifiers = append(notifiers, &ReviewRequestNotifier{
162168
Comment: comment,
163169
IsAdd: true,

tests/integration/pull_review_test.go

+3-21
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"net/http/httptest"
99
"net/url"
1010
"path"
11-
"sort"
1211
"strings"
1312
"testing"
1413

@@ -76,7 +75,7 @@ func TestPullView_CodeOwner(t *testing.T) {
7675

7776
t.Run("First Pull Request", func(t *testing.T) {
7877
// create a new branch to prepare for pull request
79-
resp1, err := files_service.ChangeRepoFiles(db.DefaultContext, repo, user2, &files_service.ChangeRepoFilesOptions{
78+
_, err := files_service.ChangeRepoFiles(db.DefaultContext, repo, user2, &files_service.ChangeRepoFilesOptions{
8079
NewBranch: "codeowner-basebranch",
8180
Files: []*files_service.ChangeRepoFile{
8281
{
@@ -96,13 +95,8 @@ func TestPullView_CodeOwner(t *testing.T) {
9695
unittest.AssertExistsIf(t, true, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 5})
9796
assert.NoError(t, pr.LoadIssue(db.DefaultContext))
9897

99-
reviewNotifiers, err := issue_service.PullRequestCodeOwnersReview(db.DefaultContext, pr)
100-
assert.NoError(t, err)
101-
assert.Len(t, reviewNotifiers, 1)
102-
assert.EqualValues(t, 5, reviewNotifiers[0].Reviewer.ID)
103-
10498
// update the file on the pr branch
105-
resp2, err := files_service.ChangeRepoFiles(db.DefaultContext, repo, user2, &files_service.ChangeRepoFilesOptions{
99+
_, err = files_service.ChangeRepoFiles(db.DefaultContext, repo, user2, &files_service.ChangeRepoFilesOptions{
106100
OldBranch: "codeowner-basebranch",
107101
Files: []*files_service.ChangeRepoFile{
108102
{
@@ -114,14 +108,7 @@ func TestPullView_CodeOwner(t *testing.T) {
114108
})
115109
assert.NoError(t, err)
116110

117-
reviewNotifiers, err = issue_service.PullRequestCodeOwnersReview(db.DefaultContext, pr)
118-
assert.NoError(t, err)
119-
assert.Len(t, reviewNotifiers, 2)
120-
reviewerIDs := []int64{reviewNotifiers[0].Reviewer.ID, reviewNotifiers[1].Reviewer.ID}
121-
sort.Slice(reviewerIDs, func(i, j int) bool { return reviewerIDs[i] < reviewerIDs[j] })
122-
assert.EqualValues(t, []int64{5, 8}, reviewerIDs)
123-
124-
reviewNotifiers, err = issue_service.PullRequestCodeOwnersReviewSpecialCommits(db.DefaultContext, pr, resp1.Commit.SHA, resp2.Commit.SHA)
111+
reviewNotifiers, err := issue_service.PullRequestCodeOwnersReview(db.DefaultContext, pr)
125112
assert.NoError(t, err)
126113
assert.Len(t, reviewNotifiers, 1)
127114
assert.EqualValues(t, 8, reviewNotifiers[0].Reviewer.ID)
@@ -171,11 +158,6 @@ func TestPullView_CodeOwner(t *testing.T) {
171158

172159
pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{BaseRepoID: repo.ID, HeadBranch: "codeowner-basebranch2"})
173160
unittest.AssertExistsAndLoadBean(t, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 8})
174-
175-
reviewNotifiers, err := issue_service.PullRequestCodeOwnersReview(db.DefaultContext, pr)
176-
assert.NoError(t, err)
177-
assert.Len(t, reviewNotifiers, 1)
178-
assert.EqualValues(t, 8, reviewNotifiers[0].Reviewer.ID)
179161
})
180162

181163
t.Run("Forked Repo Pull Request", func(t *testing.T) {

0 commit comments

Comments
 (0)