rename test-compare-panic to test-stack-traces
This commit is contained in:
274
test/stack_traces.zig
Normal file
274
test/stack_traces.zig
Normal file
@@ -0,0 +1,274 @@
|
||||
const builtin = @import("builtin");
|
||||
const std = @import("std");
|
||||
const os = std.os;
|
||||
const tests = @import("tests.zig");
|
||||
|
||||
pub fn addCases(cases: *tests.StackTracesContext) void {
|
||||
const source_return =
|
||||
\\const std = @import("std");
|
||||
\\
|
||||
\\pub fn main() !void {
|
||||
\\ return error.TheSkyIsFalling;
|
||||
\\}
|
||||
;
|
||||
const source_try_return =
|
||||
\\const std = @import("std");
|
||||
\\
|
||||
\\fn foo() !void {
|
||||
\\ return error.TheSkyIsFalling;
|
||||
\\}
|
||||
\\
|
||||
\\pub fn main() !void {
|
||||
\\ try foo();
|
||||
\\}
|
||||
;
|
||||
const source_try_try_return_return =
|
||||
\\const std = @import("std");
|
||||
\\
|
||||
\\fn foo() !void {
|
||||
\\ try bar();
|
||||
\\}
|
||||
\\
|
||||
\\fn bar() !void {
|
||||
\\ return make_error();
|
||||
\\}
|
||||
\\
|
||||
\\fn make_error() !void {
|
||||
\\ return error.TheSkyIsFalling;
|
||||
\\}
|
||||
\\
|
||||
\\pub fn main() !void {
|
||||
\\ try foo();
|
||||
\\}
|
||||
;
|
||||
switch (builtin.os) {
|
||||
.linux => {
|
||||
cases.addCase(
|
||||
"return",
|
||||
source_return,
|
||||
[_][]const u8{
|
||||
// debug
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:4:5: [address] in main (test)
|
||||
\\
|
||||
,
|
||||
// release-safe
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:4:5: [address] in std.special.posixCallMainAndExit (test)
|
||||
\\
|
||||
,
|
||||
// release-fast
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
,
|
||||
// release-small
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
},
|
||||
);
|
||||
cases.addCase(
|
||||
"try return",
|
||||
source_try_return,
|
||||
[_][]const u8{
|
||||
// debug
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:4:5: [address] in foo (test)
|
||||
\\source.zig:8:5: [address] in main (test)
|
||||
\\
|
||||
,
|
||||
// release-safe
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:4:5: [address] in std.special.posixCallMainAndExit (test)
|
||||
\\source.zig:8:5: [address] in std.special.posixCallMainAndExit (test)
|
||||
\\
|
||||
,
|
||||
// release-fast
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
,
|
||||
// release-small
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
},
|
||||
);
|
||||
cases.addCase(
|
||||
"try try return return",
|
||||
source_try_try_return_return,
|
||||
[_][]const u8{
|
||||
// debug
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:12:5: [address] in make_error (test)
|
||||
\\source.zig:8:5: [address] in bar (test)
|
||||
\\source.zig:4:5: [address] in foo (test)
|
||||
\\source.zig:16:5: [address] in main (test)
|
||||
\\
|
||||
,
|
||||
// release-safe
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:12:5: [address] in std.special.posixCallMainAndExit (test)
|
||||
\\source.zig:8:5: [address] in std.special.posixCallMainAndExit (test)
|
||||
\\source.zig:4:5: [address] in std.special.posixCallMainAndExit (test)
|
||||
\\source.zig:16:5: [address] in std.special.posixCallMainAndExit (test)
|
||||
\\
|
||||
,
|
||||
// release-fast
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
,
|
||||
// release-small
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
},
|
||||
);
|
||||
},
|
||||
.macosx => {
|
||||
cases.addCase(
|
||||
"return",
|
||||
source_return,
|
||||
[_][]const u8{
|
||||
// debug
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:4:5: [address] in _main.0 (test.o)
|
||||
\\
|
||||
,
|
||||
// release-safe
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:4:5: [address] in _main (test.o)
|
||||
\\
|
||||
,
|
||||
// release-fast
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
,
|
||||
// release-small
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
},
|
||||
);
|
||||
cases.addCase(
|
||||
"try return",
|
||||
source_try_return,
|
||||
[_][]const u8{
|
||||
// debug
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:4:5: [address] in _foo (test.o)
|
||||
\\source.zig:8:5: [address] in _main.0 (test.o)
|
||||
\\
|
||||
,
|
||||
// release-safe
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:4:5: [address] in _main (test.o)
|
||||
\\source.zig:8:5: [address] in _main (test.o)
|
||||
\\
|
||||
,
|
||||
// release-fast
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
,
|
||||
// release-small
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
},
|
||||
);
|
||||
cases.addCase(
|
||||
"try try return return",
|
||||
source_try_try_return_return,
|
||||
[_][]const u8{
|
||||
// debug
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:12:5: [address] in _make_error (test.o)
|
||||
\\source.zig:8:5: [address] in _bar (test.o)
|
||||
\\source.zig:4:5: [address] in _foo (test.o)
|
||||
\\source.zig:16:5: [address] in _main.0 (test.o)
|
||||
\\
|
||||
,
|
||||
// release-safe
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:12:5: [address] in _main (test.o)
|
||||
\\source.zig:8:5: [address] in _main (test.o)
|
||||
\\source.zig:4:5: [address] in _main (test.o)
|
||||
\\source.zig:16:5: [address] in _main (test.o)
|
||||
\\
|
||||
,
|
||||
// release-fast
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
,
|
||||
// release-small
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
},
|
||||
);
|
||||
},
|
||||
.windows => {
|
||||
cases.addCase(
|
||||
"return",
|
||||
source_return,
|
||||
[_][]const u8{
|
||||
// debug
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:4:5: [address] in main (test.obj)
|
||||
\\
|
||||
,
|
||||
// release-safe
|
||||
// --disabled-- results in segmenetation fault
|
||||
"",
|
||||
// release-fast
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
,
|
||||
// release-small
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
},
|
||||
);
|
||||
cases.addCase(
|
||||
"try return",
|
||||
source_try_return,
|
||||
[_][]const u8{
|
||||
// debug
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:4:5: [address] in foo (test.obj)
|
||||
\\source.zig:8:5: [address] in main (test.obj)
|
||||
\\
|
||||
,
|
||||
// release-safe
|
||||
// --disabled-- results in segmenetation fault
|
||||
"",
|
||||
// release-fast
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
,
|
||||
// release-small
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
},
|
||||
);
|
||||
cases.addCase(
|
||||
"try try return return",
|
||||
source_try_try_return_return,
|
||||
[_][]const u8{
|
||||
// debug
|
||||
\\error: TheSkyIsFalling
|
||||
\\source.zig:12:5: [address] in make_error (test.obj)
|
||||
\\source.zig:8:5: [address] in bar (test.obj)
|
||||
\\source.zig:4:5: [address] in foo (test.obj)
|
||||
\\source.zig:16:5: [address] in main (test.obj)
|
||||
\\
|
||||
,
|
||||
// release-safe
|
||||
// --disabled-- results in segmenetation fault
|
||||
"",
|
||||
// release-fast
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
,
|
||||
// release-small
|
||||
\\error: TheSkyIsFalling
|
||||
\\
|
||||
},
|
||||
);
|
||||
},
|
||||
else => {},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user