| author | |
| committer | |
| log | 6322dbd5bf112356efdf2ec64c5471d6e8586a74 |
| tree | d6fd887508e79e51e5e142b20099cc6ad29a654b |
| parent | 0adcfd60f4fcfd01c74a6477cbcef187ce06f533 |
| parent | ff06de4c897e0b51c4d1f044746d43397500be69 |
| signature |
* compiler: test runner: fix tests never fails on crippled architectures
* riscv64: skip failing tests
* riscv64: enable test summary printing18 files changed, 37 insertions(+), 2 deletions(-)
lib/compiler/test_runner.zig+2-1| ... | ... | @@ -292,6 +292,7 @@ pub fn mainSimple() anyerror!void { |
| 292 | 292 | }; |
| 293 | 293 | // is the backend capable of using std.fmt.format to print a summary at the end? |
| 294 | 294 | const print_summary = switch (builtin.zig_backend) { |
| 295 | .stage2_riscv64 => true, | |
| 295 | 296 | else => false, |
| 296 | 297 | }; |
| 297 | 298 | |
| ... | ... | @@ -309,7 +310,7 @@ pub fn mainSimple() anyerror!void { |
| 309 | 310 | stderr.writeAll("... ") catch {}; |
| 310 | 311 | stderr.writeAll("PASS\n") catch {}; |
| 311 | 312 | } |
| 312 | } else |err| if (enable_print) { | |
| 313 | } else |err| { | |
| 313 | 314 | if (enable_print) { |
| 314 | 315 | stderr.writeAll(test_fn.name) catch {}; |
| 315 | 316 | stderr.writeAll("... ") catch {}; |
test/behavior/align.zig+2| ... | ... | @@ -409,6 +409,7 @@ test "struct field explicit alignment" { |
| 409 | 409 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 410 | 410 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 411 | 411 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // flaky |
| 412 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 412 | 413 | |
| 413 | 414 | const S = struct { |
| 414 | 415 | const Node = struct { |
| ... | ... | @@ -532,6 +533,7 @@ test "alignment of zero-bit types is respected" { |
| 532 | 533 | if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; |
| 533 | 534 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 534 | 535 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; |
| 536 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 535 | 537 | |
| 536 | 538 | const S = struct { arr: [0]usize = .{} }; |
| 537 | 539 |
test/behavior/atomics.zig+2| ... | ... | @@ -153,6 +153,7 @@ test "atomic load and rmw with enum" { |
| 153 | 153 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 154 | 154 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 155 | 155 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 156 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 156 | 157 | |
| 157 | 158 | const Value = enum(u8) { a, b, c }; |
| 158 | 159 | var x = Value.a; |
| ... | ... | @@ -188,6 +189,7 @@ test "atomicrmw with floats" { |
| 188 | 189 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 189 | 190 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 190 | 191 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 192 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 191 | 193 | |
| 192 | 194 | try testAtomicRmwFloat(); |
| 193 | 195 | try comptime testAtomicRmwFloat(); |
test/behavior/bitcast.zig+1| ... | ... | @@ -477,6 +477,7 @@ test "@bitCast of packed struct of bools all true" { |
| 477 | 477 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 478 | 478 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 479 | 479 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO |
| 480 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 480 | 481 | |
| 481 | 482 | const P = packed struct { |
| 482 | 483 | b0: bool, |
test/behavior/cast.zig+2| ... | ... | @@ -1793,6 +1793,7 @@ test "peer type resolution: array and vector with same child type" { |
| 1793 | 1793 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1794 | 1794 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1795 | 1795 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1796 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 1796 | 1797 | |
| 1797 | 1798 | var arr: [2]u32 = .{ 0, 1 }; |
| 1798 | 1799 | var vec: @Vector(2, u32) = .{ 2, 3 }; |
| ... | ... | @@ -1931,6 +1932,7 @@ test "peer type resolution: vector and optional vector" { |
| 1931 | 1932 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 1932 | 1933 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1933 | 1934 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO |
| 1935 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 1934 | 1936 | |
| 1935 | 1937 | var a: ?@Vector(3, u32) = .{ 0, 1, 2 }; |
| 1936 | 1938 | var b: @Vector(3, u32) = .{ 3, 4, 5 }; |
test/behavior/cast_int.zig+3| ... | ... | @@ -35,6 +35,7 @@ test "coerce i8 to i32 and @intCast back" { |
| 35 | 35 | } |
| 36 | 36 | |
| 37 | 37 | test "coerce non byte-sized integers accross 32bits boundary" { |
| 38 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 38 | 39 | { |
| 39 | 40 | var v: u21 = 6417; |
| 40 | 41 | _ = &v; |
| ... | ... | @@ -166,6 +167,7 @@ const Piece = packed struct { |
| 166 | 167 | test "load non byte-sized optional value" { |
| 167 | 168 | // Originally reported at https://github.com/ziglang/zig/issues/14200 |
| 168 | 169 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 170 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 169 | 171 | |
| 170 | 172 | // note: this bug is triggered by the == operator, expectEqual will hide it |
| 171 | 173 | const opt: ?Piece = try Piece.charToPiece('p'); |
| ... | ... | @@ -181,6 +183,7 @@ test "load non byte-sized optional value" { |
| 181 | 183 | test "load non byte-sized value in struct" { |
| 182 | 184 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 183 | 185 | if (builtin.cpu.arch.endian() != .little) return error.SkipZigTest; // packed struct TODO |
| 186 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 184 | 187 | |
| 185 | 188 | // note: this bug is triggered by the == operator, expectEqual will hide it |
| 186 | 189 | // using ptrCast not to depend on unitialised memory state |
test/behavior/enum.zig+1| ... | ... | @@ -1121,6 +1121,7 @@ test "bit field access with enum fields" { |
| 1121 | 1121 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 1122 | 1122 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1123 | 1123 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1124 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 1124 | 1125 | |
| 1125 | 1126 | var data = bit_field_1; |
| 1126 | 1127 | try expect(getA(&data) == A.Two); |
test/behavior/error.zig+1| ... | ... | @@ -1087,6 +1087,7 @@ test "result location initialization of error union with OPV payload" { |
| 1087 | 1087 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1088 | 1088 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1089 | 1089 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1090 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 1090 | 1091 | |
| 1091 | 1092 | const S = struct { |
| 1092 | 1093 | x: u0, |
test/behavior/generics.zig+1| ... | ... | @@ -412,6 +412,7 @@ test "generic struct as parameter type" { |
| 412 | 412 | |
| 413 | 413 | test "slice as parameter type" { |
| 414 | 414 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 415 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 415 | 416 | |
| 416 | 417 | const S = struct { |
| 417 | 418 | fn internComptimeString(comptime str: []const u8) *const []const u8 { |
test/behavior/math.zig+4-1| ... | ... | @@ -66,7 +66,7 @@ test "@clz" { |
| 66 | 66 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 67 | 67 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 68 | 68 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 69 | ||
| 69 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 70 | 70 | try testClz(); |
| 71 | 71 | try comptime testClz(); |
| 72 | 72 | } |
| ... | ... | @@ -870,6 +870,7 @@ test "@addWithOverflow" { |
| 870 | 870 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 871 | 871 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 872 | 872 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 873 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 873 | 874 | |
| 874 | 875 | try testAddWithOverflow(u8, 250, 100, 94, 1); |
| 875 | 876 | try testAddWithOverflow(u8, 100, 150, 250, 0); |
| ... | ... | @@ -931,6 +932,7 @@ test "@addWithOverflow > 64 bits" { |
| 931 | 932 | test "small int addition" { |
| 932 | 933 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 933 | 934 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 935 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 934 | 936 | |
| 935 | 937 | var x: u2 = 0; |
| 936 | 938 | try expect(x == 0); |
| ... | ... | @@ -958,6 +960,7 @@ fn testMulWithOverflow(comptime T: type, a: T, b: T, mul: T, bit: u1) !void { |
| 958 | 960 | test "basic @mulWithOverflow" { |
| 959 | 961 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 960 | 962 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 963 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 961 | 964 | |
| 962 | 965 | try testMulWithOverflow(u8, 86, 3, 2, 1); |
| 963 | 966 | try testMulWithOverflow(u8, 85, 3, 255, 0); |
test/behavior/optional.zig+1| ... | ... | @@ -641,6 +641,7 @@ test "result location initialization of optional with OPV payload" { |
| 641 | 641 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 642 | 642 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 643 | 643 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 644 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 644 | 645 | |
| 645 | 646 | const S = struct { |
| 646 | 647 | x: u0, |
test/behavior/packed-struct.zig+5| ... | ... | @@ -429,6 +429,7 @@ test "nested packed struct field pointers" { |
| 429 | 429 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 430 | 430 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 431 | 431 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // ubsan unaligned pointer access |
| 432 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 432 | 433 | if (native_endian != .little) return error.SkipZigTest; // Byte aligned packed struct field pointers have not been implemented yet |
| 433 | 434 | |
| 434 | 435 | const S2 = packed struct { |
| ... | ... | @@ -953,6 +954,7 @@ test "pointer to container level packed struct field" { |
| 953 | 954 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 954 | 955 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 955 | 956 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 957 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 956 | 958 | |
| 957 | 959 | const S = packed struct(u32) { |
| 958 | 960 | test_bit: bool, |
| ... | ... | @@ -997,6 +999,7 @@ test "bitcast back and forth" { |
| 997 | 999 | test "field access of packed struct smaller than its abi size inside struct initialized with rls" { |
| 998 | 1000 | // Originally reported at https://github.com/ziglang/zig/issues/14200 |
| 999 | 1001 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1002 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 1000 | 1003 | |
| 1001 | 1004 | const S = struct { |
| 1002 | 1005 | ps: packed struct { x: i2, y: i2 }, |
| ... | ... | @@ -1146,6 +1149,7 @@ test "assignment to non-byte-aligned field in packed struct" { |
| 1146 | 1149 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1147 | 1150 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1148 | 1151 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1152 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 1149 | 1153 | |
| 1150 | 1154 | const Frame = packed struct { |
| 1151 | 1155 | num: u20, |
| ... | ... | @@ -1360,6 +1364,7 @@ test "byte-aligned packed relocation" { |
| 1360 | 1364 | |
| 1361 | 1365 | test "packed struct store of comparison result" { |
| 1362 | 1366 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1367 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 1363 | 1368 | |
| 1364 | 1369 | const S1 = packed struct { |
| 1365 | 1370 | val1: u3, |
test/behavior/packed-union.zig+2| ... | ... | @@ -8,6 +8,7 @@ test "flags in packed union" { |
| 8 | 8 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 9 | 9 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; |
| 10 | 10 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 11 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 11 | 12 | |
| 12 | 13 | try testFlagsInPackedUnion(); |
| 13 | 14 | try comptime testFlagsInPackedUnion(); |
| ... | ... | @@ -50,6 +51,7 @@ test "flags in packed union at offset" { |
| 50 | 51 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 51 | 52 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; |
| 52 | 53 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 54 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 53 | 55 | |
| 54 | 56 | try testFlagsInPackedUnionAtOffset(); |
| 55 | 57 | try comptime testFlagsInPackedUnionAtOffset(); |
test/behavior/popcount.zig+1| ... | ... | @@ -8,6 +8,7 @@ test "@popCount integers" { |
| 8 | 8 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 9 | 9 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 10 | 10 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 11 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 11 | 12 | |
| 12 | 13 | try comptime testPopCountIntegers(); |
| 13 | 14 | try testPopCountIntegers(); |
test/behavior/src.zig+2| ... | ... | @@ -40,6 +40,8 @@ test "@src used as a comptime parameter" { |
| 40 | 40 | } |
| 41 | 41 | |
| 42 | 42 | test "@src in tuple passed to anytype function" { |
| 43 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 44 | ||
| 43 | 45 | const S = struct { |
| 44 | 46 | fn Foo(a: anytype) u32 { |
| 45 | 47 | return a[0].line; |
test/behavior/struct.zig+5| ... | ... | @@ -424,6 +424,7 @@ test "packed struct 24bits" { |
| 424 | 424 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 425 | 425 | if (builtin.cpu.arch.isArm()) return error.SkipZigTest; // TODO |
| 426 | 426 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 427 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 427 | 428 | |
| 428 | 429 | comptime { |
| 429 | 430 | std.debug.assert(@sizeOf(Foo24Bits) == @sizeOf(u24)); |
| ... | ... | @@ -526,6 +527,7 @@ test "implicit cast packed struct field to const ptr" { |
| 526 | 527 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 527 | 528 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 528 | 529 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 530 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 529 | 531 | |
| 530 | 532 | const LevelUpMove = packed struct { |
| 531 | 533 | move_id: u9, |
| ... | ... | @@ -590,6 +592,7 @@ test "bit field access" { |
| 590 | 592 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 591 | 593 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 592 | 594 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 595 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 593 | 596 | |
| 594 | 597 | var data = bit_field_1; |
| 595 | 598 | try expect(getA(&data) == 1); |
| ... | ... | @@ -713,6 +716,7 @@ test "pointer to packed struct member in a stack variable" { |
| 713 | 716 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 714 | 717 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 715 | 718 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 719 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 716 | 720 | |
| 717 | 721 | const S = packed struct { |
| 718 | 722 | a: u2, |
| ... | ... | @@ -1525,6 +1529,7 @@ test "optional generic function label struct field" { |
| 1525 | 1529 | test "struct fields get automatically reordered" { |
| 1526 | 1530 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1527 | 1531 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; |
| 1532 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 1528 | 1533 | |
| 1529 | 1534 | const S1 = struct { |
| 1530 | 1535 | a: u32, |
test/behavior/threadlocal.zig+1| ... | ... | @@ -9,6 +9,7 @@ test "thread local variable" { |
| 9 | 9 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 10 | 10 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 11 | 11 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest; // TODO |
| 12 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 12 | 13 | |
| 13 | 14 | if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .macos) { |
| 14 | 15 | // Fails due to register hazards. |
test/behavior/union.zig+1| ... | ... | @@ -1841,6 +1841,7 @@ test "reinterpret packed union" { |
| 1841 | 1841 | |
| 1842 | 1842 | test "reinterpret packed union inside packed struct" { |
| 1843 | 1843 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1844 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO | |
| 1844 | 1845 | |
| 1845 | 1846 | const U = packed union { |
| 1846 | 1847 | a: u7, |