helper/schema: convert _Diff to subtests

This commit is contained in:
Mitchell Hashimoto 2016-11-08 17:17:44 -08:00
parent da09dcfc79
commit 5792b2cba2
No known key found for this signature in database
GPG Key ID: 744E147AA52F5B0A

View File

@ -131,7 +131,8 @@ func interfaceToVariableSwallowError(input interface{}) ast.Variable {
} }
func TestSchemaMap_Diff(t *testing.T) { func TestSchemaMap_Diff(t *testing.T) {
cases := map[string]struct { cases := []struct {
Name string
Schema map[string]*Schema Schema map[string]*Schema
State *terraform.InstanceState State *terraform.InstanceState
Config map[string]interface{} Config map[string]interface{}
@ -139,7 +140,7 @@ func TestSchemaMap_Diff(t *testing.T) {
Diff *terraform.InstanceDiff Diff *terraform.InstanceDiff
Err bool Err bool
}{ }{
"#0": { {
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -168,7 +169,7 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#1": { {
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -195,7 +196,7 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#2": { {
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -216,7 +217,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#3 Computed, but set in config": { {
Name: "Computed, but set in config",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -247,7 +249,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#4 Default": { {
Name: "Default",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -272,7 +275,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#5 DefaultFunc, value": { {
Name: "DefaultFunc, value",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -299,7 +303,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#6 DefaultFunc, configuration set": { {
Name: "DefaultFunc, configuration set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -328,7 +333,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"String with StateFunc": { {
Name: "String with StateFunc",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -359,7 +365,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"StateFunc not called with nil value": { {
Name: "StateFunc not called with nil value",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -389,7 +396,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#8 Variable (just checking)": { {
Name: "Variable (just checking)",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -419,7 +427,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#9 Variable computed": { {
Name: "Variable computed",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -450,7 +459,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#10 Int decode": { {
Name: "Int decode",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"port": &Schema{ "port": &Schema{
Type: TypeInt, Type: TypeInt,
@ -479,7 +489,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#11 bool decode": { {
Name: "bool decode",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"port": &Schema{ "port": &Schema{
Type: TypeBool, Type: TypeBool,
@ -508,7 +519,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#12 Bool": { {
Name: "Bool",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"delete": &Schema{ "delete": &Schema{
Type: TypeBool, Type: TypeBool,
@ -530,7 +542,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#13 List decode": { {
Name: "List decode",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeList, Type: TypeList,
@ -569,7 +582,7 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#14": { {
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeList, Type: TypeList,
@ -612,7 +625,7 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#15": { {
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeList, Type: TypeList,
@ -645,7 +658,7 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#16": { {
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeList, Type: TypeList,
@ -672,7 +685,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#17": { {
Name: "",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeList, Type: TypeList,
@ -709,7 +723,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#18": { {
Name: "",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeList, Type: TypeList,
@ -753,7 +768,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#19": { {
Name: "",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeList, Type: TypeList,
@ -779,7 +795,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#20 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeSet, Type: TypeSet,
@ -821,7 +838,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#21 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeSet, Type: TypeSet,
@ -847,7 +865,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#22 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeSet, Type: TypeSet,
@ -876,7 +895,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#23 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeSet, Type: TypeSet,
@ -922,7 +942,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#24 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeSet, Type: TypeSet,
@ -958,7 +979,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#25 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeSet, Type: TypeSet,
@ -1006,7 +1028,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#26 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeSet, Type: TypeSet,
@ -1050,7 +1073,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#27 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeSet, Type: TypeSet,
@ -1078,7 +1102,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#28 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ingress": &Schema{ "ingress": &Schema{
Type: TypeSet, Type: TypeSet,
@ -1130,7 +1155,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#29 List of structure decode": { {
Name: "List of structure decode",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ingress": &Schema{ "ingress": &Schema{
Type: TypeList, Type: TypeList,
@ -1172,7 +1198,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#30 ComputedWhen": { {
Name: "ComputedWhen",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -1202,7 +1229,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#31": { {
Name: "",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -1280,7 +1308,8 @@ func TestSchemaMap_Diff(t *testing.T) {
}, },
*/ */
"#32 Maps": { {
Name: "Maps",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"config_vars": &Schema{ "config_vars": &Schema{
Type: TypeMap, Type: TypeMap,
@ -1314,7 +1343,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#33 Maps": { {
Name: "Maps",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"config_vars": &Schema{ "config_vars": &Schema{
Type: TypeMap, Type: TypeMap,
@ -1351,7 +1381,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#34 Maps": { {
Name: "Maps",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"vars": &Schema{ "vars": &Schema{
Type: TypeMap, Type: TypeMap,
@ -1391,7 +1422,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#35 Maps": { {
Name: "Maps",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"vars": &Schema{ "vars": &Schema{
Type: TypeMap, Type: TypeMap,
@ -1412,7 +1444,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#36 Maps": { {
Name: "Maps",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"config_vars": &Schema{ "config_vars": &Schema{
Type: TypeList, Type: TypeList,
@ -1451,7 +1484,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#37 Maps": { {
Name: "Maps",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"config_vars": &Schema{ "config_vars": &Schema{
Type: TypeList, Type: TypeList,
@ -1493,7 +1527,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#38 ForceNews": { {
Name: "ForceNews",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -1538,7 +1573,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#39 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"availability_zone": &Schema{ "availability_zone": &Schema{
Type: TypeString, Type: TypeString,
@ -1588,7 +1624,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#40 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"instances": &Schema{ "instances": &Schema{
Type: TypeSet, Type: TypeSet,
@ -1626,7 +1663,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#41 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"route": &Schema{ "route": &Schema{
Type: TypeSet, Type: TypeSet,
@ -1687,7 +1725,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#42 Set": { {
Name: "Set",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"route": &Schema{ "route": &Schema{
Type: TypeSet, Type: TypeSet,
@ -1752,7 +1791,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#43 - Computed maps": { {
Name: "Computed maps",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"vars": &Schema{ "vars": &Schema{
Type: TypeMap, Type: TypeMap,
@ -1776,7 +1816,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#44 - Computed maps": { {
Name: "Computed maps",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"vars": &Schema{ "vars": &Schema{
Type: TypeMap, Type: TypeMap,
@ -1812,7 +1853,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#45 - Empty": { {
Name: " - Empty",
Schema: map[string]*Schema{}, Schema: map[string]*Schema{},
State: &terraform.InstanceState{}, State: &terraform.InstanceState{},
@ -1824,7 +1866,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#46 - Float": { {
Name: "Float",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"some_threshold": &Schema{ "some_threshold": &Schema{
Type: TypeFloat, Type: TypeFloat,
@ -1853,7 +1896,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#47 - https://github.com/hashicorp/terraform/issues/824": { {
Name: "https://github.com/hashicorp/terraform/issues/824",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"block_device": &Schema{ "block_device": &Schema{
Type: TypeSet, Type: TypeSet,
@ -1906,7 +1950,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#48 - Zero value in state shouldn't result in diff": { {
Name: "Zero value in state shouldn't result in diff",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"port": &Schema{ "port": &Schema{
Type: TypeBool, Type: TypeBool,
@ -1928,7 +1973,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#49 Set - Same as #48 but for sets": { {
Name: "Same as prev, but for sets",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"route": &Schema{ "route": &Schema{
Type: TypeSet, Type: TypeSet,
@ -1970,7 +2016,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#50 - A set computed element shouldn't cause a diff": { {
Name: "A set computed element shouldn't cause a diff",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"active": &Schema{ "active": &Schema{
Type: TypeBool, Type: TypeBool,
@ -1992,7 +2039,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#51 - An empty set should show up in the diff": { {
Name: "An empty set should show up in the diff",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"instances": &Schema{ "instances": &Schema{
Type: TypeSet, Type: TypeSet,
@ -2033,7 +2081,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#52 - Map with empty value": { {
Name: "Map with empty value",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"vars": &Schema{ "vars": &Schema{
Type: TypeMap, Type: TypeMap,
@ -2064,7 +2113,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#53 - Unset bool, not in state": { {
Name: "Unset bool, not in state",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"force": &Schema{ "force": &Schema{
Type: TypeBool, Type: TypeBool,
@ -2082,7 +2132,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#54 - Unset set, not in state": { {
Name: "Unset set, not in state",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"metadata_keys": &Schema{ "metadata_keys": &Schema{
Type: TypeSet, Type: TypeSet,
@ -2102,7 +2153,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#55 - Unset list in state, should not show up computed": { {
Name: "Unset list in state, should not show up computed",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"metadata_keys": &Schema{ "metadata_keys": &Schema{
Type: TypeList, Type: TypeList,
@ -2126,7 +2178,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#56 - Set element computed substring": { {
Name: "Set element computed substring",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeSet, Type: TypeSet,
@ -2161,7 +2214,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#57 Computed map without config that's known to be empty does not generate diff": { {
Name: "Computed map without config that's known to be empty does not generate diff",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"tags": &Schema{ "tags": &Schema{
Type: TypeMap, Type: TypeMap,
@ -2182,7 +2236,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#58 Set with hyphen keys": { {
Name: "Set with hyphen keys",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"route": &Schema{ "route": &Schema{
Type: TypeSet, Type: TypeSet,
@ -2238,7 +2293,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#59: StateFunc in nested set (#1759)": { {
Name: ": StateFunc in nested set (#1759)",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"service_account": &Schema{ "service_account": &Schema{
Type: TypeList, Type: TypeList,
@ -2303,7 +2359,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"#60 - Removing set elements": { {
Name: "Removing set elements",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"instances": &Schema{ "instances": &Schema{
Type: TypeSet, Type: TypeSet,
@ -2355,7 +2412,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"Bools can be set with 0/1 in config, still get true/false": { {
Name: "Bools can be set with 0/1 in config, still get true/false",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"one": &Schema{ "one": &Schema{
Type: TypeBool, Type: TypeBool,
@ -2405,7 +2463,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"tainted in state w/ no attr changes is still a replacement": { {
Name: "tainted in state w/ no attr changes is still a replacement",
Schema: map[string]*Schema{}, Schema: map[string]*Schema{},
State: &terraform.InstanceState{ State: &terraform.InstanceState{
@ -2425,7 +2484,8 @@ func TestSchemaMap_Diff(t *testing.T) {
Err: false, Err: false,
}, },
"Set ForceNew only marks the changing element as ForceNew": { {
Name: "Set ForceNew only marks the changing element as ForceNew",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"ports": &Schema{ "ports": &Schema{
Type: TypeSet, Type: TypeSet,
@ -2480,7 +2540,8 @@ func TestSchemaMap_Diff(t *testing.T) {
}, },
}, },
"removed optional items should trigger ForceNew": { {
Name: "removed optional items should trigger ForceNew",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"description": &Schema{ "description": &Schema{
Type: TypeString, Type: TypeString,
@ -2512,7 +2573,8 @@ func TestSchemaMap_Diff(t *testing.T) {
}, },
// GH-7715 // GH-7715
"computed value for boolean field": { {
Name: "computed value for boolean field",
Schema: map[string]*Schema{ Schema: map[string]*Schema{
"foo": &Schema{ "foo": &Schema{
Type: TypeBool, Type: TypeBool,
@ -2548,27 +2610,27 @@ func TestSchemaMap_Diff(t *testing.T) {
}, },
} }
for tn, tc := range cases { for i, tc := range cases {
t.Run(tn, func(t *testing.T) { t.Run(fmt.Sprintf("%d-%s", i, tc.Name), func(t *testing.T) {
c, err := config.NewRawConfig(tc.Config) c, err := config.NewRawConfig(tc.Config)
if err != nil { if err != nil {
t.Fatalf("#%q err: %s", tn, err) t.Fatalf("err: %s", err)
} }
if len(tc.ConfigVariables) > 0 { if len(tc.ConfigVariables) > 0 {
if err := c.Interpolate(tc.ConfigVariables); err != nil { if err := c.Interpolate(tc.ConfigVariables); err != nil {
t.Fatalf("#%q err: %s", tn, err) t.Fatalf("err: %s", err)
} }
} }
d, err := schemaMap(tc.Schema).Diff( d, err := schemaMap(tc.Schema).Diff(
tc.State, terraform.NewResourceConfig(c)) tc.State, terraform.NewResourceConfig(c))
if err != nil != tc.Err { if err != nil != tc.Err {
t.Fatalf("#%q err: %s", tn, err) t.Fatalf("err: %s", err)
} }
if !reflect.DeepEqual(tc.Diff, d) { if !reflect.DeepEqual(tc.Diff, d) {
t.Fatalf("#%q:\n\nexpected:\n%#v\n\ngot:\n%#v", tn, tc.Diff, d) t.Fatalf("expected:\n%#v\n\ngot:\n%#v", tc.Diff, d)
} }
}) })
} }