From b290bc0f7e5b7be0c935e5289b3df7f9c77b5676 Mon Sep 17 00:00:00 2001 From: Elijah Duffy Date: Tue, 3 Jun 2025 15:10:35 -0700 Subject: [PATCH] add additional logging to Module.RequireLoaded --- module.go | 15 +++++++++++---- module_test.go | 5 +++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/module.go b/module.go index a440d2a..372051e 100644 --- a/module.go +++ b/module.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "log/slog" + "strings" ) // ErrModuleNotFound is returned when a module is not found in the lifecycle. @@ -62,13 +63,19 @@ func (s *Module) Loaded() bool { return s.loaded } -// RequireLoaded panics if the module is not loaded. -func (s *Module) RequireLoaded() { +// RequireLoaded panics if the module is not loaded. Any arguments are included +// in the panic message for additional context. +func (s *Module) RequireLoaded(msg ...string) { + ctx := "" + if len(msg) > 0 { + ctx = ": " + strings.Join(msg, ", ") + } + if s == nil { - panic("module is nil") + panic("module is nil" + ctx) } if !s.loaded { - panic(fmt.Sprintf("module %s not loaded", s.name)) + panic(fmt.Sprintf("module %s not loaded", s.name) + ctx) } } diff --git a/module_test.go b/module_test.go index a6428c4..860bbbc 100644 --- a/module_test.go +++ b/module_test.go @@ -53,7 +53,12 @@ func TestModule(t *testing.T) { assert.False(mod.Loaded(), "expected Loaded to return false initially") // Test RequireLoaded method + var mod2 *Module + assert.PanicsWithValue("module is nil", func() { mod2.RequireLoaded() }, "expected RequireLoaded to panic when module is nil") assert.Panics(func() { mod.RequireLoaded() }, "expected RequireLoaded to panic when module is not loaded") + assert.PanicsWithValue("module testModule not loaded: message", func() { + mod.RequireLoaded("message") + }, "expected RequireLoaded to panic with custom message when module is not loaded") // Test setting the module as loaded mod.loaded = true