Skip to content

Commit

Permalink
test: fix some event fire tests error
Browse files Browse the repository at this point in the history
  • Loading branch information
inhere committed Sep 4, 2022
1 parent 7206e9c commit 55c2a8b
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 61 deletions.
50 changes: 25 additions & 25 deletions base_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"testing"

"github.com/gookit/gcli/v3"
"github.com/gookit/gcli/v3/events"
"github.com/gookit/goutil/dump"
"github.com/gookit/goutil/testutil/assert"
)
Expand All @@ -25,32 +26,32 @@ func TestApp_Hooks_EvtAppInit(t *testing.T) {
buf.Reset()

cli := newNotExitApp()
cli.On(gcli.EvtAppInit, func(data ...any) bool {
buf.WriteString("trigger " + gcli.EvtAppInit)
cli.On(events.OnAppInit, func(ctx *gcli.HookCtx) bool {
buf.WriteString("trigger " + events.OnAppInit)
return false
})
cli.Add(simpleCmd)
assert.Eq(t, "trigger "+gcli.EvtAppInit, buf.String())
assert.Eq(t, "trigger "+events.OnAppInit, buf.String())

buf.Reset()
cli.On(gcli.EvtGOptionsParsed, func(data ...any) bool {
buf.WriteString("trigger " + gcli.EvtGOptionsParsed + ", args:" + fmt.Sprintf("%v", data[1]))
cli.On(events.OnGOptionsParsed, func(ctx *gcli.HookCtx) bool {
buf.WriteString("trigger " + ctx.Name() + ", args:" + fmt.Sprintf("%v", ctx.Strings("args")))
return false
})

cli.Run([]string{"simple"})
assert.Eq(t, "trigger "+gcli.EvtGOptionsParsed+", args:[simple]", buf.String())
assert.Eq(t, "trigger "+events.OnGOptionsParsed+", args:[simple]", buf.String())
}

func TestApp_Hooks_EvtCmdInit(t *testing.T) {
buf.Reset()

cli := newNotExitApp()
cli.On(gcli.EvtCmdInit, func(data ...any) (stop bool) {
buf.WriteString(gcli.EvtCmdInit)
cli.On(events.OnCmdInit, func(ctx *gcli.HookCtx) (stop bool) {
buf.WriteString(events.OnCmdInit)
buf.WriteString(":")

c := data[1].(*gcli.Command)
buf.WriteString(c.Name + ";")
buf.WriteString(ctx.Cmd.Name + ";")
return
})

Expand All @@ -70,17 +71,17 @@ func TestCommand_Hooks_EvtCmdOptParsed(t *testing.T) {
Desc: "desc",
Config: func(c *gcli.Command) {
buf.WriteString("run config;")
c.On(gcli.EvtCmdOptParsed, func(data ...any) (stop bool) {
dump.P(data[1])
buf.WriteString(gcli.EvtCmdOptParsed)
c.On(events.OnCmdOptParsed, func(ctx *gcli.HookCtx) (stop bool) {
dump.P(ctx.Strings("args"))
buf.WriteString(ctx.Name())
return
})
},
})
assert.Contains(t, buf.String(), "run config;")

cli.Run([]string{"test"})
assert.Contains(t, buf.String(), gcli.EvtCmdOptParsed)
assert.Contains(t, buf.String(), events.OnCmdOptParsed)
}

func TestApp_On_CmdNotFound(t *testing.T) {
Expand All @@ -90,9 +91,9 @@ func TestApp_On_CmdNotFound(t *testing.T) {
cli.Add(simpleCmd)

fmt.Println("--------- will print command tips ----------")
cli.On(gcli.EvtCmdNotFound, func(data ...any) bool {
buf.WriteString("trigger: " + gcli.EvtCmdNotFound)
buf.WriteString("; command: " + fmt.Sprint(data[1]))
cli.On(events.OnCmdNotFound, func(ctx *gcli.HookCtx) bool {
buf.WriteString("trigger: " + events.OnCmdNotFound)
buf.WriteString("; command: " + ctx.Str("name"))
return false
})

Expand All @@ -101,9 +102,9 @@ func TestApp_On_CmdNotFound(t *testing.T) {
buf.Reset()

fmt.Println("--------- dont print command tips ----------")
cli.On(gcli.EvtCmdNotFound, func(data ...any) bool {
buf.WriteString("trigger: " + gcli.EvtCmdNotFound)
buf.WriteString("; command: " + fmt.Sprint(data[1]))
cli.On(events.OnCmdNotFound, func(ctx *gcli.HookCtx) bool {
buf.WriteString("trigger: " + events.OnCmdNotFound)
buf.WriteString("; command: " + ctx.Str("name"))
return true
})

Expand All @@ -120,13 +121,12 @@ func TestApp_On_CmdNotFound_redirect(t *testing.T) {
cli.Add(simpleCmd)

fmt.Println("--------- redirect to run another command ----------")
cli.On(gcli.EvtCmdNotFound, func(data ...any) bool {
buf.WriteString("trigger:" + gcli.EvtCmdNotFound)
buf.WriteString(" - command:" + fmt.Sprint(data[1]))
cli.On(events.OnCmdNotFound, func(ctx *gcli.HookCtx) bool {
buf.WriteString("trigger:" + events.OnCmdNotFound)
buf.WriteString(" - command:" + ctx.Str("name"))
buf.WriteString("; redirect:simple - ")

app := data[0].(*gcli.App)
err := app.Exec("simple", nil)
err := ctx.App.Exec("simple", nil)
assert.NoErr(t, err)
buf.WriteString("value:" + simpleCmd.StrValue("simple"))
return true
Expand Down
13 changes: 12 additions & 1 deletion events/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,20 @@ const (

OnCmdInit = "cmd.init"

// OnCmdNotFound app or sub command not found
// OnCmdNotFound app or sub command not found.
//
// Data:
// {name: command-name}
OnCmdNotFound = "cmd.not.found"
// OnAppCmdNotFound app command not found
OnAppCmdNotFound = "app.cmd.not.found"
// OnCmdSubNotFound sub command not found
OnCmdSubNotFound = "cmd.sub.not.found"

// OnCmdOptParsed event
//
// Data:
// {args: command-args}
OnCmdOptParsed = "cmd.opts.parsed"

// OnCmdRunBefore cmd run
Expand All @@ -31,6 +38,10 @@ const (
OnCmdExecAfter = "cmd.exec.after"
OnCmdExecError = "cmd.exec.error"

// OnGOptionsParsed event
//
// Data:
// {args: remain-args}
OnGOptionsParsed = "gcli.gopts.parsed"
// OnStop = "stop"
)
35 changes: 0 additions & 35 deletions gcli.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,41 +38,6 @@ const (
VerbCrazy
)

// constants for hooks event, there are default allowed event names
const (
EvtAppInit = "app.init"

EvtAppPrepareAfter = "app.prepare.after"

EvtAppRunBefore = "app.run.before"
EvtAppRunAfter = "app.run.after"
EvtAppRunError = "app.run.error"

EvtCmdInit = "cmd.init"

// EvtCmdNotFound app or sub command not found
EvtCmdNotFound = "cmd.not.found"
// EvtAppCmdNotFound app command not found
EvtAppCmdNotFound = "app.cmd.not.found"
// EvtCmdSubNotFound sub command not found
EvtCmdSubNotFound = "cmd.sub.not.found"

EvtCmdOptParsed = "cmd.opts.parsed"

// EvtCmdRunBefore cmd run
EvtCmdRunBefore = "cmd.run.before"
EvtCmdRunAfter = "cmd.run.after"
EvtCmdRunError = "cmd.run.error"

// EvtCmdExecBefore cmd exec
EvtCmdExecBefore = "cmd.exec.before"
EvtCmdExecAfter = "cmd.exec.after"
EvtCmdExecError = "cmd.exec.error"

EvtGOptionsParsed = "gcli.gopts.parsed"
// EvtStop = "stop"
)

var (
// CLI create an default instance
CLI = newCmdLine()
Expand Down
36 changes: 36 additions & 0 deletions hooks.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,45 @@ package gcli
import (
"context"

"github.com/gookit/gcli/v3/events"
"github.com/gookit/goutil/maputil"
)

// constants for hooks event, there are default allowed event names
const (
EvtAppInit = events.OnAppInit

EvtAppPrepareAfter = events.OnAppPrepareAfter

EvtAppRunBefore = events.OnAppRunBefore
EvtAppRunAfter = events.OnAppRunAfter
EvtAppRunError = events.OnAppRunError

EvtCmdInit = events.OnCmdInit

// EvtCmdNotFound app or sub command not found
EvtCmdNotFound = events.OnCmdNotFound
// EvtAppCmdNotFound app command not found
EvtAppCmdNotFound = events.OnAppCmdNotFound
// EvtCmdSubNotFound sub command not found
EvtCmdSubNotFound = events.OnCmdSubNotFound

EvtCmdOptParsed = events.OnCmdOptParsed

// EvtCmdRunBefore cmd run
EvtCmdRunBefore = events.OnCmdRunBefore
EvtCmdRunAfter = events.OnCmdRunAfter
EvtCmdRunError = events.OnCmdRunError

// EvtCmdExecBefore cmd exec
EvtCmdExecBefore = events.OnCmdExecBefore
EvtCmdExecAfter = events.OnCmdExecAfter
EvtCmdExecError = events.OnCmdExecError

EvtGOptionsParsed = events.OnGOptionsParsed
// EvtStop = "stop"
)

/*************************************************************
* simple events manage
*************************************************************/
Expand Down

0 comments on commit 55c2a8b

Please sign in to comment.