github.com/mineiros-io/terradoc@v0.0.9-0.20220711062319-018bd4ae81f5/cmd/terradoc/main_test.go (about) 1 package main_test 2 3 import ( 4 "fmt" 5 "os" 6 "os/exec" 7 "path/filepath" 8 "runtime" 9 "testing" 10 ) 11 12 var ( 13 binName = "terradoc" 14 generateInput = "golden-input.tfdoc.hcl" 15 formatInput = "unformatted-input.tfdoc.hcl" 16 expectedGenerateOutput = "golden-readme.md" 17 expectedFormatOutput = "formatted-input.tfdoc.hcl" 18 ) 19 20 var terradocBinPath string 21 22 func TestMain(m *testing.M) { 23 fmt.Println("Building tool...") 24 25 if runtime.GOOS == "windows" { 26 binName += ".exe" 27 } 28 29 binTmpdir, err := os.MkdirTemp("", "cmd-terradoc-test-") 30 if err != nil { 31 fmt.Fprintf(os.Stderr, "Cannot create temp dir: %v", err) 32 os.Exit(1) 33 } 34 35 terradocBinPath = filepath.Join(binTmpdir, binName) 36 37 build := exec.Command("go", "build", "-o", terradocBinPath) 38 err = build.Run() 39 if err != nil { 40 fmt.Fprintf(os.Stderr, "Cannot build %q: %v", binName, err) 41 os.Exit(1) 42 } 43 44 fmt.Println("Running tests...") 45 46 result := m.Run() 47 48 fmt.Println("Cleaning up...") 49 err = os.RemoveAll(binTmpdir) 50 if err != nil { 51 fmt.Fprintf(os.Stderr, "Cannot clean up temp dir %q: %v", binTmpdir, err) 52 } 53 54 os.Exit(result) 55 }