Allow testing plugins to have parent plugins
This commit is contained in:
parent
d135f24f49
commit
692dcb1b92
@ -10,22 +10,22 @@ import (
|
||||
|
||||
func TestBasisPlugins(t *testing.T) {
|
||||
myguest := plugin.TestPlugin(t,
|
||||
BuildTestGuestPlugin("myguest"),
|
||||
BuildTestGuestPlugin("myguest", ""),
|
||||
plugin.WithPluginName("myguest"),
|
||||
plugin.WithPluginTypes(component.GuestType),
|
||||
)
|
||||
myguesttwo := plugin.TestPlugin(t,
|
||||
BuildTestGuestPlugin("myguesttwo"),
|
||||
BuildTestGuestPlugin("myguesttwo", ""),
|
||||
plugin.WithPluginName("myguesttwo"),
|
||||
plugin.WithPluginTypes(component.GuestType),
|
||||
)
|
||||
myhost := plugin.TestPlugin(t,
|
||||
BuildTestHostPlugin("myhost"),
|
||||
BuildTestHostPlugin("myhost", ""),
|
||||
plugin.WithPluginName("myhost"),
|
||||
plugin.WithPluginTypes(component.HostType),
|
||||
)
|
||||
mysf := plugin.TestPlugin(t,
|
||||
BuildTestSyncedFolderPlugin(),
|
||||
BuildTestSyncedFolderPlugin(""),
|
||||
plugin.WithPluginName("mysf"),
|
||||
plugin.WithPluginTypes(component.SyncedFolderType),
|
||||
)
|
||||
|
||||
@ -130,7 +130,7 @@ func TestMachineConfigedGuest(t *testing.T) {
|
||||
|
||||
pluginManager := plugin.TestManager(t,
|
||||
plugin.TestPlugin(t,
|
||||
BuildTestGuestPlugin("myguest"),
|
||||
BuildTestGuestPlugin("myguest", ""),
|
||||
plugin.WithPluginName("myguest"),
|
||||
plugin.WithPluginTypes(component.GuestType),
|
||||
),
|
||||
@ -157,15 +157,16 @@ func TestMachineConfigedGuest(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestMachineNoConfigGuest(t *testing.T) {
|
||||
guestMock := BuildTestGuestPlugin("myguest")
|
||||
guestMock := BuildTestGuestPlugin("myguest", "")
|
||||
guestMock.On("Detect", mock.AnythingOfType("*core.Machine")).Return(true, nil)
|
||||
guestMock.On("Parent").Return("", nil)
|
||||
detectingPlugin := plugin.TestPlugin(t,
|
||||
guestMock,
|
||||
plugin.WithPluginName("myguest"),
|
||||
plugin.WithPluginTypes(component.GuestType),
|
||||
)
|
||||
|
||||
notGuestMock := BuildTestGuestPlugin("mynondetectingguest")
|
||||
notGuestMock := BuildTestGuestPlugin("mynondetectingguest", "")
|
||||
notGuestMock.On("Detect", mock.AnythingOfType("*core.Machine")).Return(false, nil)
|
||||
nonDetectingPlugin := plugin.TestPlugin(t,
|
||||
notGuestMock,
|
||||
@ -173,9 +174,9 @@ func TestMachineNoConfigGuest(t *testing.T) {
|
||||
plugin.WithPluginTypes(component.GuestType),
|
||||
)
|
||||
|
||||
guestChildMock := BuildTestGuestPlugin("myguest-child")
|
||||
guestChildMock := BuildTestGuestPlugin("myguest-child", "myguest")
|
||||
guestChildMock.On("Detect", mock.AnythingOfType("*core.Machine")).Return(true, nil)
|
||||
guestChildMock.On("Parent").Return("myguest", nil)
|
||||
guestChildMock.SetParentComponent(guestMock)
|
||||
detectingChildPlugin := plugin.TestPlugin(t,
|
||||
guestChildMock,
|
||||
plugin.WithPluginName("myguest-child"),
|
||||
@ -190,7 +191,7 @@ func TestMachineNoConfigGuest(t *testing.T) {
|
||||
|
||||
tests := []test{
|
||||
{plugins: []*plugin.Plugin{detectingPlugin}, errors: false, expectedPluginName: "myguest"},
|
||||
{plugins: []*plugin.Plugin{detectingChildPlugin}, errors: false, expectedPluginName: "myguest-child"},
|
||||
{plugins: []*plugin.Plugin{detectingChildPlugin}, errors: true, expectedPluginName: "myguest-child"},
|
||||
{plugins: []*plugin.Plugin{detectingChildPlugin, detectingPlugin}, errors: false, expectedPluginName: "myguest-child"},
|
||||
{plugins: []*plugin.Plugin{detectingPlugin, nonDetectingPlugin}, errors: false, expectedPluginName: "myguest"},
|
||||
{plugins: []*plugin.Plugin{nonDetectingPlugin}, errors: true},
|
||||
@ -258,7 +259,7 @@ func TestMachineSetState(t *testing.T) {
|
||||
|
||||
func syncedFolderPlugin(t *testing.T, name string) *plugin.Plugin {
|
||||
return plugin.TestPlugin(t,
|
||||
BuildTestSyncedFolderPlugin(),
|
||||
BuildTestSyncedFolderPlugin(""),
|
||||
plugin.WithPluginName(name),
|
||||
plugin.WithPluginTypes(component.SyncedFolderType),
|
||||
)
|
||||
|
||||
@ -16,44 +16,61 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
type PluginWithParent struct {
|
||||
parentPlugin interface{}
|
||||
}
|
||||
|
||||
func (p *PluginWithParent) GetParentComponent() interface{} {
|
||||
return p.parentPlugin
|
||||
}
|
||||
func (p *PluginWithParent) SetParentComponent(in interface{}) {
|
||||
p.parentPlugin = in
|
||||
}
|
||||
|
||||
type TestGuestPlugin struct {
|
||||
PluginWithParent
|
||||
plugin.TestPluginWithFakeBroker
|
||||
coremocks.Guest
|
||||
}
|
||||
|
||||
type TestHostPlugin struct {
|
||||
PluginWithParent
|
||||
plugin.TestPluginWithFakeBroker
|
||||
coremocks.Host
|
||||
}
|
||||
|
||||
type TestSyncedFolderPlugin struct {
|
||||
PluginWithParent
|
||||
plugin.TestPluginWithFakeBroker
|
||||
coremocks.SyncedFolder
|
||||
}
|
||||
|
||||
func BuildTestGuestPlugin(name string) *TestGuestPlugin {
|
||||
func BuildTestGuestPlugin(name string, parent string) *TestGuestPlugin {
|
||||
p := &TestGuestPlugin{}
|
||||
p.On("SetPluginName", mock.AnythingOfType("string")).Return(nil)
|
||||
p.On("Seed", mock.AnythingOfType("*core.Seeds")).Return(nil)
|
||||
p.On("Seeds").Return(core.NewSeeds(), nil)
|
||||
p.On("PluginName").Return(name, nil)
|
||||
p.On("Parent").Return(parent, nil)
|
||||
return p
|
||||
}
|
||||
|
||||
func BuildTestHostPlugin(name string) *TestHostPlugin {
|
||||
func BuildTestHostPlugin(name string, parent string) *TestHostPlugin {
|
||||
p := &TestHostPlugin{}
|
||||
p.On("SetPluginName", mock.AnythingOfType("string")).Return(nil)
|
||||
p.On("Seed", mock.AnythingOfType("*core.Seeds")).Return(nil)
|
||||
p.On("Seeds").Return(core.NewSeeds(), nil)
|
||||
p.On("PluginName").Return(name, nil)
|
||||
p.On("Parent").Return(parent, nil)
|
||||
return p
|
||||
}
|
||||
|
||||
func BuildTestSyncedFolderPlugin() *TestSyncedFolderPlugin {
|
||||
func BuildTestSyncedFolderPlugin(parent string) *TestSyncedFolderPlugin {
|
||||
p := &TestSyncedFolderPlugin{}
|
||||
p.On("SetPluginName", mock.AnythingOfType("string")).Return(nil)
|
||||
p.On("Seed", mock.AnythingOfType("*core.Seeds")).Return(nil)
|
||||
p.On("Seeds").Return(core.NewSeeds(), nil)
|
||||
p.On("Parent").Return(parent, nil)
|
||||
return p
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user