github.com/pgray/terraform@v0.5.4-0.20170822184730-b6a464c5214d/config/append_test.go (about) 1 package config 2 3 import ( 4 "reflect" 5 "testing" 6 ) 7 8 func TestAppend(t *testing.T) { 9 cases := []struct { 10 c1, c2, result *Config 11 err bool 12 }{ 13 { 14 &Config{ 15 Atlas: &AtlasConfig{ 16 Name: "foo", 17 }, 18 Modules: []*Module{ 19 &Module{Name: "foo"}, 20 }, 21 Outputs: []*Output{ 22 &Output{Name: "foo"}, 23 }, 24 ProviderConfigs: []*ProviderConfig{ 25 &ProviderConfig{Name: "foo"}, 26 }, 27 Resources: []*Resource{ 28 &Resource{Name: "foo"}, 29 }, 30 Variables: []*Variable{ 31 &Variable{Name: "foo"}, 32 }, 33 34 unknownKeys: []string{"foo"}, 35 }, 36 37 &Config{ 38 Atlas: &AtlasConfig{ 39 Name: "bar", 40 }, 41 Modules: []*Module{ 42 &Module{Name: "bar"}, 43 }, 44 Outputs: []*Output{ 45 &Output{Name: "bar"}, 46 }, 47 ProviderConfigs: []*ProviderConfig{ 48 &ProviderConfig{Name: "bar"}, 49 }, 50 Resources: []*Resource{ 51 &Resource{Name: "bar"}, 52 }, 53 Variables: []*Variable{ 54 &Variable{Name: "bar"}, 55 }, 56 57 unknownKeys: []string{"bar"}, 58 }, 59 60 &Config{ 61 Atlas: &AtlasConfig{ 62 Name: "bar", 63 }, 64 Modules: []*Module{ 65 &Module{Name: "foo"}, 66 &Module{Name: "bar"}, 67 }, 68 Outputs: []*Output{ 69 &Output{Name: "foo"}, 70 &Output{Name: "bar"}, 71 }, 72 ProviderConfigs: []*ProviderConfig{ 73 &ProviderConfig{Name: "foo"}, 74 &ProviderConfig{Name: "bar"}, 75 }, 76 Resources: []*Resource{ 77 &Resource{Name: "foo"}, 78 &Resource{Name: "bar"}, 79 }, 80 Variables: []*Variable{ 81 &Variable{Name: "foo"}, 82 &Variable{Name: "bar"}, 83 }, 84 85 unknownKeys: []string{"foo", "bar"}, 86 }, 87 88 false, 89 }, 90 91 // Terraform block 92 { 93 &Config{ 94 Terraform: &Terraform{ 95 RequiredVersion: "A", 96 }, 97 }, 98 &Config{}, 99 &Config{ 100 Terraform: &Terraform{ 101 RequiredVersion: "A", 102 }, 103 }, 104 false, 105 }, 106 107 { 108 &Config{}, 109 &Config{ 110 Terraform: &Terraform{ 111 RequiredVersion: "A", 112 }, 113 }, 114 &Config{ 115 Terraform: &Terraform{ 116 RequiredVersion: "A", 117 }, 118 }, 119 false, 120 }, 121 122 // appending configs merges terraform blocks 123 { 124 &Config{ 125 Terraform: &Terraform{ 126 RequiredVersion: "A", 127 }, 128 }, 129 &Config{ 130 Terraform: &Terraform{ 131 Backend: &Backend{ 132 Type: "test", 133 }, 134 }, 135 }, 136 &Config{ 137 Terraform: &Terraform{ 138 RequiredVersion: "A", 139 Backend: &Backend{ 140 Type: "test", 141 }, 142 }, 143 }, 144 false, 145 }, 146 } 147 148 for i, tc := range cases { 149 actual, err := Append(tc.c1, tc.c2) 150 if err != nil != tc.err { 151 t.Fatalf("%d: error fail", i) 152 } 153 154 if !reflect.DeepEqual(actual, tc.result) { 155 t.Fatalf("%d: bad:\n\n%#v", i, actual) 156 } 157 } 158 }