add additional logging to Module.RequireLoaded
This commit is contained in:
15
module.go
15
module.go
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user