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  }