Add test for mutually exclusive flags
Co-Authored-By: Nate Smith <vilmibm@neongrid.space>
This commit is contained in:
parent
f0cd830170
commit
214be16d42
2 changed files with 42 additions and 1 deletions
|
|
@ -1,6 +1,7 @@
|
|||
package command
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
|
@ -479,7 +480,24 @@ func prMerge(cmd *cobra.Command, args []string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
isInteractive := !cmd.Flags().Changed("rebase") && !cmd.Flags().Changed("squash") && !cmd.Flags().Changed("merge")
|
||||
// Ensure only one merge method is specified
|
||||
found := 0
|
||||
isInteractive := false
|
||||
if cmd.Flags().Changed("merge") {
|
||||
found++
|
||||
}
|
||||
if cmd.Flags().Changed("rebase") {
|
||||
found++
|
||||
}
|
||||
if cmd.Flags().Changed("squash") {
|
||||
found++
|
||||
}
|
||||
if found == 0 {
|
||||
isInteractive = true
|
||||
} else if found > 1 {
|
||||
return errors.New("expected exactly one of --merge, --rebase, or --squash")
|
||||
}
|
||||
|
||||
if isInteractive {
|
||||
mergeMethod, deleteBranch, err = prInteractiveMerge()
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -996,6 +996,15 @@ func TestPrMerge(t *testing.T) {
|
|||
stubResponse{200, bytes.NewBufferString(`{"id": "THE-ID"}`)},
|
||||
)
|
||||
|
||||
cs, cmdTeardown := test.InitCmdStubber()
|
||||
defer cmdTeardown()
|
||||
|
||||
cs.Stub("branch.blueberries.remote origin\nbranch.blueberries.merge refs/heads/blueberries") // git config --get-regexp ^branch\.master\.(remote|merge)
|
||||
cs.Stub("") // git config --get-regexp ^branch\.blueberries\.(remote|merge)$
|
||||
cs.Stub("") // git symbolic-ref --quiet --short HEAD
|
||||
cs.Stub("") // git checkout master
|
||||
cs.Stub("")
|
||||
|
||||
output, err := RunCommand("pr merge 1 --merge")
|
||||
if err != nil {
|
||||
t.Fatalf("error running command `pr merge`: %v", err)
|
||||
|
|
@ -1159,3 +1168,17 @@ func TestPRMerge_interactive(t *testing.T) {
|
|||
|
||||
test.ExpectLines(t, output.String(), "Merged pull request #3", "Deleted local branch")
|
||||
}
|
||||
|
||||
func TestPrMerge_multipleMergeMethods(t *testing.T) {
|
||||
initWithStubs("master",
|
||||
stubResponse{200, bytes.NewBufferString(`{ "data": { "repository": {
|
||||
"pullRequest": { "number": 1, "closed": false, "state": "OPEN"}
|
||||
} } }`)},
|
||||
stubResponse{200, bytes.NewBufferString(`{"id": "THE-ID"}`)},
|
||||
)
|
||||
|
||||
_, err := RunCommand("pr merge 1 --merge --squash")
|
||||
if err == nil {
|
||||
t.Fatal("expected error running `pr merge` with multiple merge methods")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue