github.com/mineiros-io/terradoc@v0.0.9-0.20220711062319-018bd4ae81f5/cmd/terradoc/generate_test.go (about) 1 package main_test 2 3 import ( 4 "io" 5 "io/ioutil" 6 "os/exec" 7 "testing" 8 9 "github.com/google/go-cmp/cmp" 10 "github.com/madlambda/spells/assert" 11 "github.com/mineiros-io/terradoc/test" 12 ) 13 14 func TestGenerate(t *testing.T) { 15 inputContent := test.ReadFixture(t, generateInput) 16 // create tempfile 17 inputFile, err := ioutil.TempFile("", "terradoc-input-") 18 assert.NoError(t, err) 19 // write content to tempfile 20 _, err = inputFile.Write(inputContent) 21 assert.NoError(t, err) 22 23 defer inputFile.Close() 24 25 expectedOutput := test.ReadFixture(t, expectedGenerateOutput) 26 27 t.Run("ReadFromFile", func(t *testing.T) { 28 cmd := exec.Command(terradocBinPath, "generate", inputFile.Name()) 29 30 output, err := cmd.CombinedOutput() 31 assert.NoError(t, err) 32 33 if diff := cmp.Diff(expectedOutput, output); diff != "" { 34 t.Errorf("Result is not expected (-want +got):\n%s", diff) 35 } 36 }) 37 38 t.Run("ReadFromSTDIN", func(t *testing.T) { 39 cmd := exec.Command(terradocBinPath, "generate", "-") 40 41 cmdStdIn, err := cmd.StdinPipe() 42 assert.NoError(t, err) 43 44 _, err = io.WriteString(cmdStdIn, string(inputContent)) 45 assert.NoError(t, err) 46 47 cmdStdIn.Close() 48 49 output, err := cmd.CombinedOutput() 50 assert.NoError(t, err) 51 52 if diff := cmp.Diff(expectedOutput, output); diff != "" { 53 t.Errorf("Result is not expected (-want +got):\n%s", diff) 54 } 55 }) 56 57 t.Run("WriteToStdout", func(t *testing.T) { 58 cmd := exec.Command(terradocBinPath, "generate", inputFile.Name()) 59 60 output, err := cmd.CombinedOutput() 61 assert.NoError(t, err) 62 63 if diff := cmp.Diff(expectedOutput, output); diff != "" { 64 t.Errorf("Result is not expected (-want +got):\n%s", diff) 65 } 66 }) 67 68 t.Run("WriteToFile", func(t *testing.T) { 69 f, err := ioutil.TempFile("", "terradoc-output-") 70 assert.NoError(t, err) 71 defer f.Close() 72 73 cmd := exec.Command(terradocBinPath, "generate", "-o", f.Name(), inputFile.Name()) 74 75 err = cmd.Run() 76 assert.NoError(t, err) 77 78 result, err := ioutil.ReadAll(f) 79 assert.NoError(t, err) 80 81 if diff := cmp.Diff(expectedOutput, result); diff != "" { 82 t.Errorf("Result is not expected (-want +got):\n%s", diff) 83 } 84 }) 85 }