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  }