Commit 7302b096bd

Lewis Gaul <Lewis@scphillips.com>
2021-04-05 01:27:47
Tidy-up in json test module (#8431)
* Switch json testing 'roundTrip()' to use FixedBufferStream, improve error handling, remove comptime from param * Add 'try' to calls to roundTrip() that can now return an error * Remove comptime from params in json testing, replace expect(false) with letting error propagate * Add 'try' to calls to ok() that can now return an error Co-authored-by: Lewis Gaul <legaul@cisco.com>
1 parent c9ffb6f
Changed files (1)
lib
std
lib/std/json/test.zig
@@ -12,7 +12,7 @@ const std = @import("../std.zig");
 const json = std.json;
 const testing = std.testing;
 
-fn testNonStreaming(comptime s: []const u8) !void {
+fn testNonStreaming(s: []const u8) !void {
     var p = json.Parser.init(testing.allocator, false);
     defer p.deinit();
 
@@ -20,32 +20,32 @@ fn testNonStreaming(comptime s: []const u8) !void {
     defer tree.deinit();
 }
 
-fn ok(comptime s: []const u8) void {
+fn ok(s: []const u8) !void {
     testing.expect(json.validate(s));
 
-    testNonStreaming(s) catch testing.expect(false);
+    try testNonStreaming(s);
 }
 
-fn err(comptime s: []const u8) void {
+fn err(s: []const u8) void {
     testing.expect(!json.validate(s));
 
     testNonStreaming(s) catch return;
     testing.expect(false);
 }
 
-fn utf8Error(comptime s: []const u8) void {
+fn utf8Error(s: []const u8) void {
     testing.expect(!json.validate(s));
 
     testing.expectError(error.InvalidUtf8Byte, testNonStreaming(s));
 }
 
-fn any(comptime s: []const u8) void {
+fn any(s: []const u8) void {
     _ = json.validate(s);
 
     testNonStreaming(s) catch {};
 }
 
-fn anyStreamingErrNonStreaming(comptime s: []const u8) void {
+fn anyStreamingErrNonStreaming(s: []const u8) void {
     _ = json.validate(s);
 
     testNonStreaming(s) catch return;
@@ -81,7 +81,7 @@ test "y_trailing_comma_after_empty" {
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 
 test "y_array_arraysWithSpaces" {
-    ok(
+    try ok(
         \\[[]   ]
     );
 }
@@ -111,7 +111,7 @@ test "y_array_false" {
 }
 
 test "y_array_heterogeneous" {
-    ok(
+    try ok(
         \\[null, 1, "1", {}]
     );
 }
@@ -123,14 +123,14 @@ test "y_array_null" {
 }
 
 test "y_array_with_1_and_newline" {
-    ok(
+    try ok(
         \\[1
         \\]
     );
 }
 
 test "y_array_with_leading_space" {
-    ok(
+    try ok(
         \\ [1]
     );
 }
@@ -142,47 +142,47 @@ test "y_array_with_several_null" {
 }
 
 test "y_array_with_trailing_space" {
-    ok("[2] ");
+    try ok("[2] ");
 }
 
 test "y_number_0e+1" {
-    ok(
+    try ok(
         \\[0e+1]
     );
 }
 
 test "y_number_0e1" {
-    ok(
+    try ok(
         \\[0e1]
     );
 }
 
 test "y_number_after_space" {
-    ok(
+    try ok(
         \\[ 4]
     );
 }
 
 test "y_number_double_close_to_zero" {
-    ok(
+    try ok(
         \\[-0.000000000000000000000000000000000000000000000000000000000000000000000000000001]
     );
 }
 
 test "y_number_int_with_exp" {
-    ok(
+    try ok(
         \\[20e1]
     );
 }
 
 test "y_number" {
-    ok(
+    try ok(
         \\[123e65]
     );
 }
 
 test "y_number_minus_zero" {
-    ok(
+    try ok(
         \\[-0]
     );
 }
@@ -200,49 +200,49 @@ test "y_number_negative_one" {
 }
 
 test "y_number_negative_zero" {
-    ok(
+    try ok(
         \\[-0]
     );
 }
 
 test "y_number_real_capital_e" {
-    ok(
+    try ok(
         \\[1E22]
     );
 }
 
 test "y_number_real_capital_e_neg_exp" {
-    ok(
+    try ok(
         \\[1E-2]
     );
 }
 
 test "y_number_real_capital_e_pos_exp" {
-    ok(
+    try ok(
         \\[1E+2]
     );
 }
 
 test "y_number_real_exponent" {
-    ok(
+    try ok(
         \\[123e45]
     );
 }
 
 test "y_number_real_fraction_exponent" {
-    ok(
+    try ok(
         \\[123.456e78]
     );
 }
 
 test "y_number_real_neg_exp" {
-    ok(
+    try ok(
         \\[1e-2]
     );
 }
 
 test "y_number_real_pos_exponent" {
-    ok(
+    try ok(
         \\[1e+2]
     );
 }
@@ -254,7 +254,7 @@ test "y_number_simple_int" {
 }
 
 test "y_number_simple_real" {
-    ok(
+    try ok(
         \\[123.456789]
     );
 }
@@ -266,13 +266,13 @@ test "y_object_basic" {
 }
 
 test "y_object_duplicated_key_and_value" {
-    ok(
+    try ok(
         \\{"a":"b","a":"b"}
     );
 }
 
 test "y_object_duplicated_key" {
-    ok(
+    try ok(
         \\{"a":"b","a":"c"}
     );
 }
@@ -290,25 +290,25 @@ test "y_object_empty_key" {
 }
 
 test "y_object_escaped_null_in_key" {
-    ok(
+    try ok(
         \\{"foo\u0000bar": 42}
     );
 }
 
 test "y_object_extreme_numbers" {
-    ok(
+    try ok(
         \\{ "min": -1.0e+28, "max": 1.0e+28 }
     );
 }
 
 test "y_object" {
-    ok(
+    try ok(
         \\{"asd":"sdf", "dfg":"fgh"}
     );
 }
 
 test "y_object_long_strings" {
-    ok(
+    try ok(
         \\{"x":[{"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}], "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
     );
 }
@@ -320,13 +320,13 @@ test "y_object_simple" {
 }
 
 test "y_object_string_unicode" {
-    ok(
+    try ok(
         \\{"title":"\u041f\u043e\u043b\u0442\u043e\u0440\u0430 \u0417\u0435\u043c\u043b\u0435\u043a\u043e\u043f\u0430" }
     );
 }
 
 test "y_object_with_newlines" {
-    ok(
+    try ok(
         \\{
         \\"a": "b"
         \\}
@@ -334,31 +334,31 @@ test "y_object_with_newlines" {
 }
 
 test "y_string_1_2_3_bytes_UTF-8_sequences" {
-    ok(
+    try ok(
         \\["\u0060\u012a\u12AB"]
     );
 }
 
 test "y_string_accepted_surrogate_pair" {
-    ok(
+    try ok(
         \\["\uD801\udc37"]
     );
 }
 
 test "y_string_accepted_surrogate_pairs" {
-    ok(
+    try ok(
         \\["\ud83d\ude39\ud83d\udc8d"]
     );
 }
 
 test "y_string_allowed_escapes" {
-    ok(
+    try ok(
         \\["\"\\\/\b\f\n\r\t"]
     );
 }
 
 test "y_string_backslash_and_u_escaped_zero" {
-    ok(
+    try ok(
         \\["\\u0000"]
     );
 }
@@ -370,13 +370,13 @@ test "y_string_backslash_doublequotes" {
 }
 
 test "y_string_comments" {
-    ok(
+    try ok(
         \\["a/*b*/c/*d//e"]
     );
 }
 
 test "y_string_double_escape_a" {
-    ok(
+    try ok(
         \\["\\a"]
     );
 }
@@ -388,79 +388,79 @@ test "y_string_double_escape_n" {
 }
 
 test "y_string_escaped_control_character" {
-    ok(
+    try ok(
         \\["\u0012"]
     );
 }
 
 test "y_string_escaped_noncharacter" {
-    ok(
+    try ok(
         \\["\uFFFF"]
     );
 }
 
 test "y_string_in_array" {
-    ok(
+    try ok(
         \\["asd"]
     );
 }
 
 test "y_string_in_array_with_leading_space" {
-    ok(
+    try ok(
         \\[ "asd"]
     );
 }
 
 test "y_string_last_surrogates_1_and_2" {
-    ok(
+    try ok(
         \\["\uDBFF\uDFFF"]
     );
 }
 
 test "y_string_nbsp_uescaped" {
-    ok(
+    try ok(
         \\["new\u00A0line"]
     );
 }
 
 test "y_string_nonCharacterInUTF-8_U+10FFFF" {
-    ok(
+    try ok(
         \\["􏿿"]
     );
 }
 
 test "y_string_nonCharacterInUTF-8_U+FFFF" {
-    ok(
+    try ok(
         \\["￿"]
     );
 }
 
 test "y_string_null_escape" {
-    ok(
+    try ok(
         \\["\u0000"]
     );
 }
 
 test "y_string_one-byte-utf-8" {
-    ok(
+    try ok(
         \\["\u002c"]
     );
 }
 
 test "y_string_pi" {
-    ok(
+    try ok(
         \\["π"]
     );
 }
 
 test "y_string_reservedCharacterInUTF-8_U+1BFFF" {
-    ok(
+    try ok(
         \\["𛿿"]
     );
 }
 
 test "y_string_simple_ascii" {
-    ok(
+    try ok(
         \\["asd "]
     );
 }
@@ -472,115 +472,115 @@ test "y_string_space" {
 }
 
 test "y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF" {
-    ok(
+    try ok(
         \\["\uD834\uDd1e"]
     );
 }
 
 test "y_string_three-byte-utf-8" {
-    ok(
+    try ok(
         \\["\u0821"]
     );
 }
 
 test "y_string_two-byte-utf-8" {
-    ok(
+    try ok(
         \\["\u0123"]
     );
 }
 
 test "y_string_u+2028_line_sep" {
-    ok("[\"\xe2\x80\xa8\"]");
+    try ok("[\"\xe2\x80\xa8\"]");
 }
 
 test "y_string_u+2029_par_sep" {
-    ok("[\"\xe2\x80\xa9\"]");
+    try ok("[\"\xe2\x80\xa9\"]");
 }
 
 test "y_string_uescaped_newline" {
-    ok(
+    try ok(
         \\["new\u000Aline"]
     );
 }
 
 test "y_string_uEscape" {
-    ok(
+    try ok(
         \\["\u0061\u30af\u30EA\u30b9"]
     );
 }
 
 test "y_string_unescaped_char_delete" {
-    ok("[\"\x7f\"]");
+    try ok("[\"\x7f\"]");
 }
 
 test "y_string_unicode_2" {
-    ok(
+    try ok(
         \\["⍂㈴⍂"]
     );
 }
 
 test "y_string_unicodeEscapedBackslash" {
-    ok(
+    try ok(
         \\["\u005C"]
     );
 }
 
 test "y_string_unicode_escaped_double_quote" {
-    ok(
+    try ok(
         \\["\u0022"]
     );
 }
 
 test "y_string_unicode" {
-    ok(
+    try ok(
         \\["\uA66D"]
     );
 }
 
 test "y_string_unicode_U+10FFFE_nonchar" {
-    ok(
+    try ok(
         \\["\uDBFF\uDFFE"]
     );
 }
 
 test "y_string_unicode_U+1FFFE_nonchar" {
-    ok(
+    try ok(
         \\["\uD83F\uDFFE"]
     );
 }
 
 test "y_string_unicode_U+200B_ZERO_WIDTH_SPACE" {
-    ok(
+    try ok(
         \\["\u200B"]
     );
 }
 
 test "y_string_unicode_U+2064_invisible_plus" {
-    ok(
+    try ok(
         \\["\u2064"]
     );
 }
 
 test "y_string_unicode_U+FDD0_nonchar" {
-    ok(
+    try ok(
         \\["\uFDD0"]
     );
 }
 
 test "y_string_unicode_U+FFFE_nonchar" {
-    ok(
+    try ok(
         \\["\uFFFE"]
     );
 }
 
 test "y_string_utf8" {
-    ok(
+    try ok(
         \\["€𝄞"]
     );
 }
 
 test "y_string_with_del_character" {
-    ok("[\"a\x7fa\"]");
+    try ok("[\"a\x7fa\"]");
 }
 
 test "y_structure_lonely_false" {
@@ -596,7 +596,7 @@ test "y_structure_lonely_int" {
 }
 
 test "y_structure_lonely_negative_real" {
-    ok(
+    try ok(
         \\-0.1
     );
 }
@@ -638,7 +638,7 @@ test "y_structure_true_in_array" {
 }
 
 test "y_structure_whitespace_array" {
-    ok(" [] ");
+    try ok(" [] ");
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////