mirror of
https://github.com/go-gitea/gitea.git
synced 2024-12-04 14:46:57 -05:00
parent
0bd75390f5
commit
7e68bc8823
@ -1124,11 +1124,22 @@ func parseCompareInfo(ctx *context.APIContext, form api.CreatePullRequestOption)
|
|||||||
// Check if current user has fork of repository or in the same repository.
|
// Check if current user has fork of repository or in the same repository.
|
||||||
headRepo := repo_model.GetForkedRepo(ctx, headUser.ID, baseRepo.ID)
|
headRepo := repo_model.GetForkedRepo(ctx, headUser.ID, baseRepo.ID)
|
||||||
if headRepo == nil && !isSameRepo {
|
if headRepo == nil && !isSameRepo {
|
||||||
log.Trace("parseCompareInfo[%d]: does not have fork or in same repository", baseRepo.ID)
|
err := baseRepo.GetBaseRepo(ctx)
|
||||||
ctx.NotFound("GetForkedRepo")
|
if err != nil {
|
||||||
|
ctx.Error(http.StatusInternalServerError, "GetBaseRepo", err)
|
||||||
return nil, nil, nil, "", ""
|
return nil, nil, nil, "", ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if baseRepo's base repository is the same as headUser's repository.
|
||||||
|
if baseRepo.BaseRepo == nil || baseRepo.BaseRepo.OwnerID != headUser.ID {
|
||||||
|
log.Trace("parseCompareInfo[%d]: does not have fork or in same repository", baseRepo.ID)
|
||||||
|
ctx.NotFound("GetBaseRepo")
|
||||||
|
return nil, nil, nil, "", ""
|
||||||
|
}
|
||||||
|
// Assign headRepo so it can be used below.
|
||||||
|
headRepo = baseRepo.BaseRepo
|
||||||
|
}
|
||||||
|
|
||||||
var headGitRepo *git.Repository
|
var headGitRepo *git.Repository
|
||||||
if isSameRepo {
|
if isSameRepo {
|
||||||
headRepo = ctx.Repo.Repository
|
headRepo = ctx.Repo.Repository
|
||||||
|
@ -199,3 +199,30 @@ func TestPullBranchDelete(t *testing.T) {
|
|||||||
session.MakeRequest(t, req, http.StatusOK)
|
session.MakeRequest(t, req, http.StatusOK)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Setup:
|
||||||
|
The base repository is: user2/repo1
|
||||||
|
Fork repository to: user1/repo1
|
||||||
|
Push extra commit to: user2/repo1, which changes README.md
|
||||||
|
Create a PR on user1/repo1
|
||||||
|
|
||||||
|
Test checks:
|
||||||
|
Check if pull request can be created from base to the fork repository.
|
||||||
|
*/
|
||||||
|
func TestPullCreatePrFromBaseToFork(t *testing.T) {
|
||||||
|
onGiteaRun(t, func(t *testing.T, u *url.URL) {
|
||||||
|
sessionFork := loginUser(t, "user1")
|
||||||
|
testRepoFork(t, sessionFork, "user2", "repo1", "user1", "repo1", "")
|
||||||
|
|
||||||
|
// Edit base repository
|
||||||
|
sessionBase := loginUser(t, "user2")
|
||||||
|
testEditFile(t, sessionBase, "user2", "repo1", "master", "README.md", "Hello, World (Edited)\n")
|
||||||
|
|
||||||
|
// Create a PR
|
||||||
|
resp := testPullCreateDirectly(t, sessionFork, "user1", "repo1", "master", "user2", "repo1", "master", "This is a pull title")
|
||||||
|
// check the redirected URL
|
||||||
|
url := test.RedirectURL(resp)
|
||||||
|
assert.Regexp(t, "^/user1/repo1/pulls/[0-9]*$", url)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user