github.com/hashicorp/packer@v1.14.3/packer_test/provisioner_tests/shell/provisioner_test.go (about) 1 //go:build linux 2 3 package plugin_tests 4 5 import ( 6 "os" 7 8 "github.com/hashicorp/packer/packer_test/common/check" 9 ) 10 11 func (ts *PackerShellProvisionerTestSuite) TestNoShebangInScript() { 12 dir := ts.MakePluginDir() 13 defer dir.Cleanup() 14 15 ts.PackerCommand().UsePluginDir(dir). 16 SetArgs("plugins", "install", "github.com/hashicorp/docker"). 17 Assert(check.MustSucceed()) 18 19 ts.PackerCommand().UsePluginDir(dir). 20 AddEnv("HOME", os.Getenv("HOME")). 21 AddEnv("PATH", os.Getenv("PATH")). 22 SetArgs("build", "templates/no_shebang_in_script.pkr.hcl"). 23 Assert(check.MustSucceed()) 24 } 25 26 func (ts *PackerShellProvisionerTestSuite) TestShebangInInlineScript() { 27 dir := ts.MakePluginDir() 28 defer dir.Cleanup() 29 30 ts.PackerCommand().UsePluginDir(dir). 31 SetArgs("plugins", "install", "github.com/hashicorp/docker"). 32 Assert(check.MustSucceed()) 33 34 ts.PackerCommand().UsePluginDir(dir). 35 AddEnv("HOME", os.Getenv("HOME")). 36 AddEnv("PATH", os.Getenv("PATH")). 37 SetArgs("build", "templates/shebang_in_inline.pkr.hcl"). 38 Assert(check.MustSucceed()) 39 } 40 41 func (ts *PackerShellProvisionerTestSuite) TestShebangAsOption() { 42 dir := ts.MakePluginDir() 43 defer dir.Cleanup() 44 45 ts.PackerCommand().UsePluginDir(dir). 46 SetArgs("plugins", "install", "github.com/hashicorp/docker"). 47 Assert(check.MustSucceed()) 48 49 ts.PackerCommand().UsePluginDir(dir). 50 AddEnv("HOME", os.Getenv("HOME")). 51 AddEnv("PATH", os.Getenv("PATH")). 52 SetArgs("build", "templates/shebang_as_option.pkr.hcl"). 53 Assert(check.MustSucceed()) 54 } 55 56 func (ts *PackerShellProvisionerTestSuite) TestShebangAsOptionNotInline() { 57 dir := ts.MakePluginDir() 58 defer dir.Cleanup() 59 60 ts.PackerCommand().UsePluginDir(dir). 61 SetArgs("plugins", "install", "github.com/hashicorp/docker"). 62 Assert(check.MustSucceed()) 63 64 ts.PackerCommand().UsePluginDir(dir). 65 AddEnv("HOME", os.Getenv("HOME")). 66 AddEnv("PATH", os.Getenv("PATH")). 67 SetArgs("build", "templates/no_shebang_inline_but_as_option.pkr.hcl"). 68 Assert(check.MustSucceed()) 69 } 70 71 func (ts *PackerShellProvisionerTestSuite) TestInvalidShebangAsOption() { 72 dir := ts.MakePluginDir() 73 defer dir.Cleanup() 74 75 ts.PackerCommand().UsePluginDir(dir). 76 SetArgs("plugins", "install", "github.com/hashicorp/docker"). 77 Assert(check.MustSucceed()) 78 79 ts.PackerCommand().UsePluginDir(dir). 80 AddEnv("HOME", os.Getenv("HOME")). 81 AddEnv("PATH", os.Getenv("PATH")). 82 SetArgs("build", "templates/shebang_as_option_invalid.pkr.hcl"). 83 Assert(check.MustFail()) 84 } 85 86 func (ts *PackerShellProvisionerTestSuite) TestEmptyInlineCommands() { 87 dir := ts.MakePluginDir() 88 defer dir.Cleanup() 89 90 ts.PackerCommand().UsePluginDir(dir). 91 SetArgs("plugins", "install", "github.com/hashicorp/docker"). 92 Assert(check.MustSucceed()) 93 94 ts.PackerCommand().UsePluginDir(dir). 95 AddEnv("HOME", os.Getenv("HOME")). 96 AddEnv("PATH", os.Getenv("PATH")). 97 SetArgs("build", "templates/empty_inline_list.pkr.hcl"). 98 Assert(check.MustFail()) 99 }