feat: add old "passthrough" behaviour back in as an option
`passthrough:""` or `passthrough:"all"` (the default) will pass through all further arguments including unrecognised flags. `passthrough:"partial"` will validate flags up until the `--` or the first positional argument, then pass through all subsequent flags and arguments.
This commit is contained in:
@@ -1803,6 +1803,35 @@ func TestPassthroughArgs(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestPassthroughPartial(t *testing.T) {
|
||||
var cli struct {
|
||||
Flag string
|
||||
Args []string `arg:"" optional:"" passthrough:"partial"`
|
||||
}
|
||||
p := mustNew(t, &cli)
|
||||
_, err := p.Parse([]string{"--flag", "foobar", "something"})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "foobar", cli.Flag)
|
||||
assert.Equal(t, []string{"something"}, cli.Args)
|
||||
_, err = p.Parse([]string{"--invalid", "foobar", "something"})
|
||||
assert.EqualError(t, err, "unknown flag --invalid")
|
||||
}
|
||||
|
||||
func TestPassthroughAll(t *testing.T) {
|
||||
var cli struct {
|
||||
Flag string
|
||||
Args []string `arg:"" optional:"" passthrough:"all"`
|
||||
}
|
||||
p := mustNew(t, &cli)
|
||||
_, err := p.Parse([]string{"--flag", "foobar", "something"})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "foobar", cli.Flag)
|
||||
assert.Equal(t, []string{"something"}, cli.Args)
|
||||
_, err = p.Parse([]string{"--invalid", "foobar", "something"})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, []string{"--invalid", "foobar", "something"}, cli.Args)
|
||||
}
|
||||
|
||||
func TestPassthroughCmd(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
|
||||
Reference in New Issue
Block a user