From b86c9931b19cba05df1264ab99d06cf5dcdb4f4e Mon Sep 17 00:00:00 2001 From: Denis Mishin Date: Fri, 7 Mar 2025 20:20:27 -0500 Subject: [PATCH] testutil: use cmp.Diff in protobuf json assertion (#5517) --- internal/testutil/testutil.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/internal/testutil/testutil.go b/internal/testutil/testutil.go index c926da0c5..c37ca46a0 100644 --- a/internal/testutil/testutil.go +++ b/internal/testutil/testutil.go @@ -29,10 +29,18 @@ func AssertProtoEqual(t *testing.T, expected, actual any, msgAndArgs ...any) boo // AssertProtoJSONEqual asserts that a protobuf message matches the given JSON. The protoMsg can also be a slice // of protobuf messages. -func AssertProtoJSONEqual(t *testing.T, expected string, protoMsg any, msgAndArgs ...any) bool { +func AssertProtoJSONEqual(t *testing.T, expectedJSON string, protoMsg any, msgAndArgs ...any) bool { t.Helper() - formattedJSON := formattedProtoJSON(protoMsg) - return assert.Equal(t, reformatJSON(json.RawMessage(expected)), formattedJSON, msgAndArgs...) + var expected any + err := json.Unmarshal([]byte(expectedJSON), &expected) + require.NoError(t, err) + + var proto any + err = json.Unmarshal([]byte(formattedProtoJSON(protoMsg)), &proto) + require.NoError(t, err) + + diff := cmp.Diff(expected, proto) + return assert.Empty(t, diff, msgAndArgs...) } func formattedProtoJSON(protoMsg any) string {