Skip to content

Commit

Permalink
Create unit test illustrating unknown flag bug
Browse files Browse the repository at this point in the history
Created a unit test that tests the unknown flag
error message when the unknown flag is located
in different arg positions.
  • Loading branch information
brianpursley committed Nov 15, 2022
1 parent 6b0bd30 commit 8187d7b
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions command_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2692,3 +2692,46 @@ func TestFind(t *testing.T) {
})
}
}

func TestUnknownFlagShouldReturnSameErrorRegardlessOfArgPosition(t *testing.T) {
testCases := [][]string{
//{"--unknown", "--namespace", "foo", "child", "--bar"}, // FIXME: This test case fails, returning the error `unknown command "foo" for "root"` instead of the expected error `unknown flag: --unknown`
{"--namespace", "foo", "--unknown", "child", "--bar"},
{"--namespace", "foo", "child", "--unknown", "--bar"},
{"--namespace", "foo", "child", "--bar", "--unknown"},

{"--unknown", "--namespace=foo", "child", "--bar"},
{"--namespace=foo", "--unknown", "child", "--bar"},
{"--namespace=foo", "child", "--unknown", "--bar"},
{"--namespace=foo", "child", "--bar", "--unknown"},

{"--unknown", "--namespace=foo", "child", "--bar=true"},
{"--namespace=foo", "--unknown", "child", "--bar=true"},
{"--namespace=foo", "child", "--unknown", "--bar=true"},
{"--namespace=foo", "child", "--bar=true", "--unknown"},
}

root := &Command{
Use: "root",
Run: emptyRun,
}
root.PersistentFlags().String("namespace", "", "a string flag")

c := &Command{
Use: "child",
Run: emptyRun,
}
c.Flags().Bool("bar", false, "a boolean flag")

root.AddCommand(c)

for _, tc := range testCases {
t.Run(strings.Join(tc, " "), func(t *testing.T) {
output, err := executeCommand(root, tc...)
if err == nil {
t.Error("expected unknown flag error")
}
checkStringContains(t, output, "unknown flag: --unknown")
})
}
}

0 comments on commit 8187d7b

Please sign in to comment.