mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 10:56:10 +01:00 
			
		
		
		
	Fix code owners will not be mentioned when a pull request comes from a forked repository (#30476)
Fix #30277 Caused by #29783
This commit is contained in:
		| @@ -51,14 +51,14 @@ func PullRequestCodeOwnersReview(ctx context.Context, issue *issues_model.Issue, | |||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if pr.HeadRepo.IsFork { |  | ||||||
| 		return nil, nil |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if err := pr.LoadBaseRepo(ctx); err != nil { | 	if err := pr.LoadBaseRepo(ctx); err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	if pr.BaseRepo.IsFork { | ||||||
|  | 		return nil, nil | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	repo, err := gitrepo.OpenRepository(ctx, pr.BaseRepo) | 	repo, err := gitrepo.OpenRepository(ctx, pr.BaseRepo) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ | |||||||
| package integration | package integration | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"fmt" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"net/http/httptest" | 	"net/http/httptest" | ||||||
| 	"net/url" | 	"net/url" | ||||||
| @@ -57,6 +58,30 @@ func testPullCreate(t *testing.T, session *TestSession, user, repo string, toSel | |||||||
| 	return resp | 	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) { | func TestPullCreate(t *testing.T) { | ||||||
| 	onGiteaRun(t, func(t *testing.T, u *url.URL) { | 	onGiteaRun(t, func(t *testing.T, u *url.URL) { | ||||||
| 		session := loginUser(t, "user1") | 		session := loginUser(t, "user1") | ||||||
|   | |||||||
| @@ -161,10 +161,18 @@ func TestPullView_CodeOwner(t *testing.T) { | |||||||
| 			assert.NoError(t, err) | 			assert.NoError(t, err) | ||||||
|  |  | ||||||
| 			session := loginUser(t, "user5") | 			session := loginUser(t, "user5") | ||||||
| 			testPullCreate(t, session, "user5", "test_codeowner", true, 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"}) | 			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}) | 			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}) | ||||||
| 		}) | 		}) | ||||||
| 	}) | 	}) | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user