add additional logging to Module.RequireLoaded

This commit is contained in:
Elijah Duffy
2025-06-03 15:10:35 -07:00
parent 08ef7a5c51
commit b290bc0f7e
2 changed files with 16 additions and 4 deletions

View File

@@ -4,6 +4,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"log/slog" "log/slog"
"strings"
) )
// ErrModuleNotFound is returned when a module is not found in the lifecycle. // ErrModuleNotFound is returned when a module is not found in the lifecycle.
@@ -62,13 +63,19 @@ func (s *Module) Loaded() bool {
return s.loaded return s.loaded
} }
// RequireLoaded panics if the module is not loaded. // RequireLoaded panics if the module is not loaded. Any arguments are included
func (s *Module) RequireLoaded() { // 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 { if s == nil {
panic("module is nil") panic("module is nil" + ctx)
} }
if !s.loaded { if !s.loaded {
panic(fmt.Sprintf("module %s not loaded", s.name)) panic(fmt.Sprintf("module %s not loaded", s.name) + ctx)
} }
} }

View File

@@ -53,7 +53,12 @@ func TestModule(t *testing.T) {
assert.False(mod.Loaded(), "expected Loaded to return false initially") assert.False(mod.Loaded(), "expected Loaded to return false initially")
// Test RequireLoaded method // 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.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 // Test setting the module as loaded
mod.loaded = true mod.loaded = true