Skip to content

Commit

Permalink
Merge pull request #1444 from Dokiys/fix/add_after_before_help_check
Browse files Browse the repository at this point in the history
Fix After not run
  • Loading branch information
dearchap authored Aug 13, 2022
2 parents 0c9527f + a1c26d5 commit e3ee4fb
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 12 deletions.
24 changes: 12 additions & 12 deletions app.go
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,18 @@ func (a *App) RunContext(ctx context.Context, arguments []string) (err error) {
return err
}

if a.After != nil {
defer func() {
if afterErr := a.After(cCtx); afterErr != nil {
if err != nil {
err = newMultiError(err, afterErr)
} else {
err = afterErr
}
}
}()
}

if !a.HideHelp && checkHelp(cCtx) {
_ = ShowAppHelp(cCtx)
return nil
Expand All @@ -320,18 +332,6 @@ func (a *App) RunContext(ctx context.Context, arguments []string) (err error) {
return cerr
}

if a.After != nil {
defer func() {
if afterErr := a.After(cCtx); afterErr != nil {
if err != nil {
err = newMultiError(err, afterErr)
} else {
err = afterErr
}
}
}()
}

if a.Before != nil {
beforeErr := a.Before(cCtx)
if beforeErr != nil {
Expand Down
21 changes: 21 additions & 0 deletions app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1309,6 +1309,27 @@ func TestApp_AfterFunc(t *testing.T) {
if counts.SubCommand != 1 {
t.Errorf("Subcommand not executed when expected")
}

/*
reset
*/
counts = &opCounts{}

// run with none args
err = app.Run([]string{"command"})

// should be the same error produced by the Before func
if err != nil {
t.Fatalf("Run error: %s", err)
}

if counts.After != 1 {
t.Errorf("After() not executed when expected")
}

if counts.SubCommand != 0 {
t.Errorf("Subcommand not executed when expected")
}
}

func TestAppNoHelpFlag(t *testing.T) {
Expand Down

0 comments on commit e3ee4fb

Please sign in to comment.