Merge pull request #277 from hashicorp/decode-string-booleans

Decode string booleans
This commit is contained in:
Lang Martin 2019-06-11 08:32:18 -04:00 committed by GitHub
commit cf7d376da9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 1 deletions

View File

@ -535,7 +535,7 @@ func (d *decoder) decodeString(name string, node ast.Node, result reflect.Value)
switch n := node.(type) {
case *ast.LiteralType:
switch n.Token.Type {
case token.NUMBER:
case token.NUMBER, token.FLOAT, token.BOOL:
result.Set(reflect.ValueOf(n.Token.Text).Convert(result.Type()))
return nil
case token.STRING, token.HEREDOC:

View File

@ -951,6 +951,28 @@ func TestDecode_float64(t *testing.T) {
}
}
func TestDecode_string(t *testing.T) {
type value struct {
A string `hcl:"a"`
B string `hcl:"b"`
C string `hcl:"c"`
D string `hcl:"d"`
E string `hcl:"e"`
}
got := value{}
err := Decode(&got, testReadFile(t, "string.hcl"))
if err != nil {
t.Fatal(err)
}
want := value{"s", "2", "2.718", "true", "false"}
if !reflect.DeepEqual(want, got) {
t.Fatalf("expected %#v; got %#v", want, got)
}
}
func TestDecode_intStringAliased(t *testing.T) {
var value struct {
Count time.Duration

5
test-fixtures/string.hcl Normal file
View File

@ -0,0 +1,5 @@
a = "s"
b = 2
c = 2.718
d = true
e = false