github.com/ezbercih/terraform@v0.1.1-0.20140729011846-3c33865e0839/command/command_test.go (about)

     1  package command
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/hashicorp/terraform/terraform"
    10  )
    11  
    12  // This is the directory where our test fixtures are.
    13  var fixtureDir = "./test-fixtures"
    14  
    15  func init() {
    16  	// Expand the fixture dir on init because we change the working
    17  	// directory in some tests.
    18  	var err error
    19  	fixtureDir, err = filepath.Abs(fixtureDir)
    20  	if err != nil {
    21  		panic(err)
    22  	}
    23  }
    24  
    25  func testFixturePath(name string) string {
    26  	return filepath.Join(fixtureDir, name)
    27  }
    28  
    29  func testCtxConfig(p terraform.ResourceProvider) *terraform.ContextOpts {
    30  	return &terraform.ContextOpts{
    31  		Providers: map[string]terraform.ResourceProviderFactory{
    32  			"test": func() (terraform.ResourceProvider, error) {
    33  				return p, nil
    34  			},
    35  		},
    36  	}
    37  }
    38  
    39  func testPlanFile(t *testing.T, plan *terraform.Plan) string {
    40  	path := testTempFile(t)
    41  
    42  	f, err := os.Create(path)
    43  	if err != nil {
    44  		t.Fatalf("err: %s", err)
    45  	}
    46  	defer f.Close()
    47  
    48  	if err := terraform.WritePlan(plan, f); err != nil {
    49  		t.Fatalf("err: %s", err)
    50  	}
    51  
    52  	return path
    53  }
    54  
    55  func testReadPlan(t *testing.T, path string) *terraform.Plan {
    56  	f, err := os.Open(path)
    57  	if err != nil {
    58  		t.Fatalf("err: %s", err)
    59  	}
    60  	defer f.Close()
    61  
    62  	p, err := terraform.ReadPlan(f)
    63  	if err != nil {
    64  		t.Fatalf("err: %s", err)
    65  	}
    66  
    67  	return p
    68  }
    69  
    70  func testStateFile(t *testing.T, s *terraform.State) string {
    71  	path := testTempFile(t)
    72  
    73  	f, err := os.Create(path)
    74  	if err != nil {
    75  		t.Fatalf("err: %s", err)
    76  	}
    77  	defer f.Close()
    78  
    79  	if err := terraform.WriteState(s, f); err != nil {
    80  		t.Fatalf("err: %s", err)
    81  	}
    82  
    83  	return path
    84  }
    85  
    86  func testProvider() *terraform.MockResourceProvider {
    87  	p := new(terraform.MockResourceProvider)
    88  	p.DiffReturn = &terraform.ResourceDiff{}
    89  	p.RefreshFn = func(
    90  		s *terraform.ResourceState) (*terraform.ResourceState, error) {
    91  		return s, nil
    92  	}
    93  	p.ResourcesReturn = []terraform.ResourceType{
    94  		terraform.ResourceType{
    95  			Name: "test_instance",
    96  		},
    97  	}
    98  
    99  	return p
   100  }
   101  
   102  func testTempFile(t *testing.T) string {
   103  	tf, err := ioutil.TempFile("", "tf")
   104  	if err != nil {
   105  		t.Fatalf("err: %s", err)
   106  	}
   107  
   108  	result := tf.Name()
   109  
   110  	if err := tf.Close(); err != nil {
   111  		t.Fatalf("err: %s", err)
   112  	}
   113  	if err := os.Remove(result); err != nil {
   114  		t.Fatalf("err: %s", err)
   115  	}
   116  
   117  	return result
   118  }