add Lifecycle.RequireUnique methods for load-once deps
This commit is contained in:
@@ -222,6 +222,14 @@ func TestLifecycle_Require(t *testing.T) {
|
||||
assert.Equal(t, lc.logger, mod.logger, "expected module logger to match lifecycle logger")
|
||||
}
|
||||
|
||||
func TestLifecycle_RequireUnique(t *testing.T) {
|
||||
lc := NewLifecycle()
|
||||
mod := NewModule("module1", ModuleOpts{})
|
||||
err := lc.RequireUnique(mod)
|
||||
assert.NoError(t, err, "expected RequireL to succeed")
|
||||
assert.Equal(t, lc.logger, mod.logger, "expected module logger to match lifecycle logger")
|
||||
}
|
||||
|
||||
func TestLifecycle_RequireL(t *testing.T) {
|
||||
cases := []struct {
|
||||
name string
|
||||
@@ -324,7 +332,56 @@ func TestLifecycle_RequireL(t *testing.T) {
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestLifecycle_RequireUniqueL(t *testing.T) {
|
||||
cases := []struct {
|
||||
name string
|
||||
modules []*Module
|
||||
existingModules []string
|
||||
expectedErr string
|
||||
}{
|
||||
{
|
||||
name: "no existing modules",
|
||||
modules: []*Module{
|
||||
NewModule("module1", ModuleOpts{}),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "module already set up",
|
||||
modules: []*Module{
|
||||
NewModule("module1", ModuleOpts{}),
|
||||
NewModule("module2", ModuleOpts{}),
|
||||
},
|
||||
existingModules: []string{"module1"},
|
||||
expectedErr: "module 'module1' is already set up, cannot require it again",
|
||||
},
|
||||
{
|
||||
name: "nil module",
|
||||
modules: []*Module{nil},
|
||||
expectedErr: "module is nil",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
lc := NewLifecycle()
|
||||
|
||||
// Fake existing modules
|
||||
for _, modName := range tc.existingModules {
|
||||
lc.setupTracker[modName] = 0 // Mark as set up
|
||||
}
|
||||
|
||||
err := lc.RequireUniqueL(lc.logger, tc.modules...)
|
||||
if tc.expectedErr == "" {
|
||||
assert.NoError(err, "expected RequireUniqueL to succeed")
|
||||
} else {
|
||||
assert.Error(err, "expected RequireUniqueL to fail")
|
||||
assert.Contains(err.Error(), tc.expectedErr, "expected error message to match")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestLifecycle_setupSingle(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user