mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-26 23:35:51 +03:00
only return head: null if source branch was deleted (#6705)
* only return head: null if source branch was deleted * add URL into GetPullRequest * TestPullRequest_APIFormat * log error if it is not Err(Branch)NotExist
This commit is contained in:
parent
cb2ec41dce
commit
ff85a6331e
2 changed files with 67 additions and 33 deletions
|
@ -189,36 +189,6 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if baseBranch, err = pr.BaseRepo.GetBranch(pr.BaseBranch); err != nil {
|
|
||||||
log.Error("pr.BaseRepo.GetBranch[%d]: %v", pr.BaseBranch, err)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if baseCommit, err = baseBranch.GetCommit(); err != nil {
|
|
||||||
log.Error("baseBranch.GetCommit[%d]: %v", pr.ID, err)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if headBranch, err = pr.HeadRepo.GetBranch(pr.HeadBranch); err != nil {
|
|
||||||
log.Error("pr.HeadRepo.GetBranch[%d]: %v", pr.HeadBranch, err)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if headCommit, err = headBranch.GetCommit(); err != nil {
|
|
||||||
log.Error("headBranch.GetCommit[%d]: %v", pr.ID, err)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
apiBaseBranchInfo := &api.PRBranchInfo{
|
|
||||||
Name: pr.BaseBranch,
|
|
||||||
Ref: pr.BaseBranch,
|
|
||||||
Sha: baseCommit.ID.String(),
|
|
||||||
RepoID: pr.BaseRepoID,
|
|
||||||
Repository: pr.BaseRepo.innerAPIFormat(e, AccessModeNone, false),
|
|
||||||
}
|
|
||||||
apiHeadBranchInfo := &api.PRBranchInfo{
|
|
||||||
Name: pr.HeadBranch,
|
|
||||||
Ref: pr.HeadBranch,
|
|
||||||
Sha: headCommit.ID.String(),
|
|
||||||
RepoID: pr.HeadRepoID,
|
|
||||||
Repository: pr.HeadRepo.innerAPIFormat(e, AccessModeNone, false),
|
|
||||||
}
|
|
||||||
|
|
||||||
if err = pr.Issue.loadRepo(e); err != nil {
|
if err = pr.Issue.loadRepo(e); err != nil {
|
||||||
log.Error("pr.Issue.loadRepo[%d]: %v", pr.ID, err)
|
log.Error("pr.Issue.loadRepo[%d]: %v", pr.ID, err)
|
||||||
|
@ -227,6 +197,7 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
|
||||||
|
|
||||||
apiPullRequest := &api.PullRequest{
|
apiPullRequest := &api.PullRequest{
|
||||||
ID: pr.ID,
|
ID: pr.ID,
|
||||||
|
URL: pr.Issue.HTMLURL(),
|
||||||
Index: pr.Index,
|
Index: pr.Index,
|
||||||
Poster: apiIssue.Poster,
|
Poster: apiIssue.Poster,
|
||||||
Title: apiIssue.Title,
|
Title: apiIssue.Title,
|
||||||
|
@ -241,13 +212,68 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
|
||||||
DiffURL: pr.Issue.DiffURL(),
|
DiffURL: pr.Issue.DiffURL(),
|
||||||
PatchURL: pr.Issue.PatchURL(),
|
PatchURL: pr.Issue.PatchURL(),
|
||||||
HasMerged: pr.HasMerged,
|
HasMerged: pr.HasMerged,
|
||||||
Base: apiBaseBranchInfo,
|
|
||||||
Head: apiHeadBranchInfo,
|
|
||||||
MergeBase: pr.MergeBase,
|
MergeBase: pr.MergeBase,
|
||||||
Deadline: apiIssue.Deadline,
|
Deadline: apiIssue.Deadline,
|
||||||
Created: pr.Issue.CreatedUnix.AsTimePtr(),
|
Created: pr.Issue.CreatedUnix.AsTimePtr(),
|
||||||
Updated: pr.Issue.UpdatedUnix.AsTimePtr(),
|
Updated: pr.Issue.UpdatedUnix.AsTimePtr(),
|
||||||
}
|
}
|
||||||
|
baseBranch, err = pr.BaseRepo.GetBranch(pr.BaseBranch)
|
||||||
|
if err != nil {
|
||||||
|
if git.IsErrBranchNotExist(err) {
|
||||||
|
apiPullRequest.Base = nil
|
||||||
|
} else {
|
||||||
|
log.Error("GetBranch[%s]: %v", pr.BaseBranch, err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
apiBaseBranchInfo := &api.PRBranchInfo{
|
||||||
|
Name: pr.BaseBranch,
|
||||||
|
Ref: pr.BaseBranch,
|
||||||
|
RepoID: pr.BaseRepoID,
|
||||||
|
Repository: pr.BaseRepo.innerAPIFormat(e, AccessModeNone, false),
|
||||||
|
}
|
||||||
|
baseCommit, err = baseBranch.GetCommit()
|
||||||
|
if err != nil {
|
||||||
|
if git.IsErrNotExist(err) {
|
||||||
|
apiBaseBranchInfo.Sha = ""
|
||||||
|
} else {
|
||||||
|
log.Error("GetCommit[%s]: %v", baseBranch.Name, err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
apiBaseBranchInfo.Sha = baseCommit.ID.String()
|
||||||
|
}
|
||||||
|
apiPullRequest.Base = apiBaseBranchInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
headBranch, err = pr.HeadRepo.GetBranch(pr.HeadBranch)
|
||||||
|
if err != nil {
|
||||||
|
if git.IsErrBranchNotExist(err) {
|
||||||
|
apiPullRequest.Head = nil
|
||||||
|
} else {
|
||||||
|
log.Error("GetBranch[%s]: %v", pr.HeadBranch, err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
apiHeadBranchInfo := &api.PRBranchInfo{
|
||||||
|
Name: pr.HeadBranch,
|
||||||
|
Ref: pr.HeadBranch,
|
||||||
|
RepoID: pr.HeadRepoID,
|
||||||
|
Repository: pr.HeadRepo.innerAPIFormat(e, AccessModeNone, false),
|
||||||
|
}
|
||||||
|
headCommit, err = headBranch.GetCommit()
|
||||||
|
if err != nil {
|
||||||
|
if git.IsErrNotExist(err) {
|
||||||
|
apiHeadBranchInfo.Sha = ""
|
||||||
|
} else {
|
||||||
|
log.Error("GetCommit[%s]: %v", headBranch.Name, err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
apiHeadBranchInfo.Sha = headCommit.ID.String()
|
||||||
|
}
|
||||||
|
apiPullRequest.Head = apiHeadBranchInfo
|
||||||
|
}
|
||||||
|
|
||||||
if pr.Status != PullRequestStatusChecking {
|
if pr.Status != PullRequestStatusChecking {
|
||||||
mergeable := pr.Status != PullRequestStatusConflict && !pr.IsWorkInProgress()
|
mergeable := pr.Status != PullRequestStatusConflict && !pr.IsWorkInProgress()
|
||||||
|
|
|
@ -31,7 +31,15 @@ func TestPullRequest_LoadIssue(t *testing.T) {
|
||||||
assert.Equal(t, int64(2), pr.Issue.ID)
|
assert.Equal(t, int64(2), pr.Issue.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO TestPullRequest_APIFormat
|
func TestPullRequest_APIFormat(t *testing.T) {
|
||||||
|
assert.NoError(t, PrepareTestDatabase())
|
||||||
|
pr := AssertExistsAndLoadBean(t, &PullRequest{ID: 1}).(*PullRequest)
|
||||||
|
assert.NoError(t, pr.LoadAttributes())
|
||||||
|
assert.NoError(t, pr.LoadIssue())
|
||||||
|
apiPullRequest := pr.APIFormat()
|
||||||
|
assert.NotNil(t, apiPullRequest)
|
||||||
|
assert.Nil(t, apiPullRequest.Head)
|
||||||
|
}
|
||||||
|
|
||||||
func TestPullRequest_GetBaseRepo(t *testing.T) {
|
func TestPullRequest_GetBaseRepo(t *testing.T) {
|
||||||
assert.NoError(t, PrepareTestDatabase())
|
assert.NoError(t, PrepareTestDatabase())
|
||||||
|
|
Loading…
Reference in a new issue