github.com/mineiros-io/terradoc@v0.0.9-0.20220711062319-018bd4ae81f5/cmd/terradoc/format_test.go (about) 1 package main_test 2 3 import ( 4 "io/ioutil" 5 "os/exec" 6 "testing" 7 8 "github.com/google/go-cmp/cmp" 9 "github.com/madlambda/spells/assert" 10 "github.com/mineiros-io/terradoc/test" 11 ) 12 13 func TestFormat(t *testing.T) { 14 unformattedInput := test.ReadFixture(t, formatInput) 15 // create another file with unformattedFile content to test overwrites 16 17 expectedFormattedOutput := test.ReadFixture(t, expectedFormatOutput) 18 19 t.Run("WriteToStdout", func(t *testing.T) { 20 inputFile, err := ioutil.TempFile(t.TempDir(), "terradoc-fmt-output-") 21 assert.NoError(t, err) 22 // write unformatted input to file 23 _, err = inputFile.Write(unformattedInput) 24 assert.NoError(t, err) 25 26 defer inputFile.Close() 27 28 cmd := exec.Command(terradocBinPath, "fmt", inputFile.Name()) 29 30 output, err := cmd.CombinedOutput() 31 assert.NoError(t, err) 32 33 if diff := cmp.Diff(expectedFormattedOutput, output); diff != "" { 34 t.Errorf("Result is not expected (-want +got):\n%s", diff) 35 } 36 }) 37 38 t.Run("OverwriteFile", func(t *testing.T) { 39 inputFile, err := ioutil.TempFile(t.TempDir(), "terradoc-fmt-output-") 40 assert.NoError(t, err) 41 // write unformatted input to file 42 _, err = inputFile.Write(unformattedInput) 43 assert.NoError(t, err) 44 45 defer inputFile.Close() 46 47 cmd := exec.Command(terradocBinPath, "fmt", "-w", inputFile.Name()) 48 49 _, err = cmd.CombinedOutput() 50 assert.NoError(t, err) 51 52 _, err = inputFile.Seek(0, 0) 53 assert.NoError(t, err) 54 55 persistedResult, err := ioutil.ReadAll(inputFile) 56 assert.NoError(t, err) 57 58 if diff := cmp.Diff(expectedFormattedOutput, persistedResult); diff != "" { 59 t.Errorf("Result is not expected (-want +got):\n%s", diff) 60 } 61 }) 62 }