| author | |
| committer | |
| log | 2e6e39a7004dae626ad3088cbf1e652f157e6db8 |
| tree | 5f166132424d3da5d6e372ce836f7dbdc2e75987 |
| parent | c880644d929ff8e403494ff7e6e347b4857db263 |
92 files changed, 1068 insertions(+), 98 deletions(-)
lib/compiler_rt/addf3_test.zig+5| ... | @@ -4,6 +4,7 @@ | ... | @@ -4,6 +4,7 @@ |
| 4 | // https://github.com/llvm/llvm-project/blob/02d85149a05cb1f6dc49f0ba7a2ceca53718ae17/compiler-rt/test/builtins/Unit/subtf3_test.c | 4 | // https://github.com/llvm/llvm-project/blob/02d85149a05cb1f6dc49f0ba7a2ceca53718ae17/compiler-rt/test/builtins/Unit/subtf3_test.c |
| 5 | 5 | ||
| 6 | const std = @import("std"); | 6 | const std = @import("std"); |
| 7 | const builtin = @import("builtin"); | ||
| 7 | const math = std.math; | 8 | const math = std.math; |
| 8 | const qnan128: f128 = @bitCast(@as(u128, 0x7fff800000000000) << 64); | 9 | const qnan128: f128 = @bitCast(@as(u128, 0x7fff800000000000) << 64); |
| 9 | 10 | ||
| ... | @@ -34,6 +35,8 @@ fn test__addtf3(a: f128, b: f128, expected_hi: u64, expected_lo: u64) !void { | ... | @@ -34,6 +35,8 @@ fn test__addtf3(a: f128, b: f128, expected_hi: u64, expected_lo: u64) !void { |
| 34 | } | 35 | } |
| 35 | 36 | ||
| 36 | test "addtf3" { | 37 | test "addtf3" { |
| 38 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 39 | |||
| 37 | try test__addtf3(qnan128, 0x1.23456789abcdefp+5, 0x7fff800000000000, 0x0); | 40 | try test__addtf3(qnan128, 0x1.23456789abcdefp+5, 0x7fff800000000000, 0x0); |
| 38 | 41 | ||
| 39 | // NaN + any = NaN | 42 | // NaN + any = NaN |
| ... | @@ -103,6 +106,8 @@ fn test__addxf3(a: f80, b: f80, expected: u80) !void { | ... | @@ -103,6 +106,8 @@ fn test__addxf3(a: f80, b: f80, expected: u80) !void { |
| 103 | } | 106 | } |
| 104 | 107 | ||
| 105 | test "addxf3" { | 108 | test "addxf3" { |
| 109 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 110 | |||
| 106 | // NaN + any = NaN | 111 | // NaN + any = NaN |
| 107 | try test__addxf3(qnan80, 0x1.23456789abcdefp+5, @as(u80, @bitCast(qnan80))); | 112 | try test__addxf3(qnan80, 0x1.23456789abcdefp+5, @as(u80, @bitCast(qnan80))); |
| 108 | try test__addxf3(@as(f80, @bitCast(@as(u80, 0x7fff_8000_8000_3000_0000))), 0x1.23456789abcdefp+5, @as(u80, @bitCast(qnan80))); | 113 | try test__addxf3(@as(f80, @bitCast(@as(u80, 0x7fff_8000_8000_3000_0000))), 0x1.23456789abcdefp+5, @as(u80, @bitCast(qnan80))); |
lib/compiler_rt/addoti4_test.zig+2| ... | @@ -23,6 +23,8 @@ fn simple_addoti4(a: i128, b: i128, overflow: *c_int) i128 { | ... | @@ -23,6 +23,8 @@ fn simple_addoti4(a: i128, b: i128, overflow: *c_int) i128 { |
| 23 | } | 23 | } |
| 24 | 24 | ||
| 25 | test "addoti4" { | 25 | test "addoti4" { |
| 26 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 27 | |||
| 26 | const min: i128 = math.minInt(i128); | 28 | const min: i128 = math.minInt(i128); |
| 27 | const max: i128 = math.maxInt(i128); | 29 | const max: i128 = math.maxInt(i128); |
| 28 | var i: i128 = 1; | 30 | var i: i128 = 1; |
lib/compiler_rt/comparef.zig+2| ... | @@ -98,6 +98,8 @@ pub inline fn cmp_f80(comptime RT: type, a: f80, b: f80) RT { | ... | @@ -98,6 +98,8 @@ pub inline fn cmp_f80(comptime RT: type, a: f80, b: f80) RT { |
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | test "cmp_f80" { | 100 | test "cmp_f80" { |
| 101 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 102 | |||
| 101 | inline for (.{ LE, GE }) |RT| { | 103 | inline for (.{ LE, GE }) |RT| { |
| 102 | try std.testing.expect(cmp_f80(RT, 1.0, 1.0) == RT.Equal); | 104 | try std.testing.expect(cmp_f80(RT, 1.0, 1.0) == RT.Equal); |
| 103 | try std.testing.expect(cmp_f80(RT, 0.0, -0.0) == RT.Equal); | 105 | try std.testing.expect(cmp_f80(RT, 0.0, -0.0) == RT.Equal); |
lib/compiler_rt/cos.zig+2-2| ... | @@ -1,6 +1,4 @@ | ... | @@ -1,6 +1,4 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 3 | const arch = builtin.cpu.arch; | ||
| 4 | const math = std.math; | 2 | const math = std.math; |
| 5 | const expect = std.testing.expect; | 3 | const expect = std.testing.expect; |
| 6 | const common = @import("common.zig"); | 4 | const common = @import("common.zig"); |
| ... | @@ -136,6 +134,8 @@ pub fn cosl(x: c_longdouble) callconv(.C) c_longdouble { | ... | @@ -136,6 +134,8 @@ pub fn cosl(x: c_longdouble) callconv(.C) c_longdouble { |
| 136 | } | 134 | } |
| 137 | 135 | ||
| 138 | test "cos32" { | 136 | test "cos32" { |
| 137 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 138 | |||
| 139 | const epsilon = 0.00001; | 139 | const epsilon = 0.00001; |
| 140 | 140 | ||
| 141 | try expect(math.approxEqAbs(f32, cosf(0.0), 1.0, epsilon)); | 141 | try expect(math.approxEqAbs(f32, cosf(0.0), 1.0, epsilon)); |
lib/compiler_rt/divxf3_test.zig+2| ... | @@ -39,6 +39,8 @@ fn test__divxf3(a: f80, b: f80) !void { | ... | @@ -39,6 +39,8 @@ fn test__divxf3(a: f80, b: f80) !void { |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | test "divxf3" { | 41 | test "divxf3" { |
| 42 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 43 | |||
| 42 | // NaN / any = NaN | 44 | // NaN / any = NaN |
| 43 | try expect__divxf3_result(math.nan(f80), 0x1.23456789abcdefp+5, 0x7fffC000000000000000); | 45 | try expect__divxf3_result(math.nan(f80), 0x1.23456789abcdefp+5, 0x7fffC000000000000000); |
| 44 | // inf / any(except inf and nan) = inf | 46 | // inf / any(except inf and nan) = inf |
lib/compiler_rt/int.zig+2| ... | @@ -42,6 +42,8 @@ pub fn __divmodti4(a: i128, b: i128, rem: *i128) callconv(.C) i128 { | ... | @@ -42,6 +42,8 @@ pub fn __divmodti4(a: i128, b: i128, rem: *i128) callconv(.C) i128 { |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | test "test_divmodti4" { | 44 | test "test_divmodti4" { |
| 45 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 46 | |||
| 45 | const cases = [_][4]i128{ | 47 | const cases = [_][4]i128{ |
| 46 | [_]i128{ 0, 1, 0, 0 }, | 48 | [_]i128{ 0, 1, 0, 0 }, |
| 47 | [_]i128{ 0, -1, 0, 0 }, | 49 | [_]i128{ 0, -1, 0, 0 }, |
lib/compiler_rt/int_from_float_test.zig+37| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const testing = std.testing; | 3 | const testing = std.testing; |
| 3 | const math = std.math; | 4 | const math = std.math; |
| 4 | 5 | ||
| ... | @@ -40,6 +41,8 @@ fn test__fixunssfsi(a: f32, expected: u32) !void { | ... | @@ -40,6 +41,8 @@ fn test__fixunssfsi(a: f32, expected: u32) !void { |
| 40 | } | 41 | } |
| 41 | 42 | ||
| 42 | test "fixsfsi" { | 43 | test "fixsfsi" { |
| 44 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 45 | |||
| 43 | try test__fixsfsi(-math.floatMax(f32), math.minInt(i32)); | 46 | try test__fixsfsi(-math.floatMax(f32), math.minInt(i32)); |
| 44 | 47 | ||
| 45 | try test__fixsfsi(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i32)); | 48 | try test__fixsfsi(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i32)); |
| ... | @@ -103,6 +106,8 @@ test "fixsfsi" { | ... | @@ -103,6 +106,8 @@ test "fixsfsi" { |
| 103 | } | 106 | } |
| 104 | 107 | ||
| 105 | test "fixunssfsi" { | 108 | test "fixunssfsi" { |
| 109 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 110 | |||
| 106 | try test__fixunssfsi(0.0, 0); | 111 | try test__fixunssfsi(0.0, 0); |
| 107 | 112 | ||
| 108 | try test__fixunssfsi(0.5, 0); | 113 | try test__fixunssfsi(0.5, 0); |
| ... | @@ -142,6 +147,8 @@ fn test__fixunssfdi(a: f32, expected: u64) !void { | ... | @@ -142,6 +147,8 @@ fn test__fixunssfdi(a: f32, expected: u64) !void { |
| 142 | } | 147 | } |
| 143 | 148 | ||
| 144 | test "fixsfdi" { | 149 | test "fixsfdi" { |
| 150 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 151 | |||
| 145 | try test__fixsfdi(-math.floatMax(f32), math.minInt(i64)); | 152 | try test__fixsfdi(-math.floatMax(f32), math.minInt(i64)); |
| 146 | 153 | ||
| 147 | try test__fixsfdi(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i64)); | 154 | try test__fixsfdi(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i64)); |
| ... | @@ -197,6 +204,8 @@ test "fixsfdi" { | ... | @@ -197,6 +204,8 @@ test "fixsfdi" { |
| 197 | } | 204 | } |
| 198 | 205 | ||
| 199 | test "fixunssfdi" { | 206 | test "fixunssfdi" { |
| 207 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 208 | |||
| 200 | try test__fixunssfdi(0.0, 0); | 209 | try test__fixunssfdi(0.0, 0); |
| 201 | 210 | ||
| 202 | try test__fixunssfdi(0.5, 0); | 211 | try test__fixunssfdi(0.5, 0); |
| ... | @@ -235,6 +244,8 @@ fn test__fixunssfti(a: f32, expected: u128) !void { | ... | @@ -235,6 +244,8 @@ fn test__fixunssfti(a: f32, expected: u128) !void { |
| 235 | } | 244 | } |
| 236 | 245 | ||
| 237 | test "fixsfti" { | 246 | test "fixsfti" { |
| 247 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 248 | |||
| 238 | try test__fixsfti(-math.floatMax(f32), math.minInt(i128)); | 249 | try test__fixsfti(-math.floatMax(f32), math.minInt(i128)); |
| 239 | 250 | ||
| 240 | try test__fixsfti(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i128)); | 251 | try test__fixsfti(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i128)); |
| ... | @@ -306,6 +317,8 @@ test "fixsfti" { | ... | @@ -306,6 +317,8 @@ test "fixsfti" { |
| 306 | } | 317 | } |
| 307 | 318 | ||
| 308 | test "fixunssfti" { | 319 | test "fixunssfti" { |
| 320 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 321 | |||
| 309 | try test__fixunssfti(0.0, 0); | 322 | try test__fixunssfti(0.0, 0); |
| 310 | 323 | ||
| 311 | try test__fixunssfti(0.5, 0); | 324 | try test__fixunssfti(0.5, 0); |
| ... | @@ -352,6 +365,8 @@ fn test__fixunsdfsi(a: f64, expected: u32) !void { | ... | @@ -352,6 +365,8 @@ fn test__fixunsdfsi(a: f64, expected: u32) !void { |
| 352 | } | 365 | } |
| 353 | 366 | ||
| 354 | test "fixdfsi" { | 367 | test "fixdfsi" { |
| 368 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 369 | |||
| 355 | try test__fixdfsi(-math.floatMax(f64), math.minInt(i32)); | 370 | try test__fixdfsi(-math.floatMax(f64), math.minInt(i32)); |
| 356 | 371 | ||
| 357 | try test__fixdfsi(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i32)); | 372 | try test__fixdfsi(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i32)); |
| ... | @@ -413,6 +428,8 @@ test "fixdfsi" { | ... | @@ -413,6 +428,8 @@ test "fixdfsi" { |
| 413 | } | 428 | } |
| 414 | 429 | ||
| 415 | test "fixunsdfsi" { | 430 | test "fixunsdfsi" { |
| 431 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 432 | |||
| 416 | try test__fixunsdfsi(0.0, 0); | 433 | try test__fixunsdfsi(0.0, 0); |
| 417 | 434 | ||
| 418 | try test__fixunsdfsi(0.5, 0); | 435 | try test__fixunsdfsi(0.5, 0); |
| ... | @@ -455,6 +472,8 @@ fn test__fixunsdfdi(a: f64, expected: u64) !void { | ... | @@ -455,6 +472,8 @@ fn test__fixunsdfdi(a: f64, expected: u64) !void { |
| 455 | } | 472 | } |
| 456 | 473 | ||
| 457 | test "fixdfdi" { | 474 | test "fixdfdi" { |
| 475 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 476 | |||
| 458 | try test__fixdfdi(-math.floatMax(f64), math.minInt(i64)); | 477 | try test__fixdfdi(-math.floatMax(f64), math.minInt(i64)); |
| 459 | 478 | ||
| 460 | try test__fixdfdi(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i64)); | 479 | try test__fixdfdi(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i64)); |
| ... | @@ -508,6 +527,8 @@ test "fixdfdi" { | ... | @@ -508,6 +527,8 @@ test "fixdfdi" { |
| 508 | } | 527 | } |
| 509 | 528 | ||
| 510 | test "fixunsdfdi" { | 529 | test "fixunsdfdi" { |
| 530 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 531 | |||
| 511 | try test__fixunsdfdi(0.0, 0); | 532 | try test__fixunsdfdi(0.0, 0); |
| 512 | try test__fixunsdfdi(0.5, 0); | 533 | try test__fixunsdfdi(0.5, 0); |
| 513 | try test__fixunsdfdi(0.99, 0); | 534 | try test__fixunsdfdi(0.99, 0); |
| ... | @@ -550,6 +571,8 @@ fn test__fixunsdfti(a: f64, expected: u128) !void { | ... | @@ -550,6 +571,8 @@ fn test__fixunsdfti(a: f64, expected: u128) !void { |
| 550 | } | 571 | } |
| 551 | 572 | ||
| 552 | test "fixdfti" { | 573 | test "fixdfti" { |
| 574 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 575 | |||
| 553 | try test__fixdfti(-math.floatMax(f64), math.minInt(i128)); | 576 | try test__fixdfti(-math.floatMax(f64), math.minInt(i128)); |
| 554 | 577 | ||
| 555 | try test__fixdfti(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i128)); | 578 | try test__fixdfti(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i128)); |
| ... | @@ -603,6 +626,8 @@ test "fixdfti" { | ... | @@ -603,6 +626,8 @@ test "fixdfti" { |
| 603 | } | 626 | } |
| 604 | 627 | ||
| 605 | test "fixunsdfti" { | 628 | test "fixunsdfti" { |
| 629 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 630 | |||
| 606 | try test__fixunsdfti(0.0, 0); | 631 | try test__fixunsdfti(0.0, 0); |
| 607 | 632 | ||
| 608 | try test__fixunsdfti(0.5, 0); | 633 | try test__fixunsdfti(0.5, 0); |
| ... | @@ -652,6 +677,8 @@ fn test__fixunstfsi(a: f128, expected: u32) !void { | ... | @@ -652,6 +677,8 @@ fn test__fixunstfsi(a: f128, expected: u32) !void { |
| 652 | } | 677 | } |
| 653 | 678 | ||
| 654 | test "fixtfsi" { | 679 | test "fixtfsi" { |
| 680 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 681 | |||
| 655 | try test__fixtfsi(-math.floatMax(f128), math.minInt(i32)); | 682 | try test__fixtfsi(-math.floatMax(f128), math.minInt(i32)); |
| 656 | 683 | ||
| 657 | try test__fixtfsi(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i32)); | 684 | try test__fixtfsi(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i32)); |
| ... | @@ -715,6 +742,8 @@ test "fixtfsi" { | ... | @@ -715,6 +742,8 @@ test "fixtfsi" { |
| 715 | } | 742 | } |
| 716 | 743 | ||
| 717 | test "fixunstfsi" { | 744 | test "fixunstfsi" { |
| 745 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 746 | |||
| 718 | try test__fixunstfsi(math.inf(f128), 0xffffffff); | 747 | try test__fixunstfsi(math.inf(f128), 0xffffffff); |
| 719 | try test__fixunstfsi(0, 0x0); | 748 | try test__fixunstfsi(0, 0x0); |
| 720 | try test__fixunstfsi(0x1.23456789abcdefp+5, 0x24); | 749 | try test__fixunstfsi(0x1.23456789abcdefp+5, 0x24); |
| ... | @@ -738,6 +767,8 @@ fn test__fixunstfdi(a: f128, expected: u64) !void { | ... | @@ -738,6 +767,8 @@ fn test__fixunstfdi(a: f128, expected: u64) !void { |
| 738 | } | 767 | } |
| 739 | 768 | ||
| 740 | test "fixtfdi" { | 769 | test "fixtfdi" { |
| 770 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 771 | |||
| 741 | try test__fixtfdi(-math.floatMax(f128), math.minInt(i64)); | 772 | try test__fixtfdi(-math.floatMax(f128), math.minInt(i64)); |
| 742 | 773 | ||
| 743 | try test__fixtfdi(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i64)); | 774 | try test__fixtfdi(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i64)); |
| ... | @@ -801,6 +832,8 @@ test "fixtfdi" { | ... | @@ -801,6 +832,8 @@ test "fixtfdi" { |
| 801 | } | 832 | } |
| 802 | 833 | ||
| 803 | test "fixunstfdi" { | 834 | test "fixunstfdi" { |
| 835 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 836 | |||
| 804 | try test__fixunstfdi(0.0, 0); | 837 | try test__fixunstfdi(0.0, 0); |
| 805 | 838 | ||
| 806 | try test__fixunstfdi(0.5, 0); | 839 | try test__fixunstfdi(0.5, 0); |
| ... | @@ -853,6 +886,8 @@ fn test__fixunstfti(a: f128, expected: u128) !void { | ... | @@ -853,6 +886,8 @@ fn test__fixunstfti(a: f128, expected: u128) !void { |
| 853 | } | 886 | } |
| 854 | 887 | ||
| 855 | test "fixtfti" { | 888 | test "fixtfti" { |
| 889 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 890 | |||
| 856 | try test__fixtfti(-math.floatMax(f128), math.minInt(i128)); | 891 | try test__fixtfti(-math.floatMax(f128), math.minInt(i128)); |
| 857 | 892 | ||
| 858 | try test__fixtfti(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i128)); | 893 | try test__fixtfti(-0x1.FFFFFFFFFFFFFp+1023, math.minInt(i128)); |
| ... | @@ -934,6 +969,8 @@ fn test__fixunshfti(a: f16, expected: u128) !void { | ... | @@ -934,6 +969,8 @@ fn test__fixunshfti(a: f16, expected: u128) !void { |
| 934 | } | 969 | } |
| 935 | 970 | ||
| 936 | test "fixunshfti for f16" { | 971 | test "fixunshfti for f16" { |
| 972 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 973 | |||
| 937 | try test__fixunshfti(math.inf(f16), math.maxInt(u128)); | 974 | try test__fixunshfti(math.inf(f16), math.maxInt(u128)); |
| 938 | try test__fixunshfti(math.floatMax(f16), 65504); | 975 | try test__fixunshfti(math.floatMax(f16), 65504); |
| 939 | } | 976 | } |
lib/compiler_rt/negti2_test.zig+3-1| ... | @@ -6,7 +6,9 @@ fn test__negti2(a: i128, expected: i128) !void { | ... | @@ -6,7 +6,9 @@ fn test__negti2(a: i128, expected: i128) !void { |
| 6 | try testing.expectEqual(expected, result); | 6 | try testing.expectEqual(expected, result); |
| 7 | } | 7 | } |
| 8 | 8 | ||
| 9 | test "negdi2" { | 9 | test "negti2" { |
| 10 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 11 | |||
| 10 | // TODO ensuring that math.minInt(i128); returns error | 12 | // TODO ensuring that math.minInt(i128); returns error |
| 11 | 13 | ||
| 12 | try test__negti2(-3, 3); | 14 | try test__negti2(-3, 3); |
lib/compiler_rt/powiXf2_test.zig+8-2| ... | @@ -3,8 +3,10 @@ | ... | @@ -3,8 +3,10 @@ |
| 3 | // powihf2 adapted from powisf2 tests | 3 | // powihf2 adapted from powisf2 tests |
| 4 | 4 | ||
| 5 | const powiXf2 = @import("powiXf2.zig"); | 5 | const powiXf2 = @import("powiXf2.zig"); |
| 6 | const testing = @import("std").testing; | 6 | const std = @import("std"); |
| 7 | const math = @import("std").math; | 7 | const builtin = @import("builtin"); |
| 8 | const testing = std.testing; | ||
| 9 | const math = std.math; | ||
| 8 | 10 | ||
| 9 | fn test__powihf2(a: f16, b: i32, expected: f16) !void { | 11 | fn test__powihf2(a: f16, b: i32, expected: f16) !void { |
| 10 | var result = powiXf2.__powihf2(a, b); | 12 | var result = powiXf2.__powihf2(a, b); |
| ... | @@ -351,6 +353,8 @@ test "powidf2" { | ... | @@ -351,6 +353,8 @@ test "powidf2" { |
| 351 | } | 353 | } |
| 352 | 354 | ||
| 353 | test "powitf2" { | 355 | test "powitf2" { |
| 356 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 357 | |||
| 354 | const inf_f128 = math.inf(f128); | 358 | const inf_f128 = math.inf(f128); |
| 355 | try test__powitf2(0, 0, 1); | 359 | try test__powitf2(0, 0, 1); |
| 356 | try test__powitf2(1, 0, 1); | 360 | try test__powitf2(1, 0, 1); |
| ... | @@ -456,6 +460,8 @@ test "powitf2" { | ... | @@ -456,6 +460,8 @@ test "powitf2" { |
| 456 | } | 460 | } |
| 457 | 461 | ||
| 458 | test "powixf2" { | 462 | test "powixf2" { |
| 463 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 464 | |||
| 459 | const inf_f80 = math.inf(f80); | 465 | const inf_f80 = math.inf(f80); |
| 460 | try test__powixf2(0, 0, 1); | 466 | try test__powixf2(0, 0, 1); |
| 461 | try test__powixf2(1, 0, 1); | 467 | try test__powixf2(1, 0, 1); |
lib/compiler_rt/sin.zig+2| ... | @@ -140,6 +140,8 @@ pub fn sinl(x: c_longdouble) callconv(.C) c_longdouble { | ... | @@ -140,6 +140,8 @@ pub fn sinl(x: c_longdouble) callconv(.C) c_longdouble { |
| 140 | } | 140 | } |
| 141 | 141 | ||
| 142 | test "sin32" { | 142 | test "sin32" { |
| 143 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 144 | |||
| 143 | const epsilon = 0.00001; | 145 | const epsilon = 0.00001; |
| 144 | 146 | ||
| 145 | try expect(math.approxEqAbs(f32, sinf(0.0), 0.0, epsilon)); | 147 | try expect(math.approxEqAbs(f32, sinf(0.0), 0.0, epsilon)); |
lib/compiler_rt/suboti4_test.zig+2| ... | @@ -27,6 +27,8 @@ pub fn simple_suboti4(a: i128, b: i128, overflow: *c_int) i128 { | ... | @@ -27,6 +27,8 @@ pub fn simple_suboti4(a: i128, b: i128, overflow: *c_int) i128 { |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | test "suboti3" { | 29 | test "suboti3" { |
| 30 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 31 | |||
| 30 | const min: i128 = math.minInt(i128); | 32 | const min: i128 = math.minInt(i128); |
| 31 | const max: i128 = math.maxInt(i128); | 33 | const max: i128 = math.maxInt(i128); |
| 32 | var i: i128 = 1; | 34 | var i: i128 = 1; |
lib/compiler_rt/tan.zig+4| ... | @@ -131,6 +131,8 @@ test "tan" { | ... | @@ -131,6 +131,8 @@ test "tan" { |
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | test "tan32" { | 133 | test "tan32" { |
| 134 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 135 | |||
| 134 | const epsilon = 0.00001; | 136 | const epsilon = 0.00001; |
| 135 | 137 | ||
| 136 | try expect(math.approxEqAbs(f32, tanf(0.0), 0.0, epsilon)); | 138 | try expect(math.approxEqAbs(f32, tanf(0.0), 0.0, epsilon)); |
| ... | @@ -142,6 +144,8 @@ test "tan32" { | ... | @@ -142,6 +144,8 @@ test "tan32" { |
| 142 | } | 144 | } |
| 143 | 145 | ||
| 144 | test "tan64" { | 146 | test "tan64" { |
| 147 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 148 | |||
| 145 | const epsilon = 0.000001; | 149 | const epsilon = 0.000001; |
| 146 | 150 | ||
| 147 | try expect(math.approxEqAbs(f64, tan(0.0), 0.0, epsilon)); | 151 | try expect(math.approxEqAbs(f64, tan(0.0), 0.0, epsilon)); |
lib/compiler_rt/udivmodei4.zig+4-1| ... | @@ -129,7 +129,10 @@ pub fn __umodei4(r_p: [*]u32, u_p: [*]const u32, v_p: [*]const u32, bits: usize) | ... | @@ -129,7 +129,10 @@ pub fn __umodei4(r_p: [*]u32, u_p: [*]const u32, v_p: [*]const u32, bits: usize) |
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | test "__udivei4/__umodei4" { | 131 | test "__udivei4/__umodei4" { |
| 132 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | 132 | switch (builtin.zig_backend) { |
| 133 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 134 | else => {}, | ||
| 135 | } | ||
| 133 | 136 | ||
| 134 | const RndGen = std.rand.DefaultPrng; | 137 | const RndGen = std.rand.DefaultPrng; |
| 135 | var rnd = RndGen.init(42); | 138 | var rnd = RndGen.init(42); |
lib/std/Build/Cache.zig+10| ... | @@ -1007,6 +1007,8 @@ test "cache file and then recall it" { | ... | @@ -1007,6 +1007,8 @@ test "cache file and then recall it" { |
| 1007 | return error.SkipZigTest; | 1007 | return error.SkipZigTest; |
| 1008 | } | 1008 | } |
| 1009 | 1009 | ||
| 1010 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1011 | |||
| 1010 | var tmp = testing.tmpDir(.{}); | 1012 | var tmp = testing.tmpDir(.{}); |
| 1011 | defer tmp.cleanup(); | 1013 | defer tmp.cleanup(); |
| 1012 | 1014 | ||
| ... | @@ -1072,6 +1074,9 @@ test "check that changing a file makes cache fail" { | ... | @@ -1072,6 +1074,9 @@ test "check that changing a file makes cache fail" { |
| 1072 | // https://github.com/ziglang/zig/issues/5437 | 1074 | // https://github.com/ziglang/zig/issues/5437 |
| 1073 | return error.SkipZigTest; | 1075 | return error.SkipZigTest; |
| 1074 | } | 1076 | } |
| 1077 | |||
| 1078 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1079 | |||
| 1075 | var tmp = testing.tmpDir(.{}); | 1080 | var tmp = testing.tmpDir(.{}); |
| 1076 | defer tmp.cleanup(); | 1081 | defer tmp.cleanup(); |
| 1077 | 1082 | ||
| ... | @@ -1146,6 +1151,8 @@ test "no file inputs" { | ... | @@ -1146,6 +1151,8 @@ test "no file inputs" { |
| 1146 | return error.SkipZigTest; | 1151 | return error.SkipZigTest; |
| 1147 | } | 1152 | } |
| 1148 | 1153 | ||
| 1154 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1155 | |||
| 1149 | var tmp = testing.tmpDir(.{}); | 1156 | var tmp = testing.tmpDir(.{}); |
| 1150 | defer tmp.cleanup(); | 1157 | defer tmp.cleanup(); |
| 1151 | 1158 | ||
| ... | @@ -1193,6 +1200,9 @@ test "Manifest with files added after initial hash work" { | ... | @@ -1193,6 +1200,9 @@ test "Manifest with files added after initial hash work" { |
| 1193 | // https://github.com/ziglang/zig/issues/5437 | 1200 | // https://github.com/ziglang/zig/issues/5437 |
| 1194 | return error.SkipZigTest; | 1201 | return error.SkipZigTest; |
| 1195 | } | 1202 | } |
| 1203 | |||
| 1204 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1205 | |||
| 1196 | var tmp = testing.tmpDir(.{}); | 1206 | var tmp = testing.tmpDir(.{}); |
| 1197 | defer tmp.cleanup(); | 1207 | defer tmp.cleanup(); |
| 1198 | 1208 |
lib/std/Build/Step/Options.zig+2| ... | @@ -296,6 +296,8 @@ const Arg = struct { | ... | @@ -296,6 +296,8 @@ const Arg = struct { |
| 296 | test Options { | 296 | test Options { |
| 297 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 297 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 298 | 298 | ||
| 299 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 300 | |||
| 299 | var arena = std.heap.ArenaAllocator.init(std.testing.allocator); | 301 | var arena = std.heap.ArenaAllocator.init(std.testing.allocator); |
| 300 | defer arena.deinit(); | 302 | defer arena.deinit(); |
| 301 | 303 |
lib/std/atomic/Atomic.zig+2| ... | @@ -374,6 +374,8 @@ const atomic_rmw_orderings = [_]Ordering{ | ... | @@ -374,6 +374,8 @@ const atomic_rmw_orderings = [_]Ordering{ |
| 374 | }; | 374 | }; |
| 375 | 375 | ||
| 376 | test "Atomic.swap" { | 376 | test "Atomic.swap" { |
| 377 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 378 | |||
| 377 | inline for (atomic_rmw_orderings) |ordering| { | 379 | inline for (atomic_rmw_orderings) |ordering| { |
| 378 | var x = Atomic(usize).init(5); | 380 | var x = Atomic(usize).init(5); |
| 379 | try testing.expectEqual(x.swap(10, ordering), 5); | 381 | try testing.expectEqual(x.swap(10, ordering), 5); |
lib/std/base64.zig+7| ... | @@ -1,5 +1,6 @@ | ... | @@ -1,5 +1,6 @@ |
| 1 | const std = @import("std.zig"); | 1 | const std = @import("std.zig"); |
| 2 | const assert = std.debug.assert; | 2 | const assert = std.debug.assert; |
| 3 | const builtin = @import("builtin"); | ||
| 3 | const testing = std.testing; | 4 | const testing = std.testing; |
| 4 | const mem = std.mem; | 5 | const mem = std.mem; |
| 5 | 6 | ||
| ... | @@ -354,12 +355,16 @@ pub const Base64DecoderWithIgnore = struct { | ... | @@ -354,12 +355,16 @@ pub const Base64DecoderWithIgnore = struct { |
| 354 | }; | 355 | }; |
| 355 | 356 | ||
| 356 | test "base64" { | 357 | test "base64" { |
| 358 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 359 | |||
| 357 | @setEvalBranchQuota(8000); | 360 | @setEvalBranchQuota(8000); |
| 358 | try testBase64(); | 361 | try testBase64(); |
| 359 | try comptime testAllApis(standard, "comptime", "Y29tcHRpbWU="); | 362 | try comptime testAllApis(standard, "comptime", "Y29tcHRpbWU="); |
| 360 | } | 363 | } |
| 361 | 364 | ||
| 362 | test "base64 padding dest overflow" { | 365 | test "base64 padding dest overflow" { |
| 366 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 367 | |||
| 363 | const input = "foo"; | 368 | const input = "foo"; |
| 364 | 369 | ||
| 365 | var expect: [128]u8 = undefined; | 370 | var expect: [128]u8 = undefined; |
| ... | @@ -374,6 +379,8 @@ test "base64 padding dest overflow" { | ... | @@ -374,6 +379,8 @@ test "base64 padding dest overflow" { |
| 374 | } | 379 | } |
| 375 | 380 | ||
| 376 | test "base64 url_safe_no_pad" { | 381 | test "base64 url_safe_no_pad" { |
| 382 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 383 | |||
| 377 | @setEvalBranchQuota(8000); | 384 | @setEvalBranchQuota(8000); |
| 378 | try testBase64UrlSafeNoPad(); | 385 | try testBase64UrlSafeNoPad(); |
| 379 | try comptime testAllApis(url_safe_no_pad, "comptime", "Y29tcHRpbWU"); | 386 | try comptime testAllApis(url_safe_no_pad, "comptime", "Y29tcHRpbWU"); |
lib/std/bit_set.zig+9-1| ... | @@ -1636,7 +1636,10 @@ fn testStaticBitSet(comptime Set: type) !void { | ... | @@ -1636,7 +1636,10 @@ fn testStaticBitSet(comptime Set: type) !void { |
| 1636 | } | 1636 | } |
| 1637 | 1637 | ||
| 1638 | test "IntegerBitSet" { | 1638 | test "IntegerBitSet" { |
| 1639 | if (@import("builtin").zig_backend == .stage2_c) return error.SkipZigTest; | 1639 | switch (@import("builtin").zig_backend) { |
| 1640 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 1641 | else => {}, | ||
| 1642 | } | ||
| 1640 | 1643 | ||
| 1641 | try testStaticBitSet(IntegerBitSet(0)); | 1644 | try testStaticBitSet(IntegerBitSet(0)); |
| 1642 | try testStaticBitSet(IntegerBitSet(1)); | 1645 | try testStaticBitSet(IntegerBitSet(1)); |
| ... | @@ -1649,6 +1652,11 @@ test "IntegerBitSet" { | ... | @@ -1649,6 +1652,11 @@ test "IntegerBitSet" { |
| 1649 | } | 1652 | } |
| 1650 | 1653 | ||
| 1651 | test "ArrayBitSet" { | 1654 | test "ArrayBitSet" { |
| 1655 | switch (@import("builtin").zig_backend) { | ||
| 1656 | .stage2_x86_64 => return error.SkipZigTest, | ||
| 1657 | else => {}, | ||
| 1658 | } | ||
| 1659 | |||
| 1652 | inline for (.{ 0, 1, 2, 31, 32, 33, 63, 64, 65, 254, 500, 3000 }) |size| { | 1660 | inline for (.{ 0, 1, 2, 31, 32, 33, 63, 64, 65, 254, 500, 3000 }) |size| { |
| 1653 | try testStaticBitSet(ArrayBitSet(u8, size)); | 1661 | try testStaticBitSet(ArrayBitSet(u8, size)); |
| 1654 | try testStaticBitSet(ArrayBitSet(u16, size)); | 1662 | try testStaticBitSet(ArrayBitSet(u16, size)); |
lib/std/compress/lzma/test.zig+17| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("../../std.zig"); | 1 | const std = @import("../../std.zig"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const lzma = @import("../lzma.zig"); | 3 | const lzma = @import("../lzma.zig"); |
| 3 | 4 | ||
| 4 | fn testDecompress(compressed: []const u8) ![]u8 { | 5 | fn testDecompress(compressed: []const u8) ![]u8 { |
| ... | @@ -22,6 +23,8 @@ fn testDecompressError(expected: anyerror, compressed: []const u8) !void { | ... | @@ -22,6 +23,8 @@ fn testDecompressError(expected: anyerror, compressed: []const u8) !void { |
| 22 | } | 23 | } |
| 23 | 24 | ||
| 24 | test "LZMA: decompress empty world" { | 25 | test "LZMA: decompress empty world" { |
| 26 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 27 | |||
| 25 | try testDecompressEqual( | 28 | try testDecompressEqual( |
| 26 | "", | 29 | "", |
| 27 | &[_]u8{ | 30 | &[_]u8{ |
| ... | @@ -32,6 +35,8 @@ test "LZMA: decompress empty world" { | ... | @@ -32,6 +35,8 @@ test "LZMA: decompress empty world" { |
| 32 | } | 35 | } |
| 33 | 36 | ||
| 34 | test "LZMA: decompress hello world" { | 37 | test "LZMA: decompress hello world" { |
| 38 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 39 | |||
| 35 | try testDecompressEqual( | 40 | try testDecompressEqual( |
| 36 | "Hello world\n", | 41 | "Hello world\n", |
| 37 | &[_]u8{ | 42 | &[_]u8{ |
| ... | @@ -43,6 +48,8 @@ test "LZMA: decompress hello world" { | ... | @@ -43,6 +48,8 @@ test "LZMA: decompress hello world" { |
| 43 | } | 48 | } |
| 44 | 49 | ||
| 45 | test "LZMA: decompress huge dict" { | 50 | test "LZMA: decompress huge dict" { |
| 51 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 52 | |||
| 46 | try testDecompressEqual( | 53 | try testDecompressEqual( |
| 47 | "Hello world\n", | 54 | "Hello world\n", |
| 48 | &[_]u8{ | 55 | &[_]u8{ |
| ... | @@ -54,6 +61,8 @@ test "LZMA: decompress huge dict" { | ... | @@ -54,6 +61,8 @@ test "LZMA: decompress huge dict" { |
| 54 | } | 61 | } |
| 55 | 62 | ||
| 56 | test "LZMA: unknown size with end of payload marker" { | 63 | test "LZMA: unknown size with end of payload marker" { |
| 64 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 65 | |||
| 57 | try testDecompressEqual( | 66 | try testDecompressEqual( |
| 58 | "Hello\nWorld!\n", | 67 | "Hello\nWorld!\n", |
| 59 | @embedFile("testdata/good-unknown_size-with_eopm.lzma"), | 68 | @embedFile("testdata/good-unknown_size-with_eopm.lzma"), |
| ... | @@ -61,6 +70,8 @@ test "LZMA: unknown size with end of payload marker" { | ... | @@ -61,6 +70,8 @@ test "LZMA: unknown size with end of payload marker" { |
| 61 | } | 70 | } |
| 62 | 71 | ||
| 63 | test "LZMA: known size without end of payload marker" { | 72 | test "LZMA: known size without end of payload marker" { |
| 73 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 74 | |||
| 64 | try testDecompressEqual( | 75 | try testDecompressEqual( |
| 65 | "Hello\nWorld!\n", | 76 | "Hello\nWorld!\n", |
| 66 | @embedFile("testdata/good-known_size-without_eopm.lzma"), | 77 | @embedFile("testdata/good-known_size-without_eopm.lzma"), |
| ... | @@ -68,6 +79,8 @@ test "LZMA: known size without end of payload marker" { | ... | @@ -68,6 +79,8 @@ test "LZMA: known size without end of payload marker" { |
| 68 | } | 79 | } |
| 69 | 80 | ||
| 70 | test "LZMA: known size with end of payload marker" { | 81 | test "LZMA: known size with end of payload marker" { |
| 82 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 83 | |||
| 71 | try testDecompressEqual( | 84 | try testDecompressEqual( |
| 72 | "Hello\nWorld!\n", | 85 | "Hello\nWorld!\n", |
| 73 | @embedFile("testdata/good-known_size-with_eopm.lzma"), | 86 | @embedFile("testdata/good-known_size-with_eopm.lzma"), |
| ... | @@ -75,6 +88,8 @@ test "LZMA: known size with end of payload marker" { | ... | @@ -75,6 +88,8 @@ test "LZMA: known size with end of payload marker" { |
| 75 | } | 88 | } |
| 76 | 89 | ||
| 77 | test "LZMA: too big uncompressed size in header" { | 90 | test "LZMA: too big uncompressed size in header" { |
| 91 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 92 | |||
| 78 | try testDecompressError( | 93 | try testDecompressError( |
| 79 | error.CorruptInput, | 94 | error.CorruptInput, |
| 80 | @embedFile("testdata/bad-too_big_size-with_eopm.lzma"), | 95 | @embedFile("testdata/bad-too_big_size-with_eopm.lzma"), |
| ... | @@ -82,6 +97,8 @@ test "LZMA: too big uncompressed size in header" { | ... | @@ -82,6 +97,8 @@ test "LZMA: too big uncompressed size in header" { |
| 82 | } | 97 | } |
| 83 | 98 | ||
| 84 | test "LZMA: too small uncompressed size in header" { | 99 | test "LZMA: too small uncompressed size in header" { |
| 100 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 101 | |||
| 85 | try testDecompressError( | 102 | try testDecompressError( |
| 86 | error.CorruptInput, | 103 | error.CorruptInput, |
| 87 | @embedFile("testdata/bad-too_small_size-without_eopm-3.lzma"), | 104 | @embedFile("testdata/bad-too_small_size-without_eopm-3.lzma"), |
lib/std/crypto.zig+2| ... | @@ -314,6 +314,8 @@ test "CSPRNG" { | ... | @@ -314,6 +314,8 @@ test "CSPRNG" { |
| 314 | } | 314 | } |
| 315 | 315 | ||
| 316 | test "issue #4532: no index out of bounds" { | 316 | test "issue #4532: no index out of bounds" { |
| 317 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 318 | |||
| 317 | const types = [_]type{ | 319 | const types = [_]type{ |
| 318 | hash.Md5, | 320 | hash.Md5, |
| 319 | hash.Sha1, | 321 | hash.Sha1, |
lib/std/crypto/25519/curve25519.zig+5| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const crypto = std.crypto; | 3 | const crypto = std.crypto; |
| 3 | 4 | ||
| 4 | const IdentityElementError = crypto.errors.IdentityElementError; | 5 | const IdentityElementError = crypto.errors.IdentityElementError; |
| ... | @@ -111,6 +112,8 @@ pub const Curve25519 = struct { | ... | @@ -111,6 +112,8 @@ pub const Curve25519 = struct { |
| 111 | }; | 112 | }; |
| 112 | 113 | ||
| 113 | test "curve25519" { | 114 | test "curve25519" { |
| 115 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 116 | |||
| 114 | var s = [32]u8{ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8 }; | 117 | var s = [32]u8{ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8 }; |
| 115 | const p = try Curve25519.basePoint.clampedMul(s); | 118 | const p = try Curve25519.basePoint.clampedMul(s); |
| 116 | try p.rejectIdentity(); | 119 | try p.rejectIdentity(); |
| ... | @@ -125,6 +128,8 @@ test "curve25519" { | ... | @@ -125,6 +128,8 @@ test "curve25519" { |
| 125 | } | 128 | } |
| 126 | 129 | ||
| 127 | test "curve25519 small order check" { | 130 | test "curve25519 small order check" { |
| 131 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 132 | |||
| 128 | var s: [32]u8 = [_]u8{1} ++ [_]u8{0} ** 31; | 133 | var s: [32]u8 = [_]u8{1} ++ [_]u8{0} ** 31; |
| 129 | const small_order_ss: [7][32]u8 = .{ | 134 | const small_order_ss: [7][32]u8 = .{ |
| 130 | .{ | 135 | .{ |
lib/std/crypto/25519/ed25519.zig+15-1| ... | @@ -1,5 +1,5 @@ | ... | @@ -1,5 +1,5 @@ |
| 1 | const builtin = @import("builtin"); | ||
| 2 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 3 | const crypto = std.crypto; | 3 | const crypto = std.crypto; |
| 4 | const debug = std.debug; | 4 | const debug = std.debug; |
| 5 | const fmt = std.fmt; | 5 | const fmt = std.fmt; |
| ... | @@ -484,6 +484,8 @@ pub const Ed25519 = struct { | ... | @@ -484,6 +484,8 @@ pub const Ed25519 = struct { |
| 484 | }; | 484 | }; |
| 485 | 485 | ||
| 486 | test "ed25519 key pair creation" { | 486 | test "ed25519 key pair creation" { |
| 487 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 488 | |||
| 487 | var seed: [32]u8 = undefined; | 489 | var seed: [32]u8 = undefined; |
| 488 | _ = try fmt.hexToBytes(seed[0..], "8052030376d47112be7f73ed7a019293dd12ad910b654455798b4667d73de166"); | 490 | _ = try fmt.hexToBytes(seed[0..], "8052030376d47112be7f73ed7a019293dd12ad910b654455798b4667d73de166"); |
| 489 | const key_pair = try Ed25519.KeyPair.create(seed); | 491 | const key_pair = try Ed25519.KeyPair.create(seed); |
| ... | @@ -493,6 +495,8 @@ test "ed25519 key pair creation" { | ... | @@ -493,6 +495,8 @@ test "ed25519 key pair creation" { |
| 493 | } | 495 | } |
| 494 | 496 | ||
| 495 | test "ed25519 signature" { | 497 | test "ed25519 signature" { |
| 498 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 499 | |||
| 496 | var seed: [32]u8 = undefined; | 500 | var seed: [32]u8 = undefined; |
| 497 | _ = try fmt.hexToBytes(seed[0..], "8052030376d47112be7f73ed7a019293dd12ad910b654455798b4667d73de166"); | 501 | _ = try fmt.hexToBytes(seed[0..], "8052030376d47112be7f73ed7a019293dd12ad910b654455798b4667d73de166"); |
| 498 | const key_pair = try Ed25519.KeyPair.create(seed); | 502 | const key_pair = try Ed25519.KeyPair.create(seed); |
| ... | @@ -505,6 +509,8 @@ test "ed25519 signature" { | ... | @@ -505,6 +509,8 @@ test "ed25519 signature" { |
| 505 | } | 509 | } |
| 506 | 510 | ||
| 507 | test "ed25519 batch verification" { | 511 | test "ed25519 batch verification" { |
| 512 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 513 | |||
| 508 | var i: usize = 0; | 514 | var i: usize = 0; |
| 509 | while (i < 100) : (i += 1) { | 515 | while (i < 100) : (i += 1) { |
| 510 | const key_pair = try Ed25519.KeyPair.create(null); | 516 | const key_pair = try Ed25519.KeyPair.create(null); |
| ... | @@ -534,6 +540,8 @@ test "ed25519 batch verification" { | ... | @@ -534,6 +540,8 @@ test "ed25519 batch verification" { |
| 534 | } | 540 | } |
| 535 | 541 | ||
| 536 | test "ed25519 test vectors" { | 542 | test "ed25519 test vectors" { |
| 543 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 544 | |||
| 537 | const Vec = struct { | 545 | const Vec = struct { |
| 538 | msg_hex: *const [64:0]u8, | 546 | msg_hex: *const [64:0]u8, |
| 539 | public_key_hex: *const [64:0]u8, | 547 | public_key_hex: *const [64:0]u8, |
| ... | @@ -636,6 +644,8 @@ test "ed25519 test vectors" { | ... | @@ -636,6 +644,8 @@ test "ed25519 test vectors" { |
| 636 | } | 644 | } |
| 637 | 645 | ||
| 638 | test "ed25519 with blind keys" { | 646 | test "ed25519 with blind keys" { |
| 647 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 648 | |||
| 639 | const BlindKeyPair = Ed25519.key_blinding.BlindKeyPair; | 649 | const BlindKeyPair = Ed25519.key_blinding.BlindKeyPair; |
| 640 | 650 | ||
| 641 | // Create a standard Ed25519 key pair | 651 | // Create a standard Ed25519 key pair |
| ... | @@ -659,6 +669,8 @@ test "ed25519 with blind keys" { | ... | @@ -659,6 +669,8 @@ test "ed25519 with blind keys" { |
| 659 | } | 669 | } |
| 660 | 670 | ||
| 661 | test "ed25519 signatures with streaming" { | 671 | test "ed25519 signatures with streaming" { |
| 672 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 673 | |||
| 662 | const kp = try Ed25519.KeyPair.create(null); | 674 | const kp = try Ed25519.KeyPair.create(null); |
| 663 | 675 | ||
| 664 | var signer = try kp.signer(null); | 676 | var signer = try kp.signer(null); |
| ... | @@ -675,6 +687,8 @@ test "ed25519 signatures with streaming" { | ... | @@ -675,6 +687,8 @@ test "ed25519 signatures with streaming" { |
| 675 | } | 687 | } |
| 676 | 688 | ||
| 677 | test "ed25519 key pair from secret key" { | 689 | test "ed25519 key pair from secret key" { |
| 690 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 691 | |||
| 678 | const kp = try Ed25519.KeyPair.create(null); | 692 | const kp = try Ed25519.KeyPair.create(null); |
| 679 | const kp2 = try Ed25519.KeyPair.fromSecretKey(kp.secret_key); | 693 | const kp2 = try Ed25519.KeyPair.fromSecretKey(kp.secret_key); |
| 680 | try std.testing.expectEqualSlices(u8, &kp.secret_key.toBytes(), &kp2.secret_key.toBytes()); | 694 | try std.testing.expectEqualSlices(u8, &kp.secret_key.toBytes(), &kp2.secret_key.toBytes()); |
lib/std/crypto/25519/edwards25519.zig+11| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const crypto = std.crypto; | 3 | const crypto = std.crypto; |
| 3 | const debug = std.debug; | 4 | const debug = std.debug; |
| 4 | const fmt = std.fmt; | 5 | const fmt = std.fmt; |
| ... | @@ -494,6 +495,8 @@ pub const Edwards25519 = struct { | ... | @@ -494,6 +495,8 @@ pub const Edwards25519 = struct { |
| 494 | const htest = @import("../test.zig"); | 495 | const htest = @import("../test.zig"); |
| 495 | 496 | ||
| 496 | test "edwards25519 packing/unpacking" { | 497 | test "edwards25519 packing/unpacking" { |
| 498 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 499 | |||
| 497 | const s = [_]u8{170} ++ [_]u8{0} ** 31; | 500 | const s = [_]u8{170} ++ [_]u8{0} ** 31; |
| 498 | var b = Edwards25519.basePoint; | 501 | var b = Edwards25519.basePoint; |
| 499 | const pk = try b.mul(s); | 502 | const pk = try b.mul(s); |
| ... | @@ -530,6 +533,8 @@ test "edwards25519 packing/unpacking" { | ... | @@ -530,6 +533,8 @@ test "edwards25519 packing/unpacking" { |
| 530 | } | 533 | } |
| 531 | 534 | ||
| 532 | test "edwards25519 point addition/subtraction" { | 535 | test "edwards25519 point addition/subtraction" { |
| 536 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 537 | |||
| 533 | var s1: [32]u8 = undefined; | 538 | var s1: [32]u8 = undefined; |
| 534 | var s2: [32]u8 = undefined; | 539 | var s2: [32]u8 = undefined; |
| 535 | crypto.random.bytes(&s1); | 540 | crypto.random.bytes(&s1); |
| ... | @@ -544,6 +549,8 @@ test "edwards25519 point addition/subtraction" { | ... | @@ -544,6 +549,8 @@ test "edwards25519 point addition/subtraction" { |
| 544 | } | 549 | } |
| 545 | 550 | ||
| 546 | test "edwards25519 uniform-to-point" { | 551 | test "edwards25519 uniform-to-point" { |
| 552 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 553 | |||
| 547 | var r = [32]u8{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 }; | 554 | var r = [32]u8{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 }; |
| 548 | var p = Edwards25519.fromUniform(r); | 555 | var p = Edwards25519.fromUniform(r); |
| 549 | try htest.assertEqual("0691eee3cf70a0056df6bfa03120635636581b5c4ea571dfc680f78c7e0b4137", p.toBytes()[0..]); | 556 | try htest.assertEqual("0691eee3cf70a0056df6bfa03120635636581b5c4ea571dfc680f78c7e0b4137", p.toBytes()[0..]); |
| ... | @@ -555,6 +562,8 @@ test "edwards25519 uniform-to-point" { | ... | @@ -555,6 +562,8 @@ test "edwards25519 uniform-to-point" { |
| 555 | 562 | ||
| 556 | // Test vectors from draft-irtf-cfrg-hash-to-curve-12 | 563 | // Test vectors from draft-irtf-cfrg-hash-to-curve-12 |
| 557 | test "edwards25519 hash-to-curve operation" { | 564 | test "edwards25519 hash-to-curve operation" { |
| 565 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 566 | |||
| 558 | var p = Edwards25519.fromString(true, "QUUX-V01-CS02-with-edwards25519_XMD:SHA-512_ELL2_RO_", "abc"); | 567 | var p = Edwards25519.fromString(true, "QUUX-V01-CS02-with-edwards25519_XMD:SHA-512_ELL2_RO_", "abc"); |
| 559 | try htest.assertEqual("31558a26887f23fb8218f143e69d5f0af2e7831130bd5b432ef23883b895839a", p.toBytes()[0..]); | 568 | try htest.assertEqual("31558a26887f23fb8218f143e69d5f0af2e7831130bd5b432ef23883b895839a", p.toBytes()[0..]); |
| 560 | 569 | ||
| ... | @@ -563,6 +572,8 @@ test "edwards25519 hash-to-curve operation" { | ... | @@ -563,6 +572,8 @@ test "edwards25519 hash-to-curve operation" { |
| 563 | } | 572 | } |
| 564 | 573 | ||
| 565 | test "edwards25519 implicit reduction of invalid scalars" { | 574 | test "edwards25519 implicit reduction of invalid scalars" { |
| 575 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 576 | |||
| 566 | const s = [_]u8{0} ** 31 ++ [_]u8{255}; | 577 | const s = [_]u8{0} ** 31 ++ [_]u8{255}; |
| 567 | const p1 = try Edwards25519.basePoint.mulPublic(s); | 578 | const p1 = try Edwards25519.basePoint.mulPublic(s); |
| 568 | const p2 = try Edwards25519.basePoint.mul(s); | 579 | const p2 = try Edwards25519.basePoint.mul(s); |
lib/std/crypto/25519/ristretto255.zig+2| ... | @@ -168,6 +168,8 @@ pub const Ristretto255 = struct { | ... | @@ -168,6 +168,8 @@ pub const Ristretto255 = struct { |
| 168 | }; | 168 | }; |
| 169 | 169 | ||
| 170 | test "ristretto255" { | 170 | test "ristretto255" { |
| 171 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 172 | |||
| 171 | const p = Ristretto255.basePoint; | 173 | const p = Ristretto255.basePoint; |
| 172 | var buf: [256]u8 = undefined; | 174 | var buf: [256]u8 = undefined; |
| 173 | try std.testing.expectEqualStrings(try std.fmt.bufPrint(&buf, "{s}", .{std.fmt.fmtSliceHexUpper(&p.toBytes())}), "E2F2AE0A6ABC4E71A884A961C500515F58E30B6AA582DD8DB6A65945E08D2D76"); | 175 | try std.testing.expectEqualStrings(try std.fmt.bufPrint(&buf, "{s}", .{std.fmt.fmtSliceHexUpper(&p.toBytes())}), "E2F2AE0A6ABC4E71A884A961C500515F58E30B6AA582DD8DB6A65945E08D2D76"); |
lib/std/crypto/25519/x25519.zig+15| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const crypto = std.crypto; | 3 | const crypto = std.crypto; |
| 3 | const mem = std.mem; | 4 | const mem = std.mem; |
| 4 | const fmt = std.fmt; | 5 | const fmt = std.fmt; |
| ... | @@ -82,6 +83,8 @@ pub const X25519 = struct { | ... | @@ -82,6 +83,8 @@ pub const X25519 = struct { |
| 82 | const htest = @import("../test.zig"); | 83 | const htest = @import("../test.zig"); |
| 83 | 84 | ||
| 84 | test "x25519 public key calculation from secret key" { | 85 | test "x25519 public key calculation from secret key" { |
| 86 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 87 | |||
| 85 | var sk: [32]u8 = undefined; | 88 | var sk: [32]u8 = undefined; |
| 86 | var pk_expected: [32]u8 = undefined; | 89 | var pk_expected: [32]u8 = undefined; |
| 87 | _ = try fmt.hexToBytes(sk[0..], "8052030376d47112be7f73ed7a019293dd12ad910b654455798b4667d73de166"); | 90 | _ = try fmt.hexToBytes(sk[0..], "8052030376d47112be7f73ed7a019293dd12ad910b654455798b4667d73de166"); |
| ... | @@ -91,6 +94,8 @@ test "x25519 public key calculation from secret key" { | ... | @@ -91,6 +94,8 @@ test "x25519 public key calculation from secret key" { |
| 91 | } | 94 | } |
| 92 | 95 | ||
| 93 | test "x25519 rfc7748 vector1" { | 96 | test "x25519 rfc7748 vector1" { |
| 97 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 98 | |||
| 94 | const secret_key = [32]u8{ 0xa5, 0x46, 0xe3, 0x6b, 0xf0, 0x52, 0x7c, 0x9d, 0x3b, 0x16, 0x15, 0x4b, 0x82, 0x46, 0x5e, 0xdd, 0x62, 0x14, 0x4c, 0x0a, 0xc1, 0xfc, 0x5a, 0x18, 0x50, 0x6a, 0x22, 0x44, 0xba, 0x44, 0x9a, 0xc4 }; | 99 | const secret_key = [32]u8{ 0xa5, 0x46, 0xe3, 0x6b, 0xf0, 0x52, 0x7c, 0x9d, 0x3b, 0x16, 0x15, 0x4b, 0x82, 0x46, 0x5e, 0xdd, 0x62, 0x14, 0x4c, 0x0a, 0xc1, 0xfc, 0x5a, 0x18, 0x50, 0x6a, 0x22, 0x44, 0xba, 0x44, 0x9a, 0xc4 }; |
| 95 | const public_key = [32]u8{ 0xe6, 0xdb, 0x68, 0x67, 0x58, 0x30, 0x30, 0xdb, 0x35, 0x94, 0xc1, 0xa4, 0x24, 0xb1, 0x5f, 0x7c, 0x72, 0x66, 0x24, 0xec, 0x26, 0xb3, 0x35, 0x3b, 0x10, 0xa9, 0x03, 0xa6, 0xd0, 0xab, 0x1c, 0x4c }; | 100 | const public_key = [32]u8{ 0xe6, 0xdb, 0x68, 0x67, 0x58, 0x30, 0x30, 0xdb, 0x35, 0x94, 0xc1, 0xa4, 0x24, 0xb1, 0x5f, 0x7c, 0x72, 0x66, 0x24, 0xec, 0x26, 0xb3, 0x35, 0x3b, 0x10, 0xa9, 0x03, 0xa6, 0xd0, 0xab, 0x1c, 0x4c }; |
| 96 | 101 | ||
| ... | @@ -101,6 +106,8 @@ test "x25519 rfc7748 vector1" { | ... | @@ -101,6 +106,8 @@ test "x25519 rfc7748 vector1" { |
| 101 | } | 106 | } |
| 102 | 107 | ||
| 103 | test "x25519 rfc7748 vector2" { | 108 | test "x25519 rfc7748 vector2" { |
| 109 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 110 | |||
| 104 | const secret_key = [32]u8{ 0x4b, 0x66, 0xe9, 0xd4, 0xd1, 0xb4, 0x67, 0x3c, 0x5a, 0xd2, 0x26, 0x91, 0x95, 0x7d, 0x6a, 0xf5, 0xc1, 0x1b, 0x64, 0x21, 0xe0, 0xea, 0x01, 0xd4, 0x2c, 0xa4, 0x16, 0x9e, 0x79, 0x18, 0xba, 0x0d }; | 111 | const secret_key = [32]u8{ 0x4b, 0x66, 0xe9, 0xd4, 0xd1, 0xb4, 0x67, 0x3c, 0x5a, 0xd2, 0x26, 0x91, 0x95, 0x7d, 0x6a, 0xf5, 0xc1, 0x1b, 0x64, 0x21, 0xe0, 0xea, 0x01, 0xd4, 0x2c, 0xa4, 0x16, 0x9e, 0x79, 0x18, 0xba, 0x0d }; |
| 105 | const public_key = [32]u8{ 0xe5, 0x21, 0x0f, 0x12, 0x78, 0x68, 0x11, 0xd3, 0xf4, 0xb7, 0x95, 0x9d, 0x05, 0x38, 0xae, 0x2c, 0x31, 0xdb, 0xe7, 0x10, 0x6f, 0xc0, 0x3c, 0x3e, 0xfc, 0x4c, 0xd5, 0x49, 0xc7, 0x15, 0xa4, 0x93 }; | 112 | const public_key = [32]u8{ 0xe5, 0x21, 0x0f, 0x12, 0x78, 0x68, 0x11, 0xd3, 0xf4, 0xb7, 0x95, 0x9d, 0x05, 0x38, 0xae, 0x2c, 0x31, 0xdb, 0xe7, 0x10, 0x6f, 0xc0, 0x3c, 0x3e, 0xfc, 0x4c, 0xd5, 0x49, 0xc7, 0x15, 0xa4, 0x93 }; |
| 106 | 113 | ||
| ... | @@ -111,6 +118,8 @@ test "x25519 rfc7748 vector2" { | ... | @@ -111,6 +118,8 @@ test "x25519 rfc7748 vector2" { |
| 111 | } | 118 | } |
| 112 | 119 | ||
| 113 | test "x25519 rfc7748 one iteration" { | 120 | test "x25519 rfc7748 one iteration" { |
| 121 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 122 | |||
| 114 | const initial_value = [32]u8{ 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; | 123 | const initial_value = [32]u8{ 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; |
| 115 | const expected_output = [32]u8{ 0x42, 0x2c, 0x8e, 0x7a, 0x62, 0x27, 0xd7, 0xbc, 0xa1, 0x35, 0x0b, 0x3e, 0x2b, 0xb7, 0x27, 0x9f, 0x78, 0x97, 0xb8, 0x7b, 0xb6, 0x85, 0x4b, 0x78, 0x3c, 0x60, 0xe8, 0x03, 0x11, 0xae, 0x30, 0x79 }; | 124 | const expected_output = [32]u8{ 0x42, 0x2c, 0x8e, 0x7a, 0x62, 0x27, 0xd7, 0xbc, 0xa1, 0x35, 0x0b, 0x3e, 0x2b, 0xb7, 0x27, 0x9f, 0x78, 0x97, 0xb8, 0x7b, 0xb6, 0x85, 0x4b, 0x78, 0x3c, 0x60, 0xe8, 0x03, 0x11, 0xae, 0x30, 0x79 }; |
| 116 | 125 | ||
| ... | @@ -128,6 +137,8 @@ test "x25519 rfc7748 one iteration" { | ... | @@ -128,6 +137,8 @@ test "x25519 rfc7748 one iteration" { |
| 128 | } | 137 | } |
| 129 | 138 | ||
| 130 | test "x25519 rfc7748 1,000 iterations" { | 139 | test "x25519 rfc7748 1,000 iterations" { |
| 140 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 141 | |||
| 131 | // These iteration tests are slow so we always skip them. Results have been verified. | 142 | // These iteration tests are slow so we always skip them. Results have been verified. |
| 132 | if (true) { | 143 | if (true) { |
| 133 | return error.SkipZigTest; | 144 | return error.SkipZigTest; |
| ... | @@ -150,6 +161,8 @@ test "x25519 rfc7748 1,000 iterations" { | ... | @@ -150,6 +161,8 @@ test "x25519 rfc7748 1,000 iterations" { |
| 150 | } | 161 | } |
| 151 | 162 | ||
| 152 | test "x25519 rfc7748 1,000,000 iterations" { | 163 | test "x25519 rfc7748 1,000,000 iterations" { |
| 164 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 165 | |||
| 153 | if (true) { | 166 | if (true) { |
| 154 | return error.SkipZigTest; | 167 | return error.SkipZigTest; |
| 155 | } | 168 | } |
| ... | @@ -171,6 +184,8 @@ test "x25519 rfc7748 1,000,000 iterations" { | ... | @@ -171,6 +184,8 @@ test "x25519 rfc7748 1,000,000 iterations" { |
| 171 | } | 184 | } |
| 172 | 185 | ||
| 173 | test "edwards25519 -> curve25519 map" { | 186 | test "edwards25519 -> curve25519 map" { |
| 187 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 188 | |||
| 174 | const ed_kp = try crypto.sign.Ed25519.KeyPair.create([_]u8{0x42} ** 32); | 189 | const ed_kp = try crypto.sign.Ed25519.KeyPair.create([_]u8{0x42} ** 32); |
| 175 | const mont_kp = try X25519.KeyPair.fromEd25519(ed_kp); | 190 | const mont_kp = try X25519.KeyPair.fromEd25519(ed_kp); |
| 176 | try htest.assertEqual("90e7595fc89e52fdfddce9c6a43d74dbf6047025ee0462d2d172e8b6a2841d6e", &mont_kp.secret_key); | 191 | try htest.assertEqual("90e7595fc89e52fdfddce9c6a43d74dbf6047025ee0462d2d172e8b6a2841d6e", &mont_kp.secret_key); |
lib/std/crypto/Certificate.zig+6| ... | @@ -624,6 +624,8 @@ pub fn parseTimeDigits(text: *const [2]u8, min: u8, max: u8) !u8 { | ... | @@ -624,6 +624,8 @@ pub fn parseTimeDigits(text: *const [2]u8, min: u8, max: u8) !u8 { |
| 624 | } | 624 | } |
| 625 | 625 | ||
| 626 | test parseTimeDigits { | 626 | test parseTimeDigits { |
| 627 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 628 | |||
| 627 | const expectEqual = std.testing.expectEqual; | 629 | const expectEqual = std.testing.expectEqual; |
| 628 | try expectEqual(@as(u8, 0), try parseTimeDigits("00", 0, 99)); | 630 | try expectEqual(@as(u8, 0), try parseTimeDigits("00", 0, 99)); |
| 629 | try expectEqual(@as(u8, 99), try parseTimeDigits("99", 0, 99)); | 631 | try expectEqual(@as(u8, 99), try parseTimeDigits("99", 0, 99)); |
| ... | @@ -645,6 +647,8 @@ pub fn parseYear4(text: *const [4]u8) !u16 { | ... | @@ -645,6 +647,8 @@ pub fn parseYear4(text: *const [4]u8) !u16 { |
| 645 | } | 647 | } |
| 646 | 648 | ||
| 647 | test parseYear4 { | 649 | test parseYear4 { |
| 650 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 651 | |||
| 648 | const expectEqual = std.testing.expectEqual; | 652 | const expectEqual = std.testing.expectEqual; |
| 649 | try expectEqual(@as(u16, 0), try parseYear4("0000")); | 653 | try expectEqual(@as(u16, 0), try parseYear4("0000")); |
| 650 | try expectEqual(@as(u16, 9999), try parseYear4("9999")); | 654 | try expectEqual(@as(u16, 9999), try parseYear4("9999")); |
| ... | @@ -1119,3 +1123,5 @@ pub const rsa = struct { | ... | @@ -1119,3 +1123,5 @@ pub const rsa = struct { |
| 1119 | return res; | 1123 | return res; |
| 1120 | } | 1124 | } |
| 1121 | }; | 1125 | }; |
| 1126 | |||
| 1127 | const builtin = @import("builtin"); |
lib/std/crypto/Certificate/Bundle.zig+2| ... | @@ -318,6 +318,8 @@ const MapContext = struct { | ... | @@ -318,6 +318,8 @@ const MapContext = struct { |
| 318 | test "scan for OS-provided certificates" { | 318 | test "scan for OS-provided certificates" { |
| 319 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 319 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 320 | 320 | ||
| 321 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 322 | |||
| 321 | var bundle: Bundle = .{}; | 323 | var bundle: Bundle = .{}; |
| 322 | defer bundle.deinit(std.testing.allocator); | 324 | defer bundle.deinit(std.testing.allocator); |
| 323 | 325 |
lib/std/crypto/aegis.zig+15| ... | @@ -17,6 +17,7 @@ | ... | @@ -17,6 +17,7 @@ |
| 17 | //! https://datatracker.ietf.org/doc/draft-irtf-cfrg-aegis-aead/ | 17 | //! https://datatracker.ietf.org/doc/draft-irtf-cfrg-aegis-aead/ |
| 18 | 18 | ||
| 19 | const std = @import("std"); | 19 | const std = @import("std"); |
| 20 | const builtin = @import("builtin"); | ||
| 20 | const crypto = std.crypto; | 21 | const crypto = std.crypto; |
| 21 | const mem = std.mem; | 22 | const mem = std.mem; |
| 22 | const assert = std.debug.assert; | 23 | const assert = std.debug.assert; |
| ... | @@ -513,6 +514,8 @@ const htest = @import("test.zig"); | ... | @@ -513,6 +514,8 @@ const htest = @import("test.zig"); |
| 513 | const testing = std.testing; | 514 | const testing = std.testing; |
| 514 | 515 | ||
| 515 | test "Aegis128L test vector 1" { | 516 | test "Aegis128L test vector 1" { |
| 517 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 518 | |||
| 516 | const key: [Aegis128L.key_length]u8 = [_]u8{ 0x10, 0x01 } ++ [_]u8{0x00} ** 14; | 519 | const key: [Aegis128L.key_length]u8 = [_]u8{ 0x10, 0x01 } ++ [_]u8{0x00} ** 14; |
| 517 | const nonce: [Aegis128L.nonce_length]u8 = [_]u8{ 0x10, 0x00, 0x02 } ++ [_]u8{0x00} ** 13; | 520 | const nonce: [Aegis128L.nonce_length]u8 = [_]u8{ 0x10, 0x00, 0x02 } ++ [_]u8{0x00} ** 13; |
| 518 | const ad = [8]u8{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }; | 521 | const ad = [8]u8{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }; |
| ... | @@ -536,6 +539,8 @@ test "Aegis128L test vector 1" { | ... | @@ -536,6 +539,8 @@ test "Aegis128L test vector 1" { |
| 536 | } | 539 | } |
| 537 | 540 | ||
| 538 | test "Aegis128L test vector 2" { | 541 | test "Aegis128L test vector 2" { |
| 542 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 543 | |||
| 539 | const key: [Aegis128L.key_length]u8 = [_]u8{0x00} ** 16; | 544 | const key: [Aegis128L.key_length]u8 = [_]u8{0x00} ** 16; |
| 540 | const nonce: [Aegis128L.nonce_length]u8 = [_]u8{0x00} ** 16; | 545 | const nonce: [Aegis128L.nonce_length]u8 = [_]u8{0x00} ** 16; |
| 541 | const ad = [_]u8{}; | 546 | const ad = [_]u8{}; |
| ... | @@ -553,6 +558,8 @@ test "Aegis128L test vector 2" { | ... | @@ -553,6 +558,8 @@ test "Aegis128L test vector 2" { |
| 553 | } | 558 | } |
| 554 | 559 | ||
| 555 | test "Aegis128L test vector 3" { | 560 | test "Aegis128L test vector 3" { |
| 561 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 562 | |||
| 556 | const key: [Aegis128L.key_length]u8 = [_]u8{0x00} ** 16; | 563 | const key: [Aegis128L.key_length]u8 = [_]u8{0x00} ** 16; |
| 557 | const nonce: [Aegis128L.nonce_length]u8 = [_]u8{0x00} ** 16; | 564 | const nonce: [Aegis128L.nonce_length]u8 = [_]u8{0x00} ** 16; |
| 558 | const ad = [_]u8{}; | 565 | const ad = [_]u8{}; |
| ... | @@ -569,6 +576,8 @@ test "Aegis128L test vector 3" { | ... | @@ -569,6 +576,8 @@ test "Aegis128L test vector 3" { |
| 569 | } | 576 | } |
| 570 | 577 | ||
| 571 | test "Aegis256 test vector 1" { | 578 | test "Aegis256 test vector 1" { |
| 579 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 580 | |||
| 572 | const key: [Aegis256.key_length]u8 = [_]u8{ 0x10, 0x01 } ++ [_]u8{0x00} ** 30; | 581 | const key: [Aegis256.key_length]u8 = [_]u8{ 0x10, 0x01 } ++ [_]u8{0x00} ** 30; |
| 573 | const nonce: [Aegis256.nonce_length]u8 = [_]u8{ 0x10, 0x00, 0x02 } ++ [_]u8{0x00} ** 29; | 582 | const nonce: [Aegis256.nonce_length]u8 = [_]u8{ 0x10, 0x00, 0x02 } ++ [_]u8{0x00} ** 29; |
| 574 | const ad = [8]u8{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }; | 583 | const ad = [8]u8{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }; |
| ... | @@ -592,6 +601,8 @@ test "Aegis256 test vector 1" { | ... | @@ -592,6 +601,8 @@ test "Aegis256 test vector 1" { |
| 592 | } | 601 | } |
| 593 | 602 | ||
| 594 | test "Aegis256 test vector 2" { | 603 | test "Aegis256 test vector 2" { |
| 604 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 605 | |||
| 595 | const key: [Aegis256.key_length]u8 = [_]u8{0x00} ** 32; | 606 | const key: [Aegis256.key_length]u8 = [_]u8{0x00} ** 32; |
| 596 | const nonce: [Aegis256.nonce_length]u8 = [_]u8{0x00} ** 32; | 607 | const nonce: [Aegis256.nonce_length]u8 = [_]u8{0x00} ** 32; |
| 597 | const ad = [_]u8{}; | 608 | const ad = [_]u8{}; |
| ... | @@ -609,6 +620,8 @@ test "Aegis256 test vector 2" { | ... | @@ -609,6 +620,8 @@ test "Aegis256 test vector 2" { |
| 609 | } | 620 | } |
| 610 | 621 | ||
| 611 | test "Aegis256 test vector 3" { | 622 | test "Aegis256 test vector 3" { |
| 623 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 624 | |||
| 612 | const key: [Aegis256.key_length]u8 = [_]u8{0x00} ** 32; | 625 | const key: [Aegis256.key_length]u8 = [_]u8{0x00} ** 32; |
| 613 | const nonce: [Aegis256.nonce_length]u8 = [_]u8{0x00} ** 32; | 626 | const nonce: [Aegis256.nonce_length]u8 = [_]u8{0x00} ** 32; |
| 614 | const ad = [_]u8{}; | 627 | const ad = [_]u8{}; |
| ... | @@ -625,6 +638,8 @@ test "Aegis256 test vector 3" { | ... | @@ -625,6 +638,8 @@ test "Aegis256 test vector 3" { |
| 625 | } | 638 | } |
| 626 | 639 | ||
| 627 | test "Aegis MAC" { | 640 | test "Aegis MAC" { |
| 641 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 642 | |||
| 628 | const key = [_]u8{0x00} ** Aegis128LMac.key_length; | 643 | const key = [_]u8{0x00} ** Aegis128LMac.key_length; |
| 629 | var msg: [64]u8 = undefined; | 644 | var msg: [64]u8 = undefined; |
| 630 | for (&msg, 0..) |*m, i| { | 645 | for (&msg, 0..) |*m, i| { |
lib/std/crypto/aes.zig+10| ... | @@ -28,6 +28,8 @@ pub const Aes128 = impl.Aes128; | ... | @@ -28,6 +28,8 @@ pub const Aes128 = impl.Aes128; |
| 28 | pub const Aes256 = impl.Aes256; | 28 | pub const Aes256 = impl.Aes256; |
| 29 | 29 | ||
| 30 | test "ctr" { | 30 | test "ctr" { |
| 31 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 32 | |||
| 31 | // NIST SP 800-38A pp 55-58 | 33 | // NIST SP 800-38A pp 55-58 |
| 32 | const ctr = @import("modes.zig").ctr; | 34 | const ctr = @import("modes.zig").ctr; |
| 33 | 35 | ||
| ... | @@ -53,6 +55,8 @@ test "ctr" { | ... | @@ -53,6 +55,8 @@ test "ctr" { |
| 53 | } | 55 | } |
| 54 | 56 | ||
| 55 | test "encrypt" { | 57 | test "encrypt" { |
| 58 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 59 | |||
| 56 | // Appendix B | 60 | // Appendix B |
| 57 | { | 61 | { |
| 58 | const key = [_]u8{ 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }; | 62 | const key = [_]u8{ 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }; |
| ... | @@ -82,6 +86,8 @@ test "encrypt" { | ... | @@ -82,6 +86,8 @@ test "encrypt" { |
| 82 | } | 86 | } |
| 83 | 87 | ||
| 84 | test "decrypt" { | 88 | test "decrypt" { |
| 89 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 90 | |||
| 85 | // Appendix B | 91 | // Appendix B |
| 86 | { | 92 | { |
| 87 | const key = [_]u8{ 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }; | 93 | const key = [_]u8{ 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }; |
| ... | @@ -111,6 +117,8 @@ test "decrypt" { | ... | @@ -111,6 +117,8 @@ test "decrypt" { |
| 111 | } | 117 | } |
| 112 | 118 | ||
| 113 | test "expand 128-bit key" { | 119 | test "expand 128-bit key" { |
| 120 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 121 | |||
| 114 | const key = [_]u8{ 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }; | 122 | const key = [_]u8{ 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }; |
| 115 | const exp_enc = [_]*const [32:0]u8{ | 123 | const exp_enc = [_]*const [32:0]u8{ |
| 116 | "2b7e151628aed2a6abf7158809cf4f3c", "a0fafe1788542cb123a339392a6c7605", "f2c295f27a96b9435935807a7359f67f", "3d80477d4716fe3e1e237e446d7a883b", "ef44a541a8525b7fb671253bdb0bad00", "d4d1c6f87c839d87caf2b8bc11f915bc", "6d88a37a110b3efddbf98641ca0093fd", "4e54f70e5f5fc9f384a64fb24ea6dc4f", "ead27321b58dbad2312bf5607f8d292f", "ac7766f319fadc2128d12941575c006e", "d014f9a8c9ee2589e13f0cc8b6630ca6", | 124 | "2b7e151628aed2a6abf7158809cf4f3c", "a0fafe1788542cb123a339392a6c7605", "f2c295f27a96b9435935807a7359f67f", "3d80477d4716fe3e1e237e446d7a883b", "ef44a541a8525b7fb671253bdb0bad00", "d4d1c6f87c839d87caf2b8bc11f915bc", "6d88a37a110b3efddbf98641ca0093fd", "4e54f70e5f5fc9f384a64fb24ea6dc4f", "ead27321b58dbad2312bf5607f8d292f", "ac7766f319fadc2128d12941575c006e", "d014f9a8c9ee2589e13f0cc8b6630ca6", |
| ... | @@ -133,6 +141,8 @@ test "expand 128-bit key" { | ... | @@ -133,6 +141,8 @@ test "expand 128-bit key" { |
| 133 | } | 141 | } |
| 134 | 142 | ||
| 135 | test "expand 256-bit key" { | 143 | test "expand 256-bit key" { |
| 144 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 145 | |||
| 136 | const key = [_]u8{ | 146 | const key = [_]u8{ |
| 137 | 0x60, 0x3d, 0xeb, 0x10, | 147 | 0x60, 0x3d, 0xeb, 0x10, |
| 138 | 0x15, 0xca, 0x71, 0xbe, | 148 | 0x15, 0xca, 0x71, 0xbe, |
lib/std/crypto/aes_gcm.zig+9| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const assert = std.debug.assert; | 3 | const assert = std.debug.assert; |
| 3 | const crypto = std.crypto; | 4 | const crypto = std.crypto; |
| 4 | const debug = std.debug; | 5 | const debug = std.debug; |
| ... | @@ -112,6 +113,8 @@ const htest = @import("test.zig"); | ... | @@ -112,6 +113,8 @@ const htest = @import("test.zig"); |
| 112 | const testing = std.testing; | 113 | const testing = std.testing; |
| 113 | 114 | ||
| 114 | test "Aes256Gcm - Empty message and no associated data" { | 115 | test "Aes256Gcm - Empty message and no associated data" { |
| 116 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 117 | |||
| 115 | const key: [Aes256Gcm.key_length]u8 = [_]u8{0x69} ** Aes256Gcm.key_length; | 118 | const key: [Aes256Gcm.key_length]u8 = [_]u8{0x69} ** Aes256Gcm.key_length; |
| 116 | const nonce: [Aes256Gcm.nonce_length]u8 = [_]u8{0x42} ** Aes256Gcm.nonce_length; | 119 | const nonce: [Aes256Gcm.nonce_length]u8 = [_]u8{0x42} ** Aes256Gcm.nonce_length; |
| 117 | const ad = ""; | 120 | const ad = ""; |
| ... | @@ -124,6 +127,8 @@ test "Aes256Gcm - Empty message and no associated data" { | ... | @@ -124,6 +127,8 @@ test "Aes256Gcm - Empty message and no associated data" { |
| 124 | } | 127 | } |
| 125 | 128 | ||
| 126 | test "Aes256Gcm - Associated data only" { | 129 | test "Aes256Gcm - Associated data only" { |
| 130 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 131 | |||
| 127 | const key: [Aes256Gcm.key_length]u8 = [_]u8{0x69} ** Aes256Gcm.key_length; | 132 | const key: [Aes256Gcm.key_length]u8 = [_]u8{0x69} ** Aes256Gcm.key_length; |
| 128 | const nonce: [Aes256Gcm.nonce_length]u8 = [_]u8{0x42} ** Aes256Gcm.nonce_length; | 133 | const nonce: [Aes256Gcm.nonce_length]u8 = [_]u8{0x42} ** Aes256Gcm.nonce_length; |
| 129 | const m = ""; | 134 | const m = ""; |
| ... | @@ -136,6 +141,8 @@ test "Aes256Gcm - Associated data only" { | ... | @@ -136,6 +141,8 @@ test "Aes256Gcm - Associated data only" { |
| 136 | } | 141 | } |
| 137 | 142 | ||
| 138 | test "Aes256Gcm - Message only" { | 143 | test "Aes256Gcm - Message only" { |
| 144 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 145 | |||
| 139 | const key: [Aes256Gcm.key_length]u8 = [_]u8{0x69} ** Aes256Gcm.key_length; | 146 | const key: [Aes256Gcm.key_length]u8 = [_]u8{0x69} ** Aes256Gcm.key_length; |
| 140 | const nonce: [Aes256Gcm.nonce_length]u8 = [_]u8{0x42} ** Aes256Gcm.nonce_length; | 147 | const nonce: [Aes256Gcm.nonce_length]u8 = [_]u8{0x42} ** Aes256Gcm.nonce_length; |
| 141 | const m = "Test with message only"; | 148 | const m = "Test with message only"; |
| ... | @@ -153,6 +160,8 @@ test "Aes256Gcm - Message only" { | ... | @@ -153,6 +160,8 @@ test "Aes256Gcm - Message only" { |
| 153 | } | 160 | } |
| 154 | 161 | ||
| 155 | test "Aes256Gcm - Message and associated data" { | 162 | test "Aes256Gcm - Message and associated data" { |
| 163 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 164 | |||
| 156 | const key: [Aes256Gcm.key_length]u8 = [_]u8{0x69} ** Aes256Gcm.key_length; | 165 | const key: [Aes256Gcm.key_length]u8 = [_]u8{0x69} ** Aes256Gcm.key_length; |
| 157 | const nonce: [Aes256Gcm.nonce_length]u8 = [_]u8{0x42} ** Aes256Gcm.nonce_length; | 166 | const nonce: [Aes256Gcm.nonce_length]u8 = [_]u8{0x42} ** Aes256Gcm.nonce_length; |
| 158 | const m = "Test with message"; | 167 | const m = "Test with message"; |
lib/std/crypto/aes_ocb.zig+16-4| ... | @@ -261,7 +261,10 @@ inline fn xorWith(x: *Block, y: Block) void { | ... | @@ -261,7 +261,10 @@ inline fn xorWith(x: *Block, y: Block) void { |
| 261 | const hexToBytes = std.fmt.hexToBytes; | 261 | const hexToBytes = std.fmt.hexToBytes; |
| 262 | 262 | ||
| 263 | test "AesOcb test vector 1" { | 263 | test "AesOcb test vector 1" { |
| 264 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 264 | switch (builtin.zig_backend) { |
| 265 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 266 | else => {}, | ||
| 267 | } | ||
| 265 | 268 | ||
| 266 | var k: [Aes128Ocb.key_length]u8 = undefined; | 269 | var k: [Aes128Ocb.key_length]u8 = undefined; |
| 267 | var nonce: [Aes128Ocb.nonce_length]u8 = undefined; | 270 | var nonce: [Aes128Ocb.nonce_length]u8 = undefined; |
| ... | @@ -280,7 +283,10 @@ test "AesOcb test vector 1" { | ... | @@ -280,7 +283,10 @@ test "AesOcb test vector 1" { |
| 280 | } | 283 | } |
| 281 | 284 | ||
| 282 | test "AesOcb test vector 2" { | 285 | test "AesOcb test vector 2" { |
| 283 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 286 | switch (builtin.zig_backend) { |
| 287 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 288 | else => {}, | ||
| 289 | } | ||
| 284 | 290 | ||
| 285 | var k: [Aes128Ocb.key_length]u8 = undefined; | 291 | var k: [Aes128Ocb.key_length]u8 = undefined; |
| 286 | var nonce: [Aes128Ocb.nonce_length]u8 = undefined; | 292 | var nonce: [Aes128Ocb.nonce_length]u8 = undefined; |
| ... | @@ -301,7 +307,10 @@ test "AesOcb test vector 2" { | ... | @@ -301,7 +307,10 @@ test "AesOcb test vector 2" { |
| 301 | } | 307 | } |
| 302 | 308 | ||
| 303 | test "AesOcb test vector 3" { | 309 | test "AesOcb test vector 3" { |
| 304 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 310 | switch (builtin.zig_backend) { |
| 311 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 312 | else => {}, | ||
| 313 | } | ||
| 305 | 314 | ||
| 306 | var k: [Aes128Ocb.key_length]u8 = undefined; | 315 | var k: [Aes128Ocb.key_length]u8 = undefined; |
| 307 | var nonce: [Aes128Ocb.nonce_length]u8 = undefined; | 316 | var nonce: [Aes128Ocb.nonce_length]u8 = undefined; |
| ... | @@ -325,7 +334,10 @@ test "AesOcb test vector 3" { | ... | @@ -325,7 +334,10 @@ test "AesOcb test vector 3" { |
| 325 | } | 334 | } |
| 326 | 335 | ||
| 327 | test "AesOcb test vector 4" { | 336 | test "AesOcb test vector 4" { |
| 328 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 337 | switch (builtin.zig_backend) { |
| 338 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 339 | else => {}, | ||
| 340 | } | ||
| 329 | 341 | ||
| 330 | var k: [Aes128Ocb.key_length]u8 = undefined; | 342 | var k: [Aes128Ocb.key_length]u8 = undefined; |
| 331 | var nonce: [Aes128Ocb.nonce_length]u8 = undefined; | 343 | var nonce: [Aes128Ocb.nonce_length]u8 = undefined; |
lib/std/crypto/argon2.zig+14| ... | @@ -622,6 +622,8 @@ pub fn strVerify( | ... | @@ -622,6 +622,8 @@ pub fn strVerify( |
| 622 | } | 622 | } |
| 623 | 623 | ||
| 624 | test "argon2d" { | 624 | test "argon2d" { |
| 625 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 626 | |||
| 625 | const password = [_]u8{0x01} ** 32; | 627 | const password = [_]u8{0x01} ** 32; |
| 626 | const salt = [_]u8{0x02} ** 16; | 628 | const salt = [_]u8{0x02} ** 16; |
| 627 | const secret = [_]u8{0x03} ** 8; | 629 | const secret = [_]u8{0x03} ** 8; |
| ... | @@ -647,6 +649,8 @@ test "argon2d" { | ... | @@ -647,6 +649,8 @@ test "argon2d" { |
| 647 | } | 649 | } |
| 648 | 650 | ||
| 649 | test "argon2i" { | 651 | test "argon2i" { |
| 652 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 653 | |||
| 650 | const password = [_]u8{0x01} ** 32; | 654 | const password = [_]u8{0x01} ** 32; |
| 651 | const salt = [_]u8{0x02} ** 16; | 655 | const salt = [_]u8{0x02} ** 16; |
| 652 | const secret = [_]u8{0x03} ** 8; | 656 | const secret = [_]u8{0x03} ** 8; |
| ... | @@ -672,6 +676,8 @@ test "argon2i" { | ... | @@ -672,6 +676,8 @@ test "argon2i" { |
| 672 | } | 676 | } |
| 673 | 677 | ||
| 674 | test "argon2id" { | 678 | test "argon2id" { |
| 679 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 680 | |||
| 675 | const password = [_]u8{0x01} ** 32; | 681 | const password = [_]u8{0x01} ** 32; |
| 676 | const salt = [_]u8{0x02} ** 16; | 682 | const salt = [_]u8{0x02} ** 16; |
| 677 | const secret = [_]u8{0x03} ** 8; | 683 | const secret = [_]u8{0x03} ** 8; |
| ... | @@ -697,6 +703,8 @@ test "argon2id" { | ... | @@ -697,6 +703,8 @@ test "argon2id" { |
| 697 | } | 703 | } |
| 698 | 704 | ||
| 699 | test "kdf" { | 705 | test "kdf" { |
| 706 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 707 | |||
| 700 | const password = "password"; | 708 | const password = "password"; |
| 701 | const salt = "somesalt"; | 709 | const salt = "somesalt"; |
| 702 | 710 | ||
| ... | @@ -896,6 +904,8 @@ test "kdf" { | ... | @@ -896,6 +904,8 @@ test "kdf" { |
| 896 | } | 904 | } |
| 897 | 905 | ||
| 898 | test "phc format hasher" { | 906 | test "phc format hasher" { |
| 907 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 908 | |||
| 899 | const allocator = std.testing.allocator; | 909 | const allocator = std.testing.allocator; |
| 900 | const password = "testpass"; | 910 | const password = "testpass"; |
| 901 | 911 | ||
| ... | @@ -911,6 +921,8 @@ test "phc format hasher" { | ... | @@ -911,6 +921,8 @@ test "phc format hasher" { |
| 911 | } | 921 | } |
| 912 | 922 | ||
| 913 | test "password hash and password verify" { | 923 | test "password hash and password verify" { |
| 924 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 925 | |||
| 914 | const allocator = std.testing.allocator; | 926 | const allocator = std.testing.allocator; |
| 915 | const password = "testpass"; | 927 | const password = "testpass"; |
| 916 | 928 | ||
| ... | @@ -924,6 +936,8 @@ test "password hash and password verify" { | ... | @@ -924,6 +936,8 @@ test "password hash and password verify" { |
| 924 | } | 936 | } |
| 925 | 937 | ||
| 926 | test "kdf derived key length" { | 938 | test "kdf derived key length" { |
| 939 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 940 | |||
| 927 | const allocator = std.testing.allocator; | 941 | const allocator = std.testing.allocator; |
| 928 | 942 | ||
| 929 | const password = "testpass"; | 943 | const password = "testpass"; |
lib/std/crypto/bcrypt.zig+7| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const base64 = std.base64; | 3 | const base64 = std.base64; |
| 3 | const crypto = std.crypto; | 4 | const crypto = std.crypto; |
| 4 | const debug = std.debug; | 5 | const debug = std.debug; |
| ... | @@ -753,6 +754,8 @@ pub fn strVerify( | ... | @@ -753,6 +754,8 @@ pub fn strVerify( |
| 753 | } | 754 | } |
| 754 | 755 | ||
| 755 | test "bcrypt codec" { | 756 | test "bcrypt codec" { |
| 757 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 758 | |||
| 756 | var salt: [salt_length]u8 = undefined; | 759 | var salt: [salt_length]u8 = undefined; |
| 757 | crypto.random.bytes(&salt); | 760 | crypto.random.bytes(&salt); |
| 758 | var salt_str: [salt_str_length]u8 = undefined; | 761 | var salt_str: [salt_str_length]u8 = undefined; |
| ... | @@ -763,6 +766,8 @@ test "bcrypt codec" { | ... | @@ -763,6 +766,8 @@ test "bcrypt codec" { |
| 763 | } | 766 | } |
| 764 | 767 | ||
| 765 | test "bcrypt crypt format" { | 768 | test "bcrypt crypt format" { |
| 769 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 770 | |||
| 766 | var hash_options = HashOptions{ | 771 | var hash_options = HashOptions{ |
| 767 | .params = .{ .rounds_log = 5 }, | 772 | .params = .{ .rounds_log = 5 }, |
| 768 | .encoding = .crypt, | 773 | .encoding = .crypt, |
| ... | @@ -803,6 +808,8 @@ test "bcrypt crypt format" { | ... | @@ -803,6 +808,8 @@ test "bcrypt crypt format" { |
| 803 | } | 808 | } |
| 804 | 809 | ||
| 805 | test "bcrypt phc format" { | 810 | test "bcrypt phc format" { |
| 811 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 812 | |||
| 806 | var hash_options = HashOptions{ | 813 | var hash_options = HashOptions{ |
| 807 | .params = .{ .rounds_log = 5 }, | 814 | .params = .{ .rounds_log = 5 }, |
| 808 | .encoding = .phc, | 815 | .encoding = .phc, |
lib/std/crypto/blake3.zig+3-1| ... | @@ -200,7 +200,7 @@ const CompressGeneric = struct { | ... | @@ -200,7 +200,7 @@ const CompressGeneric = struct { |
| 200 | } | 200 | } |
| 201 | }; | 201 | }; |
| 202 | 202 | ||
| 203 | const compress = if (builtin.cpu.arch == .x86_64) | 203 | const compress = if (builtin.cpu.arch == .x86_64 and builtin.zig_backend != .stage2_x86_64) |
| 204 | CompressVectorized.compress | 204 | CompressVectorized.compress |
| 205 | else | 205 | else |
| 206 | CompressGeneric.compress; | 206 | CompressGeneric.compress; |
| ... | @@ -682,6 +682,8 @@ fn testBlake3(hasher: *Blake3, input_len: usize, expected_hex: [262]u8) !void { | ... | @@ -682,6 +682,8 @@ fn testBlake3(hasher: *Blake3, input_len: usize, expected_hex: [262]u8) !void { |
| 682 | } | 682 | } |
| 683 | 683 | ||
| 684 | test "BLAKE3 reference test cases" { | 684 | test "BLAKE3 reference test cases" { |
| 685 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 686 | |||
| 685 | var hash_state = Blake3.init(.{}); | 687 | var hash_state = Blake3.init(.{}); |
| 686 | const hash = &hash_state; | 688 | const hash = &hash_state; |
| 687 | var keyed_hash_state = Blake3.init(.{ .key = reference_test.key.* }); | 689 | var keyed_hash_state = Blake3.init(.{ .key = reference_test.key.* }); |
lib/std/crypto/chacha20.zig+22| ... | @@ -499,6 +499,8 @@ fn ChaChaNonVecImpl(comptime rounds_nb: usize) type { | ... | @@ -499,6 +499,8 @@ fn ChaChaNonVecImpl(comptime rounds_nb: usize) type { |
| 499 | fn ChaChaImpl(comptime rounds_nb: usize) type { | 499 | fn ChaChaImpl(comptime rounds_nb: usize) type { |
| 500 | switch (builtin.cpu.arch) { | 500 | switch (builtin.cpu.arch) { |
| 501 | .x86_64 => { | 501 | .x86_64 => { |
| 502 | if (builtin.zig_backend == .stage2_x86_64) return ChaChaNonVecImpl(rounds_nb); | ||
| 503 | |||
| 502 | const has_avx2 = std.Target.x86.featureSetHas(builtin.cpu.features, .avx2); | 504 | const has_avx2 = std.Target.x86.featureSetHas(builtin.cpu.features, .avx2); |
| 503 | const has_avx512f = std.Target.x86.featureSetHas(builtin.cpu.features, .avx512f); | 505 | const has_avx512f = std.Target.x86.featureSetHas(builtin.cpu.features, .avx512f); |
| 504 | if (has_avx512f) return ChaChaVecImpl(rounds_nb, 4); | 506 | if (has_avx512f) return ChaChaVecImpl(rounds_nb, 4); |
| ... | @@ -757,6 +759,8 @@ fn XChaChaPoly1305(comptime rounds_nb: usize) type { | ... | @@ -757,6 +759,8 @@ fn XChaChaPoly1305(comptime rounds_nb: usize) type { |
| 757 | } | 759 | } |
| 758 | 760 | ||
| 759 | test "chacha20 AEAD API" { | 761 | test "chacha20 AEAD API" { |
| 762 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 763 | |||
| 760 | const aeads = [_]type{ ChaCha20Poly1305, XChaCha20Poly1305 }; | 764 | const aeads = [_]type{ ChaCha20Poly1305, XChaCha20Poly1305 }; |
| 761 | const m = "Ladies and Gentlemen of the class of '99: If I could offer you only one tip for the future, sunscreen would be it."; | 765 | const m = "Ladies and Gentlemen of the class of '99: If I could offer you only one tip for the future, sunscreen would be it."; |
| 762 | const ad = "Additional data"; | 766 | const ad = "Additional data"; |
| ... | @@ -778,6 +782,8 @@ test "chacha20 AEAD API" { | ... | @@ -778,6 +782,8 @@ test "chacha20 AEAD API" { |
| 778 | 782 | ||
| 779 | // https://tools.ietf.org/html/rfc7539#section-2.4.2 | 783 | // https://tools.ietf.org/html/rfc7539#section-2.4.2 |
| 780 | test "crypto.chacha20 test vector sunscreen" { | 784 | test "crypto.chacha20 test vector sunscreen" { |
| 785 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 786 | |||
| 781 | const expected_result = [_]u8{ | 787 | const expected_result = [_]u8{ |
| 782 | 0x6e, 0x2e, 0x35, 0x9a, 0x25, 0x68, 0xf9, 0x80, | 788 | 0x6e, 0x2e, 0x35, 0x9a, 0x25, 0x68, 0xf9, 0x80, |
| 783 | 0x41, 0xba, 0x07, 0x28, 0xdd, 0x0d, 0x69, 0x81, | 789 | 0x41, 0xba, 0x07, 0x28, 0xdd, 0x0d, 0x69, 0x81, |
| ... | @@ -819,6 +825,8 @@ test "crypto.chacha20 test vector sunscreen" { | ... | @@ -819,6 +825,8 @@ test "crypto.chacha20 test vector sunscreen" { |
| 819 | 825 | ||
| 820 | // https://tools.ietf.org/html/draft-agl-tls-chacha20poly1305-04#section-7 | 826 | // https://tools.ietf.org/html/draft-agl-tls-chacha20poly1305-04#section-7 |
| 821 | test "crypto.chacha20 test vector 1" { | 827 | test "crypto.chacha20 test vector 1" { |
| 828 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 829 | |||
| 822 | const expected_result = [_]u8{ | 830 | const expected_result = [_]u8{ |
| 823 | 0x76, 0xb8, 0xe0, 0xad, 0xa0, 0xf1, 0x3d, 0x90, | 831 | 0x76, 0xb8, 0xe0, 0xad, 0xa0, 0xf1, 0x3d, 0x90, |
| 824 | 0x40, 0x5d, 0x6a, 0xe5, 0x53, 0x86, 0xbd, 0x28, | 832 | 0x40, 0x5d, 0x6a, 0xe5, 0x53, 0x86, 0xbd, 0x28, |
| ... | @@ -853,6 +861,8 @@ test "crypto.chacha20 test vector 1" { | ... | @@ -853,6 +861,8 @@ test "crypto.chacha20 test vector 1" { |
| 853 | } | 861 | } |
| 854 | 862 | ||
| 855 | test "crypto.chacha20 test vector 2" { | 863 | test "crypto.chacha20 test vector 2" { |
| 864 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 865 | |||
| 856 | const expected_result = [_]u8{ | 866 | const expected_result = [_]u8{ |
| 857 | 0x45, 0x40, 0xf0, 0x5a, 0x9f, 0x1f, 0xb2, 0x96, | 867 | 0x45, 0x40, 0xf0, 0x5a, 0x9f, 0x1f, 0xb2, 0x96, |
| 858 | 0xd7, 0x73, 0x6e, 0x7b, 0x20, 0x8e, 0x3c, 0x96, | 868 | 0xd7, 0x73, 0x6e, 0x7b, 0x20, 0x8e, 0x3c, 0x96, |
| ... | @@ -887,6 +897,8 @@ test "crypto.chacha20 test vector 2" { | ... | @@ -887,6 +897,8 @@ test "crypto.chacha20 test vector 2" { |
| 887 | } | 897 | } |
| 888 | 898 | ||
| 889 | test "crypto.chacha20 test vector 3" { | 899 | test "crypto.chacha20 test vector 3" { |
| 900 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 901 | |||
| 890 | const expected_result = [_]u8{ | 902 | const expected_result = [_]u8{ |
| 891 | 0xde, 0x9c, 0xba, 0x7b, 0xf3, 0xd6, 0x9e, 0xf5, | 903 | 0xde, 0x9c, 0xba, 0x7b, 0xf3, 0xd6, 0x9e, 0xf5, |
| 892 | 0xe7, 0x86, 0xdc, 0x63, 0x97, 0x3f, 0x65, 0x3a, | 904 | 0xe7, 0x86, 0xdc, 0x63, 0x97, 0x3f, 0x65, 0x3a, |
| ... | @@ -921,6 +933,8 @@ test "crypto.chacha20 test vector 3" { | ... | @@ -921,6 +933,8 @@ test "crypto.chacha20 test vector 3" { |
| 921 | } | 933 | } |
| 922 | 934 | ||
| 923 | test "crypto.chacha20 test vector 4" { | 935 | test "crypto.chacha20 test vector 4" { |
| 936 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 937 | |||
| 924 | const expected_result = [_]u8{ | 938 | const expected_result = [_]u8{ |
| 925 | 0xef, 0x3f, 0xdf, 0xd6, 0xc6, 0x15, 0x78, 0xfb, | 939 | 0xef, 0x3f, 0xdf, 0xd6, 0xc6, 0x15, 0x78, 0xfb, |
| 926 | 0xf5, 0xcf, 0x35, 0xbd, 0x3d, 0xd3, 0x3b, 0x80, | 940 | 0xf5, 0xcf, 0x35, 0xbd, 0x3d, 0xd3, 0x3b, 0x80, |
| ... | @@ -955,6 +969,8 @@ test "crypto.chacha20 test vector 4" { | ... | @@ -955,6 +969,8 @@ test "crypto.chacha20 test vector 4" { |
| 955 | } | 969 | } |
| 956 | 970 | ||
| 957 | test "crypto.chacha20 test vector 5" { | 971 | test "crypto.chacha20 test vector 5" { |
| 972 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 973 | |||
| 958 | const expected_result = [_]u8{ | 974 | const expected_result = [_]u8{ |
| 959 | 0xf7, 0x98, 0xa1, 0x89, 0xf1, 0x95, 0xe6, 0x69, | 975 | 0xf7, 0x98, 0xa1, 0x89, 0xf1, 0x95, 0xe6, 0x69, |
| 960 | 0x82, 0x10, 0x5f, 0xfb, 0x64, 0x0b, 0xb7, 0x75, | 976 | 0x82, 0x10, 0x5f, 0xfb, 0x64, 0x0b, 0xb7, 0x75, |
| ... | @@ -1027,6 +1043,8 @@ test "crypto.chacha20 test vector 5" { | ... | @@ -1027,6 +1043,8 @@ test "crypto.chacha20 test vector 5" { |
| 1027 | } | 1043 | } |
| 1028 | 1044 | ||
| 1029 | test "seal" { | 1045 | test "seal" { |
| 1046 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1047 | |||
| 1030 | { | 1048 | { |
| 1031 | const m = ""; | 1049 | const m = ""; |
| 1032 | const ad = ""; | 1050 | const ad = ""; |
| ... | @@ -1077,6 +1095,8 @@ test "seal" { | ... | @@ -1077,6 +1095,8 @@ test "seal" { |
| 1077 | } | 1095 | } |
| 1078 | 1096 | ||
| 1079 | test "open" { | 1097 | test "open" { |
| 1098 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1099 | |||
| 1080 | { | 1100 | { |
| 1081 | const c = [_]u8{ 0xa0, 0x78, 0x4d, 0x7a, 0x47, 0x16, 0xf3, 0xfe, 0xb4, 0xf6, 0x4e, 0x7f, 0x4b, 0x39, 0xbf, 0x4 }; | 1101 | const c = [_]u8{ 0xa0, 0x78, 0x4d, 0x7a, 0x47, 0x16, 0xf3, 0xfe, 0xb4, 0xf6, 0x4e, 0x7f, 0x4b, 0x39, 0xbf, 0x4 }; |
| 1082 | const ad = ""; | 1102 | const ad = ""; |
| ... | @@ -1141,6 +1161,8 @@ test "open" { | ... | @@ -1141,6 +1161,8 @@ test "open" { |
| 1141 | } | 1161 | } |
| 1142 | 1162 | ||
| 1143 | test "crypto.xchacha20" { | 1163 | test "crypto.xchacha20" { |
| 1164 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1165 | |||
| 1144 | const key = [_]u8{69} ** 32; | 1166 | const key = [_]u8{69} ** 32; |
| 1145 | const nonce = [_]u8{42} ** 24; | 1167 | const nonce = [_]u8{42} ** 24; |
| 1146 | const m = "Ladies and Gentlemen of the class of '99: If I could offer you only one tip for the future, sunscreen would be it."; | 1168 | const m = "Ladies and Gentlemen of the class of '99: If I could offer you only one tip for the future, sunscreen would be it."; |
lib/std/crypto/cmac.zig+9| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const crypto = std.crypto; | 3 | const crypto = std.crypto; |
| 3 | const mem = std.mem; | 4 | const mem = std.mem; |
| 4 | 5 | ||
| ... | @@ -93,6 +94,8 @@ pub fn Cmac(comptime BlockCipher: type) type { | ... | @@ -93,6 +94,8 @@ pub fn Cmac(comptime BlockCipher: type) type { |
| 93 | const testing = std.testing; | 94 | const testing = std.testing; |
| 94 | 95 | ||
| 95 | test "CmacAes128 - Example 1: len = 0" { | 96 | test "CmacAes128 - Example 1: len = 0" { |
| 97 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 98 | |||
| 96 | const key = [_]u8{ | 99 | const key = [_]u8{ |
| 97 | 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c, | 100 | 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c, |
| 98 | }; | 101 | }; |
| ... | @@ -106,6 +109,8 @@ test "CmacAes128 - Example 1: len = 0" { | ... | @@ -106,6 +109,8 @@ test "CmacAes128 - Example 1: len = 0" { |
| 106 | } | 109 | } |
| 107 | 110 | ||
| 108 | test "CmacAes128 - Example 2: len = 16" { | 111 | test "CmacAes128 - Example 2: len = 16" { |
| 112 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 113 | |||
| 109 | const key = [_]u8{ | 114 | const key = [_]u8{ |
| 110 | 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c, | 115 | 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c, |
| 111 | }; | 116 | }; |
| ... | @@ -121,6 +126,8 @@ test "CmacAes128 - Example 2: len = 16" { | ... | @@ -121,6 +126,8 @@ test "CmacAes128 - Example 2: len = 16" { |
| 121 | } | 126 | } |
| 122 | 127 | ||
| 123 | test "CmacAes128 - Example 3: len = 40" { | 128 | test "CmacAes128 - Example 3: len = 40" { |
| 129 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 130 | |||
| 124 | const key = [_]u8{ | 131 | const key = [_]u8{ |
| 125 | 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c, | 132 | 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c, |
| 126 | }; | 133 | }; |
| ... | @@ -138,6 +145,8 @@ test "CmacAes128 - Example 3: len = 40" { | ... | @@ -138,6 +145,8 @@ test "CmacAes128 - Example 3: len = 40" { |
| 138 | } | 145 | } |
| 139 | 146 | ||
| 140 | test "CmacAes128 - Example 4: len = 64" { | 147 | test "CmacAes128 - Example 4: len = 64" { |
| 148 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 149 | |||
| 141 | const key = [_]u8{ | 150 | const key = [_]u8{ |
| 142 | 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c, | 151 | 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c, |
| 143 | }; | 152 | }; |
lib/std/crypto/ghash_polyval.zig+6| ... | @@ -422,6 +422,8 @@ fn Hash(comptime endian: std.builtin.Endian, comptime shift_key: bool) type { | ... | @@ -422,6 +422,8 @@ fn Hash(comptime endian: std.builtin.Endian, comptime shift_key: bool) type { |
| 422 | const htest = @import("test.zig"); | 422 | const htest = @import("test.zig"); |
| 423 | 423 | ||
| 424 | test "ghash" { | 424 | test "ghash" { |
| 425 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 426 | |||
| 425 | const key = [_]u8{0x42} ** 16; | 427 | const key = [_]u8{0x42} ** 16; |
| 426 | const m = [_]u8{0x69} ** 256; | 428 | const m = [_]u8{0x69} ** 256; |
| 427 | 429 | ||
| ... | @@ -439,6 +441,8 @@ test "ghash" { | ... | @@ -439,6 +441,8 @@ test "ghash" { |
| 439 | } | 441 | } |
| 440 | 442 | ||
| 441 | test "ghash2" { | 443 | test "ghash2" { |
| 444 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 445 | |||
| 442 | var key: [16]u8 = undefined; | 446 | var key: [16]u8 = undefined; |
| 443 | var i: usize = 0; | 447 | var i: usize = 0; |
| 444 | while (i < key.len) : (i += 1) { | 448 | while (i < key.len) : (i += 1) { |
| ... | @@ -472,6 +476,8 @@ test "ghash2" { | ... | @@ -472,6 +476,8 @@ test "ghash2" { |
| 472 | } | 476 | } |
| 473 | 477 | ||
| 474 | test "polyval" { | 478 | test "polyval" { |
| 479 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 480 | |||
| 475 | const key = [_]u8{0x42} ** 16; | 481 | const key = [_]u8{0x42} ** 16; |
| 476 | const m = [_]u8{0x69} ** 256; | 482 | const m = [_]u8{0x69} ** 256; |
| 477 | 483 |
lib/std/crypto/hash_composition.zig+2| ... | @@ -65,6 +65,8 @@ pub const Sha384oSha384 = Composition(sha2.Sha384, sha2.Sha384); | ... | @@ -65,6 +65,8 @@ pub const Sha384oSha384 = Composition(sha2.Sha384, sha2.Sha384); |
| 65 | pub const Sha512oSha512 = Composition(sha2.Sha512, sha2.Sha512); | 65 | pub const Sha512oSha512 = Composition(sha2.Sha512, sha2.Sha512); |
| 66 | 66 | ||
| 67 | test "Hash composition" { | 67 | test "Hash composition" { |
| 68 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 69 | |||
| 68 | const Sha256 = sha2.Sha256; | 70 | const Sha256 = sha2.Sha256; |
| 69 | const msg = "test"; | 71 | const msg = "test"; |
| 70 | 72 |
lib/std/crypto/hkdf.zig+2| ... | @@ -72,6 +72,8 @@ pub fn Hkdf(comptime Hmac: type) type { | ... | @@ -72,6 +72,8 @@ pub fn Hkdf(comptime Hmac: type) type { |
| 72 | const htest = @import("test.zig"); | 72 | const htest = @import("test.zig"); |
| 73 | 73 | ||
| 74 | test "Hkdf" { | 74 | test "Hkdf" { |
| 75 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 76 | |||
| 75 | const ikm = [_]u8{0x0b} ** 22; | 77 | const ikm = [_]u8{0x0b} ** 22; |
| 76 | const salt = [_]u8{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c }; | 78 | const salt = [_]u8{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c }; |
| 77 | const context = [_]u8{ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9 }; | 79 | const context = [_]u8{ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9 }; |
lib/std/crypto/kyber_d00.zig+28| ... | @@ -553,6 +553,8 @@ const inv_ntt_reductions = [_]i16{ | ... | @@ -553,6 +553,8 @@ const inv_ntt_reductions = [_]i16{ |
| 553 | }; | 553 | }; |
| 554 | 554 | ||
| 555 | test "invNTTReductions bounds" { | 555 | test "invNTTReductions bounds" { |
| 556 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 557 | |||
| 556 | // Checks whether the reductions proposed by invNTTReductions | 558 | // Checks whether the reductions proposed by invNTTReductions |
| 557 | // don't overflow during invNTT(). | 559 | // don't overflow during invNTT(). |
| 558 | var xs = [_]i32{1} ** 256; // start at |x| ≤ q | 560 | var xs = [_]i32{1} ** 256; // start at |x| ≤ q |
| ... | @@ -656,6 +658,8 @@ fn montReduce(x: i32) i16 { | ... | @@ -656,6 +658,8 @@ fn montReduce(x: i32) i16 { |
| 656 | } | 658 | } |
| 657 | 659 | ||
| 658 | test "Test montReduce" { | 660 | test "Test montReduce" { |
| 661 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 662 | |||
| 659 | var rnd = RndGen.init(0); | 663 | var rnd = RndGen.init(0); |
| 660 | for (0..1000) |_| { | 664 | for (0..1000) |_| { |
| 661 | const bound = comptime @as(i32, Q) * (1 << 15); | 665 | const bound = comptime @as(i32, Q) * (1 << 15); |
| ... | @@ -674,6 +678,8 @@ fn feToMont(x: i16) i16 { | ... | @@ -674,6 +678,8 @@ fn feToMont(x: i16) i16 { |
| 674 | } | 678 | } |
| 675 | 679 | ||
| 676 | test "Test feToMont" { | 680 | test "Test feToMont" { |
| 681 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 682 | |||
| 677 | var x: i32 = -(1 << 15); | 683 | var x: i32 = -(1 << 15); |
| 678 | while (x < 1 << 15) : (x += 1) { | 684 | while (x < 1 << 15) : (x += 1) { |
| 679 | const y = feToMont(@as(i16, @intCast(x))); | 685 | const y = feToMont(@as(i16, @intCast(x))); |
| ... | @@ -707,6 +713,8 @@ fn feBarrettReduce(x: i16) i16 { | ... | @@ -707,6 +713,8 @@ fn feBarrettReduce(x: i16) i16 { |
| 707 | } | 713 | } |
| 708 | 714 | ||
| 709 | test "Test Barrett reduction" { | 715 | test "Test Barrett reduction" { |
| 716 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 717 | |||
| 710 | var x: i32 = -(1 << 15); | 718 | var x: i32 = -(1 << 15); |
| 711 | while (x < 1 << 15) : (x += 1) { | 719 | while (x < 1 << 15) : (x += 1) { |
| 712 | var y1 = feBarrettReduce(@as(i16, @intCast(x))); | 720 | var y1 = feBarrettReduce(@as(i16, @intCast(x))); |
| ... | @@ -727,6 +735,8 @@ fn csubq(x: i16) i16 { | ... | @@ -727,6 +735,8 @@ fn csubq(x: i16) i16 { |
| 727 | } | 735 | } |
| 728 | 736 | ||
| 729 | test "Test csubq" { | 737 | test "Test csubq" { |
| 738 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 739 | |||
| 730 | var x: i32 = -29439; | 740 | var x: i32 = -29439; |
| 731 | while (x < 1 << 15) : (x += 1) { | 741 | while (x < 1 << 15) : (x += 1) { |
| 732 | const y1 = csubq(@as(i16, @intCast(x))); | 742 | const y1 = csubq(@as(i16, @intCast(x))); |
| ... | @@ -1466,6 +1476,8 @@ fn cmov(comptime len: usize, dst: *[len]u8, src: [len]u8, b: u1) void { | ... | @@ -1466,6 +1476,8 @@ fn cmov(comptime len: usize, dst: *[len]u8, src: [len]u8, b: u1) void { |
| 1466 | } | 1476 | } |
| 1467 | 1477 | ||
| 1468 | test "MulHat" { | 1478 | test "MulHat" { |
| 1479 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1480 | |||
| 1469 | var rnd = RndGen.init(0); | 1481 | var rnd = RndGen.init(0); |
| 1470 | 1482 | ||
| 1471 | for (0..100) |_| { | 1483 | for (0..100) |_| { |
| ... | @@ -1497,6 +1509,8 @@ test "MulHat" { | ... | @@ -1497,6 +1509,8 @@ test "MulHat" { |
| 1497 | } | 1509 | } |
| 1498 | 1510 | ||
| 1499 | test "NTT" { | 1511 | test "NTT" { |
| 1512 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1513 | |||
| 1500 | var rnd = RndGen.init(0); | 1514 | var rnd = RndGen.init(0); |
| 1501 | 1515 | ||
| 1502 | for (0..1000) |_| { | 1516 | for (0..1000) |_| { |
| ... | @@ -1520,6 +1534,8 @@ test "NTT" { | ... | @@ -1520,6 +1534,8 @@ test "NTT" { |
| 1520 | } | 1534 | } |
| 1521 | 1535 | ||
| 1522 | test "Compression" { | 1536 | test "Compression" { |
| 1537 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1538 | |||
| 1523 | var rnd = RndGen.init(0); | 1539 | var rnd = RndGen.init(0); |
| 1524 | inline for (.{ 1, 4, 5, 10, 11 }) |d| { | 1540 | inline for (.{ 1, 4, 5, 10, 11 }) |d| { |
| 1525 | for (0..1000) |_| { | 1541 | for (0..1000) |_| { |
| ... | @@ -1532,6 +1548,8 @@ test "Compression" { | ... | @@ -1532,6 +1548,8 @@ test "Compression" { |
| 1532 | } | 1548 | } |
| 1533 | 1549 | ||
| 1534 | test "noise" { | 1550 | test "noise" { |
| 1551 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1552 | |||
| 1535 | var seed: [32]u8 = undefined; | 1553 | var seed: [32]u8 = undefined; |
| 1536 | for (&seed, 0..) |*s, i| { | 1554 | for (&seed, 0..) |*s, i| { |
| 1537 | s.* = @as(u8, @intCast(i)); | 1555 | s.* = @as(u8, @intCast(i)); |
| ... | @@ -1578,6 +1596,8 @@ test "noise" { | ... | @@ -1578,6 +1596,8 @@ test "noise" { |
| 1578 | } | 1596 | } |
| 1579 | 1597 | ||
| 1580 | test "uniform sampling" { | 1598 | test "uniform sampling" { |
| 1599 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1600 | |||
| 1581 | var seed: [32]u8 = undefined; | 1601 | var seed: [32]u8 = undefined; |
| 1582 | for (&seed, 0..) |*s, i| { | 1602 | for (&seed, 0..) |*s, i| { |
| 1583 | s.* = @as(u8, @intCast(i)); | 1603 | s.* = @as(u8, @intCast(i)); |
| ... | @@ -1611,6 +1631,8 @@ test "uniform sampling" { | ... | @@ -1611,6 +1631,8 @@ test "uniform sampling" { |
| 1611 | } | 1631 | } |
| 1612 | 1632 | ||
| 1613 | test "Polynomial packing" { | 1633 | test "Polynomial packing" { |
| 1634 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1635 | |||
| 1614 | var rnd = RndGen.init(0); | 1636 | var rnd = RndGen.init(0); |
| 1615 | 1637 | ||
| 1616 | for (0..1000) |_| { | 1638 | for (0..1000) |_| { |
| ... | @@ -1620,6 +1642,8 @@ test "Polynomial packing" { | ... | @@ -1620,6 +1642,8 @@ test "Polynomial packing" { |
| 1620 | } | 1642 | } |
| 1621 | 1643 | ||
| 1622 | test "Test inner PKE" { | 1644 | test "Test inner PKE" { |
| 1645 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1646 | |||
| 1623 | var seed: [32]u8 = undefined; | 1647 | var seed: [32]u8 = undefined; |
| 1624 | var pt: [32]u8 = undefined; | 1648 | var pt: [32]u8 = undefined; |
| 1625 | for (&seed, &pt, 0..) |*s, *p, i| { | 1649 | for (&seed, &pt, 0..) |*s, *p, i| { |
| ... | @@ -1641,6 +1665,8 @@ test "Test inner PKE" { | ... | @@ -1641,6 +1665,8 @@ test "Test inner PKE" { |
| 1641 | } | 1665 | } |
| 1642 | 1666 | ||
| 1643 | test "Test happy flow" { | 1667 | test "Test happy flow" { |
| 1668 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1669 | |||
| 1644 | var seed: [64]u8 = undefined; | 1670 | var seed: [64]u8 = undefined; |
| 1645 | for (&seed, 0..) |*s, i| { | 1671 | for (&seed, 0..) |*s, i| { |
| 1646 | s.* = @as(u8, @intCast(i)); | 1672 | s.* = @as(u8, @intCast(i)); |
| ... | @@ -1667,6 +1693,8 @@ test "Test happy flow" { | ... | @@ -1667,6 +1693,8 @@ test "Test happy flow" { |
| 1667 | const sha2 = crypto.hash.sha2; | 1693 | const sha2 = crypto.hash.sha2; |
| 1668 | 1694 | ||
| 1669 | test "NIST KAT test" { | 1695 | test "NIST KAT test" { |
| 1696 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1697 | |||
| 1670 | inline for (.{ | 1698 | inline for (.{ |
| 1671 | .{ Kyber512, "e9c2bd37133fcb40772f81559f14b1f58dccd1c816701be9ba6214d43baf4547" }, | 1699 | .{ Kyber512, "e9c2bd37133fcb40772f81559f14b1f58dccd1c816701be9ba6214d43baf4547" }, |
| 1672 | .{ Kyber1024, "89248f2f33f7f4f7051729111f3049c409a933ec904aedadf035f30fa5646cd5" }, | 1700 | .{ Kyber1024, "89248f2f33f7f4f7051729111f3049c409a933ec904aedadf035f30fa5646cd5" }, |
lib/std/crypto/pbkdf2.zig+15| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const mem = std.mem; | 3 | const mem = std.mem; |
| 3 | const maxInt = std.math.maxInt; | 4 | const maxInt = std.math.maxInt; |
| 4 | const OutputTooLongError = std.crypto.errors.OutputTooLongError; | 5 | const OutputTooLongError = std.crypto.errors.OutputTooLongError; |
| ... | @@ -151,6 +152,8 @@ const HmacSha1 = std.crypto.auth.hmac.HmacSha1; | ... | @@ -151,6 +152,8 @@ const HmacSha1 = std.crypto.auth.hmac.HmacSha1; |
| 151 | // RFC 6070 PBKDF2 HMAC-SHA1 Test Vectors | 152 | // RFC 6070 PBKDF2 HMAC-SHA1 Test Vectors |
| 152 | 153 | ||
| 153 | test "RFC 6070 one iteration" { | 154 | test "RFC 6070 one iteration" { |
| 155 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 156 | |||
| 154 | const p = "password"; | 157 | const p = "password"; |
| 155 | const s = "salt"; | 158 | const s = "salt"; |
| 156 | const c = 1; | 159 | const c = 1; |
| ... | @@ -166,6 +169,8 @@ test "RFC 6070 one iteration" { | ... | @@ -166,6 +169,8 @@ test "RFC 6070 one iteration" { |
| 166 | } | 169 | } |
| 167 | 170 | ||
| 168 | test "RFC 6070 two iterations" { | 171 | test "RFC 6070 two iterations" { |
| 172 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 173 | |||
| 169 | const p = "password"; | 174 | const p = "password"; |
| 170 | const s = "salt"; | 175 | const s = "salt"; |
| 171 | const c = 2; | 176 | const c = 2; |
| ... | @@ -181,6 +186,8 @@ test "RFC 6070 two iterations" { | ... | @@ -181,6 +186,8 @@ test "RFC 6070 two iterations" { |
| 181 | } | 186 | } |
| 182 | 187 | ||
| 183 | test "RFC 6070 4096 iterations" { | 188 | test "RFC 6070 4096 iterations" { |
| 189 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 190 | |||
| 184 | const p = "password"; | 191 | const p = "password"; |
| 185 | const s = "salt"; | 192 | const s = "salt"; |
| 186 | const c = 4096; | 193 | const c = 4096; |
| ... | @@ -196,6 +203,8 @@ test "RFC 6070 4096 iterations" { | ... | @@ -196,6 +203,8 @@ test "RFC 6070 4096 iterations" { |
| 196 | } | 203 | } |
| 197 | 204 | ||
| 198 | test "RFC 6070 16,777,216 iterations" { | 205 | test "RFC 6070 16,777,216 iterations" { |
| 206 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 207 | |||
| 199 | // These iteration tests are slow so we always skip them. Results have been verified. | 208 | // These iteration tests are slow so we always skip them. Results have been verified. |
| 200 | if (true) { | 209 | if (true) { |
| 201 | return error.SkipZigTest; | 210 | return error.SkipZigTest; |
| ... | @@ -216,6 +225,8 @@ test "RFC 6070 16,777,216 iterations" { | ... | @@ -216,6 +225,8 @@ test "RFC 6070 16,777,216 iterations" { |
| 216 | } | 225 | } |
| 217 | 226 | ||
| 218 | test "RFC 6070 multi-block salt and password" { | 227 | test "RFC 6070 multi-block salt and password" { |
| 228 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 229 | |||
| 219 | const p = "passwordPASSWORDpassword"; | 230 | const p = "passwordPASSWORDpassword"; |
| 220 | const s = "saltSALTsaltSALTsaltSALTsaltSALTsalt"; | 231 | const s = "saltSALTsaltSALTsaltSALTsaltSALTsalt"; |
| 221 | const c = 4096; | 232 | const c = 4096; |
| ... | @@ -231,6 +242,8 @@ test "RFC 6070 multi-block salt and password" { | ... | @@ -231,6 +242,8 @@ test "RFC 6070 multi-block salt and password" { |
| 231 | } | 242 | } |
| 232 | 243 | ||
| 233 | test "RFC 6070 embedded NUL" { | 244 | test "RFC 6070 embedded NUL" { |
| 245 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 246 | |||
| 234 | const p = "pass\x00word"; | 247 | const p = "pass\x00word"; |
| 235 | const s = "sa\x00lt"; | 248 | const s = "sa\x00lt"; |
| 236 | const c = 4096; | 249 | const c = 4096; |
| ... | @@ -246,6 +259,8 @@ test "RFC 6070 embedded NUL" { | ... | @@ -246,6 +259,8 @@ test "RFC 6070 embedded NUL" { |
| 246 | } | 259 | } |
| 247 | 260 | ||
| 248 | test "Very large dk_len" { | 261 | test "Very large dk_len" { |
| 262 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 263 | |||
| 249 | // This test allocates 8GB of memory and is expected to take several hours to run. | 264 | // This test allocates 8GB of memory and is expected to take several hours to run. |
| 250 | if (true) { | 265 | if (true) { |
| 251 | return error.SkipZigTest; | 266 | return error.SkipZigTest; |
lib/std/crypto/pcurves/p256.zig+2| ... | @@ -478,5 +478,7 @@ pub const AffineCoordinates = struct { | ... | @@ -478,5 +478,7 @@ pub const AffineCoordinates = struct { |
| 478 | }; | 478 | }; |
| 479 | 479 | ||
| 480 | test { | 480 | test { |
| 481 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 482 | |||
| 481 | _ = @import("tests/p256.zig"); | 483 | _ = @import("tests/p256.zig"); |
| 482 | } | 484 | } |
lib/std/crypto/phc_encoding.zig+9| ... | @@ -1,6 +1,7 @@ | ... | @@ -1,6 +1,7 @@ |
| 1 | // https://github.com/P-H-C/phc-string-format | 1 | // https://github.com/P-H-C/phc-string-format |
| 2 | 2 | ||
| 3 | const std = @import("std"); | 3 | const std = @import("std"); |
| 4 | const builtin = @import("builtin"); | ||
| 4 | const fmt = std.fmt; | 5 | const fmt = std.fmt; |
| 5 | const io = std.io; | 6 | const io = std.io; |
| 6 | const mem = std.mem; | 7 | const mem = std.mem; |
| ... | @@ -263,6 +264,8 @@ fn kvSplit(str: []const u8) !struct { key: []const u8, value: []const u8 } { | ... | @@ -263,6 +264,8 @@ fn kvSplit(str: []const u8) !struct { key: []const u8, value: []const u8 } { |
| 263 | } | 264 | } |
| 264 | 265 | ||
| 265 | test "phc format - encoding/decoding" { | 266 | test "phc format - encoding/decoding" { |
| 267 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 268 | |||
| 266 | const Input = struct { | 269 | const Input = struct { |
| 267 | str: []const u8, | 270 | str: []const u8, |
| 268 | HashResult: type, | 271 | HashResult: type, |
| ... | @@ -348,18 +351,24 @@ test "phc format - encoding/decoding" { | ... | @@ -348,18 +351,24 @@ test "phc format - encoding/decoding" { |
| 348 | } | 351 | } |
| 349 | 352 | ||
| 350 | test "phc format - empty input string" { | 353 | test "phc format - empty input string" { |
| 354 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 355 | |||
| 351 | const s = ""; | 356 | const s = ""; |
| 352 | const v = deserialize(struct { alg_id: []const u8 }, s); | 357 | const v = deserialize(struct { alg_id: []const u8 }, s); |
| 353 | try std.testing.expectError(Error.InvalidEncoding, v); | 358 | try std.testing.expectError(Error.InvalidEncoding, v); |
| 354 | } | 359 | } |
| 355 | 360 | ||
| 356 | test "phc format - hash without salt" { | 361 | test "phc format - hash without salt" { |
| 362 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 363 | |||
| 357 | const s = "$scrypt"; | 364 | const s = "$scrypt"; |
| 358 | const v = deserialize(struct { alg_id: []const u8, hash: BinValue(16) }, s); | 365 | const v = deserialize(struct { alg_id: []const u8, hash: BinValue(16) }, s); |
| 359 | try std.testing.expectError(Error.InvalidEncoding, v); | 366 | try std.testing.expectError(Error.InvalidEncoding, v); |
| 360 | } | 367 | } |
| 361 | 368 | ||
| 362 | test "phc format - calcSize" { | 369 | test "phc format - calcSize" { |
| 370 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 371 | |||
| 363 | const s = "$scrypt$v=1$ln=15,r=8,p=1$c2FsdHNhbHQ$dGVzdHBhc3M"; | 372 | const s = "$scrypt$v=1$ln=15,r=8,p=1$c2FsdHNhbHQ$dGVzdHBhc3M"; |
| 364 | const v = try deserialize(struct { | 373 | const v = try deserialize(struct { |
| 365 | alg_id: []const u8, | 374 | alg_id: []const u8, |
lib/std/crypto/salsa20.zig+12| ... | @@ -555,6 +555,8 @@ pub const SealedBox = struct { | ... | @@ -555,6 +555,8 @@ pub const SealedBox = struct { |
| 555 | const htest = @import("test.zig"); | 555 | const htest = @import("test.zig"); |
| 556 | 556 | ||
| 557 | test "(x)salsa20" { | 557 | test "(x)salsa20" { |
| 558 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 559 | |||
| 558 | const key = [_]u8{0x69} ** 32; | 560 | const key = [_]u8{0x69} ** 32; |
| 559 | const nonce = [_]u8{0x42} ** 8; | 561 | const nonce = [_]u8{0x42} ** 8; |
| 560 | const msg = [_]u8{0} ** 20; | 562 | const msg = [_]u8{0} ** 20; |
| ... | @@ -569,6 +571,8 @@ test "(x)salsa20" { | ... | @@ -569,6 +571,8 @@ test "(x)salsa20" { |
| 569 | } | 571 | } |
| 570 | 572 | ||
| 571 | test "xsalsa20poly1305" { | 573 | test "xsalsa20poly1305" { |
| 574 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 575 | |||
| 572 | var msg: [100]u8 = undefined; | 576 | var msg: [100]u8 = undefined; |
| 573 | var msg2: [msg.len]u8 = undefined; | 577 | var msg2: [msg.len]u8 = undefined; |
| 574 | var c: [msg.len]u8 = undefined; | 578 | var c: [msg.len]u8 = undefined; |
| ... | @@ -584,6 +588,8 @@ test "xsalsa20poly1305" { | ... | @@ -584,6 +588,8 @@ test "xsalsa20poly1305" { |
| 584 | } | 588 | } |
| 585 | 589 | ||
| 586 | test "xsalsa20poly1305 secretbox" { | 590 | test "xsalsa20poly1305 secretbox" { |
| 591 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 592 | |||
| 587 | var msg: [100]u8 = undefined; | 593 | var msg: [100]u8 = undefined; |
| 588 | var msg2: [msg.len]u8 = undefined; | 594 | var msg2: [msg.len]u8 = undefined; |
| 589 | var key: [XSalsa20Poly1305.key_length]u8 = undefined; | 595 | var key: [XSalsa20Poly1305.key_length]u8 = undefined; |
| ... | @@ -598,6 +604,8 @@ test "xsalsa20poly1305 secretbox" { | ... | @@ -598,6 +604,8 @@ test "xsalsa20poly1305 secretbox" { |
| 598 | } | 604 | } |
| 599 | 605 | ||
| 600 | test "xsalsa20poly1305 box" { | 606 | test "xsalsa20poly1305 box" { |
| 607 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 608 | |||
| 601 | var msg: [100]u8 = undefined; | 609 | var msg: [100]u8 = undefined; |
| 602 | var msg2: [msg.len]u8 = undefined; | 610 | var msg2: [msg.len]u8 = undefined; |
| 603 | var nonce: [Box.nonce_length]u8 = undefined; | 611 | var nonce: [Box.nonce_length]u8 = undefined; |
| ... | @@ -612,6 +620,8 @@ test "xsalsa20poly1305 box" { | ... | @@ -612,6 +620,8 @@ test "xsalsa20poly1305 box" { |
| 612 | } | 620 | } |
| 613 | 621 | ||
| 614 | test "xsalsa20poly1305 sealedbox" { | 622 | test "xsalsa20poly1305 sealedbox" { |
| 623 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 624 | |||
| 615 | var msg: [100]u8 = undefined; | 625 | var msg: [100]u8 = undefined; |
| 616 | var msg2: [msg.len]u8 = undefined; | 626 | var msg2: [msg.len]u8 = undefined; |
| 617 | var boxed: [msg.len + SealedBox.seal_length]u8 = undefined; | 627 | var boxed: [msg.len + SealedBox.seal_length]u8 = undefined; |
| ... | @@ -623,6 +633,8 @@ test "xsalsa20poly1305 sealedbox" { | ... | @@ -623,6 +633,8 @@ test "xsalsa20poly1305 sealedbox" { |
| 623 | } | 633 | } |
| 624 | 634 | ||
| 625 | test "secretbox twoblocks" { | 635 | test "secretbox twoblocks" { |
| 636 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 637 | |||
| 626 | const key = [_]u8{ 0xc9, 0xc9, 0x4d, 0xcf, 0x68, 0xbe, 0x00, 0xe4, 0x7f, 0xe6, 0x13, 0x26, 0xfc, 0xc4, 0x2f, 0xd0, 0xdb, 0x93, 0x91, 0x1c, 0x09, 0x94, 0x89, 0xe1, 0x1b, 0x88, 0x63, 0x18, 0x86, 0x64, 0x8b, 0x7b }; | 638 | const key = [_]u8{ 0xc9, 0xc9, 0x4d, 0xcf, 0x68, 0xbe, 0x00, 0xe4, 0x7f, 0xe6, 0x13, 0x26, 0xfc, 0xc4, 0x2f, 0xd0, 0xdb, 0x93, 0x91, 0x1c, 0x09, 0x94, 0x89, 0xe1, 0x1b, 0x88, 0x63, 0x18, 0x86, 0x64, 0x8b, 0x7b }; |
| 627 | const nonce = [_]u8{ 0xa4, 0x33, 0xe9, 0x0a, 0x07, 0x68, 0x6e, 0x9a, 0x2b, 0x6d, 0xd4, 0x59, 0x04, 0x72, 0x3e, 0xd3, 0x8a, 0x67, 0x55, 0xc7, 0x9e, 0x3e, 0x77, 0xdc }; | 639 | const nonce = [_]u8{ 0xa4, 0x33, 0xe9, 0x0a, 0x07, 0x68, 0x6e, 0x9a, 0x2b, 0x6d, 0xd4, 0x59, 0x04, 0x72, 0x3e, 0xd3, 0x8a, 0x67, 0x55, 0xc7, 0x9e, 0x3e, 0x77, 0xdc }; |
| 628 | const msg = [_]u8{'a'} ** 97; | 640 | const msg = [_]u8{'a'} ** 97; |
lib/std/crypto/scrypt.zig+2| ... | @@ -683,6 +683,8 @@ test "unix-scrypt" { | ... | @@ -683,6 +683,8 @@ test "unix-scrypt" { |
| 683 | } | 683 | } |
| 684 | 684 | ||
| 685 | test "crypt format" { | 685 | test "crypt format" { |
| 686 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 687 | |||
| 686 | const str = "$7$C6..../....SodiumChloride$kBGj9fHznVYFQMEn/qDCfrDevf9YDtcDdKvEqHJLV8D"; | 688 | const str = "$7$C6..../....SodiumChloride$kBGj9fHznVYFQMEn/qDCfrDevf9YDtcDdKvEqHJLV8D"; |
| 687 | const params = try crypt_format.deserialize(crypt_format.HashResult(32), str); | 689 | const params = try crypt_format.deserialize(crypt_format.HashResult(32), str); |
| 688 | var buf: [str.len]u8 = undefined; | 690 | var buf: [str.len]u8 = undefined; |
lib/std/crypto/sha2.zig+11-1| ... | @@ -238,7 +238,7 @@ fn Sha2x32(comptime params: Sha2Params32) type { | ... | @@ -238,7 +238,7 @@ fn Sha2x32(comptime params: Sha2Params32) type { |
| 238 | return; | 238 | return; |
| 239 | }, | 239 | }, |
| 240 | // C backend doesn't currently support passing vectors to inline asm. | 240 | // C backend doesn't currently support passing vectors to inline asm. |
| 241 | .x86_64 => if (builtin.zig_backend != .stage2_c and comptime std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sha, .avx2 })) { | 241 | .x86_64 => if (builtin.zig_backend != .stage2_c and builtin.zig_backend != .stage2_x86_64 and comptime std.Target.x86.featureSetHasAll(builtin.cpu.features, .{ .sha, .avx2 })) { |
| 242 | var x: v4u32 = [_]u32{ d.s[5], d.s[4], d.s[1], d.s[0] }; | 242 | var x: v4u32 = [_]u32{ d.s[5], d.s[4], d.s[1], d.s[0] }; |
| 243 | var y: v4u32 = [_]u32{ d.s[7], d.s[6], d.s[3], d.s[2] }; | 243 | var y: v4u32 = [_]u32{ d.s[7], d.s[6], d.s[3], d.s[2] }; |
| 244 | const s_v = @as(*[16]v4u32, @ptrCast(&s)); | 244 | const s_v = @as(*[16]v4u32, @ptrCast(&s)); |
| ... | @@ -406,12 +406,16 @@ fn Sha2x32(comptime params: Sha2Params32) type { | ... | @@ -406,12 +406,16 @@ fn Sha2x32(comptime params: Sha2Params32) type { |
| 406 | } | 406 | } |
| 407 | 407 | ||
| 408 | test "sha224 single" { | 408 | test "sha224 single" { |
| 409 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 410 | |||
| 409 | try htest.assertEqualHash(Sha224, "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f", ""); | 411 | try htest.assertEqualHash(Sha224, "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f", ""); |
| 410 | try htest.assertEqualHash(Sha224, "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7", "abc"); | 412 | try htest.assertEqualHash(Sha224, "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7", "abc"); |
| 411 | try htest.assertEqualHash(Sha224, "c97ca9a559850ce97a04a96def6d99a9e0e0e2ab14e6b8df265fc0b3", "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"); | 413 | try htest.assertEqualHash(Sha224, "c97ca9a559850ce97a04a96def6d99a9e0e0e2ab14e6b8df265fc0b3", "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"); |
| 412 | } | 414 | } |
| 413 | 415 | ||
| 414 | test "sha224 streaming" { | 416 | test "sha224 streaming" { |
| 417 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 418 | |||
| 415 | var h = Sha224.init(.{}); | 419 | var h = Sha224.init(.{}); |
| 416 | var out: [28]u8 = undefined; | 420 | var out: [28]u8 = undefined; |
| 417 | 421 | ||
| ... | @@ -432,12 +436,16 @@ test "sha224 streaming" { | ... | @@ -432,12 +436,16 @@ test "sha224 streaming" { |
| 432 | } | 436 | } |
| 433 | 437 | ||
| 434 | test "sha256 single" { | 438 | test "sha256 single" { |
| 439 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 440 | |||
| 435 | try htest.assertEqualHash(Sha256, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", ""); | 441 | try htest.assertEqualHash(Sha256, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", ""); |
| 436 | try htest.assertEqualHash(Sha256, "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad", "abc"); | 442 | try htest.assertEqualHash(Sha256, "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad", "abc"); |
| 437 | try htest.assertEqualHash(Sha256, "cf5b16a778af8380036ce59e7b0492370b249b11e8f07a51afac45037afee9d1", "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"); | 443 | try htest.assertEqualHash(Sha256, "cf5b16a778af8380036ce59e7b0492370b249b11e8f07a51afac45037afee9d1", "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"); |
| 438 | } | 444 | } |
| 439 | 445 | ||
| 440 | test "sha256 streaming" { | 446 | test "sha256 streaming" { |
| 447 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 448 | |||
| 441 | var h = Sha256.init(.{}); | 449 | var h = Sha256.init(.{}); |
| 442 | var out: [32]u8 = undefined; | 450 | var out: [32]u8 = undefined; |
| 443 | 451 | ||
| ... | @@ -458,6 +466,8 @@ test "sha256 streaming" { | ... | @@ -458,6 +466,8 @@ test "sha256 streaming" { |
| 458 | } | 466 | } |
| 459 | 467 | ||
| 460 | test "sha256 aligned final" { | 468 | test "sha256 aligned final" { |
| 469 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 470 | |||
| 461 | var block = [_]u8{0} ** Sha256.block_length; | 471 | var block = [_]u8{0} ** Sha256.block_length; |
| 462 | var out: [Sha256.digest_length]u8 = undefined; | 472 | var out: [Sha256.digest_length]u8 = undefined; |
| 463 | 473 |
lib/std/crypto/utils.zig+2| ... | @@ -149,6 +149,8 @@ test "crypto.utils.timingSafeEql" { | ... | @@ -149,6 +149,8 @@ test "crypto.utils.timingSafeEql" { |
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | test "crypto.utils.timingSafeEql (vectors)" { | 151 | test "crypto.utils.timingSafeEql (vectors)" { |
| 152 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 153 | |||
| 152 | var a: [100]u8 = undefined; | 154 | var a: [100]u8 = undefined; |
| 153 | var b: [100]u8 = undefined; | 155 | var b: [100]u8 = undefined; |
| 154 | random.bytes(a[0..]); | 156 | random.bytes(a[0..]); |
lib/std/fmt.zig+8| ... | @@ -2735,6 +2735,8 @@ test "formatType max_depth" { | ... | @@ -2735,6 +2735,8 @@ test "formatType max_depth" { |
| 2735 | } | 2735 | } |
| 2736 | 2736 | ||
| 2737 | test "positional" { | 2737 | test "positional" { |
| 2738 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2739 | |||
| 2738 | try expectFmt("2 1 0", "{2} {1} {0}", .{ @as(usize, 0), @as(usize, 1), @as(usize, 2) }); | 2740 | try expectFmt("2 1 0", "{2} {1} {0}", .{ @as(usize, 0), @as(usize, 1), @as(usize, 2) }); |
| 2739 | try expectFmt("2 1 0", "{2} {1} {}", .{ @as(usize, 0), @as(usize, 1), @as(usize, 2) }); | 2741 | try expectFmt("2 1 0", "{2} {1} {}", .{ @as(usize, 0), @as(usize, 1), @as(usize, 2) }); |
| 2740 | try expectFmt("0 0", "{0} {0}", .{@as(usize, 0)}); | 2742 | try expectFmt("0 0", "{0} {0}", .{@as(usize, 0)}); |
| ... | @@ -2743,14 +2745,20 @@ test "positional" { | ... | @@ -2743,14 +2745,20 @@ test "positional" { |
| 2743 | } | 2745 | } |
| 2744 | 2746 | ||
| 2745 | test "positional with specifier" { | 2747 | test "positional with specifier" { |
| 2748 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2749 | |||
| 2746 | try expectFmt("10.0", "{0d:.1}", .{@as(f64, 9.999)}); | 2750 | try expectFmt("10.0", "{0d:.1}", .{@as(f64, 9.999)}); |
| 2747 | } | 2751 | } |
| 2748 | 2752 | ||
| 2749 | test "positional/alignment/width/precision" { | 2753 | test "positional/alignment/width/precision" { |
| 2754 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2755 | |||
| 2750 | try expectFmt("10.0", "{0d: >3.1}", .{@as(f64, 9.999)}); | 2756 | try expectFmt("10.0", "{0d: >3.1}", .{@as(f64, 9.999)}); |
| 2751 | } | 2757 | } |
| 2752 | 2758 | ||
| 2753 | test "vector" { | 2759 | test "vector" { |
| 2760 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2761 | |||
| 2754 | if (builtin.target.cpu.arch == .riscv64) { | 2762 | if (builtin.target.cpu.arch == .riscv64) { |
| 2755 | // https://github.com/ziglang/zig/issues/4486 | 2763 | // https://github.com/ziglang/zig/issues/4486 |
| 2756 | return error.SkipZigTest; | 2764 | return error.SkipZigTest; |
lib/std/fmt/parse_float.zig+17-1| ... | @@ -1,8 +1,8 @@ | ... | @@ -1,8 +1,8 @@ |
| 1 | pub const parseFloat = @import("parse_float/parse_float.zig").parseFloat; | 1 | pub const parseFloat = @import("parse_float/parse_float.zig").parseFloat; |
| 2 | pub const ParseFloatError = @import("parse_float/parse_float.zig").ParseFloatError; | 2 | pub const ParseFloatError = @import("parse_float/parse_float.zig").ParseFloatError; |
| 3 | 3 | ||
| 4 | const builtin = @import("builtin"); | ||
| 5 | const std = @import("std"); | 4 | const std = @import("std"); |
| 5 | const builtin = @import("builtin"); | ||
| 6 | const math = std.math; | 6 | const math = std.math; |
| 7 | const testing = std.testing; | 7 | const testing = std.testing; |
| 8 | const expect = testing.expect; | 8 | const expect = testing.expect; |
| ... | @@ -14,6 +14,8 @@ const epsilon = 1e-7; | ... | @@ -14,6 +14,8 @@ const epsilon = 1e-7; |
| 14 | // See https://github.com/tiehuis/parse-number-fxx-test-data for a wider-selection of test-data. | 14 | // See https://github.com/tiehuis/parse-number-fxx-test-data for a wider-selection of test-data. |
| 15 | 15 | ||
| 16 | test "fmt.parseFloat" { | 16 | test "fmt.parseFloat" { |
| 17 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 18 | |||
| 17 | inline for ([_]type{ f16, f32, f64, f128 }) |T| { | 19 | inline for ([_]type{ f16, f32, f64, f128 }) |T| { |
| 18 | try testing.expectError(error.InvalidCharacter, parseFloat(T, "")); | 20 | try testing.expectError(error.InvalidCharacter, parseFloat(T, "")); |
| 19 | try testing.expectError(error.InvalidCharacter, parseFloat(T, " 1")); | 21 | try testing.expectError(error.InvalidCharacter, parseFloat(T, " 1")); |
| ... | @@ -70,6 +72,8 @@ test "fmt.parseFloat" { | ... | @@ -70,6 +72,8 @@ test "fmt.parseFloat" { |
| 70 | } | 72 | } |
| 71 | 73 | ||
| 72 | test "fmt.parseFloat nan and inf" { | 74 | test "fmt.parseFloat nan and inf" { |
| 75 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 76 | |||
| 73 | inline for ([_]type{ f16, f32, f64, f128 }) |T| { | 77 | inline for ([_]type{ f16, f32, f64, f128 }) |T| { |
| 74 | const Z = std.meta.Int(.unsigned, @typeInfo(T).Float.bits); | 78 | const Z = std.meta.Int(.unsigned, @typeInfo(T).Float.bits); |
| 75 | 79 | ||
| ... | @@ -80,16 +84,22 @@ test "fmt.parseFloat nan and inf" { | ... | @@ -80,16 +84,22 @@ test "fmt.parseFloat nan and inf" { |
| 80 | } | 84 | } |
| 81 | 85 | ||
| 82 | test "fmt.parseFloat #11169" { | 86 | test "fmt.parseFloat #11169" { |
| 87 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 88 | |||
| 83 | try expectEqual(try parseFloat(f128, "9007199254740993.0"), 9007199254740993.0); | 89 | try expectEqual(try parseFloat(f128, "9007199254740993.0"), 9007199254740993.0); |
| 84 | } | 90 | } |
| 85 | 91 | ||
| 86 | test "fmt.parseFloat hex.special" { | 92 | test "fmt.parseFloat hex.special" { |
| 93 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 94 | |||
| 87 | try testing.expect(math.isNan(try parseFloat(f32, "nAn"))); | 95 | try testing.expect(math.isNan(try parseFloat(f32, "nAn"))); |
| 88 | try testing.expect(math.isPositiveInf(try parseFloat(f32, "iNf"))); | 96 | try testing.expect(math.isPositiveInf(try parseFloat(f32, "iNf"))); |
| 89 | try testing.expect(math.isPositiveInf(try parseFloat(f32, "+Inf"))); | 97 | try testing.expect(math.isPositiveInf(try parseFloat(f32, "+Inf"))); |
| 90 | try testing.expect(math.isNegativeInf(try parseFloat(f32, "-iNf"))); | 98 | try testing.expect(math.isNegativeInf(try parseFloat(f32, "-iNf"))); |
| 91 | } | 99 | } |
| 92 | test "fmt.parseFloat hex.zero" { | 100 | test "fmt.parseFloat hex.zero" { |
| 101 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 102 | |||
| 93 | try testing.expectEqual(@as(f32, 0.0), try parseFloat(f32, "0x0")); | 103 | try testing.expectEqual(@as(f32, 0.0), try parseFloat(f32, "0x0")); |
| 94 | try testing.expectEqual(@as(f32, 0.0), try parseFloat(f32, "-0x0")); | 104 | try testing.expectEqual(@as(f32, 0.0), try parseFloat(f32, "-0x0")); |
| 95 | try testing.expectEqual(@as(f32, 0.0), try parseFloat(f32, "0x0p42")); | 105 | try testing.expectEqual(@as(f32, 0.0), try parseFloat(f32, "0x0p42")); |
| ... | @@ -98,6 +108,8 @@ test "fmt.parseFloat hex.zero" { | ... | @@ -98,6 +108,8 @@ test "fmt.parseFloat hex.zero" { |
| 98 | } | 108 | } |
| 99 | 109 | ||
| 100 | test "fmt.parseFloat hex.f16" { | 110 | test "fmt.parseFloat hex.f16" { |
| 111 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 112 | |||
| 101 | try testing.expectEqual(try parseFloat(f16, "0x1p0"), 1.0); | 113 | try testing.expectEqual(try parseFloat(f16, "0x1p0"), 1.0); |
| 102 | try testing.expectEqual(try parseFloat(f16, "-0x1p-1"), -0.5); | 114 | try testing.expectEqual(try parseFloat(f16, "-0x1p-1"), -0.5); |
| 103 | try testing.expectEqual(try parseFloat(f16, "0x10p+10"), 16384.0); | 115 | try testing.expectEqual(try parseFloat(f16, "0x10p+10"), 16384.0); |
| ... | @@ -114,6 +126,8 @@ test "fmt.parseFloat hex.f16" { | ... | @@ -114,6 +126,8 @@ test "fmt.parseFloat hex.f16" { |
| 114 | } | 126 | } |
| 115 | 127 | ||
| 116 | test "fmt.parseFloat hex.f32" { | 128 | test "fmt.parseFloat hex.f32" { |
| 129 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 130 | |||
| 117 | try testing.expectError(error.InvalidCharacter, parseFloat(f32, "0x")); | 131 | try testing.expectError(error.InvalidCharacter, parseFloat(f32, "0x")); |
| 118 | try testing.expectEqual(try parseFloat(f32, "0x1p0"), 1.0); | 132 | try testing.expectEqual(try parseFloat(f32, "0x1p0"), 1.0); |
| 119 | try testing.expectEqual(try parseFloat(f32, "-0x1p-1"), -0.5); | 133 | try testing.expectEqual(try parseFloat(f32, "-0x1p-1"), -0.5); |
| ... | @@ -148,6 +162,8 @@ test "fmt.parseFloat hex.f64" { | ... | @@ -148,6 +162,8 @@ test "fmt.parseFloat hex.f64" { |
| 148 | try testing.expectEqual(try parseFloat(f64, "-0x1p-1074"), -math.floatTrueMin(f64)); | 162 | try testing.expectEqual(try parseFloat(f64, "-0x1p-1074"), -math.floatTrueMin(f64)); |
| 149 | } | 163 | } |
| 150 | test "fmt.parseFloat hex.f128" { | 164 | test "fmt.parseFloat hex.f128" { |
| 165 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 166 | |||
| 151 | try testing.expectEqual(try parseFloat(f128, "0x1p0"), 1.0); | 167 | try testing.expectEqual(try parseFloat(f128, "0x1p0"), 1.0); |
| 152 | try testing.expectEqual(try parseFloat(f128, "-0x1p-1"), -0.5); | 168 | try testing.expectEqual(try parseFloat(f128, "-0x1p-1"), -0.5); |
| 153 | try testing.expectEqual(try parseFloat(f128, "0x10p+10"), 16384.0); | 169 | try testing.expectEqual(try parseFloat(f128, "0x10p+10"), 16384.0); |
lib/std/fs.zig+8-6| ... | @@ -3167,13 +3167,15 @@ fn copy_file(fd_in: os.fd_t, fd_out: os.fd_t, maybe_size: ?u64) CopyFileRawError | ... | @@ -3167,13 +3167,15 @@ fn copy_file(fd_in: os.fd_t, fd_out: os.fd_t, maybe_size: ?u64) CopyFileRawError |
| 3167 | } | 3167 | } |
| 3168 | 3168 | ||
| 3169 | test { | 3169 | test { |
| 3170 | if (builtin.os.tag != .wasi) { | 3170 | if (builtin.zig_backend != .stage2_x86_64) { |
| 3171 | _ = &makeDirAbsolute; | 3171 | if (builtin.os.tag != .wasi) { |
| 3172 | _ = &makeDirAbsoluteZ; | 3172 | _ = &makeDirAbsolute; |
| 3173 | _ = &copyFileAbsolute; | 3173 | _ = &makeDirAbsoluteZ; |
| 3174 | _ = &updateFileAbsolute; | 3174 | _ = &copyFileAbsolute; |
| 3175 | _ = &updateFileAbsolute; | ||
| 3176 | } | ||
| 3177 | _ = &Dir.copyFile; | ||
| 3175 | } | 3178 | } |
| 3176 | _ = &Dir.copyFile; | ||
| 3177 | _ = @import("fs/test.zig"); | 3179 | _ = @import("fs/test.zig"); |
| 3178 | _ = @import("fs/path.zig"); | 3180 | _ = @import("fs/path.zig"); |
| 3179 | _ = @import("fs/file.zig"); | 3181 | _ = @import("fs/file.zig"); |
lib/std/fs/test.zig+104| ... | @@ -124,6 +124,8 @@ fn testWithAllSupportedPathTypes(test_func: anytype) !void { | ... | @@ -124,6 +124,8 @@ fn testWithAllSupportedPathTypes(test_func: anytype) !void { |
| 124 | } | 124 | } |
| 125 | 125 | ||
| 126 | test "Dir.readLink" { | 126 | test "Dir.readLink" { |
| 127 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 128 | |||
| 127 | try testWithAllSupportedPathTypes(struct { | 129 | try testWithAllSupportedPathTypes(struct { |
| 128 | fn impl(ctx: *TestContext) !void { | 130 | fn impl(ctx: *TestContext) !void { |
| 129 | // Create some targets | 131 | // Create some targets |
| ... | @@ -161,6 +163,8 @@ fn testReadLink(dir: Dir, target_path: []const u8, symlink_path: []const u8) !vo | ... | @@ -161,6 +163,8 @@ fn testReadLink(dir: Dir, target_path: []const u8, symlink_path: []const u8) !vo |
| 161 | } | 163 | } |
| 162 | 164 | ||
| 163 | test "relative symlink to parent directory" { | 165 | test "relative symlink to parent directory" { |
| 166 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 167 | |||
| 164 | var tmp = tmpDir(.{}); | 168 | var tmp = tmpDir(.{}); |
| 165 | defer tmp.cleanup(); | 169 | defer tmp.cleanup(); |
| 166 | 170 | ||
| ... | @@ -178,6 +182,8 @@ test "relative symlink to parent directory" { | ... | @@ -178,6 +182,8 @@ test "relative symlink to parent directory" { |
| 178 | } | 182 | } |
| 179 | 183 | ||
| 180 | test "openDir" { | 184 | test "openDir" { |
| 185 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 186 | |||
| 181 | try testWithAllSupportedPathTypes(struct { | 187 | try testWithAllSupportedPathTypes(struct { |
| 182 | fn impl(ctx: *TestContext) !void { | 188 | fn impl(ctx: *TestContext) !void { |
| 183 | const allocator = ctx.arena.allocator(); | 189 | const allocator = ctx.arena.allocator(); |
| ... | @@ -196,6 +202,8 @@ test "openDir" { | ... | @@ -196,6 +202,8 @@ test "openDir" { |
| 196 | test "accessAbsolute" { | 202 | test "accessAbsolute" { |
| 197 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 203 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 198 | 204 | ||
| 205 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 206 | |||
| 199 | var tmp = tmpDir(.{}); | 207 | var tmp = tmpDir(.{}); |
| 200 | defer tmp.cleanup(); | 208 | defer tmp.cleanup(); |
| 201 | 209 | ||
| ... | @@ -214,6 +222,8 @@ test "accessAbsolute" { | ... | @@ -214,6 +222,8 @@ test "accessAbsolute" { |
| 214 | test "openDirAbsolute" { | 222 | test "openDirAbsolute" { |
| 215 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 223 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 216 | 224 | ||
| 225 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 226 | |||
| 217 | var tmp = tmpDir(.{}); | 227 | var tmp = tmpDir(.{}); |
| 218 | defer tmp.cleanup(); | 228 | defer tmp.cleanup(); |
| 219 | 229 | ||
| ... | @@ -252,6 +262,8 @@ test "openDir non-cwd parent .." { | ... | @@ -252,6 +262,8 @@ test "openDir non-cwd parent .." { |
| 252 | else => {}, | 262 | else => {}, |
| 253 | } | 263 | } |
| 254 | 264 | ||
| 265 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 266 | |||
| 255 | var tmp = tmpDir(.{}); | 267 | var tmp = tmpDir(.{}); |
| 256 | defer tmp.cleanup(); | 268 | defer tmp.cleanup(); |
| 257 | 269 | ||
| ... | @@ -273,6 +285,8 @@ test "openDir non-cwd parent .." { | ... | @@ -273,6 +285,8 @@ test "openDir non-cwd parent .." { |
| 273 | test "readLinkAbsolute" { | 285 | test "readLinkAbsolute" { |
| 274 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 286 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 275 | 287 | ||
| 288 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 289 | |||
| 276 | var tmp = tmpDir(.{}); | 290 | var tmp = tmpDir(.{}); |
| 277 | defer tmp.cleanup(); | 291 | defer tmp.cleanup(); |
| 278 | 292 | ||
| ... | @@ -323,6 +337,8 @@ fn testReadLinkAbsolute(target_path: []const u8, symlink_path: []const u8) !void | ... | @@ -323,6 +337,8 @@ fn testReadLinkAbsolute(target_path: []const u8, symlink_path: []const u8) !void |
| 323 | } | 337 | } |
| 324 | 338 | ||
| 325 | test "Dir.Iterator" { | 339 | test "Dir.Iterator" { |
| 340 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 341 | |||
| 326 | var tmp_dir = tmpIterableDir(.{}); | 342 | var tmp_dir = tmpIterableDir(.{}); |
| 327 | defer tmp_dir.cleanup(); | 343 | defer tmp_dir.cleanup(); |
| 328 | 344 | ||
| ... | @@ -353,6 +369,8 @@ test "Dir.Iterator" { | ... | @@ -353,6 +369,8 @@ test "Dir.Iterator" { |
| 353 | } | 369 | } |
| 354 | 370 | ||
| 355 | test "Dir.Iterator many entries" { | 371 | test "Dir.Iterator many entries" { |
| 372 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 373 | |||
| 356 | var tmp_dir = tmpIterableDir(.{}); | 374 | var tmp_dir = tmpIterableDir(.{}); |
| 357 | defer tmp_dir.cleanup(); | 375 | defer tmp_dir.cleanup(); |
| 358 | 376 | ||
| ... | @@ -388,6 +406,8 @@ test "Dir.Iterator many entries" { | ... | @@ -388,6 +406,8 @@ test "Dir.Iterator many entries" { |
| 388 | } | 406 | } |
| 389 | 407 | ||
| 390 | test "Dir.Iterator twice" { | 408 | test "Dir.Iterator twice" { |
| 409 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 410 | |||
| 391 | var tmp_dir = tmpIterableDir(.{}); | 411 | var tmp_dir = tmpIterableDir(.{}); |
| 392 | defer tmp_dir.cleanup(); | 412 | defer tmp_dir.cleanup(); |
| 393 | 413 | ||
| ... | @@ -421,6 +441,8 @@ test "Dir.Iterator twice" { | ... | @@ -421,6 +441,8 @@ test "Dir.Iterator twice" { |
| 421 | } | 441 | } |
| 422 | 442 | ||
| 423 | test "Dir.Iterator reset" { | 443 | test "Dir.Iterator reset" { |
| 444 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 445 | |||
| 424 | var tmp_dir = tmpIterableDir(.{}); | 446 | var tmp_dir = tmpIterableDir(.{}); |
| 425 | defer tmp_dir.cleanup(); | 447 | defer tmp_dir.cleanup(); |
| 426 | 448 | ||
| ... | @@ -457,6 +479,8 @@ test "Dir.Iterator reset" { | ... | @@ -457,6 +479,8 @@ test "Dir.Iterator reset" { |
| 457 | } | 479 | } |
| 458 | 480 | ||
| 459 | test "Dir.Iterator but dir is deleted during iteration" { | 481 | test "Dir.Iterator but dir is deleted during iteration" { |
| 482 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 483 | |||
| 460 | var tmp = std.testing.tmpDir(.{}); | 484 | var tmp = std.testing.tmpDir(.{}); |
| 461 | defer tmp.cleanup(); | 485 | defer tmp.cleanup(); |
| 462 | 486 | ||
| ... | @@ -499,6 +523,8 @@ fn contains(entries: *const std.ArrayList(IterableDir.Entry), el: IterableDir.En | ... | @@ -499,6 +523,8 @@ fn contains(entries: *const std.ArrayList(IterableDir.Entry), el: IterableDir.En |
| 499 | test "Dir.realpath smoke test" { | 523 | test "Dir.realpath smoke test" { |
| 500 | if (!comptime std.os.isGetFdPathSupportedOnTarget(builtin.os)) return error.SkipZigTest; | 524 | if (!comptime std.os.isGetFdPathSupportedOnTarget(builtin.os)) return error.SkipZigTest; |
| 501 | 525 | ||
| 526 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 527 | |||
| 502 | try testWithAllSupportedPathTypes(struct { | 528 | try testWithAllSupportedPathTypes(struct { |
| 503 | fn impl(ctx: *TestContext) !void { | 529 | fn impl(ctx: *TestContext) !void { |
| 504 | const allocator = ctx.arena.allocator(); | 530 | const allocator = ctx.arena.allocator(); |
| ... | @@ -549,6 +575,8 @@ test "Dir.realpath smoke test" { | ... | @@ -549,6 +575,8 @@ test "Dir.realpath smoke test" { |
| 549 | } | 575 | } |
| 550 | 576 | ||
| 551 | test "readAllAlloc" { | 577 | test "readAllAlloc" { |
| 578 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 579 | |||
| 552 | var tmp_dir = tmpDir(.{}); | 580 | var tmp_dir = tmpDir(.{}); |
| 553 | defer tmp_dir.cleanup(); | 581 | defer tmp_dir.cleanup(); |
| 554 | 582 | ||
| ... | @@ -585,6 +613,8 @@ test "Dir.statFile" { | ... | @@ -585,6 +613,8 @@ test "Dir.statFile" { |
| 585 | // TODO: Re-enable once https://github.com/ziglang/zig/issues/17034 is solved | 613 | // TODO: Re-enable once https://github.com/ziglang/zig/issues/17034 is solved |
| 586 | if (builtin.os.tag == .linux and builtin.link_libc and builtin.abi == .gnu) return error.SkipZigTest; | 614 | if (builtin.os.tag == .linux and builtin.link_libc and builtin.abi == .gnu) return error.SkipZigTest; |
| 587 | 615 | ||
| 616 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 617 | |||
| 588 | try testWithAllSupportedPathTypes(struct { | 618 | try testWithAllSupportedPathTypes(struct { |
| 589 | fn impl(ctx: *TestContext) !void { | 619 | fn impl(ctx: *TestContext) !void { |
| 590 | const test_file_name = try ctx.transformPath("test_file"); | 620 | const test_file_name = try ctx.transformPath("test_file"); |
| ... | @@ -600,6 +630,8 @@ test "Dir.statFile" { | ... | @@ -600,6 +630,8 @@ test "Dir.statFile" { |
| 600 | } | 630 | } |
| 601 | 631 | ||
| 602 | test "directory operations on files" { | 632 | test "directory operations on files" { |
| 633 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 634 | |||
| 603 | try testWithAllSupportedPathTypes(struct { | 635 | try testWithAllSupportedPathTypes(struct { |
| 604 | fn impl(ctx: *TestContext) !void { | 636 | fn impl(ctx: *TestContext) !void { |
| 605 | const test_file_name = try ctx.transformPath("test_file"); | 637 | const test_file_name = try ctx.transformPath("test_file"); |
| ... | @@ -629,6 +661,8 @@ test "file operations on directories" { | ... | @@ -629,6 +661,8 @@ test "file operations on directories" { |
| 629 | // TODO: fix this test on FreeBSD. https://github.com/ziglang/zig/issues/1759 | 661 | // TODO: fix this test on FreeBSD. https://github.com/ziglang/zig/issues/1759 |
| 630 | if (builtin.os.tag == .freebsd) return error.SkipZigTest; | 662 | if (builtin.os.tag == .freebsd) return error.SkipZigTest; |
| 631 | 663 | ||
| 664 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 665 | |||
| 632 | try testWithAllSupportedPathTypes(struct { | 666 | try testWithAllSupportedPathTypes(struct { |
| 633 | fn impl(ctx: *TestContext) !void { | 667 | fn impl(ctx: *TestContext) !void { |
| 634 | const test_dir_name = try ctx.transformPath("test_dir"); | 668 | const test_dir_name = try ctx.transformPath("test_dir"); |
| ... | @@ -664,6 +698,8 @@ test "file operations on directories" { | ... | @@ -664,6 +698,8 @@ test "file operations on directories" { |
| 664 | } | 698 | } |
| 665 | 699 | ||
| 666 | test "deleteDir" { | 700 | test "deleteDir" { |
| 701 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 702 | |||
| 667 | try testWithAllSupportedPathTypes(struct { | 703 | try testWithAllSupportedPathTypes(struct { |
| 668 | fn impl(ctx: *TestContext) !void { | 704 | fn impl(ctx: *TestContext) !void { |
| 669 | const test_dir_path = try ctx.transformPath("test_dir"); | 705 | const test_dir_path = try ctx.transformPath("test_dir"); |
| ... | @@ -685,6 +721,8 @@ test "deleteDir" { | ... | @@ -685,6 +721,8 @@ test "deleteDir" { |
| 685 | } | 721 | } |
| 686 | 722 | ||
| 687 | test "Dir.rename files" { | 723 | test "Dir.rename files" { |
| 724 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 725 | |||
| 688 | try testWithAllSupportedPathTypes(struct { | 726 | try testWithAllSupportedPathTypes(struct { |
| 689 | fn impl(ctx: *TestContext) !void { | 727 | fn impl(ctx: *TestContext) !void { |
| 690 | // Rename on Windows can hit intermittent AccessDenied errors | 728 | // Rename on Windows can hit intermittent AccessDenied errors |
| ... | @@ -727,6 +765,8 @@ test "Dir.rename files" { | ... | @@ -727,6 +765,8 @@ test "Dir.rename files" { |
| 727 | } | 765 | } |
| 728 | 766 | ||
| 729 | test "Dir.rename directories" { | 767 | test "Dir.rename directories" { |
| 768 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 769 | |||
| 730 | try testWithAllSupportedPathTypes(struct { | 770 | try testWithAllSupportedPathTypes(struct { |
| 731 | fn impl(ctx: *TestContext) !void { | 771 | fn impl(ctx: *TestContext) !void { |
| 732 | // Rename on Windows can hit intermittent AccessDenied errors | 772 | // Rename on Windows can hit intermittent AccessDenied errors |
| ... | @@ -768,6 +808,8 @@ test "Dir.rename directory onto empty dir" { | ... | @@ -768,6 +808,8 @@ test "Dir.rename directory onto empty dir" { |
| 768 | // TODO: Fix on Windows, see https://github.com/ziglang/zig/issues/6364 | 808 | // TODO: Fix on Windows, see https://github.com/ziglang/zig/issues/6364 |
| 769 | if (builtin.os.tag == .windows) return error.SkipZigTest; | 809 | if (builtin.os.tag == .windows) return error.SkipZigTest; |
| 770 | 810 | ||
| 811 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 812 | |||
| 771 | try testWithAllSupportedPathTypes(struct { | 813 | try testWithAllSupportedPathTypes(struct { |
| 772 | fn impl(ctx: *TestContext) !void { | 814 | fn impl(ctx: *TestContext) !void { |
| 773 | const test_dir_path = try ctx.transformPath("test_dir"); | 815 | const test_dir_path = try ctx.transformPath("test_dir"); |
| ... | @@ -789,6 +831,8 @@ test "Dir.rename directory onto non-empty dir" { | ... | @@ -789,6 +831,8 @@ test "Dir.rename directory onto non-empty dir" { |
| 789 | // TODO: Fix on Windows, see https://github.com/ziglang/zig/issues/6364 | 831 | // TODO: Fix on Windows, see https://github.com/ziglang/zig/issues/6364 |
| 790 | if (builtin.os.tag == .windows) return error.SkipZigTest; | 832 | if (builtin.os.tag == .windows) return error.SkipZigTest; |
| 791 | 833 | ||
| 834 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 835 | |||
| 792 | try testWithAllSupportedPathTypes(struct { | 836 | try testWithAllSupportedPathTypes(struct { |
| 793 | fn impl(ctx: *TestContext) !void { | 837 | fn impl(ctx: *TestContext) !void { |
| 794 | const test_dir_path = try ctx.transformPath("test_dir"); | 838 | const test_dir_path = try ctx.transformPath("test_dir"); |
| ... | @@ -815,6 +859,8 @@ test "Dir.rename file <-> dir" { | ... | @@ -815,6 +859,8 @@ test "Dir.rename file <-> dir" { |
| 815 | // TODO: Fix on Windows, see https://github.com/ziglang/zig/issues/6364 | 859 | // TODO: Fix on Windows, see https://github.com/ziglang/zig/issues/6364 |
| 816 | if (builtin.os.tag == .windows) return error.SkipZigTest; | 860 | if (builtin.os.tag == .windows) return error.SkipZigTest; |
| 817 | 861 | ||
| 862 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 863 | |||
| 818 | try testWithAllSupportedPathTypes(struct { | 864 | try testWithAllSupportedPathTypes(struct { |
| 819 | fn impl(ctx: *TestContext) !void { | 865 | fn impl(ctx: *TestContext) !void { |
| 820 | const test_file_path = try ctx.transformPath("test_file"); | 866 | const test_file_path = try ctx.transformPath("test_file"); |
| ... | @@ -830,6 +876,8 @@ test "Dir.rename file <-> dir" { | ... | @@ -830,6 +876,8 @@ test "Dir.rename file <-> dir" { |
| 830 | } | 876 | } |
| 831 | 877 | ||
| 832 | test "rename" { | 878 | test "rename" { |
| 879 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 880 | |||
| 833 | var tmp_dir1 = tmpDir(.{}); | 881 | var tmp_dir1 = tmpDir(.{}); |
| 834 | defer tmp_dir1.cleanup(); | 882 | defer tmp_dir1.cleanup(); |
| 835 | 883 | ||
| ... | @@ -852,6 +900,8 @@ test "rename" { | ... | @@ -852,6 +900,8 @@ test "rename" { |
| 852 | test "renameAbsolute" { | 900 | test "renameAbsolute" { |
| 853 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 901 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 854 | 902 | ||
| 903 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 904 | |||
| 855 | var tmp_dir = tmpDir(.{}); | 905 | var tmp_dir = tmpDir(.{}); |
| 856 | defer tmp_dir.cleanup(); | 906 | defer tmp_dir.cleanup(); |
| 857 | 907 | ||
| ... | @@ -910,6 +960,8 @@ test "openSelfExe" { | ... | @@ -910,6 +960,8 @@ test "openSelfExe" { |
| 910 | } | 960 | } |
| 911 | 961 | ||
| 912 | test "makePath, put some files in it, deleteTree" { | 962 | test "makePath, put some files in it, deleteTree" { |
| 963 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 964 | |||
| 913 | try testWithAllSupportedPathTypes(struct { | 965 | try testWithAllSupportedPathTypes(struct { |
| 914 | fn impl(ctx: *TestContext) !void { | 966 | fn impl(ctx: *TestContext) !void { |
| 915 | const allocator = ctx.arena.allocator(); | 967 | const allocator = ctx.arena.allocator(); |
| ... | @@ -926,6 +978,8 @@ test "makePath, put some files in it, deleteTree" { | ... | @@ -926,6 +978,8 @@ test "makePath, put some files in it, deleteTree" { |
| 926 | } | 978 | } |
| 927 | 979 | ||
| 928 | test "makePath, put some files in it, deleteTreeMinStackSize" { | 980 | test "makePath, put some files in it, deleteTreeMinStackSize" { |
| 981 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 982 | |||
| 929 | try testWithAllSupportedPathTypes(struct { | 983 | try testWithAllSupportedPathTypes(struct { |
| 930 | fn impl(ctx: *TestContext) !void { | 984 | fn impl(ctx: *TestContext) !void { |
| 931 | const allocator = ctx.arena.allocator(); | 985 | const allocator = ctx.arena.allocator(); |
| ... | @@ -944,6 +998,8 @@ test "makePath, put some files in it, deleteTreeMinStackSize" { | ... | @@ -944,6 +998,8 @@ test "makePath, put some files in it, deleteTreeMinStackSize" { |
| 944 | test "makePath in a directory that no longer exists" { | 998 | test "makePath in a directory that no longer exists" { |
| 945 | if (builtin.os.tag == .windows) return error.SkipZigTest; // Windows returns FileBusy if attempting to remove an open dir | 999 | if (builtin.os.tag == .windows) return error.SkipZigTest; // Windows returns FileBusy if attempting to remove an open dir |
| 946 | 1000 | ||
| 1001 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1002 | |||
| 947 | var tmp = tmpDir(.{}); | 1003 | var tmp = tmpDir(.{}); |
| 948 | defer tmp.cleanup(); | 1004 | defer tmp.cleanup(); |
| 949 | try tmp.parent_dir.deleteTree(&tmp.sub_path); | 1005 | try tmp.parent_dir.deleteTree(&tmp.sub_path); |
| ... | @@ -975,6 +1031,8 @@ fn testFilenameLimits(iterable_dir: IterableDir, maxed_filename: []const u8) !vo | ... | @@ -975,6 +1031,8 @@ fn testFilenameLimits(iterable_dir: IterableDir, maxed_filename: []const u8) !vo |
| 975 | } | 1031 | } |
| 976 | 1032 | ||
| 977 | test "max file name component lengths" { | 1033 | test "max file name component lengths" { |
| 1034 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1035 | |||
| 978 | var tmp = tmpIterableDir(.{}); | 1036 | var tmp = tmpIterableDir(.{}); |
| 979 | defer tmp.cleanup(); | 1037 | defer tmp.cleanup(); |
| 980 | 1038 | ||
| ... | @@ -996,6 +1054,8 @@ test "max file name component lengths" { | ... | @@ -996,6 +1054,8 @@ test "max file name component lengths" { |
| 996 | } | 1054 | } |
| 997 | 1055 | ||
| 998 | test "writev, readv" { | 1056 | test "writev, readv" { |
| 1057 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1058 | |||
| 999 | var tmp = tmpDir(.{}); | 1059 | var tmp = tmpDir(.{}); |
| 1000 | defer tmp.cleanup(); | 1060 | defer tmp.cleanup(); |
| 1001 | 1061 | ||
| ... | @@ -1038,6 +1098,8 @@ test "writev, readv" { | ... | @@ -1038,6 +1098,8 @@ test "writev, readv" { |
| 1038 | } | 1098 | } |
| 1039 | 1099 | ||
| 1040 | test "pwritev, preadv" { | 1100 | test "pwritev, preadv" { |
| 1101 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1102 | |||
| 1041 | var tmp = tmpDir(.{}); | 1103 | var tmp = tmpDir(.{}); |
| 1042 | defer tmp.cleanup(); | 1104 | defer tmp.cleanup(); |
| 1043 | 1105 | ||
| ... | @@ -1079,6 +1141,8 @@ test "pwritev, preadv" { | ... | @@ -1079,6 +1141,8 @@ test "pwritev, preadv" { |
| 1079 | } | 1141 | } |
| 1080 | 1142 | ||
| 1081 | test "access file" { | 1143 | test "access file" { |
| 1144 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1145 | |||
| 1082 | try testWithAllSupportedPathTypes(struct { | 1146 | try testWithAllSupportedPathTypes(struct { |
| 1083 | fn impl(ctx: *TestContext) !void { | 1147 | fn impl(ctx: *TestContext) !void { |
| 1084 | const dir_path = try ctx.transformPath("os_test_tmp"); | 1148 | const dir_path = try ctx.transformPath("os_test_tmp"); |
| ... | @@ -1095,6 +1159,8 @@ test "access file" { | ... | @@ -1095,6 +1159,8 @@ test "access file" { |
| 1095 | } | 1159 | } |
| 1096 | 1160 | ||
| 1097 | test "sendfile" { | 1161 | test "sendfile" { |
| 1162 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1163 | |||
| 1098 | var tmp = tmpDir(.{}); | 1164 | var tmp = tmpDir(.{}); |
| 1099 | defer tmp.cleanup(); | 1165 | defer tmp.cleanup(); |
| 1100 | 1166 | ||
| ... | @@ -1160,6 +1226,8 @@ test "sendfile" { | ... | @@ -1160,6 +1226,8 @@ test "sendfile" { |
| 1160 | } | 1226 | } |
| 1161 | 1227 | ||
| 1162 | test "copyRangeAll" { | 1228 | test "copyRangeAll" { |
| 1229 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1230 | |||
| 1163 | var tmp = tmpDir(.{}); | 1231 | var tmp = tmpDir(.{}); |
| 1164 | defer tmp.cleanup(); | 1232 | defer tmp.cleanup(); |
| 1165 | 1233 | ||
| ... | @@ -1186,6 +1254,8 @@ test "copyRangeAll" { | ... | @@ -1186,6 +1254,8 @@ test "copyRangeAll" { |
| 1186 | } | 1254 | } |
| 1187 | 1255 | ||
| 1188 | test "copyFile" { | 1256 | test "copyFile" { |
| 1257 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1258 | |||
| 1189 | try testWithAllSupportedPathTypes(struct { | 1259 | try testWithAllSupportedPathTypes(struct { |
| 1190 | fn impl(ctx: *TestContext) !void { | 1260 | fn impl(ctx: *TestContext) !void { |
| 1191 | const data = "u6wj+JmdF3qHsFPE BUlH2g4gJCmEz0PP"; | 1261 | const data = "u6wj+JmdF3qHsFPE BUlH2g4gJCmEz0PP"; |
| ... | @@ -1216,6 +1286,8 @@ fn expectFileContents(dir: Dir, file_path: []const u8, data: []const u8) !void { | ... | @@ -1216,6 +1286,8 @@ fn expectFileContents(dir: Dir, file_path: []const u8, data: []const u8) !void { |
| 1216 | } | 1286 | } |
| 1217 | 1287 | ||
| 1218 | test "AtomicFile" { | 1288 | test "AtomicFile" { |
| 1289 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1290 | |||
| 1219 | try testWithAllSupportedPathTypes(struct { | 1291 | try testWithAllSupportedPathTypes(struct { |
| 1220 | fn impl(ctx: *TestContext) !void { | 1292 | fn impl(ctx: *TestContext) !void { |
| 1221 | const allocator = ctx.arena.allocator(); | 1293 | const allocator = ctx.arena.allocator(); |
| ... | @@ -1242,6 +1314,8 @@ test "AtomicFile" { | ... | @@ -1242,6 +1314,8 @@ test "AtomicFile" { |
| 1242 | test "open file with exclusive nonblocking lock twice" { | 1314 | test "open file with exclusive nonblocking lock twice" { |
| 1243 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 1315 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 1244 | 1316 | ||
| 1317 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1318 | |||
| 1245 | try testWithAllSupportedPathTypes(struct { | 1319 | try testWithAllSupportedPathTypes(struct { |
| 1246 | fn impl(ctx: *TestContext) !void { | 1320 | fn impl(ctx: *TestContext) !void { |
| 1247 | const filename = try ctx.transformPath("file_nonblocking_lock_test.txt"); | 1321 | const filename = try ctx.transformPath("file_nonblocking_lock_test.txt"); |
| ... | @@ -1258,6 +1332,8 @@ test "open file with exclusive nonblocking lock twice" { | ... | @@ -1258,6 +1332,8 @@ test "open file with exclusive nonblocking lock twice" { |
| 1258 | test "open file with shared and exclusive nonblocking lock" { | 1332 | test "open file with shared and exclusive nonblocking lock" { |
| 1259 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 1333 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 1260 | 1334 | ||
| 1335 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1336 | |||
| 1261 | try testWithAllSupportedPathTypes(struct { | 1337 | try testWithAllSupportedPathTypes(struct { |
| 1262 | fn impl(ctx: *TestContext) !void { | 1338 | fn impl(ctx: *TestContext) !void { |
| 1263 | const filename = try ctx.transformPath("file_nonblocking_lock_test.txt"); | 1339 | const filename = try ctx.transformPath("file_nonblocking_lock_test.txt"); |
| ... | @@ -1274,6 +1350,8 @@ test "open file with shared and exclusive nonblocking lock" { | ... | @@ -1274,6 +1350,8 @@ test "open file with shared and exclusive nonblocking lock" { |
| 1274 | test "open file with exclusive and shared nonblocking lock" { | 1350 | test "open file with exclusive and shared nonblocking lock" { |
| 1275 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 1351 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 1276 | 1352 | ||
| 1353 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1354 | |||
| 1277 | try testWithAllSupportedPathTypes(struct { | 1355 | try testWithAllSupportedPathTypes(struct { |
| 1278 | fn impl(ctx: *TestContext) !void { | 1356 | fn impl(ctx: *TestContext) !void { |
| 1279 | const filename = try ctx.transformPath("file_nonblocking_lock_test.txt"); | 1357 | const filename = try ctx.transformPath("file_nonblocking_lock_test.txt"); |
| ... | @@ -1288,6 +1366,8 @@ test "open file with exclusive and shared nonblocking lock" { | ... | @@ -1288,6 +1366,8 @@ test "open file with exclusive and shared nonblocking lock" { |
| 1288 | } | 1366 | } |
| 1289 | 1367 | ||
| 1290 | test "open file with exclusive lock twice, make sure second lock waits" { | 1368 | test "open file with exclusive lock twice, make sure second lock waits" { |
| 1369 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1370 | |||
| 1291 | if (builtin.single_threaded) return error.SkipZigTest; | 1371 | if (builtin.single_threaded) return error.SkipZigTest; |
| 1292 | 1372 | ||
| 1293 | if (std.io.is_async) { | 1373 | if (std.io.is_async) { |
| ... | @@ -1338,6 +1418,8 @@ test "open file with exclusive lock twice, make sure second lock waits" { | ... | @@ -1338,6 +1418,8 @@ test "open file with exclusive lock twice, make sure second lock waits" { |
| 1338 | test "open file with exclusive nonblocking lock twice (absolute paths)" { | 1418 | test "open file with exclusive nonblocking lock twice (absolute paths)" { |
| 1339 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 1419 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 1340 | 1420 | ||
| 1421 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1422 | |||
| 1341 | var random_bytes: [12]u8 = undefined; | 1423 | var random_bytes: [12]u8 = undefined; |
| 1342 | std.crypto.random.bytes(&random_bytes); | 1424 | std.crypto.random.bytes(&random_bytes); |
| 1343 | 1425 | ||
| ... | @@ -1372,6 +1454,8 @@ test "open file with exclusive nonblocking lock twice (absolute paths)" { | ... | @@ -1372,6 +1454,8 @@ test "open file with exclusive nonblocking lock twice (absolute paths)" { |
| 1372 | test "walker" { | 1454 | test "walker" { |
| 1373 | if (builtin.os.tag == .wasi and builtin.link_libc) return error.SkipZigTest; | 1455 | if (builtin.os.tag == .wasi and builtin.link_libc) return error.SkipZigTest; |
| 1374 | 1456 | ||
| 1457 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1458 | |||
| 1375 | var tmp = tmpIterableDir(.{}); | 1459 | var tmp = tmpIterableDir(.{}); |
| 1376 | defer tmp.cleanup(); | 1460 | defer tmp.cleanup(); |
| 1377 | 1461 | ||
| ... | @@ -1425,6 +1509,8 @@ test "walker" { | ... | @@ -1425,6 +1509,8 @@ test "walker" { |
| 1425 | test "walker without fully iterating" { | 1509 | test "walker without fully iterating" { |
| 1426 | if (builtin.os.tag == .wasi and builtin.link_libc) return error.SkipZigTest; | 1510 | if (builtin.os.tag == .wasi and builtin.link_libc) return error.SkipZigTest; |
| 1427 | 1511 | ||
| 1512 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1513 | |||
| 1428 | var tmp = tmpIterableDir(.{}); | 1514 | var tmp = tmpIterableDir(.{}); |
| 1429 | defer tmp.cleanup(); | 1515 | defer tmp.cleanup(); |
| 1430 | 1516 | ||
| ... | @@ -1448,6 +1534,8 @@ test "walker without fully iterating" { | ... | @@ -1448,6 +1534,8 @@ test "walker without fully iterating" { |
| 1448 | test ". and .. in fs.Dir functions" { | 1534 | test ". and .. in fs.Dir functions" { |
| 1449 | if (builtin.os.tag == .wasi and builtin.link_libc) return error.SkipZigTest; | 1535 | if (builtin.os.tag == .wasi and builtin.link_libc) return error.SkipZigTest; |
| 1450 | 1536 | ||
| 1537 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1538 | |||
| 1451 | if (builtin.os.tag == .windows and builtin.cpu.arch == .aarch64) { | 1539 | if (builtin.os.tag == .windows and builtin.cpu.arch == .aarch64) { |
| 1452 | // https://github.com/ziglang/zig/issues/17134 | 1540 | // https://github.com/ziglang/zig/issues/17134 |
| 1453 | return error.SkipZigTest; | 1541 | return error.SkipZigTest; |
| ... | @@ -1488,6 +1576,8 @@ test ". and .. in fs.Dir functions" { | ... | @@ -1488,6 +1576,8 @@ test ". and .. in fs.Dir functions" { |
| 1488 | test ". and .. in absolute functions" { | 1576 | test ". and .. in absolute functions" { |
| 1489 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 1577 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 1490 | 1578 | ||
| 1579 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1580 | |||
| 1491 | var tmp = tmpDir(.{}); | 1581 | var tmp = tmpDir(.{}); |
| 1492 | defer tmp.cleanup(); | 1582 | defer tmp.cleanup(); |
| 1493 | 1583 | ||
| ... | @@ -1533,6 +1623,8 @@ test "chmod" { | ... | @@ -1533,6 +1623,8 @@ test "chmod" { |
| 1533 | if (builtin.os.tag == .windows or builtin.os.tag == .wasi) | 1623 | if (builtin.os.tag == .windows or builtin.os.tag == .wasi) |
| 1534 | return error.SkipZigTest; | 1624 | return error.SkipZigTest; |
| 1535 | 1625 | ||
| 1626 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1627 | |||
| 1536 | var tmp = tmpDir(.{}); | 1628 | var tmp = tmpDir(.{}); |
| 1537 | defer tmp.cleanup(); | 1629 | defer tmp.cleanup(); |
| 1538 | 1630 | ||
| ... | @@ -1555,6 +1647,8 @@ test "chown" { | ... | @@ -1555,6 +1647,8 @@ test "chown" { |
| 1555 | if (builtin.os.tag == .windows or builtin.os.tag == .wasi) | 1647 | if (builtin.os.tag == .windows or builtin.os.tag == .wasi) |
| 1556 | return error.SkipZigTest; | 1648 | return error.SkipZigTest; |
| 1557 | 1649 | ||
| 1650 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1651 | |||
| 1558 | var tmp = tmpDir(.{}); | 1652 | var tmp = tmpDir(.{}); |
| 1559 | defer tmp.cleanup(); | 1653 | defer tmp.cleanup(); |
| 1560 | 1654 | ||
| ... | @@ -1570,6 +1664,8 @@ test "chown" { | ... | @@ -1570,6 +1664,8 @@ test "chown" { |
| 1570 | } | 1664 | } |
| 1571 | 1665 | ||
| 1572 | test "File.Metadata" { | 1666 | test "File.Metadata" { |
| 1667 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1668 | |||
| 1573 | var tmp = tmpDir(.{}); | 1669 | var tmp = tmpDir(.{}); |
| 1574 | defer tmp.cleanup(); | 1670 | defer tmp.cleanup(); |
| 1575 | 1671 | ||
| ... | @@ -1588,6 +1684,8 @@ test "File.Permissions" { | ... | @@ -1588,6 +1684,8 @@ test "File.Permissions" { |
| 1588 | if (builtin.os.tag == .wasi) | 1684 | if (builtin.os.tag == .wasi) |
| 1589 | return error.SkipZigTest; | 1685 | return error.SkipZigTest; |
| 1590 | 1686 | ||
| 1687 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1688 | |||
| 1591 | var tmp = tmpDir(.{}); | 1689 | var tmp = tmpDir(.{}); |
| 1592 | defer tmp.cleanup(); | 1690 | defer tmp.cleanup(); |
| 1593 | 1691 | ||
| ... | @@ -1614,6 +1712,8 @@ test "File.PermissionsUnix" { | ... | @@ -1614,6 +1712,8 @@ test "File.PermissionsUnix" { |
| 1614 | if (builtin.os.tag == .windows or builtin.os.tag == .wasi) | 1712 | if (builtin.os.tag == .windows or builtin.os.tag == .wasi) |
| 1615 | return error.SkipZigTest; | 1713 | return error.SkipZigTest; |
| 1616 | 1714 | ||
| 1715 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1716 | |||
| 1617 | var tmp = tmpDir(.{}); | 1717 | var tmp = tmpDir(.{}); |
| 1618 | defer tmp.cleanup(); | 1718 | defer tmp.cleanup(); |
| 1619 | 1719 | ||
| ... | @@ -1649,6 +1749,8 @@ test "delete a read-only file on windows" { | ... | @@ -1649,6 +1749,8 @@ test "delete a read-only file on windows" { |
| 1649 | if (builtin.os.tag != .windows) | 1749 | if (builtin.os.tag != .windows) |
| 1650 | return error.SkipZigTest; | 1750 | return error.SkipZigTest; |
| 1651 | 1751 | ||
| 1752 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1753 | |||
| 1652 | var tmp = testing.tmpDir(.{}); | 1754 | var tmp = testing.tmpDir(.{}); |
| 1653 | defer tmp.cleanup(); | 1755 | defer tmp.cleanup(); |
| 1654 | 1756 | ||
| ... | @@ -1679,6 +1781,8 @@ test "delete a read-only file on windows" { | ... | @@ -1679,6 +1781,8 @@ test "delete a read-only file on windows" { |
| 1679 | test "delete a setAsCwd directory on Windows" { | 1781 | test "delete a setAsCwd directory on Windows" { |
| 1680 | if (builtin.os.tag != .windows) return error.SkipZigTest; | 1782 | if (builtin.os.tag != .windows) return error.SkipZigTest; |
| 1681 | 1783 | ||
| 1784 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1785 | |||
| 1682 | var tmp = tmpDir(.{}); | 1786 | var tmp = tmpDir(.{}); |
| 1683 | // Set tmp dir as current working directory. | 1787 | // Set tmp dir as current working directory. |
| 1684 | try tmp.dir.setAsCwd(); | 1788 | try tmp.dir.setAsCwd(); |
lib/std/hash/xxhash.zig+18| ... | @@ -803,6 +803,8 @@ fn testExpect(comptime H: type, seed: anytype, input: []const u8, expected: u64) | ... | @@ -803,6 +803,8 @@ fn testExpect(comptime H: type, seed: anytype, input: []const u8, expected: u64) |
| 803 | } | 803 | } |
| 804 | 804 | ||
| 805 | test "xxhash3" { | 805 | test "xxhash3" { |
| 806 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 807 | |||
| 806 | const H = XxHash3; | 808 | const H = XxHash3; |
| 807 | // Non-Seeded Tests | 809 | // Non-Seeded Tests |
| 808 | try testExpect(H, 0, "", 0x2d06800538d394c2); | 810 | try testExpect(H, 0, "", 0x2d06800538d394c2); |
| ... | @@ -834,6 +836,8 @@ test "xxhash3" { | ... | @@ -834,6 +836,8 @@ test "xxhash3" { |
| 834 | } | 836 | } |
| 835 | 837 | ||
| 836 | test "xxhash3 smhasher" { | 838 | test "xxhash3 smhasher" { |
| 839 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 840 | |||
| 837 | const Test = struct { | 841 | const Test = struct { |
| 838 | fn do() !void { | 842 | fn do() !void { |
| 839 | try expectEqual(verify.smhasher(XxHash3.hash), 0x9a636405); | 843 | try expectEqual(verify.smhasher(XxHash3.hash), 0x9a636405); |
| ... | @@ -845,6 +849,8 @@ test "xxhash3 smhasher" { | ... | @@ -845,6 +849,8 @@ test "xxhash3 smhasher" { |
| 845 | } | 849 | } |
| 846 | 850 | ||
| 847 | test "xxhash3 iterative api" { | 851 | test "xxhash3 iterative api" { |
| 852 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 853 | |||
| 848 | const Test = struct { | 854 | const Test = struct { |
| 849 | fn do() !void { | 855 | fn do() !void { |
| 850 | try verify.iterativeApi(XxHash3); | 856 | try verify.iterativeApi(XxHash3); |
| ... | @@ -856,6 +862,8 @@ test "xxhash3 iterative api" { | ... | @@ -856,6 +862,8 @@ test "xxhash3 iterative api" { |
| 856 | } | 862 | } |
| 857 | 863 | ||
| 858 | test "xxhash64" { | 864 | test "xxhash64" { |
| 865 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 866 | |||
| 859 | const H = XxHash64; | 867 | const H = XxHash64; |
| 860 | try testExpect(H, 0, "", 0xef46db3751d8e999); | 868 | try testExpect(H, 0, "", 0xef46db3751d8e999); |
| 861 | try testExpect(H, 0, "a", 0xd24ec4f1a98c6e5b); | 869 | try testExpect(H, 0, "a", 0xd24ec4f1a98c6e5b); |
| ... | @@ -867,6 +875,8 @@ test "xxhash64" { | ... | @@ -867,6 +875,8 @@ test "xxhash64" { |
| 867 | } | 875 | } |
| 868 | 876 | ||
| 869 | test "xxhash64 smhasher" { | 877 | test "xxhash64 smhasher" { |
| 878 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 879 | |||
| 870 | const Test = struct { | 880 | const Test = struct { |
| 871 | fn do() !void { | 881 | fn do() !void { |
| 872 | try expectEqual(verify.smhasher(XxHash64.hash), 0x024B7CF4); | 882 | try expectEqual(verify.smhasher(XxHash64.hash), 0x024B7CF4); |
| ... | @@ -878,6 +888,8 @@ test "xxhash64 smhasher" { | ... | @@ -878,6 +888,8 @@ test "xxhash64 smhasher" { |
| 878 | } | 888 | } |
| 879 | 889 | ||
| 880 | test "xxhash64 iterative api" { | 890 | test "xxhash64 iterative api" { |
| 891 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 892 | |||
| 881 | const Test = struct { | 893 | const Test = struct { |
| 882 | fn do() !void { | 894 | fn do() !void { |
| 883 | try verify.iterativeApi(XxHash64); | 895 | try verify.iterativeApi(XxHash64); |
| ... | @@ -889,6 +901,8 @@ test "xxhash64 iterative api" { | ... | @@ -889,6 +901,8 @@ test "xxhash64 iterative api" { |
| 889 | } | 901 | } |
| 890 | 902 | ||
| 891 | test "xxhash32" { | 903 | test "xxhash32" { |
| 904 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 905 | |||
| 892 | const H = XxHash32; | 906 | const H = XxHash32; |
| 893 | 907 | ||
| 894 | try testExpect(H, 0, "", 0x02cc5d05); | 908 | try testExpect(H, 0, "", 0x02cc5d05); |
| ... | @@ -901,6 +915,8 @@ test "xxhash32" { | ... | @@ -901,6 +915,8 @@ test "xxhash32" { |
| 901 | } | 915 | } |
| 902 | 916 | ||
| 903 | test "xxhash32 smhasher" { | 917 | test "xxhash32 smhasher" { |
| 918 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 919 | |||
| 904 | const Test = struct { | 920 | const Test = struct { |
| 905 | fn do() !void { | 921 | fn do() !void { |
| 906 | try expectEqual(verify.smhasher(XxHash32.hash), 0xBA88B743); | 922 | try expectEqual(verify.smhasher(XxHash32.hash), 0xBA88B743); |
| ... | @@ -912,6 +928,8 @@ test "xxhash32 smhasher" { | ... | @@ -912,6 +928,8 @@ test "xxhash32 smhasher" { |
| 912 | } | 928 | } |
| 913 | 929 | ||
| 914 | test "xxhash32 iterative api" { | 930 | test "xxhash32 iterative api" { |
| 931 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 932 | |||
| 915 | const Test = struct { | 933 | const Test = struct { |
| 916 | fn do() !void { | 934 | fn do() !void { |
| 917 | try verify.iterativeApi(XxHash32); | 935 | try verify.iterativeApi(XxHash32); |
lib/std/http/Client.zig+6-2| ... | @@ -1,6 +1,7 @@ | ... | @@ -1,6 +1,7 @@ |
| 1 | //! Connecting and opening requests are threadsafe. Individual requests are not. | 1 | //! Connecting and opening requests are threadsafe. Individual requests are not. |
| 2 | 2 | ||
| 3 | const std = @import("../std.zig"); | 3 | const std = @import("../std.zig"); |
| 4 | const builtin = @import("builtin"); | ||
| 4 | const testing = std.testing; | 5 | const testing = std.testing; |
| 5 | const http = std.http; | 6 | const http = std.http; |
| 6 | const mem = std.mem; | 7 | const mem = std.mem; |
| ... | @@ -427,6 +428,8 @@ pub const Response = struct { | ... | @@ -427,6 +428,8 @@ pub const Response = struct { |
| 427 | } | 428 | } |
| 428 | 429 | ||
| 429 | test parseInt3 { | 430 | test parseInt3 { |
| 431 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 432 | |||
| 430 | const expectEqual = testing.expectEqual; | 433 | const expectEqual = testing.expectEqual; |
| 431 | try expectEqual(@as(u10, 0), parseInt3("000".*)); | 434 | try expectEqual(@as(u10, 0), parseInt3("000".*)); |
| 432 | try expectEqual(@as(u10, 418), parseInt3("418".*)); | 435 | try expectEqual(@as(u10, 418), parseInt3("418".*)); |
| ... | @@ -585,7 +588,7 @@ pub const Request = struct { | ... | @@ -585,7 +588,7 @@ pub const Request = struct { |
| 585 | 588 | ||
| 586 | if (!req.headers.contains("user-agent")) { | 589 | if (!req.headers.contains("user-agent")) { |
| 587 | try w.writeAll("User-Agent: zig/"); | 590 | try w.writeAll("User-Agent: zig/"); |
| 588 | try w.writeAll(@import("builtin").zig_version_string); | 591 | try w.writeAll(builtin.zig_version_string); |
| 589 | try w.writeAll(" (std.http)\r\n"); | 592 | try w.writeAll(" (std.http)\r\n"); |
| 590 | } | 593 | } |
| 591 | 594 | ||
| ... | @@ -1249,7 +1252,6 @@ pub fn fetch(client: *Client, allocator: Allocator, options: FetchOptions) !Fetc | ... | @@ -1249,7 +1252,6 @@ pub fn fetch(client: *Client, allocator: Allocator, options: FetchOptions) !Fetc |
| 1249 | } | 1252 | } |
| 1250 | 1253 | ||
| 1251 | test { | 1254 | test { |
| 1252 | const builtin = @import("builtin"); | ||
| 1253 | const native_endian = comptime builtin.cpu.arch.endian(); | 1255 | const native_endian = comptime builtin.cpu.arch.endian(); |
| 1254 | if (builtin.zig_backend == .stage2_llvm and native_endian == .Big) { | 1256 | if (builtin.zig_backend == .stage2_llvm and native_endian == .Big) { |
| 1255 | // https://github.com/ziglang/zig/issues/13782 | 1257 | // https://github.com/ziglang/zig/issues/13782 |
| ... | @@ -1258,5 +1260,7 @@ test { | ... | @@ -1258,5 +1260,7 @@ test { |
| 1258 | 1260 | ||
| 1259 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 1261 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 1260 | 1262 | ||
| 1263 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1264 | |||
| 1261 | std.testing.refAllDecls(@This()); | 1265 | std.testing.refAllDecls(@This()); |
| 1262 | } | 1266 | } |
lib/std/http/Server.zig+2| ... | @@ -725,6 +725,8 @@ test "HTTP server handles a chunked transfer coding request" { | ... | @@ -725,6 +725,8 @@ test "HTTP server handles a chunked transfer coding request" { |
| 725 | return error.SkipZigTest; | 725 | return error.SkipZigTest; |
| 726 | } | 726 | } |
| 727 | 727 | ||
| 728 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 729 | |||
| 728 | const native_endian = comptime builtin.cpu.arch.endian(); | 730 | const native_endian = comptime builtin.cpu.arch.endian(); |
| 729 | if (builtin.zig_backend == .stage2_llvm and native_endian == .Big) { | 731 | if (builtin.zig_backend == .stage2_llvm and native_endian == .Big) { |
| 730 | // https://github.com/ziglang/zig/issues/13782 | 732 | // https://github.com/ziglang/zig/issues/13782 |
lib/std/io/multi_writer.zig+1| ... | @@ -36,6 +36,7 @@ pub fn multiWriter(streams: anytype) MultiWriter(@TypeOf(streams)) { | ... | @@ -36,6 +36,7 @@ pub fn multiWriter(streams: anytype) MultiWriter(@TypeOf(streams)) { |
| 36 | const testing = std.testing; | 36 | const testing = std.testing; |
| 37 | 37 | ||
| 38 | test "MultiWriter" { | 38 | test "MultiWriter" { |
| 39 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 39 | var tmp = testing.tmpDir(.{}); | 40 | var tmp = testing.tmpDir(.{}); |
| 40 | defer tmp.cleanup(); | 41 | defer tmp.cleanup(); |
| 41 | var f = try tmp.dir.createFile("t.txt", .{}); | 42 | var f = try tmp.dir.createFile("t.txt", .{}); |
lib/std/io/test.zig+10| ... | @@ -15,6 +15,8 @@ const native_endian = builtin.target.cpu.arch.endian(); | ... | @@ -15,6 +15,8 @@ const native_endian = builtin.target.cpu.arch.endian(); |
| 15 | const tmpDir = std.testing.tmpDir; | 15 | const tmpDir = std.testing.tmpDir; |
| 16 | 16 | ||
| 17 | test "write a file, read it, then delete it" { | 17 | test "write a file, read it, then delete it" { |
| 18 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 19 | |||
| 18 | var tmp = tmpDir(.{}); | 20 | var tmp = tmpDir(.{}); |
| 19 | defer tmp.cleanup(); | 21 | defer tmp.cleanup(); |
| 20 | 22 | ||
| ... | @@ -61,6 +63,8 @@ test "write a file, read it, then delete it" { | ... | @@ -61,6 +63,8 @@ test "write a file, read it, then delete it" { |
| 61 | } | 63 | } |
| 62 | 64 | ||
| 63 | test "BitStreams with File Stream" { | 65 | test "BitStreams with File Stream" { |
| 66 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 67 | |||
| 64 | var tmp = tmpDir(.{}); | 68 | var tmp = tmpDir(.{}); |
| 65 | defer tmp.cleanup(); | 69 | defer tmp.cleanup(); |
| 66 | 70 | ||
| ... | @@ -106,6 +110,8 @@ test "BitStreams with File Stream" { | ... | @@ -106,6 +110,8 @@ test "BitStreams with File Stream" { |
| 106 | } | 110 | } |
| 107 | 111 | ||
| 108 | test "File seek ops" { | 112 | test "File seek ops" { |
| 113 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 114 | |||
| 109 | var tmp = tmpDir(.{}); | 115 | var tmp = tmpDir(.{}); |
| 110 | defer tmp.cleanup(); | 116 | defer tmp.cleanup(); |
| 111 | 117 | ||
| ... | @@ -133,6 +139,8 @@ test "File seek ops" { | ... | @@ -133,6 +139,8 @@ test "File seek ops" { |
| 133 | } | 139 | } |
| 134 | 140 | ||
| 135 | test "setEndPos" { | 141 | test "setEndPos" { |
| 142 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 143 | |||
| 136 | var tmp = tmpDir(.{}); | 144 | var tmp = tmpDir(.{}); |
| 137 | defer tmp.cleanup(); | 145 | defer tmp.cleanup(); |
| 138 | 146 | ||
| ... | @@ -159,6 +167,8 @@ test "setEndPos" { | ... | @@ -159,6 +167,8 @@ test "setEndPos" { |
| 159 | } | 167 | } |
| 160 | 168 | ||
| 161 | test "updateTimes" { | 169 | test "updateTimes" { |
| 170 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 171 | |||
| 162 | var tmp = tmpDir(.{}); | 172 | var tmp = tmpDir(.{}); |
| 163 | defer tmp.cleanup(); | 173 | defer tmp.cleanup(); |
| 164 | 174 |
lib/std/json.zig+5| ... | @@ -9,6 +9,7 @@ | ... | @@ -9,6 +9,7 @@ |
| 9 | //! The low-level `writeStream` emits syntax-conformant JSON tokens to a `std.io.Writer`. | 9 | //! The low-level `writeStream` emits syntax-conformant JSON tokens to a `std.io.Writer`. |
| 10 | //! The high-level `stringify` serializes a Zig or `Value` type into JSON. | 10 | //! The high-level `stringify` serializes a Zig or `Value` type into JSON. |
| 11 | 11 | ||
| 12 | const builtin = @import("builtin"); | ||
| 12 | const testing = @import("std").testing; | 13 | const testing = @import("std").testing; |
| 13 | const ArrayList = @import("std").ArrayList; | 14 | const ArrayList = @import("std").ArrayList; |
| 14 | 15 | ||
| ... | @@ -23,6 +24,8 @@ test Scanner { | ... | @@ -23,6 +24,8 @@ test Scanner { |
| 23 | } | 24 | } |
| 24 | 25 | ||
| 25 | test parseFromSlice { | 26 | test parseFromSlice { |
| 27 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 28 | |||
| 26 | var parsed_str = try parseFromSlice([]const u8, testing.allocator, "\"a\\u0020b\"", .{}); | 29 | var parsed_str = try parseFromSlice([]const u8, testing.allocator, "\"a\\u0020b\"", .{}); |
| 27 | defer parsed_str.deinit(); | 30 | defer parsed_str.deinit(); |
| 28 | try testing.expectEqualSlices(u8, "a b", parsed_str.value); | 31 | try testing.expectEqualSlices(u8, "a b", parsed_str.value); |
| ... | @@ -58,6 +61,8 @@ test writeStream { | ... | @@ -58,6 +61,8 @@ test writeStream { |
| 58 | } | 61 | } |
| 59 | 62 | ||
| 60 | test stringify { | 63 | test stringify { |
| 64 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 65 | |||
| 61 | var out = ArrayList(u8).init(testing.allocator); | 66 | var out = ArrayList(u8).init(testing.allocator); |
| 62 | defer out.deinit(); | 67 | defer out.deinit(); |
| 63 | 68 |
lib/std/json/dynamic_test.zig+25| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const mem = std.mem; | 3 | const mem = std.mem; |
| 3 | const testing = std.testing; | 4 | const testing = std.testing; |
| 4 | const ArenaAllocator = std.heap.ArenaAllocator; | 5 | const ArenaAllocator = std.heap.ArenaAllocator; |
| ... | @@ -18,6 +19,8 @@ const jsonReader = @import("scanner.zig").reader; | ... | @@ -18,6 +19,8 @@ const jsonReader = @import("scanner.zig").reader; |
| 18 | const JsonReader = @import("scanner.zig").Reader; | 19 | const JsonReader = @import("scanner.zig").Reader; |
| 19 | 20 | ||
| 20 | test "json.parser.dynamic" { | 21 | test "json.parser.dynamic" { |
| 22 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 23 | |||
| 21 | const s = | 24 | const s = |
| 22 | \\{ | 25 | \\{ |
| 23 | \\ "Image": { | 26 | \\ "Image": { |
| ... | @@ -72,6 +75,8 @@ test "json.parser.dynamic" { | ... | @@ -72,6 +75,8 @@ test "json.parser.dynamic" { |
| 72 | 75 | ||
| 73 | const writeStream = @import("./stringify.zig").writeStream; | 76 | const writeStream = @import("./stringify.zig").writeStream; |
| 74 | test "write json then parse it" { | 77 | test "write json then parse it" { |
| 78 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 79 | |||
| 75 | var out_buffer: [1000]u8 = undefined; | 80 | var out_buffer: [1000]u8 = undefined; |
| 76 | 81 | ||
| 77 | var fixed_buffer_stream = std.io.fixedBufferStream(&out_buffer); | 82 | var fixed_buffer_stream = std.io.fixedBufferStream(&out_buffer); |
| ... | @@ -120,12 +125,16 @@ fn testParse(allocator: std.mem.Allocator, json_str: []const u8) !Value { | ... | @@ -120,12 +125,16 @@ fn testParse(allocator: std.mem.Allocator, json_str: []const u8) !Value { |
| 120 | } | 125 | } |
| 121 | 126 | ||
| 122 | test "parsing empty string gives appropriate error" { | 127 | test "parsing empty string gives appropriate error" { |
| 128 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 129 | |||
| 123 | var arena_allocator = std.heap.ArenaAllocator.init(std.testing.allocator); | 130 | var arena_allocator = std.heap.ArenaAllocator.init(std.testing.allocator); |
| 124 | defer arena_allocator.deinit(); | 131 | defer arena_allocator.deinit(); |
| 125 | try testing.expectError(error.UnexpectedEndOfInput, testParse(arena_allocator.allocator(), "")); | 132 | try testing.expectError(error.UnexpectedEndOfInput, testParse(arena_allocator.allocator(), "")); |
| 126 | } | 133 | } |
| 127 | 134 | ||
| 128 | test "Value.array allocator should still be usable after parsing" { | 135 | test "Value.array allocator should still be usable after parsing" { |
| 136 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 137 | |||
| 129 | var parsed = try parseFromSlice(Value, std.testing.allocator, "[]", .{}); | 138 | var parsed = try parseFromSlice(Value, std.testing.allocator, "[]", .{}); |
| 130 | defer parsed.deinit(); | 139 | defer parsed.deinit(); |
| 131 | 140 | ||
| ... | @@ -138,6 +147,8 @@ test "Value.array allocator should still be usable after parsing" { | ... | @@ -138,6 +147,8 @@ test "Value.array allocator should still be usable after parsing" { |
| 138 | } | 147 | } |
| 139 | 148 | ||
| 140 | test "integer after float has proper type" { | 149 | test "integer after float has proper type" { |
| 150 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 151 | |||
| 141 | var arena_allocator = std.heap.ArenaAllocator.init(std.testing.allocator); | 152 | var arena_allocator = std.heap.ArenaAllocator.init(std.testing.allocator); |
| 142 | defer arena_allocator.deinit(); | 153 | defer arena_allocator.deinit(); |
| 143 | const parsed = try testParse(arena_allocator.allocator(), | 154 | const parsed = try testParse(arena_allocator.allocator(), |
| ... | @@ -150,6 +161,8 @@ test "integer after float has proper type" { | ... | @@ -150,6 +161,8 @@ test "integer after float has proper type" { |
| 150 | } | 161 | } |
| 151 | 162 | ||
| 152 | test "escaped characters" { | 163 | test "escaped characters" { |
| 164 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 165 | |||
| 153 | var arena_allocator = std.heap.ArenaAllocator.init(std.testing.allocator); | 166 | var arena_allocator = std.heap.ArenaAllocator.init(std.testing.allocator); |
| 154 | defer arena_allocator.deinit(); | 167 | defer arena_allocator.deinit(); |
| 155 | const input = | 168 | const input = |
| ... | @@ -182,6 +195,8 @@ test "escaped characters" { | ... | @@ -182,6 +195,8 @@ test "escaped characters" { |
| 182 | } | 195 | } |
| 183 | 196 | ||
| 184 | test "Value.jsonStringify" { | 197 | test "Value.jsonStringify" { |
| 198 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 199 | |||
| 185 | var vals = [_]Value{ | 200 | var vals = [_]Value{ |
| 186 | .{ .integer = 1 }, | 201 | .{ .integer = 1 }, |
| 187 | .{ .integer = 2 }, | 202 | .{ .integer = 2 }, |
| ... | @@ -229,6 +244,8 @@ test "Value.jsonStringify" { | ... | @@ -229,6 +244,8 @@ test "Value.jsonStringify" { |
| 229 | } | 244 | } |
| 230 | 245 | ||
| 231 | test "parseFromValue(std.json.Value,...)" { | 246 | test "parseFromValue(std.json.Value,...)" { |
| 247 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 248 | |||
| 232 | const str = | 249 | const str = |
| 233 | \\{ | 250 | \\{ |
| 234 | \\ "int": 32, | 251 | \\ "int": 32, |
| ... | @@ -246,6 +263,8 @@ test "parseFromValue(std.json.Value,...)" { | ... | @@ -246,6 +263,8 @@ test "parseFromValue(std.json.Value,...)" { |
| 246 | } | 263 | } |
| 247 | 264 | ||
| 248 | test "polymorphic parsing" { | 265 | test "polymorphic parsing" { |
| 266 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 267 | |||
| 249 | if (true) return error.SkipZigTest; // See https://github.com/ziglang/zig/issues/16108 | 268 | if (true) return error.SkipZigTest; // See https://github.com/ziglang/zig/issues/16108 |
| 250 | const doc = | 269 | const doc = |
| 251 | \\{ "type": "div", | 270 | \\{ "type": "div", |
| ... | @@ -291,6 +310,8 @@ test "polymorphic parsing" { | ... | @@ -291,6 +310,8 @@ test "polymorphic parsing" { |
| 291 | } | 310 | } |
| 292 | 311 | ||
| 293 | test "long object value" { | 312 | test "long object value" { |
| 313 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 314 | |||
| 294 | const value = "01234567890123456789"; | 315 | const value = "01234567890123456789"; |
| 295 | const doc = "{\"key\":\"" ++ value ++ "\"}"; | 316 | const doc = "{\"key\":\"" ++ value ++ "\"}"; |
| 296 | var fbs = std.io.fixedBufferStream(doc); | 317 | var fbs = std.io.fixedBufferStream(doc); |
| ... | @@ -303,6 +324,8 @@ test "long object value" { | ... | @@ -303,6 +324,8 @@ test "long object value" { |
| 303 | } | 324 | } |
| 304 | 325 | ||
| 305 | test "ParseOptions.max_value_len" { | 326 | test "ParseOptions.max_value_len" { |
| 327 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 328 | |||
| 306 | var arena = ArenaAllocator.init(testing.allocator); | 329 | var arena = ArenaAllocator.init(testing.allocator); |
| 307 | defer arena.deinit(); | 330 | defer arena.deinit(); |
| 308 | 331 | ||
| ... | @@ -317,6 +340,8 @@ test "ParseOptions.max_value_len" { | ... | @@ -317,6 +340,8 @@ test "ParseOptions.max_value_len" { |
| 317 | } | 340 | } |
| 318 | 341 | ||
| 319 | test "many object keys" { | 342 | test "many object keys" { |
| 343 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 344 | |||
| 320 | const doc = | 345 | const doc = |
| 321 | \\{ | 346 | \\{ |
| 322 | \\ "k1": "v1", | 347 | \\ "k1": "v1", |
lib/std/json/hashmap_test.zig+13| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const testing = std.testing; | 3 | const testing = std.testing; |
| 3 | 4 | ||
| 4 | const ArrayHashMap = @import("hashmap.zig").ArrayHashMap; | 5 | const ArrayHashMap = @import("hashmap.zig").ArrayHashMap; |
| ... | @@ -18,6 +19,8 @@ const T = struct { | ... | @@ -18,6 +19,8 @@ const T = struct { |
| 18 | }; | 19 | }; |
| 19 | 20 | ||
| 20 | test "parse json hashmap" { | 21 | test "parse json hashmap" { |
| 22 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 23 | |||
| 21 | const doc = | 24 | const doc = |
| 22 | \\{ | 25 | \\{ |
| 23 | \\ "abc": {"i": 0, "s": "d"}, | 26 | \\ "abc": {"i": 0, "s": "d"}, |
| ... | @@ -33,6 +36,8 @@ test "parse json hashmap" { | ... | @@ -33,6 +36,8 @@ test "parse json hashmap" { |
| 33 | } | 36 | } |
| 34 | 37 | ||
| 35 | test "parse json hashmap while streaming" { | 38 | test "parse json hashmap while streaming" { |
| 39 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 40 | |||
| 36 | const doc = | 41 | const doc = |
| 37 | \\{ | 42 | \\{ |
| 38 | \\ "abc": {"i": 0, "s": "d"}, | 43 | \\ "abc": {"i": 0, "s": "d"}, |
| ... | @@ -58,6 +63,8 @@ test "parse json hashmap while streaming" { | ... | @@ -58,6 +63,8 @@ test "parse json hashmap while streaming" { |
| 58 | } | 63 | } |
| 59 | 64 | ||
| 60 | test "parse json hashmap duplicate fields" { | 65 | test "parse json hashmap duplicate fields" { |
| 66 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 67 | |||
| 61 | var arena = std.heap.ArenaAllocator.init(std.testing.allocator); | 68 | var arena = std.heap.ArenaAllocator.init(std.testing.allocator); |
| 62 | defer arena.deinit(); | 69 | defer arena.deinit(); |
| 63 | 70 | ||
| ... | @@ -86,6 +93,8 @@ test "parse json hashmap duplicate fields" { | ... | @@ -86,6 +93,8 @@ test "parse json hashmap duplicate fields" { |
| 86 | } | 93 | } |
| 87 | 94 | ||
| 88 | test "stringify json hashmap" { | 95 | test "stringify json hashmap" { |
| 96 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 97 | |||
| 89 | var value = ArrayHashMap(T){}; | 98 | var value = ArrayHashMap(T){}; |
| 90 | defer value.deinit(testing.allocator); | 99 | defer value.deinit(testing.allocator); |
| 91 | { | 100 | { |
| ... | @@ -123,6 +132,8 @@ test "stringify json hashmap" { | ... | @@ -123,6 +132,8 @@ test "stringify json hashmap" { |
| 123 | } | 132 | } |
| 124 | 133 | ||
| 125 | test "stringify json hashmap whitespace" { | 134 | test "stringify json hashmap whitespace" { |
| 135 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 136 | |||
| 126 | var value = ArrayHashMap(T){}; | 137 | var value = ArrayHashMap(T){}; |
| 127 | defer value.deinit(testing.allocator); | 138 | defer value.deinit(testing.allocator); |
| 128 | try value.map.put(testing.allocator, "abc", .{ .i = 0, .s = "d" }); | 139 | try value.map.put(testing.allocator, "abc", .{ .i = 0, .s = "d" }); |
| ... | @@ -147,6 +158,8 @@ test "stringify json hashmap whitespace" { | ... | @@ -147,6 +158,8 @@ test "stringify json hashmap whitespace" { |
| 147 | } | 158 | } |
| 148 | 159 | ||
| 149 | test "json parse from value hashmap" { | 160 | test "json parse from value hashmap" { |
| 161 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 162 | |||
| 150 | const doc = | 163 | const doc = |
| 151 | \\{ | 164 | \\{ |
| 152 | \\ "abc": {"i": 0, "s": "d"}, | 165 | \\ "abc": {"i": 0, "s": "d"}, |
lib/std/json/static_test.zig+49| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const testing = std.testing; | 3 | const testing = std.testing; |
| 3 | const ArenaAllocator = std.heap.ArenaAllocator; | 4 | const ArenaAllocator = std.heap.ArenaAllocator; |
| 4 | const Allocator = std.mem.Allocator; | 5 | const Allocator = std.mem.Allocator; |
| ... | @@ -371,6 +372,8 @@ test "test all types" { | ... | @@ -371,6 +372,8 @@ test "test all types" { |
| 371 | } | 372 | } |
| 372 | 373 | ||
| 373 | test "parse" { | 374 | test "parse" { |
| 375 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 376 | |||
| 374 | try testing.expectEqual(false, try parseFromSliceLeaky(bool, testing.allocator, "false", .{})); | 377 | try testing.expectEqual(false, try parseFromSliceLeaky(bool, testing.allocator, "false", .{})); |
| 375 | try testing.expectEqual(true, try parseFromSliceLeaky(bool, testing.allocator, "true", .{})); | 378 | try testing.expectEqual(true, try parseFromSliceLeaky(bool, testing.allocator, "true", .{})); |
| 376 | try testing.expectEqual(@as(u1, 1), try parseFromSliceLeaky(u1, testing.allocator, "1", .{})); | 379 | try testing.expectEqual(@as(u1, 1), try parseFromSliceLeaky(u1, testing.allocator, "1", .{})); |
| ... | @@ -389,6 +392,8 @@ test "parse" { | ... | @@ -389,6 +392,8 @@ test "parse" { |
| 389 | } | 392 | } |
| 390 | 393 | ||
| 391 | test "parse into enum" { | 394 | test "parse into enum" { |
| 395 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 396 | |||
| 392 | const T = enum(u32) { | 397 | const T = enum(u32) { |
| 393 | Foo = 42, | 398 | Foo = 42, |
| 394 | Bar, | 399 | Bar, |
| ... | @@ -402,6 +407,8 @@ test "parse into enum" { | ... | @@ -402,6 +407,8 @@ test "parse into enum" { |
| 402 | } | 407 | } |
| 403 | 408 | ||
| 404 | test "parse into that allocates a slice" { | 409 | test "parse into that allocates a slice" { |
| 410 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 411 | |||
| 405 | { | 412 | { |
| 406 | // string as string | 413 | // string as string |
| 407 | const parsed = try parseFromSlice([]u8, testing.allocator, "\"foo\"", .{}); | 414 | const parsed = try parseFromSlice([]u8, testing.allocator, "\"foo\"", .{}); |
| ... | @@ -422,12 +429,16 @@ test "parse into that allocates a slice" { | ... | @@ -422,12 +429,16 @@ test "parse into that allocates a slice" { |
| 422 | } | 429 | } |
| 423 | 430 | ||
| 424 | test "parse into sentinel slice" { | 431 | test "parse into sentinel slice" { |
| 432 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 433 | |||
| 425 | const parsed = try parseFromSlice([:0]const u8, testing.allocator, "\"\\n\"", .{}); | 434 | const parsed = try parseFromSlice([:0]const u8, testing.allocator, "\"\\n\"", .{}); |
| 426 | defer parsed.deinit(); | 435 | defer parsed.deinit(); |
| 427 | try testing.expect(std.mem.eql(u8, parsed.value, "\n")); | 436 | try testing.expect(std.mem.eql(u8, parsed.value, "\n")); |
| 428 | } | 437 | } |
| 429 | 438 | ||
| 430 | test "parse into tagged union" { | 439 | test "parse into tagged union" { |
| 440 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 441 | |||
| 431 | const T = union(enum) { | 442 | const T = union(enum) { |
| 432 | nothing, | 443 | nothing, |
| 433 | int: i32, | 444 | int: i32, |
| ... | @@ -443,6 +454,8 @@ test "parse into tagged union" { | ... | @@ -443,6 +454,8 @@ test "parse into tagged union" { |
| 443 | } | 454 | } |
| 444 | 455 | ||
| 445 | test "parse into tagged union errors" { | 456 | test "parse into tagged union errors" { |
| 457 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 458 | |||
| 446 | const T = union(enum) { | 459 | const T = union(enum) { |
| 447 | nothing, | 460 | nothing, |
| 448 | int: i32, | 461 | int: i32, |
| ... | @@ -465,6 +478,8 @@ test "parse into tagged union errors" { | ... | @@ -465,6 +478,8 @@ test "parse into tagged union errors" { |
| 465 | } | 478 | } |
| 466 | 479 | ||
| 467 | test "parse into struct with no fields" { | 480 | test "parse into struct with no fields" { |
| 481 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 482 | |||
| 468 | const T = struct {}; | 483 | const T = struct {}; |
| 469 | const parsed = try parseFromSlice(T, testing.allocator, "{}", .{}); | 484 | const parsed = try parseFromSlice(T, testing.allocator, "{}", .{}); |
| 470 | defer parsed.deinit(); | 485 | defer parsed.deinit(); |
| ... | @@ -474,6 +489,8 @@ test "parse into struct with no fields" { | ... | @@ -474,6 +489,8 @@ test "parse into struct with no fields" { |
| 474 | const test_const_value: usize = 123; | 489 | const test_const_value: usize = 123; |
| 475 | 490 | ||
| 476 | test "parse into struct with default const pointer field" { | 491 | test "parse into struct with default const pointer field" { |
| 492 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 493 | |||
| 477 | const T = struct { a: *const usize = &test_const_value }; | 494 | const T = struct { a: *const usize = &test_const_value }; |
| 478 | const parsed = try parseFromSlice(T, testing.allocator, "{}", .{}); | 495 | const parsed = try parseFromSlice(T, testing.allocator, "{}", .{}); |
| 479 | defer parsed.deinit(); | 496 | defer parsed.deinit(); |
| ... | @@ -489,6 +506,8 @@ const test_default_str_slice: [2][]const u8 = [_][]const u8{ | ... | @@ -489,6 +506,8 @@ const test_default_str_slice: [2][]const u8 = [_][]const u8{ |
| 489 | }; | 506 | }; |
| 490 | 507 | ||
| 491 | test "freeing parsed structs with pointers to default values" { | 508 | test "freeing parsed structs with pointers to default values" { |
| 509 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 510 | |||
| 492 | const T = struct { | 511 | const T = struct { |
| 493 | int: *const usize = &test_default_usize, | 512 | int: *const usize = &test_default_usize, |
| 494 | int_ptr: *allowzero align(1) const usize = test_default_usize_ptr, | 513 | int_ptr: *allowzero align(1) const usize = test_default_usize_ptr, |
| ... | @@ -502,11 +521,15 @@ test "freeing parsed structs with pointers to default values" { | ... | @@ -502,11 +521,15 @@ test "freeing parsed structs with pointers to default values" { |
| 502 | } | 521 | } |
| 503 | 522 | ||
| 504 | test "parse into struct where destination and source lengths mismatch" { | 523 | test "parse into struct where destination and source lengths mismatch" { |
| 524 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 525 | |||
| 505 | const T = struct { a: [2]u8 }; | 526 | const T = struct { a: [2]u8 }; |
| 506 | try testing.expectError(error.LengthMismatch, parseFromSlice(T, testing.allocator, "{\"a\": \"bbb\"}", .{})); | 527 | try testing.expectError(error.LengthMismatch, parseFromSlice(T, testing.allocator, "{\"a\": \"bbb\"}", .{})); |
| 507 | } | 528 | } |
| 508 | 529 | ||
| 509 | test "parse into struct with misc fields" { | 530 | test "parse into struct with misc fields" { |
| 531 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 532 | |||
| 510 | const T = struct { | 533 | const T = struct { |
| 511 | int: i64, | 534 | int: i64, |
| 512 | float: f64, | 535 | float: f64, |
| ... | @@ -582,6 +605,8 @@ test "parse into struct with misc fields" { | ... | @@ -582,6 +605,8 @@ test "parse into struct with misc fields" { |
| 582 | } | 605 | } |
| 583 | 606 | ||
| 584 | test "parse into struct with strings and arrays with sentinels" { | 607 | test "parse into struct with strings and arrays with sentinels" { |
| 608 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 609 | |||
| 585 | const T = struct { | 610 | const T = struct { |
| 586 | language: [:0]const u8, | 611 | language: [:0]const u8, |
| 587 | language_without_sentinel: []const u8, | 612 | language_without_sentinel: []const u8, |
| ... | @@ -610,6 +635,8 @@ test "parse into struct with strings and arrays with sentinels" { | ... | @@ -610,6 +635,8 @@ test "parse into struct with strings and arrays with sentinels" { |
| 610 | } | 635 | } |
| 611 | 636 | ||
| 612 | test "parse into struct with duplicate field" { | 637 | test "parse into struct with duplicate field" { |
| 638 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 639 | |||
| 613 | const options_first = ParseOptions{ .duplicate_field_behavior = .use_first }; | 640 | const options_first = ParseOptions{ .duplicate_field_behavior = .use_first }; |
| 614 | const options_last = ParseOptions{ .duplicate_field_behavior = .use_last }; | 641 | const options_last = ParseOptions{ .duplicate_field_behavior = .use_last }; |
| 615 | 642 | ||
| ... | @@ -629,6 +656,8 @@ test "parse into struct with duplicate field" { | ... | @@ -629,6 +656,8 @@ test "parse into struct with duplicate field" { |
| 629 | } | 656 | } |
| 630 | 657 | ||
| 631 | test "parse into struct ignoring unknown fields" { | 658 | test "parse into struct ignoring unknown fields" { |
| 659 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 660 | |||
| 632 | const T = struct { | 661 | const T = struct { |
| 633 | int: i64, | 662 | int: i64, |
| 634 | language: []const u8, | 663 | language: []const u8, |
| ... | @@ -667,6 +696,8 @@ test "parse into struct ignoring unknown fields" { | ... | @@ -667,6 +696,8 @@ test "parse into struct ignoring unknown fields" { |
| 667 | } | 696 | } |
| 668 | 697 | ||
| 669 | test "parse into tuple" { | 698 | test "parse into tuple" { |
| 699 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 700 | |||
| 670 | const Union = union(enum) { | 701 | const Union = union(enum) { |
| 671 | char: u8, | 702 | char: u8, |
| 672 | float: f64, | 703 | float: f64, |
| ... | @@ -722,6 +753,8 @@ const ParseIntoRecursiveUnionDefinitionValue = union(enum) { | ... | @@ -722,6 +753,8 @@ const ParseIntoRecursiveUnionDefinitionValue = union(enum) { |
| 722 | }; | 753 | }; |
| 723 | 754 | ||
| 724 | test "parse into recursive union definition" { | 755 | test "parse into recursive union definition" { |
| 756 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 757 | |||
| 725 | const T = struct { | 758 | const T = struct { |
| 726 | values: ParseIntoRecursiveUnionDefinitionValue, | 759 | values: ParseIntoRecursiveUnionDefinitionValue, |
| 727 | }; | 760 | }; |
| ... | @@ -743,6 +776,8 @@ const ParseIntoDoubleRecursiveUnionValueSecond = union(enum) { | ... | @@ -743,6 +776,8 @@ const ParseIntoDoubleRecursiveUnionValueSecond = union(enum) { |
| 743 | }; | 776 | }; |
| 744 | 777 | ||
| 745 | test "parse into double recursive union definition" { | 778 | test "parse into double recursive union definition" { |
| 779 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 780 | |||
| 746 | const T = struct { | 781 | const T = struct { |
| 747 | values: ParseIntoDoubleRecursiveUnionValueFirst, | 782 | values: ParseIntoDoubleRecursiveUnionValueFirst, |
| 748 | }; | 783 | }; |
| ... | @@ -754,6 +789,8 @@ test "parse into double recursive union definition" { | ... | @@ -754,6 +789,8 @@ test "parse into double recursive union definition" { |
| 754 | } | 789 | } |
| 755 | 790 | ||
| 756 | test "parse exponential into int" { | 791 | test "parse exponential into int" { |
| 792 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 793 | |||
| 757 | const T = struct { int: i64 }; | 794 | const T = struct { int: i64 }; |
| 758 | const r = try parseFromSliceLeaky(T, testing.allocator, "{ \"int\": 4.2e2 }", .{}); | 795 | const r = try parseFromSliceLeaky(T, testing.allocator, "{ \"int\": 4.2e2 }", .{}); |
| 759 | try testing.expectEqual(@as(i64, 420), r.int); | 796 | try testing.expectEqual(@as(i64, 420), r.int); |
| ... | @@ -762,6 +799,8 @@ test "parse exponential into int" { | ... | @@ -762,6 +799,8 @@ test "parse exponential into int" { |
| 762 | } | 799 | } |
| 763 | 800 | ||
| 764 | test "parseFromTokenSource" { | 801 | test "parseFromTokenSource" { |
| 802 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 803 | |||
| 765 | { | 804 | { |
| 766 | var scanner = JsonScanner.initCompleteInput(testing.allocator, "123"); | 805 | var scanner = JsonScanner.initCompleteInput(testing.allocator, "123"); |
| 767 | defer scanner.deinit(); | 806 | defer scanner.deinit(); |
| ... | @@ -781,10 +820,14 @@ test "parseFromTokenSource" { | ... | @@ -781,10 +820,14 @@ test "parseFromTokenSource" { |
| 781 | } | 820 | } |
| 782 | 821 | ||
| 783 | test "max_value_len" { | 822 | test "max_value_len" { |
| 823 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 824 | |||
| 784 | try testing.expectError(error.ValueTooLong, parseFromSlice([]u8, testing.allocator, "\"0123456789\"", .{ .max_value_len = 5 })); | 825 | try testing.expectError(error.ValueTooLong, parseFromSlice([]u8, testing.allocator, "\"0123456789\"", .{ .max_value_len = 5 })); |
| 785 | } | 826 | } |
| 786 | 827 | ||
| 787 | test "parse into vector" { | 828 | test "parse into vector" { |
| 829 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 830 | |||
| 788 | const T = struct { | 831 | const T = struct { |
| 789 | vec_i32: @Vector(4, i32), | 832 | vec_i32: @Vector(4, i32), |
| 790 | vec_f32: @Vector(2, f32), | 833 | vec_f32: @Vector(2, f32), |
| ... | @@ -817,6 +860,8 @@ fn assertKey( | ... | @@ -817,6 +860,8 @@ fn assertKey( |
| 817 | } | 860 | } |
| 818 | } | 861 | } |
| 819 | test "json parse partial" { | 862 | test "json parse partial" { |
| 863 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 864 | |||
| 820 | const Inner = struct { | 865 | const Inner = struct { |
| 821 | num: u32, | 866 | num: u32, |
| 822 | yes: bool, | 867 | yes: bool, |
| ... | @@ -872,6 +917,8 @@ test "json parse partial" { | ... | @@ -872,6 +917,8 @@ test "json parse partial" { |
| 872 | } | 917 | } |
| 873 | 918 | ||
| 874 | test "json parse allocate when streaming" { | 919 | test "json parse allocate when streaming" { |
| 920 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 921 | |||
| 875 | const T = struct { | 922 | const T = struct { |
| 876 | not_const: []u8, | 923 | not_const: []u8, |
| 877 | is_const: []const u8, | 924 | is_const: []const u8, |
| ... | @@ -902,6 +949,8 @@ test "json parse allocate when streaming" { | ... | @@ -902,6 +949,8 @@ test "json parse allocate when streaming" { |
| 902 | } | 949 | } |
| 903 | 950 | ||
| 904 | test "parse at comptime" { | 951 | test "parse at comptime" { |
| 952 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 953 | |||
| 905 | const doc = | 954 | const doc = |
| 906 | \\{ | 955 | \\{ |
| 907 | \\ "vals": { | 956 | \\ "vals": { |
lib/std/json/stringify_test.zig+41| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const mem = std.mem; | 3 | const mem = std.mem; |
| 3 | const testing = std.testing; | 4 | const testing = std.testing; |
| 4 | 5 | ||
| ... | @@ -15,6 +16,8 @@ const writeStreamMaxDepth = @import("stringify.zig").writeStreamMaxDepth; | ... | @@ -15,6 +16,8 @@ const writeStreamMaxDepth = @import("stringify.zig").writeStreamMaxDepth; |
| 15 | const writeStreamArbitraryDepth = @import("stringify.zig").writeStreamArbitraryDepth; | 16 | const writeStreamArbitraryDepth = @import("stringify.zig").writeStreamArbitraryDepth; |
| 16 | 17 | ||
| 17 | test "json write stream" { | 18 | test "json write stream" { |
| 19 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 20 | |||
| 18 | var out_buf: [1024]u8 = undefined; | 21 | var out_buf: [1024]u8 = undefined; |
| 19 | var slice_stream = std.io.fixedBufferStream(&out_buf); | 22 | var slice_stream = std.io.fixedBufferStream(&out_buf); |
| 20 | const out = slice_stream.writer(); | 23 | const out = slice_stream.writer(); |
| ... | @@ -97,6 +100,8 @@ fn getJsonObject(allocator: std.mem.Allocator) !Value { | ... | @@ -97,6 +100,8 @@ fn getJsonObject(allocator: std.mem.Allocator) !Value { |
| 97 | } | 100 | } |
| 98 | 101 | ||
| 99 | test "stringify null optional fields" { | 102 | test "stringify null optional fields" { |
| 103 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 104 | |||
| 100 | const MyStruct = struct { | 105 | const MyStruct = struct { |
| 101 | optional: ?[]const u8 = null, | 106 | optional: ?[]const u8 = null, |
| 102 | required: []const u8 = "something", | 107 | required: []const u8 = "something", |
| ... | @@ -118,6 +123,8 @@ test "stringify null optional fields" { | ... | @@ -118,6 +123,8 @@ test "stringify null optional fields" { |
| 118 | } | 123 | } |
| 119 | 124 | ||
| 120 | test "stringify basic types" { | 125 | test "stringify basic types" { |
| 126 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 127 | |||
| 121 | try testStringify("false", false, .{}); | 128 | try testStringify("false", false, .{}); |
| 122 | try testStringify("true", true, .{}); | 129 | try testStringify("true", true, .{}); |
| 123 | try testStringify("null", @as(?u8, null), .{}); | 130 | try testStringify("null", @as(?u8, null), .{}); |
| ... | @@ -134,6 +141,8 @@ test "stringify basic types" { | ... | @@ -134,6 +141,8 @@ test "stringify basic types" { |
| 134 | } | 141 | } |
| 135 | 142 | ||
| 136 | test "stringify string" { | 143 | test "stringify string" { |
| 144 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 145 | |||
| 137 | try testStringify("\"hello\"", "hello", .{}); | 146 | try testStringify("\"hello\"", "hello", .{}); |
| 138 | try testStringify("\"with\\nescapes\\r\"", "with\nescapes\r", .{}); | 147 | try testStringify("\"with\\nescapes\\r\"", "with\nescapes\r", .{}); |
| 139 | try testStringify("\"with\\nescapes\\r\"", "with\nescapes\r", .{ .escape_unicode = true }); | 148 | try testStringify("\"with\\nescapes\\r\"", "with\nescapes\r", .{ .escape_unicode = true }); |
| ... | @@ -158,12 +167,16 @@ test "stringify string" { | ... | @@ -158,12 +167,16 @@ test "stringify string" { |
| 158 | } | 167 | } |
| 159 | 168 | ||
| 160 | test "stringify many-item sentinel-terminated string" { | 169 | test "stringify many-item sentinel-terminated string" { |
| 170 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 171 | |||
| 161 | try testStringify("\"hello\"", @as([*:0]const u8, "hello"), .{}); | 172 | try testStringify("\"hello\"", @as([*:0]const u8, "hello"), .{}); |
| 162 | try testStringify("\"with\\nescapes\\r\"", @as([*:0]const u8, "with\nescapes\r"), .{ .escape_unicode = true }); | 173 | try testStringify("\"with\\nescapes\\r\"", @as([*:0]const u8, "with\nescapes\r"), .{ .escape_unicode = true }); |
| 163 | try testStringify("\"with unicode\\u0001\"", @as([*:0]const u8, "with unicode\u{1}"), .{ .escape_unicode = true }); | 174 | try testStringify("\"with unicode\\u0001\"", @as([*:0]const u8, "with unicode\u{1}"), .{ .escape_unicode = true }); |
| 164 | } | 175 | } |
| 165 | 176 | ||
| 166 | test "stringify enums" { | 177 | test "stringify enums" { |
| 178 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 179 | |||
| 167 | const E = enum { | 180 | const E = enum { |
| 168 | foo, | 181 | foo, |
| 169 | bar, | 182 | bar, |
| ... | @@ -173,11 +186,15 @@ test "stringify enums" { | ... | @@ -173,11 +186,15 @@ test "stringify enums" { |
| 173 | } | 186 | } |
| 174 | 187 | ||
| 175 | test "stringify enum literals" { | 188 | test "stringify enum literals" { |
| 189 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 190 | |||
| 176 | try testStringify("\"foo\"", .foo, .{}); | 191 | try testStringify("\"foo\"", .foo, .{}); |
| 177 | try testStringify("\"bar\"", .bar, .{}); | 192 | try testStringify("\"bar\"", .bar, .{}); |
| 178 | } | 193 | } |
| 179 | 194 | ||
| 180 | test "stringify tagged unions" { | 195 | test "stringify tagged unions" { |
| 196 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 197 | |||
| 181 | const T = union(enum) { | 198 | const T = union(enum) { |
| 182 | nothing, | 199 | nothing, |
| 183 | foo: u32, | 200 | foo: u32, |
| ... | @@ -189,12 +206,16 @@ test "stringify tagged unions" { | ... | @@ -189,12 +206,16 @@ test "stringify tagged unions" { |
| 189 | } | 206 | } |
| 190 | 207 | ||
| 191 | test "stringify struct" { | 208 | test "stringify struct" { |
| 209 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 210 | |||
| 192 | try testStringify("{\"foo\":42}", struct { | 211 | try testStringify("{\"foo\":42}", struct { |
| 193 | foo: u32, | 212 | foo: u32, |
| 194 | }{ .foo = 42 }, .{}); | 213 | }{ .foo = 42 }, .{}); |
| 195 | } | 214 | } |
| 196 | 215 | ||
| 197 | test "emit_strings_as_arrays" { | 216 | test "emit_strings_as_arrays" { |
| 217 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 218 | |||
| 198 | // Should only affect string values, not object keys. | 219 | // Should only affect string values, not object keys. |
| 199 | try testStringify("{\"foo\":\"bar\"}", .{ .foo = "bar" }, .{}); | 220 | try testStringify("{\"foo\":\"bar\"}", .{ .foo = "bar" }, .{}); |
| 200 | try testStringify("{\"foo\":[98,97,114]}", .{ .foo = "bar" }, .{ .emit_strings_as_arrays = true }); | 221 | try testStringify("{\"foo\":[98,97,114]}", .{ .foo = "bar" }, .{ .emit_strings_as_arrays = true }); |
| ... | @@ -209,6 +230,8 @@ test "emit_strings_as_arrays" { | ... | @@ -209,6 +230,8 @@ test "emit_strings_as_arrays" { |
| 209 | } | 230 | } |
| 210 | 231 | ||
| 211 | test "stringify struct with indentation" { | 232 | test "stringify struct with indentation" { |
| 233 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 234 | |||
| 212 | try testStringify( | 235 | try testStringify( |
| 213 | \\{ | 236 | \\{ |
| 214 | \\ "foo": 42, | 237 | \\ "foo": 42, |
| ... | @@ -254,6 +277,8 @@ test "stringify struct with indentation" { | ... | @@ -254,6 +277,8 @@ test "stringify struct with indentation" { |
| 254 | } | 277 | } |
| 255 | 278 | ||
| 256 | test "stringify struct with void field" { | 279 | test "stringify struct with void field" { |
| 280 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 281 | |||
| 257 | try testStringify("{\"foo\":42}", struct { | 282 | try testStringify("{\"foo\":42}", struct { |
| 258 | foo: u32, | 283 | foo: u32, |
| 259 | bar: void = {}, | 284 | bar: void = {}, |
| ... | @@ -261,6 +286,8 @@ test "stringify struct with void field" { | ... | @@ -261,6 +286,8 @@ test "stringify struct with void field" { |
| 261 | } | 286 | } |
| 262 | 287 | ||
| 263 | test "stringify array of structs" { | 288 | test "stringify array of structs" { |
| 289 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 290 | |||
| 264 | const MyStruct = struct { | 291 | const MyStruct = struct { |
| 265 | foo: u32, | 292 | foo: u32, |
| 266 | }; | 293 | }; |
| ... | @@ -272,6 +299,8 @@ test "stringify array of structs" { | ... | @@ -272,6 +299,8 @@ test "stringify array of structs" { |
| 272 | } | 299 | } |
| 273 | 300 | ||
| 274 | test "stringify struct with custom stringifier" { | 301 | test "stringify struct with custom stringifier" { |
| 302 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 303 | |||
| 275 | try testStringify("[\"something special\",42]", struct { | 304 | try testStringify("[\"something special\",42]", struct { |
| 276 | foo: u32, | 305 | foo: u32, |
| 277 | const Self = @This(); | 306 | const Self = @This(); |
| ... | @@ -286,12 +315,16 @@ test "stringify struct with custom stringifier" { | ... | @@ -286,12 +315,16 @@ test "stringify struct with custom stringifier" { |
| 286 | } | 315 | } |
| 287 | 316 | ||
| 288 | test "stringify vector" { | 317 | test "stringify vector" { |
| 318 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 319 | |||
| 289 | try testStringify("[1,1]", @as(@Vector(2, u32), @splat(1)), .{}); | 320 | try testStringify("[1,1]", @as(@Vector(2, u32), @splat(1)), .{}); |
| 290 | try testStringify("\"AA\"", @as(@Vector(2, u8), @splat('A')), .{}); | 321 | try testStringify("\"AA\"", @as(@Vector(2, u8), @splat('A')), .{}); |
| 291 | try testStringify("[65,65]", @as(@Vector(2, u8), @splat('A')), .{ .emit_strings_as_arrays = true }); | 322 | try testStringify("[65,65]", @as(@Vector(2, u8), @splat('A')), .{ .emit_strings_as_arrays = true }); |
| 292 | } | 323 | } |
| 293 | 324 | ||
| 294 | test "stringify tuple" { | 325 | test "stringify tuple" { |
| 326 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 327 | |||
| 295 | try testStringify("[\"foo\",42]", std.meta.Tuple(&.{ []const u8, usize }){ "foo", 42 }, .{}); | 328 | try testStringify("[\"foo\",42]", std.meta.Tuple(&.{ []const u8, usize }){ "foo", 42 }, .{}); |
| 296 | } | 329 | } |
| 297 | 330 | ||
| ... | @@ -378,6 +411,8 @@ fn testStringifyArbitraryDepth(expected: []const u8, value: anytype, options: St | ... | @@ -378,6 +411,8 @@ fn testStringifyArbitraryDepth(expected: []const u8, value: anytype, options: St |
| 378 | } | 411 | } |
| 379 | 412 | ||
| 380 | test "stringify alloc" { | 413 | test "stringify alloc" { |
| 414 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 415 | |||
| 381 | const allocator = std.testing.allocator; | 416 | const allocator = std.testing.allocator; |
| 382 | const expected = | 417 | const expected = |
| 383 | \\{"foo":"bar","answer":42,"my_friend":"sammy"} | 418 | \\{"foo":"bar","answer":42,"my_friend":"sammy"} |
| ... | @@ -389,6 +424,8 @@ test "stringify alloc" { | ... | @@ -389,6 +424,8 @@ test "stringify alloc" { |
| 389 | } | 424 | } |
| 390 | 425 | ||
| 391 | test "comptime stringify" { | 426 | test "comptime stringify" { |
| 427 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 428 | |||
| 392 | comptime testStringifyMaxDepth("false", false, .{}, null) catch unreachable; | 429 | comptime testStringifyMaxDepth("false", false, .{}, null) catch unreachable; |
| 393 | comptime testStringifyMaxDepth("false", false, .{}, 0) catch unreachable; | 430 | comptime testStringifyMaxDepth("false", false, .{}, 0) catch unreachable; |
| 394 | comptime testStringifyArbitraryDepth("false", false, .{}) catch unreachable; | 431 | comptime testStringifyArbitraryDepth("false", false, .{}) catch unreachable; |
| ... | @@ -409,6 +446,8 @@ test "comptime stringify" { | ... | @@ -409,6 +446,8 @@ test "comptime stringify" { |
| 409 | } | 446 | } |
| 410 | 447 | ||
| 411 | test "print" { | 448 | test "print" { |
| 449 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 450 | |||
| 412 | var out_buf: [1024]u8 = undefined; | 451 | var out_buf: [1024]u8 = undefined; |
| 413 | var slice_stream = std.io.fixedBufferStream(&out_buf); | 452 | var slice_stream = std.io.fixedBufferStream(&out_buf); |
| 414 | const out = slice_stream.writer(); | 453 | const out = slice_stream.writer(); |
| ... | @@ -440,6 +479,8 @@ test "print" { | ... | @@ -440,6 +479,8 @@ test "print" { |
| 440 | } | 479 | } |
| 441 | 480 | ||
| 442 | test "nonportable numbers" { | 481 | test "nonportable numbers" { |
| 482 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 483 | |||
| 443 | try testStringify("9999999999999999", 9999999999999999, .{}); | 484 | try testStringify("9999999999999999", 9999999999999999, .{}); |
| 444 | try testStringify("\"9999999999999999\"", 9999999999999999, .{ .emit_nonportable_numbers_as_strings = true }); | 485 | try testStringify("\"9999999999999999\"", 9999999999999999, .{ .emit_nonportable_numbers_as_strings = true }); |
| 445 | } | 486 | } |
lib/std/json/test.zig+2| ... | @@ -34,6 +34,8 @@ fn testHighLevelDynamicParser(s: []const u8) !void { | ... | @@ -34,6 +34,8 @@ fn testHighLevelDynamicParser(s: []const u8) !void { |
| 34 | 34 | ||
| 35 | // Additional tests not part of test JSONTestSuite. | 35 | // Additional tests not part of test JSONTestSuite. |
| 36 | test "y_trailing_comma_after_empty" { | 36 | test "y_trailing_comma_after_empty" { |
| 37 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 38 | |||
| 37 | try roundTrip( | 39 | try roundTrip( |
| 38 | \\{"1":[],"2":{},"3":"4"} | 40 | \\{"1":[],"2":{},"3":"4"} |
| 39 | ); | 41 | ); |
lib/std/math.zig+26| ... | @@ -492,10 +492,13 @@ pub fn shl(comptime T: type, a: T, shift_amt: anytype) T { | ... | @@ -492,10 +492,13 @@ pub fn shl(comptime T: type, a: T, shift_amt: anytype) T { |
| 492 | } | 492 | } |
| 493 | 493 | ||
| 494 | test "shl" { | 494 | test "shl" { |
| 495 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 496 | |||
| 495 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) { | 497 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) { |
| 496 | // https://github.com/ziglang/zig/issues/12012 | 498 | // https://github.com/ziglang/zig/issues/12012 |
| 497 | return error.SkipZigTest; | 499 | return error.SkipZigTest; |
| 498 | } | 500 | } |
| 501 | |||
| 499 | try testing.expect(shl(u8, 0b11111111, @as(usize, 3)) == 0b11111000); | 502 | try testing.expect(shl(u8, 0b11111111, @as(usize, 3)) == 0b11111000); |
| 500 | try testing.expect(shl(u8, 0b11111111, @as(usize, 8)) == 0); | 503 | try testing.expect(shl(u8, 0b11111111, @as(usize, 8)) == 0); |
| 501 | try testing.expect(shl(u8, 0b11111111, @as(usize, 9)) == 0); | 504 | try testing.expect(shl(u8, 0b11111111, @as(usize, 9)) == 0); |
| ... | @@ -536,10 +539,13 @@ pub fn shr(comptime T: type, a: T, shift_amt: anytype) T { | ... | @@ -536,10 +539,13 @@ pub fn shr(comptime T: type, a: T, shift_amt: anytype) T { |
| 536 | } | 539 | } |
| 537 | 540 | ||
| 538 | test "shr" { | 541 | test "shr" { |
| 542 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 543 | |||
| 539 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) { | 544 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) { |
| 540 | // https://github.com/ziglang/zig/issues/12012 | 545 | // https://github.com/ziglang/zig/issues/12012 |
| 541 | return error.SkipZigTest; | 546 | return error.SkipZigTest; |
| 542 | } | 547 | } |
| 548 | |||
| 543 | try testing.expect(shr(u8, 0b11111111, @as(usize, 3)) == 0b00011111); | 549 | try testing.expect(shr(u8, 0b11111111, @as(usize, 3)) == 0b00011111); |
| 544 | try testing.expect(shr(u8, 0b11111111, @as(usize, 8)) == 0); | 550 | try testing.expect(shr(u8, 0b11111111, @as(usize, 8)) == 0); |
| 545 | try testing.expect(shr(u8, 0b11111111, @as(usize, 9)) == 0); | 551 | try testing.expect(shr(u8, 0b11111111, @as(usize, 9)) == 0); |
| ... | @@ -581,10 +587,13 @@ pub fn rotr(comptime T: type, x: T, r: anytype) T { | ... | @@ -581,10 +587,13 @@ pub fn rotr(comptime T: type, x: T, r: anytype) T { |
| 581 | } | 587 | } |
| 582 | 588 | ||
| 583 | test "rotr" { | 589 | test "rotr" { |
| 590 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 591 | |||
| 584 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) { | 592 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) { |
| 585 | // https://github.com/ziglang/zig/issues/12012 | 593 | // https://github.com/ziglang/zig/issues/12012 |
| 586 | return error.SkipZigTest; | 594 | return error.SkipZigTest; |
| 587 | } | 595 | } |
| 596 | |||
| 588 | try testing.expect(rotr(u0, 0b0, @as(usize, 3)) == 0b0); | 597 | try testing.expect(rotr(u0, 0b0, @as(usize, 3)) == 0b0); |
| 589 | try testing.expect(rotr(u5, 0b00001, @as(usize, 0)) == 0b00001); | 598 | try testing.expect(rotr(u5, 0b00001, @as(usize, 0)) == 0b00001); |
| 590 | try testing.expect(rotr(u6, 0b000001, @as(usize, 7)) == 0b100000); | 599 | try testing.expect(rotr(u6, 0b000001, @as(usize, 7)) == 0b100000); |
| ... | @@ -625,10 +634,13 @@ pub fn rotl(comptime T: type, x: T, r: anytype) T { | ... | @@ -625,10 +634,13 @@ pub fn rotl(comptime T: type, x: T, r: anytype) T { |
| 625 | } | 634 | } |
| 626 | 635 | ||
| 627 | test "rotl" { | 636 | test "rotl" { |
| 637 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 638 | |||
| 628 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) { | 639 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) { |
| 629 | // https://github.com/ziglang/zig/issues/12012 | 640 | // https://github.com/ziglang/zig/issues/12012 |
| 630 | return error.SkipZigTest; | 641 | return error.SkipZigTest; |
| 631 | } | 642 | } |
| 643 | |||
| 632 | try testing.expect(rotl(u0, 0b0, @as(usize, 3)) == 0b0); | 644 | try testing.expect(rotl(u0, 0b0, @as(usize, 3)) == 0b0); |
| 633 | try testing.expect(rotl(u5, 0b00001, @as(usize, 0)) == 0b00001); | 645 | try testing.expect(rotl(u5, 0b00001, @as(usize, 0)) == 0b00001); |
| 634 | try testing.expect(rotl(u6, 0b000001, @as(usize, 7)) == 0b000010); | 646 | try testing.expect(rotl(u6, 0b000001, @as(usize, 7)) == 0b000010); |
| ... | @@ -752,6 +764,8 @@ pub fn divTrunc(comptime T: type, numerator: T, denominator: T) !T { | ... | @@ -752,6 +764,8 @@ pub fn divTrunc(comptime T: type, numerator: T, denominator: T) !T { |
| 752 | } | 764 | } |
| 753 | 765 | ||
| 754 | test "divTrunc" { | 766 | test "divTrunc" { |
| 767 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 768 | |||
| 755 | try testDivTrunc(); | 769 | try testDivTrunc(); |
| 756 | try comptime testDivTrunc(); | 770 | try comptime testDivTrunc(); |
| 757 | } | 771 | } |
| ... | @@ -776,6 +790,8 @@ pub fn divFloor(comptime T: type, numerator: T, denominator: T) !T { | ... | @@ -776,6 +790,8 @@ pub fn divFloor(comptime T: type, numerator: T, denominator: T) !T { |
| 776 | } | 790 | } |
| 777 | 791 | ||
| 778 | test "divFloor" { | 792 | test "divFloor" { |
| 793 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 794 | |||
| 779 | try testDivFloor(); | 795 | try testDivFloor(); |
| 780 | try comptime testDivFloor(); | 796 | try comptime testDivFloor(); |
| 781 | } | 797 | } |
| ... | @@ -813,6 +829,8 @@ pub fn divCeil(comptime T: type, numerator: T, denominator: T) !T { | ... | @@ -813,6 +829,8 @@ pub fn divCeil(comptime T: type, numerator: T, denominator: T) !T { |
| 813 | } | 829 | } |
| 814 | 830 | ||
| 815 | test "divCeil" { | 831 | test "divCeil" { |
| 832 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 833 | |||
| 816 | try testDivCeil(); | 834 | try testDivCeil(); |
| 817 | try comptime testDivCeil(); | 835 | try comptime testDivCeil(); |
| 818 | } | 836 | } |
| ... | @@ -857,6 +875,8 @@ pub fn divExact(comptime T: type, numerator: T, denominator: T) !T { | ... | @@ -857,6 +875,8 @@ pub fn divExact(comptime T: type, numerator: T, denominator: T) !T { |
| 857 | } | 875 | } |
| 858 | 876 | ||
| 859 | test "divExact" { | 877 | test "divExact" { |
| 878 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 879 | |||
| 860 | try testDivExact(); | 880 | try testDivExact(); |
| 861 | try comptime testDivExact(); | 881 | try comptime testDivExact(); |
| 862 | } | 882 | } |
| ... | @@ -887,6 +907,8 @@ test "mod" { | ... | @@ -887,6 +907,8 @@ test "mod" { |
| 887 | try comptime testMod(); | 907 | try comptime testMod(); |
| 888 | } | 908 | } |
| 889 | fn testMod() !void { | 909 | fn testMod() !void { |
| 910 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 911 | |||
| 890 | try testing.expect((mod(i32, -5, 3) catch unreachable) == 1); | 912 | try testing.expect((mod(i32, -5, 3) catch unreachable) == 1); |
| 891 | try testing.expect((mod(i32, 5, 3) catch unreachable) == 2); | 913 | try testing.expect((mod(i32, 5, 3) catch unreachable) == 2); |
| 892 | try testing.expectError(error.NegativeDenominator, mod(i32, 10, -1)); | 914 | try testing.expectError(error.NegativeDenominator, mod(i32, 10, -1)); |
| ... | @@ -909,6 +931,8 @@ pub fn rem(comptime T: type, numerator: T, denominator: T) !T { | ... | @@ -909,6 +931,8 @@ pub fn rem(comptime T: type, numerator: T, denominator: T) !T { |
| 909 | } | 931 | } |
| 910 | 932 | ||
| 911 | test "rem" { | 933 | test "rem" { |
| 934 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 935 | |||
| 912 | try testRem(); | 936 | try testRem(); |
| 913 | try comptime testRem(); | 937 | try comptime testRem(); |
| 914 | } | 938 | } |
| ... | @@ -1258,6 +1282,8 @@ pub fn lerp(a: anytype, b: anytype, t: anytype) @TypeOf(a, b, t) { | ... | @@ -1258,6 +1282,8 @@ pub fn lerp(a: anytype, b: anytype, t: anytype) @TypeOf(a, b, t) { |
| 1258 | } | 1282 | } |
| 1259 | 1283 | ||
| 1260 | test "lerp" { | 1284 | test "lerp" { |
| 1285 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1286 | |||
| 1261 | try testing.expectEqual(@as(f64, 75), lerp(50, 100, 0.5)); | 1287 | try testing.expectEqual(@as(f64, 75), lerp(50, 100, 0.5)); |
| 1262 | try testing.expectEqual(@as(f32, 43.75), lerp(50, 25, 0.25)); | 1288 | try testing.expectEqual(@as(f32, 43.75), lerp(50, 25, 0.25)); |
| 1263 | try testing.expectEqual(@as(f64, -31.25), lerp(-50, 25, 0.25)); | 1289 | try testing.expectEqual(@as(f64, -31.25), lerp(-50, 25, 0.25)); |
lib/std/math/big/int_test.zig+36-5| ... | @@ -915,7 +915,10 @@ test "big.int mul multi-single" { | ... | @@ -915,7 +915,10 @@ test "big.int mul multi-single" { |
| 915 | } | 915 | } |
| 916 | 916 | ||
| 917 | test "big.int mul multi-multi" { | 917 | test "big.int mul multi-multi" { |
| 918 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 918 | switch (builtin.zig_backend) { |
| 919 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 920 | else => {}, | ||
| 921 | } | ||
| 919 | 922 | ||
| 920 | var op1: u256 = 0x998888efefefefefefefef; | 923 | var op1: u256 = 0x998888efefefefefefefef; |
| 921 | var op2: u256 = 0x333000abababababababab; | 924 | var op2: u256 = 0x333000abababababababab; |
| ... | @@ -1036,7 +1039,10 @@ test "big.int mulWrap single-single signed" { | ... | @@ -1036,7 +1039,10 @@ test "big.int mulWrap single-single signed" { |
| 1036 | } | 1039 | } |
| 1037 | 1040 | ||
| 1038 | test "big.int mulWrap multi-multi unsigned" { | 1041 | test "big.int mulWrap multi-multi unsigned" { |
| 1039 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 1042 | switch (builtin.zig_backend) { |
| 1043 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 1044 | else => {}, | ||
| 1045 | } | ||
| 1040 | 1046 | ||
| 1041 | var op1: u256 = 0x998888efefefefefefefef; | 1047 | var op1: u256 = 0x998888efefefefefefefef; |
| 1042 | var op2: u256 = 0x333000abababababababab; | 1048 | var op2: u256 = 0x333000abababababababab; |
| ... | @@ -1053,7 +1059,10 @@ test "big.int mulWrap multi-multi unsigned" { | ... | @@ -1053,7 +1059,10 @@ test "big.int mulWrap multi-multi unsigned" { |
| 1053 | } | 1059 | } |
| 1054 | 1060 | ||
| 1055 | test "big.int mulWrap multi-multi signed" { | 1061 | test "big.int mulWrap multi-multi signed" { |
| 1056 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 1062 | switch (builtin.zig_backend) { |
| 1063 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 1064 | else => {}, | ||
| 1065 | } | ||
| 1057 | 1066 | ||
| 1058 | var a = try Managed.initSet(testing.allocator, maxInt(SignedDoubleLimb) - 1); | 1067 | var a = try Managed.initSet(testing.allocator, maxInt(SignedDoubleLimb) - 1); |
| 1059 | defer a.deinit(); | 1068 | defer a.deinit(); |
| ... | @@ -1374,6 +1383,8 @@ test "big.int div trunc single-single -/-" { | ... | @@ -1374,6 +1383,8 @@ test "big.int div trunc single-single -/-" { |
| 1374 | } | 1383 | } |
| 1375 | 1384 | ||
| 1376 | test "big.int divTrunc #15535" { | 1385 | test "big.int divTrunc #15535" { |
| 1386 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1387 | |||
| 1377 | var one = try Managed.initSet(testing.allocator, 1); | 1388 | var one = try Managed.initSet(testing.allocator, 1); |
| 1378 | defer one.deinit(); | 1389 | defer one.deinit(); |
| 1379 | var x = try Managed.initSet(testing.allocator, std.math.pow(u128, 2, 64)); | 1390 | var x = try Managed.initSet(testing.allocator, std.math.pow(u128, 2, 64)); |
| ... | @@ -1438,6 +1449,8 @@ test "big.int divFloor #11166" { | ... | @@ -1438,6 +1449,8 @@ test "big.int divFloor #11166" { |
| 1438 | } | 1449 | } |
| 1439 | 1450 | ||
| 1440 | test "big.int gcd #10932" { | 1451 | test "big.int gcd #10932" { |
| 1452 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1453 | |||
| 1441 | var a = try Managed.init(testing.allocator); | 1454 | var a = try Managed.init(testing.allocator); |
| 1442 | defer a.deinit(); | 1455 | defer a.deinit(); |
| 1443 | 1456 | ||
| ... | @@ -1683,7 +1696,10 @@ test "big.int div multi-multi (2 branch)" { | ... | @@ -1683,7 +1696,10 @@ test "big.int div multi-multi (2 branch)" { |
| 1683 | } | 1696 | } |
| 1684 | 1697 | ||
| 1685 | test "big.int div multi-multi (3.1/3.3 branch)" { | 1698 | test "big.int div multi-multi (3.1/3.3 branch)" { |
| 1686 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 1699 | switch (builtin.zig_backend) { |
| 1700 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 1701 | else => {}, | ||
| 1702 | } | ||
| 1687 | 1703 | ||
| 1688 | var a = try Managed.initSet(testing.allocator, 0x11111111111111111111111111111111111111111111111111111111111111); | 1704 | var a = try Managed.initSet(testing.allocator, 0x11111111111111111111111111111111111111111111111111111111111111); |
| 1689 | defer a.deinit(); | 1705 | defer a.deinit(); |
| ... | @@ -2097,6 +2113,8 @@ test "big.int sat shift-left signed simple positive" { | ... | @@ -2097,6 +2113,8 @@ test "big.int sat shift-left signed simple positive" { |
| 2097 | } | 2113 | } |
| 2098 | 2114 | ||
| 2099 | test "big.int sat shift-left signed multi positive" { | 2115 | test "big.int sat shift-left signed multi positive" { |
| 2116 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2117 | |||
| 2100 | var x: SignedDoubleLimb = 1; | 2118 | var x: SignedDoubleLimb = 1; |
| 2101 | const shift = @bitSizeOf(SignedDoubleLimb) - 1; | 2119 | const shift = @bitSizeOf(SignedDoubleLimb) - 1; |
| 2102 | 2120 | ||
| ... | @@ -2108,6 +2126,8 @@ test "big.int sat shift-left signed multi positive" { | ... | @@ -2108,6 +2126,8 @@ test "big.int sat shift-left signed multi positive" { |
| 2108 | } | 2126 | } |
| 2109 | 2127 | ||
| 2110 | test "big.int sat shift-left signed multi negative" { | 2128 | test "big.int sat shift-left signed multi negative" { |
| 2129 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2130 | |||
| 2111 | var x: SignedDoubleLimb = -1; | 2131 | var x: SignedDoubleLimb = -1; |
| 2112 | const shift = @bitSizeOf(SignedDoubleLimb) - 1; | 2132 | const shift = @bitSizeOf(SignedDoubleLimb) - 1; |
| 2113 | 2133 | ||
| ... | @@ -2468,6 +2488,8 @@ test "big.int var args" { | ... | @@ -2468,6 +2488,8 @@ test "big.int var args" { |
| 2468 | } | 2488 | } |
| 2469 | 2489 | ||
| 2470 | test "big.int gcd non-one small" { | 2490 | test "big.int gcd non-one small" { |
| 2491 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2492 | |||
| 2471 | var a = try Managed.initSet(testing.allocator, 17); | 2493 | var a = try Managed.initSet(testing.allocator, 17); |
| 2472 | defer a.deinit(); | 2494 | defer a.deinit(); |
| 2473 | var b = try Managed.initSet(testing.allocator, 97); | 2495 | var b = try Managed.initSet(testing.allocator, 97); |
| ... | @@ -2481,6 +2503,8 @@ test "big.int gcd non-one small" { | ... | @@ -2481,6 +2503,8 @@ test "big.int gcd non-one small" { |
| 2481 | } | 2503 | } |
| 2482 | 2504 | ||
| 2483 | test "big.int gcd non-one medium" { | 2505 | test "big.int gcd non-one medium" { |
| 2506 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2507 | |||
| 2484 | var a = try Managed.initSet(testing.allocator, 4864); | 2508 | var a = try Managed.initSet(testing.allocator, 4864); |
| 2485 | defer a.deinit(); | 2509 | defer a.deinit(); |
| 2486 | var b = try Managed.initSet(testing.allocator, 3458); | 2510 | var b = try Managed.initSet(testing.allocator, 3458); |
| ... | @@ -2494,6 +2518,8 @@ test "big.int gcd non-one medium" { | ... | @@ -2494,6 +2518,8 @@ test "big.int gcd non-one medium" { |
| 2494 | } | 2518 | } |
| 2495 | 2519 | ||
| 2496 | test "big.int gcd non-one large" { | 2520 | test "big.int gcd non-one large" { |
| 2521 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2522 | |||
| 2497 | var a = try Managed.initSet(testing.allocator, 0xffffffffffffffff); | 2523 | var a = try Managed.initSet(testing.allocator, 0xffffffffffffffff); |
| 2498 | defer a.deinit(); | 2524 | defer a.deinit(); |
| 2499 | var b = try Managed.initSet(testing.allocator, 0xffffffffffffffff7777); | 2525 | var b = try Managed.initSet(testing.allocator, 0xffffffffffffffff7777); |
| ... | @@ -2507,7 +2533,10 @@ test "big.int gcd non-one large" { | ... | @@ -2507,7 +2533,10 @@ test "big.int gcd non-one large" { |
| 2507 | } | 2533 | } |
| 2508 | 2534 | ||
| 2509 | test "big.int gcd large multi-limb result" { | 2535 | test "big.int gcd large multi-limb result" { |
| 2510 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 2536 | switch (builtin.zig_backend) { |
| 2537 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 2538 | else => {}, | ||
| 2539 | } | ||
| 2511 | 2540 | ||
| 2512 | var a = try Managed.initSet(testing.allocator, 0x12345678123456781234567812345678123456781234567812345678); | 2541 | var a = try Managed.initSet(testing.allocator, 0x12345678123456781234567812345678123456781234567812345678); |
| 2513 | defer a.deinit(); | 2542 | defer a.deinit(); |
| ... | @@ -2523,6 +2552,8 @@ test "big.int gcd large multi-limb result" { | ... | @@ -2523,6 +2552,8 @@ test "big.int gcd large multi-limb result" { |
| 2523 | } | 2552 | } |
| 2524 | 2553 | ||
| 2525 | test "big.int gcd one large" { | 2554 | test "big.int gcd one large" { |
| 2555 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2556 | |||
| 2526 | var a = try Managed.initSet(testing.allocator, 1897056385327307); | 2557 | var a = try Managed.initSet(testing.allocator, 1897056385327307); |
| 2527 | defer a.deinit(); | 2558 | defer a.deinit(); |
| 2528 | var b = try Managed.initSet(testing.allocator, 2251799813685248); | 2559 | var b = try Managed.initSet(testing.allocator, 2251799813685248); |
lib/std/math/big/rational.zig+35| ... | @@ -1,4 +1,5 @@ | ... | @@ -1,4 +1,5 @@ |
| 1 | const std = @import("../../std.zig"); | 1 | const std = @import("../../std.zig"); |
| 2 | const builtin = @import("builtin"); | ||
| 2 | const debug = std.debug; | 3 | const debug = std.debug; |
| 3 | const math = std.math; | 4 | const math = std.math; |
| 4 | const mem = std.mem; | 5 | const mem = std.mem; |
| ... | @@ -493,6 +494,8 @@ fn extractLowBits(a: Int, comptime T: type) T { | ... | @@ -493,6 +494,8 @@ fn extractLowBits(a: Int, comptime T: type) T { |
| 493 | } | 494 | } |
| 494 | 495 | ||
| 495 | test "big.rational extractLowBits" { | 496 | test "big.rational extractLowBits" { |
| 497 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 498 | |||
| 496 | var a = try Int.initSet(testing.allocator, 0x11112222333344441234567887654321); | 499 | var a = try Int.initSet(testing.allocator, 0x11112222333344441234567887654321); |
| 497 | defer a.deinit(); | 500 | defer a.deinit(); |
| 498 | 501 | ||
| ... | @@ -513,6 +516,8 @@ test "big.rational extractLowBits" { | ... | @@ -513,6 +516,8 @@ test "big.rational extractLowBits" { |
| 513 | } | 516 | } |
| 514 | 517 | ||
| 515 | test "big.rational set" { | 518 | test "big.rational set" { |
| 519 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 520 | |||
| 516 | var a = try Rational.init(testing.allocator); | 521 | var a = try Rational.init(testing.allocator); |
| 517 | defer a.deinit(); | 522 | defer a.deinit(); |
| 518 | 523 | ||
| ... | @@ -542,6 +547,8 @@ test "big.rational set" { | ... | @@ -542,6 +547,8 @@ test "big.rational set" { |
| 542 | } | 547 | } |
| 543 | 548 | ||
| 544 | test "big.rational setFloat" { | 549 | test "big.rational setFloat" { |
| 550 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 551 | |||
| 545 | var a = try Rational.init(testing.allocator); | 552 | var a = try Rational.init(testing.allocator); |
| 546 | defer a.deinit(); | 553 | defer a.deinit(); |
| 547 | 554 | ||
| ... | @@ -567,6 +574,8 @@ test "big.rational setFloat" { | ... | @@ -567,6 +574,8 @@ test "big.rational setFloat" { |
| 567 | } | 574 | } |
| 568 | 575 | ||
| 569 | test "big.rational setFloatString" { | 576 | test "big.rational setFloatString" { |
| 577 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 578 | |||
| 570 | var a = try Rational.init(testing.allocator); | 579 | var a = try Rational.init(testing.allocator); |
| 571 | defer a.deinit(); | 580 | defer a.deinit(); |
| 572 | 581 | ||
| ... | @@ -578,6 +587,8 @@ test "big.rational setFloatString" { | ... | @@ -578,6 +587,8 @@ test "big.rational setFloatString" { |
| 578 | } | 587 | } |
| 579 | 588 | ||
| 580 | test "big.rational toFloat" { | 589 | test "big.rational toFloat" { |
| 590 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 591 | |||
| 581 | var a = try Rational.init(testing.allocator); | 592 | var a = try Rational.init(testing.allocator); |
| 582 | defer a.deinit(); | 593 | defer a.deinit(); |
| 583 | 594 | ||
| ... | @@ -591,6 +602,8 @@ test "big.rational toFloat" { | ... | @@ -591,6 +602,8 @@ test "big.rational toFloat" { |
| 591 | } | 602 | } |
| 592 | 603 | ||
| 593 | test "big.rational set/to Float round-trip" { | 604 | test "big.rational set/to Float round-trip" { |
| 605 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 606 | |||
| 594 | var a = try Rational.init(testing.allocator); | 607 | var a = try Rational.init(testing.allocator); |
| 595 | defer a.deinit(); | 608 | defer a.deinit(); |
| 596 | var prng = std.rand.DefaultPrng.init(0x5EED); | 609 | var prng = std.rand.DefaultPrng.init(0x5EED); |
| ... | @@ -604,6 +617,8 @@ test "big.rational set/to Float round-trip" { | ... | @@ -604,6 +617,8 @@ test "big.rational set/to Float round-trip" { |
| 604 | } | 617 | } |
| 605 | 618 | ||
| 606 | test "big.rational copy" { | 619 | test "big.rational copy" { |
| 620 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 621 | |||
| 607 | var a = try Rational.init(testing.allocator); | 622 | var a = try Rational.init(testing.allocator); |
| 608 | defer a.deinit(); | 623 | defer a.deinit(); |
| 609 | 624 | ||
| ... | @@ -634,6 +649,8 @@ test "big.rational copy" { | ... | @@ -634,6 +649,8 @@ test "big.rational copy" { |
| 634 | } | 649 | } |
| 635 | 650 | ||
| 636 | test "big.rational negate" { | 651 | test "big.rational negate" { |
| 652 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 653 | |||
| 637 | var a = try Rational.init(testing.allocator); | 654 | var a = try Rational.init(testing.allocator); |
| 638 | defer a.deinit(); | 655 | defer a.deinit(); |
| 639 | 656 | ||
| ... | @@ -651,6 +668,8 @@ test "big.rational negate" { | ... | @@ -651,6 +668,8 @@ test "big.rational negate" { |
| 651 | } | 668 | } |
| 652 | 669 | ||
| 653 | test "big.rational abs" { | 670 | test "big.rational abs" { |
| 671 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 672 | |||
| 654 | var a = try Rational.init(testing.allocator); | 673 | var a = try Rational.init(testing.allocator); |
| 655 | defer a.deinit(); | 674 | defer a.deinit(); |
| 656 | 675 | ||
| ... | @@ -668,6 +687,8 @@ test "big.rational abs" { | ... | @@ -668,6 +687,8 @@ test "big.rational abs" { |
| 668 | } | 687 | } |
| 669 | 688 | ||
| 670 | test "big.rational swap" { | 689 | test "big.rational swap" { |
| 690 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 691 | |||
| 671 | var a = try Rational.init(testing.allocator); | 692 | var a = try Rational.init(testing.allocator); |
| 672 | defer a.deinit(); | 693 | defer a.deinit(); |
| 673 | var b = try Rational.init(testing.allocator); | 694 | var b = try Rational.init(testing.allocator); |
| ... | @@ -692,6 +713,8 @@ test "big.rational swap" { | ... | @@ -692,6 +713,8 @@ test "big.rational swap" { |
| 692 | } | 713 | } |
| 693 | 714 | ||
| 694 | test "big.rational order" { | 715 | test "big.rational order" { |
| 716 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 717 | |||
| 695 | var a = try Rational.init(testing.allocator); | 718 | var a = try Rational.init(testing.allocator); |
| 696 | defer a.deinit(); | 719 | defer a.deinit(); |
| 697 | var b = try Rational.init(testing.allocator); | 720 | var b = try Rational.init(testing.allocator); |
| ... | @@ -707,6 +730,8 @@ test "big.rational order" { | ... | @@ -707,6 +730,8 @@ test "big.rational order" { |
| 707 | } | 730 | } |
| 708 | 731 | ||
| 709 | test "big.rational order/orderAbs with negative" { | 732 | test "big.rational order/orderAbs with negative" { |
| 733 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 734 | |||
| 710 | var a = try Rational.init(testing.allocator); | 735 | var a = try Rational.init(testing.allocator); |
| 711 | defer a.deinit(); | 736 | defer a.deinit(); |
| 712 | var b = try Rational.init(testing.allocator); | 737 | var b = try Rational.init(testing.allocator); |
| ... | @@ -719,6 +744,8 @@ test "big.rational order/orderAbs with negative" { | ... | @@ -719,6 +744,8 @@ test "big.rational order/orderAbs with negative" { |
| 719 | } | 744 | } |
| 720 | 745 | ||
| 721 | test "big.rational add single-limb" { | 746 | test "big.rational add single-limb" { |
| 747 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 748 | |||
| 722 | var a = try Rational.init(testing.allocator); | 749 | var a = try Rational.init(testing.allocator); |
| 723 | defer a.deinit(); | 750 | defer a.deinit(); |
| 724 | var b = try Rational.init(testing.allocator); | 751 | var b = try Rational.init(testing.allocator); |
| ... | @@ -734,6 +761,8 @@ test "big.rational add single-limb" { | ... | @@ -734,6 +761,8 @@ test "big.rational add single-limb" { |
| 734 | } | 761 | } |
| 735 | 762 | ||
| 736 | test "big.rational add" { | 763 | test "big.rational add" { |
| 764 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 765 | |||
| 737 | var a = try Rational.init(testing.allocator); | 766 | var a = try Rational.init(testing.allocator); |
| 738 | defer a.deinit(); | 767 | defer a.deinit(); |
| 739 | var b = try Rational.init(testing.allocator); | 768 | var b = try Rational.init(testing.allocator); |
| ... | @@ -750,6 +779,8 @@ test "big.rational add" { | ... | @@ -750,6 +779,8 @@ test "big.rational add" { |
| 750 | } | 779 | } |
| 751 | 780 | ||
| 752 | test "big.rational sub" { | 781 | test "big.rational sub" { |
| 782 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 783 | |||
| 753 | var a = try Rational.init(testing.allocator); | 784 | var a = try Rational.init(testing.allocator); |
| 754 | defer a.deinit(); | 785 | defer a.deinit(); |
| 755 | var b = try Rational.init(testing.allocator); | 786 | var b = try Rational.init(testing.allocator); |
| ... | @@ -766,6 +797,8 @@ test "big.rational sub" { | ... | @@ -766,6 +797,8 @@ test "big.rational sub" { |
| 766 | } | 797 | } |
| 767 | 798 | ||
| 768 | test "big.rational mul" { | 799 | test "big.rational mul" { |
| 800 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 801 | |||
| 769 | var a = try Rational.init(testing.allocator); | 802 | var a = try Rational.init(testing.allocator); |
| 770 | defer a.deinit(); | 803 | defer a.deinit(); |
| 771 | var b = try Rational.init(testing.allocator); | 804 | var b = try Rational.init(testing.allocator); |
| ... | @@ -782,6 +815,8 @@ test "big.rational mul" { | ... | @@ -782,6 +815,8 @@ test "big.rational mul" { |
| 782 | } | 815 | } |
| 783 | 816 | ||
| 784 | test "big.rational div" { | 817 | test "big.rational div" { |
| 818 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 819 | |||
| 785 | { | 820 | { |
| 786 | var a = try Rational.init(testing.allocator); | 821 | var a = try Rational.init(testing.allocator); |
| 787 | defer a.deinit(); | 822 | defer a.deinit(); |
lib/std/mem.zig+18-4| ... | @@ -315,6 +315,8 @@ pub fn zeroes(comptime T: type) T { | ... | @@ -315,6 +315,8 @@ pub fn zeroes(comptime T: type) T { |
| 315 | } | 315 | } |
| 316 | 316 | ||
| 317 | test "zeroes" { | 317 | test "zeroes" { |
| 318 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 319 | |||
| 318 | const C_struct = extern struct { | 320 | const C_struct = extern struct { |
| 319 | x: u32, | 321 | x: u32, |
| 320 | y: u32 align(128), | 322 | y: u32 align(128), |
| ... | @@ -1737,6 +1739,8 @@ pub fn readIntSlice(comptime T: type, bytes: []const u8, endian: Endian) T { | ... | @@ -1737,6 +1739,8 @@ pub fn readIntSlice(comptime T: type, bytes: []const u8, endian: Endian) T { |
| 1737 | } | 1739 | } |
| 1738 | 1740 | ||
| 1739 | test "comptime read/write int" { | 1741 | test "comptime read/write int" { |
| 1742 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1743 | |||
| 1740 | comptime { | 1744 | comptime { |
| 1741 | var bytes: [2]u8 = undefined; | 1745 | var bytes: [2]u8 = undefined; |
| 1742 | writeIntLittle(u16, &bytes, 0x1234); | 1746 | writeIntLittle(u16, &bytes, 0x1234); |
| ... | @@ -1752,7 +1756,10 @@ test "comptime read/write int" { | ... | @@ -1752,7 +1756,10 @@ test "comptime read/write int" { |
| 1752 | } | 1756 | } |
| 1753 | 1757 | ||
| 1754 | test "readIntBig and readIntLittle" { | 1758 | test "readIntBig and readIntLittle" { |
| 1755 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 1759 | switch (builtin.zig_backend) { |
| 1760 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 1761 | else => {}, | ||
| 1762 | } | ||
| 1756 | 1763 | ||
| 1757 | try testing.expect(readIntSliceBig(u0, &[_]u8{}) == 0x0); | 1764 | try testing.expect(readIntSliceBig(u0, &[_]u8{}) == 0x0); |
| 1758 | try testing.expect(readIntSliceLittle(u0, &[_]u8{}) == 0x0); | 1765 | try testing.expect(readIntSliceLittle(u0, &[_]u8{}) == 0x0); |
| ... | @@ -2053,7 +2060,10 @@ pub fn writeVarPackedInt(bytes: []u8, bit_offset: usize, bit_count: usize, value | ... | @@ -2053,7 +2060,10 @@ pub fn writeVarPackedInt(bytes: []u8, bit_offset: usize, bit_count: usize, value |
| 2053 | } | 2060 | } |
| 2054 | 2061 | ||
| 2055 | test "writeIntBig and writeIntLittle" { | 2062 | test "writeIntBig and writeIntLittle" { |
| 2056 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 2063 | switch (builtin.zig_backend) { |
| 2064 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 2065 | else => {}, | ||
| 2066 | } | ||
| 2057 | 2067 | ||
| 2058 | var buf0: [0]u8 = undefined; | 2068 | var buf0: [0]u8 = undefined; |
| 2059 | var buf1: [1]u8 = undefined; | 2069 | var buf1: [1]u8 = undefined; |
| ... | @@ -3297,6 +3307,8 @@ test "testStringEquality" { | ... | @@ -3297,6 +3307,8 @@ test "testStringEquality" { |
| 3297 | } | 3307 | } |
| 3298 | 3308 | ||
| 3299 | test "testReadInt" { | 3309 | test "testReadInt" { |
| 3310 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 3311 | |||
| 3300 | try testReadIntImpl(); | 3312 | try testReadIntImpl(); |
| 3301 | try comptime testReadIntImpl(); | 3313 | try comptime testReadIntImpl(); |
| 3302 | } | 3314 | } |
| ... | @@ -4650,8 +4662,10 @@ pub fn alignInSlice(slice: anytype, comptime new_alignment: usize) ?AlignedSlice | ... | @@ -4650,8 +4662,10 @@ pub fn alignInSlice(slice: anytype, comptime new_alignment: usize) ?AlignedSlice |
| 4650 | } | 4662 | } |
| 4651 | 4663 | ||
| 4652 | test "read/write(Var)PackedInt" { | 4664 | test "read/write(Var)PackedInt" { |
| 4653 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 4665 | switch (builtin.zig_backend) { |
| 4654 | 4666 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | |
| 4667 | else => {}, | ||
| 4668 | } | ||
| 4655 | switch (builtin.cpu.arch) { | 4669 | switch (builtin.cpu.arch) { |
| 4656 | // This test generates too much code to execute on WASI. | 4670 | // This test generates too much code to execute on WASI. |
| 4657 | // LLVM backend fails with "too many locals: locals exceed maximum" | 4671 | // LLVM backend fails with "too many locals: locals exceed maximum" |
lib/std/multi_array_list.zig+16| ... | @@ -583,6 +583,8 @@ pub fn MultiArrayList(comptime T: type) type { | ... | @@ -583,6 +583,8 @@ pub fn MultiArrayList(comptime T: type) type { |
| 583 | } | 583 | } |
| 584 | 584 | ||
| 585 | test "basic usage" { | 585 | test "basic usage" { |
| 586 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 587 | |||
| 586 | const ally = testing.allocator; | 588 | const ally = testing.allocator; |
| 587 | 589 | ||
| 588 | const Foo = struct { | 590 | const Foo = struct { |
| ... | @@ -677,6 +679,8 @@ test "basic usage" { | ... | @@ -677,6 +679,8 @@ test "basic usage" { |
| 677 | // This was observed to fail on aarch64 with LLVM 11, when the capacityInBytes | 679 | // This was observed to fail on aarch64 with LLVM 11, when the capacityInBytes |
| 678 | // function used the @reduce code path. | 680 | // function used the @reduce code path. |
| 679 | test "regression test for @reduce bug" { | 681 | test "regression test for @reduce bug" { |
| 682 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 683 | |||
| 680 | const ally = testing.allocator; | 684 | const ally = testing.allocator; |
| 681 | var list = MultiArrayList(struct { | 685 | var list = MultiArrayList(struct { |
| 682 | tag: std.zig.Token.Tag, | 686 | tag: std.zig.Token.Tag, |
| ... | @@ -754,6 +758,8 @@ test "regression test for @reduce bug" { | ... | @@ -754,6 +758,8 @@ test "regression test for @reduce bug" { |
| 754 | } | 758 | } |
| 755 | 759 | ||
| 756 | test "ensure capacity on empty list" { | 760 | test "ensure capacity on empty list" { |
| 761 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 762 | |||
| 757 | const ally = testing.allocator; | 763 | const ally = testing.allocator; |
| 758 | 764 | ||
| 759 | const Foo = struct { | 765 | const Foo = struct { |
| ... | @@ -789,6 +795,8 @@ test "ensure capacity on empty list" { | ... | @@ -789,6 +795,8 @@ test "ensure capacity on empty list" { |
| 789 | } | 795 | } |
| 790 | 796 | ||
| 791 | test "insert elements" { | 797 | test "insert elements" { |
| 798 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 799 | |||
| 792 | const ally = testing.allocator; | 800 | const ally = testing.allocator; |
| 793 | 801 | ||
| 794 | const Foo = struct { | 802 | const Foo = struct { |
| ... | @@ -808,6 +816,8 @@ test "insert elements" { | ... | @@ -808,6 +816,8 @@ test "insert elements" { |
| 808 | } | 816 | } |
| 809 | 817 | ||
| 810 | test "union" { | 818 | test "union" { |
| 819 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 820 | |||
| 811 | const ally = testing.allocator; | 821 | const ally = testing.allocator; |
| 812 | 822 | ||
| 813 | const Foo = union(enum) { | 823 | const Foo = union(enum) { |
| ... | @@ -863,6 +873,8 @@ test "union" { | ... | @@ -863,6 +873,8 @@ test "union" { |
| 863 | } | 873 | } |
| 864 | 874 | ||
| 865 | test "sorting a span" { | 875 | test "sorting a span" { |
| 876 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 877 | |||
| 866 | var list: MultiArrayList(struct { score: u32, chr: u8 }) = .{}; | 878 | var list: MultiArrayList(struct { score: u32, chr: u8 }) = .{}; |
| 867 | defer list.deinit(testing.allocator); | 879 | defer list.deinit(testing.allocator); |
| 868 | 880 | ||
| ... | @@ -903,6 +915,8 @@ test "sorting a span" { | ... | @@ -903,6 +915,8 @@ test "sorting a span" { |
| 903 | } | 915 | } |
| 904 | 916 | ||
| 905 | test "0 sized struct field" { | 917 | test "0 sized struct field" { |
| 918 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 919 | |||
| 906 | const ally = testing.allocator; | 920 | const ally = testing.allocator; |
| 907 | 921 | ||
| 908 | const Foo = struct { | 922 | const Foo = struct { |
| ... | @@ -930,6 +944,8 @@ test "0 sized struct field" { | ... | @@ -930,6 +944,8 @@ test "0 sized struct field" { |
| 930 | } | 944 | } |
| 931 | 945 | ||
| 932 | test "0 sized struct" { | 946 | test "0 sized struct" { |
| 947 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 948 | |||
| 933 | const ally = testing.allocator; | 949 | const ally = testing.allocator; |
| 934 | 950 | ||
| 935 | const Foo = struct { | 951 | const Foo = struct { |
lib/std/net/test.zig+4| ... | @@ -109,6 +109,8 @@ test "parse and render UNIX addresses" { | ... | @@ -109,6 +109,8 @@ test "parse and render UNIX addresses" { |
| 109 | test "resolve DNS" { | 109 | test "resolve DNS" { |
| 110 | if (builtin.os.tag == .wasi) return error.SkipZigTest; | 110 | if (builtin.os.tag == .wasi) return error.SkipZigTest; |
| 111 | 111 | ||
| 112 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 113 | |||
| 112 | if (builtin.os.tag == .windows) { | 114 | if (builtin.os.tag == .windows) { |
| 113 | _ = try std.os.windows.WSAStartup(2, 2); | 115 | _ = try std.os.windows.WSAStartup(2, 2); |
| 114 | } | 116 | } |
| ... | @@ -291,6 +293,8 @@ test "listen on a unix socket, send bytes, receive bytes" { | ... | @@ -291,6 +293,8 @@ test "listen on a unix socket, send bytes, receive bytes" { |
| 291 | if (builtin.single_threaded) return error.SkipZigTest; | 293 | if (builtin.single_threaded) return error.SkipZigTest; |
| 292 | if (!net.has_unix_sockets) return error.SkipZigTest; | 294 | if (!net.has_unix_sockets) return error.SkipZigTest; |
| 293 | 295 | ||
| 296 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 297 | |||
| 294 | if (builtin.os.tag == .windows) { | 298 | if (builtin.os.tag == .windows) { |
| 295 | _ = try std.os.windows.WSAStartup(2, 2); | 299 | _ = try std.os.windows.WSAStartup(2, 2); |
| 296 | } | 300 | } |
lib/std/os/linux/io_uring.zig+26| ... | @@ -1741,6 +1741,8 @@ test "readv" { | ... | @@ -1741,6 +1741,8 @@ test "readv" { |
| 1741 | test "writev/fsync/readv" { | 1741 | test "writev/fsync/readv" { |
| 1742 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 1742 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 1743 | 1743 | ||
| 1744 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1745 | |||
| 1744 | var ring = IO_Uring.init(4, 0) catch |err| switch (err) { | 1746 | var ring = IO_Uring.init(4, 0) catch |err| switch (err) { |
| 1745 | error.SystemOutdated => return error.SkipZigTest, | 1747 | error.SystemOutdated => return error.SkipZigTest, |
| 1746 | error.PermissionDenied => return error.SkipZigTest, | 1748 | error.PermissionDenied => return error.SkipZigTest, |
| ... | @@ -1811,6 +1813,8 @@ test "writev/fsync/readv" { | ... | @@ -1811,6 +1813,8 @@ test "writev/fsync/readv" { |
| 1811 | test "write/read" { | 1813 | test "write/read" { |
| 1812 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 1814 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 1813 | 1815 | ||
| 1816 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1817 | |||
| 1814 | var ring = IO_Uring.init(2, 0) catch |err| switch (err) { | 1818 | var ring = IO_Uring.init(2, 0) catch |err| switch (err) { |
| 1815 | error.SystemOutdated => return error.SkipZigTest, | 1819 | error.SystemOutdated => return error.SkipZigTest, |
| 1816 | error.PermissionDenied => return error.SkipZigTest, | 1820 | error.PermissionDenied => return error.SkipZigTest, |
| ... | @@ -1929,6 +1933,8 @@ test "splice/read" { | ... | @@ -1929,6 +1933,8 @@ test "splice/read" { |
| 1929 | test "write_fixed/read_fixed" { | 1933 | test "write_fixed/read_fixed" { |
| 1930 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 1934 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 1931 | 1935 | ||
| 1936 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1937 | |||
| 1932 | var ring = IO_Uring.init(2, 0) catch |err| switch (err) { | 1938 | var ring = IO_Uring.init(2, 0) catch |err| switch (err) { |
| 1933 | error.SystemOutdated => return error.SkipZigTest, | 1939 | error.SystemOutdated => return error.SkipZigTest, |
| 1934 | error.PermissionDenied => return error.SkipZigTest, | 1940 | error.PermissionDenied => return error.SkipZigTest, |
| ... | @@ -1994,6 +2000,8 @@ test "write_fixed/read_fixed" { | ... | @@ -1994,6 +2000,8 @@ test "write_fixed/read_fixed" { |
| 1994 | test "openat" { | 2000 | test "openat" { |
| 1995 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 2001 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 1996 | 2002 | ||
| 2003 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2004 | |||
| 1997 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { | 2005 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { |
| 1998 | error.SystemOutdated => return error.SkipZigTest, | 2006 | error.SystemOutdated => return error.SkipZigTest, |
| 1999 | error.PermissionDenied => return error.SkipZigTest, | 2007 | error.PermissionDenied => return error.SkipZigTest, |
| ... | @@ -2045,6 +2053,8 @@ test "openat" { | ... | @@ -2045,6 +2053,8 @@ test "openat" { |
| 2045 | test "close" { | 2053 | test "close" { |
| 2046 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 2054 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 2047 | 2055 | ||
| 2056 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2057 | |||
| 2048 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { | 2058 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { |
| 2049 | error.SystemOutdated => return error.SkipZigTest, | 2059 | error.SystemOutdated => return error.SkipZigTest, |
| 2050 | error.PermissionDenied => return error.SkipZigTest, | 2060 | error.PermissionDenied => return error.SkipZigTest, |
| ... | @@ -2204,6 +2214,8 @@ test "sendmsg/recvmsg" { | ... | @@ -2204,6 +2214,8 @@ test "sendmsg/recvmsg" { |
| 2204 | test "timeout (after a relative time)" { | 2214 | test "timeout (after a relative time)" { |
| 2205 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 2215 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 2206 | 2216 | ||
| 2217 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2218 | |||
| 2207 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { | 2219 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { |
| 2208 | error.SystemOutdated => return error.SkipZigTest, | 2220 | error.SystemOutdated => return error.SkipZigTest, |
| 2209 | error.PermissionDenied => return error.SkipZigTest, | 2221 | error.PermissionDenied => return error.SkipZigTest, |
| ... | @@ -2376,6 +2388,8 @@ test "accept/connect/recv/link_timeout" { | ... | @@ -2376,6 +2388,8 @@ test "accept/connect/recv/link_timeout" { |
| 2376 | test "fallocate" { | 2388 | test "fallocate" { |
| 2377 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 2389 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 2378 | 2390 | ||
| 2391 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2392 | |||
| 2379 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { | 2393 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { |
| 2380 | error.SystemOutdated => return error.SkipZigTest, | 2394 | error.SystemOutdated => return error.SkipZigTest, |
| 2381 | error.PermissionDenied => return error.SkipZigTest, | 2395 | error.PermissionDenied => return error.SkipZigTest, |
| ... | @@ -2422,6 +2436,8 @@ test "fallocate" { | ... | @@ -2422,6 +2436,8 @@ test "fallocate" { |
| 2422 | test "statx" { | 2436 | test "statx" { |
| 2423 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 2437 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 2424 | 2438 | ||
| 2439 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2440 | |||
| 2425 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { | 2441 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { |
| 2426 | error.SystemOutdated => return error.SkipZigTest, | 2442 | error.SystemOutdated => return error.SkipZigTest, |
| 2427 | error.PermissionDenied => return error.SkipZigTest, | 2443 | error.PermissionDenied => return error.SkipZigTest, |
| ... | @@ -2678,6 +2694,8 @@ test "shutdown" { | ... | @@ -2678,6 +2694,8 @@ test "shutdown" { |
| 2678 | test "renameat" { | 2694 | test "renameat" { |
| 2679 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 2695 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 2680 | 2696 | ||
| 2697 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2698 | |||
| 2681 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { | 2699 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { |
| 2682 | error.SystemOutdated => return error.SkipZigTest, | 2700 | error.SystemOutdated => return error.SkipZigTest, |
| 2683 | error.PermissionDenied => return error.SkipZigTest, | 2701 | error.PermissionDenied => return error.SkipZigTest, |
| ... | @@ -2747,6 +2765,8 @@ test "renameat" { | ... | @@ -2747,6 +2765,8 @@ test "renameat" { |
| 2747 | test "unlinkat" { | 2765 | test "unlinkat" { |
| 2748 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 2766 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 2749 | 2767 | ||
| 2768 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2769 | |||
| 2750 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { | 2770 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { |
| 2751 | error.SystemOutdated => return error.SkipZigTest, | 2771 | error.SystemOutdated => return error.SkipZigTest, |
| 2752 | error.PermissionDenied => return error.SkipZigTest, | 2772 | error.PermissionDenied => return error.SkipZigTest, |
| ... | @@ -2799,6 +2819,8 @@ test "unlinkat" { | ... | @@ -2799,6 +2819,8 @@ test "unlinkat" { |
| 2799 | test "mkdirat" { | 2819 | test "mkdirat" { |
| 2800 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 2820 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 2801 | 2821 | ||
| 2822 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2823 | |||
| 2802 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { | 2824 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { |
| 2803 | error.SystemOutdated => return error.SkipZigTest, | 2825 | error.SystemOutdated => return error.SkipZigTest, |
| 2804 | error.PermissionDenied => return error.SkipZigTest, | 2826 | error.PermissionDenied => return error.SkipZigTest, |
| ... | @@ -2843,6 +2865,8 @@ test "mkdirat" { | ... | @@ -2843,6 +2865,8 @@ test "mkdirat" { |
| 2843 | test "symlinkat" { | 2865 | test "symlinkat" { |
| 2844 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 2866 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 2845 | 2867 | ||
| 2868 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2869 | |||
| 2846 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { | 2870 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { |
| 2847 | error.SystemOutdated => return error.SkipZigTest, | 2871 | error.SystemOutdated => return error.SkipZigTest, |
| 2848 | error.PermissionDenied => return error.SkipZigTest, | 2872 | error.PermissionDenied => return error.SkipZigTest, |
| ... | @@ -2891,6 +2915,8 @@ test "symlinkat" { | ... | @@ -2891,6 +2915,8 @@ test "symlinkat" { |
| 2891 | test "linkat" { | 2915 | test "linkat" { |
| 2892 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 2916 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 2893 | 2917 | ||
| 2918 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 2919 | |||
| 2894 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { | 2920 | var ring = IO_Uring.init(1, 0) catch |err| switch (err) { |
| 2895 | error.SystemOutdated => return error.SkipZigTest, | 2921 | error.SystemOutdated => return error.SkipZigTest, |
| 2896 | error.PermissionDenied => return error.SkipZigTest, | 2922 | error.PermissionDenied => return error.SkipZigTest, |
lib/std/os/linux/test.zig+6| ... | @@ -8,6 +8,8 @@ const expectEqual = std.testing.expectEqual; | ... | @@ -8,6 +8,8 @@ const expectEqual = std.testing.expectEqual; |
| 8 | const fs = std.fs; | 8 | const fs = std.fs; |
| 9 | 9 | ||
| 10 | test "fallocate" { | 10 | test "fallocate" { |
| 11 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 12 | |||
| 11 | var tmp = std.testing.tmpDir(.{}); | 13 | var tmp = std.testing.tmpDir(.{}); |
| 12 | defer tmp.cleanup(); | 14 | defer tmp.cleanup(); |
| 13 | 15 | ||
| ... | @@ -69,6 +71,8 @@ test "timer" { | ... | @@ -69,6 +71,8 @@ test "timer" { |
| 69 | } | 71 | } |
| 70 | 72 | ||
| 71 | test "statx" { | 73 | test "statx" { |
| 74 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 75 | |||
| 72 | var tmp = std.testing.tmpDir(.{}); | 76 | var tmp = std.testing.tmpDir(.{}); |
| 73 | defer tmp.cleanup(); | 77 | defer tmp.cleanup(); |
| 74 | 78 | ||
| ... | @@ -107,6 +111,8 @@ test "user and group ids" { | ... | @@ -107,6 +111,8 @@ test "user and group ids" { |
| 107 | } | 111 | } |
| 108 | 112 | ||
| 109 | test "fadvise" { | 113 | test "fadvise" { |
| 114 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 115 | |||
| 110 | var tmp = std.testing.tmpDir(.{}); | 116 | var tmp = std.testing.tmpDir(.{}); |
| 111 | defer tmp.cleanup(); | 117 | defer tmp.cleanup(); |
| 112 | 118 |
lib/std/os/test.zig+40| ... | @@ -88,6 +88,8 @@ test "chdir smoke test" { | ... | @@ -88,6 +88,8 @@ test "chdir smoke test" { |
| 88 | test "open smoke test" { | 88 | test "open smoke test" { |
| 89 | if (native_os == .wasi) return error.SkipZigTest; | 89 | if (native_os == .wasi) return error.SkipZigTest; |
| 90 | 90 | ||
| 91 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 92 | |||
| 91 | // TODO verify file attributes using `fstat` | 93 | // TODO verify file attributes using `fstat` |
| 92 | 94 | ||
| 93 | var tmp = tmpDir(.{}); | 95 | var tmp = tmpDir(.{}); |
| ... | @@ -142,6 +144,8 @@ test "open smoke test" { | ... | @@ -142,6 +144,8 @@ test "open smoke test" { |
| 142 | test "openat smoke test" { | 144 | test "openat smoke test" { |
| 143 | if (native_os == .wasi and builtin.link_libc) return error.SkipZigTest; | 145 | if (native_os == .wasi and builtin.link_libc) return error.SkipZigTest; |
| 144 | 146 | ||
| 147 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 148 | |||
| 145 | // TODO verify file attributes using `fstatat` | 149 | // TODO verify file attributes using `fstatat` |
| 146 | 150 | ||
| 147 | var tmp = tmpDir(.{}); | 151 | var tmp = tmpDir(.{}); |
| ... | @@ -276,6 +280,8 @@ test "link with relative paths" { | ... | @@ -276,6 +280,8 @@ test "link with relative paths" { |
| 276 | test "linkat with different directories" { | 280 | test "linkat with different directories" { |
| 277 | if (native_os == .wasi and builtin.link_libc) return error.SkipZigTest; | 281 | if (native_os == .wasi and builtin.link_libc) return error.SkipZigTest; |
| 278 | 282 | ||
| 283 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 284 | |||
| 279 | switch (native_os) { | 285 | switch (native_os) { |
| 280 | .wasi, .linux, .solaris, .illumos => {}, | 286 | .wasi, .linux, .solaris, .illumos => {}, |
| 281 | else => return error.SkipZigTest, | 287 | else => return error.SkipZigTest, |
| ... | @@ -321,6 +327,8 @@ test "fstatat" { | ... | @@ -321,6 +327,8 @@ test "fstatat" { |
| 321 | // enable when `fstat` and `fstatat` are implemented on Windows | 327 | // enable when `fstat` and `fstatat` are implemented on Windows |
| 322 | if (native_os == .windows) return error.SkipZigTest; | 328 | if (native_os == .windows) return error.SkipZigTest; |
| 323 | 329 | ||
| 330 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 331 | |||
| 324 | var tmp = tmpDir(.{}); | 332 | var tmp = tmpDir(.{}); |
| 325 | defer tmp.cleanup(); | 333 | defer tmp.cleanup(); |
| 326 | 334 | ||
| ... | @@ -340,6 +348,8 @@ test "fstatat" { | ... | @@ -340,6 +348,8 @@ test "fstatat" { |
| 340 | } | 348 | } |
| 341 | 349 | ||
| 342 | test "readlinkat" { | 350 | test "readlinkat" { |
| 351 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 352 | |||
| 343 | var tmp = tmpDir(.{}); | 353 | var tmp = tmpDir(.{}); |
| 344 | defer tmp.cleanup(); | 354 | defer tmp.cleanup(); |
| 345 | 355 | ||
| ... | @@ -566,6 +576,8 @@ test "mmap" { | ... | @@ -566,6 +576,8 @@ test "mmap" { |
| 566 | if (native_os == .windows or native_os == .wasi) | 576 | if (native_os == .windows or native_os == .wasi) |
| 567 | return error.SkipZigTest; | 577 | return error.SkipZigTest; |
| 568 | 578 | ||
| 579 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 580 | |||
| 569 | var tmp = tmpDir(.{}); | 581 | var tmp = tmpDir(.{}); |
| 570 | defer tmp.cleanup(); | 582 | defer tmp.cleanup(); |
| 571 | 583 | ||
| ... | @@ -676,6 +688,8 @@ test "fcntl" { | ... | @@ -676,6 +688,8 @@ test "fcntl" { |
| 676 | if (native_os == .windows or native_os == .wasi) | 688 | if (native_os == .windows or native_os == .wasi) |
| 677 | return error.SkipZigTest; | 689 | return error.SkipZigTest; |
| 678 | 690 | ||
| 691 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 692 | |||
| 679 | var tmp = tmpDir(.{}); | 693 | var tmp = tmpDir(.{}); |
| 680 | defer tmp.cleanup(); | 694 | defer tmp.cleanup(); |
| 681 | 695 | ||
| ... | @@ -716,6 +730,8 @@ test "sync" { | ... | @@ -716,6 +730,8 @@ test "sync" { |
| 716 | if (native_os != .linux) | 730 | if (native_os != .linux) |
| 717 | return error.SkipZigTest; | 731 | return error.SkipZigTest; |
| 718 | 732 | ||
| 733 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 734 | |||
| 719 | var tmp = tmpDir(.{}); | 735 | var tmp = tmpDir(.{}); |
| 720 | defer tmp.cleanup(); | 736 | defer tmp.cleanup(); |
| 721 | 737 | ||
| ... | @@ -736,6 +752,8 @@ test "fsync" { | ... | @@ -736,6 +752,8 @@ test "fsync" { |
| 736 | else => return error.SkipZigTest, | 752 | else => return error.SkipZigTest, |
| 737 | } | 753 | } |
| 738 | 754 | ||
| 755 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 756 | |||
| 739 | var tmp = tmpDir(.{}); | 757 | var tmp = tmpDir(.{}); |
| 740 | defer tmp.cleanup(); | 758 | defer tmp.cleanup(); |
| 741 | 759 | ||
| ... | @@ -874,6 +892,8 @@ test "dup & dup2" { | ... | @@ -874,6 +892,8 @@ test "dup & dup2" { |
| 874 | else => return error.SkipZigTest, | 892 | else => return error.SkipZigTest, |
| 875 | } | 893 | } |
| 876 | 894 | ||
| 895 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 896 | |||
| 877 | var tmp = tmpDir(.{}); | 897 | var tmp = tmpDir(.{}); |
| 878 | defer tmp.cleanup(); | 898 | defer tmp.cleanup(); |
| 879 | 899 | ||
| ... | @@ -903,6 +923,8 @@ test "dup & dup2" { | ... | @@ -903,6 +923,8 @@ test "dup & dup2" { |
| 903 | test "writev longer than IOV_MAX" { | 923 | test "writev longer than IOV_MAX" { |
| 904 | if (native_os == .windows or native_os == .wasi) return error.SkipZigTest; | 924 | if (native_os == .windows or native_os == .wasi) return error.SkipZigTest; |
| 905 | 925 | ||
| 926 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 927 | |||
| 906 | var tmp = tmpDir(.{}); | 928 | var tmp = tmpDir(.{}); |
| 907 | defer tmp.cleanup(); | 929 | defer tmp.cleanup(); |
| 908 | 930 | ||
| ... | @@ -920,6 +942,8 @@ test "POSIX file locking with fcntl" { | ... | @@ -920,6 +942,8 @@ test "POSIX file locking with fcntl" { |
| 920 | return error.SkipZigTest; | 942 | return error.SkipZigTest; |
| 921 | } | 943 | } |
| 922 | 944 | ||
| 945 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 946 | |||
| 923 | if (true) { | 947 | if (true) { |
| 924 | // https://github.com/ziglang/zig/issues/11074 | 948 | // https://github.com/ziglang/zig/issues/11074 |
| 925 | return error.SkipZigTest; | 949 | return error.SkipZigTest; |
| ... | @@ -982,6 +1006,8 @@ test "POSIX file locking with fcntl" { | ... | @@ -982,6 +1006,8 @@ test "POSIX file locking with fcntl" { |
| 982 | test "rename smoke test" { | 1006 | test "rename smoke test" { |
| 983 | if (native_os == .wasi) return error.SkipZigTest; | 1007 | if (native_os == .wasi) return error.SkipZigTest; |
| 984 | 1008 | ||
| 1009 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1010 | |||
| 985 | var tmp = tmpDir(.{}); | 1011 | var tmp = tmpDir(.{}); |
| 986 | defer tmp.cleanup(); | 1012 | defer tmp.cleanup(); |
| 987 | 1013 | ||
| ... | @@ -1038,6 +1064,8 @@ test "rename smoke test" { | ... | @@ -1038,6 +1064,8 @@ test "rename smoke test" { |
| 1038 | test "access smoke test" { | 1064 | test "access smoke test" { |
| 1039 | if (native_os == .wasi) return error.SkipZigTest; | 1065 | if (native_os == .wasi) return error.SkipZigTest; |
| 1040 | 1066 | ||
| 1067 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1068 | |||
| 1041 | var tmp = tmpDir(.{}); | 1069 | var tmp = tmpDir(.{}); |
| 1042 | defer tmp.cleanup(); | 1070 | defer tmp.cleanup(); |
| 1043 | 1071 | ||
| ... | @@ -1102,6 +1130,8 @@ test "timerfd" { | ... | @@ -1102,6 +1130,8 @@ test "timerfd" { |
| 1102 | } | 1130 | } |
| 1103 | 1131 | ||
| 1104 | test "isatty" { | 1132 | test "isatty" { |
| 1133 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1134 | |||
| 1105 | var tmp = tmpDir(.{}); | 1135 | var tmp = tmpDir(.{}); |
| 1106 | defer tmp.cleanup(); | 1136 | defer tmp.cleanup(); |
| 1107 | 1137 | ||
| ... | @@ -1114,6 +1144,8 @@ test "isatty" { | ... | @@ -1114,6 +1144,8 @@ test "isatty" { |
| 1114 | test "read with empty buffer" { | 1144 | test "read with empty buffer" { |
| 1115 | if (native_os == .wasi) return error.SkipZigTest; | 1145 | if (native_os == .wasi) return error.SkipZigTest; |
| 1116 | 1146 | ||
| 1147 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1148 | |||
| 1117 | var tmp = tmpDir(.{}); | 1149 | var tmp = tmpDir(.{}); |
| 1118 | defer tmp.cleanup(); | 1150 | defer tmp.cleanup(); |
| 1119 | 1151 | ||
| ... | @@ -1139,6 +1171,8 @@ test "read with empty buffer" { | ... | @@ -1139,6 +1171,8 @@ test "read with empty buffer" { |
| 1139 | test "pread with empty buffer" { | 1171 | test "pread with empty buffer" { |
| 1140 | if (native_os == .wasi) return error.SkipZigTest; | 1172 | if (native_os == .wasi) return error.SkipZigTest; |
| 1141 | 1173 | ||
| 1174 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1175 | |||
| 1142 | var tmp = tmpDir(.{}); | 1176 | var tmp = tmpDir(.{}); |
| 1143 | defer tmp.cleanup(); | 1177 | defer tmp.cleanup(); |
| 1144 | 1178 | ||
| ... | @@ -1164,6 +1198,8 @@ test "pread with empty buffer" { | ... | @@ -1164,6 +1198,8 @@ test "pread with empty buffer" { |
| 1164 | test "write with empty buffer" { | 1198 | test "write with empty buffer" { |
| 1165 | if (native_os == .wasi) return error.SkipZigTest; | 1199 | if (native_os == .wasi) return error.SkipZigTest; |
| 1166 | 1200 | ||
| 1201 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1202 | |||
| 1167 | var tmp = tmpDir(.{}); | 1203 | var tmp = tmpDir(.{}); |
| 1168 | defer tmp.cleanup(); | 1204 | defer tmp.cleanup(); |
| 1169 | 1205 | ||
| ... | @@ -1189,6 +1225,8 @@ test "write with empty buffer" { | ... | @@ -1189,6 +1225,8 @@ test "write with empty buffer" { |
| 1189 | test "pwrite with empty buffer" { | 1225 | test "pwrite with empty buffer" { |
| 1190 | if (native_os == .wasi) return error.SkipZigTest; | 1226 | if (native_os == .wasi) return error.SkipZigTest; |
| 1191 | 1227 | ||
| 1228 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1229 | |||
| 1192 | var tmp = tmpDir(.{}); | 1230 | var tmp = tmpDir(.{}); |
| 1193 | defer tmp.cleanup(); | 1231 | defer tmp.cleanup(); |
| 1194 | 1232 | ||
| ... | @@ -1214,6 +1252,8 @@ test "pwrite with empty buffer" { | ... | @@ -1214,6 +1252,8 @@ test "pwrite with empty buffer" { |
| 1214 | test "fchmodat smoke test" { | 1252 | test "fchmodat smoke test" { |
| 1215 | if (!std.fs.has_executable_bit) return error.SkipZigTest; | 1253 | if (!std.fs.has_executable_bit) return error.SkipZigTest; |
| 1216 | 1254 | ||
| 1255 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1256 | |||
| 1217 | var tmp = tmpDir(.{}); | 1257 | var tmp = tmpDir(.{}); |
| 1218 | defer tmp.cleanup(); | 1258 | defer tmp.cleanup(); |
| 1219 | 1259 |
lib/std/rand/Xoshiro256.zig+4-1| ... | @@ -90,7 +90,10 @@ pub fn fill(self: *Xoshiro256, buf: []u8) void { | ... | @@ -90,7 +90,10 @@ pub fn fill(self: *Xoshiro256, buf: []u8) void { |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | test "xoroshiro sequence" { | 92 | test "xoroshiro sequence" { |
| 93 | if (@import("builtin").zig_backend == .stage2_c) return error.SkipZigTest; | 93 | switch (@import("builtin").zig_backend) { |
| 94 | .stage2_c, .stage2_x86_64 => return error.SkipZigTest, | ||
| 95 | else => {}, | ||
| 96 | } | ||
| 94 | 97 | ||
| 95 | var r = Xoshiro256.init(0); | 98 | var r = Xoshiro256.init(0); |
| 96 | 99 |
lib/std/rand/test.zig+2| ... | @@ -436,6 +436,8 @@ fn testRangeBias(r: Random, start: i8, end: i8, biased: bool) !void { | ... | @@ -436,6 +436,8 @@ fn testRangeBias(r: Random, start: i8, end: i8, biased: bool) !void { |
| 436 | } | 436 | } |
| 437 | 437 | ||
| 438 | test "CSPRNG" { | 438 | test "CSPRNG" { |
| 439 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 440 | |||
| 439 | var secret_seed: [DefaultCsprng.secret_seed_length]u8 = undefined; | 441 | var secret_seed: [DefaultCsprng.secret_seed_length]u8 = undefined; |
| 440 | std.crypto.random.bytes(&secret_seed); | 442 | std.crypto.random.bytes(&secret_seed); |
| 441 | var csprng = DefaultCsprng.init(secret_seed); | 443 | var csprng = DefaultCsprng.init(secret_seed); |
lib/std/simd.zig+9| ... | @@ -196,10 +196,13 @@ pub fn extract( | ... | @@ -196,10 +196,13 @@ pub fn extract( |
| 196 | } | 196 | } |
| 197 | 197 | ||
| 198 | test "vector patterns" { | 198 | test "vector patterns" { |
| 199 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 200 | |||
| 199 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) { | 201 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) { |
| 200 | // https://github.com/ziglang/zig/issues/12012 | 202 | // https://github.com/ziglang/zig/issues/12012 |
| 201 | return error.SkipZigTest; | 203 | return error.SkipZigTest; |
| 202 | } | 204 | } |
| 205 | |||
| 203 | const base = @Vector(4, u32){ 10, 20, 30, 40 }; | 206 | const base = @Vector(4, u32){ 10, 20, 30, 40 }; |
| 204 | const other_base = @Vector(4, u32){ 55, 66, 77, 88 }; | 207 | const other_base = @Vector(4, u32){ 55, 66, 77, 88 }; |
| 205 | 208 | ||
| ... | @@ -269,6 +272,8 @@ pub fn reverseOrder(vec: anytype) @TypeOf(vec) { | ... | @@ -269,6 +272,8 @@ pub fn reverseOrder(vec: anytype) @TypeOf(vec) { |
| 269 | } | 272 | } |
| 270 | 273 | ||
| 271 | test "vector shifting" { | 274 | test "vector shifting" { |
| 275 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 276 | |||
| 272 | const base = @Vector(4, u32){ 10, 20, 30, 40 }; | 277 | const base = @Vector(4, u32){ 10, 20, 30, 40 }; |
| 273 | 278 | ||
| 274 | try std.testing.expectEqual([4]u32{ 30, 40, 999, 999 }, shiftElementsLeft(base, 2, 999)); | 279 | try std.testing.expectEqual([4]u32{ 30, 40, 999, 999 }, shiftElementsLeft(base, 2, 999)); |
| ... | @@ -333,6 +338,8 @@ pub fn countElementsWithValue(vec: anytype, value: std.meta.Child(@TypeOf(vec))) | ... | @@ -333,6 +338,8 @@ pub fn countElementsWithValue(vec: anytype, value: std.meta.Child(@TypeOf(vec))) |
| 333 | } | 338 | } |
| 334 | 339 | ||
| 335 | test "vector searching" { | 340 | test "vector searching" { |
| 341 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 342 | |||
| 336 | const base = @Vector(8, u32){ 6, 4, 7, 4, 4, 2, 3, 7 }; | 343 | const base = @Vector(8, u32){ 6, 4, 7, 4, 4, 2, 3, 7 }; |
| 337 | 344 | ||
| 338 | try std.testing.expectEqual(@as(?u3, 1), firstIndexOfValue(base, 4)); | 345 | try std.testing.expectEqual(@as(?u3, 1), firstIndexOfValue(base, 4)); |
| ... | @@ -424,6 +431,8 @@ pub fn prefixScan(comptime op: std.builtin.ReduceOp, comptime hop: isize, vec: a | ... | @@ -424,6 +431,8 @@ pub fn prefixScan(comptime op: std.builtin.ReduceOp, comptime hop: isize, vec: a |
| 424 | } | 431 | } |
| 425 | 432 | ||
| 426 | test "vector prefix scan" { | 433 | test "vector prefix scan" { |
| 434 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 435 | |||
| 427 | if (comptime builtin.cpu.arch.isMIPS()) { | 436 | if (comptime builtin.cpu.arch.isMIPS()) { |
| 428 | return error.SkipZigTest; | 437 | return error.SkipZigTest; |
| 429 | } | 438 | } |
lib/std/time.zig+4| ... | @@ -122,6 +122,8 @@ pub fn nanoTimestamp() i128 { | ... | @@ -122,6 +122,8 @@ pub fn nanoTimestamp() i128 { |
| 122 | } | 122 | } |
| 123 | 123 | ||
| 124 | test "timestamp" { | 124 | test "timestamp" { |
| 125 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 126 | |||
| 125 | const margin = ns_per_ms * 50; | 127 | const margin = ns_per_ms * 50; |
| 126 | 128 | ||
| 127 | const time_0 = milliTimestamp(); | 129 | const time_0 = milliTimestamp(); |
| ... | @@ -319,6 +321,8 @@ pub const Timer = struct { | ... | @@ -319,6 +321,8 @@ pub const Timer = struct { |
| 319 | }; | 321 | }; |
| 320 | 322 | ||
| 321 | test "Timer + Instant" { | 323 | test "Timer + Instant" { |
| 324 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 325 | |||
| 322 | const margin = ns_per_ms * 150; | 326 | const margin = ns_per_ms * 150; |
| 323 | 327 | ||
| 324 | var timer = try Timer.start(); | 328 | var timer = try Timer.start(); |
lib/std/unicode.zig+41| ... | @@ -1,5 +1,6 @@ | ... | @@ -1,5 +1,6 @@ |
| 1 | const std = @import("./std.zig"); | 1 | const std = @import("./std.zig"); |
| 2 | const assert = std.debug.assert; | 2 | const assert = std.debug.assert; |
| 3 | const builtin = @import("builtin"); | ||
| 3 | const testing = std.testing; | 4 | const testing = std.testing; |
| 4 | const mem = std.mem; | 5 | const mem = std.mem; |
| 5 | 6 | ||
| ... | @@ -499,11 +500,15 @@ fn testUtf16CountCodepoints() !void { | ... | @@ -499,11 +500,15 @@ fn testUtf16CountCodepoints() !void { |
| 499 | } | 500 | } |
| 500 | 501 | ||
| 501 | test "utf16 count codepoints" { | 502 | test "utf16 count codepoints" { |
| 503 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 504 | |||
| 502 | try testUtf16CountCodepoints(); | 505 | try testUtf16CountCodepoints(); |
| 503 | try comptime testUtf16CountCodepoints(); | 506 | try comptime testUtf16CountCodepoints(); |
| 504 | } | 507 | } |
| 505 | 508 | ||
| 506 | test "utf8 encode" { | 509 | test "utf8 encode" { |
| 510 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 511 | |||
| 507 | try comptime testUtf8Encode(); | 512 | try comptime testUtf8Encode(); |
| 508 | try testUtf8Encode(); | 513 | try testUtf8Encode(); |
| 509 | } | 514 | } |
| ... | @@ -530,6 +535,8 @@ fn testUtf8Encode() !void { | ... | @@ -530,6 +535,8 @@ fn testUtf8Encode() !void { |
| 530 | } | 535 | } |
| 531 | 536 | ||
| 532 | test "utf8 encode error" { | 537 | test "utf8 encode error" { |
| 538 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 539 | |||
| 533 | try comptime testUtf8EncodeError(); | 540 | try comptime testUtf8EncodeError(); |
| 534 | try testUtf8EncodeError(); | 541 | try testUtf8EncodeError(); |
| 535 | } | 542 | } |
| ... | @@ -546,6 +553,8 @@ fn testErrorEncode(codePoint: u21, array: []u8, expectedErr: anyerror) !void { | ... | @@ -546,6 +553,8 @@ fn testErrorEncode(codePoint: u21, array: []u8, expectedErr: anyerror) !void { |
| 546 | } | 553 | } |
| 547 | 554 | ||
| 548 | test "utf8 iterator on ascii" { | 555 | test "utf8 iterator on ascii" { |
| 556 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 557 | |||
| 549 | try comptime testUtf8IteratorOnAscii(); | 558 | try comptime testUtf8IteratorOnAscii(); |
| 550 | try testUtf8IteratorOnAscii(); | 559 | try testUtf8IteratorOnAscii(); |
| 551 | } | 560 | } |
| ... | @@ -566,6 +575,8 @@ fn testUtf8IteratorOnAscii() !void { | ... | @@ -566,6 +575,8 @@ fn testUtf8IteratorOnAscii() !void { |
| 566 | } | 575 | } |
| 567 | 576 | ||
| 568 | test "utf8 view bad" { | 577 | test "utf8 view bad" { |
| 578 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 579 | |||
| 569 | try comptime testUtf8ViewBad(); | 580 | try comptime testUtf8ViewBad(); |
| 570 | try testUtf8ViewBad(); | 581 | try testUtf8ViewBad(); |
| 571 | } | 582 | } |
| ... | @@ -576,6 +587,8 @@ fn testUtf8ViewBad() !void { | ... | @@ -576,6 +587,8 @@ fn testUtf8ViewBad() !void { |
| 576 | } | 587 | } |
| 577 | 588 | ||
| 578 | test "utf8 view ok" { | 589 | test "utf8 view ok" { |
| 590 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 591 | |||
| 579 | try comptime testUtf8ViewOk(); | 592 | try comptime testUtf8ViewOk(); |
| 580 | try testUtf8ViewOk(); | 593 | try testUtf8ViewOk(); |
| 581 | } | 594 | } |
| ... | @@ -596,6 +609,8 @@ fn testUtf8ViewOk() !void { | ... | @@ -596,6 +609,8 @@ fn testUtf8ViewOk() !void { |
| 596 | } | 609 | } |
| 597 | 610 | ||
| 598 | test "validate slice" { | 611 | test "validate slice" { |
| 612 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 613 | |||
| 599 | try comptime testValidateSlice(); | 614 | try comptime testValidateSlice(); |
| 600 | try testValidateSlice(); | 615 | try testValidateSlice(); |
| 601 | 616 | ||
| ... | @@ -636,6 +651,8 @@ fn testValidateSlice() !void { | ... | @@ -636,6 +651,8 @@ fn testValidateSlice() !void { |
| 636 | } | 651 | } |
| 637 | 652 | ||
| 638 | test "valid utf8" { | 653 | test "valid utf8" { |
| 654 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 655 | |||
| 639 | try comptime testValidUtf8(); | 656 | try comptime testValidUtf8(); |
| 640 | try testValidUtf8(); | 657 | try testValidUtf8(); |
| 641 | } | 658 | } |
| ... | @@ -655,6 +672,8 @@ fn testValidUtf8() !void { | ... | @@ -655,6 +672,8 @@ fn testValidUtf8() !void { |
| 655 | } | 672 | } |
| 656 | 673 | ||
| 657 | test "invalid utf8 continuation bytes" { | 674 | test "invalid utf8 continuation bytes" { |
| 675 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 676 | |||
| 658 | try comptime testInvalidUtf8ContinuationBytes(); | 677 | try comptime testInvalidUtf8ContinuationBytes(); |
| 659 | try testInvalidUtf8ContinuationBytes(); | 678 | try testInvalidUtf8ContinuationBytes(); |
| 660 | } | 679 | } |
| ... | @@ -687,6 +706,8 @@ fn testInvalidUtf8ContinuationBytes() !void { | ... | @@ -687,6 +706,8 @@ fn testInvalidUtf8ContinuationBytes() !void { |
| 687 | } | 706 | } |
| 688 | 707 | ||
| 689 | test "overlong utf8 codepoint" { | 708 | test "overlong utf8 codepoint" { |
| 709 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 710 | |||
| 690 | try comptime testOverlongUtf8Codepoint(); | 711 | try comptime testOverlongUtf8Codepoint(); |
| 691 | try testOverlongUtf8Codepoint(); | 712 | try testOverlongUtf8Codepoint(); |
| 692 | } | 713 | } |
| ... | @@ -700,6 +721,8 @@ fn testOverlongUtf8Codepoint() !void { | ... | @@ -700,6 +721,8 @@ fn testOverlongUtf8Codepoint() !void { |
| 700 | } | 721 | } |
| 701 | 722 | ||
| 702 | test "misc invalid utf8" { | 723 | test "misc invalid utf8" { |
| 724 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 725 | |||
| 703 | try comptime testMiscInvalidUtf8(); | 726 | try comptime testMiscInvalidUtf8(); |
| 704 | try testMiscInvalidUtf8(); | 727 | try testMiscInvalidUtf8(); |
| 705 | } | 728 | } |
| ... | @@ -715,6 +738,8 @@ fn testMiscInvalidUtf8() !void { | ... | @@ -715,6 +738,8 @@ fn testMiscInvalidUtf8() !void { |
| 715 | } | 738 | } |
| 716 | 739 | ||
| 717 | test "utf8 iterator peeking" { | 740 | test "utf8 iterator peeking" { |
| 741 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 742 | |||
| 718 | try comptime testUtf8Peeking(); | 743 | try comptime testUtf8Peeking(); |
| 719 | try testUtf8Peeking(); | 744 | try testUtf8Peeking(); |
| 720 | } | 745 | } |
| ... | @@ -799,6 +824,8 @@ pub fn utf16leToUtf8(utf8: []u8, utf16le: []const u16) !usize { | ... | @@ -799,6 +824,8 @@ pub fn utf16leToUtf8(utf8: []u8, utf16le: []const u16) !usize { |
| 799 | } | 824 | } |
| 800 | 825 | ||
| 801 | test "utf16leToUtf8" { | 826 | test "utf16leToUtf8" { |
| 827 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 828 | |||
| 802 | var utf16le: [2]u16 = undefined; | 829 | var utf16le: [2]u16 = undefined; |
| 803 | const utf16le_as_bytes = mem.sliceAsBytes(utf16le[0..]); | 830 | const utf16le_as_bytes = mem.sliceAsBytes(utf16le[0..]); |
| 804 | 831 | ||
| ... | @@ -911,6 +938,8 @@ pub fn utf8ToUtf16Le(utf16le: []u16, utf8: []const u8) !usize { | ... | @@ -911,6 +938,8 @@ pub fn utf8ToUtf16Le(utf16le: []u16, utf8: []const u8) !usize { |
| 911 | } | 938 | } |
| 912 | 939 | ||
| 913 | test "utf8ToUtf16Le" { | 940 | test "utf8ToUtf16Le" { |
| 941 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 942 | |||
| 914 | var utf16le: [2]u16 = [_]u16{0} ** 2; | 943 | var utf16le: [2]u16 = [_]u16{0} ** 2; |
| 915 | { | 944 | { |
| 916 | const length = try utf8ToUtf16Le(utf16le[0..], "𐐷"); | 945 | const length = try utf8ToUtf16Le(utf16le[0..], "𐐷"); |
| ... | @@ -929,6 +958,8 @@ test "utf8ToUtf16Le" { | ... | @@ -929,6 +958,8 @@ test "utf8ToUtf16Le" { |
| 929 | } | 958 | } |
| 930 | 959 | ||
| 931 | test "utf8ToUtf16LeWithNull" { | 960 | test "utf8ToUtf16LeWithNull" { |
| 961 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 962 | |||
| 932 | { | 963 | { |
| 933 | const utf16 = try utf8ToUtf16LeWithNull(testing.allocator, "𐐷"); | 964 | const utf16 = try utf8ToUtf16LeWithNull(testing.allocator, "𐐷"); |
| 934 | defer testing.allocator.free(utf16); | 965 | defer testing.allocator.free(utf16); |
| ... | @@ -987,6 +1018,8 @@ fn testCalcUtf16LeLen() !void { | ... | @@ -987,6 +1018,8 @@ fn testCalcUtf16LeLen() !void { |
| 987 | } | 1018 | } |
| 988 | 1019 | ||
| 989 | test "calculate utf16 string length of given utf8 string in u16" { | 1020 | test "calculate utf16 string length of given utf8 string in u16" { |
| 1021 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1022 | |||
| 990 | try testCalcUtf16LeLen(); | 1023 | try testCalcUtf16LeLen(); |
| 991 | try comptime testCalcUtf16LeLen(); | 1024 | try comptime testCalcUtf16LeLen(); |
| 992 | } | 1025 | } |
| ... | @@ -1020,6 +1053,8 @@ pub fn fmtUtf16le(utf16le: []const u16) std.fmt.Formatter(formatUtf16le) { | ... | @@ -1020,6 +1053,8 @@ pub fn fmtUtf16le(utf16le: []const u16) std.fmt.Formatter(formatUtf16le) { |
| 1020 | } | 1053 | } |
| 1021 | 1054 | ||
| 1022 | test "fmtUtf16le" { | 1055 | test "fmtUtf16le" { |
| 1056 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1057 | |||
| 1023 | const expectFmt = std.testing.expectFmt; | 1058 | const expectFmt = std.testing.expectFmt; |
| 1024 | try expectFmt("", "{}", .{fmtUtf16le(utf8ToUtf16LeStringLiteral(""))}); | 1059 | try expectFmt("", "{}", .{fmtUtf16le(utf8ToUtf16LeStringLiteral(""))}); |
| 1025 | try expectFmt("foo", "{}", .{fmtUtf16le(utf8ToUtf16LeStringLiteral("foo"))}); | 1060 | try expectFmt("foo", "{}", .{fmtUtf16le(utf8ToUtf16LeStringLiteral("foo"))}); |
| ... | @@ -1033,6 +1068,8 @@ test "fmtUtf16le" { | ... | @@ -1033,6 +1068,8 @@ test "fmtUtf16le" { |
| 1033 | } | 1068 | } |
| 1034 | 1069 | ||
| 1035 | test "utf8ToUtf16LeStringLiteral" { | 1070 | test "utf8ToUtf16LeStringLiteral" { |
| 1071 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1072 | |||
| 1036 | { | 1073 | { |
| 1037 | const bytes = [_:0]u16{ | 1074 | const bytes = [_:0]u16{ |
| 1038 | mem.nativeToLittle(u16, 0x41), | 1075 | mem.nativeToLittle(u16, 0x41), |
| ... | @@ -1093,6 +1130,8 @@ fn testUtf8CountCodepoints() !void { | ... | @@ -1093,6 +1130,8 @@ fn testUtf8CountCodepoints() !void { |
| 1093 | } | 1130 | } |
| 1094 | 1131 | ||
| 1095 | test "utf8 count codepoints" { | 1132 | test "utf8 count codepoints" { |
| 1133 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1134 | |||
| 1096 | try testUtf8CountCodepoints(); | 1135 | try testUtf8CountCodepoints(); |
| 1097 | try comptime testUtf8CountCodepoints(); | 1136 | try comptime testUtf8CountCodepoints(); |
| 1098 | } | 1137 | } |
| ... | @@ -1109,6 +1148,8 @@ fn testUtf8ValidCodepoint() !void { | ... | @@ -1109,6 +1148,8 @@ fn testUtf8ValidCodepoint() !void { |
| 1109 | } | 1148 | } |
| 1110 | 1149 | ||
| 1111 | test "utf8 valid codepoint" { | 1150 | test "utf8 valid codepoint" { |
| 1151 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1152 | |||
| 1112 | try testUtf8ValidCodepoint(); | 1153 | try testUtf8ValidCodepoint(); |
| 1113 | try comptime testUtf8ValidCodepoint(); | 1154 | try comptime testUtf8ValidCodepoint(); |
| 1114 | } | 1155 | } |
lib/std/zig/CrossTarget.zig+2| ... | @@ -785,6 +785,8 @@ fn parseOs(result: *CrossTarget, diags: *ParseOptions.Diagnostics, text: []const | ... | @@ -785,6 +785,8 @@ fn parseOs(result: *CrossTarget, diags: *ParseOptions.Diagnostics, text: []const |
| 785 | } | 785 | } |
| 786 | 786 | ||
| 787 | test "CrossTarget.parse" { | 787 | test "CrossTarget.parse" { |
| 788 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 789 | |||
| 788 | if (builtin.target.isGnuLibC()) { | 790 | if (builtin.target.isGnuLibC()) { |
| 789 | var cross_target = try CrossTarget.parse(.{}); | 791 | var cross_target = try CrossTarget.parse(.{}); |
| 790 | cross_target.setGnuLibCVersion(2, 1, 1); | 792 | cross_target.setGnuLibCVersion(2, 1, 1); |
lib/std/zig/tokenizer.zig+2| ... | @@ -1478,6 +1478,8 @@ test "utf8" { | ... | @@ -1478,6 +1478,8 @@ test "utf8" { |
| 1478 | } | 1478 | } |
| 1479 | 1479 | ||
| 1480 | test "invalid utf8" { | 1480 | test "invalid utf8" { |
| 1481 | if (@import("builtin").zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 1482 | |||
| 1481 | try testTokenize("//\x80", &.{ | 1483 | try testTokenize("//\x80", &.{ |
| 1482 | .invalid, | 1484 | .invalid, |
| 1483 | }); | 1485 | }); |
src/arch/x86_64/CodeGen.zig+67-42| ... | @@ -2979,8 +2979,21 @@ fn airTrunc(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -2979,8 +2979,21 @@ fn airTrunc(self: *Self, inst: Air.Inst.Index) !void { |
| 2979 | 2979 | ||
| 2980 | const dst_mcv = if (src_mcv.isRegister() and self.reuseOperand(inst, ty_op.operand, 0, src_mcv)) | 2980 | const dst_mcv = if (src_mcv.isRegister() and self.reuseOperand(inst, ty_op.operand, 0, src_mcv)) |
| 2981 | src_mcv | 2981 | src_mcv |
| 2982 | else | 2982 | else if (dst_abi_size <= 8) |
| 2983 | try self.copyToRegisterWithInstTracking(inst, dst_ty, src_mcv); | 2983 | try self.copyToRegisterWithInstTracking(inst, dst_ty, src_mcv) |
| 2984 | else if (dst_abi_size <= 16) dst: { | ||
| 2985 | const dst_regs = try self.register_manager.allocRegs( | ||
| 2986 | 2, | ||
| 2987 | .{ inst, inst }, | ||
| 2988 | abi.RegisterClass.gp, | ||
| 2989 | ); | ||
| 2990 | const dst_mcv: MCValue = .{ .register_pair = dst_regs }; | ||
| 2991 | const dst_locks = self.register_manager.lockRegsAssumeUnused(2, dst_regs); | ||
| 2992 | defer for (dst_locks) |lock| self.register_manager.unlockReg(lock); | ||
| 2993 | |||
| 2994 | try self.genCopy(dst_ty, dst_mcv, src_mcv); | ||
| 2995 | break :dst dst_mcv; | ||
| 2996 | } else return self.fail("TODO implement trunc from {} to {}", .{ src_ty.fmt(mod), dst_ty.fmt(mod) }); | ||
| 2984 | 2997 | ||
| 2985 | if (dst_ty.zigTypeTag(mod) == .Vector) { | 2998 | if (dst_ty.zigTypeTag(mod) == .Vector) { |
| 2986 | assert(src_ty.zigTypeTag(mod) == .Vector and dst_ty.vectorLen(mod) == src_ty.vectorLen(mod)); | 2999 | assert(src_ty.zigTypeTag(mod) == .Vector and dst_ty.vectorLen(mod) == src_ty.vectorLen(mod)); |
| ... | @@ -3051,14 +3064,15 @@ fn airTrunc(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -3051,14 +3064,15 @@ fn airTrunc(self: *Self, inst: Air.Inst.Index) !void { |
| 3051 | break :result dst_mcv; | 3064 | break :result dst_mcv; |
| 3052 | } | 3065 | } |
| 3053 | 3066 | ||
| 3054 | if (dst_abi_size > 8) { | ||
| 3055 | return self.fail("TODO implement trunc for abi sizes larger than 8", .{}); | ||
| 3056 | } | ||
| 3057 | |||
| 3058 | // when truncating a `u16` to `u5`, for example, those top 3 bits in the result | 3067 | // when truncating a `u16` to `u5`, for example, those top 3 bits in the result |
| 3059 | // have to be removed. this only happens if the dst if not a power-of-two size. | 3068 | // have to be removed. this only happens if the dst if not a power-of-two size. |
| 3060 | if (self.regExtraBits(dst_ty) > 0) | 3069 | if (dst_abi_size <= 8) { |
| 3061 | try self.truncateRegister(dst_ty, dst_mcv.register.to64()); | 3070 | if (self.regExtraBits(dst_ty) > 0) try self.truncateRegister(dst_ty, dst_mcv.register.to64()); |
| 3071 | } else if (dst_abi_size <= 16) { | ||
| 3072 | const dst_info = dst_ty.intInfo(mod); | ||
| 3073 | const high_ty = try mod.intType(dst_info.signedness, dst_info.bits - 64); | ||
| 3074 | if (self.regExtraBits(high_ty) > 0) try self.truncateRegister(high_ty, dst_mcv.register_pair[1].to64()); | ||
| 3075 | } | ||
| 3062 | 3076 | ||
| 3063 | break :result dst_mcv; | 3077 | break :result dst_mcv; |
| 3064 | }; | 3078 | }; |
| ... | @@ -3381,7 +3395,7 @@ fn airMulSat(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -3381,7 +3395,7 @@ fn airMulSat(self: *Self, inst: Air.Inst.Index) !void { |
| 3381 | const cc: Condition = if (ty.isSignedInt(mod)) cc: { | 3395 | const cc: Condition = if (ty.isSignedInt(mod)) cc: { |
| 3382 | try self.genSetReg(limit_reg, ty, lhs_mcv); | 3396 | try self.genSetReg(limit_reg, ty, lhs_mcv); |
| 3383 | try self.genBinOpMir(.{ ._, .xor }, ty, limit_mcv, rhs_mcv); | 3397 | try self.genBinOpMir(.{ ._, .xor }, ty, limit_mcv, rhs_mcv); |
| 3384 | try self.genShiftBinOpMir(.{ ._, .sa }, ty, limit_mcv, .{ .immediate = reg_bits - 1 }); | 3398 | try self.genShiftBinOpMir(.{ ._r, .sa }, ty, limit_mcv, .{ .immediate = reg_bits - 1 }); |
| 3385 | try self.genBinOpMir(.{ ._, .xor }, ty, limit_mcv, .{ | 3399 | try self.genBinOpMir(.{ ._, .xor }, ty, limit_mcv, .{ |
| 3386 | .immediate = (@as(u64, 1) << @intCast(reg_bits - 1)) - 1, | 3400 | .immediate = (@as(u64, 1) << @intCast(reg_bits - 1)) - 1, |
| 3387 | }); | 3401 | }); |
| ... | @@ -4949,7 +4963,7 @@ fn byteSwap(self: *Self, inst: Air.Inst.Index, src_ty: Type, src_mcv: MCValue, m | ... | @@ -4949,7 +4963,7 @@ fn byteSwap(self: *Self, inst: Air.Inst.Index, src_ty: Type, src_mcv: MCValue, m |
| 4949 | const mod = self.bin_file.options.module.?; | 4963 | const mod = self.bin_file.options.module.?; |
| 4950 | const ty_op = self.air.instructions.items(.data)[inst].ty_op; | 4964 | const ty_op = self.air.instructions.items(.data)[inst].ty_op; |
| 4951 | 4965 | ||
| 4952 | if (src_ty.zigTypeTag(mod) == .Vector or src_ty.abiSize(mod) > 8) return self.fail( | 4966 | if (src_ty.zigTypeTag(mod) == .Vector) return self.fail( |
| 4953 | "TODO implement byteSwap for {}", | 4967 | "TODO implement byteSwap for {}", |
| 4954 | .{src_ty.fmt(mod)}, | 4968 | .{src_ty.fmt(mod)}, |
| 4955 | ); | 4969 | ); |
| ... | @@ -10493,39 +10507,44 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -10493,39 +10507,44 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void { |
| 10493 | }, | 10507 | }, |
| 10494 | else => return self.fail("invalid constraint: '{s}'", .{constraint}), | 10508 | else => return self.fail("invalid constraint: '{s}'", .{constraint}), |
| 10495 | }; | 10509 | }; |
| 10496 | const arg_maybe_reg: ?Register = if (mem.eql(u8, constraint[1..], "r")) | 10510 | const arg_mcv: MCValue = arg_mcv: { |
| 10497 | self.register_manager.tryAllocReg(maybe_inst, self.regClassForType(ty)) orelse | 10511 | const arg_maybe_reg: ?Register = if (mem.eql(u8, constraint[1..], "r")) |
| 10498 | return self.fail("ran out of registers lowering inline asm", .{}) | 10512 | self.register_manager.tryAllocReg(maybe_inst, self.regClassForType(ty)) orelse |
| 10499 | else if (mem.eql(u8, constraint[1..], "m")) | 10513 | return self.fail("ran out of registers lowering inline asm", .{}) |
| 10500 | if (output != .none) null else return self.fail( | 10514 | else if (mem.eql(u8, constraint[1..], "m")) |
| 10501 | "memory constraint unsupported for asm result: '{s}'", | 10515 | if (output != .none) null else return self.fail( |
| 10502 | .{constraint}, | 10516 | "memory constraint unsupported for asm result: '{s}'", |
| 10503 | ) | 10517 | .{constraint}, |
| 10504 | else if (mem.eql(u8, constraint[1..], "g") or | 10518 | ) |
| 10505 | mem.eql(u8, constraint[1..], "rm") or mem.eql(u8, constraint[1..], "mr") or | 10519 | else if (mem.eql(u8, constraint[1..], "g") or |
| 10506 | mem.eql(u8, constraint[1..], "r,m") or mem.eql(u8, constraint[1..], "m,r")) | 10520 | mem.eql(u8, constraint[1..], "rm") or mem.eql(u8, constraint[1..], "mr") or |
| 10507 | self.register_manager.tryAllocReg(maybe_inst, self.regClassForType(ty)) orelse | 10521 | mem.eql(u8, constraint[1..], "r,m") or mem.eql(u8, constraint[1..], "m,r")) |
| 10508 | if (output != .none) | 10522 | self.register_manager.tryAllocReg(maybe_inst, self.regClassForType(ty)) orelse |
| 10509 | null | 10523 | if (output != .none) |
| 10510 | else | 10524 | null |
| 10511 | return self.fail("ran out of registers lowering inline asm", .{}) | 10525 | else |
| 10512 | else if (mem.startsWith(u8, constraint[1..], "{") and mem.endsWith(u8, constraint[1..], "}")) | 10526 | return self.fail("ran out of registers lowering inline asm", .{}) |
| 10513 | parseRegName(constraint[1 + "{".len .. constraint.len - "}".len]) orelse | 10527 | else if (mem.startsWith(u8, constraint[1..], "{") and mem.endsWith(u8, constraint[1..], "}")) |
| 10514 | return self.fail("invalid register constraint: '{s}'", .{constraint}) | 10528 | parseRegName(constraint[1 + "{".len .. constraint.len - "}".len]) orelse |
| 10515 | else | 10529 | return self.fail("invalid register constraint: '{s}'", .{constraint}) |
| 10516 | return self.fail("invalid constraint: '{s}'", .{constraint}); | 10530 | else if (constraint.len == 2 and std.ascii.isDigit(constraint[1])) { |
| 10517 | const arg_mcv: MCValue = if (arg_maybe_reg) |reg| .{ .register = reg } else arg: { | 10531 | const index = std.fmt.charToDigit(constraint[0], 10) catch unreachable; |
| 10518 | const ptr_mcv = try self.resolveInst(output); | 10532 | if (index >= args.items.len) return self.fail("constraint out of bounds: '{s}'", .{constraint}); |
| 10519 | switch (ptr_mcv) { | 10533 | break :arg_mcv args.items[index]; |
| 10520 | .immediate => |addr| if (math.cast(i32, @as(i64, @bitCast(addr)))) |_| | 10534 | } else return self.fail("invalid constraint: '{s}'", .{constraint}); |
| 10521 | break :arg ptr_mcv.deref(), | 10535 | break :arg_mcv if (arg_maybe_reg) |reg| .{ .register = reg } else arg: { |
| 10522 | .register, .register_offset, .lea_frame => break :arg ptr_mcv.deref(), | 10536 | const ptr_mcv = try self.resolveInst(output); |
| 10523 | else => {}, | 10537 | switch (ptr_mcv) { |
| 10524 | } | 10538 | .immediate => |addr| if (math.cast(i32, @as(i64, @bitCast(addr)))) |_| |
| 10525 | break :arg .{ .indirect = .{ .reg = try self.copyToTmpRegister(Type.usize, ptr_mcv) } }; | 10539 | break :arg ptr_mcv.deref(), |
| 10540 | .register, .register_offset, .lea_frame => break :arg ptr_mcv.deref(), | ||
| 10541 | else => {}, | ||
| 10542 | } | ||
| 10543 | break :arg .{ .indirect = .{ .reg = try self.copyToTmpRegister(Type.usize, ptr_mcv) } }; | ||
| 10544 | }; | ||
| 10526 | }; | 10545 | }; |
| 10527 | if (arg_mcv.getReg()) |reg| if (RegisterManager.indexOfRegIntoTracked(reg)) |_| { | 10546 | if (arg_mcv.getReg()) |reg| if (RegisterManager.indexOfRegIntoTracked(reg)) |_| { |
| 10528 | _ = self.register_manager.lockRegAssumeUnused(reg); | 10547 | _ = self.register_manager.lockReg(reg); |
| 10529 | }; | 10548 | }; |
| 10530 | if (!mem.eql(u8, name, "_")) | 10549 | if (!mem.eql(u8, name, "_")) |
| 10531 | arg_map.putAssumeCapacityNoClobber(name, @intCast(args.items.len)); | 10550 | arg_map.putAssumeCapacityNoClobber(name, @intCast(args.items.len)); |
| ... | @@ -10587,6 +10606,10 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -10587,6 +10606,10 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void { |
| 10587 | try self.register_manager.getReg(reg, null); | 10606 | try self.register_manager.getReg(reg, null); |
| 10588 | try self.genSetReg(reg, ty, input_mcv); | 10607 | try self.genSetReg(reg, ty, input_mcv); |
| 10589 | break :arg .{ .register = reg }; | 10608 | break :arg .{ .register = reg }; |
| 10609 | } else if (constraint.len == 1 and std.ascii.isDigit(constraint[0])) arg: { | ||
| 10610 | const index = std.fmt.charToDigit(constraint[0], 10) catch unreachable; | ||
| 10611 | if (index >= args.items.len) return self.fail("constraint out of bounds: '{s}'", .{constraint}); | ||
| 10612 | break :arg args.items[index]; | ||
| 10590 | } else return self.fail("invalid constraint: '{s}'", .{constraint}); | 10613 | } else return self.fail("invalid constraint: '{s}'", .{constraint}); |
| 10591 | if (arg_mcv.getReg()) |reg| if (RegisterManager.indexOfRegIntoTracked(reg)) |_| { | 10614 | if (arg_mcv.getReg()) |reg| if (RegisterManager.indexOfRegIntoTracked(reg)) |_| { |
| 10592 | _ = self.register_manager.lockReg(reg); | 10615 | _ = self.register_manager.lockReg(reg); |
| ... | @@ -10712,7 +10735,7 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -10712,7 +10735,7 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void { |
| 10712 | mnem_name[mnem_prefix.len .. mnem_name.len - mnem_suffix.len], | 10735 | mnem_name[mnem_prefix.len .. mnem_name.len - mnem_suffix.len], |
| 10713 | ) orelse continue }; | 10736 | ) orelse continue }; |
| 10714 | } else { | 10737 | } else { |
| 10715 | assert(prefix != .none); | 10738 | assert(prefix != .none); // no combination of fixes produced a known mnemonic |
| 10716 | return self.fail("invalid prefix for mnemonic: '{s} {s}'", .{ | 10739 | return self.fail("invalid prefix for mnemonic: '{s} {s}'", .{ |
| 10717 | @tagName(prefix), mnem_str, | 10740 | @tagName(prefix), mnem_str, |
| 10718 | }); | 10741 | }); |
| ... | @@ -10943,6 +10966,7 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void { | ... | @@ -10943,6 +10966,7 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void { |
| 10943 | 10966 | ||
| 10944 | if (output == .none) continue; | 10967 | if (output == .none) continue; |
| 10945 | if (arg_mcv != .register) continue; | 10968 | if (arg_mcv != .register) continue; |
| 10969 | if (constraint.len == 2 and std.ascii.isDigit(constraint[1])) continue; | ||
| 10946 | try self.store(self.typeOf(output), .{ .air_ref = output }, arg_mcv); | 10970 | try self.store(self.typeOf(output), .{ .air_ref = output }, arg_mcv); |
| 10947 | } | 10971 | } |
| 10948 | 10972 | ||
| ... | @@ -11036,6 +11060,7 @@ fn moveStrategy(self: *Self, ty: Type, aligned: bool) !MoveStrategy { | ... | @@ -11036,6 +11060,7 @@ fn moveStrategy(self: *Self, ty: Type, aligned: bool) !MoveStrategy { |
| 11036 | else => {}, | 11060 | else => {}, |
| 11037 | }, | 11061 | }, |
| 11038 | .Vector => switch (ty.childType(mod).zigTypeTag(mod)) { | 11062 | .Vector => switch (ty.childType(mod).zigTypeTag(mod)) { |
| 11063 | .Bool => return .{ .move = .{ ._, .mov } }, | ||
| 11039 | .Int => switch (ty.childType(mod).intInfo(mod).bits) { | 11064 | .Int => switch (ty.childType(mod).intInfo(mod).bits) { |
| 11040 | 8 => switch (ty.vectorLen(mod)) { | 11065 | 8 => switch (ty.vectorLen(mod)) { |
| 11041 | 1 => if (self.hasFeature(.avx)) return .{ .vex_insert_extract = .{ | 11066 | 1 => if (self.hasFeature(.avx)) return .{ .vex_insert_extract = .{ |
src/arch/x86_64/Encoding.zig+3-3| ... | @@ -232,7 +232,7 @@ pub const Mnemonic = enum { | ... | @@ -232,7 +232,7 @@ pub const Mnemonic = enum { |
| 232 | cmp, | 232 | cmp, |
| 233 | cmps, cmpsb, cmpsd, cmpsq, cmpsw, | 233 | cmps, cmpsb, cmpsd, cmpsq, cmpsw, |
| 234 | cmpxchg, cmpxchg8b, cmpxchg16b, | 234 | cmpxchg, cmpxchg8b, cmpxchg16b, |
| 235 | cqo, cwd, cwde, | 235 | cpuid, cqo, cwd, cwde, |
| 236 | div, | 236 | div, |
| 237 | idiv, imul, int3, | 237 | idiv, imul, int3, |
| 238 | ja, jae, jb, jbe, jc, jrcxz, je, jg, jge, jl, jle, jna, jnae, jnb, jnbe, | 238 | ja, jae, jb, jbe, jc, jrcxz, je, jg, jge, jl, jle, jna, jnae, jnb, jnbe, |
| ... | @@ -246,7 +246,7 @@ pub const Mnemonic = enum { | ... | @@ -246,7 +246,7 @@ pub const Mnemonic = enum { |
| 246 | movsx, movsxd, movzx, mul, | 246 | movsx, movsxd, movzx, mul, |
| 247 | neg, nop, not, | 247 | neg, nop, not, |
| 248 | @"or", | 248 | @"or", |
| 249 | pop, popcnt, push, | 249 | pause, pop, popcnt, push, |
| 250 | rcl, rcr, ret, rol, ror, | 250 | rcl, rcr, ret, rol, ror, |
| 251 | sal, sar, sbb, | 251 | sal, sar, sbb, |
| 252 | scas, scasb, scasd, scasq, scasw, | 252 | scas, scasb, scasd, scasq, scasw, |
| ... | @@ -258,7 +258,7 @@ pub const Mnemonic = enum { | ... | @@ -258,7 +258,7 @@ pub const Mnemonic = enum { |
| 258 | stos, stosb, stosd, stosq, stosw, | 258 | stos, stosb, stosd, stosq, stosw, |
| 259 | @"test", tzcnt, | 259 | @"test", tzcnt, |
| 260 | ud2, | 260 | ud2, |
| 261 | xadd, xchg, xor, | 261 | xadd, xchg, xgetbv, xor, |
| 262 | // X87 | 262 | // X87 |
| 263 | fabs, fchs, ffree, fisttp, fld, fst, fstp, | 263 | fabs, fchs, ffree, fisttp, fld, fst, fstp, |
| 264 | // MMX | 264 | // MMX |
src/arch/x86_64/Mir.zig+6| ... | @@ -327,6 +327,8 @@ pub const Inst = struct { | ... | @@ -327,6 +327,8 @@ pub const Inst = struct { |
| 327 | /// Compare and exchange | 327 | /// Compare and exchange |
| 328 | /// Compare and exchange bytes | 328 | /// Compare and exchange bytes |
| 329 | cmpxchg, | 329 | cmpxchg, |
| 330 | /// CPU identification | ||
| 331 | cpuid, | ||
| 330 | /// Convert doubleword to quadword | 332 | /// Convert doubleword to quadword |
| 331 | cqo, | 333 | cqo, |
| 332 | /// Convert word to doubleword | 334 | /// Convert word to doubleword |
| ... | @@ -386,6 +388,8 @@ pub const Inst = struct { | ... | @@ -386,6 +388,8 @@ pub const Inst = struct { |
| 386 | /// Bitwise logical or of packed single-precision floating-point values | 388 | /// Bitwise logical or of packed single-precision floating-point values |
| 387 | /// Bitwise logical or of packed double-precision floating-point values | 389 | /// Bitwise logical or of packed double-precision floating-point values |
| 388 | @"or", | 390 | @"or", |
| 391 | /// Spin loop hint | ||
| 392 | pause, | ||
| 389 | /// Pop | 393 | /// Pop |
| 390 | pop, | 394 | pop, |
| 391 | /// Return the count of number of bits set to 1 | 395 | /// Return the count of number of bits set to 1 |
| ... | @@ -437,6 +441,8 @@ pub const Inst = struct { | ... | @@ -437,6 +441,8 @@ pub const Inst = struct { |
| 437 | xadd, | 441 | xadd, |
| 438 | /// Exchange register/memory with register | 442 | /// Exchange register/memory with register |
| 439 | xchg, | 443 | xchg, |
| 444 | /// Get value of extended control register | ||
| 445 | xgetbv, | ||
| 440 | /// Logical exclusive-or | 446 | /// Logical exclusive-or |
| 441 | /// Bitwise logical xor of packed single-precision floating-point values | 447 | /// Bitwise logical xor of packed single-precision floating-point values |
| 442 | /// Bitwise logical xor of packed double-precision floating-point values | 448 | /// Bitwise logical xor of packed double-precision floating-point values |
src/arch/x86_64/encodings.zig+6| ... | @@ -266,6 +266,8 @@ pub const table = [_]Entry{ | ... | @@ -266,6 +266,8 @@ pub const table = [_]Entry{ |
| 266 | .{ .cmpxchg8b, .m, &.{ .m64 }, &.{ 0x0f, 0xc7 }, 1, .none, .none }, | 266 | .{ .cmpxchg8b, .m, &.{ .m64 }, &.{ 0x0f, 0xc7 }, 1, .none, .none }, |
| 267 | .{ .cmpxchg16b, .m, &.{ .m128 }, &.{ 0x0f, 0xc7 }, 1, .long, .none }, | 267 | .{ .cmpxchg16b, .m, &.{ .m128 }, &.{ 0x0f, 0xc7 }, 1, .long, .none }, |
| 268 | 268 | ||
| 269 | .{ .cpuid, .np, &.{}, &.{ 0x0f, 0xa2 }, 0, .none, .none }, | ||
| 270 | |||
| 269 | .{ .div, .m, &.{ .rm8 }, &.{ 0xf6 }, 6, .none, .none }, | 271 | .{ .div, .m, &.{ .rm8 }, &.{ 0xf6 }, 6, .none, .none }, |
| 270 | .{ .div, .m, &.{ .rm8 }, &.{ 0xf6 }, 6, .rex, .none }, | 272 | .{ .div, .m, &.{ .rm8 }, &.{ 0xf6 }, 6, .rex, .none }, |
| 271 | .{ .div, .m, &.{ .rm16 }, &.{ 0xf7 }, 6, .short, .none }, | 273 | .{ .div, .m, &.{ .rm16 }, &.{ 0xf7 }, 6, .short, .none }, |
| ... | @@ -469,6 +471,8 @@ pub const table = [_]Entry{ | ... | @@ -469,6 +471,8 @@ pub const table = [_]Entry{ |
| 469 | .{ .@"or", .rm, &.{ .r32, .rm32 }, &.{ 0x0b }, 0, .none, .none }, | 471 | .{ .@"or", .rm, &.{ .r32, .rm32 }, &.{ 0x0b }, 0, .none, .none }, |
| 470 | .{ .@"or", .rm, &.{ .r64, .rm64 }, &.{ 0x0b }, 0, .long, .none }, | 472 | .{ .@"or", .rm, &.{ .r64, .rm64 }, &.{ 0x0b }, 0, .long, .none }, |
| 471 | 473 | ||
| 474 | .{ .pause, .np, &.{}, &.{ 0xf3, 0x90 }, 0, .none, .none }, | ||
| 475 | |||
| 472 | .{ .pop, .o, &.{ .r16 }, &.{ 0x58 }, 0, .short, .none }, | 476 | .{ .pop, .o, &.{ .r16 }, &.{ 0x58 }, 0, .short, .none }, |
| 473 | .{ .pop, .o, &.{ .r64 }, &.{ 0x58 }, 0, .none, .none }, | 477 | .{ .pop, .o, &.{ .r64 }, &.{ 0x58 }, 0, .none, .none }, |
| 474 | .{ .pop, .m, &.{ .rm16 }, &.{ 0x8f }, 0, .short, .none }, | 478 | .{ .pop, .m, &.{ .rm16 }, &.{ 0x8f }, 0, .short, .none }, |
| ... | @@ -805,6 +809,8 @@ pub const table = [_]Entry{ | ... | @@ -805,6 +809,8 @@ pub const table = [_]Entry{ |
| 805 | .{ .xchg, .rm, &.{ .r32, .rm32 }, &.{ 0x87 }, 0, .none, .none }, | 809 | .{ .xchg, .rm, &.{ .r32, .rm32 }, &.{ 0x87 }, 0, .none, .none }, |
| 806 | .{ .xchg, .rm, &.{ .r64, .rm64 }, &.{ 0x87 }, 0, .long, .none }, | 810 | .{ .xchg, .rm, &.{ .r64, .rm64 }, &.{ 0x87 }, 0, .long, .none }, |
| 807 | 811 | ||
| 812 | .{ .xgetbv, .np, &.{}, &.{ 0x0f, 0x01 }, 0, .none, .none }, | ||
| 813 | |||
| 808 | .{ .xor, .zi, &.{ .al, .imm8 }, &.{ 0x34 }, 0, .none, .none }, | 814 | .{ .xor, .zi, &.{ .al, .imm8 }, &.{ 0x34 }, 0, .none, .none }, |
| 809 | .{ .xor, .zi, &.{ .ax, .imm16 }, &.{ 0x35 }, 0, .short, .none }, | 815 | .{ .xor, .zi, &.{ .ax, .imm16 }, &.{ 0x35 }, 0, .short, .none }, |
| 810 | .{ .xor, .zi, &.{ .eax, .imm32 }, &.{ 0x35 }, 0, .none, .none }, | 816 | .{ .xor, .zi, &.{ .eax, .imm32 }, &.{ 0x35 }, 0, .none, .none }, |
test/behavior/bitcast.zig+2-1| ... | @@ -411,8 +411,9 @@ test "bitcast nan float does not modify signaling bit" { | ... | @@ -411,8 +411,9 @@ test "bitcast nan float does not modify signaling bit" { |
| 411 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 411 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 412 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 412 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 413 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | 413 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 414 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 415 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 414 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 415 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest; | ||
| 416 | |||
| 416 | // TODO: https://github.com/ziglang/zig/issues/14366 | 417 | // TODO: https://github.com/ziglang/zig/issues/14366 |
| 417 | if (builtin.zig_backend == .stage2_llvm and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest; | 418 | if (builtin.zig_backend == .stage2_llvm and comptime builtin.cpu.arch.isArmOrThumb()) return error.SkipZigTest; |
| 418 | 419 |
test/behavior/bugs/920.zig+1-1| ... | @@ -57,11 +57,11 @@ const NormalDist = blk: { | ... | @@ -57,11 +57,11 @@ const NormalDist = blk: { |
| 57 | }; | 57 | }; |
| 58 | 58 | ||
| 59 | test "bug 920 fixed" { | 59 | test "bug 920 fixed" { |
| 60 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 61 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 60 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 62 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 61 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 63 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 62 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 64 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 63 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 64 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest; | ||
| 65 | 65 | ||
| 66 | const NormalDist1 = blk: { | 66 | const NormalDist1 = blk: { |
| 67 | break :blk ZigTableGen(true, norm_r, norm_v, norm_f, norm_f_inv, norm_zero_case); | 67 | break :blk ZigTableGen(true, norm_r, norm_v, norm_f, norm_f_inv, norm_zero_case); |
test/behavior/cast.zig+3-3| ... | @@ -1606,8 +1606,8 @@ test "peer type resolution: const sentinel slice and mutable non-sentinel slice" | ... | @@ -1606,8 +1606,8 @@ test "peer type resolution: const sentinel slice and mutable non-sentinel slice" |
| 1606 | test "peer type resolution: float and comptime-known fixed-width integer" { | 1606 | test "peer type resolution: float and comptime-known fixed-width integer" { |
| 1607 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1607 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1608 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 1608 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1609 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 1610 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1609 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1610 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest; | ||
| 1611 | 1611 | ||
| 1612 | const i: u8 = 100; | 1612 | const i: u8 = 100; |
| 1613 | var f: f32 = 1.234; | 1613 | var f: f32 = 1.234; |
| ... | @@ -2372,7 +2372,7 @@ test "@intFromBool on vector" { | ... | @@ -2372,7 +2372,7 @@ test "@intFromBool on vector" { |
| 2372 | } | 2372 | } |
| 2373 | 2373 | ||
| 2374 | test "numeric coercions with undefined" { | 2374 | test "numeric coercions with undefined" { |
| 2375 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | 2375 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest; |
| 2376 | 2376 | ||
| 2377 | const from: i32 = undefined; | 2377 | const from: i32 = undefined; |
| 2378 | var to: f32 = from; | 2378 | var to: f32 = from; |
| ... | @@ -2390,11 +2390,11 @@ test "15-bit int to float" { | ... | @@ -2390,11 +2390,11 @@ test "15-bit int to float" { |
| 2390 | } | 2390 | } |
| 2391 | 2391 | ||
| 2392 | test "@as does not corrupt values with incompatible representations" { | 2392 | test "@as does not corrupt values with incompatible representations" { |
| 2393 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 2394 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 2393 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 2395 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 2394 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2396 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 2395 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 2397 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 2396 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 2397 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest; | ||
| 2398 | 2398 | ||
| 2399 | const x: f32 = @as(f16, blk: { | 2399 | const x: f32 = @as(f16, blk: { |
| 2400 | if (false) { | 2400 | if (false) { |
test/behavior/cast_int.zig-1| ... | @@ -199,7 +199,6 @@ test "load non byte-sized value in union" { | ... | @@ -199,7 +199,6 @@ test "load non byte-sized value in union" { |
| 199 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; | 199 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 200 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; | 200 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; |
| 201 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 201 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 202 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 203 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | 202 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; |
| 204 | 203 | ||
| 205 | // note: this bug is triggered by the == operator, expectEqual will hide it | 204 | // note: this bug is triggered by the == operator, expectEqual will hide it |
test/behavior/int128.zig-1| ... | @@ -66,7 +66,6 @@ test "int128" { | ... | @@ -66,7 +66,6 @@ test "int128" { |
| 66 | 66 | ||
| 67 | test "truncate int128" { | 67 | test "truncate int128" { |
| 68 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 68 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 69 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 70 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 69 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 71 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 70 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 72 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 71 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
test/behavior/packed-struct.zig+2-2| ... | @@ -659,12 +659,12 @@ test "optional pointer in packed struct" { | ... | @@ -659,12 +659,12 @@ test "optional pointer in packed struct" { |
| 659 | test "nested packed struct field access test" { | 659 | test "nested packed struct field access test" { |
| 660 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | 660 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 661 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO packed structs larger than 64 bits | 661 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO packed structs larger than 64 bits |
| 662 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 663 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 662 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 664 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 663 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 665 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 664 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 666 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 665 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 667 | // | 666 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest; |
| 667 | |||
| 668 | const Vec2 = packed struct { | 668 | const Vec2 = packed struct { |
| 669 | x: f32, | 669 | x: f32, |
| 670 | y: f32, | 670 | y: f32, |
test/behavior/translate_c_macros.zig+1-1| ... | @@ -151,11 +151,11 @@ test "string and char literals that are not UTF-8 encoded. Issue #12784" { | ... | @@ -151,11 +151,11 @@ test "string and char literals that are not UTF-8 encoded. Issue #12784" { |
| 151 | 151 | ||
| 152 | test "Macro that uses division operator. Issue #13162" { | 152 | test "Macro that uses division operator. Issue #13162" { |
| 153 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 153 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 154 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 155 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 154 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 156 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 155 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 157 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 156 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 158 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | 157 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 158 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest; | ||
| 159 | 159 | ||
| 160 | try expectEqual(@as(c_int, 42), h.DIVIDE_CONSTANT(@as(c_int, 42_000))); | 160 | try expectEqual(@as(c_int, 42), h.DIVIDE_CONSTANT(@as(c_int, 42_000))); |
| 161 | try expectEqual(@as(c_uint, 42), h.DIVIDE_CONSTANT(@as(c_uint, 42_000))); | 161 | try expectEqual(@as(c_uint, 42), h.DIVIDE_CONSTANT(@as(c_uint, 42_000))); |
test/behavior/tuple.zig+1-1| ... | @@ -370,8 +370,8 @@ test "tuple initialized with a runtime known value" { | ... | @@ -370,8 +370,8 @@ test "tuple initialized with a runtime known value" { |
| 370 | test "tuple of struct concatenation and coercion to array" { | 370 | test "tuple of struct concatenation and coercion to array" { |
| 371 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 371 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 372 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; | 372 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 373 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 374 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 373 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 374 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest; | ||
| 375 | 375 | ||
| 376 | const StructWithDefault = struct { value: f32 = 42 }; | 376 | const StructWithDefault = struct { value: f32 = 42 }; |
| 377 | const SomeStruct = struct { array: [4]StructWithDefault }; | 377 | const SomeStruct = struct { array: [4]StructWithDefault }; |
test/behavior/vector.zig+1-1| ... | @@ -1329,8 +1329,8 @@ test "store to vector in slice" { | ... | @@ -1329,8 +1329,8 @@ test "store to vector in slice" { |
| 1329 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1329 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1330 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 1330 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1331 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 1331 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 1332 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 1333 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1332 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1333 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest; | ||
| 1334 | 1334 | ||
| 1335 | var v = [_]@Vector(3, f32){ | 1335 | var v = [_]@Vector(3, f32){ |
| 1336 | .{ 1, 1, 1 }, | 1336 | .{ 1, 1, 1 }, |
tools/lldb_pretty_printers.py+19-8| ... | @@ -355,17 +355,28 @@ class Module_Decl__Module_Decl_Index_SynthProvider: | ... | @@ -355,17 +355,28 @@ class Module_Decl__Module_Decl_Index_SynthProvider: |
| 355 | def __init__(self, value, _=None): self.value = value | 355 | def __init__(self, value, _=None): self.value = value |
| 356 | def update(self): | 356 | def update(self): |
| 357 | try: | 357 | try: |
| 358 | for frame in self.value.thread: | 358 | ip = InternPool_Find(self.value.thread) |
| 359 | mod = frame.FindVariable('mod') or frame.FindVariable('module') | 359 | if not ip: return |
| 360 | if mod: break | 360 | self.ptr = ip.GetChildMemberWithName('allocated_decls').GetChildAtIndex(self.value.unsigned).address_of.Clone('decl') |
| 361 | else: return | ||
| 362 | self.ptr = mod.GetChildMemberWithName('allocated_decls').GetChildAtIndex(self.value.unsigned).address_of.Clone('decl') | ||
| 363 | except: pass | 361 | except: pass |
| 364 | def has_children(self): return True | 362 | def has_children(self): return True |
| 365 | def num_children(self): return 1 | 363 | def num_children(self): return 1 |
| 366 | def get_child_index(self, name): return 0 if name == 'decl' else -1 | 364 | def get_child_index(self, name): return 0 if name == 'decl' else -1 |
| 367 | def get_child_at_index(self, index): return self.ptr if index == 0 else None | 365 | def get_child_at_index(self, index): return self.ptr if index == 0 else None |
| 368 | 366 | ||
| 367 | class Module_Namespace__Module_Namespace_Index_SynthProvider: | ||
| 368 | def __init__(self, value, _=None): self.value = value | ||
| 369 | def update(self): | ||
| 370 | try: | ||
| 371 | ip = InternPool_Find(self.value.thread) | ||
| 372 | if not ip: return | ||
| 373 | self.ptr = ip.GetChildMemberWithName('allocated_namespaces').GetChildAtIndex(self.value.unsigned).address_of.Clone('namespace') | ||
| 374 | except: pass | ||
| 375 | def has_children(self): return True | ||
| 376 | def num_children(self): return 1 | ||
| 377 | def get_child_index(self, name): return 0 if name == 'namespace' else -1 | ||
| 378 | def get_child_at_index(self, index): return self.ptr if index == 0 else None | ||
| 379 | |||
| 369 | class TagOrPayloadPtr_SynthProvider: | 380 | class TagOrPayloadPtr_SynthProvider: |
| 370 | def __init__(self, value, _=None): self.value = value | 381 | def __init__(self, value, _=None): self.value = value |
| 371 | def update(self): | 382 | def update(self): |
| ... | @@ -440,10 +451,9 @@ class InternPool_Index_SynthProvider: | ... | @@ -440,10 +451,9 @@ class InternPool_Index_SynthProvider: |
| 440 | for encoding_field in encoding_type.fields: | 451 | for encoding_field in encoding_type.fields: |
| 441 | if encoding_field.name == 'data': | 452 | if encoding_field.name == 'data': |
| 442 | if encoding_field.type.IsPointerType(): | 453 | if encoding_field.type.IsPointerType(): |
| 443 | data_type = encoding_field.type.GetPointeeType() | ||
| 444 | extra_index = data.unsigned | 454 | extra_index = data.unsigned |
| 445 | self.data = extra.GetChildAtIndex(extra_index).Cast(data_type).Clone('data') | 455 | self.data = extra.GetChildAtIndex(extra_index).address_of.Cast(encoding_field.type).deref.Clone('data') |
| 446 | extra_index += data_type.num_fields | 456 | extra_index += encoding_field.type.GetPointeeType().num_fields |
| 447 | else: | 457 | else: |
| 448 | self.data = data.Cast(encoding_field.type).Clone('data') | 458 | self.data = data.Cast(encoding_field.type).Clone('data') |
| 449 | elif encoding_field.name == 'trailing': | 459 | elif encoding_field.name == 'trailing': |
| ... | @@ -700,6 +710,7 @@ def __lldb_init_module(debugger, _=None): | ... | @@ -700,6 +710,7 @@ def __lldb_init_module(debugger, _=None): |
| 700 | add(debugger, category='zig.stage2', regex=True, type=MultiArrayList_Entry('Air\\.Inst'), identifier='TagAndPayload', synth=True, inline_children=True, summary=True) | 710 | add(debugger, category='zig.stage2', regex=True, type=MultiArrayList_Entry('Air\\.Inst'), identifier='TagAndPayload', synth=True, inline_children=True, summary=True) |
| 701 | add(debugger, category='zig.stage2', regex=True, type='^Air\\.Inst\\.Data\\.Data__struct_[1-9][0-9]*$', inline_children=True, summary=True) | 711 | add(debugger, category='zig.stage2', regex=True, type='^Air\\.Inst\\.Data\\.Data__struct_[1-9][0-9]*$', inline_children=True, summary=True) |
| 702 | add(debugger, category='zig.stage2', type='Module.Decl::Module.Decl.Index', synth=True) | 712 | add(debugger, category='zig.stage2', type='Module.Decl::Module.Decl.Index', synth=True) |
| 713 | add(debugger, category='zig.stage2', type='Module.Namespace::Module.Namespace.Index', synth=True) | ||
| 703 | add(debugger, category='zig.stage2', type='Module.LazySrcLoc', identifier='zig_TaggedUnion', synth=True) | 714 | add(debugger, category='zig.stage2', type='Module.LazySrcLoc', identifier='zig_TaggedUnion', synth=True) |
| 704 | add(debugger, category='zig.stage2', type='InternPool.Index', synth=True) | 715 | add(debugger, category='zig.stage2', type='InternPool.Index', synth=True) |
| 705 | add(debugger, category='zig.stage2', type='InternPool.NullTerminatedString', summary=True) | 716 | add(debugger, category='zig.stage2', type='InternPool.NullTerminatedString', summary=True) |