Packer plugin for Drone CI
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

135 lines
2.7 KiB

package main
import (
"os/exec"
"reflect"
"testing"
)
func Test_pkValidate(t *testing.T) {
type args struct {
config Config
}
tests := []struct {
name string
args args
want *exec.Cmd
}{
{
name: "default validate command",
args: args{
config: Config{
Template: "foo.json",
},
},
want: exec.Command("packer", "validate", "foo.json"),
},
{
name: "add vars flag",
args: args{
config: Config{
Template: "foo.json",
Vars: map[string]string{
"foo": "bar",
},
VarFiles: []string{"bar.json"},
},
},
want: exec.Command("packer", "validate", "-var-file", "bar.json", "-var", "foo=bar", "foo.json"),
},
{
name: "add except only color flag",
args: args{
config: Config{
Template: "foo.json",
Except: []string{"foo", "bar"},
Only: []string{"a", "b"},
SyntaxOnly: true,
},
},
want: exec.Command("packer", "validate", "-except=foo,bar", "-only=a,b", "-syntax-only", "foo.json"),
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
if got := pkValidate(tt.args.config); !reflect.DeepEqual(got, tt.want) {
t.Errorf("pkValidate() = %v, want %v", got, tt.want)
}
})
}
}
func Test_pkBuild(t *testing.T) {
type args struct {
config Config
}
tests := []struct {
name string
args args
want *exec.Cmd
}{
{
name: "default build command",
args: args{
config: Config{
Template: "foo.json",
},
},
want: exec.Command("packer", "build", "foo.json"),
},
{
name: "default build vars flag",
args: args{
config: Config{
Template: "foo.json",
Vars: map[string]string{
"foo": "bar",
},
VarFiles: []string{"bar.json"},
},
},
want: exec.Command("packer", "build", "-var-file", "bar.json", "-var", "foo=bar", "foo.json"),
},
{
name: "add Parallel, Color and debug flag",
args: args{
config: Config{
Template: "foo.json",
Parallel: true,
Color: true,
Debug: true,
},
},
want: exec.Command("packer", "build", "-parallel=true", "-color=true", "-debug", "foo.json"),
},
{
name: "add machine readable flag",
args: args{
config: Config{
Template: "foo.json",
Readable: true,
},
},
want: exec.Command("packer", "build", "-machine-readable", "foo.json"),
},
{
name: "add force flag",
args: args{
config: Config{
Template: "foo.json",
Force: true,
},
},
want: exec.Command("packer", "build", "-force", "foo.json"),
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
if got := pkBuild(tt.args.config); !reflect.DeepEqual(got, tt.want) {
t.Errorf("pkBuild() = %v, want %v", got, tt.want)
}
})
}
}