Skip to content

Commit 55c2a8b

Browse files
committed
test: fix some event fire tests error
1 parent 7206e9c commit 55c2a8b

File tree

4 files changed

+73
-61
lines changed

4 files changed

+73
-61
lines changed

base_test.go

+25-25
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"testing"
77

88
"github.com/gookit/gcli/v3"
9+
"github.com/gookit/gcli/v3/events"
910
"github.com/gookit/goutil/dump"
1011
"github.com/gookit/goutil/testutil/assert"
1112
)
@@ -25,32 +26,32 @@ func TestApp_Hooks_EvtAppInit(t *testing.T) {
2526
buf.Reset()
2627

2728
cli := newNotExitApp()
28-
cli.On(gcli.EvtAppInit, func(data ...any) bool {
29-
buf.WriteString("trigger " + gcli.EvtAppInit)
29+
cli.On(events.OnAppInit, func(ctx *gcli.HookCtx) bool {
30+
buf.WriteString("trigger " + events.OnAppInit)
3031
return false
3132
})
3233
cli.Add(simpleCmd)
33-
assert.Eq(t, "trigger "+gcli.EvtAppInit, buf.String())
34+
assert.Eq(t, "trigger "+events.OnAppInit, buf.String())
3435

3536
buf.Reset()
36-
cli.On(gcli.EvtGOptionsParsed, func(data ...any) bool {
37-
buf.WriteString("trigger " + gcli.EvtGOptionsParsed + ", args:" + fmt.Sprintf("%v", data[1]))
37+
cli.On(events.OnGOptionsParsed, func(ctx *gcli.HookCtx) bool {
38+
buf.WriteString("trigger " + ctx.Name() + ", args:" + fmt.Sprintf("%v", ctx.Strings("args")))
3839
return false
3940
})
41+
4042
cli.Run([]string{"simple"})
41-
assert.Eq(t, "trigger "+gcli.EvtGOptionsParsed+", args:[simple]", buf.String())
43+
assert.Eq(t, "trigger "+events.OnGOptionsParsed+", args:[simple]", buf.String())
4244
}
4345

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

4749
cli := newNotExitApp()
48-
cli.On(gcli.EvtCmdInit, func(data ...any) (stop bool) {
49-
buf.WriteString(gcli.EvtCmdInit)
50+
cli.On(events.OnCmdInit, func(ctx *gcli.HookCtx) (stop bool) {
51+
buf.WriteString(events.OnCmdInit)
5052
buf.WriteString(":")
5153

52-
c := data[1].(*gcli.Command)
53-
buf.WriteString(c.Name + ";")
54+
buf.WriteString(ctx.Cmd.Name + ";")
5455
return
5556
})
5657

@@ -70,17 +71,17 @@ func TestCommand_Hooks_EvtCmdOptParsed(t *testing.T) {
7071
Desc: "desc",
7172
Config: func(c *gcli.Command) {
7273
buf.WriteString("run config;")
73-
c.On(gcli.EvtCmdOptParsed, func(data ...any) (stop bool) {
74-
dump.P(data[1])
75-
buf.WriteString(gcli.EvtCmdOptParsed)
74+
c.On(events.OnCmdOptParsed, func(ctx *gcli.HookCtx) (stop bool) {
75+
dump.P(ctx.Strings("args"))
76+
buf.WriteString(ctx.Name())
7677
return
7778
})
7879
},
7980
})
8081
assert.Contains(t, buf.String(), "run config;")
8182

8283
cli.Run([]string{"test"})
83-
assert.Contains(t, buf.String(), gcli.EvtCmdOptParsed)
84+
assert.Contains(t, buf.String(), events.OnCmdOptParsed)
8485
}
8586

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

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

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

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

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

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

128-
app := data[0].(*gcli.App)
129-
err := app.Exec("simple", nil)
129+
err := ctx.App.Exec("simple", nil)
130130
assert.NoErr(t, err)
131131
buf.WriteString("value:" + simpleCmd.StrValue("simple"))
132132
return true

events/events.go

+12-1
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,20 @@ const (
1212

1313
OnCmdInit = "cmd.init"
1414

15-
// OnCmdNotFound app or sub command not found
15+
// OnCmdNotFound app or sub command not found.
16+
//
17+
// Data:
18+
// {name: command-name}
1619
OnCmdNotFound = "cmd.not.found"
1720
// OnAppCmdNotFound app command not found
1821
OnAppCmdNotFound = "app.cmd.not.found"
1922
// OnCmdSubNotFound sub command not found
2023
OnCmdSubNotFound = "cmd.sub.not.found"
2124

25+
// OnCmdOptParsed event
26+
//
27+
// Data:
28+
// {args: command-args}
2229
OnCmdOptParsed = "cmd.opts.parsed"
2330

2431
// OnCmdRunBefore cmd run
@@ -31,6 +38,10 @@ const (
3138
OnCmdExecAfter = "cmd.exec.after"
3239
OnCmdExecError = "cmd.exec.error"
3340

41+
// OnGOptionsParsed event
42+
//
43+
// Data:
44+
// {args: remain-args}
3445
OnGOptionsParsed = "gcli.gopts.parsed"
3546
// OnStop = "stop"
3647
)

gcli.go

-35
Original file line numberDiff line numberDiff line change
@@ -38,41 +38,6 @@ const (
3838
VerbCrazy
3939
)
4040

41-
// constants for hooks event, there are default allowed event names
42-
const (
43-
EvtAppInit = "app.init"
44-
45-
EvtAppPrepareAfter = "app.prepare.after"
46-
47-
EvtAppRunBefore = "app.run.before"
48-
EvtAppRunAfter = "app.run.after"
49-
EvtAppRunError = "app.run.error"
50-
51-
EvtCmdInit = "cmd.init"
52-
53-
// EvtCmdNotFound app or sub command not found
54-
EvtCmdNotFound = "cmd.not.found"
55-
// EvtAppCmdNotFound app command not found
56-
EvtAppCmdNotFound = "app.cmd.not.found"
57-
// EvtCmdSubNotFound sub command not found
58-
EvtCmdSubNotFound = "cmd.sub.not.found"
59-
60-
EvtCmdOptParsed = "cmd.opts.parsed"
61-
62-
// EvtCmdRunBefore cmd run
63-
EvtCmdRunBefore = "cmd.run.before"
64-
EvtCmdRunAfter = "cmd.run.after"
65-
EvtCmdRunError = "cmd.run.error"
66-
67-
// EvtCmdExecBefore cmd exec
68-
EvtCmdExecBefore = "cmd.exec.before"
69-
EvtCmdExecAfter = "cmd.exec.after"
70-
EvtCmdExecError = "cmd.exec.error"
71-
72-
EvtGOptionsParsed = "gcli.gopts.parsed"
73-
// EvtStop = "stop"
74-
)
75-
7641
var (
7742
// CLI create an default instance
7843
CLI = newCmdLine()

hooks.go

+36
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,45 @@ package gcli
33
import (
44
"context"
55

6+
"github.com/gookit/gcli/v3/events"
67
"github.com/gookit/goutil/maputil"
78
)
89

10+
// constants for hooks event, there are default allowed event names
11+
const (
12+
EvtAppInit = events.OnAppInit
13+
14+
EvtAppPrepareAfter = events.OnAppPrepareAfter
15+
16+
EvtAppRunBefore = events.OnAppRunBefore
17+
EvtAppRunAfter = events.OnAppRunAfter
18+
EvtAppRunError = events.OnAppRunError
19+
20+
EvtCmdInit = events.OnCmdInit
21+
22+
// EvtCmdNotFound app or sub command not found
23+
EvtCmdNotFound = events.OnCmdNotFound
24+
// EvtAppCmdNotFound app command not found
25+
EvtAppCmdNotFound = events.OnAppCmdNotFound
26+
// EvtCmdSubNotFound sub command not found
27+
EvtCmdSubNotFound = events.OnCmdSubNotFound
28+
29+
EvtCmdOptParsed = events.OnCmdOptParsed
30+
31+
// EvtCmdRunBefore cmd run
32+
EvtCmdRunBefore = events.OnCmdRunBefore
33+
EvtCmdRunAfter = events.OnCmdRunAfter
34+
EvtCmdRunError = events.OnCmdRunError
35+
36+
// EvtCmdExecBefore cmd exec
37+
EvtCmdExecBefore = events.OnCmdExecBefore
38+
EvtCmdExecAfter = events.OnCmdExecAfter
39+
EvtCmdExecError = events.OnCmdExecError
40+
41+
EvtGOptionsParsed = events.OnGOptionsParsed
42+
// EvtStop = "stop"
43+
)
44+
945
/*************************************************************
1046
* simple events manage
1147
*************************************************************/

0 commit comments

Comments
 (0)