github.com/hashicorp/packer@v1.14.3/packer_test/plugin_tests/install_test.go (about) 1 package plugin_tests 2 3 import "github.com/hashicorp/packer/packer_test/common/check" 4 5 func (ts *PackerPluginTestSuite) TestInstallPluginWithMetadata() { 6 tempPluginDir := ts.MakePluginDir() 7 defer tempPluginDir.Cleanup() 8 9 ts.Run("install plugin with metadata in version", func() { 10 ts.PackerCommand().UsePluginDir(tempPluginDir). 11 SetArgs("plugins", "install", "--path", ts.GetPluginPath(ts.T(), "1.0.0+metadata"), "github.com/hashicorp/tester"). 12 Assert(check.MustSucceed(), check.Grep("Successfully installed plugin", check.GrepStdout)) 13 }) 14 15 ts.Run("metadata plugin installed must not have metadata in its path", func() { 16 ts.PackerCommand().UsePluginDir(tempPluginDir). 17 SetArgs("plugins", "installed"). 18 Assert(check.MustSucceed(), check.Grep("packer-plugin-tester_v1.0.0[^+]", check.GrepStdout)) 19 }) 20 21 ts.Run("plugin with metadata should work with validate", func() { 22 ts.PackerCommand().UsePluginDir(tempPluginDir). 23 SetArgs("validate", "./templates/simple.pkr.hcl"). 24 Assert(check.MustSucceed(), check.Grep("packer-plugin-tester_v1.0.0[^+][^\\n]+plugin:", check.GrepStderr)) 25 }) 26 27 ts.Run("plugin with metadata should work with build", func() { 28 ts.PackerCommand().UsePluginDir(tempPluginDir). 29 SetArgs("build", "./templates/simple.pkr.hcl"). 30 Assert(check.MustSucceed(), check.Grep("packer-plugin-tester_v1.0.0[^+][^\\n]+plugin:", check.GrepStderr)) 31 }) 32 } 33 34 func (ts *PackerPluginTestSuite) TestInstallPluginWithPath() { 35 tempPluginDir := ts.MakePluginDir() 36 defer tempPluginDir.Cleanup() 37 38 ts.Run("install plugin with pre-release only", func() { 39 ts.PackerCommand().UsePluginDir(tempPluginDir). 40 SetArgs("plugins", "install", "--path", ts.GetPluginPath(ts.T(), "1.0.0-dev"), "github.com/hashicorp/tester"). 41 Assert(check.MustSucceed(), check.Grep("Successfully installed plugin", check.GrepStdout)) 42 }) 43 44 ts.Run("install same plugin with pre-release + metadata", func() { 45 ts.PackerCommand().UsePluginDir(tempPluginDir). 46 SetArgs("plugins", "install", "--path", ts.GetPluginPath(ts.T(), "1.0.0-dev+metadata"), "github.com/hashicorp/tester"). 47 Assert(check.MustSucceed(), check.Grep("Successfully installed plugin", check.GrepStdout)) 48 }) 49 50 ts.Run("list plugins, should only report one plugin", func() { 51 ts.PackerCommand().UsePluginDir(tempPluginDir). 52 SetArgs("plugins", "installed"). 53 Assert(check.MustSucceed(), 54 check.Grep("plugin-tester_v1.0.0-dev[^+]", check.GrepStdout), 55 check.GrepInverted("plugin-tester_v1.0.0-dev\\+", check.GrepStdout), 56 check.LineCountCheck(1)) 57 }) 58 } 59 60 func (ts *PackerPluginTestSuite) TestInstallPluginPrerelease() { 61 pluginPath := ts.GetPluginPath(ts.T(), "1.0.1-alpha1") 62 63 pluginDir := ts.MakePluginDir() 64 defer pluginDir.Cleanup() 65 66 ts.Run("try install plugin with alpha1 prerelease - should fail", func() { 67 ts.PackerCommand().UsePluginDir(pluginDir). 68 SetArgs("plugins", "install", "--path", pluginPath, "github.com/hashicorp/tester"). 69 Assert(check.MustFail(), check.Grep("Packer can only install plugin releases with this command", check.GrepStdout)) 70 }) 71 } 72 73 func (ts *PackerPluginTestSuite) TestRemoteInstallWithPluginsInstall() { 74 ts.SkipNoAcc() 75 76 pluginPath := ts.MakePluginDir() 77 defer pluginPath.Cleanup() 78 79 ts.Run("install latest version of a remote plugin with packer plugins install", func() { 80 ts.PackerCommand().UsePluginDir(pluginPath). 81 SetArgs("plugins", "install", "github.com/hashicorp/hashicups"). 82 Assert(check.MustSucceed()) 83 }) 84 } 85 86 func (ts *PackerPluginTestSuite) TestRemoteInstallOfPreReleasePlugin() { 87 ts.SkipNoAcc() 88 89 pluginPath := ts.MakePluginDir() 90 defer pluginPath.Cleanup() 91 92 ts.Run("try to init with a pre-release constraint - should fail", func() { 93 ts.PackerCommand().UsePluginDir(pluginPath). 94 SetArgs("init", "templates/pre-release_constraint.pkr.hcl"). 95 Assert(check.MustFail(), 96 check.Grep("Invalid version constraint", check.GrepStdout), 97 check.Grep("Unsupported prerelease for constraint", check.GrepStdout)) 98 }) 99 100 ts.Run("try to plugins install with a pre-release version - should fail", func() { 101 ts.PackerCommand().UsePluginDir(pluginPath). 102 SetArgs("plugin", "install", "github.com/hashicorp/hashicups", "1.0.2-dev"). 103 Assert(check.MustFail(), 104 check.Grep("Unsupported prerelease for constraint", check.GrepStdout)) 105 }) 106 }