authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-06-29 08:03:59+02:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2025-06-29 08:03:59+02:00
log6322dbd5bf112356efdf2ec64c5471d6e8586a74
treed6fd887508e79e51e5e142b20099cc6ad29a654b
parent0adcfd60f4fcfd01c74a6477cbcef187ce06f533
parentff06de4c897e0b51c4d1f044746d43397500be69
signaturebadge-check Signed by PGP key B5690EEEBB952194

compiler: test runner: fix tests never fails on crippled architectures (#24180)

* compiler: test runner: fix tests never fails on crippled architectures * riscv64: skip failing tests * riscv64: enable test summary printing

18 files changed, 37 insertions(+), 2 deletions(-)

lib/compiler/test_runner.zig+2-1
......@@ -292,6 +292,7 @@ pub fn mainSimple() anyerror!void {
292292 };
293293 // is the backend capable of using std.fmt.format to print a summary at the end?
294294 const print_summary = switch (builtin.zig_backend) {
295 .stage2_riscv64 => true,
295296 else => false,
296297 };
297298
......@@ -309,7 +310,7 @@ pub fn mainSimple() anyerror!void {
309310 stderr.writeAll("... ") catch {};
310311 stderr.writeAll("PASS\n") catch {};
311312 }
312 } else |err| if (enable_print) {
313 } else |err| {
313314 if (enable_print) {
314315 stderr.writeAll(test_fn.name) catch {};
315316 stderr.writeAll("... ") catch {};
test/behavior/align.zig+2
......@@ -409,6 +409,7 @@ test "struct field explicit alignment" {
409409 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
410410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
411411 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // flaky
412 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
412413
413414 const S = struct {
414415 const Node = struct {
......@@ -532,6 +533,7 @@ test "alignment of zero-bit types is respected" {
532533 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
533534 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
534535 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
536 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
535537
536538 const S = struct { arr: [0]usize = .{} };
537539
test/behavior/atomics.zig+2
......@@ -153,6 +153,7 @@ test "atomic load and rmw with enum" {
153153 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
154154 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
155155 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
156 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
156157
157158 const Value = enum(u8) { a, b, c };
158159 var x = Value.a;
......@@ -188,6 +189,7 @@ test "atomicrmw with floats" {
188189 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
189190 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
190191 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
191193
192194 try testAtomicRmwFloat();
193195 try comptime testAtomicRmwFloat();
test/behavior/bitcast.zig+1
......@@ -477,6 +477,7 @@ test "@bitCast of packed struct of bools all true" {
477477 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
478478 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
479479 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO
480 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
480481
481482 const P = packed struct {
482483 b0: bool,
test/behavior/cast.zig+2
......@@ -1793,6 +1793,7 @@ test "peer type resolution: array and vector with same child type" {
17931793 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17941794 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17951795 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1796 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
17961797
17971798 var arr: [2]u32 = .{ 0, 1 };
17981799 var vec: @Vector(2, u32) = .{ 2, 3 };
......@@ -1931,6 +1932,7 @@ test "peer type resolution: vector and optional vector" {
19311932 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
19321933 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19331934 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO
1935 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
19341936
19351937 var a: ?@Vector(3, u32) = .{ 0, 1, 2 };
19361938 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" {
3535}
3636
3737test "coerce non byte-sized integers accross 32bits boundary" {
38 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
3839 {
3940 var v: u21 = 6417;
4041 _ = &v;
......@@ -166,6 +167,7 @@ const Piece = packed struct {
166167test "load non byte-sized optional value" {
167168 // Originally reported at https://github.com/ziglang/zig/issues/14200
168169 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
170 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
169171
170172 // note: this bug is triggered by the == operator, expectEqual will hide it
171173 const opt: ?Piece = try Piece.charToPiece('p');
......@@ -181,6 +183,7 @@ test "load non byte-sized optional value" {
181183test "load non byte-sized value in struct" {
182184 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
183185 if (builtin.cpu.arch.endian() != .little) return error.SkipZigTest; // packed struct TODO
186 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
184187
185188 // note: this bug is triggered by the == operator, expectEqual will hide it
186189 // 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" {
11211121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11221122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11231123 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1124 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
11241125
11251126 var data = bit_field_1;
11261127 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" {
10871087 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10881088 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10891089 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1090 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
10901091
10911092 const S = struct {
10921093 x: u0,
test/behavior/generics.zig+1
......@@ -412,6 +412,7 @@ test "generic struct as parameter type" {
412412
413413test "slice as parameter type" {
414414 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
415 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
415416
416417 const S = struct {
417418 fn internComptimeString(comptime str: []const u8) *const []const u8 {
test/behavior/math.zig+4-1
......@@ -66,7 +66,7 @@ test "@clz" {
6666 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6767 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6868 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
69
69 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
7070 try testClz();
7171 try comptime testClz();
7272}
......@@ -870,6 +870,7 @@ test "@addWithOverflow" {
870870 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
871871 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
872872 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
873 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
873874
874875 try testAddWithOverflow(u8, 250, 100, 94, 1);
875876 try testAddWithOverflow(u8, 100, 150, 250, 0);
......@@ -931,6 +932,7 @@ test "@addWithOverflow > 64 bits" {
931932test "small int addition" {
932933 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
933934 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
935 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
934936
935937 var x: u2 = 0;
936938 try expect(x == 0);
......@@ -958,6 +960,7 @@ fn testMulWithOverflow(comptime T: type, a: T, b: T, mul: T, bit: u1) !void {
958960test "basic @mulWithOverflow" {
959961 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
960962 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
963 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
961964
962965 try testMulWithOverflow(u8, 86, 3, 2, 1);
963966 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" {
641641 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
642642 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
643643 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
644 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
644645
645646 const S = struct {
646647 x: u0,
test/behavior/packed-struct.zig+5
......@@ -429,6 +429,7 @@ test "nested packed struct field pointers" {
429429 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
430430 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
431431 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // ubsan unaligned pointer access
432 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
432433 if (native_endian != .little) return error.SkipZigTest; // Byte aligned packed struct field pointers have not been implemented yet
433434
434435 const S2 = packed struct {
......@@ -953,6 +954,7 @@ test "pointer to container level packed struct field" {
953954 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
954955 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
955956 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
957 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
956958
957959 const S = packed struct(u32) {
958960 test_bit: bool,
......@@ -997,6 +999,7 @@ test "bitcast back and forth" {
997999test "field access of packed struct smaller than its abi size inside struct initialized with rls" {
9981000 // Originally reported at https://github.com/ziglang/zig/issues/14200
9991001 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1002 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
10001003
10011004 const S = struct {
10021005 ps: packed struct { x: i2, y: i2 },
......@@ -1146,6 +1149,7 @@ test "assignment to non-byte-aligned field in packed struct" {
11461149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11471150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11481151 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1152 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
11491153
11501154 const Frame = packed struct {
11511155 num: u20,
......@@ -1360,6 +1364,7 @@ test "byte-aligned packed relocation" {
13601364
13611365test "packed struct store of comparison result" {
13621366 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1367 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
13631368
13641369 const S1 = packed struct {
13651370 val1: u3,
test/behavior/packed-union.zig+2
......@@ -8,6 +8,7 @@ test "flags in packed union" {
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
1010 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
1112
1213 try testFlagsInPackedUnion();
1314 try comptime testFlagsInPackedUnion();
......@@ -50,6 +51,7 @@ test "flags in packed union at offset" {
5051 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
5253 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
5355
5456 try testFlagsInPackedUnionAtOffset();
5557 try comptime testFlagsInPackedUnionAtOffset();
test/behavior/popcount.zig+1
......@@ -8,6 +8,7 @@ test "@popCount integers" {
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
1112
1213 try comptime testPopCountIntegers();
1314 try testPopCountIntegers();
test/behavior/src.zig+2
......@@ -40,6 +40,8 @@ test "@src used as a comptime parameter" {
4040}
4141
4242test "@src in tuple passed to anytype function" {
43 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
44
4345 const S = struct {
4446 fn Foo(a: anytype) u32 {
4547 return a[0].line;
test/behavior/struct.zig+5
......@@ -424,6 +424,7 @@ test "packed struct 24bits" {
424424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
425425 if (builtin.cpu.arch.isArm()) return error.SkipZigTest; // TODO
426426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
427 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
427428
428429 comptime {
429430 std.debug.assert(@sizeOf(Foo24Bits) == @sizeOf(u24));
......@@ -526,6 +527,7 @@ test "implicit cast packed struct field to const ptr" {
526527 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
527528 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
528529 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
530 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
529531
530532 const LevelUpMove = packed struct {
531533 move_id: u9,
......@@ -590,6 +592,7 @@ test "bit field access" {
590592 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
591593 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
592594 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
595 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
593596
594597 var data = bit_field_1;
595598 try expect(getA(&data) == 1);
......@@ -713,6 +716,7 @@ test "pointer to packed struct member in a stack variable" {
713716 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
714717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
715718 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
719 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
716720
717721 const S = packed struct {
718722 a: u2,
......@@ -1525,6 +1529,7 @@ test "optional generic function label struct field" {
15251529test "struct fields get automatically reordered" {
15261530 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
15271531 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1532 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
15281533
15291534 const S1 = struct {
15301535 a: u32,
test/behavior/threadlocal.zig+1
......@@ -9,6 +9,7 @@ test "thread local variable" {
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1111 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
1213
1314 if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .macos) {
1415 // Fails due to register hazards.
test/behavior/union.zig+1
......@@ -1841,6 +1841,7 @@ test "reinterpret packed union" {
18411841
18421842test "reinterpret packed union inside packed struct" {
18431843 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1844 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
18441845
18451846 const U = packed union {
18461847 a: u7,