From 208afbebfafd32c8b7c170666d8c862fcf155394 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 22 Mar 2024 11:23:38 -0400 Subject: [PATCH] packer: change mock set instantiation methods The former way mock plugin sets were created meant that no API version was set, and since it's private in the SDK, it cannot be set outside of the package itself. Fortunately, there is a NewSet function we can call, which initialises a set properly so we can fill-in the information later. However, because all the set maps were created in a `var` section, we cannot create the set with `NewSet`, and then fill the information in (outside of if there was a fluent interface, but this isn't the case here). We therefore opted to keep the variables defined and accessible globally, but gone through a `init` function to initialise their values for tests. --- packer/plugin_discover_test.go | 157 ++++++++++++++++----------------- 1 file changed, 78 insertions(+), 79 deletions(-) diff --git a/packer/plugin_discover_test.go b/packer/plugin_discover_test.go index 3eca150d8..de50136cd 100644 --- a/packer/plugin_discover_test.go +++ b/packer/plugin_discover_test.go @@ -490,91 +490,90 @@ func getFormattedInstalledPluginSuffix() string { } var ( - mockPlugins = map[string]pluginsdk.Set{ - "bird": { - Builders: map[string]packersdk.Builder{ - "feather": nil, - "guacamole": nil, - }, - }, - "chimney": { - PostProcessors: map[string]packersdk.PostProcessor{ - "smoke": nil, - }, - }, - "data": { - Datasources: map[string]packersdk.Datasource{ - "source": nil, - }, - }, + mockPlugins = map[string]pluginsdk.Set{} + mockInstalledPlugins = map[string]pluginsdk.Set{} + invalidInstalledPluginsMock = map[string]pluginsdk.Set{} + defaultNameMock = map[string]pluginsdk.Set{} + doubleDefaultMock = map[string]pluginsdk.Set{} + badDefaultNameMock = map[string]pluginsdk.Set{} +) + +func init() { + mockPluginsBird := pluginsdk.NewSet() + mockPluginsBird.Builders = map[string]packersdk.Builder{ + "feather": nil, + "guacamole": nil, } - mockInstalledPlugins = map[string]pluginsdk.Set{ - fmt.Sprintf("bird_%s", getFormattedInstalledPluginSuffix()): { - Builders: map[string]packersdk.Builder{ - "feather": nil, - "guacamole": nil, - }, - }, - fmt.Sprintf("chimney_%s", getFormattedInstalledPluginSuffix()): { - PostProcessors: map[string]packersdk.PostProcessor{ - "smoke": nil, - }, - }, - fmt.Sprintf("data_%s", getFormattedInstalledPluginSuffix()): { - Datasources: map[string]packersdk.Datasource{ - "source": nil, - }, - }, + mockPluginsChim := pluginsdk.NewSet() + mockPluginsChim.PostProcessors = map[string]packersdk.PostProcessor{ + "smoke": nil, + } + mockPluginsData := pluginsdk.NewSet() + mockPluginsData.Datasources = map[string]packersdk.Datasource{ + "source": nil, } + mockPlugins["bird"] = *mockPluginsBird + mockPlugins["chimney"] = *mockPluginsChim + mockPlugins["data"] = *mockPluginsData - invalidInstalledPluginsMock = map[string]pluginsdk.Set{ - "bird_v0.1.1_x5.0_wrong_architecture": { - Builders: map[string]packersdk.Builder{ - "feather": nil, - "guacamole": nil, - }, - }, - "chimney_cool_ranch": { - PostProcessors: map[string]packersdk.PostProcessor{ - "smoke": nil, - }, - }, - "data": { - Datasources: map[string]packersdk.Datasource{ - "source": nil, - }, - }, + mockInstalledPluginsBird := pluginsdk.NewSet() + mockInstalledPluginsBird.Builders = map[string]packersdk.Builder{ + "feather": nil, + "guacamole": nil, } - defaultNameMock = map[string]pluginsdk.Set{ - "foo": { - Builders: map[string]packersdk.Builder{ - "bar": nil, - "baz": nil, - pluginsdk.DEFAULT_NAME: nil, - }, - }, + mockInstalledPluginsChim := pluginsdk.NewSet() + mockInstalledPluginsChim.PostProcessors = map[string]packersdk.PostProcessor{ + "smoke": nil, + } + mockInstalledPluginsData := pluginsdk.NewSet() + mockInstalledPluginsData.Datasources = map[string]packersdk.Datasource{ + "source": nil, } + mockInstalledPlugins[fmt.Sprintf("bird_%s", getFormattedInstalledPluginSuffix())] = *mockInstalledPluginsBird + mockInstalledPlugins[fmt.Sprintf("chimney_%s", getFormattedInstalledPluginSuffix())] = *mockInstalledPluginsChim + mockInstalledPlugins[fmt.Sprintf("data_%s", getFormattedInstalledPluginSuffix())] = *mockInstalledPluginsData - doubleDefaultMock = map[string]pluginsdk.Set{ - "yolo": { - Builders: map[string]packersdk.Builder{ - "bar": nil, - "baz": nil, - pluginsdk.DEFAULT_NAME: nil, - }, - PostProcessors: map[string]packersdk.PostProcessor{ - pluginsdk.DEFAULT_NAME: nil, - }, - }, + invalidInstalledPluginsMockBird := pluginsdk.NewSet() + invalidInstalledPluginsMockBird.Builders = map[string]packersdk.Builder{ + "feather": nil, + "guacamole": nil, + } + invalidInstalledPluginsMockChimney := pluginsdk.NewSet() + invalidInstalledPluginsMockChimney.PostProcessors = map[string]packersdk.PostProcessor{ + "smoke": nil, + } + invalidInstalledPluginsMockData := pluginsdk.NewSet() + invalidInstalledPluginsMockData.Datasources = map[string]packersdk.Datasource{ + "source": nil, } + invalidInstalledPluginsMock["bird_v0.1.1_x5.0_wrong_architecture"] = *invalidInstalledPluginsMockBird + invalidInstalledPluginsMock["chimney_cool_ranch"] = *invalidInstalledPluginsMockChimney + invalidInstalledPluginsMock["data"] = *invalidInstalledPluginsMockData - badDefaultNameMock = map[string]pluginsdk.Set{ - "foo": { - Builders: map[string]packersdk.Builder{ - "bar": nil, - "baz": nil, - pluginsdk.DEFAULT_NAME: nil, - }, - }, + defaultNameFooSet := pluginsdk.NewSet() + defaultNameFooSet.Builders = map[string]packersdk.Builder{ + "bar": nil, + "baz": nil, + pluginsdk.DEFAULT_NAME: nil, } -) + defaultNameMock["foo"] = *defaultNameFooSet + + doubleDefaultYoloSet := pluginsdk.NewSet() + doubleDefaultYoloSet.Builders = map[string]packersdk.Builder{ + "bar": nil, + "baz": nil, + pluginsdk.DEFAULT_NAME: nil, + } + doubleDefaultYoloSet.PostProcessors = map[string]packersdk.PostProcessor{ + pluginsdk.DEFAULT_NAME: nil, + } + doubleDefaultMock["yolo"] = *doubleDefaultYoloSet + + badDefaultSet := pluginsdk.NewSet() + badDefaultSet.Builders = map[string]packersdk.Builder{ + "bar": nil, + "baz": nil, + pluginsdk.DEFAULT_NAME: nil, + } + badDefaultNameMock["foo"] = *badDefaultSet +}