diff --git a/test/plugin_test.go b/test/plugin_test.go index c4b06bd31..c6c63c296 100644 --- a/test/plugin_test.go +++ b/test/plugin_test.go @@ -53,41 +53,20 @@ func PluginBinaryDir() string { return tempPluginBinaryPath.path } -type PluginBuildConfig struct { - version *version.Version -} - -func NewPluginBuildConfig(versionStr string) *PluginBuildConfig { - return &PluginBuildConfig{ - version.Must(version.NewVersion(versionStr)), - } -} - -// Version is the core version string of the test plugin. -// -// If the version isn't set, it'll default to 1.0.0 -func (pc PluginBuildConfig) Version() string { - return pc.version.Core().String() -} - -func (pc PluginBuildConfig) PreRelease() string { - return pc.version.Prerelease() -} - -func (pc PluginBuildConfig) Metadata() string { - return pc.version.Metadata() +func NewPluginBuildConfig(versionStr string) *version.Version { + return version.Must(version.NewVersion(versionStr)) } // LDFlags compiles the ldflags for the plugin to compile based on the information provided. -func (pc PluginBuildConfig) LDFlags() string { +func LDFlags(version *version.Version) string { pluginPackage := "github.com/hashicorp/packer-plugin-tester" - ldflagsArg := fmt.Sprintf("-X %s/version.Version=%s", pluginPackage, pc.Version()) - if pc.PreRelease() != "" { - ldflagsArg = fmt.Sprintf("%s -X %s/version.VersionPrerelease=%s", ldflagsArg, pluginPackage, pc.PreRelease()) + ldflagsArg := fmt.Sprintf("-X %s/version.Version=%s", pluginPackage, version.Core()) + if version.Prerelease() != "" { + ldflagsArg = fmt.Sprintf("%s -X %s/version.VersionPrerelease=%s", ldflagsArg, pluginPackage, version.Prerelease()) } - if pc.Metadata() != "" { - ldflagsArg = fmt.Sprintf("%s -X %s/version.VersionMetadata=%s", ldflagsArg, pluginPackage, pc.Metadata()) + if version.Metadata() != "" { + ldflagsArg = fmt.Sprintf("%s -X %s/version.VersionMetadata=%s", ldflagsArg, pluginPackage, version.Metadata()) } return ldflagsArg @@ -96,13 +75,13 @@ func (pc PluginBuildConfig) LDFlags() string { // BinaryName is the raw name of the plugin binary to produce // // It's expected to be in the "mini-plugin_[-][+]" format -func (pc PluginBuildConfig) BinaryName() string { - retStr := fmt.Sprintf("mini-plugin_%s", pc.Version()) - if pc.PreRelease() != "" { - retStr = fmt.Sprintf("%s-%s", retStr, pc.PreRelease()) +func BinaryName(version *version.Version) string { + retStr := fmt.Sprintf("mini-plugin_%s", version.Core()) + if version.Prerelease() != "" { + retStr = fmt.Sprintf("%s-%s", retStr, version.Prerelease()) } - if pc.Metadata() != "" { - retStr = fmt.Sprintf("%s+%s", retStr, pc.Metadata()) + if version.Metadata() != "" { + retStr = fmt.Sprintf("%s+%s", retStr, version.Metadata()) } return retStr @@ -120,8 +99,8 @@ func (pc PluginBuildConfig) BinaryName() string { // // The path to the plugin is returned, it won't be removed automatically // though, deletion is the caller's responsibility. -func BuildSimplePlugin(config *PluginBuildConfig, t *testing.T) { - t.Logf("Building plugin in version %v", config.version) +func BuildSimplePlugin(version *version.Version, t *testing.T) { + t.Logf("Building plugin in version %v", version) testDir, err := currentDir() if err != nil { @@ -129,15 +108,15 @@ func BuildSimplePlugin(config *PluginBuildConfig, t *testing.T) { } miniPluginDir := filepath.Join(testDir, "mini_plugin") - outBin := filepath.Join(PluginBinaryDir(), config.BinaryName()) + outBin := filepath.Join(PluginBinaryDir(), BinaryName(version)) - compileCommand := exec.Command("go", "build", "-C", miniPluginDir, "-o", outBin, "-ldflags", config.LDFlags(), ".") + compileCommand := exec.Command("go", "build", "-C", miniPluginDir, "-o", outBin, "-ldflags", LDFlags(version), ".") logs, err := compileCommand.CombinedOutput() if err != nil { t.Fatalf("failed to compile plugin binary: %s\ncompiler logs: %s", err, logs) } - StorePluginVersion(config.version.String(), outBin) + StorePluginVersion(version.String(), outBin) } // currentDir returns the directory in which the current file is located.