Backport #30476 Fix #30277 Caused by #29783tags/v1.21.11
@@ -50,14 +50,14 @@ func PullRequestCodeOwnersReview(ctx context.Context, issue *issues_model.Issue, | |||
return nil, err | |||
} | |||
if pr.HeadRepo.IsFork { | |||
return nil, nil | |||
} | |||
if err := pr.LoadBaseRepo(ctx); err != nil { | |||
return nil, err | |||
} | |||
if pr.BaseRepo.IsFork { | |||
return nil, nil | |||
} | |||
repo, err := git.OpenRepository(ctx, pr.BaseRepo.RepoPath()) | |||
if err != nil { | |||
return nil, err |
@@ -62,6 +62,30 @@ func testPullCreate(t *testing.T, session *TestSession, user, repo, branch, titl | |||
return resp | |||
} | |||
func testPullCreateDirectly(t *testing.T, session *TestSession, baseRepoOwner, baseRepoName, baseBranch, headRepoOwner, headRepoName, headBranch, title string) *httptest.ResponseRecorder { | |||
headCompare := headBranch | |||
if headRepoOwner != "" { | |||
if headRepoName != "" { | |||
headCompare = fmt.Sprintf("%s/%s:%s", headRepoOwner, headRepoName, headBranch) | |||
} else { | |||
headCompare = fmt.Sprintf("%s:%s", headRepoOwner, headBranch) | |||
} | |||
} | |||
req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/compare/%s...%s", baseRepoOwner, baseRepoName, baseBranch, headCompare)) | |||
resp := session.MakeRequest(t, req, http.StatusOK) | |||
// Submit the form for creating the pull | |||
htmlDoc := NewHTMLParser(t, resp.Body) | |||
link, exists := htmlDoc.doc.Find("form.ui.form").Attr("action") | |||
assert.True(t, exists, "The template has changed") | |||
req = NewRequestWithValues(t, "POST", link, map[string]string{ | |||
"_csrf": htmlDoc.GetCSRF(), | |||
"title": title, | |||
}) | |||
resp = session.MakeRequest(t, req, http.StatusOK) | |||
return resp | |||
} | |||
func TestPullCreate(t *testing.T) { | |||
onGiteaRun(t, func(t *testing.T, u *url.URL) { | |||
session := loginUser(t, "user1") |
@@ -159,10 +159,18 @@ func TestPullView_CodeOwner(t *testing.T) { | |||
assert.NoError(t, err) | |||
session := loginUser(t, "user5") | |||
createPullRequest(t, session, "user5", "test_codeowner", forkedRepo.DefaultBranch, "codeowner-basebranch-forked", "Test Pull Request2") | |||
// create a pull request on the forked repository, code reviewers should not be mentioned | |||
testPullCreateDirectly(t, session, "user5", "test_codeowner", forkedRepo.DefaultBranch, "", "", "codeowner-basebranch-forked", "Test Pull Request on Forked Repository") | |||
pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{BaseRepoID: forkedRepo.ID, HeadBranch: "codeowner-basebranch-forked"}) | |||
unittest.AssertExistsIf(t, false, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 8}) | |||
// create a pull request to base repository, code reviewers should be mentioned | |||
testPullCreateDirectly(t, session, repo.OwnerName, repo.Name, repo.DefaultBranch, forkedRepo.OwnerName, forkedRepo.Name, "codeowner-basebranch-forked", "Test Pull Request3") | |||
pr = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{BaseRepoID: repo.ID, HeadRepoID: forkedRepo.ID, HeadBranch: "codeowner-basebranch-forked"}) | |||
unittest.AssertExistsIf(t, true, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 8}) | |||
}) | |||
}) | |||
} |