mirror of https://github.com/hashicorp/packer
parent
dfa0a4e8bb
commit
cb110b263b
@ -0,0 +1,67 @@
|
||||
package plugin_tests
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/hashicorp/packer/packer_test/common/check"
|
||||
)
|
||||
|
||||
func (ts *PackerShellProvisionerTestSuite) TestNoShebangInScript() {
|
||||
dir := ts.MakePluginDir()
|
||||
defer dir.Cleanup()
|
||||
|
||||
ts.PackerCommand().UsePluginDir(dir).
|
||||
SetArgs("plugins", "install", "github.com/hashicorp/docker").
|
||||
Assert(check.MustSucceed())
|
||||
|
||||
ts.PackerCommand().UsePluginDir(dir).
|
||||
AddEnv("HOME", os.Getenv("HOME")).
|
||||
AddEnv("PATH", os.Getenv("PATH")).
|
||||
SetArgs("build", "templates/no_shebang_in_script.pkr.hcl").
|
||||
Assert(check.MustSucceed())
|
||||
}
|
||||
|
||||
func (ts *PackerShellProvisionerTestSuite) TestShebangInInlineScript() {
|
||||
dir := ts.MakePluginDir()
|
||||
defer dir.Cleanup()
|
||||
|
||||
ts.PackerCommand().UsePluginDir(dir).
|
||||
SetArgs("plugins", "install", "github.com/hashicorp/docker").
|
||||
Assert(check.MustSucceed())
|
||||
|
||||
ts.PackerCommand().UsePluginDir(dir).
|
||||
AddEnv("HOME", os.Getenv("HOME")).
|
||||
AddEnv("PATH", os.Getenv("PATH")).
|
||||
SetArgs("build", "templates/shebang_in_inline.pkr.hcl").
|
||||
Assert(check.MustSucceed())
|
||||
}
|
||||
|
||||
func (ts *PackerShellProvisionerTestSuite) TestShebangAsOption() {
|
||||
dir := ts.MakePluginDir()
|
||||
defer dir.Cleanup()
|
||||
|
||||
ts.PackerCommand().UsePluginDir(dir).
|
||||
SetArgs("plugins", "install", "github.com/hashicorp/docker").
|
||||
Assert(check.MustSucceed())
|
||||
|
||||
ts.PackerCommand().UsePluginDir(dir).
|
||||
AddEnv("HOME", os.Getenv("HOME")).
|
||||
AddEnv("PATH", os.Getenv("PATH")).
|
||||
SetArgs("build", "templates/shebang_as_option.pkr.hcl").
|
||||
Assert(check.MustSucceed())
|
||||
}
|
||||
|
||||
func (ts *PackerShellProvisionerTestSuite) TestShebangAsOptionNotInline() {
|
||||
dir := ts.MakePluginDir()
|
||||
defer dir.Cleanup()
|
||||
|
||||
ts.PackerCommand().UsePluginDir(dir).
|
||||
SetArgs("plugins", "install", "github.com/hashicorp/docker").
|
||||
Assert(check.MustSucceed())
|
||||
|
||||
ts.PackerCommand().UsePluginDir(dir).
|
||||
AddEnv("HOME", os.Getenv("HOME")).
|
||||
AddEnv("PATH", os.Getenv("PATH")).
|
||||
SetArgs("build", "templates/no_shebang_inline_but_as_option.pkr.hcl").
|
||||
Assert(check.MustSucceed())
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
package plugin_tests
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/hashicorp/packer/packer_test/common"
|
||||
"github.com/stretchr/testify/suite"
|
||||
)
|
||||
|
||||
type PackerShellProvisionerTestSuite struct {
|
||||
*common.PackerTestSuite
|
||||
}
|
||||
|
||||
func Test_PackerPluginSuite(t *testing.T) {
|
||||
baseSuite, cleanup := common.InitBaseSuite(t)
|
||||
defer cleanup()
|
||||
|
||||
ts := &PackerShellProvisionerTestSuite{
|
||||
baseSuite,
|
||||
}
|
||||
|
||||
suite.Run(t, ts)
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
source "docker" "test" {
|
||||
image = "debian:bookworm"
|
||||
discard = true
|
||||
}
|
||||
|
||||
build {
|
||||
sources = ["docker.test"]
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"cat $0 | head -1 | grep -E '^#!/bin/sh -e'",
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
source "docker" "test" {
|
||||
image = "debian:bookworm"
|
||||
discard = true
|
||||
}
|
||||
|
||||
build {
|
||||
sources = ["docker.test"]
|
||||
|
||||
provisioner "shell" {
|
||||
inline_shebang = "/bin/bash -ex"
|
||||
inline = [
|
||||
"head -1 <\"$0\" | grep -qE '^#!/bin/bash'",
|
||||
"if grep -qE \"^#!/bin/sh\" <\"$0\"; then exit 1; fi",
|
||||
"cat \"$0\""
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
source "docker" "test" {
|
||||
image = "debian:bookworm"
|
||||
discard = true
|
||||
}
|
||||
|
||||
build {
|
||||
sources = ["docker.test"]
|
||||
|
||||
provisioner "shell" {
|
||||
inline_shebang = "/bin/bash -ex"
|
||||
inline = [
|
||||
"#!/bin/sh",
|
||||
"cat \"$0\" | head -1 | grep -qE '^#!/bin/bash'",
|
||||
"cat \"$0\""
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
source "docker" "test" {
|
||||
image = "debian:bookworm"
|
||||
discard = true
|
||||
}
|
||||
|
||||
build {
|
||||
sources = ["docker.test"]
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"#!/bin/bash -e",
|
||||
"cat $0 | head -1 | grep -E '#!/bin/bash -e'"
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue