From f7ba3d03419a1f00c7b90a3f4eeefb2a4335df63 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Thu, 21 Oct 2021 23:30:35 +0100 Subject: [PATCH] fix test break for TOML JSON convertion Based on https://github.com/pelletier/go-toml/blob/352072d51afc24d769bd644d0ee25b5f77749fa7/cmd/tomljson/main.go#L56 Commit 0f7345ba76c7a91506ce3363f1c5301cbbc1f542 updated toml library version, however, the library have changed its check logic for input. This issue is now fixed. --- infra/conf/json/toml.go | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/infra/conf/json/toml.go b/infra/conf/json/toml.go index 5c04504e2..ca5c67241 100644 --- a/infra/conf/json/toml.go +++ b/infra/conf/json/toml.go @@ -1,20 +1,36 @@ package json import ( + "bytes" "encoding/json" + "io" "github.com/pelletier/go-toml" ) // FromTOML convert toml to json func FromTOML(v []byte) ([]byte, error) { - m := make(map[string]interface{}) - if err := toml.Unmarshal(v, &m); err != nil { - return nil, err - } - j, err := json.Marshal(m) + tomlReader := bytes.NewReader(v) + jsonStr, err := jsonFromTomlReader(tomlReader) if err != nil { return nil, err } - return j, nil + return []byte(jsonStr), nil +} + +func jsonFromTomlReader(r io.Reader) (string, error) { + tree, err := toml.LoadReader(r) + if err != nil { + return "", err + } + return mapToJSON(tree) +} + +func mapToJSON(tree *toml.Tree) (string, error) { + treeMap := tree.ToMap() + bytes, err := json.MarshalIndent(treeMap, "", " ") + if err != nil { + return "", err + } + return string(bytes[:]), nil }