From b9b3992cb93a75823a9db69e6493affc18e802c5 Mon Sep 17 00:00:00 2001 From: Michael Sauter Date: Mon, 6 Nov 2023 12:17:56 +0100 Subject: [PATCH] Fix displayed existing keys --- cmd/render/render.go | 3 +++ cmd/render/render_test.go | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/cmd/render/render.go b/cmd/render/render.go index 742ea48..9a9a616 100644 --- a/cmd/render/render.go +++ b/cmd/render/render.go @@ -148,6 +148,9 @@ func collectDataFromMatchingFiles(baseDir, glob string, data map[string]interfac type visitFunc func(path []string, key any, value any) string func assembleRef(path []string, key, value any) string { + if len(path) == 0 { + return fmt.Sprintf(".%s", key) + } return fmt.Sprintf(".%s.%s", strings.Join(path, "."), key) } diff --git a/cmd/render/render_test.go b/cmd/render/render_test.go index 3866536..331152c 100644 --- a/cmd/render/render_test.go +++ b/cmd/render/render_test.go @@ -5,6 +5,7 @@ import ( "strings" "testing" + "github.com/google/go-cmp/cmp" "github.com/opendevstack/ods-pipeline-adoc/internal/testhelper" ) @@ -101,3 +102,25 @@ func TestRenderFailsOnMissingKeys(t *testing.T) { t.Errorf("Error must list valid references, got:\n%s", err) } } + +func TestWalkMap(t *testing.T) { + got := []string{} + data := map[string]any{ + "foo": "bar", + "baz": map[string]any{ + "one": 1, + "two": map[string]any{ + "x": "y", + }, + }, + } + walkMap(data, &got, []string{}, assembleRef) + want := []string{ + ".foo", + ".baz.one", + ".baz.two.x", + } + if diff := cmp.Diff(want, got); diff != "" { + t.Errorf("walkMap() mismatch (-want +got):\n%s", diff) + } +}