From 692dcb1b9258cd810259fc002706a1b52f29d62e Mon Sep 17 00:00:00 2001 From: sophia Date: Mon, 2 May 2022 16:42:40 -0500 Subject: [PATCH] Allow testing plugins to have parent plugins --- internal/core/basis_test.go | 8 ++++---- internal/core/machine_test.go | 15 ++++++++------- internal/core/testing_basis.go | 23 ++++++++++++++++++++--- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/internal/core/basis_test.go b/internal/core/basis_test.go index 56350665d..edc7619a4 100644 --- a/internal/core/basis_test.go +++ b/internal/core/basis_test.go @@ -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), ) diff --git a/internal/core/machine_test.go b/internal/core/machine_test.go index 2db1518ff..b5ca2e7b6 100644 --- a/internal/core/machine_test.go +++ b/internal/core/machine_test.go @@ -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), ) diff --git a/internal/core/testing_basis.go b/internal/core/testing_basis.go index e2de22c32..f1052733b 100644 --- a/internal/core/testing_basis.go +++ b/internal/core/testing_basis.go @@ -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 }