From 72ac39cb2bac5c176dd1277c9482334d0441286f Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 10 Jun 2026 23:59:21 +0300 Subject: Replace panics with returned errors in llm.RegisterProvider RegisterProvider now returns an error for an empty name, a nil factory, or a duplicate registration instead of panicking, making registration composable and testable without recover(). RegisterAllProviders caches the one-time registration error (sync.Once cannot return a value) and returns it to every caller. Updated all call sites: hexailsp, hexaicli and hexaiaction propagate the error with context; test TestMains fail fast via panic. Added unit tests covering empty name, nil factory, duplicate, success and idempotent re-registration. Co-Authored-By: Claude Opus 4.8 --- internal/hexailsp/run_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'internal/hexailsp/run_test.go') diff --git a/internal/hexailsp/run_test.go b/internal/hexailsp/run_test.go index fa4d535..b061f17 100644 --- a/internal/hexailsp/run_test.go +++ b/internal/hexailsp/run_test.go @@ -18,7 +18,9 @@ import ( // TestMain registers all built-in LLM providers before tests run, mirroring // the explicit registration done in production binaries via RunWithConfig. func TestMain(m *testing.M) { - llm.RegisterAllProviders() + if err := llm.RegisterAllProviders(); err != nil { + panic(err) + } os.Exit(m.Run()) } -- cgit v1.2.3