func testInterpolate( t *testing.T, i *Interpolater, scope *InterpolationScope, n string, expectedVar ast.Variable) { v, err := config.NewInterpolatedVariable(n) if err != nil { t.Fatalf("err: %s", err) } actual, err := i.Values(scope, map[string]config.InterpolatedVariable{ "foo": v, }) if err != nil { t.Fatalf("err: %s", err) } expected := map[string]ast.Variable{ "foo": expectedVar, } if !reflect.DeepEqual(actual, expected) { spew.Config.DisableMethods = true t.Fatalf("%q:\n\n actual: %#v\nexpected: %#v\n\n%s\n\n%s\n\n", n, actual, expected, spew.Sdump(actual), spew.Sdump(expected)) } }
func testInterpolateErr( t *testing.T, i *Interpolater, scope *InterpolationScope, n string) { v, err := config.NewInterpolatedVariable(n) if err != nil { t.Fatalf("err: %s", err) } _, err = i.Values(scope, map[string]config.InterpolatedVariable{ "foo": v, }) if err == nil { t.Fatalf("%q: succeeded, but wanted error", n) } }
func TestInterpolater_selfVarWithoutResource(t *testing.T) { i := &Interpolater{} scope := &InterpolationScope{ Path: rootModulePath, } v, err := config.NewInterpolatedVariable("self.name") if err != nil { t.Fatalf("err: %s", err) } _, err = i.Values(scope, map[string]config.InterpolatedVariable{"foo": v}) if err == nil { t.Fatalf("expected err, got none") } }
func testInterpolate( t *testing.T, i *Interpolater, scope *InterpolationScope, n string, expectedVar ast.Variable) { v, err := config.NewInterpolatedVariable(n) if err != nil { t.Fatalf("err: %s", err) } actual, err := i.Values(scope, map[string]config.InterpolatedVariable{ "foo": v, }) if err != nil { t.Fatalf("err: %s", err) } expected := map[string]ast.Variable{ "foo": expectedVar, } if !reflect.DeepEqual(actual, expected) { t.Fatalf("%q: actual: %#v\nexpected: %#v", n, actual, expected) } }
func TestInterpolater_countIndexInWrongContext(t *testing.T) { i := &Interpolater{} scope := &InterpolationScope{ Path: rootModulePath, } n := "count.index" v, err := config.NewInterpolatedVariable(n) if err != nil { t.Fatalf("err: %s", err) } expectedErr := fmt.Errorf("foo: count.index is only valid within resources") _, err = i.Values(scope, map[string]config.InterpolatedVariable{ "foo": v, }) if !reflect.DeepEqual(expectedErr, err) { t.Fatalf("expected: %#v, got %#v", expectedErr, err) } }