Commit 0cd43b0f86

Andrew Kelley <andrew@ziglang.org>
2022-05-14 02:58:32
runtime safety tests only on the native target
This matches master branch. We can look into adding more target coverage as we switch to stage2. As it stands, this works around having to duplicate the "Executor" logic to figure out when to not run the tests due to them being non-native.
1 parent 7d8b90b
Changed files (68)
test
cases
safety
test/cases/safety/@alignCast misaligned.zig
@@ -18,4 +18,5 @@ fn foo(bytes: []u8) u32 {
     return int_slice[0];
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/@asyncCall with too small a frame.zig
@@ -22,3 +22,4 @@ fn other() callconv(.Async) void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/@errSetCast error not present in destination.zig
@@ -15,4 +15,5 @@ fn foo(set1: Set1) Set2 {
     return @errSetCast(Set2, set1);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/@floatToInt cannot fit - negative out of range.zig
@@ -14,4 +14,5 @@ fn bar(a: f32) i8 {
 }
 fn baz(_: i8) void { }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/@floatToInt cannot fit - negative to unsigned.zig
@@ -14,4 +14,5 @@ fn bar(a: f32) u8 {
 }
 fn baz(_: u8) void { }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/@floatToInt cannot fit - positive out of range.zig
@@ -14,4 +14,5 @@ fn bar(a: f32) u8 {
 }
 fn baz(_: u8) void { }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/@intCast to u0.zig
@@ -16,4 +16,5 @@ fn bar(one: u1, not_zero: i32) void {
     _ = x;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/@intToEnum - no matching tag value.zig
@@ -20,3 +20,4 @@ fn bar(a: u2) Foo {
 fn baz(_: Foo) void {}
 // run
 // backend=stage1
+// target=native
test/cases/safety/@intToPtr address zero to non-optional byte-aligned pointer.zig
@@ -13,3 +13,4 @@ pub fn main() !void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/@intToPtr address zero to non-optional pointer.zig
@@ -13,3 +13,4 @@ pub fn main() !void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/@tagName on corrupted enum value.zig
@@ -22,3 +22,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/@tagName on corrupted union value.zig
@@ -23,3 +23,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/array slice sentinel mismatch.zig
@@ -15,4 +15,4 @@ pub fn main() !void {
 }
 // run
 // backend=stage1
-
+// target=native
test/cases/safety/awaiting twice.zig
@@ -26,3 +26,4 @@ fn func() void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/bad union field access.zig
@@ -21,4 +21,5 @@ fn bar(f: *Foo) void {
     f.float = 12.34;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/calling panic.zig
@@ -12,4 +12,5 @@ pub fn main() !void {
     return error.TestFailed;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/cast []u8 to bigger slice of wrong size.zig
@@ -15,4 +15,5 @@ fn widenSlice(slice: []align(1) const u8) []align(1) const i32 {
     return std.mem.bytesAsSlice(i32, slice);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/cast integer to global error and no code matches.zig
@@ -13,4 +13,5 @@ fn bar(x: u16) anyerror {
     return @intToError(x);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/empty slice with sentinel out of bounds.zig
@@ -18,3 +18,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/error return trace across suspend points.zig
@@ -35,4 +35,5 @@ fn printTrace(p: anyframe->anyerror!void) void {
     (await p) catch unreachable;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/exact division failure - vectors.zig
@@ -17,4 +17,5 @@ fn divExact(a: @Vector(4, i32), b: @Vector(4, i32)) @Vector(4, i32) {
     return @divExact(a, b);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/exact division failure.zig
@@ -15,4 +15,5 @@ fn divExact(a: i32, b: i32) i32 {
     return @divExact(a, b);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/integer addition overflow.zig
@@ -20,3 +20,4 @@ fn add(a: u16, b: u16) u16 {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/integer division by zero - vectors.zig
@@ -16,4 +16,5 @@ fn div0(a: @Vector(4, i32), b: @Vector(4, i32)) @Vector(4, i32) {
     return @divTrunc(a, b);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/integer division by zero.zig
@@ -14,4 +14,5 @@ fn div0(a: i32, b: i32) i32 {
     return @divTrunc(a, b);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/integer multiplication overflow.zig
@@ -15,4 +15,5 @@ fn mul(a: u16, b: u16) u16 {
     return a * b;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/integer negation overflow.zig
@@ -15,4 +15,5 @@ fn neg(a: i16) i16 {
     return -a;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/integer subtraction overflow.zig
@@ -15,4 +15,5 @@ fn sub(a: u16, b: u16) u16 {
     return a - b;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/intToPtr with misaligned address.zig
@@ -15,3 +15,4 @@ pub fn main() !void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/invalid resume of async function.zig
@@ -16,3 +16,4 @@ fn suspendOnce() void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/nosuspend function call, callee suspends.zig
@@ -17,3 +17,4 @@ fn add(a: i32, b: i32) i32 {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/optional unwrap operator on C pointer.zig
@@ -13,3 +13,4 @@ pub fn main() !void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/optional unwrap operator on null pointer.zig
@@ -13,3 +13,4 @@ pub fn main() !void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/out of bounds slice access.zig
@@ -15,4 +15,5 @@ fn bar(a: []const i32) i32 {
 }
 fn baz(_: i32) void { }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/pointer casting null to non-optional pointer.zig
@@ -13,3 +13,4 @@ pub fn main() !void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/pointer slice sentinel mismatch.zig
@@ -18,3 +18,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/resuming a function which is awaiting a call.zig
@@ -18,3 +18,4 @@ fn other() void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/resuming a function which is awaiting a frame.zig
@@ -19,3 +19,4 @@ fn other() void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/resuming a non-suspended function which has been suspended and resumed.zig
@@ -29,3 +29,4 @@ pub fn main() !void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/resuming a non-suspended function which never been suspended.zig
@@ -24,3 +24,4 @@ pub fn main() !void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/shift left by huge amount.zig
@@ -18,3 +18,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/shift right by huge amount.zig
@@ -18,3 +18,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/signed integer division overflow - vectors.zig
@@ -17,4 +17,5 @@ fn div(a: @Vector(4, i16), b: @Vector(4, i16)) @Vector(4, i16) {
     return @divTrunc(a, b);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/signed integer division overflow.zig
@@ -15,4 +15,5 @@ fn div(a: i16, b: i16) i16 {
     return @divTrunc(a, b);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/signed integer not fitting in cast to unsigned integer - widening.zig
@@ -12,4 +12,5 @@ pub fn main() !void {
     return error.TestFailed;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/signed integer not fitting in cast to unsigned integer.zig
@@ -15,4 +15,5 @@ fn unsigned_cast(x: i32) u32 {
     return @intCast(u32, x);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/signed shift left overflow.zig
@@ -15,4 +15,5 @@ fn shl(a: i16, b: u4) i16 {
     return @shlExact(a, b);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/signed shift right overflow.zig
@@ -15,4 +15,5 @@ fn shr(a: i16, b: u4) i16 {
     return @shrExact(a, b);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/signed-unsigned vector cast.zig
@@ -17,3 +17,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/slice sentinel mismatch - floats.zig
@@ -17,3 +17,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/slice sentinel mismatch - optional pointers.zig
@@ -17,3 +17,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/slice slice sentinel mismatch.zig
@@ -16,3 +16,4 @@ pub fn main() !void {
 }
 // run
 // backend=stage1
+// target=native
test/cases/safety/slice with sentinel out of bounds.zig
@@ -18,3 +18,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/slicing null C pointer.zig
@@ -13,4 +13,5 @@ pub fn main() !void {
     return error.TestFailed;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/switch on corrupted enum value.zig
@@ -23,3 +23,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/switch on corrupted union value.zig
@@ -23,3 +23,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/truncating vector cast.zig
@@ -17,3 +17,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/unsigned integer not fitting in cast to signed integer - same bit count.zig
@@ -12,4 +12,5 @@ pub fn main() !void {
     return error.TestFailed;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/unsigned shift left overflow.zig
@@ -15,4 +15,5 @@ fn shl(a: u16, b: u4) u16 {
     return @shlExact(a, b);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/unsigned shift right overflow.zig
@@ -15,4 +15,5 @@ fn shr(a: u16, b: u4) u16 {
     return @shrExact(a, b);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/unsigned-signed vector cast.zig
@@ -17,3 +17,4 @@ pub fn main() !void {
 
 // run
 // backend=stage1
+// target=native
test/cases/safety/unwrap error.zig
@@ -15,4 +15,5 @@ fn bar() !void {
     return error.Whatever;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/value does not fit in shortening cast - u0.zig
@@ -15,4 +15,5 @@ fn shorten_cast(x: u8) u0 {
     return @intCast(u0, x);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/value does not fit in shortening cast.zig
@@ -15,4 +15,5 @@ fn shorten_cast(x: i32) i8 {
     return @intCast(i8, x);
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/vector integer addition overflow.zig
@@ -16,4 +16,5 @@ fn add(a: @Vector(4, i32), b: @Vector(4, i32)) @Vector(4, i32) {
     return a + b;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/vector integer multiplication overflow.zig
@@ -16,4 +16,5 @@ fn mul(a: @Vector(4, u8), b: @Vector(4, u8)) @Vector(4, u8) {
     return a * b;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/vector integer negation overflow.zig
@@ -15,4 +15,5 @@ fn neg(a: @Vector(4, i16)) @Vector(4, i16) {
     return -a;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file
test/cases/safety/vector integer subtraction overflow.zig
@@ -16,4 +16,5 @@ fn sub(a: @Vector(4, u32), b: @Vector(4, u32)) @Vector(4, u32) {
     return a - b;
 }
 // run
-// backend=stage1
\ No newline at end of file
+// backend=stage1
+// target=native
\ No newline at end of file