From 809bed15ce1f67e38c539972679ae61df2e2b9aa Mon Sep 17 00:00:00 2001 From: He-Pin Date: Sat, 4 Jul 2026 13:29:38 +0800 Subject: [PATCH] fix: align assertEqual failure messages --- sjsonnet/src/sjsonnet/stdlib/TypeModule.scala | 11 ++++++----- .../go_test_suite/assert_equal4.jsonnet.golden | 2 +- .../go_test_suite/assert_equal5.jsonnet.golden | 2 +- .../go_test_suite/assert_equal6.jsonnet.golden | 2 +- .../error.assert_equal_official_message.jsonnet | 1 + ...error.assert_equal_official_message.jsonnet.golden | 2 ++ .../test_suite/error.assert_equal_obj.jsonnet.golden | 2 +- .../test_suite/error.assert_equal_str.jsonnet.golden | 2 +- .../resources/test_suite/error.sanity.jsonnet.golden | 2 +- 9 files changed, 15 insertions(+), 11 deletions(-) create mode 100644 sjsonnet/test/resources/new_test_suite/error.assert_equal_official_message.jsonnet create mode 100644 sjsonnet/test/resources/new_test_suite/error.assert_equal_official_message.jsonnet.golden diff --git a/sjsonnet/src/sjsonnet/stdlib/TypeModule.scala b/sjsonnet/src/sjsonnet/stdlib/TypeModule.scala index e2220d471..6a77db6ce 100644 --- a/sjsonnet/src/sjsonnet/stdlib/TypeModule.scala +++ b/sjsonnet/src/sjsonnet/stdlib/TypeModule.scala @@ -137,13 +137,14 @@ object TypeModule extends AbstractFunctionModule { def evalRhs(v1: Eval, v2: Eval, ev: EvalScope, pos: Position): Val = { val a = v1.value val b = v2.value - // Use structural equality first (avoids double materialization on success path) + // Use structural equality first (avoids double materialization on success path). if (ev.equal(a, b)) Val.True(pos) else { - // Only materialize on failure for the error message - val x1 = Materializer(a)(ev) - val x2 = Materializer(b)(ev) - Error.fail("std.assertEqual: " + x1 + " != " + x2) + // Match official std.jsonnet: strings are JSON-escaped, and non-strings are + // stringified through Jsonnet value rendering by the later concatenation. + val x1 = Materializer.stringify(a)(ev) + val x2 = Materializer.stringify(b)(ev) + Error.fail("Assertion failed. " + x1 + " != " + x2) } } } diff --git a/sjsonnet/test/resources/go_test_suite/assert_equal4.jsonnet.golden b/sjsonnet/test/resources/go_test_suite/assert_equal4.jsonnet.golden index b3209c143..f6bd14bb2 100644 --- a/sjsonnet/test/resources/go_test_suite/assert_equal4.jsonnet.golden +++ b/sjsonnet/test/resources/go_test_suite/assert_equal4.jsonnet.golden @@ -1,2 +1,2 @@ -sjsonnet.Error: [std.assertEqual] {"x":1} != {"x":2} +sjsonnet.Error: [std.assertEqual] Assertion failed. {"x": 1} != {"x": 2} at [].(assert_equal4.jsonnet:1:16) diff --git a/sjsonnet/test/resources/go_test_suite/assert_equal5.jsonnet.golden b/sjsonnet/test/resources/go_test_suite/assert_equal5.jsonnet.golden index 276f13600..8a4b8510d 100644 --- a/sjsonnet/test/resources/go_test_suite/assert_equal5.jsonnet.golden +++ b/sjsonnet/test/resources/go_test_suite/assert_equal5.jsonnet.golden @@ -1,2 +1,2 @@ -sjsonnet.Error: [std.assertEqual] "\n " != "\n" +sjsonnet.Error: [std.assertEqual] Assertion failed. "\n " != "\n" at [].(assert_equal5.jsonnet:1:16) diff --git a/sjsonnet/test/resources/go_test_suite/assert_equal6.jsonnet.golden b/sjsonnet/test/resources/go_test_suite/assert_equal6.jsonnet.golden index c945e8eaf..11b584d8a 100644 --- a/sjsonnet/test/resources/go_test_suite/assert_equal6.jsonnet.golden +++ b/sjsonnet/test/resources/go_test_suite/assert_equal6.jsonnet.golden @@ -1,2 +1,2 @@ -sjsonnet.Error: [std.assertEqual] "\u001b[31m" != "" +sjsonnet.Error: [std.assertEqual] Assertion failed. "\u001b[31m" != "" at [].(assert_equal6.jsonnet:1:16) diff --git a/sjsonnet/test/resources/new_test_suite/error.assert_equal_official_message.jsonnet b/sjsonnet/test/resources/new_test_suite/error.assert_equal_official_message.jsonnet new file mode 100644 index 000000000..789e156f0 --- /dev/null +++ b/sjsonnet/test/resources/new_test_suite/error.assert_equal_official_message.jsonnet @@ -0,0 +1 @@ +std.assertEqual({x: 1}, {x: 2}) diff --git a/sjsonnet/test/resources/new_test_suite/error.assert_equal_official_message.jsonnet.golden b/sjsonnet/test/resources/new_test_suite/error.assert_equal_official_message.jsonnet.golden new file mode 100644 index 000000000..61e1c7b08 --- /dev/null +++ b/sjsonnet/test/resources/new_test_suite/error.assert_equal_official_message.jsonnet.golden @@ -0,0 +1,2 @@ +sjsonnet.Error: [std.assertEqual] Assertion failed. {"x": 1} != {"x": 2} + at [].(error.assert_equal_official_message.jsonnet:1:16) diff --git a/sjsonnet/test/resources/test_suite/error.assert_equal_obj.jsonnet.golden b/sjsonnet/test/resources/test_suite/error.assert_equal_obj.jsonnet.golden index c3d5147b0..8b70118c8 100644 --- a/sjsonnet/test/resources/test_suite/error.assert_equal_obj.jsonnet.golden +++ b/sjsonnet/test/resources/test_suite/error.assert_equal_obj.jsonnet.golden @@ -1,2 +1,2 @@ -sjsonnet.Error: [std.assertEqual] {"a":1} != {"b":1} +sjsonnet.Error: [std.assertEqual] Assertion failed. {"a": 1} != {"b": 1} at [].(error.assert_equal_obj.jsonnet:17:16) diff --git a/sjsonnet/test/resources/test_suite/error.assert_equal_str.jsonnet.golden b/sjsonnet/test/resources/test_suite/error.assert_equal_str.jsonnet.golden index afad2b958..f85664210 100644 --- a/sjsonnet/test/resources/test_suite/error.assert_equal_str.jsonnet.golden +++ b/sjsonnet/test/resources/test_suite/error.assert_equal_str.jsonnet.golden @@ -1,2 +1,2 @@ -sjsonnet.Error: [std.assertEqual] "one\ntwo" != "three\nfour\n" +sjsonnet.Error: [std.assertEqual] Assertion failed. "one\ntwo" != "three\nfour\n" at [].(error.assert_equal_str.jsonnet:17:16) diff --git a/sjsonnet/test/resources/test_suite/error.sanity.jsonnet.golden b/sjsonnet/test/resources/test_suite/error.sanity.jsonnet.golden index 496a6f3c8..4b3fa79de 100644 --- a/sjsonnet/test/resources/test_suite/error.sanity.jsonnet.golden +++ b/sjsonnet/test/resources/test_suite/error.sanity.jsonnet.golden @@ -1,2 +1,2 @@ -sjsonnet.Error: [std.assertEqual] 1 != 2 +sjsonnet.Error: [std.assertEqual] Assertion failed. 1 != 2 at [].(error.sanity.jsonnet:17:16)