Skip to content

Commit fe6ff48

Browse files
authored
Merge pull request urfave#2081 from dearchap/issue_2077
Fix:(issue_2077) Make sure onUsageError is invoked for command when a…
2 parents 56745f7 + 8bb43eb commit fe6ff48

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

args_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,14 @@ func TestArgumentsSubcommand(t *testing.T) {
9494
},
9595
}
9696

97+
numUsageErrors := 0
98+
cmd.Commands[0].OnUsageError = func(ctx context.Context, cmd *Command, err error, isSubcommand bool) error {
99+
numUsageErrors++
100+
return err
101+
}
102+
97103
require.Error(t, errors.New("sufficient count of arg sa not provided, given 0 expected 1"), cmd.Run(context.Background(), []string{"foo", "subcmd", "2006-01-02T15:04:05Z"}))
104+
require.Equal(t, 1, numUsageErrors)
98105

99106
require.NoError(t, cmd.Run(context.Background(), []string{"foo", "subcmd", "2006-01-02T15:04:05Z", "fubar"}))
100107
require.Equal(t, time.Date(2006, time.January, 2, 15, 4, 5, 0, time.UTC), tval)

command_run.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,10 @@ func (cmd *Command) Run(ctx context.Context, osArgs []string) (deferErr error) {
313313
rargs, err = arg.Parse(rargs)
314314
if err != nil {
315315
tracef("calling with %[1]v (cmd=%[2]q)", err, cmd.Name)
316+
if cmd.OnUsageError != nil {
317+
err = cmd.OnUsageError(ctx, cmd, err, cmd.parent != nil)
318+
}
319+
err = cmd.handleExitCoder(ctx, err)
316320
return err
317321
}
318322
}

0 commit comments

Comments
 (0)