Skip to content

Commit 42779d5

Browse files
authored
Merge pull request #2255 from dearchap/issue_2254
Fix:(issue_2254) Fix incorrect handling of arg after short option token
2 parents fd14621 + b81360a commit 42779d5

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

command_parse.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ func (cmd *Command) parseFlags(args Args) (Args, error) {
207207
return &stringSliceArgs{posArgs}, fmt.Errorf("%s%s", argumentNotProvidedErrMsg, string(c))
208208
}
209209
flagVal = rargs[1]
210+
rargs = rargs[1:]
210211
}
211212
tracef("parseFlags (flagName %[1]q) (flagVal %[2]q)", flagName, flagVal)
212213
if err := cmd.set(flagName, sf, flagVal); err != nil {

command_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1413,6 +1413,33 @@ func TestCommand_UseShortOptionAfterSliceFlag(t *testing.T) {
14131413
assert.Equal(t, expected, name)
14141414
}
14151415

1416+
func TestCommand_UseShortOptionWithArg(t *testing.T) {
1417+
var rootPath string
1418+
cmd := &Command{
1419+
UseShortOptionHandling: true,
1420+
Commands: []*Command{
1421+
{
1422+
Name: "short",
1423+
Usage: "complete a task on the list",
1424+
Arguments: []Argument{
1425+
&StringArg{Name: "root", UsageText: "Root path", Destination: &rootPath},
1426+
},
1427+
Flags: []Flag{
1428+
&BoolFlag{Name: "serve", Aliases: []string{"s"}},
1429+
&BoolFlag{Name: "option", Aliases: []string{"o"}},
1430+
&StringFlag{Name: "message", Aliases: []string{"m"}},
1431+
},
1432+
Action: func(ctx context.Context, cmd *Command) error {
1433+
return nil
1434+
},
1435+
},
1436+
},
1437+
}
1438+
err := cmd.Run(buildTestContext(t), []string{"app", "short", "-som", "hello", "/path/to/root"})
1439+
require.NoError(t, err)
1440+
require.Equal(t, "/path/to/root", rootPath)
1441+
}
1442+
14161443
func TestCommand_Float64Flag(t *testing.T) {
14171444
var meters float64
14181445

0 commit comments

Comments
 (0)