difftreelog
test add cpp test suite golden overrides
in: master
98 files changed
tests/.gitignorediffbeforeafterboth--- /dev/null
+++ b/tests/.gitignore
@@ -0,0 +1 @@
+/cpp_test_suite
tests/cpp_test_suite_golden_override/error.01.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.01.jsonnet.golden
@@ -0,0 +1,5 @@
+runtime error: foo
+ error.01.jsonnet:17:29-41: error statement
+ error.01.jsonnet:18:29-40: function <bananas> call
+ error.01.jsonnet:19:28-39: function <oranges> call
+ error.01.jsonnet:20:1-11: function <apples> call
tests/cpp_test_suite_golden_override/error.02.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.02.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: Foo.
+ error.02.jsonnet:17:1-14: error statement
tests/cpp_test_suite_golden_override/error.03.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.03.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: foo
+ error.03.jsonnet:17:21-33: error statement
+ error.03.jsonnet:18:8-10: field <x> access
tests/cpp_test_suite_golden_override/error.04.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.04.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: foo
+ error.04.jsonnet:17:21-33: error statement
+ field <x> evaluation
tests/cpp_test_suite_golden_override/error.05.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.05.jsonnet.golden
@@ -0,0 +1,4 @@
+runtime error: foo
+ error.05.jsonnet:17:21-33: error statement
+ field <x> evaluation
+ field <y> manifestification
tests/cpp_test_suite_golden_override/error.06.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.06.jsonnet.golden
@@ -0,0 +1,3 @@
+attempted to divide by zero
+ error.06.jsonnet:18:22-26: local <err> access
+ error.06.jsonnet:19:1-5: function <f> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.07.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.07.jsonnet.golden
@@ -0,0 +1,4 @@
+runtime error: sarcasm
+ error.07.jsonnet:18:31-47: error statement
+ error.07.jsonnet:18:15-55: function <third> call
+ error.07.jsonnet:19:1-7: local <toxic> access
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.08.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.08.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: {"a": 1, "b": 2, "c": 3}
+ error.08.jsonnet:18:1-9: error statement
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.args_commafodder.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.args_commafodder.jsonnet.golden
@@ -0,0 +1,2 @@
+local is not defined: foo
+ error.args_commafodder.jsonnet:1:1-5: local <foo> access
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.array_fractional_index.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.array_fractional_index.jsonnet.golden
@@ -0,0 +1 @@
+tried to index by fractional value
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.array_index_string.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.array_index_string.jsonnet.golden
@@ -0,0 +1 @@
+attempted to index array with string foo
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.array_large_index.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.array_large_index.jsonnet.golden
@@ -0,0 +1 @@
+array out of bounds: 9223372036854775807 is not within [0,3)
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.array_recursive_manifest.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.array_recursive_manifest.jsonnet.golden
@@ -0,0 +1,201 @@
+stack overflow, try to reduce recursion, or set --max-stack to bigger value
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
+ elem <0> manifestification
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.assert.fail1.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.assert.fail1.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+ error.assert.fail1.jsonnet:20:8-15: assertion failure
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.assert.fail2.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.assert.fail2.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: foo was not equal to bar
+ error.assert.fail2.jsonnet:20:8-15: assertion failure
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.assert_equal_obj.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.assert_equal_obj.jsonnet.golden
@@ -0,0 +1,8 @@
+runtime error: assertion failed: A != B
+A: {
+ "a": 1
+}
+B: {
+ "b": 1
+}
+ error.assert_equal_obj.jsonnet:17:1-37: function <builtin_assert_equal> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.assert_equal_str.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.assert_equal_str.jsonnet.golden
@@ -0,0 +1,11 @@
+runtime error: assertion failed: A != B
+A: <A>
+one
+two
+</A>
+B: <B>
+three
+four
+
+</B>
+ error.assert_equal_str.jsonnet:17:1-46: function <builtin_assert_equal> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.comprehension_spec_object.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.comprehension_spec_object.jsonnet.golden
@@ -0,0 +1 @@
+for loop can only iterate over arrays
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.comprehension_spec_object2.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.comprehension_spec_object2.jsonnet.golden
@@ -0,0 +1 @@
+for loop can only iterate over arrays
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.computed_field_scope.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.computed_field_scope.jsonnet.golden
@@ -0,0 +1,3 @@
+local is not defined: x
+ error.computed_field_scope.jsonnet:17:21-23: local <x> access
+ error.computed_field_scope.jsonnet:17:21-23: evaluating field name
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.decodeUTF8_float.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.decodeUTF8_float.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: cannot convert number with fractional part to u8
+ argument <arr> evaluation
+ error.decodeUTF8_float.jsonnet:1:1-24: function <builtin_decode_utf8> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.decodeUTF8_nan.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.decodeUTF8_nan.jsonnet.golden
@@ -0,0 +1,4 @@
+type error: expected BoundedNumber<0, 255>, got string at self[0]
+ array index 0
+ argument <arr> evaluation
+ error.decodeUTF8_nan.jsonnet:1:1-25: function <builtin_decode_utf8> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.divide_zero.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.divide_zero.jsonnet.golden
@@ -0,0 +1 @@
+attempted to divide by zero
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.equality_function.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.equality_function.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: cannot test equality of functions
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.field_not_exist.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.field_not_exist.jsonnet.golden
@@ -0,0 +1,2 @@
+no such field: y
+ error.field_not_exist.jsonnet:17:10-12: field <y> access
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.format.too_few_values.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.format.too_few_values.jsonnet.golden
@@ -0,0 +1,2 @@
+format error: not enough values
+ std.format of %d %d %d
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.function_duplicate_arg.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.function_duplicate_arg.jsonnet.golden
@@ -0,0 +1,2 @@
+argument x is already bound
+ error.function_duplicate_arg.jsonnet:17:1-30: function <anonymous> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.function_duplicate_param.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.function_duplicate_param.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: tried to manifest function
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.function_infinite_default.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.function_infinite_default.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: tried to manifest function
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.function_no_default_arg.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.function_no_default_arg.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: tried to manifest function
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.function_too_many_args.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.function_too_many_args.jsonnet.golden
@@ -0,0 +1,3 @@
+too many args, function has 2
+Function has the following signature: (a, b)
+ error.function_too_many_args.jsonnet:19:1-14: function <foo> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.import_empty.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.import_empty.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: special file can't be imported
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.import_static-check-failure.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.import_static-check-failure.jsonnet.golden
@@ -0,0 +1,3 @@
+local is not defined: x
+ static_check_failure.jsonnet:2:1-3: local <x> access
+ error.import_static-check-failure.jsonnet:1:1-43: import "lib/static_check_failure.jsonnet"
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.import_syntax-error.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.import_syntax-error.jsonnet.golden
@@ -0,0 +1,3 @@
+syntax error: expected one of "\\\\", "\\u", "\\x", ['"'], ['\\'], [_], got "EOF"
+ syntax_error.jsonnet:1:3
+ error.import_syntax-error.jsonnet:1:1-35: import "lib/syntax_error.jsonnet"
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.inside_equals_array.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.inside_equals_array.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: foobar
+ error.inside_equals_array.jsonnet:18:18-33: error statement
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.inside_equals_object.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.inside_equals_object.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: foobar
+ error.inside_equals_object.jsonnet:18:22-37: error statement
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.inside_tostring_array.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.inside_tostring_array.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: foobar
+ error.inside_tostring_array.jsonnet:17:8-23: error statement
+ elem <2> evaluation
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.inside_tostring_object.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.inside_tostring_object.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: foobar
+ error.inside_tostring_object.jsonnet:17:12-27: error statement
+ field <b> evaluation
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.integer_conversion.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.integer_conversion.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: numberic value outside of safe integer range for bitwise operation
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.integer_left_shift.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.integer_left_shift.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: numberic value outside of safe integer range for bitwise operation
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.integer_left_shift_runtime.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.integer_left_shift_runtime.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: left shift would overflow
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.invariant.avoid_output_change.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.invariant.avoid_output_change.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+ error.invariant.avoid_output_change.jsonnet:18:10-25: assertion failure
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.invariant.equality.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.invariant.equality.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+ error.invariant.equality.jsonnet:17:10-16: assertion failure
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.invariant.option.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.invariant.option.jsonnet.golden
@@ -0,0 +1,6 @@
+type error: expected array, got string
+ argument <a> evaluation
+ error.invariant.option.jsonnet:19:21-56: function <builtin_set_inter> call
+ argument <x> evaluation
+ error.invariant.option.jsonnet:19:10-57: function <builtin_length> call
+ error.invariant.option.jsonnet:19:10-61: assertion condition
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.invariant.simple.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.invariant.simple.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+ error.invariant.simple.jsonnet:18:10-16: assertion failure
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.invariant.simple2.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.invariant.simple2.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: my error message
+ error.invariant.simple2.jsonnet:18:10-17: assertion failure
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.invariant.simple3.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.invariant.simple3.jsonnet.golden
@@ -0,0 +1,3 @@
+runtime error: my error message
+ error.invariant.simple3.jsonnet:18:10-35: error statement
+ error.invariant.simple3.jsonnet:18:10-35: assertion condition
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.manifest_toml_null_value.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.manifest_toml_null_value.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: tried to manifest null
+ error.manifest_toml_null_value.jsonnet:17:1-55: function <builtin_manifest_toml_ex> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.manifest_toml_wrong_type.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.manifest_toml_wrong_type.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected object, got array
+ argument <value> evaluation
+ error.manifest_toml_wrong_type.jsonnet:17:1-30: function <builtin_manifest_toml_ex> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.negative_shfit.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.negative_shfit.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: shift by negative exponent
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.obj_assert.fail1.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.obj_assert.fail1.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: null
+ error.obj_assert.fail1.jsonnet:20:23-30: assertion failure
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.obj_assert.fail2.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.obj_assert.fail2.jsonnet.golden
@@ -0,0 +1,2 @@
+assert failed: foo was not equal to bar
+ error.obj_assert.fail2.jsonnet:20:23-30: assertion failure
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.obj_recursive.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.obj_recursive.jsonnet.golden
@@ -0,0 +1,201 @@
+stack overflow, try to reduce recursion, or set --max-stack to bigger value
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.obj_recursive_manifest.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.obj_recursive_manifest.jsonnet.golden
@@ -0,0 +1,201 @@
+stack overflow, try to reduce recursion, or set --max-stack to bigger value
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
+ field <x> manifestification
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.overflow.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.overflow.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: numbers are finite
+ error.overflow.jsonnet:17:6
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.overflow2.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.overflow2.jsonnet.golden
@@ -0,0 +1 @@
+convert num value: non-finite
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.overflow3.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.overflow3.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: numbers are finite
+ error.overflow3.jsonnet:17:6
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.array_comma.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.array_comma.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", ".", "?", "[", "]", "{", <binary op>, <comma>, got "3"
+ error.parse.array_comma.jsonnet:17:7
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.function_arg_positional_after_named.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.function_arg_positional_after_named.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", ".", "?", "[", "{", <binary op>, <comma>, <named argument>, got ")"
+ error.parse.function_arg_positional_after_named.jsonnet:19:11
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.import_not_literal.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.import_not_literal.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: computed imports are not supported
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.import_text_block.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.import_text_block.jsonnet.golden
@@ -0,0 +1,3 @@
+can't resolve This is a paragraph of text, which is being used in the place of
+a filename. That is quite unusual, and probably not intended.
+ from /home/lach/build/jrsonnet-pr/tests/cpp_test_suite/error.parse.import_text_block.jsonnet
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.index_unterminated.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.index_unterminated.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", ":", "[", "{", <identifier>, <number>, <string>, <unary op>, ['"'], ['\''], got "EOF"
+ error.parse.index_unterminated.jsonnet:17:4
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.method_plus.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.method_plus.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of ":", "::", ":::", got "+"
+ error.parse.method_plus.jsonnet:17:18
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.object_comma.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.object_comma.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", ".", "?", "[", "{", "}", <binary op>, got "z"
+ error.parse.object_comma.jsonnet:17:11
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.object_comprehension_local_clash.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.object_comprehension_local_clash.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", ".", "?", "[", "{", "}", <binary op>, <comma>, got ":"
+ error.parse.object_comprehension_local_clash.jsonnet:17:29
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.self_in_computed_field.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.self_in_computed_field.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "[", "}", <identifier>, <string>, ['"'], ['\''], got "s"
+ error.parse.self_in_computed_field.jsonnet:17:15
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.static_error_bad_number.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.static_error_bad_number.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", "[", "{", <identifier>, <number>, <string>, <unary op>, ['"'], ['\''], got "."
+ error.parse.static_error_bad_number.jsonnet:17:1
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected <escape character>, got "o"
+ error.parse.string.invalid_escape.jsonnet:17:3
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_non_hex.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_non_hex.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected <hex char>, got "t"
+ error.parse.string.invalid_escape_unicode_non_hex.jsonnet:17:7
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_short.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_short.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected <hex char>, got "\n"
+ error.parse.string.invalid_escape_unicode_short.jsonnet:17:7
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_short2.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_short2.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected <hex char>, got "\""
+ error.parse.string.invalid_escape_unicode_short2.jsonnet:17:7
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_short3.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.string.invalid_escape_unicode_short3.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected <hex char>, got "\n"
+ error.parse.string.invalid_escape_unicode_short3.jsonnet:17:7
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.string.unfinished.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.string.unfinished.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "\\\\", "\\u", "\\x", ['"'], ['\\'], [_], got "EOF"
+ error.parse.string.unfinished.jsonnet:17:3
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.string.unfinished2.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.string.unfinished2.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "\\\\", "\\u", "\\x", ['\''], ['\\'], [_], got "EOF"
+ error.parse.string.unfinished2.jsonnet:17:3
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.string_multi_no_newline.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.string_multi_no_newline.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", "[", "{", <identifier>, <number>, <string>, <unary op>, ['"'], ['\''], got "|"
+ error.parse.string_multi_no_newline.jsonnet:17:1
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.text_block_bad_whitespace.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.text_block_bad_whitespace.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", "[", "{", <identifier>, <number>, <string>, <unary op>, ['"'], ['\''], got "|"
+ error.parse.text_block_bad_whitespace.jsonnet:17:1
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.text_block_eof.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.text_block_eof.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", "[", "{", <identifier>, <number>, <string>, <unary op>, ['"'], ['\''], got "|"
+ error.parse.text_block_eof.jsonnet:17:1
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse.text_block_not_terminated.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse.text_block_not_terminated.jsonnet.golden
@@ -0,0 +1,2 @@
+syntax error: expected one of "(", "[", "{", <identifier>, <number>, <string>, <unary op>, ['"'], ['\''], got "|"
+ error.parse.text_block_not_terminated.jsonnet:17:1
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.parse_json.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.parse_json.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: failed to parse json: expected value at line 1 column 1
+ error.parse_json.jsonnet:1:1-30: function <builtin_parse_json> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.recursive_function_nonterm.jsonnet.goldendiffbeforeafterboth1stack overflow, try to reduce recursion, or set --max-stack to bigger value2 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call3 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call4 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call5 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call6 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call7 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call8 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call9 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call10 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call11 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call12 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call13 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call14 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call15 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call16 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call17 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call18 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call19 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call20 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call21 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call22 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call23 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call24 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call25 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call26 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call27 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call28 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call29 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call30 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call31 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call32 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call33 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call34 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call35 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call36 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call37 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call38 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call39 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call40 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call41 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call42 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call43 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call44 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call45 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call46 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call47 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call48 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call49 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call50 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call51 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call52 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call53 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call54 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call55 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call56 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call57 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call58 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call59 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call60 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call61 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call62 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call63 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call64 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call65 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call66 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call67 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call68 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call69 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call70 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call71 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call72 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call73 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call74 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call75 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call76 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call77 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call78 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call79 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call80 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call81 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call82 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call83 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call84 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call85 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call86 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call87 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call88 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call89 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call90 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call91 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call92 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call93 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call94 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call95 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call96 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call97 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call98 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call99 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call100 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call101 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call102 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call103 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call104 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call105 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call106 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call107 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call108 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call109 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call110 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call111 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call112 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call113 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call114 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call115 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call116 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call117 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call118 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call119 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call120 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call121 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call122 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call123 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call124 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call125 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call126 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call127 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call128 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call129 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call130 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call131 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call132 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call133 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call134 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call135 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call136 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call137 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call138 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call139 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call140 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call141 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call142 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call143 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call144 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call145 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call146 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call147 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call148 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call149 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call150 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call151 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call152 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call153 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call154 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call155 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call156 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call157 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call158 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call159 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call160 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call161 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call162 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call163 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call164 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call165 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call166 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call167 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call168 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call169 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call170 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call171 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call172 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call173 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call174 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call175 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call176 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call177 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call178 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call179 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call180 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call181 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call182 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call183 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call184 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call185 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call186 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call187 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call188 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call189 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call190 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call191 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call192 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call193 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call194 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call195 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call196 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call197 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call198 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call199 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call200 error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call201 error.recursive_function_nonterm.jsonnet:20:1-7: function <f> calltests/cpp_test_suite_golden_override/error.recursive_import.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.recursive_import.jsonnet.golden
@@ -0,0 +1,2 @@
+infinite recursion detected
+ error.recursive_import.jsonnet:17:15-55: import "error.recursive_import.jsonnet"
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.sanity.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.sanity.jsonnet.golden
@@ -0,0 +1,4 @@
+runtime error: assertion failed: A != B
+A: 1
+B: 2
+ error.sanity.jsonnet:17:1-23: function <builtin_assert_equal> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.static_error_self.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.static_error_self.jsonnet.golden
@@ -0,0 +1,2 @@
+self is only usable inside objects
+ elem <0> evaluation
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.static_error_super.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.static_error_super.jsonnet.golden
@@ -0,0 +1,2 @@
+no super found
+ elem <0> evaluation
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.static_error_var_not_exist.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.static_error_var_not_exist.jsonnet.golden
@@ -0,0 +1,3 @@
+local is not defined: tmp2
+There is a local with similar name present: tmp
+ error.static_error_var_not_exist.jsonnet:17:16-21: local <tmp2> access
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.std_join_types1.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.std_join_types1.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: in std.join all items should be strings
+ error.std_join_types1.jsonnet:17:1-27: function <builtin_join> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.std_join_types2.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.std_join_types2.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: in std.join all items should be arrays
+ error.std_join_types2.jsonnet:17:1-32: function <builtin_join> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.std_makeArray_negative.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.std_makeArray_negative.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: number out of bounds: -10 not in 0..2147483647
+ argument <sz> evaluation
+ error.std_makeArray_negative.jsonnet:17:1-38: function <builtin_make_array> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.std_maxArray.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.std_maxArray.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: expected non-empty array
+ error.std_maxArray.jsonnet:1:1-18: function <builtin_max_array> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.std_minArray.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.std_minArray.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: expected non-empty array
+ error.std_minArray.jsonnet:1:1-18: function <builtin_min_array> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.std_parseJson.nodigitsep.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.std_parseJson.nodigitsep.jsonnet.golden
@@ -0,0 +1,2 @@
+runtime error: failed to parse json: trailing characters at line 1 column 4
+ error.std_parseJson.nodigitsep.jsonnet:1:1-26: function <builtin_parse_json> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.top_level_func.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.top_level_func.jsonnet.golden
@@ -0,0 +1 @@
+runtime error: tried to manifest function
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.trace_three_param.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.trace_three_param.jsonnet.golden
@@ -0,0 +1,5 @@
+too many args, function has 2
+Function has the following signature: (str, rest = <default>)
+ error.trace_three_param.jsonnet:17:11-33: function <builtin_trace> call
+ error.trace_three_param.jsonnet:19:6-8: local <v> access
+ field <a> evaluation
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.trace_zero_param.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.trace_zero_param.jsonnet.golden
@@ -0,0 +1,5 @@
+function argument is not passed: str
+Function has the following signature: (str, rest = <default>)
+ error.trace_zero_param.jsonnet:17:11-23: function <builtin_trace> call
+ error.trace_zero_param.jsonnet:19:6-8: local <v> access
+ field <a> evaluation
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.verbatim_import.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.verbatim_import.jsonnet.golden
@@ -0,0 +1 @@
+can't resolve C:\can't possibly exist~ from /home/lach/build/jrsonnet-pr/tests/cpp_test_suite/error.verbatim_import.jsonnet
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.wrong_type.jsonnet.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.wrong_type.jsonnet.golden
@@ -0,0 +1,3 @@
+type error: expected char, got number
+ argument <str> evaluation
+ error.wrong_type.jsonnet:1:1-19: function <builtin_codepoint> call
\ No newline at end of file
tests/tests/cpp_test_suite.rsdiffbeforeafterboth--- /dev/null
+++ b/tests/tests/cpp_test_suite.rs
@@ -0,0 +1,175 @@
+use std::{
+ env, fs,
+ io::{self, ErrorKind},
+ path::{Path, PathBuf},
+};
+
+use jrsonnet_evaluator::{
+ apply_tla,
+ function::TlaArg,
+ gc::WithCapacityExt as _,
+ manifest::JsonFormat,
+ rustc_hash::FxHashMap,
+ trace::{CompactFormat, PathResolver, TraceFormat},
+ FileImportResolver, IStr, ObjValueBuilder, State, Val,
+};
+use jrsonnet_stdlib::ContextInitializer;
+mod common;
+use common::ContextInitializer as TestContextInitializer;
+
+fn run(file: &Path, root: &Path) -> String {
+ let mut s = State::builder();
+
+ let std_context = ContextInitializer::new(PathResolver::Relative(root.to_owned()));
+ std_context.add_ext_str("var1".into(), "test".into());
+ std_context
+ .add_ext_code("var2".into(), "{x:1,y:2}")
+ .expect("code is valid");
+
+ s.context_initializer((std_context, TestContextInitializer))
+ .import_resolver(FileImportResolver::default());
+ let s = s.build();
+
+ let trace_format = CompactFormat {
+ resolver: PathResolver::FileName,
+ max_trace: 20,
+ padding: 4,
+ };
+
+ let mut v = match s.import(file) {
+ Ok(v) => v,
+ Err(e) => return trace_format.format(&e).unwrap(),
+ };
+
+ if file
+ .file_name()
+ .expect("file has basename")
+ .to_str()
+ .expect("jsonnet testsuite has ascii names")
+ .starts_with("tla.")
+ {
+ let mut args = FxHashMap::new();
+ args.insert(IStr::from("var1"), TlaArg::String("test".into()));
+ args.insert(
+ IStr::from("var2"),
+ TlaArg::Val({
+ let mut o = ObjValueBuilder::new();
+
+ o.field("x").value(Val::num(1));
+ o.field("y").value(Val::num(2));
+
+ Val::Obj(o.build())
+ }),
+ );
+ v = apply_tla(s, &args, v).expect("failed to apply tla");
+ }
+
+ match v.manifest(JsonFormat::default()) {
+ Ok(v) => v,
+ Err(e) => trace_format.format(&e).unwrap(),
+ }
+}
+
+fn read_file(path: &Path) -> io::Result<Option<String>> {
+ match fs::read_to_string(path) {
+ Ok(v) => Ok(Some(v)),
+ Err(e) if e.kind() == ErrorKind::NotFound => Ok(None),
+ Err(e) => Err(e),
+ }
+}
+
+const SKIPPED: &[&str] = &[
+ // Parser fails with stack overflow. While is a bug, this is a too unusual
+ // thing to run untrusted jsonnet code? Will be fixed with nom/rowan.
+ "error.parse.deep_array_nesting.jsonnet",
+ // Runtime error in jrsonnet
+ "error.parse.object_local_clash.jsonnet",
+ // Too slow to throw due to how lazyness is implemented in jrsonnet
+ "error.recursive_object_non_term.jsonnet",
+ // In jrsonnet returns the one passed argument, works as Rust's dbg!()
+ "error.trace_one_param.jsonnet",
+ // In jrsonnet can display any value
+ "error.trace_two_param.jsonnet",
+ // Depends on unsafe handling of strings as arrays in jsonnet stdlib
+ "invariant_manifest.jsonnet",
+ // Little bit hard to capture trace logs in this test suite at this moment
+ "trace.jsonnet",
+];
+
+#[test]
+fn cpp_test_suite() -> io::Result<()> {
+ use json_structural_diff::JsonDiff;
+
+ let root_tests = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
+ let root = root_tests.join("cpp_test_suite");
+ let root_override = root_tests.join("cpp_test_suite_golden_override");
+
+ 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}")))? {
+ let entry = entry?;
+ if !entry.path().extension().map_or(false, |e| e == "jsonnet") {
+ continue;
+ }
+
+ if entry
+ .path()
+ .file_name()
+ .and_then(|v| v.to_str())
+ .map_or(false, |v| SKIPPED.contains(&v))
+ {
+ continue;
+ }
+
+ let result = run(&entry.path(), &root);
+
+ let mut golden_path = entry.path();
+ golden_path.set_extension("jsonnet.golden");
+ let golden_override =
+ root_override.join(&golden_path.file_name().expect("file has basename"));
+
+ let mut golden = read_file(&golden_path)?;
+
+ if let Some(golden_path) = read_file(&golden_override)? {
+ golden = Some(golden_path);
+ }
+
+ let golden = golden.unwrap_or_else(|| "true".to_owned());
+
+ match (serde_json::from_str(&result), serde_json::from_str(&golden)) {
+ (Err(_), Ok(_)) => panic!(
+ "unexpected error for golden {}:\n<got>\n{result}\n</got>\n<golden>\n{golden}\n</golden>",
+ entry.path().display()
+ ),
+ (Ok(_), Err(_)) => panic!(
+ "expected error for golden {}:\n<got>\n{result}\n</got>\n<golden>\n{golden}\n</golden>",
+ entry.path().display()
+ ),
+ (Ok(result), Ok(golden)) => {
+ // Show diff relative to golden`.
+ let diff = JsonDiff::diff_string(&golden, &result, false);
+ if let Some(diff) = diff {
+ panic!(
+ "Result \n{result:#}\n\
+ and golden \n{golden:#}\n\
+ did not match structurally:\n{diff:#}\n\
+ for golden {}",
+ entry.path().display()
+ );
+ }
+ }
+ (Err(_), Err(_)) => {
+ if result != golden.trim_end() {
+ if env::var_os("UPDATE_GOLDEN").is_some() {
+ fs::write(golden_override, result)?;
+ } else {
+ panic!(
+ "golden didn't match for {}:\n<got>\n{result}\n</got>\n<golden>\n{golden}\n</golden>",
+ entry.path().display()
+ )
+ }
+ }
+ }
+ };
+ }
+
+ Ok(())
+}