aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2025-04-23 18:58:00 -0700
committerGitHub <noreply@github.com>2025-04-24 01:58:00 +0000
commite73c1139aced60b3ebd022adcfbc41dafa58a1e8 (patch)
tree84cfe07acbb8c4fa7aba257393881c709f80e0e7
parente625250ffc48d5f5e899d27f11aadce04ce6cb6f (diff)
downloadgitea-e73c1139aced60b3ebd022adcfbc41dafa58a1e8.tar.gz
gitea-e73c1139aced60b3ebd022adcfbc41dafa58a1e8.zip
Fix panic when comment is nil (#34257)
Fix #34254
-rw-r--r--models/issues/review.go2
-rw-r--r--services/issue/pull.go6
-rw-r--r--tests/integration/pull_review_test.go24
3 files changed, 10 insertions, 22 deletions
diff --git a/models/issues/review.go b/models/issues/review.go
index 2667bdaa7b..71fdb7456f 100644
--- a/models/issues/review.go
+++ b/models/issues/review.go
@@ -664,7 +664,7 @@ func AddReviewRequest(ctx context.Context, issue *Issue, reviewer, doer *user_mo
}
if review != nil {
- // skip it when reviewer hase been request to review
+ // skip it when reviewer has been request to review
if review.Type == ReviewTypeRequest {
return nil, committer.Commit() // still commit the transaction, or committer.Close() will rollback it, even if it's a reused transaction.
}
diff --git a/services/issue/pull.go b/services/issue/pull.go
index bd19c25436..c9d32000af 100644
--- a/services/issue/pull.go
+++ b/services/issue/pull.go
@@ -145,6 +145,9 @@ func PullRequestCodeOwnersReviewSpecialCommits(ctx context.Context, pr *issues_m
log.Warn("Failed add assignee user: %s to PR review: %s#%d, error: %s", u.Name, pr.BaseRepo.Name, pr.ID, err)
return nil, err
}
+ if comment == nil { // comment maybe nil if review type is ReviewTypeRequest
+ continue
+ }
notifiers = append(notifiers, &ReviewRequestNotifier{
Comment: comment,
IsAdd: true,
@@ -158,6 +161,9 @@ func PullRequestCodeOwnersReviewSpecialCommits(ctx context.Context, pr *issues_m
log.Warn("Failed add assignee team: %s to PR review: %s#%d, error: %s", t.Name, pr.BaseRepo.Name, pr.ID, err)
return nil, err
}
+ if comment == nil { // comment maybe nil if review type is ReviewTypeRequest
+ continue
+ }
notifiers = append(notifiers, &ReviewRequestNotifier{
Comment: comment,
IsAdd: true,
diff --git a/tests/integration/pull_review_test.go b/tests/integration/pull_review_test.go
index 13b2384e9c..1121751c88 100644
--- a/tests/integration/pull_review_test.go
+++ b/tests/integration/pull_review_test.go
@@ -8,7 +8,6 @@ import (
"net/http/httptest"
"net/url"
"path"
- "sort"
"strings"
"testing"
@@ -76,7 +75,7 @@ func TestPullView_CodeOwner(t *testing.T) {
t.Run("First Pull Request", func(t *testing.T) {
// create a new branch to prepare for pull request
- resp1, err := files_service.ChangeRepoFiles(db.DefaultContext, repo, user2, &files_service.ChangeRepoFilesOptions{
+ _, err := files_service.ChangeRepoFiles(db.DefaultContext, repo, user2, &files_service.ChangeRepoFilesOptions{
NewBranch: "codeowner-basebranch",
Files: []*files_service.ChangeRepoFile{
{
@@ -96,13 +95,8 @@ func TestPullView_CodeOwner(t *testing.T) {
unittest.AssertExistsAndLoadBean(t, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 5})
assert.NoError(t, pr.LoadIssue(db.DefaultContext))
- reviewNotifiers, err := issue_service.PullRequestCodeOwnersReview(db.DefaultContext, pr)
- assert.NoError(t, err)
- assert.Len(t, reviewNotifiers, 1)
- assert.EqualValues(t, 5, reviewNotifiers[0].Reviewer.ID)
-
// update the file on the pr branch
- resp2, err := files_service.ChangeRepoFiles(db.DefaultContext, repo, user2, &files_service.ChangeRepoFilesOptions{
+ _, err = files_service.ChangeRepoFiles(db.DefaultContext, repo, user2, &files_service.ChangeRepoFilesOptions{
OldBranch: "codeowner-basebranch",
Files: []*files_service.ChangeRepoFile{
{
@@ -114,14 +108,7 @@ func TestPullView_CodeOwner(t *testing.T) {
})
assert.NoError(t, err)
- reviewNotifiers, err = issue_service.PullRequestCodeOwnersReview(db.DefaultContext, pr)
- assert.NoError(t, err)
- assert.Len(t, reviewNotifiers, 2)
- reviewerIDs := []int64{reviewNotifiers[0].Reviewer.ID, reviewNotifiers[1].Reviewer.ID}
- sort.Slice(reviewerIDs, func(i, j int) bool { return reviewerIDs[i] < reviewerIDs[j] })
- assert.Equal(t, []int64{5, 8}, reviewerIDs)
-
- reviewNotifiers, err = issue_service.PullRequestCodeOwnersReviewSpecialCommits(db.DefaultContext, pr, resp1.Commit.SHA, resp2.Commit.SHA)
+ reviewNotifiers, err := issue_service.PullRequestCodeOwnersReview(db.DefaultContext, pr)
assert.NoError(t, err)
assert.Len(t, reviewNotifiers, 1)
assert.EqualValues(t, 8, reviewNotifiers[0].Reviewer.ID)
@@ -171,11 +158,6 @@ func TestPullView_CodeOwner(t *testing.T) {
pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{BaseRepoID: repo.ID, HeadBranch: "codeowner-basebranch2"})
unittest.AssertExistsAndLoadBean(t, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 8})
-
- reviewNotifiers, err := issue_service.PullRequestCodeOwnersReview(db.DefaultContext, pr)
- assert.NoError(t, err)
- assert.Len(t, reviewNotifiers, 1)
- assert.EqualValues(t, 8, reviewNotifiers[0].Reviewer.ID)
})
t.Run("Forked Repo Pull Request", func(t *testing.T) {