Skip to content

Commit 91a12ab

Browse files
author
Gusted
committed
Merge pull request '[v9.0/forgejo] [PORT] Fix code owners will not be mentioned when a pull request comes from a forked repository (gitea#30476)' (go-gitea#5879) from bp-v9.0/forgejo-2efc1f5-536e192 into v9.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/5879 Reviewed-by: Gusted <[email protected]>
2 parents 9a7b0c3 + 79bc6e8 commit 91a12ab

File tree

3 files changed

+37
-6
lines changed

3 files changed

+37
-6
lines changed

services/issue/pull.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,14 @@ func PullRequestCodeOwnersReview(ctx context.Context, issue *issues_model.Issue,
5151
return nil, err
5252
}
5353

54-
if pr.HeadRepo.IsFork {
55-
return nil, nil
56-
}
57-
5854
if err := pr.LoadBaseRepo(ctx); err != nil {
5955
return nil, err
6056
}
6157

58+
if pr.BaseRepo.IsFork {
59+
return nil, nil
60+
}
61+
6262
repo, err := gitrepo.OpenRepository(ctx, pr.BaseRepo)
6363
if err != nil {
6464
return nil, err

tests/integration/codeowner_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package integration
66
import (
77
"context"
88
"fmt"
9+
"net/http"
910
"net/url"
1011
"os"
1112
"path"
@@ -136,5 +137,27 @@ func TestCodeOwner(t *testing.T) {
136137
unittest.AssertExistsIf(t, true, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 4})
137138
unittest.AssertExistsIf(t, false, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 5})
138139
})
140+
t.Run("From a forked repository", func(t *testing.T) {
141+
defer tests.PrintCurrentTest(t)()
142+
143+
session := loginUser(t, "user1")
144+
145+
r := fmt.Sprintf("%suser1/repo1.git", u.String())
146+
remoteURL, _ := url.Parse(r)
147+
remoteURL.User = url.UserPassword("user1", userPassword)
148+
doGitAddRemote(dstPath, "forked-2", remoteURL)(t)
149+
150+
err := git.NewCommand(git.DefaultContext, "push", "forked-2", "HEAD:branch").Run(&git.RunOpts{Dir: dstPath})
151+
require.NoError(t, err)
152+
153+
req := NewRequestWithValues(t, "POST", repo.FullName()+"/compare/main...user1/repo1:branch", map[string]string{
154+
"_csrf": GetCSRF(t, session, repo.FullName()+"/compare/main...user1/repo1:branch"),
155+
"title": "pull request",
156+
})
157+
session.MakeRequest(t, req, http.StatusOK)
158+
159+
pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{BaseRepoID: repo.ID, HeadBranch: "branch"})
160+
unittest.AssertExistsIf(t, true, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 4})
161+
})
139162
})
140163
}

tests/integration/pull_review_test.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -397,10 +397,18 @@ func TestPullView_CodeOwner(t *testing.T) {
397397
require.NoError(t, err)
398398

399399
session := loginUser(t, "user5")
400-
testPullCreate(t, session, "user5", "test_codeowner_fork", false, forkedRepo.DefaultBranch, "codeowner-basebranch-forked", "Test Pull Request2")
401400

402-
pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{BaseRepoID: repo.ID, HeadBranch: "codeowner-basebranch-forked"})
401+
// create a pull request on the forked repository, code reviewers should not be mentioned
402+
testPullCreateDirectly(t, session, "user5", "test_codeowner_fork", forkedRepo.DefaultBranch, "", "", "codeowner-basebranch-forked", "Test Pull Request on Forked Repository")
403+
404+
pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{BaseRepoID: forkedRepo.ID, HeadBranch: "codeowner-basebranch-forked"})
403405
unittest.AssertExistsIf(t, false, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 8})
406+
407+
// create a pull request to base repository, code reviewers should be mentioned
408+
testPullCreateDirectly(t, session, repo.OwnerName, repo.Name, repo.DefaultBranch, forkedRepo.OwnerName, forkedRepo.Name, "codeowner-basebranch-forked", "Test Pull Request3")
409+
410+
pr = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{BaseRepoID: repo.ID, HeadRepoID: forkedRepo.ID, HeadBranch: "codeowner-basebranch-forked"})
411+
unittest.AssertExistsIf(t, true, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 8})
404412
})
405413
})
406414
}

0 commit comments

Comments
 (0)