From 5d41d840f5fcd79d1ca61717a8a4335c5c29c9ab Mon Sep 17 00:00:00 2001 From: Steven Bogacz Date: Mon, 26 Aug 2024 16:04:42 -0600 Subject: [PATCH] fix: when parsing map length entries look for the key exactly equalling % rather than being prefixed with it, to allow for map keys names to start with % --- helper/schema/field_reader_diff.go | 4 +++- helper/schema/field_reader_diff_test.go | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/helper/schema/field_reader_diff.go b/helper/schema/field_reader_diff.go index c9da00e9119..1678089fef1 100644 --- a/helper/schema/field_reader_diff.go +++ b/helper/schema/field_reader_diff.go @@ -112,7 +112,9 @@ func (r *DiffFieldReader) readMap( if !strings.HasPrefix(k, prefix) { continue } - if strings.HasPrefix(k, prefix+"%") { + + key := k[len(prefix):] + if key == "%" { // Ignore the count field continue } diff --git a/helper/schema/field_reader_diff_test.go b/helper/schema/field_reader_diff_test.go index 55bee1b4508..0f1582da6c3 100644 --- a/helper/schema/field_reader_diff_test.go +++ b/helper/schema/field_reader_diff_test.go @@ -131,6 +131,10 @@ func TestDiffFieldReader_MapHandling(t *testing.T) { Old: "", New: "qux", }, + "tags.%baz": { + Old: "", + New: "%qux", + }, }, }, Source: &MapFieldReader{ @@ -148,8 +152,9 @@ func TestDiffFieldReader_MapHandling(t *testing.T) { } expected := map[string]interface{}{ - "foo": "bar", - "baz": "qux", + "foo": "bar", + "baz": "qux", + "%baz": "%qux", } if !reflect.DeepEqual(expected, result.Value) {