parser: Indent TOML tables

Fixes #8850
This commit is contained in:
Bjørn Erik Pedersen 2021-08-04 11:33:30 +02:00
parent d6c8cd7718
commit 9bba9a3a98
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F
2 changed files with 82 additions and 82 deletions

View file

@ -46,7 +46,9 @@ func InterfaceToConfig(in interface{}, format metadecoders.Format, w io.Writer)
return err return err
case metadecoders.TOML: case metadecoders.TOML:
return toml.NewEncoder(w).Encode(in) enc := toml.NewEncoder(w)
enc.SetIndentTables(true)
return enc.Encode(in)
case metadecoders.JSON: case metadecoders.JSON:
b, err := json.MarshalIndent(in, "", " ") b, err := json.MarshalIndent(in, "", " ")
if err != nil { if err != nil {

View file

@ -30,6 +30,8 @@ func TestRemarshal(t *testing.T) {
ns := New(newDeps(v)) ns := New(newDeps(v))
c := qt.New(t) c := qt.New(t)
c.Run("Roundtrip variants", func(c *qt.C) {
tomlExample := `title = 'Test Metadata' tomlExample := `title = 'Test Metadata'
[[resources]] [[resources]]
@ -107,17 +109,10 @@ title: Test Metadata
} }
} }
}
func TestRemarshalComments(t *testing.T) { })
t.Parallel()
v := config.New()
v.Set("contentDir", "content")
ns := New(newDeps(v))
c := qt.New(t)
c.Run("Comments", func(c *qt.C) {
input := ` input := `
Hugo = "Rules" Hugo = "Rules"
@ -150,30 +145,24 @@ a = 'b'
t.Fatalf("[%s] Expected \n%v\ngot\n>>%v\ndiff:\n%v\n", fromTo, expected, converted, diff) t.Fatalf("[%s] Expected \n%v\ngot\n>>%v\ndiff:\n%v\n", fromTo, expected, converted, diff)
} }
} }
} })
func TestTestRemarshalError(t *testing.T) { // Issue 8850
t.Parallel() c.Run("TOML Indent", func(c *qt.C) {
c := qt.New(t) input := `
v := config.New() [params]
v.Set("contentDir", "content") [params.variables]
ns := New(newDeps(v)) a = "b"
_, err := ns.Remarshal("asdf", "asdf") `
c.Assert(err, qt.Not(qt.IsNil))
_, err = ns.Remarshal("json", "asdf") converted, err := ns.Remarshal("toml", input)
c.Assert(err, qt.Not(qt.IsNil)) c.Assert(err, qt.IsNil)
} c.Assert(converted, qt.Equals, "[params]\n [params.variables]\n a = 'b'\n\n\n")
})
func TestTestRemarshalMapInput(t *testing.T) {
t.Parallel()
c := qt.New(t)
v := config.New()
v.Set("contentDir", "content")
ns := New(newDeps(v))
c.Run("Map input", func(c *qt.C) {
input := map[string]interface{}{ input := map[string]interface{}{
"hello": "world", "hello": "world",
} }
@ -181,4 +170,13 @@ func TestTestRemarshalMapInput(t *testing.T) {
output, err := ns.Remarshal("toml", input) output, err := ns.Remarshal("toml", input)
c.Assert(err, qt.IsNil) c.Assert(err, qt.IsNil)
c.Assert(output, qt.Equals, "hello = 'world'\n") c.Assert(output, qt.Equals, "hello = 'world'\n")
})
c.Run("Error", func(c *qt.C) {
_, err := ns.Remarshal("asdf", "asdf")
c.Assert(err, qt.Not(qt.IsNil))
_, err = ns.Remarshal("json", "asdf")
c.Assert(err, qt.Not(qt.IsNil))
})
} }