Setting recursive fmt to false, updatting recursive fmt test to validate
formatted files
This commit is contained in:
parent
ab4b3a8465
commit
261abe0cae
|
@ -147,7 +147,7 @@ func (va *FormatArgs) AddFlagSets(flags *flag.FlagSet) {
|
||||||
flags.BoolVar(&va.Check, "check", false, "check if the input is formatted")
|
flags.BoolVar(&va.Check, "check", false, "check if the input is formatted")
|
||||||
flags.BoolVar(&va.Diff, "diff", false, "display the diff of formatting changes")
|
flags.BoolVar(&va.Diff, "diff", false, "display the diff of formatting changes")
|
||||||
flags.BoolVar(&va.Write, "write", true, "overwrite source files instead of writing to stdout")
|
flags.BoolVar(&va.Write, "write", true, "overwrite source files instead of writing to stdout")
|
||||||
flags.BoolVar(&va.Recursive, "recursive", true, "Also process files in subdirectories")
|
flags.BoolVar(&va.Recursive, "recursive", false, "Also process files in subdirectories")
|
||||||
va.MetaArgs.AddFlagSets(flags)
|
va.MetaArgs.AddFlagSets(flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
package command
|
package command
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/google/go-cmp/cmp"
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
@ -56,9 +60,76 @@ func TestFmt_Recursive(t *testing.T) {
|
||||||
Meta: testMeta(t),
|
Meta: testMeta(t),
|
||||||
}
|
}
|
||||||
|
|
||||||
args := []string{"-check=true", "-recursive=true", filepath.Join(testFixture("fmt"), "")}
|
unformattedData, err := ioutil.ReadFile("test-fixtures/fmt/unformatted.pkrvars.hcl")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to open the unformatted fixture %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
if code := c.Run(args); code != 3 {
|
var subDir string
|
||||||
|
subDir, err = ioutil.TempDir("test-fixtures/fmt", "sub_dir")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to create sub level recurisve directory for test %s", err)
|
||||||
|
}
|
||||||
|
defer os.Remove(subDir)
|
||||||
|
|
||||||
|
var superSubDir string
|
||||||
|
superSubDir, err = ioutil.TempDir(subDir, "super_sub_dir")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to create sub level recurisve directory for test %s", err)
|
||||||
|
}
|
||||||
|
defer os.Remove(superSubDir)
|
||||||
|
|
||||||
|
tf, err := ioutil.TempFile(subDir, "*.pkrvars.hcl")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to create top level tempfile for test %s", err)
|
||||||
|
}
|
||||||
|
defer os.Remove(tf.Name())
|
||||||
|
|
||||||
|
_, _ = tf.Write(unformattedData)
|
||||||
|
tf.Close()
|
||||||
|
|
||||||
|
subTf, err := ioutil.TempFile(superSubDir, "*.pkrvars.hcl")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to create sub level tempfile for test %s", err)
|
||||||
|
}
|
||||||
|
defer os.Remove(subTf.Name())
|
||||||
|
|
||||||
|
_, _ = subTf.Write(unformattedData)
|
||||||
|
subTf.Close()
|
||||||
|
|
||||||
|
var directoryDelimiter string
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
directoryDelimiter = "\\"
|
||||||
|
} else {
|
||||||
|
directoryDelimiter = "/"
|
||||||
|
}
|
||||||
|
|
||||||
|
dirSplit := strings.Split(subDir, directoryDelimiter)
|
||||||
|
// Need just last bit to of top level temp directory to call command
|
||||||
|
subDirIsolated := dirSplit[len(dirSplit)-1]
|
||||||
|
args := []string{"-recursive=true", filepath.Join(testFixture("fmt"), subDirIsolated)}
|
||||||
|
|
||||||
|
if code := c.Run(args); code != 0 {
|
||||||
fatalCommand(t, c.Meta)
|
fatalCommand(t, c.Meta)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
formattedData, err := ioutil.ReadFile("test-fixtures/fmt/formatted.pkrvars.hcl")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to open the formatted fixture %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
validateFileIsFormatted(t, formattedData, tf)
|
||||||
|
validateFileIsFormatted(t, formattedData, subTf)
|
||||||
|
}
|
||||||
|
|
||||||
|
func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File) {
|
||||||
|
//lets re-read the tempfile which should now be formatted
|
||||||
|
data, err := ioutil.ReadFile(testFile.Name())
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to open the newly formatted fixture %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if diff := cmp.Diff(string(data), string(formattedData)); diff != "" {
|
||||||
|
t.Errorf("Unexpected format tfData output %s", diff)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
ami_filter_name = "amzn2-ami-hvm-*-x86_64-gp2"
|
||||||
|
ami_filter_owners = ["137112412989"]
|
||||||
|
|
|
@ -39,12 +39,73 @@ func TestHCL2Formatter_Format(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHCL2Formatter_Recursive(t *testing.T) {
|
func TestHCL2Formatter_Recursive(t *testing.T) {
|
||||||
|
var buf bytes.Buffer
|
||||||
f := NewHCL2Formatter()
|
f := NewHCL2Formatter()
|
||||||
|
f.Output = &buf
|
||||||
|
f.Write = true
|
||||||
f.Recursive = true
|
f.Recursive = true
|
||||||
_, diags := f.Format("testdata/format")
|
|
||||||
|
unformattedData, err := ioutil.ReadFile("testdata/format/unformatted.pkr.hcl")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to open the unformatted fixture %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var subDir string
|
||||||
|
subDir, err = ioutil.TempDir("testdata/format", "sub_dir")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to create sub level recurisve directory for test %s", err)
|
||||||
|
}
|
||||||
|
defer os.Remove(subDir)
|
||||||
|
|
||||||
|
var superSubDir string
|
||||||
|
superSubDir, err = ioutil.TempDir(subDir, "super_sub_dir")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to create sub level recurisve directory for test %s", err)
|
||||||
|
}
|
||||||
|
defer os.Remove(superSubDir)
|
||||||
|
|
||||||
|
tf, err := ioutil.TempFile(subDir, "*.pkr.hcl")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to create top level tempfile for test %s", err)
|
||||||
|
}
|
||||||
|
defer os.Remove(tf.Name())
|
||||||
|
|
||||||
|
_, _ = tf.Write(unformattedData)
|
||||||
|
tf.Close()
|
||||||
|
|
||||||
|
subTf, err := ioutil.TempFile(superSubDir, "*.pkr.hcl")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to create sub level tempfile for test %s", err)
|
||||||
|
}
|
||||||
|
defer os.Remove(subTf.Name())
|
||||||
|
|
||||||
|
_, _ = subTf.Write(unformattedData)
|
||||||
|
subTf.Close()
|
||||||
|
|
||||||
|
_, diags := f.Format(subDir)
|
||||||
if diags.HasErrors() {
|
if diags.HasErrors() {
|
||||||
t.Fatalf("the call to Format failed unexpectedly %s", diags.Error())
|
t.Fatalf("the call to Format failed unexpectedly %s", diags.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
formattedData, err := ioutil.ReadFile("testdata/format/formatted.pkr.hcl")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to open the formatted fixture %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
validateFileIsFormatted(t, formattedData, tf)
|
||||||
|
validateFileIsFormatted(t, formattedData, subTf)
|
||||||
|
}
|
||||||
|
|
||||||
|
func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File) {
|
||||||
|
//lets re-read the tempfile which should now be formatted
|
||||||
|
data, err := ioutil.ReadFile(testFile.Name())
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to open the newly formatted fixture %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if diff := cmp.Diff(string(data), string(formattedData)); diff != "" {
|
||||||
|
t.Errorf("Unexpected format tfData output %s", diff)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHCL2Formatter_Format_Write(t *testing.T) {
|
func TestHCL2Formatter_Format_Write(t *testing.T) {
|
||||||
|
|
|
@ -1,149 +0,0 @@
|
||||||
|
|
||||||
// starts resources to provision them.
|
|
||||||
build {
|
|
||||||
sources = [
|
|
||||||
"source.amazon-ebs.ubuntu-1604",
|
|
||||||
"source.virtualbox-iso.ubuntu-1204",
|
|
||||||
]
|
|
||||||
|
|
||||||
provisioner "shell" {
|
|
||||||
string = coalesce(null, "", "string")
|
|
||||||
int = "${41 + 1}"
|
|
||||||
int64 = "${42 + 1}"
|
|
||||||
bool = "true"
|
|
||||||
trilean = true
|
|
||||||
duration = "${9 + 1}s"
|
|
||||||
map_string_string = {
|
|
||||||
a = "b"
|
|
||||||
c = "d"
|
|
||||||
}
|
|
||||||
slice_string = [
|
|
||||||
"a",
|
|
||||||
"b",
|
|
||||||
"c",
|
|
||||||
]
|
|
||||||
slice_slice_string = [
|
|
||||||
["a","b"],
|
|
||||||
["c","d"]
|
|
||||||
]
|
|
||||||
|
|
||||||
nested {
|
|
||||||
string = "string"
|
|
||||||
int = 42
|
|
||||||
int64 = 43
|
|
||||||
bool = true
|
|
||||||
trilean = true
|
|
||||||
duration = "10s"
|
|
||||||
map_string_string = {
|
|
||||||
a = "b"
|
|
||||||
c = "d"
|
|
||||||
}
|
|
||||||
slice_string = [
|
|
||||||
"a",
|
|
||||||
"b",
|
|
||||||
"c",
|
|
||||||
]
|
|
||||||
slice_slice_string = [
|
|
||||||
["a","b"],
|
|
||||||
["c","d"]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
nested_slice {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
provisioner "file" {
|
|
||||||
string = "string"
|
|
||||||
int = 42
|
|
||||||
int64 = 43
|
|
||||||
bool = true
|
|
||||||
trilean = true
|
|
||||||
duration = "10s"
|
|
||||||
map_string_string = {
|
|
||||||
a = "b"
|
|
||||||
c = "d"
|
|
||||||
}
|
|
||||||
slice_string = [
|
|
||||||
"a",
|
|
||||||
"b",
|
|
||||||
"c",
|
|
||||||
]
|
|
||||||
slice_slice_string = [
|
|
||||||
["a","b"],
|
|
||||||
["c","d"]
|
|
||||||
]
|
|
||||||
|
|
||||||
nested {
|
|
||||||
string = "string"
|
|
||||||
int = 42
|
|
||||||
int64 = 43
|
|
||||||
bool = true
|
|
||||||
trilean = true
|
|
||||||
duration = "10s"
|
|
||||||
map_string_string = {
|
|
||||||
a = "b"
|
|
||||||
c = "d"
|
|
||||||
}
|
|
||||||
slice_string = [
|
|
||||||
"a",
|
|
||||||
"b",
|
|
||||||
"c",
|
|
||||||
]
|
|
||||||
slice_slice_string = [
|
|
||||||
["a","b"],
|
|
||||||
["c","d"]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
nested_slice {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
post-processor "amazon-import" {
|
|
||||||
string = "string"
|
|
||||||
int = 42
|
|
||||||
int64 = 43
|
|
||||||
bool = true
|
|
||||||
trilean = true
|
|
||||||
duration = "10s"
|
|
||||||
map_string_string = {
|
|
||||||
a = "b"
|
|
||||||
c = "d"
|
|
||||||
}
|
|
||||||
slice_string = [
|
|
||||||
"a",
|
|
||||||
"b",
|
|
||||||
"c",
|
|
||||||
]
|
|
||||||
slice_slice_string = [
|
|
||||||
["a","b"],
|
|
||||||
["c","d"]
|
|
||||||
]
|
|
||||||
|
|
||||||
nested {
|
|
||||||
string = "string"
|
|
||||||
int = 42
|
|
||||||
int64 = 43
|
|
||||||
bool = true
|
|
||||||
trilean = true
|
|
||||||
duration = "10s"
|
|
||||||
map_string_string = {
|
|
||||||
a = "b"
|
|
||||||
c = "d"
|
|
||||||
}
|
|
||||||
slice_string = [
|
|
||||||
"a",
|
|
||||||
"b",
|
|
||||||
"c",
|
|
||||||
]
|
|
||||||
slice_slice_string = [
|
|
||||||
["a","b"],
|
|
||||||
["c","d"]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
nested_slice {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
ami_filter_name ="amzn2-ami-hvm-*-x86_64-gp2"
|
|
||||||
ami_filter_owners =[ "137112412989" ]
|
|
||||||
|
|
Loading…
Reference in New Issue