git.delta.rocks / jrsonnet / refs/commits / 5ac33cfd81f9

difftreelog

test run go-jsonnet testsuite

kryzrlkuYaroslav Bolyukin2026-02-08parent: #a7797f2.patch.diff
in: master

181 files changed

modifiedtests/.gitignorediffbeforeafterboth
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -1 +1,2 @@
 /cpp_test_suite
+/go_testdata
modifiedtests/Cargo.tomldiffbeforeafterboth
--- a/tests/Cargo.toml
+++ b/tests/Cargo.toml
@@ -1,7 +1,7 @@
 [package]
 name = "tests"
 version = "0.1.0"
-edition = "2021"
+edition = "2024"
 publish = false
 
 [lints]
modifiedtests/cpp_test_suite_golden_override/error.function_infinite_default.jsonnet.goldendiffbeforeafterboth
--- a/tests/cpp_test_suite_golden_override/error.function_infinite_default.jsonnet.golden
+++ b/tests/cpp_test_suite_golden_override/error.function_infinite_default.jsonnet.golden
@@ -1 +1,5 @@
-runtime error: tried to manifest function
\ No newline at end of file
+infinite recursion detected
+    error.function_infinite_default.jsonnet:17:17-19: local <x> access
+    error.function_infinite_default.jsonnet:17:12-14: local <y> access
+    error.function_infinite_default.jsonnet:17:20-22: local <x> access
+    during TLA call
\ No newline at end of file
modifiedtests/cpp_test_suite_golden_override/error.function_no_default_arg.jsonnet.goldendiffbeforeafterboth
--- a/tests/cpp_test_suite_golden_override/error.function_no_default_arg.jsonnet.golden
+++ b/tests/cpp_test_suite_golden_override/error.function_no_default_arg.jsonnet.golden
@@ -1 +1,3 @@
-runtime error: tried to manifest function
\ No newline at end of file
+function argument is not passed: a
+Function has the following signature: (a = <default>, b)
+    during TLA call
\ No newline at end of file
modifiedtests/cpp_test_suite_golden_override/error.top_level_func.jsonnet.goldendiffbeforeafterboth
--- a/tests/cpp_test_suite_golden_override/error.top_level_func.jsonnet.golden
+++ b/tests/cpp_test_suite_golden_override/error.top_level_func.jsonnet.golden
@@ -1 +1,3 @@
-runtime error: tried to manifest function
\ No newline at end of file
+function argument is not passed: name
+Function has the following signature: (name)
+    during TLA call
\ No newline at end of file
addedtests/go_testdata_golden_override/array_comp_try_iterate_over_empty_string.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/array_comp_try_iterate_over_empty_string.jsonnet.golden
@@ -0,0 +1 @@
+for loop can only iterate over arrays
\ No newline at end of file
addedtests/go_testdata_golden_override/array_comp_try_iterate_over_obj.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/array_comp_try_iterate_over_obj.jsonnet.golden
@@ -0,0 +1 @@
+for loop can only iterate over arrays
\ No newline at end of file
addedtests/go_testdata_golden_override/array_comp_try_iterate_over_string.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/array_comp_try_iterate_over_string.jsonnet.golden
@@ -0,0 +1 @@
+for loop can only iterate over arrays
\ No newline at end of file
addedtests/go_testdata_golden_override/array_out_of_bounds.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/array_out_of_bounds.jsonnet.golden
@@ -0,0 +1 @@
+array out of bounds: 0 is not within [0,0)
\ No newline at end of file
addedtests/go_testdata_golden_override/array_out_of_bounds2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/array_out_of_bounds2.jsonnet.golden
@@ -0,0 +1 @@
+array out of bounds: 3 is not within [0,3)
\ No newline at end of file
addedtests/go_testdata_golden_override/array_out_of_bounds3.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/array_out_of_bounds3.jsonnet.golden
@@ -0,0 +1 @@
+array out of bounds: -1 is not within [0,0)
\ No newline at end of file
addedtests/go_testdata_golden_override/array_out_of_bounds4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/array_out_of_bounds4.jsonnet.golden
@@ -0,0 +1 @@
+array out of bounds: 42 is not within [0,3)
\ No newline at end of file
addedtests/go_testdata_golden_override/array_plus_bad.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/array_plus_bad.jsonnet.golden
@@ -0,0 +1 @@
+binary operation array + number is not implemented
\ No newline at end of file
addedtests/go_testdata_golden_override/arrcomp5.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/arrcomp5.jsonnet.golden
@@ -0,0 +1,4 @@
+local is not defined: x
+    arrcomp5.jsonnet:1:14-16: local <x> access
+    arrcomp5.jsonnet:1:2-4:   local <y> access
+    elem <0> evaluation
\ No newline at end of file
addedtests/go_testdata_golden_override/arrcomp_if4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/arrcomp_if4.jsonnet.golden
@@ -0,0 +1,2 @@
+local is not defined: y
+    arrcomp_if4.jsonnet:1:33-35: local <y> access
\ No newline at end of file
addedtests/go_testdata_golden_override/arrcomp_if6.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/arrcomp_if6.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: x
+    arrcomp_if6.jsonnet:1:20-30: error statement
\ No newline at end of file
addedtests/go_testdata_golden_override/arrcomp_if7.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/arrcomp_if7.jsonnet.golden
@@ -0,0 +1 @@
+type error: expected boolean, got number
\ No newline at end of file
addedtests/go_testdata_golden_override/assert3.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/assert3.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+    assert3.jsonnet:1:8-17: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/assert_equal4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/assert_equal4.jsonnet.golden
@@ -0,0 +1,8 @@
+runtime error: assertion failed: A != B
+A: {
+  "x": 1
+}
+B: {
+  "x": 2
+}
+    assert_equal4.jsonnet:1:1-33: function <builtin_assert_equal> call
\ No newline at end of file
addedtests/go_testdata_golden_override/assert_equal5.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/assert_equal5.jsonnet.golden
@@ -0,0 +1,10 @@
+runtime error: assertion failed: A != B
+A: <A>
+
+ 
+</A>
+B: <B>
+
+
+</B>
+    assert_equal5.jsonnet:1:1-30: function <builtin_assert_equal> call
\ No newline at end of file
addedtests/go_testdata_golden_override/assert_equal6.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/assert_equal6.jsonnet.golden
@@ -0,0 +1,8 @@
+runtime error: assertion failed: A != B
+A: <A>
+
+</A>
+B: <B>
+
+</B>
+    assert_equal6.jsonnet:1:1-35: function <builtin_assert_equal> call
\ No newline at end of file
addedtests/go_testdata_golden_override/assert_failed.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/assert_failed.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+    assert_failed.jsonnet:1:8-14: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/assert_failed_custom.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/assert_failed_custom.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: Custom Message
+    assert_failed_custom.jsonnet:1:8-14: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/bad_function_call.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bad_function_call.jsonnet.golden
@@ -0,0 +1,3 @@
+function argument is not passed: x
+Function has the following signature: (x)
+    bad_function_call.jsonnet:1:1-19: function <anonymous> call
\ No newline at end of file
addedtests/go_testdata_golden_override/bad_function_call2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bad_function_call2.jsonnet.golden
@@ -0,0 +1,3 @@
+too many args, function has 1
+Function has the following signature: (x)
+    bad_function_call2.jsonnet:1:1-23: function <anonymous> call
\ No newline at end of file
addedtests/go_testdata_golden_override/bad_function_call_and_error.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bad_function_call_and_error.jsonnet.golden
@@ -0,0 +1,3 @@
+too many args, function has 1
+Function has the following signature: (x)
+    bad_function_call_and_error.jsonnet:1:1-39: function <anonymous> call
\ No newline at end of file
addedtests/go_testdata_golden_override/bad_index_array.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bad_index_array.jsonnet.golden
@@ -0,0 +1 @@
+attempted to index array with string xxx
\ No newline at end of file
addedtests/go_testdata_golden_override/bad_index_object.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bad_index_object.jsonnet.golden
@@ -0,0 +1 @@
+object index type should be string, got number
\ No newline at end of file
addedtests/go_testdata_golden_override/bad_index_string.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bad_index_string.jsonnet.golden
@@ -0,0 +1 @@
+string index type should be number, got string
\ No newline at end of file
addedtests/go_testdata_golden_override/binaryNot2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/binaryNot2.jsonnet.golden
@@ -0,0 +1 @@
+operator ~ does not operate on type string
\ No newline at end of file
addedtests/go_testdata_golden_override/bitwise_and3.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bitwise_and3.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: numberic value outside of safe integer range for bitwise operation
\ No newline at end of file
addedtests/go_testdata_golden_override/bitwise_and4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bitwise_and4.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: x
+    bitwise_and4.jsonnet:1:5-15: error statement
\ No newline at end of file
addedtests/go_testdata_golden_override/bitwise_and7.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bitwise_and7.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: numberic value outside of safe integer range for bitwise operation
\ No newline at end of file
addedtests/go_testdata_golden_override/bitwise_or10.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bitwise_or10.jsonnet.golden
@@ -0,0 +1 @@
+binary operation string | number is not implemented
\ No newline at end of file
addedtests/go_testdata_golden_override/bitwise_shift4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bitwise_shift4.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: shift by negative exponent
\ No newline at end of file
addedtests/go_testdata_golden_override/bitwise_shift6.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bitwise_shift6.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: shift by negative exponent
\ No newline at end of file
addedtests/go_testdata_golden_override/bitwise_xor7.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/bitwise_xor7.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: x
+    bitwise_xor7.jsonnet:1:5-15: error statement
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinBase64DecodeBytes_high_codepoint.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinBase64DecodeBytes_high_codepoint.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: invalid base64: Invalid symbol 196, offset 0.
+    builtinBase64DecodeBytes_high_codepoint.jsonnet:1:1-30: function <builtin_base64_decode_bytes> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinBase64DecodeBytes_invalid_base64_data.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinBase64DecodeBytes_invalid_base64_data.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: invalid base64: Invalid input length: 5
+    builtinBase64DecodeBytes_invalid_base64_data.jsonnet:1:1-32: function <builtin_base64_decode_bytes> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinBase64DecodeBytes_wrong_type.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinBase64DecodeBytes_wrong_type.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected string, got number
+    argument <str> evaluation
+    builtinBase64DecodeBytes_wrong_type.jsonnet:1:1-26: function <builtin_base64_decode_bytes> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinBase64Decode_high_codepoint.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinBase64Decode_high_codepoint.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: invalid base64: Invalid symbol 196, offset 0.
+    builtinBase64Decode_high_codepoint.jsonnet:1:1-25: function <builtin_base64_decode> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinBase64Decode_invalid_base64_data.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinBase64Decode_invalid_base64_data.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: invalid base64: Invalid input length: 5
+    builtinBase64Decode_invalid_base64_data.jsonnet:1:1-27: function <builtin_base64_decode> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinBase64Decode_wrong_type.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinBase64Decode_wrong_type.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected string, got number
+    argument <str> evaluation
+    builtinBase64Decode_wrong_type.jsonnet:1:1-21: function <builtin_base64_decode> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinBase64_invalid_byte_array.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinBase64_invalid_byte_array.jsonnet.golden
@@ -0,0 +1,5 @@
+type error: every failed from string | Array<BoundedNumber<0, 255>>:
+  - expected string, got array
+  - expected BoundedNumber<0, 255>, got string at self[1]
+    argument <input> evaluation
+    builtinBase64_invalid_byte_array.jsonnet:1:1-24: function <builtin_base64> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinBase64_invalid_byte_array1.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinBase64_invalid_byte_array1.jsonnet.golden
@@ -0,0 +1,5 @@
+type error: every failed from string | Array<BoundedNumber<0, 255>>:
+  - expected string, got array
+  - number out of bounds: -1 not in 0..255 at self[1]
+    argument <input> evaluation
+    builtinBase64_invalid_byte_array1.jsonnet:1:1-21: function <builtin_base64> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinBase64_invalid_byte_array2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinBase64_invalid_byte_array2.jsonnet.golden
@@ -0,0 +1,5 @@
+type error: every failed from string | Array<BoundedNumber<0, 255>>:
+  - expected string, got array
+  - number out of bounds: 256 not in 0..255 at self[1]
+    argument <input> evaluation
+    builtinBase64_invalid_byte_array2.jsonnet:1:1-22: function <builtin_base64> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinBase64_non_string_non_array.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinBase64_non_string_non_array.jsonnet.golden
@@ -0,0 +1,5 @@
+type error: every failed from string | Array<BoundedNumber<0, 255>>:
+  - expected string, got number
+  - expected Array<BoundedNumber<0, 255>>, got number
+    argument <input> evaluation
+    builtinBase64_non_string_non_array.jsonnet:1:1-15: function <builtin_base64> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinChar3.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinChar3.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: number out of bounds: -1 not in 0..4294967295
+    argument <n> evaluation
+    builtinChar3.jsonnet:1:1-14: function <builtin_char> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinChar5.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinChar5.jsonnet.golden
@@ -0,0 +1,2 @@
+invalid unicode codepoint: 1114112
+    builtinChar5.jsonnet:2:1-19: function <builtin_char> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinChar7.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinChar7.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected BoundedNumber<0, 4294967295>, got string
+    argument <n> evaluation
+    builtinChar7.jsonnet:1:1-17: function <builtin_char> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinIsEmpty2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinIsEmpty2.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected string, got number
+    argument <str> evaluation
+    builtinIsEmpty2.jsonnet:1:1-17: function <builtin_is_empty> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinObjectFieldsEx_bad.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinObjectFieldsEx_bad.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected object, got number
+    argument <obj> evaluation
+    builtinObjectFieldsEx_bad.jsonnet:1:1-30: function <builtin_object_fields_ex> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinObjectFieldsEx_bad2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinObjectFieldsEx_bad2.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected boolean, got string
+    argument <hidden> evaluation
+    builtinObjectFieldsEx_bad2.jsonnet:1:1-31: function <builtin_object_fields_ex> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinObjectHasExBadBoolean.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinObjectHasExBadBoolean.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected boolean, got string
+    argument <hidden> evaluation
+    builtinObjectHasExBadBoolean.jsonnet:1:1-35: function <builtin_object_has_ex> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinObjectHasExBadField.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinObjectHasExBadField.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected string, got number
+    argument <fname> evaluation
+    builtinObjectHasExBadField.jsonnet:1:1-32: function <builtin_object_has_ex> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinObjectHasExBadObject.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinObjectHasExBadObject.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected object, got number
+    argument <obj> evaluation
+    builtinObjectHasExBadObject.jsonnet:1:1-33: function <builtin_object_has_ex> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinReverse_not_array.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinReverse_not_array.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected array, got boolean
+    argument <arr> evaluation
+    builtinReverse_not_array.jsonnet:1:1-20: function <builtin_reverse> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinSplitLimitR5.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinSplitLimitR5.jsonnet.golden
@@ -0,0 +1,5 @@
+type error: every failed from BoundedNumber<0, 9007199254740991> | BoundedNumber<-1, -1>:
+  - number out of bounds: -2 not in 0..9007199254740991
+  - number out of bounds: -2 not in -1..-1
+    argument <maxsplits> evaluation
+    builtinSplitLimitR5.jsonnet:1:1-45: function <builtin_splitlimitr> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinSubStr_first_param_not_string.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinSubStr_first_param_not_string.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected string, got number
+    argument <str> evaluation
+    builtinSubStr_first_param_not_string.jsonnet:1:1-21: function <builtin_substr> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinSubStr_second_parameter_not_integer.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinSubStr_second_parameter_not_integer.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: cannot convert number with fractional part to usize
+    argument <from> evaluation
+    builtinSubStr_second_parameter_not_integer.jsonnet:1:1-29: function <builtin_substr> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinSubStr_second_parameter_not_number.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinSubStr_second_parameter_not_number.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected BoundedNumber<0, 9007199254740991>, got string
+    argument <from> evaluation
+    builtinSubStr_second_parameter_not_number.jsonnet:1:1-31: function <builtin_substr> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinSubStr_third_parameter_less_then_zero.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinSubStr_third_parameter_less_then_zero.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: number out of bounds: -1 not in 0..9007199254740991
+    argument <len> evaluation
+    builtinSubStr_third_parameter_less_then_zero.jsonnet:1:1-28: function <builtin_substr> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinSubStr_third_parameter_not_integer.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinSubStr_third_parameter_not_integer.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: cannot convert number with fractional part to usize
+    argument <len> evaluation
+    builtinSubStr_third_parameter_not_integer.jsonnet:1:1-29: function <builtin_substr> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinSubStr_third_parameter_not_number.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinSubStr_third_parameter_not_number.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected BoundedNumber<0, 9007199254740991>, got string
+    argument <len> evaluation
+    builtinSubStr_third_parameter_not_number.jsonnet:1:1-31: function <builtin_substr> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinTrim4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinTrim4.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected string, got number
+    argument <str> evaluation
+    builtinTrim4.jsonnet:1:1-14: function <builtin_trim> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinXnor2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinXnor2.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected boolean, got string
+    argument <x> evaluation
+    builtinXnor2.jsonnet:1:1-25: function <builtin_xnor> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtinXor2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtinXor2.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected boolean, got string
+    argument <x> evaluation
+    builtinXor2.jsonnet:1:1-24: function <builtin_xor> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_exp3.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_exp3.jsonnet.golden
@@ -0,0 +1,2 @@
+convert num value: non-finite
+    builtin_exp3.jsonnet:1:1-15: function <builtin_exp> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_exp5.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_exp5.jsonnet.golden
@@ -0,0 +1,2 @@
+convert num value: non-finite
+    builtin_exp5.jsonnet:1:1-32: function <builtin_exp> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_log5.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_log5.jsonnet.golden
@@ -0,0 +1,2 @@
+convert num value: non-finite
+    builtin_log5.jsonnet:1:1-12: function <builtin_log> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_log7.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_log7.jsonnet.golden
@@ -0,0 +1,2 @@
+convert num value: non-finite
+    builtin_log7.jsonnet:1:1-13: function <builtin_log> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_log8.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_log8.jsonnet.golden
@@ -0,0 +1,2 @@
+convert num value: non-finite
+    builtin_log8.jsonnet:1:1-25: function <builtin_log> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_manifestTomlEx_array.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_manifestTomlEx_array.jsonnet.golden
@@ -0,0 +1,4 @@
+type error: expected object, got array
+    argument <value> evaluation
+    builtin_manifestTomlEx_array.jsonnet:11:10-42: function <builtin_manifest_toml_ex> call
+    field <array> evaluation
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_manifestTomlEx_null.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_manifestTomlEx_null.jsonnet.golden
@@ -0,0 +1,4 @@
+type error: expected object, got null
+    argument <value> evaluation
+    builtin_manifestTomlEx_null.jsonnet:2:11-43: function <builtin_manifest_toml_ex> call
+    field <null> evaluation
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_member_object_invalid.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_member_object_invalid.jsonnet.golden
@@ -0,0 +1,5 @@
+type error: every failed from array | string:
+  - expected array, got object
+  - expected string, got object
+    argument <arr> evaluation
+    builtin_member_object_invalid.jsonnet:1:1-32: function <builtin_member> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_parseInt_invalid.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_parseInt_invalid.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: "hello" is not a base 10 integer
+    builtin_parseInt_invalid.jsonnet:1:1-23: function <builtin_parse_int> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_parseInt_invalid_decimal.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_parseInt_invalid_decimal.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: "123.12" is not a base 10 integer
+    builtin_parseInt_invalid_decimal.jsonnet:1:1-24: function <builtin_parse_int> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_parseInt_invalid_hexadecimal.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_parseInt_invalid_hexadecimal.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: "7B316" is not a base 10 integer
+    builtin_parseInt_invalid_hexadecimal.jsonnet:1:1-23: function <builtin_parse_int> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_sqrt2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_sqrt2.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected BoundedNumber<0, open>, got string
+    argument <x> evaluation
+    builtin_sqrt2.jsonnet:1:1-20: function <builtin_sqrt> call
\ No newline at end of file
addedtests/go_testdata_golden_override/builtin_stripChars_invalid.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/builtin_stripChars_invalid.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected string, got object
+    argument <str> evaluation
+    builtin_stripChars_invalid.jsonnet:1:1-4133: function <builtin_strip_chars> call
\ No newline at end of file
addedtests/go_testdata_golden_override/call_number.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/call_number.jsonnet.golden
@@ -0,0 +1 @@
+only functions can be called, got number
\ No newline at end of file
addedtests/go_testdata_golden_override/div4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/div4.jsonnet.golden
@@ -0,0 +1 @@
+convert num value: non-finite
\ No newline at end of file
addedtests/go_testdata_golden_override/div_by_zero.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/div_by_zero.jsonnet.golden
@@ -0,0 +1 @@
+attempted to divide by zero
\ No newline at end of file
addedtests/go_testdata_golden_override/dollar_bad.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/dollar_bad.jsonnet.golden
@@ -0,0 +1 @@
+self/super/$ are only usable inside objects
\ No newline at end of file
addedtests/go_testdata_golden_override/double_thunk.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/double_thunk.jsonnet.golden
@@ -0,0 +1,4 @@
+runtime error: xxx
+    double_thunk.jsonnet:1:21-33: error statement
+    double_thunk.jsonnet:1:34-36: local <y> access
+    double_thunk.jsonnet:1:37-39: local <x> access
\ No newline at end of file
addedtests/go_testdata_golden_override/error.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/error.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: 42
+    error.jsonnet:1:1-12: error statement
\ No newline at end of file
addedtests/go_testdata_golden_override/error_from_array.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/error_from_array.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: xxx
+    error_from_array.jsonnet:1:2-14: error statement
\ No newline at end of file
addedtests/go_testdata_golden_override/error_from_func.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/error_from_func.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: xxx
+    error_from_func.jsonnet:1:25-33: error statement
+    error_from_func.jsonnet:1:34-45: function <foo> call
\ No newline at end of file
addedtests/go_testdata_golden_override/error_function_fail.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/error_function_fail.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: tried to manifest function
+    error_function_fail.jsonnet:1:1-24: error statement
\ No newline at end of file
addedtests/go_testdata_golden_override/error_hexnumber.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/error_hexnumber.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", ".", "?", "[", "{", <binary op>, EOF, got "x"
+    error_hexnumber.jsonnet:1:2
\ No newline at end of file
addedtests/go_testdata_golden_override/error_in_method.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/error_in_method.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: xxx
+    error_in_method.jsonnet:1:23-31: error statement
+    error_in_method.jsonnet:1:34-49: function <foo> call
\ No newline at end of file
addedtests/go_testdata_golden_override/error_in_object_local.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/error_in_object_local.jsonnet.golden
@@ -0,0 +1,4 @@
+runtime error: xxx
+    error_in_object_local.jsonnet:1:20-30: error statement
+    error_in_object_local.jsonnet:1:36-47: function <foo> call
+    field <baz> evaluation
\ No newline at end of file
addedtests/go_testdata_golden_override/error_object.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/error_object.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: {"blah": 42}
+    error_object.jsonnet:1:1-22: error statement
\ No newline at end of file
addedtests/go_testdata_golden_override/extvar_error.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/extvar_error.jsonnet.golden
@@ -0,0 +1,2 @@
+external variable is not defined: errorVar
+    extvar_error.jsonnet:1:1-24: function <builtin_ext_var> call
\ No newline at end of file
addedtests/go_testdata_golden_override/extvar_hermetic.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/extvar_hermetic.jsonnet.golden
@@ -0,0 +1,2 @@
+external variable is not defined: UndeclaredX
+    extvar_hermetic.jsonnet:1:15-41: function <builtin_ext_var> call
\ No newline at end of file
addedtests/go_testdata_golden_override/extvar_not_a_string.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/extvar_not_a_string.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected string, got number
+    argument <x> evaluation
+    extvar_not_a_string.jsonnet:1:1-16: function <builtin_ext_var> call
\ No newline at end of file
addedtests/go_testdata_golden_override/extvar_static_error.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/extvar_static_error.jsonnet.golden
@@ -0,0 +1,2 @@
+external variable is not defined: staticErrorVar
+    extvar_static_error.jsonnet:1:1-30: function <builtin_ext_var> call
\ No newline at end of file
addedtests/go_testdata_golden_override/extvar_unknown.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/extvar_unknown.jsonnet.golden
@@ -0,0 +1,2 @@
+external variable is not defined: UNKNOWN
+    extvar_unknown.jsonnet:1:1-23: function <builtin_ext_var> call
\ No newline at end of file
addedtests/go_testdata_golden_override/fieldname_not_string.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/fieldname_not_string.jsonnet.golden
@@ -0,0 +1,2 @@
+type error: expected string, got number
+    fieldname_not_string.jsonnet:1:4-9: evaluating field name
\ No newline at end of file
addedtests/go_testdata_golden_override/function_manifested.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/function_manifested.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: tried to manifest function
+    field <f> manifestification
\ No newline at end of file
addedtests/go_testdata_golden_override/function_plus_bad.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/function_plus_bad.jsonnet.golden
@@ -0,0 +1 @@
+binary operation function + number is not implemented
\ No newline at end of file
addedtests/go_testdata_golden_override/function_plus_string.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/function_plus_string.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: tried to manifest function
\ No newline at end of file
addedtests/go_testdata_golden_override/function_too_many_params.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/function_too_many_params.jsonnet.golden
@@ -0,0 +1,3 @@
+function argument is not passed: x
+Function has the following signature: (x)
+    during TLA call
\ No newline at end of file
addedtests/go_testdata_golden_override/import_block_literal.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/import_block_literal.jsonnet.golden
@@ -0,0 +1,2 @@
+can't resolve block_literals_for_imports_are_not_allowed_and_make_exactly_zero_sense
+ from /home/lach/build/jrsonnet-pr/tests/go_testdata/import_block_literal.jsonnet
\ No newline at end of file
addedtests/go_testdata_golden_override/import_computed.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/import_computed.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: computed imports are not supported
\ No newline at end of file
addedtests/go_testdata_golden_override/import_failure_directory.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/import_failure_directory.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: special file can't be imported
\ No newline at end of file
addedtests/go_testdata_golden_override/import_syntax_error.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/import_syntax_error.jsonnet.golden
@@ -0,0 +1,3 @@
+syntax error: expected one of "(", "[", "{", <identifier>, <number>, <string>, <unary op>, ['"'], ['\''], got "EOF"
+    syntax_error.jsonnet:1:5
+    import_syntax_error.jsonnet:1:1-31: import "syntax_error.jsonnet"
\ No newline at end of file
addedtests/go_testdata_golden_override/importbin_block_literal.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/importbin_block_literal.jsonnet.golden
@@ -0,0 +1,2 @@
+can't resolve block_literals_for_imports_are_not_allowed_and_make_exactly_zero_sense
+ from /home/lach/build/jrsonnet-pr/tests/go_testdata/importbin_block_literal.jsonnet
\ No newline at end of file
addedtests/go_testdata_golden_override/importbin_computed.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/importbin_computed.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: computed imports are not supported
\ No newline at end of file
addedtests/go_testdata_golden_override/importstr_block_literal.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/importstr_block_literal.jsonnet.golden
@@ -0,0 +1,2 @@
+can't resolve block_literals_for_imports_are_not_allowed_and_make_exactly_zero_sense
+ from /home/lach/build/jrsonnet-pr/tests/go_testdata/importstr_block_literal.jsonnet
\ No newline at end of file
addedtests/go_testdata_golden_override/importstr_computed.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/importstr_computed.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: computed imports are not supported
\ No newline at end of file
addedtests/go_testdata_golden_override/inf_min_number.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/inf_min_number.jsonnet.golden
@@ -0,0 +1 @@
+convert num value: non-finite
\ No newline at end of file
addedtests/go_testdata_golden_override/inf_mul_number.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/inf_mul_number.jsonnet.golden
@@ -0,0 +1 @@
+convert num value: non-finite
\ No newline at end of file
addedtests/go_testdata_golden_override/inf_sum_number.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/inf_sum_number.jsonnet.golden
@@ -0,0 +1 @@
+convert num value: non-finite
\ No newline at end of file
addedtests/go_testdata_golden_override/insuper4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/insuper4.jsonnet.golden
@@ -0,0 +1 @@
+self/super/$ are only usable inside objects
\ No newline at end of file
addedtests/go_testdata_golden_override/insuper6.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/insuper6.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+    insuper6.jsonnet:1:10-30: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/lazy_operator2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/lazy_operator2.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: should happen
+    lazy_operator2.jsonnet:1:9-31: error statement
\ No newline at end of file
addedtests/go_testdata_golden_override/missing_super.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/missing_super.jsonnet.golden
@@ -0,0 +1,2 @@
+no super found
+    field <x> evaluation
\ No newline at end of file
addedtests/go_testdata_golden_override/native4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/native4.jsonnet.golden
@@ -0,0 +1 @@
+only functions can be called, got null
\ No newline at end of file
addedtests/go_testdata_golden_override/native5.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/native5.jsonnet.golden
@@ -0,0 +1 @@
+only functions can be called, got null
\ No newline at end of file
addedtests/go_testdata_golden_override/native7.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/native7.jsonnet.golden
@@ -0,0 +1 @@
+only functions can be called, got null
\ No newline at end of file
addedtests/go_testdata_golden_override/native_error.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/native_error.jsonnet.golden
@@ -0,0 +1 @@
+only functions can be called, got null
\ No newline at end of file
addedtests/go_testdata_golden_override/native_panic.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/native_panic.jsonnet.golden
@@ -0,0 +1 @@
+only functions can be called, got null
\ No newline at end of file
addedtests/go_testdata_golden_override/nonexistent_import.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/nonexistent_import.jsonnet.golden
@@ -0,0 +1 @@
+can't resolve no chance a file with this name exists from /home/lach/build/jrsonnet-pr/tests/go_testdata/nonexistent_import.jsonnet
\ No newline at end of file
addedtests/go_testdata_golden_override/nonexistent_import_crazy.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/nonexistent_import_crazy.jsonnet.golden
@@ -0,0 +1,3 @@
+can't resolve ąęółńśćźż " ' 
+
+		 from /home/lach/build/jrsonnet-pr/tests/go_testdata/nonexistent_import_crazy.jsonnet
\ No newline at end of file
addedtests/go_testdata_golden_override/number_divided_by_string.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/number_divided_by_string.jsonnet.golden
@@ -0,0 +1 @@
+binary operation number / string is not implemented
\ No newline at end of file
addedtests/go_testdata_golden_override/object_comp_assert.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_comp_assert.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", ".", "?", "[", "{", "}", <binary op>, got "f"
+    object_comp_assert.jsonnet:1:32
\ No newline at end of file
addedtests/go_testdata_golden_override/object_comp_bad_field.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_comp_bad_field.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", ".", "?", "[", "{", "}", <binary op>, got "f"
+    object_comp_bad_field.jsonnet:1:9
\ No newline at end of file
addedtests/go_testdata_golden_override/object_comp_bad_field2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_comp_bad_field2.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", ".", "?", "[", "{", "}", <binary op>, got "f"
+    object_comp_bad_field2.jsonnet:1:11
\ No newline at end of file
addedtests/go_testdata_golden_override/object_comp_duplicate.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_comp_duplicate.jsonnet.golden
@@ -0,0 +1,2 @@
+duplicate field name: x
+    object_comp_duplicate.jsonnet:1:8-10: field <x> initializtion
\ No newline at end of file
addedtests/go_testdata_golden_override/object_comp_err_elem.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_comp_err_elem.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: xxx
+    object_comp_err_elem.jsonnet:1:11-23: error statement
+    field <x> evaluation
\ No newline at end of file
addedtests/go_testdata_golden_override/object_comp_err_index.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_comp_err_index.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: xxx
+    object_comp_err_index.jsonnet:1:4-16: error statement
+    object_comp_err_index.jsonnet:1:4-16: evaluating field name
\ No newline at end of file
addedtests/go_testdata_golden_override/object_comp_illegal.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_comp_illegal.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", ".", "?", "[", "{", "}", <binary op>, got "f"
+    object_comp_illegal.jsonnet:1:15
\ No newline at end of file
addedtests/go_testdata_golden_override/object_comp_int_index.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_comp_int_index.jsonnet.golden
@@ -0,0 +1,2 @@
+type error: expected string, got number
+    object_comp_int_index.jsonnet:1:4-6: evaluating field name
\ No newline at end of file
addedtests/go_testdata_golden_override/object_comp_try_iterate_over_obj.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_comp_try_iterate_over_obj.jsonnet.golden
@@ -0,0 +1 @@
+for loop can only iterate over arrays
\ No newline at end of file
addedtests/go_testdata_golden_override/object_comp_try_iterate_over_string.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_comp_try_iterate_over_string.jsonnet.golden
@@ -0,0 +1 @@
+for loop can only iterate over arrays
\ No newline at end of file
addedtests/go_testdata_golden_override/object_invariant10.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_invariant10.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+    object_invariant10.jsonnet:1:23-29: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/object_invariant11.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_invariant11.jsonnet.golden
@@ -0,0 +1,3 @@
+assert failed: null
+    object_invariant11.jsonnet:1:10-16: assertion failure
+    object_invariant11.jsonnet:1:18-20: field <x> access
\ No newline at end of file
addedtests/go_testdata_golden_override/object_invariant13.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_invariant13.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: x
+    object_invariant13.jsonnet:1:10-20: error statement
+    object_invariant13.jsonnet:1:10-20: assertion condition
\ No newline at end of file
addedtests/go_testdata_golden_override/object_invariant14.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_invariant14.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: xxx
+    object_invariant14.jsonnet:1:10-16: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/object_invariant2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_invariant2.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+    object_invariant2.jsonnet:1:10-16: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/object_invariant7.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_invariant7.jsonnet.golden
@@ -0,0 +1,2 @@
+no super found
+    object_invariant7.jsonnet:1:16-29: assertion condition
\ No newline at end of file
addedtests/go_testdata_golden_override/object_invariant8.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_invariant8.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+    object_invariant8.jsonnet:1:16-28: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/object_invariant9.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_invariant9.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+    object_invariant9.jsonnet:1:23-29: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/object_invariant_plus.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_invariant_plus.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+    object_invariant_plus.jsonnet:1:9-15: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/object_invariant_plus2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_invariant_plus2.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+    object_invariant_plus2.jsonnet:1:25-31: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/object_invariant_plus6.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_invariant_plus6.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: xxx
+    object_invariant_plus6.jsonnet:1:10-16: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/object_plus_bad.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/object_plus_bad.jsonnet.golden
@@ -0,0 +1 @@
+binary operation object + number is not implemented
\ No newline at end of file
addedtests/go_testdata_golden_override/optional_args11.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/optional_args11.jsonnet.golden
@@ -0,0 +1,2 @@
+argument x is already bound
+    optional_args11.jsonnet:1:1-31: function <anonymous> call
\ No newline at end of file
addedtests/go_testdata_golden_override/optional_args13.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/optional_args13.jsonnet.golden
@@ -0,0 +1,3 @@
+function argument is not passed: y
+Function has the following signature: (x, y)
+    optional_args13.jsonnet:1:1-27: function <anonymous> call
\ No newline at end of file
addedtests/go_testdata_golden_override/optional_args8.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/optional_args8.jsonnet.golden
@@ -0,0 +1,2 @@
+parameter y is not defined
+    optional_args8.jsonnet:2:1-11: function <foo> call
\ No newline at end of file
addedtests/go_testdata_golden_override/optional_args9.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/optional_args9.jsonnet.golden
@@ -0,0 +1,2 @@
+argument x is already bound
+    optional_args9.jsonnet:1:1-27: function <anonymous> call
\ No newline at end of file
addedtests/go_testdata_golden_override/or4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/or4.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: xxx
+    or4.jsonnet:1:10-22: error statement
\ No newline at end of file
addedtests/go_testdata_golden_override/or5.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/or5.jsonnet.golden
@@ -0,0 +1 @@
+binary operation string || boolean is not implemented
\ No newline at end of file
addedtests/go_testdata_golden_override/or6.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/or6.jsonnet.golden
@@ -0,0 +1 @@
+binary operation boolean || string is not implemented
\ No newline at end of file
addedtests/go_testdata_golden_override/percent_bad.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/percent_bad.jsonnet.golden
@@ -0,0 +1 @@
+binary operation number % string is not implemented
\ No newline at end of file
addedtests/go_testdata_golden_override/percent_bad2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/percent_bad2.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: too many values to format, expected 1, got 2
+    std.format of x
\ No newline at end of file
addedtests/go_testdata_golden_override/percent_bad3.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/percent_bad3.jsonnet.golden
@@ -0,0 +1 @@
+binary operation function % number is not implemented
\ No newline at end of file
addedtests/go_testdata_golden_override/percent_format_str4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/percent_format_str4.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: too many values to format, expected 2, got 3
+    std.format of x %s
\ No newline at end of file
addedtests/go_testdata_golden_override/percent_format_str5.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/percent_format_str5.jsonnet.golden
@@ -0,0 +1,2 @@
+format error: not enough values
+    std.format of x %s %s
\ No newline at end of file
addedtests/go_testdata_golden_override/percent_format_str6.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/percent_format_str6.jsonnet.golden
@@ -0,0 +1,2 @@
+format error: not enough values
+    std.format of x %s %s
\ No newline at end of file
addedtests/go_testdata_golden_override/percent_format_str7.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/percent_format_str7.jsonnet.golden
@@ -0,0 +1,2 @@
+type error: expected number, got string
+    std.format of x %d
\ No newline at end of file
addedtests/go_testdata_golden_override/percent_mod_int5.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/percent_mod_int5.jsonnet.golden
@@ -0,0 +1 @@
+attempted to divide by zero
\ No newline at end of file
addedtests/go_testdata_golden_override/plus5.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/plus5.jsonnet.golden
@@ -0,0 +1 @@
+binary operation number + function is not implemented
\ No newline at end of file
addedtests/go_testdata_golden_override/pow4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/pow4.jsonnet.golden
@@ -0,0 +1,2 @@
+convert num value: non-finite
+    pow4.jsonnet:1:1-18: function <builtin_pow> call
\ No newline at end of file
addedtests/go_testdata_golden_override/pow7.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/pow7.jsonnet.golden
@@ -0,0 +1,2 @@
+convert num value: non-finite
+    pow7.jsonnet:2:1-24: function <builtin_pow> call
\ No newline at end of file
addedtests/go_testdata_golden_override/pow8.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/pow8.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected number, got string
+    argument <x> evaluation
+    pow8.jsonnet:1:1-20: function <builtin_pow> call
\ No newline at end of file
addedtests/go_testdata_golden_override/pow9.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/pow9.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected number, got string
+    argument <n> evaluation
+    pow9.jsonnet:1:1-20: function <builtin_pow> call
\ No newline at end of file
addedtests/go_testdata_golden_override/recursive_thunk.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/recursive_thunk.jsonnet.golden
@@ -0,0 +1,10 @@
+runtime error: xxx
+    recursive_thunk.jsonnet:1:35-47: error statement
+    recursive_thunk.jsonnet:2:16-39: function <bar> call
+    recursive_thunk.jsonnet:2:20-31: function <foo> call
+    recursive_thunk.jsonnet:1:52-55: local <th> access
+    recursive_thunk.jsonnet:2:16-39: function <bar> call
+    recursive_thunk.jsonnet:2:20-31: function <foo> call
+    recursive_thunk.jsonnet:1:52-55: local <th> access
+    recursive_thunk.jsonnet:2:16-39: function <bar> call
+    recursive_thunk.jsonnet:3:1-8:   function <foo> call
\ No newline at end of file
addedtests/go_testdata_golden_override/stacktrace_assert.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/stacktrace_assert.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+    stacktrace_assert.jsonnet:1:10-16: assertion failure
\ No newline at end of file
addedtests/go_testdata_golden_override/stacktrace_plussuper.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/stacktrace_plussuper.jsonnet.golden
@@ -0,0 +1,2 @@
+binary operation null + object is not implemented
+    field <a> evaluation
\ No newline at end of file
addedtests/go_testdata_golden_override/static_error_eof.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/static_error_eof.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", ",", ".", ";", "?", "[", "{", <binary op>, got "EOF"
+    static_error_eof.jsonnet:1:13
\ No newline at end of file
addedtests/go_testdata_golden_override/std.codepoint3.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/std.codepoint3.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected char, got string
+    argument <str> evaluation
+    std.codepoint3.jsonnet:1:1-21: function <builtin_codepoint> call
\ No newline at end of file
addedtests/go_testdata_golden_override/std.codepoint6.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/std.codepoint6.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected char, got string
+    argument <str> evaluation
+    std.codepoint6.jsonnet:1:1-19: function <builtin_codepoint> call
\ No newline at end of file
addedtests/go_testdata_golden_override/std.codepoint7.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/std.codepoint7.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected char, got string
+    argument <str> evaluation
+    std.codepoint7.jsonnet:2:0-2:0: function <builtin_codepoint> call
\ No newline at end of file
addedtests/go_testdata_golden_override/std.codepoint8.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/std.codepoint8.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected char, got number
+    argument <str> evaluation
+    std.codepoint8.jsonnet:1:1-19: function <builtin_codepoint> call
\ No newline at end of file
addedtests/go_testdata_golden_override/std.filter2.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/std.filter2.jsonnet.golden
@@ -0,0 +1,4 @@
+runtime error: x
+    std.filter2.jsonnet:1:12-22: error statement
+    argument <func> evaluation
+    std.filter2.jsonnet:1:1-27:  function <builtin_filter> call
\ No newline at end of file
addedtests/go_testdata_golden_override/std.filter4.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/std.filter4.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected function, got number
+    argument <func> evaluation
+    std.filter4.jsonnet:1:1-20: function <builtin_filter> call
\ No newline at end of file
addedtests/go_testdata_golden_override/std.filter5.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/std.filter5.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected array, got number
+    argument <arr> evaluation
+    std.filter5.jsonnet:1:1-32: function <builtin_filter> call
\ No newline at end of file
addedtests/go_testdata_golden_override/std.filter6.jsonnet.goldendiffbeforeafterboth
--- /dev/null
+++ b/tests/go_testdata_golden_override/std.filter6.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected function, got number
+    argument <func> evaluation
+    std.filter6.jsonnet:1:1-22: function <builtin_filter> call
\ No newline at end of file
modifiedtests/tests/cpp_test_suite.rsdiffbeforeafterboth
after · tests/tests/cpp_test_suite.rs
1use std::{2	env, fs,3	io::{self, ErrorKind},4	path::{Path, PathBuf},5};67use jrsonnet_evaluator::{8	FileImportResolver, IStr, ObjValueBuilder, State, Val, apply_tla,9	function::TlaArg,10	gc::WithCapacityExt as _,11	manifest::JsonFormat,12	rustc_hash::FxHashMap,13	trace::{CompactFormat, PathResolver, TraceFormat},14};15use jrsonnet_stdlib::ContextInitializer;16mod common;17use common::ContextInitializer as TestContextInitializer;1819fn run(file: &Path, root: &Path) -> String {20	let mut s = State::builder();2122	let std_context = ContextInitializer::new(PathResolver::Relative(root.to_owned()));23	// C++ test suite24	std_context.add_ext_str("var1".into(), "test".into());25	std_context26		.add_ext_code("var2".into(), "{x:1,y:2}")27		.expect("code is valid");2829	// Golang test suite30	std_context31		.add_ext_code("codeVar".into(), "3+3")32		.expect("code is valid");33	std_context.add_ext_str("stringVar".into(), "2 + 2".into());34	std_context35		.add_ext_code(36			"selfRecursiveVar".into(),37			r#"[42, std.extVar("selfRecursiveVar")[0] + 1]"#,38		)39		.expect("code is valid");40	std_context41		.add_ext_code(42			"mutuallyRecursiveVar1".into(),43			r#"[42, std.extVar("mutuallyRecursiveVar2")[0] + 1]"#,44		)45		.expect("code is valid");46	std_context47		.add_ext_code(48			"mutuallyRecursiveVar2".into(),49			r#"[42, std.extVar("mutuallyRecursiveVar1")[0] + 1]"#,50		)51		.expect("code is valid");5253	s.context_initializer((std_context, TestContextInitializer))54		.import_resolver(FileImportResolver::default());55	let s = s.build();5657	let _entered = s.enter();5859	let trace_format = CompactFormat {60		resolver: PathResolver::FileName,61		max_trace: 20,62		padding: 4,63	};6465	let mut v = match s.import(file) {66		Ok(v) => v,67		Err(e) => return trace_format.format(&e).unwrap(),68	};6970	if file71		.file_name()72		.expect("file has basename")73		.to_str()74		.expect("jsonnet testsuite has ascii names")75		.starts_with("tla.")76	{77		let mut args = FxHashMap::new();78		args.insert(IStr::from("var1"), TlaArg::String("test".into()));79		args.insert(80			IStr::from("var2"),81			TlaArg::Val({82				let mut o = ObjValueBuilder::new();8384				o.field("x").value(Val::num(1));85				o.field("y").value(Val::num(2));8687				Val::Obj(o.build())88			}),89		);90		v = apply_tla(&args, v).expect("failed to apply tla");91	} else {92		v = match apply_tla(&FxHashMap::new(), v) {93			Ok(v) => v,94			Err(e) => return trace_format.format(&e).unwrap(),95		};96	}9798	match v.manifest(JsonFormat::default()) {99		Ok(v) => v,100		Err(e) => trace_format.format(&e).unwrap(),101	}102}103104fn read_file(path: &Path) -> io::Result<Option<String>> {105	match fs::read_to_string(path) {106		Ok(v) => Ok(Some(v)),107		Err(e) if e.kind() == ErrorKind::NotFound => Ok(None),108		Err(e) => Err(e),109	}110}111112const SKIPPED: &[&str] = &[113	// C++ tests:114115	// Parser fails with stack overflow. While is a bug, this is a too unusual116	// thing to run untrusted jsonnet code? Will be fixed with nom/rowan.117	"error.parse.deep_array_nesting.jsonnet",118	// Runtime, not static error in jrsonnet119	"error.parse.object_local_clash.jsonnet",120	"error.function_duplicate_param.jsonnet",121	// Too slow to throw due to how lazyness is implemented in jrsonnet122	"error.recursive_object_non_term.jsonnet",123	// In jrsonnet returns the one passed argument, works as Rust's dbg!()124	"error.trace_one_param.jsonnet",125	// In jrsonnet can display any value126	"error.trace_two_param.jsonnet",127	// Depends on unsafe handling of strings as arrays in jsonnet stdlib128	"invariant_manifest.jsonnet",129	// Little bit hard to capture trace logs in this test suite at this moment130	"trace.jsonnet",131	// Go tests:132133	// Something is wrong, go-jsonnet skips safe integer range check here134	"bitwise_or9.jsonnet",135	// Jrsonnet does not use byte strings, all utf8 is converted to bytes first136	"builtinBase64_string_high_codepoint.jsonnet",137	// Split by empty string is string characters, same as everywhere else138	"builtinSplitLimitR6.jsonnet",139	// escapeStringJson only accepts string in jrsonnet140	"builtin_escapeStringJson.jsonnet",141	// golang float formatting is inefficient and not portable142	"builtin_manifestTomlEx.jsonnet",143	"div3.jsonnet",144	"pow6.jsonnet",145	// golang escapes "e" yaml key, does it think it is float?146	"builtin_manifestYamlDoc.jsonnet",147	// Wtf?..148	// Result149	// [150	//   {},151	//   {},152	//   []153	// ]154	// and golden155	// [156	//   {},157	//   {},158	//   []159	// ]160	// did not match structurally:161	//  [162	//    ...163	// -  {164	// -  }165	// +  {166	// +  }167	//    [168	//    ]169	//  ]170	"empty_object_comp.jsonnet",171	"object_hidden.jsonnet",172	// multi output is a CLI part, not an interpreter.173	"multi.jsonnet",174	"multi_no_newline.jsonnet",175	"multi_no_newline_string_output.jsonnet",176	"multi_string_output.jsonnet",177	// Tested otherwise178	"native1.jsonnet",179	"native2.jsonnet",180	"native3.jsonnet",181	"native6.jsonnet",182	// Since when parser should throw an error for that?..183	"number_leading_zero.jsonnet",184	// Jrsonnet has this overload185	"number_times_string.jsonnet",186];187188#[test]189fn cpp_test_suite() -> io::Result<()> {190	use json_structural_diff::JsonDiff;191192	for root_dir in ["cpp_test_suite", "go_testdata"] {193		let root_tests = PathBuf::from(env!("CARGO_MANIFEST_DIR"));194		let root = root_tests.join(root_dir);195		let root_override = root_tests.join(format!("{root_dir}_golden_override"));196197		for entry in fs::read_dir(&root).map_err(|e| io::Error::new(ErrorKind::Other, format!("failed to enumerate cpp_test_suite dir (Note: it needs to be cloned from C++ jsonnet repo for this test): {e}")))? {198		let entry = entry?;199		if !entry.path().extension().map_or(false, |e| e == "jsonnet") {200			continue;201		}202203		if entry204			.path()205			.file_name()206			.and_then(|v| v.to_str())207			.map_or(false, |v| SKIPPED.contains(&v))208		{209			continue;210		}211212		let result = run(&entry.path(), &root);213214		let mut golden_path = entry.path();215		golden_path.set_extension("jsonnet.golden");216217		let mut golden_path2 = entry.path();218		golden_path2.set_extension("golden");219220		let golden_override =221			root_override.join(&golden_path.file_name().expect("file has basename"));222223		// .jsonnet.golden for C++ tests224		let mut golden = read_file(&golden_path)?;225		// .golden for Go tests226		if golden.is_none() && let Some(golden_path) = read_file(&dbg!(golden_path2))? {227			golden = Some(golden_path);228		}229230		// Any of them can be overriden by overrides231		if let Some(golden_path) = read_file(&golden_override)? {232			golden = Some(golden_path);233		}234235		// Otherwise assume test should just not fail and return true.236		let golden = golden.unwrap_or_else(|| "true".to_owned());237238		match (serde_json::from_str(&result), serde_json::from_str(&golden)) {239			(Err(_), Ok(_)) => panic!(240				"unexpected error for golden {}:\n<got>\n{result}\n</got>\n<golden>\n{golden}\n</golden>",241				entry.path().display()242			),243			(Ok(_), Err(_)) => panic!(244				"expected error for golden {}:\n<got>\n{result}\n</got>\n<golden>\n{golden}\n</golden>",245				entry.path().display()246			),247			(Ok(result), Ok(golden)) => {248				// Show diff relative to golden`.249				let diff = JsonDiff::diff_string(&golden, &result, false);250				if let Some(diff) = diff {251					panic!(252						"Result \n{result:#}\n\253							and golden \n{golden:#}\n\254							did not match structurally:\n{diff:#}\n\255							for golden {}",256						entry.path().display()257					);258				}259			}260			(Err(_), Err(_)) => {261				if result != golden.trim_end() {262					if env::var_os("UPDATE_GOLDEN").is_some() {263						fs::write(golden_override, result)?;264					} else {265						panic!(266						"golden didn't match for {}:\n<got>\n{result}\n</got>\n<golden>\n{golden}\n</golden>",267						entry.path().display()268					)269					}270				}271			}272		};273	}274	}275276	Ok(())277}