summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorquantonganh <quanta.linux@gmail.com>2019-07-08 14:32:46 +0700
committerLauris BH <lauris@nix.lv>2019-07-08 10:32:46 +0300
commitff85a6331e02338100e3799b5787bf8b686fe003 (patch)
tree5dcbfd379660e9c5f2c9632d862dfbe1a2a92799 /models
parentcb2ec41dce97c9ceb8db97332d1fa600bace3af5 (diff)
downloadgitea-ff85a6331e02338100e3799b5787bf8b686fe003.tar.gz
gitea-ff85a6331e02338100e3799b5787bf8b686fe003.zip
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
Diffstat (limited to 'models')
-rw-r--r--models/pull.go90
-rw-r--r--models/pull_test.go10
2 files changed, 67 insertions, 33 deletions
diff --git a/models/pull.go b/models/pull.go
index 6ee2ec555d..7dd6050c67 100644
--- a/models/pull.go
+++ b/models/pull.go
@@ -189,36 +189,6 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
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 {
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{
ID: pr.ID,
+ URL: pr.Issue.HTMLURL(),
Index: pr.Index,
Poster: apiIssue.Poster,
Title: apiIssue.Title,
@@ -241,13 +212,68 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
DiffURL: pr.Issue.DiffURL(),
PatchURL: pr.Issue.PatchURL(),
HasMerged: pr.HasMerged,
- Base: apiBaseBranchInfo,
- Head: apiHeadBranchInfo,
MergeBase: pr.MergeBase,
Deadline: apiIssue.Deadline,
Created: pr.Issue.CreatedUnix.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 {
mergeable := pr.Status != PullRequestStatusConflict && !pr.IsWorkInProgress()
diff --git a/models/pull_test.go b/models/pull_test.go
index 5a53474ac4..df051d51bc 100644
--- a/models/pull_test.go
+++ b/models/pull_test.go
@@ -31,7 +31,15 @@ func TestPullRequest_LoadIssue(t *testing.T) {
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) {
assert.NoError(t, PrepareTestDatabase())