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 }