Skip to content

Commit ff85a63

Browse files
quantonganhlafriks
authored andcommitted
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
1 parent cb2ec41 commit ff85a63

File tree

2 files changed

+67
-33
lines changed

2 files changed

+67
-33
lines changed

models/pull.go

+58-32
Original file line numberDiff line numberDiff line change
@@ -189,36 +189,6 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
189189
return nil
190190
}
191191
}
192-
if baseBranch, err = pr.BaseRepo.GetBranch(pr.BaseBranch); err != nil {
193-
log.Error("pr.BaseRepo.GetBranch[%d]: %v", pr.BaseBranch, err)
194-
return nil
195-
}
196-
if baseCommit, err = baseBranch.GetCommit(); err != nil {
197-
log.Error("baseBranch.GetCommit[%d]: %v", pr.ID, err)
198-
return nil
199-
}
200-
if headBranch, err = pr.HeadRepo.GetBranch(pr.HeadBranch); err != nil {
201-
log.Error("pr.HeadRepo.GetBranch[%d]: %v", pr.HeadBranch, err)
202-
return nil
203-
}
204-
if headCommit, err = headBranch.GetCommit(); err != nil {
205-
log.Error("headBranch.GetCommit[%d]: %v", pr.ID, err)
206-
return nil
207-
}
208-
apiBaseBranchInfo := &api.PRBranchInfo{
209-
Name: pr.BaseBranch,
210-
Ref: pr.BaseBranch,
211-
Sha: baseCommit.ID.String(),
212-
RepoID: pr.BaseRepoID,
213-
Repository: pr.BaseRepo.innerAPIFormat(e, AccessModeNone, false),
214-
}
215-
apiHeadBranchInfo := &api.PRBranchInfo{
216-
Name: pr.HeadBranch,
217-
Ref: pr.HeadBranch,
218-
Sha: headCommit.ID.String(),
219-
RepoID: pr.HeadRepoID,
220-
Repository: pr.HeadRepo.innerAPIFormat(e, AccessModeNone, false),
221-
}
222192

223193
if err = pr.Issue.loadRepo(e); err != nil {
224194
log.Error("pr.Issue.loadRepo[%d]: %v", pr.ID, err)
@@ -227,6 +197,7 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
227197

228198
apiPullRequest := &api.PullRequest{
229199
ID: pr.ID,
200+
URL: pr.Issue.HTMLURL(),
230201
Index: pr.Index,
231202
Poster: apiIssue.Poster,
232203
Title: apiIssue.Title,
@@ -241,13 +212,68 @@ func (pr *PullRequest) apiFormat(e Engine) *api.PullRequest {
241212
DiffURL: pr.Issue.DiffURL(),
242213
PatchURL: pr.Issue.PatchURL(),
243214
HasMerged: pr.HasMerged,
244-
Base: apiBaseBranchInfo,
245-
Head: apiHeadBranchInfo,
246215
MergeBase: pr.MergeBase,
247216
Deadline: apiIssue.Deadline,
248217
Created: pr.Issue.CreatedUnix.AsTimePtr(),
249218
Updated: pr.Issue.UpdatedUnix.AsTimePtr(),
250219
}
220+
baseBranch, err = pr.BaseRepo.GetBranch(pr.BaseBranch)
221+
if err != nil {
222+
if git.IsErrBranchNotExist(err) {
223+
apiPullRequest.Base = nil
224+
} else {
225+
log.Error("GetBranch[%s]: %v", pr.BaseBranch, err)
226+
return nil
227+
}
228+
} else {
229+
apiBaseBranchInfo := &api.PRBranchInfo{
230+
Name: pr.BaseBranch,
231+
Ref: pr.BaseBranch,
232+
RepoID: pr.BaseRepoID,
233+
Repository: pr.BaseRepo.innerAPIFormat(e, AccessModeNone, false),
234+
}
235+
baseCommit, err = baseBranch.GetCommit()
236+
if err != nil {
237+
if git.IsErrNotExist(err) {
238+
apiBaseBranchInfo.Sha = ""
239+
} else {
240+
log.Error("GetCommit[%s]: %v", baseBranch.Name, err)
241+
return nil
242+
}
243+
} else {
244+
apiBaseBranchInfo.Sha = baseCommit.ID.String()
245+
}
246+
apiPullRequest.Base = apiBaseBranchInfo
247+
}
248+
249+
headBranch, err = pr.HeadRepo.GetBranch(pr.HeadBranch)
250+
if err != nil {
251+
if git.IsErrBranchNotExist(err) {
252+
apiPullRequest.Head = nil
253+
} else {
254+
log.Error("GetBranch[%s]: %v", pr.HeadBranch, err)
255+
return nil
256+
}
257+
} else {
258+
apiHeadBranchInfo := &api.PRBranchInfo{
259+
Name: pr.HeadBranch,
260+
Ref: pr.HeadBranch,
261+
RepoID: pr.HeadRepoID,
262+
Repository: pr.HeadRepo.innerAPIFormat(e, AccessModeNone, false),
263+
}
264+
headCommit, err = headBranch.GetCommit()
265+
if err != nil {
266+
if git.IsErrNotExist(err) {
267+
apiHeadBranchInfo.Sha = ""
268+
} else {
269+
log.Error("GetCommit[%s]: %v", headBranch.Name, err)
270+
return nil
271+
}
272+
} else {
273+
apiHeadBranchInfo.Sha = headCommit.ID.String()
274+
}
275+
apiPullRequest.Head = apiHeadBranchInfo
276+
}
251277

252278
if pr.Status != PullRequestStatusChecking {
253279
mergeable := pr.Status != PullRequestStatusConflict && !pr.IsWorkInProgress()

models/pull_test.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,15 @@ func TestPullRequest_LoadIssue(t *testing.T) {
3131
assert.Equal(t, int64(2), pr.Issue.ID)
3232
}
3333

34-
// TODO TestPullRequest_APIFormat
34+
func TestPullRequest_APIFormat(t *testing.T) {
35+
assert.NoError(t, PrepareTestDatabase())
36+
pr := AssertExistsAndLoadBean(t, &PullRequest{ID: 1}).(*PullRequest)
37+
assert.NoError(t, pr.LoadAttributes())
38+
assert.NoError(t, pr.LoadIssue())
39+
apiPullRequest := pr.APIFormat()
40+
assert.NotNil(t, apiPullRequest)
41+
assert.Nil(t, apiPullRequest.Head)
42+
}
3543

3644
func TestPullRequest_GetBaseRepo(t *testing.T) {
3745
assert.NoError(t, PrepareTestDatabase())

0 commit comments

Comments
 (0)