@@ -480,6 +480,7 @@ func TestPrMerge_deleteBranch(t *testing.T) {
480480 cs , cmdTeardown := run .Stub ()
481481 defer cmdTeardown (t )
482482
483+ cs .Register (`git rev-parse --verify refs/heads/master` , 0 , "" )
483484 cs .Register (`git checkout master` , 0 , "" )
484485 cs .Register (`git rev-parse --verify refs/heads/blueberries` , 0 , "" )
485486 cs .Register (`git branch -D blueberries` , 0 , "" )
@@ -497,6 +498,106 @@ func TestPrMerge_deleteBranch(t *testing.T) {
497498 ` ), output .Stderr ())
498499}
499500
501+ func TestPrMerge_deleteBranch_nonDefault (t * testing.T ) {
502+ http := initFakeHTTP ()
503+ defer http .Verify (t )
504+
505+ shared .RunCommandFinder (
506+ "" ,
507+ & api.PullRequest {
508+ ID : "PR_10" ,
509+ Number : 10 ,
510+ State : "OPEN" ,
511+ Title : "Blueberries are a good fruit" ,
512+ HeadRefName : "blueberries" ,
513+ MergeStateStatus : "CLEAN" ,
514+ BaseRefName : "fruit" ,
515+ },
516+ baseRepo ("OWNER" , "REPO" , "master" ),
517+ )
518+
519+ http .Register (
520+ httpmock .GraphQL (`mutation PullRequestMerge\b` ),
521+ httpmock .GraphQLMutation (`{}` , func (input map [string ]interface {}) {
522+ assert .Equal (t , "PR_10" , input ["pullRequestId" ].(string ))
523+ assert .Equal (t , "MERGE" , input ["mergeMethod" ].(string ))
524+ assert .NotContains (t , input , "commitHeadline" )
525+ }))
526+ http .Register (
527+ httpmock .REST ("DELETE" , "repos/OWNER/REPO/git/refs/heads/blueberries" ),
528+ httpmock .StringResponse (`{}` ))
529+
530+ cs , cmdTeardown := run .Stub ()
531+ defer cmdTeardown (t )
532+
533+ cs .Register (`git rev-parse --verify refs/heads/fruit` , 0 , "" )
534+ cs .Register (`git checkout fruit` , 0 , "" )
535+ cs .Register (`git rev-parse --verify refs/heads/blueberries` , 0 , "" )
536+ cs .Register (`git branch -D blueberries` , 0 , "" )
537+ cs .Register (`git pull --ff-only` , 0 , "" )
538+
539+ output , err := runCommand (http , "blueberries" , true , `pr merge --merge --delete-branch` )
540+ if err != nil {
541+ t .Fatalf ("Got unexpected error running `pr merge` %s" , err )
542+ }
543+
544+ assert .Equal (t , "" , output .String ())
545+ assert .Equal (t , heredoc .Doc (`
546+ ✓ Merged pull request #10 (Blueberries are a good fruit)
547+ ✓ Deleted branch blueberries and switched to branch fruit
548+ ` ), output .Stderr ())
549+ }
550+
551+ func TestPrMerge_deleteBranch_checkoutNewBranch (t * testing.T ) {
552+ http := initFakeHTTP ()
553+ defer http .Verify (t )
554+
555+ shared .RunCommandFinder (
556+ "" ,
557+ & api.PullRequest {
558+ ID : "PR_10" ,
559+ Number : 10 ,
560+ State : "OPEN" ,
561+ Title : "Blueberries are a good fruit" ,
562+ HeadRefName : "blueberries" ,
563+ MergeStateStatus : "CLEAN" ,
564+ BaseRefName : "fruit" ,
565+ },
566+ baseRepo ("OWNER" , "REPO" , "master" ),
567+ )
568+
569+ http .Register (
570+ httpmock .GraphQL (`mutation PullRequestMerge\b` ),
571+ httpmock .GraphQLMutation (`{}` , func (input map [string ]interface {}) {
572+ assert .Equal (t , "PR_10" , input ["pullRequestId" ].(string ))
573+ assert .Equal (t , "MERGE" , input ["mergeMethod" ].(string ))
574+ assert .NotContains (t , input , "commitHeadline" )
575+ }))
576+ http .Register (
577+ httpmock .REST ("DELETE" , "repos/OWNER/REPO/git/refs/heads/blueberries" ),
578+ httpmock .StringResponse (`{}` ))
579+
580+ cs , cmdTeardown := run .Stub ()
581+ defer cmdTeardown (t )
582+
583+ cs .Register (`git rev-parse --verify refs/heads/fruit` , 1 , "" )
584+ cs .Register (`git checkout -b fruit --track origin/fruit` , 0 , "" )
585+ cs .Register (`git rev-parse --verify refs/heads/blueberries` , 0 , "" )
586+ cs .Register (`git branch -D blueberries` , 0 , "" )
587+ cs .Register (`git pull --ff-only` , 0 , "" )
588+
589+ output , err := runCommand (http , "blueberries" , true , `pr merge --merge --delete-branch` )
590+ if err != nil {
591+ t .Fatalf ("Got unexpected error running `pr merge` %s" , err )
592+ }
593+
594+ assert .Equal (t , "" , output .String ())
595+ assert .Equal (t , heredoc .Doc (`
596+ ✓ Merged pull request #10 (Blueberries are a good fruit)
597+ ✓ Deleted branch blueberries and switched to branch fruit
598+ ` ), output .Stderr ())
599+ }
600+
500601func TestPrMerge_deleteNonCurrentBranch (t * testing.T ) {
501602 http := initFakeHTTP ()
502603 defer http .Verify (t )
@@ -764,6 +865,7 @@ func TestPrMerge_alreadyMerged(t *testing.T) {
764865 cs , cmdTeardown := run .Stub ()
765866 defer cmdTeardown (t )
766867
868+ cs .Register (`git rev-parse --verify refs/heads/master` , 0 , "" )
767869 cs .Register (`git checkout master` , 0 , "" )
768870 cs .Register (`git rev-parse --verify refs/heads/blueberries` , 0 , "" )
769871 cs .Register (`git branch -D blueberries` , 0 , "" )
@@ -906,6 +1008,7 @@ func TestPRMerge_interactiveWithDeleteBranch(t *testing.T) {
9061008 cs , cmdTeardown := run .Stub ()
9071009 defer cmdTeardown (t )
9081010
1011+ cs .Register (`git rev-parse --verify refs/heads/master` , 0 , "" )
9091012 cs .Register (`git checkout master` , 0 , "" )
9101013 cs .Register (`git rev-parse --verify refs/heads/blueberries` , 0 , "" )
9111014 cs .Register (`git branch -D blueberries` , 0 , "" )
0 commit comments