From 995b2324645fe3e5718df50c913bc0a63791f3bb Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 7 May 2024 09:53:35 -0400 Subject: [PATCH] test: make must succeed/fail gadgets functions For consistency with other gadgets like Grep, we make the MustSucceed and MustFail gadgets private with a function to return an instance of it. --- test/gadgets_test.go | 16 ++++++++++++---- test/install_test.go | 8 ++++---- test/loading_test.go | 8 ++++---- test/plugin_test.go | 2 +- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/test/gadgets_test.go b/test/gadgets_test.go index eac3bc836..e21882805 100644 --- a/test/gadgets_test.go +++ b/test/gadgets_test.go @@ -54,15 +54,23 @@ func InferName(c Checker) string { return retVals[0].String() } -type MustSucceed struct{} +func MustSucceed() Checker { + return mustSucceed{} +} + +type mustSucceed struct{} -func (_ MustSucceed) Check(stdout, stderr string, err error) error { +func (_ mustSucceed) Check(stdout, stderr string, err error) error { return err } -type MustFail struct{} +func MustFail() Checker { + return mustFail{} +} + +type mustFail struct{} -func (_ MustFail) Check(stdout, stderr string, err error) error { +func (_ mustFail) Check(stdout, stderr string, err error) error { if err == nil { return fmt.Errorf("unexpected command success") } diff --git a/test/install_test.go b/test/install_test.go index 65810a606..02c11882a 100644 --- a/test/install_test.go +++ b/test/install_test.go @@ -7,19 +7,19 @@ func (ts *PackerTestSuite) TestInstallPluginWithMetadata() { ts.Run("metadata plugin installed must not have metadata in its path", func() { ts.PackerCommand().UsePluginDir(tempPluginDir). SetArgs("plugins", "installed"). - Assert(ts.T(), MustSucceed{}, Grep("packer-plugin-tester_v1.0.0[^+]", grepStdout)) + Assert(ts.T(), MustSucceed(), Grep("packer-plugin-tester_v1.0.0[^+]", grepStdout)) }) ts.Run("plugin with metadata should work with validate", func() { ts.PackerCommand().UsePluginDir(tempPluginDir). SetArgs("validate", "./templates/simple.pkr.hcl"). - Assert(ts.T(), MustSucceed{}, Grep("packer-plugin-tester_v1.0.0[^+][^\\n]+plugin:", grepStderr)) + Assert(ts.T(), MustSucceed(), Grep("packer-plugin-tester_v1.0.0[^+][^\\n]+plugin:", grepStderr)) }) ts.Run("plugin with metadata should work with build", func() { ts.PackerCommand().UsePluginDir(tempPluginDir). SetArgs("build", "./templates/simple.pkr.hcl"). - Assert(ts.T(), MustSucceed{}, Grep("packer-plugin-tester_v1.0.0[^+][^\\n]+plugin:", grepStderr)) + Assert(ts.T(), MustSucceed(), Grep("packer-plugin-tester_v1.0.0[^+][^\\n]+plugin:", grepStderr)) }) } @@ -32,6 +32,6 @@ func (ts *PackerTestSuite) TestInstallPluginPrerelease() { ts.Run("try install plugin with alpha1 prerelease - should fail", func() { ts.PackerCommand().UsePluginDir(pluginDir). SetArgs("plugins", "install", "--path", pluginPath, "github.com/hashicorp/tester"). - Assert(ts.T(), MustFail{}, Grep("Packer can only install plugin releases with this command", grepStdout)) + Assert(ts.T(), MustFail(), Grep("Packer can only install plugin releases with this command", grepStdout)) }) } diff --git a/test/loading_test.go b/test/loading_test.go index 69682e31b..a5715317c 100644 --- a/test/loading_test.go +++ b/test/loading_test.go @@ -43,7 +43,7 @@ func (ts *PackerTestSuite) TestLoadingOrder() { ts.PackerCommand(). SetArgs(command, tt.templatePath). UsePluginDir(pluginDir). - Assert(t, MustSucceed{}, Grep(tt.grepStr)) + Assert(t, MustSucceed(), Grep(tt.grepStr)) }) } } @@ -60,7 +60,7 @@ func (ts *PackerTestSuite) TestLoadWithLegacyPluginName() { ts.Run("multiple plugins installed: one with no version in path, one with qualified name. Should pick-up the qualified one only.", func() { ts.PackerCommand().UsePluginDir(pluginDir). SetArgs("build", "templates/simple.pkr.hcl"). - Assert(ts.T(), MustSucceed{}, Grep("packer-plugin-tester_v1\\.0\\.0[^\\n]+ plugin:", grepStderr)) + Assert(ts.T(), MustSucceed(), Grep("packer-plugin-tester_v1\\.0\\.0[^\\n]+ plugin:", grepStderr)) }) } @@ -77,7 +77,7 @@ func (ts *PackerTestSuite) TestLoadWithSHAMismatches() { ts.PackerCommand().UsePluginDir(pluginDir). SetArgs("plugins", "installed"). - Assert(ts.T(), MustSucceed{}, + Assert(ts.T(), MustSucceed(), Grep("packer-plugin-tester_v1\\.0\\.9[^\\n]+", grepStdout), Grep("packer-plugin-tester_v1.0.10", grepStdout, grepInvert), Grep("v1.0.10[^\\n]+ignoring possibly unsafe binary", grepStderr)) @@ -100,7 +100,7 @@ func (ts *PackerTestSuite) TestLoadWithSHAMismatches() { ts.PackerCommand().UsePluginDir(pluginDir). SetArgs("plugins", "installed"). - Assert(ts.T(), MustSucceed{}, + Assert(ts.T(), MustSucceed(), Grep("packer-plugin-tester_v1\\.0\\.9[^\\n]+", grepStdout), Grep("packer-plugin-tester_v1.0.10", grepInvert, grepStdout), Grep("v1.0.10[^\\n]+ignoring possibly unsafe binary", grepStderr), diff --git a/test/plugin_test.go b/test/plugin_test.go index 744a91afb..d003dd2e9 100644 --- a/test/plugin_test.go +++ b/test/plugin_test.go @@ -193,7 +193,7 @@ func (ts *PackerTestSuite) MakePluginDir(pluginVersions ...string) (pluginTempDi err = fmt.Errorf("failed to get path to version %q, was it compiled?", pluginVersion) } cmd := ts.PackerCommand().SetArgs("plugins", "install", "--path", path, "github.com/hashicorp/tester").AddEnv("PACKER_PLUGIN_PATH", pluginTempDir) - cmd.Assert(t, MustSucceed{}) + cmd.Assert(t, MustSucceed()) out, stderr, cmdErr := cmd.Run() if cmdErr != nil { err = fmt.Errorf("failed to install tester plugin version %q: %s\nCommand stdout: %s\nCommand stderr: %s", pluginVersion, err, out, stderr)