From 2139003c0e8423b2b151e70e27622e293c75fde9 Mon Sep 17 00:00:00 2001 From: inhere Date: Mon, 25 Aug 2025 13:14:00 +0800 Subject: [PATCH] :bug: fix: fix custom events failed to execute. see issues #68 --- event.go | 6 ------ event_test.go | 3 ++- issues_test.go | 28 ++++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/event.go b/event.go index bcf1376..adaf880 100644 --- a/event.go +++ b/event.go @@ -207,12 +207,6 @@ func (e *BasicEvent) SetName(name string) *BasicEvent { return e } -// Clone new instance -func (e *BasicEvent) Clone() Event { - var cp = *e - return &cp -} - // SetData set data to the event func (e *BasicEvent) SetData(data M) Event { if data != nil { diff --git a/event_test.go b/event_test.go index dfdbb22..85682fd 100644 --- a/event_test.go +++ b/event_test.go @@ -118,5 +118,6 @@ func TestEvent(t *testing.T) { e1 := &event.BasicEvent{} e1.Set("k", "v") assert.Equal(t, "v", e1.Get("k")) - assert.NotEmpty(t, e1.Clone()) + // assert.NotEmpty(t, e1.Clone()) + assert.NotEmpty(t, e1.Context()) } diff --git a/issues_test.go b/issues_test.go index 2b017e8..1ab8385 100644 --- a/issues_test.go +++ b/issues_test.go @@ -162,6 +162,34 @@ func TestIssues_67(t *testing.T) { assert.Eq(t, total, counter) } +type MyEventI68 struct { + event.BasicEvent + customData string +} + +func (e *MyEventI68) CustomData() string { + return e.customData +} + +// https://github.com/gookit/event/issues/68 Custom events failed to execute +func TestIssues_68(t *testing.T) { + e := &MyEventI68{customData: "hello"} + e.SetName("e1") + defer event.Reset() + assert.NoErr(t, event.AddEvent(e)) + + // add listener + event.On("e1", event.ListenerFunc(func(e event.Event) error { + fmt.Printf("custom Data: %s\n", e.(*MyEventI68).CustomData()) + return nil + })) + + // trigger + err, e2 := event.Fire("e1", nil) + assert.NoErr(t, err) + assert.Eq(t, "e1", e2.Name()) +} + // https://github.com/gookit/event/issues/78 // It is expected to support event passing context, timeout control, and log trace passing such as trace ID information. // 希望事件支持通过上下文,超时控制和日志跟踪传递,例如跟踪ID信息。