Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/compiler/test_runner.zig
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,7 @@ pub fn mainSimple() anyerror!void {
};
// is the backend capable of using std.fmt.format to print a summary at the end?
const print_summary = switch (builtin.zig_backend) {
.stage2_riscv64 => true,
else => false,
};

Expand All @@ -309,7 +310,7 @@ pub fn mainSimple() anyerror!void {
stderr.writeAll("... ") catch {};
stderr.writeAll("PASS\n") catch {};
}
} else |err| if (enable_print) {
} else |err| {
if (enable_print) {
stderr.writeAll(test_fn.name) catch {};
stderr.writeAll("... ") catch {};
Expand Down
1 change: 1 addition & 0 deletions test/behavior/align.zig
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,7 @@ test "struct field explicit alignment" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // flaky
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const S = struct {
const Node = struct {
Expand Down
2 changes: 2 additions & 0 deletions test/behavior/atomics.zig
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ test "atomic load and rmw with enum" {
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const Value = enum(u8) { a, b, c };
var x = Value.a;
Expand Down Expand Up @@ -188,6 +189,7 @@ test "atomicrmw with floats" {
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

try testAtomicRmwFloat();
try comptime testAtomicRmwFloat();
Expand Down
1 change: 1 addition & 0 deletions test/behavior/bitcast.zig
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,7 @@ test "@bitCast of packed struct of bools all true" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const P = packed struct {
b0: bool,
Expand Down
2 changes: 2 additions & 0 deletions test/behavior/cast.zig
Original file line number Diff line number Diff line change
Expand Up @@ -1796,6 +1796,7 @@ test "peer type resolution: array and vector with same child type" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

var arr: [2]u32 = .{ 0, 1 };
var vec: @Vector(2, u32) = .{ 2, 3 };
Expand Down Expand Up @@ -1934,6 +1935,7 @@ test "peer type resolution: vector and optional vector" {
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

var a: ?@Vector(3, u32) = .{ 0, 1, 2 };
var b: @Vector(3, u32) = .{ 3, 4, 5 };
Expand Down
3 changes: 3 additions & 0 deletions test/behavior/cast_int.zig
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ test "coerce i8 to i32 and @intCast back" {
}

test "coerce non byte-sized integers accross 32bits boundary" {
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
{
var v: u21 = 6417;
_ = &v;
Expand Down Expand Up @@ -166,6 +167,7 @@ const Piece = packed struct {
test "load non byte-sized optional value" {
// Originally reported at https://github.com/ziglang/zig/issues/14200
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

// note: this bug is triggered by the == operator, expectEqual will hide it
const opt: ?Piece = try Piece.charToPiece('p');
Expand All @@ -181,6 +183,7 @@ test "load non byte-sized optional value" {
test "load non byte-sized value in struct" {
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.cpu.arch.endian() != .little) return error.SkipZigTest; // packed struct TODO
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

// note: this bug is triggered by the == operator, expectEqual will hide it
// using ptrCast not to depend on unitialised memory state
Expand Down
1 change: 1 addition & 0 deletions test/behavior/enum.zig
Original file line number Diff line number Diff line change
Expand Up @@ -1121,6 +1121,7 @@ test "bit field access with enum fields" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

var data = bit_field_1;
try expect(getA(&data) == A.Two);
Expand Down
1 change: 1 addition & 0 deletions test/behavior/error.zig
Original file line number Diff line number Diff line change
Expand Up @@ -1087,6 +1087,7 @@ test "result location initialization of error union with OPV payload" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const S = struct {
x: u0,
Expand Down
1 change: 1 addition & 0 deletions test/behavior/generics.zig
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,7 @@ test "generic struct as parameter type" {

test "slice as parameter type" {
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const S = struct {
fn internComptimeString(comptime str: []const u8) *const []const u8 {
Expand Down
4 changes: 4 additions & 0 deletions test/behavior/math.zig
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ test "@clz" {
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

try testClz();
try comptime testClz();
Expand Down Expand Up @@ -878,6 +879,7 @@ test "@addWithOverflow" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

try testAddWithOverflow(u8, 250, 100, 94, 1);
try testAddWithOverflow(u8, 100, 150, 250, 0);
Expand Down Expand Up @@ -939,6 +941,7 @@ test "@addWithOverflow > 64 bits" {
test "small int addition" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

var x: u2 = 0;
try expect(x == 0);
Expand Down Expand Up @@ -966,6 +969,7 @@ fn testMulWithOverflow(comptime T: type, a: T, b: T, mul: T, bit: u1) !void {
test "basic @mulWithOverflow" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

try testMulWithOverflow(u8, 86, 3, 2, 1);
try testMulWithOverflow(u8, 85, 3, 255, 0);
Expand Down
1 change: 1 addition & 0 deletions test/behavior/optional.zig
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,7 @@ test "result location initialization of optional with OPV payload" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const S = struct {
x: u0,
Expand Down
5 changes: 5 additions & 0 deletions test/behavior/packed-struct.zig
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,7 @@ test "nested packed struct field pointers" {
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // ubsan unaligned pointer access
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
if (native_endian != .little) return error.SkipZigTest; // Byte aligned packed struct field pointers have not been implemented yet

const S2 = packed struct {
Expand Down Expand Up @@ -954,6 +955,7 @@ test "pointer to container level packed struct field" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const S = packed struct(u32) {
test_bit: bool,
Expand Down Expand Up @@ -998,6 +1000,7 @@ test "bitcast back and forth" {
test "field access of packed struct smaller than its abi size inside struct initialized with rls" {
// Originally reported at https://github.com/ziglang/zig/issues/14200
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const S = struct {
ps: packed struct { x: i2, y: i2 },
Expand Down Expand Up @@ -1147,6 +1150,7 @@ test "assignment to non-byte-aligned field in packed struct" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const Frame = packed struct {
num: u20,
Expand Down Expand Up @@ -1361,6 +1365,7 @@ test "byte-aligned packed relocation" {

test "packed struct store of comparison result" {
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const S1 = packed struct {
val1: u3,
Expand Down
2 changes: 2 additions & 0 deletions test/behavior/packed-union.zig
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ test "flags in packed union" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

try testFlagsInPackedUnion();
try comptime testFlagsInPackedUnion();
Expand Down Expand Up @@ -50,6 +51,7 @@ test "flags in packed union at offset" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

try testFlagsInPackedUnionAtOffset();
try comptime testFlagsInPackedUnionAtOffset();
Expand Down
1 change: 1 addition & 0 deletions test/behavior/popcount.zig
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ test "@popCount integers" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

try comptime testPopCountIntegers();
try testPopCountIntegers();
Expand Down
2 changes: 2 additions & 0 deletions test/behavior/src.zig
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ test "@src used as a comptime parameter" {
}

test "@src in tuple passed to anytype function" {
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const S = struct {
fn Foo(a: anytype) u32 {
return a[0].line;
Expand Down
5 changes: 5 additions & 0 deletions test/behavior/struct.zig
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,7 @@ test "packed struct 24bits" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.cpu.arch.isArm()) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

comptime {
std.debug.assert(@sizeOf(Foo24Bits) == @sizeOf(u24));
Expand Down Expand Up @@ -526,6 +527,7 @@ test "implicit cast packed struct field to const ptr" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const LevelUpMove = packed struct {
move_id: u9,
Expand Down Expand Up @@ -591,6 +593,7 @@ test "bit field access" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

var data = bit_field_1;
try expect(getA(&data) == 1);
Expand Down Expand Up @@ -714,6 +717,7 @@ test "pointer to packed struct member in a stack variable" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const S = packed struct {
a: u2,
Expand Down Expand Up @@ -1526,6 +1530,7 @@ test "optional generic function label struct field" {
test "struct fields get automatically reordered" {
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const S1 = struct {
a: u32,
Expand Down
1 change: 1 addition & 0 deletions test/behavior/threadlocal.zig
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ test "thread local variable" {
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .macos) {
// Fails due to register hazards.
Expand Down
1 change: 1 addition & 0 deletions test/behavior/union.zig
Original file line number Diff line number Diff line change
Expand Up @@ -1842,6 +1842,7 @@ test "reinterpret packed union" {

test "reinterpret packed union inside packed struct" {
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO

const U = packed union {
a: u7,
Expand Down
Loading