--- a/tests/.gitignore +++ b/tests/.gitignore @@ -1 +1,2 @@ /cpp_test_suite +/go_testdata --- a/tests/Cargo.toml +++ b/tests/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "tests" version = "0.1.0" -edition = "2021" +edition = "2024" publish = false [lints] --- a/tests/cpp_test_suite_golden_override/error.function_infinite_default.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.function_infinite_default.jsonnet.golden @@ -1 +1,5 @@ -runtime error: tried to manifest function \ No newline at end of file +infinite recursion detected + error.function_infinite_default.jsonnet:17:17-19: local access + error.function_infinite_default.jsonnet:17:12-14: local access + error.function_infinite_default.jsonnet:17:20-22: local access + during TLA call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.function_no_default_arg.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.function_no_default_arg.jsonnet.golden @@ -1 +1,3 @@ -runtime error: tried to manifest function \ No newline at end of file +function argument is not passed: a +Function has the following signature: (a = , b) + during TLA call \ No newline at end of file --- a/tests/cpp_test_suite_golden_override/error.top_level_func.jsonnet.golden +++ b/tests/cpp_test_suite_golden_override/error.top_level_func.jsonnet.golden @@ -1 +1,3 @@ -runtime error: tried to manifest function \ No newline at end of file +function argument is not passed: name +Function has the following signature: (name) + during TLA call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/array_comp_try_iterate_over_empty_string.jsonnet.golden @@ -0,0 +1 @@ +for loop can only iterate over arrays \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/array_comp_try_iterate_over_obj.jsonnet.golden @@ -0,0 +1 @@ +for loop can only iterate over arrays \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/array_comp_try_iterate_over_string.jsonnet.golden @@ -0,0 +1 @@ +for loop can only iterate over arrays \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/array_out_of_bounds.jsonnet.golden @@ -0,0 +1 @@ +array out of bounds: 0 is not within [0,0) \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/array_out_of_bounds2.jsonnet.golden @@ -0,0 +1 @@ +array out of bounds: 3 is not within [0,3) \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/array_out_of_bounds3.jsonnet.golden @@ -0,0 +1 @@ +array out of bounds: -1 is not within [0,0) \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/array_out_of_bounds4.jsonnet.golden @@ -0,0 +1 @@ +array out of bounds: 42 is not within [0,3) \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/array_plus_bad.jsonnet.golden @@ -0,0 +1 @@ +binary operation array + number is not implemented \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/arrcomp5.jsonnet.golden @@ -0,0 +1,4 @@ +local is not defined: x + arrcomp5.jsonnet:1:14-16: local access + arrcomp5.jsonnet:1:2-4: local access + elem <0> evaluation \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/arrcomp_if4.jsonnet.golden @@ -0,0 +1,2 @@ +local is not defined: y + arrcomp_if4.jsonnet:1:33-35: local access \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/arrcomp_if6.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: x + arrcomp_if6.jsonnet:1:20-30: error statement \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/arrcomp_if7.jsonnet.golden @@ -0,0 +1 @@ +type error: expected boolean, got number \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/assert3.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: null + assert3.jsonnet:1:8-17: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/assert_equal4.jsonnet.golden @@ -0,0 +1,8 @@ +runtime error: assertion failed: A != B +A: { + "x": 1 +} +B: { + "x": 2 +} + assert_equal4.jsonnet:1:1-33: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/assert_equal5.jsonnet.golden @@ -0,0 +1,10 @@ +runtime error: assertion failed: A != B +A: + + + +B: + + + + assert_equal5.jsonnet:1:1-30: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/assert_equal6.jsonnet.golden @@ -0,0 +1,8 @@ +runtime error: assertion failed: A != B +A: + + +B: + + + assert_equal6.jsonnet:1:1-35: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/assert_failed.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: null + assert_failed.jsonnet:1:8-14: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/assert_failed_custom.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: Custom Message + assert_failed_custom.jsonnet:1:8-14: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bad_function_call.jsonnet.golden @@ -0,0 +1,3 @@ +function argument is not passed: x +Function has the following signature: (x) + bad_function_call.jsonnet:1:1-19: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bad_function_call2.jsonnet.golden @@ -0,0 +1,3 @@ +too many args, function has 1 +Function has the following signature: (x) + bad_function_call2.jsonnet:1:1-23: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bad_function_call_and_error.jsonnet.golden @@ -0,0 +1,3 @@ +too many args, function has 1 +Function has the following signature: (x) + bad_function_call_and_error.jsonnet:1:1-39: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bad_index_array.jsonnet.golden @@ -0,0 +1 @@ +attempted to index array with string xxx \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bad_index_object.jsonnet.golden @@ -0,0 +1 @@ +object index type should be string, got number \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bad_index_string.jsonnet.golden @@ -0,0 +1 @@ +string index type should be number, got string \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/binaryNot2.jsonnet.golden @@ -0,0 +1 @@ +operator ~ does not operate on type string \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bitwise_and3.jsonnet.golden @@ -0,0 +1 @@ +runtime error: numberic value outside of safe integer range for bitwise operation \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bitwise_and4.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: x + bitwise_and4.jsonnet:1:5-15: error statement \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bitwise_and7.jsonnet.golden @@ -0,0 +1 @@ +runtime error: numberic value outside of safe integer range for bitwise operation \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bitwise_or10.jsonnet.golden @@ -0,0 +1 @@ +binary operation string | number is not implemented \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bitwise_shift4.jsonnet.golden @@ -0,0 +1 @@ +runtime error: shift by negative exponent \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bitwise_shift6.jsonnet.golden @@ -0,0 +1 @@ +runtime error: shift by negative exponent \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/bitwise_xor7.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: x + bitwise_xor7.jsonnet:1:5-15: error statement \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinBase64DecodeBytes_high_codepoint.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: invalid base64: Invalid symbol 196, offset 0. + builtinBase64DecodeBytes_high_codepoint.jsonnet:1:1-30: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinBase64DecodeBytes_invalid_base64_data.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: invalid base64: Invalid input length: 5 + builtinBase64DecodeBytes_invalid_base64_data.jsonnet:1:1-32: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinBase64DecodeBytes_wrong_type.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected string, got number + argument evaluation + builtinBase64DecodeBytes_wrong_type.jsonnet:1:1-26: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinBase64Decode_high_codepoint.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: invalid base64: Invalid symbol 196, offset 0. + builtinBase64Decode_high_codepoint.jsonnet:1:1-25: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinBase64Decode_invalid_base64_data.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: invalid base64: Invalid input length: 5 + builtinBase64Decode_invalid_base64_data.jsonnet:1:1-27: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinBase64Decode_wrong_type.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected string, got number + argument evaluation + builtinBase64Decode_wrong_type.jsonnet:1:1-21: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinBase64_invalid_byte_array.jsonnet.golden @@ -0,0 +1,5 @@ +type error: every failed from string | Array>: + - expected string, got array + - expected BoundedNumber<0, 255>, got string at self[1] + argument evaluation + builtinBase64_invalid_byte_array.jsonnet:1:1-24: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinBase64_invalid_byte_array1.jsonnet.golden @@ -0,0 +1,5 @@ +type error: every failed from string | Array>: + - expected string, got array + - number out of bounds: -1 not in 0..255 at self[1] + argument evaluation + builtinBase64_invalid_byte_array1.jsonnet:1:1-21: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinBase64_invalid_byte_array2.jsonnet.golden @@ -0,0 +1,5 @@ +type error: every failed from string | Array>: + - expected string, got array + - number out of bounds: 256 not in 0..255 at self[1] + argument evaluation + builtinBase64_invalid_byte_array2.jsonnet:1:1-22: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinBase64_non_string_non_array.jsonnet.golden @@ -0,0 +1,5 @@ +type error: every failed from string | Array>: + - expected string, got number + - expected Array>, got number + argument evaluation + builtinBase64_non_string_non_array.jsonnet:1:1-15: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinChar3.jsonnet.golden @@ -0,0 +1,3 @@ +type error: number out of bounds: -1 not in 0..4294967295 + argument evaluation + builtinChar3.jsonnet:1:1-14: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinChar5.jsonnet.golden @@ -0,0 +1,2 @@ +invalid unicode codepoint: 1114112 + builtinChar5.jsonnet:2:1-19: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinChar7.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected BoundedNumber<0, 4294967295>, got string + argument evaluation + builtinChar7.jsonnet:1:1-17: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinIsEmpty2.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected string, got number + argument evaluation + builtinIsEmpty2.jsonnet:1:1-17: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinObjectFieldsEx_bad.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected object, got number + argument evaluation + builtinObjectFieldsEx_bad.jsonnet:1:1-30: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinObjectFieldsEx_bad2.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected boolean, got string + argument evaluation + builtinObjectFieldsEx_bad2.jsonnet:1:1-31: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinObjectHasExBadBoolean.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected boolean, got string + argument evaluation + builtinObjectHasExBadBoolean.jsonnet:1:1-35: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinObjectHasExBadField.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected string, got number + argument evaluation + builtinObjectHasExBadField.jsonnet:1:1-32: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinObjectHasExBadObject.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected object, got number + argument evaluation + builtinObjectHasExBadObject.jsonnet:1:1-33: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinReverse_not_array.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected array, got boolean + argument evaluation + builtinReverse_not_array.jsonnet:1:1-20: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinSplitLimitR5.jsonnet.golden @@ -0,0 +1,5 @@ +type error: every failed from BoundedNumber<0, 9007199254740991> | BoundedNumber<-1, -1>: + - number out of bounds: -2 not in 0..9007199254740991 + - number out of bounds: -2 not in -1..-1 + argument evaluation + builtinSplitLimitR5.jsonnet:1:1-45: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinSubStr_first_param_not_string.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected string, got number + argument evaluation + builtinSubStr_first_param_not_string.jsonnet:1:1-21: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinSubStr_second_parameter_not_integer.jsonnet.golden @@ -0,0 +1,3 @@ +runtime error: cannot convert number with fractional part to usize + argument evaluation + builtinSubStr_second_parameter_not_integer.jsonnet:1:1-29: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinSubStr_second_parameter_not_number.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected BoundedNumber<0, 9007199254740991>, got string + argument evaluation + builtinSubStr_second_parameter_not_number.jsonnet:1:1-31: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinSubStr_third_parameter_less_then_zero.jsonnet.golden @@ -0,0 +1,3 @@ +type error: number out of bounds: -1 not in 0..9007199254740991 + argument evaluation + builtinSubStr_third_parameter_less_then_zero.jsonnet:1:1-28: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinSubStr_third_parameter_not_integer.jsonnet.golden @@ -0,0 +1,3 @@ +runtime error: cannot convert number with fractional part to usize + argument evaluation + builtinSubStr_third_parameter_not_integer.jsonnet:1:1-29: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinSubStr_third_parameter_not_number.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected BoundedNumber<0, 9007199254740991>, got string + argument evaluation + builtinSubStr_third_parameter_not_number.jsonnet:1:1-31: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinTrim4.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected string, got number + argument evaluation + builtinTrim4.jsonnet:1:1-14: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinXnor2.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected boolean, got string + argument evaluation + builtinXnor2.jsonnet:1:1-25: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtinXor2.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected boolean, got string + argument evaluation + builtinXor2.jsonnet:1:1-24: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_exp3.jsonnet.golden @@ -0,0 +1,2 @@ +convert num value: non-finite + builtin_exp3.jsonnet:1:1-15: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_exp5.jsonnet.golden @@ -0,0 +1,2 @@ +convert num value: non-finite + builtin_exp5.jsonnet:1:1-32: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_log5.jsonnet.golden @@ -0,0 +1,2 @@ +convert num value: non-finite + builtin_log5.jsonnet:1:1-12: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_log7.jsonnet.golden @@ -0,0 +1,2 @@ +convert num value: non-finite + builtin_log7.jsonnet:1:1-13: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_log8.jsonnet.golden @@ -0,0 +1,2 @@ +convert num value: non-finite + builtin_log8.jsonnet:1:1-25: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_manifestTomlEx_array.jsonnet.golden @@ -0,0 +1,4 @@ +type error: expected object, got array + argument evaluation + builtin_manifestTomlEx_array.jsonnet:11:10-42: function call + field evaluation \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_manifestTomlEx_null.jsonnet.golden @@ -0,0 +1,4 @@ +type error: expected object, got null + argument evaluation + builtin_manifestTomlEx_null.jsonnet:2:11-43: function call + field evaluation \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_member_object_invalid.jsonnet.golden @@ -0,0 +1,5 @@ +type error: every failed from array | string: + - expected array, got object + - expected string, got object + argument evaluation + builtin_member_object_invalid.jsonnet:1:1-32: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_parseInt_invalid.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: "hello" is not a base 10 integer + builtin_parseInt_invalid.jsonnet:1:1-23: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_parseInt_invalid_decimal.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: "123.12" is not a base 10 integer + builtin_parseInt_invalid_decimal.jsonnet:1:1-24: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_parseInt_invalid_hexadecimal.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: "7B316" is not a base 10 integer + builtin_parseInt_invalid_hexadecimal.jsonnet:1:1-23: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_sqrt2.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected BoundedNumber<0, open>, got string + argument evaluation + builtin_sqrt2.jsonnet:1:1-20: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/builtin_stripChars_invalid.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected string, got object + argument evaluation + builtin_stripChars_invalid.jsonnet:1:1-4133: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/call_number.jsonnet.golden @@ -0,0 +1 @@ +only functions can be called, got number \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/div4.jsonnet.golden @@ -0,0 +1 @@ +convert num value: non-finite \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/div_by_zero.jsonnet.golden @@ -0,0 +1 @@ +attempted to divide by zero \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/dollar_bad.jsonnet.golden @@ -0,0 +1 @@ +self/super/$ are only usable inside objects \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/double_thunk.jsonnet.golden @@ -0,0 +1,4 @@ +runtime error: xxx + double_thunk.jsonnet:1:21-33: error statement + double_thunk.jsonnet:1:34-36: local access + double_thunk.jsonnet:1:37-39: local access \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/error.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: 42 + error.jsonnet:1:1-12: error statement \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/error_from_array.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: xxx + error_from_array.jsonnet:1:2-14: error statement \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/error_from_func.jsonnet.golden @@ -0,0 +1,3 @@ +runtime error: xxx + error_from_func.jsonnet:1:25-33: error statement + error_from_func.jsonnet:1:34-45: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/error_function_fail.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: tried to manifest function + error_function_fail.jsonnet:1:1-24: error statement \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/error_hexnumber.jsonnet.golden @@ -0,0 +1,2 @@ +syntax error: expected one of "(", ".", "?", "[", "{", , EOF, got "x" + error_hexnumber.jsonnet:1:2 \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/error_in_method.jsonnet.golden @@ -0,0 +1,3 @@ +runtime error: xxx + error_in_method.jsonnet:1:23-31: error statement + error_in_method.jsonnet:1:34-49: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/error_in_object_local.jsonnet.golden @@ -0,0 +1,4 @@ +runtime error: xxx + error_in_object_local.jsonnet:1:20-30: error statement + error_in_object_local.jsonnet:1:36-47: function call + field evaluation \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/error_object.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: {"blah": 42} + error_object.jsonnet:1:1-22: error statement \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/extvar_error.jsonnet.golden @@ -0,0 +1,2 @@ +external variable is not defined: errorVar + extvar_error.jsonnet:1:1-24: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/extvar_hermetic.jsonnet.golden @@ -0,0 +1,2 @@ +external variable is not defined: UndeclaredX + extvar_hermetic.jsonnet:1:15-41: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/extvar_not_a_string.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected string, got number + argument evaluation + extvar_not_a_string.jsonnet:1:1-16: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/extvar_static_error.jsonnet.golden @@ -0,0 +1,2 @@ +external variable is not defined: staticErrorVar + extvar_static_error.jsonnet:1:1-30: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/extvar_unknown.jsonnet.golden @@ -0,0 +1,2 @@ +external variable is not defined: UNKNOWN + extvar_unknown.jsonnet:1:1-23: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/fieldname_not_string.jsonnet.golden @@ -0,0 +1,2 @@ +type error: expected string, got number + fieldname_not_string.jsonnet:1:4-9: evaluating field name \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/function_manifested.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: tried to manifest function + field manifestification \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/function_plus_bad.jsonnet.golden @@ -0,0 +1 @@ +binary operation function + number is not implemented \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/function_plus_string.jsonnet.golden @@ -0,0 +1 @@ +runtime error: tried to manifest function \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/function_too_many_params.jsonnet.golden @@ -0,0 +1,3 @@ +function argument is not passed: x +Function has the following signature: (x) + during TLA call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/import_block_literal.jsonnet.golden @@ -0,0 +1,2 @@ +can't resolve block_literals_for_imports_are_not_allowed_and_make_exactly_zero_sense + from /home/lach/build/jrsonnet-pr/tests/go_testdata/import_block_literal.jsonnet \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/import_computed.jsonnet.golden @@ -0,0 +1 @@ +runtime error: computed imports are not supported \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/import_failure_directory.jsonnet.golden @@ -0,0 +1 @@ +runtime error: special file can't be imported \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/import_syntax_error.jsonnet.golden @@ -0,0 +1,3 @@ +syntax error: expected one of "(", "[", "{", , , , , ['"'], ['\''], got "EOF" + syntax_error.jsonnet:1:5 + import_syntax_error.jsonnet:1:1-31: import "syntax_error.jsonnet" \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/importbin_block_literal.jsonnet.golden @@ -0,0 +1,2 @@ +can't resolve block_literals_for_imports_are_not_allowed_and_make_exactly_zero_sense + from /home/lach/build/jrsonnet-pr/tests/go_testdata/importbin_block_literal.jsonnet \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/importbin_computed.jsonnet.golden @@ -0,0 +1 @@ +runtime error: computed imports are not supported \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/importstr_block_literal.jsonnet.golden @@ -0,0 +1,2 @@ +can't resolve block_literals_for_imports_are_not_allowed_and_make_exactly_zero_sense + from /home/lach/build/jrsonnet-pr/tests/go_testdata/importstr_block_literal.jsonnet \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/importstr_computed.jsonnet.golden @@ -0,0 +1 @@ +runtime error: computed imports are not supported \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/inf_min_number.jsonnet.golden @@ -0,0 +1 @@ +convert num value: non-finite \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/inf_mul_number.jsonnet.golden @@ -0,0 +1 @@ +convert num value: non-finite \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/inf_sum_number.jsonnet.golden @@ -0,0 +1 @@ +convert num value: non-finite \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/insuper4.jsonnet.golden @@ -0,0 +1 @@ +self/super/$ are only usable inside objects \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/insuper6.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: null + insuper6.jsonnet:1:10-30: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/lazy_operator2.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: should happen + lazy_operator2.jsonnet:1:9-31: error statement \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/missing_super.jsonnet.golden @@ -0,0 +1,2 @@ +no super found + field evaluation \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/native4.jsonnet.golden @@ -0,0 +1 @@ +only functions can be called, got null \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/native5.jsonnet.golden @@ -0,0 +1 @@ +only functions can be called, got null \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/native7.jsonnet.golden @@ -0,0 +1 @@ +only functions can be called, got null \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/native_error.jsonnet.golden @@ -0,0 +1 @@ +only functions can be called, got null \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/native_panic.jsonnet.golden @@ -0,0 +1 @@ +only functions can be called, got null \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/nonexistent_import.jsonnet.golden @@ -0,0 +1 @@ +can't resolve no chance a file with this name exists from /home/lach/build/jrsonnet-pr/tests/go_testdata/nonexistent_import.jsonnet \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/nonexistent_import_crazy.jsonnet.golden @@ -0,0 +1,3 @@ +can't resolve ąęółńśćźż " ' + + from /home/lach/build/jrsonnet-pr/tests/go_testdata/nonexistent_import_crazy.jsonnet \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/number_divided_by_string.jsonnet.golden @@ -0,0 +1 @@ +binary operation number / string is not implemented \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_comp_assert.jsonnet.golden @@ -0,0 +1,2 @@ +syntax error: expected one of "(", ".", "?", "[", "{", "}", , got "f" + object_comp_assert.jsonnet:1:32 \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_comp_bad_field.jsonnet.golden @@ -0,0 +1,2 @@ +syntax error: expected one of "(", ".", "?", "[", "{", "}", , got "f" + object_comp_bad_field.jsonnet:1:9 \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_comp_bad_field2.jsonnet.golden @@ -0,0 +1,2 @@ +syntax error: expected one of "(", ".", "?", "[", "{", "}", , got "f" + object_comp_bad_field2.jsonnet:1:11 \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_comp_duplicate.jsonnet.golden @@ -0,0 +1,2 @@ +duplicate field name: x + object_comp_duplicate.jsonnet:1:8-10: field initializtion \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_comp_err_elem.jsonnet.golden @@ -0,0 +1,3 @@ +runtime error: xxx + object_comp_err_elem.jsonnet:1:11-23: error statement + field evaluation \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_comp_err_index.jsonnet.golden @@ -0,0 +1,3 @@ +runtime error: xxx + object_comp_err_index.jsonnet:1:4-16: error statement + object_comp_err_index.jsonnet:1:4-16: evaluating field name \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_comp_illegal.jsonnet.golden @@ -0,0 +1,2 @@ +syntax error: expected one of "(", ".", "?", "[", "{", "}", , got "f" + object_comp_illegal.jsonnet:1:15 \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_comp_int_index.jsonnet.golden @@ -0,0 +1,2 @@ +type error: expected string, got number + object_comp_int_index.jsonnet:1:4-6: evaluating field name \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_comp_try_iterate_over_obj.jsonnet.golden @@ -0,0 +1 @@ +for loop can only iterate over arrays \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_comp_try_iterate_over_string.jsonnet.golden @@ -0,0 +1 @@ +for loop can only iterate over arrays \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_invariant10.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: null + object_invariant10.jsonnet:1:23-29: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_invariant11.jsonnet.golden @@ -0,0 +1,3 @@ +assert failed: null + object_invariant11.jsonnet:1:10-16: assertion failure + object_invariant11.jsonnet:1:18-20: field access \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_invariant13.jsonnet.golden @@ -0,0 +1,3 @@ +runtime error: x + object_invariant13.jsonnet:1:10-20: error statement + object_invariant13.jsonnet:1:10-20: assertion condition \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_invariant14.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: xxx + object_invariant14.jsonnet:1:10-16: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_invariant2.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: null + object_invariant2.jsonnet:1:10-16: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_invariant7.jsonnet.golden @@ -0,0 +1,2 @@ +no super found + object_invariant7.jsonnet:1:16-29: assertion condition \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_invariant8.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: null + object_invariant8.jsonnet:1:16-28: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_invariant9.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: null + object_invariant9.jsonnet:1:23-29: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_invariant_plus.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: null + object_invariant_plus.jsonnet:1:9-15: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_invariant_plus2.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: null + object_invariant_plus2.jsonnet:1:25-31: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_invariant_plus6.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: xxx + object_invariant_plus6.jsonnet:1:10-16: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/object_plus_bad.jsonnet.golden @@ -0,0 +1 @@ +binary operation object + number is not implemented \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/optional_args11.jsonnet.golden @@ -0,0 +1,2 @@ +argument x is already bound + optional_args11.jsonnet:1:1-31: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/optional_args13.jsonnet.golden @@ -0,0 +1,3 @@ +function argument is not passed: y +Function has the following signature: (x, y) + optional_args13.jsonnet:1:1-27: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/optional_args8.jsonnet.golden @@ -0,0 +1,2 @@ +parameter y is not defined + optional_args8.jsonnet:2:1-11: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/optional_args9.jsonnet.golden @@ -0,0 +1,2 @@ +argument x is already bound + optional_args9.jsonnet:1:1-27: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/or4.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: xxx + or4.jsonnet:1:10-22: error statement \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/or5.jsonnet.golden @@ -0,0 +1 @@ +binary operation string || boolean is not implemented \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/or6.jsonnet.golden @@ -0,0 +1 @@ +binary operation boolean || string is not implemented \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/percent_bad.jsonnet.golden @@ -0,0 +1 @@ +binary operation number % string is not implemented \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/percent_bad2.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: too many values to format, expected 1, got 2 + std.format of x \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/percent_bad3.jsonnet.golden @@ -0,0 +1 @@ +binary operation function % number is not implemented \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/percent_format_str4.jsonnet.golden @@ -0,0 +1,2 @@ +runtime error: too many values to format, expected 2, got 3 + std.format of x %s \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/percent_format_str5.jsonnet.golden @@ -0,0 +1,2 @@ +format error: not enough values + std.format of x %s %s \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/percent_format_str6.jsonnet.golden @@ -0,0 +1,2 @@ +format error: not enough values + std.format of x %s %s \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/percent_format_str7.jsonnet.golden @@ -0,0 +1,2 @@ +type error: expected number, got string + std.format of x %d \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/percent_mod_int5.jsonnet.golden @@ -0,0 +1 @@ +attempted to divide by zero \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/plus5.jsonnet.golden @@ -0,0 +1 @@ +binary operation number + function is not implemented \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/pow4.jsonnet.golden @@ -0,0 +1,2 @@ +convert num value: non-finite + pow4.jsonnet:1:1-18: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/pow7.jsonnet.golden @@ -0,0 +1,2 @@ +convert num value: non-finite + pow7.jsonnet:2:1-24: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/pow8.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected number, got string + argument evaluation + pow8.jsonnet:1:1-20: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/pow9.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected number, got string + argument evaluation + pow9.jsonnet:1:1-20: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/recursive_thunk.jsonnet.golden @@ -0,0 +1,10 @@ +runtime error: xxx + recursive_thunk.jsonnet:1:35-47: error statement + recursive_thunk.jsonnet:2:16-39: function call + recursive_thunk.jsonnet:2:20-31: function call + recursive_thunk.jsonnet:1:52-55: local access + recursive_thunk.jsonnet:2:16-39: function call + recursive_thunk.jsonnet:2:20-31: function call + recursive_thunk.jsonnet:1:52-55: local access + recursive_thunk.jsonnet:2:16-39: function call + recursive_thunk.jsonnet:3:1-8: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/stacktrace_assert.jsonnet.golden @@ -0,0 +1,2 @@ +assert failed: null + stacktrace_assert.jsonnet:1:10-16: assertion failure \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/stacktrace_plussuper.jsonnet.golden @@ -0,0 +1,2 @@ +binary operation null + object is not implemented + field evaluation \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/static_error_eof.jsonnet.golden @@ -0,0 +1,2 @@ +syntax error: expected one of "(", ",", ".", ";", "?", "[", "{", , got "EOF" + static_error_eof.jsonnet:1:13 \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/std.codepoint3.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected char, got string + argument evaluation + std.codepoint3.jsonnet:1:1-21: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/std.codepoint6.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected char, got string + argument evaluation + std.codepoint6.jsonnet:1:1-19: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/std.codepoint7.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected char, got string + argument evaluation + std.codepoint7.jsonnet:2:0-2:0: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/std.codepoint8.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected char, got number + argument evaluation + std.codepoint8.jsonnet:1:1-19: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/std.filter2.jsonnet.golden @@ -0,0 +1,4 @@ +runtime error: x + std.filter2.jsonnet:1:12-22: error statement + argument evaluation + std.filter2.jsonnet:1:1-27: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/std.filter4.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected function, got number + argument evaluation + std.filter4.jsonnet:1:1-20: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/std.filter5.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected array, got number + argument evaluation + std.filter5.jsonnet:1:1-32: function call \ No newline at end of file --- /dev/null +++ b/tests/go_testdata_golden_override/std.filter6.jsonnet.golden @@ -0,0 +1,3 @@ +type error: expected function, got number + argument evaluation + std.filter6.jsonnet:1:1-22: function call \ No newline at end of file --- a/tests/tests/cpp_test_suite.rs +++ b/tests/tests/cpp_test_suite.rs @@ -5,13 +5,12 @@ }; use jrsonnet_evaluator::{ - apply_tla, + FileImportResolver, IStr, ObjValueBuilder, State, Val, 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; @@ -21,11 +20,36 @@ let mut s = State::builder(); let std_context = ContextInitializer::new(PathResolver::Relative(root.to_owned())); + // C++ test suite std_context.add_ext_str("var1".into(), "test".into()); std_context .add_ext_code("var2".into(), "{x:1,y:2}") .expect("code is valid"); + // Golang test suite + std_context + .add_ext_code("codeVar".into(), "3+3") + .expect("code is valid"); + std_context.add_ext_str("stringVar".into(), "2 + 2".into()); + std_context + .add_ext_code( + "selfRecursiveVar".into(), + r#"[42, std.extVar("selfRecursiveVar")[0] + 1]"#, + ) + .expect("code is valid"); + std_context + .add_ext_code( + "mutuallyRecursiveVar1".into(), + r#"[42, std.extVar("mutuallyRecursiveVar2")[0] + 1]"#, + ) + .expect("code is valid"); + std_context + .add_ext_code( + "mutuallyRecursiveVar2".into(), + r#"[42, std.extVar("mutuallyRecursiveVar1")[0] + 1]"#, + ) + .expect("code is valid"); + s.context_initializer((std_context, TestContextInitializer)) .import_resolver(FileImportResolver::default()); let s = s.build(); @@ -64,6 +88,11 @@ }), ); v = apply_tla(&args, v).expect("failed to apply tla"); + } else { + v = match apply_tla(&FxHashMap::new(), v) { + Ok(v) => v, + Err(e) => return trace_format.format(&e).unwrap(), + }; } match v.manifest(JsonFormat::default()) { @@ -81,11 +110,14 @@ } const SKIPPED: &[&str] = &[ + // C++ tests: + // 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 + // Runtime, not static error in jrsonnet "error.parse.object_local_clash.jsonnet", + "error.function_duplicate_param.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!() @@ -96,17 +128,73 @@ "invariant_manifest.jsonnet", // Little bit hard to capture trace logs in this test suite at this moment "trace.jsonnet", + // Go tests: + + // Something is wrong, go-jsonnet skips safe integer range check here + "bitwise_or9.jsonnet", + // Jrsonnet does not use byte strings, all utf8 is converted to bytes first + "builtinBase64_string_high_codepoint.jsonnet", + // Split by empty string is string characters, same as everywhere else + "builtinSplitLimitR6.jsonnet", + // escapeStringJson only accepts string in jrsonnet + "builtin_escapeStringJson.jsonnet", + // golang float formatting is inefficient and not portable + "builtin_manifestTomlEx.jsonnet", + "div3.jsonnet", + "pow6.jsonnet", + // golang escapes "e" yaml key, does it think it is float? + "builtin_manifestYamlDoc.jsonnet", + // Wtf?.. + // Result + // [ + // {}, + // {}, + // [] + // ] + // and golden + // [ + // {}, + // {}, + // [] + // ] + // did not match structurally: + // [ + // ... + // - { + // - } + // + { + // + } + // [ + // ] + // ] + "empty_object_comp.jsonnet", + "object_hidden.jsonnet", + // multi output is a CLI part, not an interpreter. + "multi.jsonnet", + "multi_no_newline.jsonnet", + "multi_no_newline_string_output.jsonnet", + "multi_string_output.jsonnet", + // Tested otherwise + "native1.jsonnet", + "native2.jsonnet", + "native3.jsonnet", + "native6.jsonnet", + // Since when parser should throw an error for that?.. + "number_leading_zero.jsonnet", + // Jrsonnet has this overload + "number_times_string.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 root_dir in ["cpp_test_suite", "go_testdata"] { + let root_tests = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + let root = root_tests.join(root_dir); + let root_override = root_tests.join(format!("{root_dir}_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}")))? { + 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; @@ -125,15 +213,26 @@ let mut golden_path = entry.path(); golden_path.set_extension("jsonnet.golden"); + + let mut golden_path2 = entry.path(); + golden_path2.set_extension("golden"); + let golden_override = root_override.join(&golden_path.file_name().expect("file has basename")); + // .jsonnet.golden for C++ tests let mut golden = read_file(&golden_path)?; + // .golden for Go tests + if golden.is_none() && let Some(golden_path) = read_file(&dbg!(golden_path2))? { + golden = Some(golden_path); + } + // Any of them can be overriden by overrides if let Some(golden_path) = read_file(&golden_override)? { golden = Some(golden_path); } + // Otherwise assume test should just not fail and return true. let golden = golden.unwrap_or_else(|| "true".to_owned()); match (serde_json::from_str(&result), serde_json::from_str(&golden)) { @@ -172,6 +271,7 @@ } }; } + } Ok(()) }