diff --git a/i18n/parse_test.go b/i18n/parse_test.go index 3272e52..ebfa49d 100644 --- a/i18n/parse_test.go +++ b/i18n/parse_test.go @@ -32,6 +32,20 @@ func TestParseMessageFileBytes(t *testing.T) { }}, }, }, + { + name: "nested with reserved key", + file: `{"nested": {"description": {"other": "world"}}}`, + path: "en.json", + messageFile: &MessageFile{ + Path: "en.json", + Tag: language.English, + Format: "json", + Messages: []*Message{{ + ID: "nested.description", + Other: "world", + }}, + }, + }, { name: "basic test with dot separator in key", file: `{"prepended.hello": "world"}`, @@ -179,13 +193,21 @@ outer: t.Errorf("expected format %q; got %q", testCase.messageFile.Format, actual.Format) } if !equalMessages(actual.Messages, testCase.messageFile.Messages) { - t.Errorf("expected %#v; got %#v", testCase.messageFile.Messages, actual.Messages) + t.Errorf("expected %#v; got %#v", deref(testCase.messageFile.Messages), deref(actual.Messages)) } } }) } } +func deref(mptrs []*Message) []Message { + messages := make([]Message, len(mptrs)) + for i, m := range mptrs { + messages[i] = *m + } + return messages +} + // equalMessages compares two slices of messages, ignoring private fields and order. // Sorts both input slices, which are therefore modified by this function. func equalMessages(m1, m2 []*Message) bool {