summaryrefslogtreecommitdiffstats
path: root/event/eventtest/capture.go
diff options
context:
space:
mode:
Diffstat (limited to 'event/eventtest/capture.go')
-rw-r--r--event/eventtest/capture.go31
1 files changed, 31 insertions, 0 deletions
diff --git a/event/eventtest/capture.go b/event/eventtest/capture.go
new file mode 100644
index 0000000..9510b3e
--- /dev/null
+++ b/event/eventtest/capture.go
@@ -0,0 +1,31 @@
+package eventtest
+
+import (
+ "context"
+
+ "golang.org/x/exp/event"
+)
+
+type CaptureHandler struct {
+ Got []event.Event
+}
+
+func (h *CaptureHandler) Event(ctx context.Context, ev *event.Event) context.Context {
+ h.Got = append(h.Got, *ev)
+ got := &h.Got[len(h.Got)-1]
+ got.Labels = make([]event.Label, len(ev.Labels))
+ copy(got.Labels, ev.Labels)
+ return ctx
+}
+
+func (h *CaptureHandler) Reset() {
+ if len(h.Got) > 0 {
+ h.Got = h.Got[:0]
+ }
+}
+
+func NewCapture() (context.Context, *CaptureHandler) {
+ h := &CaptureHandler{}
+ ctx := event.WithExporter(context.Background(), event.NewExporter(h, ExporterOptions()))
+ return ctx, h
+}