packer_test: added inline shebang test cases for shell provisioner

bump_x_net
Anurag Sharma 12 months ago committed by Lucas Bajolet
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…
Cancel
Save