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.goldendiffbeforeafterboth--- /dev/null
+++ b/tests/cpp_test_suite_golden_override/error.recursive_function_nonterm.jsonnet.golden
@@ -0,0 +1,201 @@
+stack overflow, try to reduce recursion, or set --max-stack to bigger value
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:18:3-8: function <f> call
+ error.recursive_function_nonterm.jsonnet:20:1-7: function <f> call
\ No newline at end of file
tests/cpp_test_suite_golden_override/error.recursive_import.jsonnet.goldendiffbeforeafterbothno changes
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(())
+}