Exit on pr merge with -d and merge queue
When running `gh pr merge -d` on a repo with a merge queue policy, exit before attempting to merge.
This commit is contained in:
parent
5e9283c70c
commit
439cfa08bb
2 changed files with 37 additions and 1 deletions
|
|
@ -241,7 +241,15 @@ func (m *mergeContext) warnIfDiverged() {
|
|||
// Check if the current state of the pull request allows for merging
|
||||
func (m *mergeContext) canMerge() error {
|
||||
if m.mergeQueueRequired {
|
||||
// a pull request can always be added to the merge queue
|
||||
// Requesting branch deletion on a PR with a merge queue
|
||||
// policy is not allowed. Doing so can unexpectedly
|
||||
// delete branches before merging, close the PR, and remove
|
||||
// the PR from the merge queue.
|
||||
if m.opts.DeleteBranch {
|
||||
fmt.Fprintf(m.opts.IO.ErrOut, "%s Cannot use `-d` or `--delete-branch` when merge queue enabled\n", m.cs.FailureIcon())
|
||||
return cmdutil.SilentError
|
||||
}
|
||||
// Otherwise, a pull request can always be added to the merge queue
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -659,6 +659,34 @@ func TestPrMerge_deleteBranch(t *testing.T) {
|
|||
`), output.Stderr())
|
||||
}
|
||||
|
||||
func TestPrMerge_deleteBranch_mergeQueue(t *testing.T) {
|
||||
http := initFakeHTTP()
|
||||
defer http.Verify(t)
|
||||
|
||||
shared.RunCommandFinder(
|
||||
"",
|
||||
&api.PullRequest{
|
||||
ID: "PR_10",
|
||||
Number: 10,
|
||||
State: "OPEN",
|
||||
Title: "Blueberries are a good fruit",
|
||||
HeadRefName: "blueberries",
|
||||
BaseRefName: "main",
|
||||
MergeStateStatus: "CLEAN",
|
||||
IsMergeQueueEnabled: true,
|
||||
},
|
||||
baseRepo("OWNER", "REPO", "main"),
|
||||
)
|
||||
|
||||
output, err := runCommand(http, nil, "blueberries", true, `pr merge --merge --delete-branch`)
|
||||
assert.ErrorIs(t, err, cmdutil.SilentError)
|
||||
|
||||
assert.Equal(t, "", output.String())
|
||||
assert.Equal(t, heredoc.Docf(`
|
||||
X Cannot use %[1]s-d%[1]s or %[1]s--delete-branch%[1]s when merge queue enabled
|
||||
`, "`"), output.Stderr())
|
||||
}
|
||||
|
||||
func TestPrMerge_deleteBranch_nonDefault(t *testing.T) {
|
||||
http := initFakeHTTP()
|
||||
defer http.Verify(t)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue