github.com/hooklift/terraform@v0.11.0-beta1.0.20171117000744-6786c1361ffe/command/e2etest/main_test.go (about)

     1  package e2etest
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/hashicorp/terraform/e2e"
    10  )
    11  
    12  var terraformBin string
    13  
    14  func TestMain(m *testing.M) {
    15  	teardown := setup()
    16  	code := m.Run()
    17  	teardown()
    18  	os.Exit(code)
    19  }
    20  
    21  func setup() func() {
    22  	if terraformBin != "" {
    23  		// this is pre-set when we're running in a binary produced from
    24  		// the make-archive.sh script, since that builds a ready-to-go
    25  		// binary into the archive. However, we do need to turn it into
    26  		// an absolute path so that we can find it when we change the
    27  		// working directory during tests.
    28  		var err error
    29  		terraformBin, err = filepath.Abs(terraformBin)
    30  		if err != nil {
    31  			panic(fmt.Sprintf("failed to find absolute path of terraform executable: %s", err))
    32  		}
    33  		return func() {}
    34  	}
    35  
    36  	tmpFilename := e2e.GoBuild("github.com/hashicorp/terraform", "terraform")
    37  
    38  	// Make the executable available for use in tests
    39  	terraformBin = tmpFilename
    40  
    41  	return func() {
    42  		os.Remove(tmpFilename)
    43  	}
    44  }
    45  
    46  func canAccessNetwork() bool {
    47  	// We re-use the flag normally used for acceptance tests since that's
    48  	// established as a way to opt-in to reaching out to real systems that
    49  	// may suffer transient errors.
    50  	return os.Getenv("TF_ACC") != ""
    51  }
    52  
    53  func skipIfCannotAccessNetwork(t *testing.T) {
    54  	t.Helper()
    55  
    56  	if !canAccessNetwork() {
    57  		t.Skip("network access not allowed; use TF_ACC=1 to enable")
    58  	}
    59  }