(new): rich message support
Golang lint / lint (pull_request) Successful in 1m20s
Golang lint / lint (push) Successful in 4m8s

(fix): runtime reliability
(tests): regression coverage
(doc): v1.1 release notes
This commit is contained in:
2026-08-12 16:34:44 +03:00
parent 48ddf66540
commit f03a081ed6
83 changed files with 6122 additions and 1925 deletions
+27
View File
@@ -95,3 +95,30 @@ func TestExecRunnersEmitObserverEvents(t *testing.T) {
t.Fatalf("unexpected runner error event: %#v", got)
}
}
func TestExecRunnersRecoversRunnerPanic(t *testing.T) {
observer := &runnerObserver{}
bot := &Bot[NoData]{
logger: sneklog.NewLogger(),
observer: observer,
runners: []Runner[NoData]{
NewRunner("panic", func(*Bot[NoData]) error {
panic("boom")
}).Async(false),
},
}
defer func() {
if err := bot.logger.Close(); err != nil {
t.Fatalf("Close returned error: %v", err)
}
}()
bot.ExecRunners(context.Background())
if len(observer.runners) != 1 || observer.runners[0].Err == nil {
t.Fatalf("expected recovered panic in runner event, got %#v", observer.runners)
}
if len(observer.errors) != 1 || observer.errors[0].Err == nil {
t.Fatalf("expected recovered panic in error event, got %#v", observer.errors)
}
}