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  }