test: retire 911_attest_record; record-continue owned by test/package
This commit is contained in:
@@ -616,6 +616,24 @@ fn runtimepath(relative: str) str = {
|
||||
(30i64 * (time.second: i64)): time.duration, &out);
|
||||
expectexit(&out, 1);
|
||||
assert(has(out.stdout, "signal_is_not_exit ... FAIL (signal 15)\n"));
|
||||
|
||||
// Record-and-continue past every fault class: the runner reports
|
||||
// hardware faults with their literal signal numbers and still
|
||||
// reaches the trailing test (retired 911_attest_record).
|
||||
let recav: []str = [driver("ww"), "test",
|
||||
runtimepath("record_continue_test.ww")];
|
||||
runcommand(root, "sf-record", recav,
|
||||
(30i64 * (time.second: i64)): time.duration, &out);
|
||||
expectexit(&out, 1);
|
||||
assert(has(out.stdout, "rec_pass_a ... ok\n"));
|
||||
assert(has(out.stdout, "rec_assert ... FAIL (exit 1)\n"));
|
||||
assert(has(out.stdout, "rec_segv ... FAIL (signal 11)\n"));
|
||||
assert(has(out.stdout, "rec_div0 ... FAIL (signal 8)\n"));
|
||||
assert(has(out.stdout, "rec_pass_b ... ok\n"));
|
||||
assert(has(out.stdout,
|
||||
"2 passed, 3 failed, 0 skipped, 0 harness errors\n"));
|
||||
assert(has(out.stdout,
|
||||
"5 discovered, 5 selected, 5 started, 5 completed\n"));
|
||||
clean(root);
|
||||
};
|
||||
|
||||
|
||||
30
test/package/runtime/record_continue_test.ww
Normal file
30
test/package/runtime/record_continue_test.ww
Normal file
@@ -0,0 +1,30 @@
|
||||
// Record-and-continue: one passing test, then the three runtime fault
|
||||
// classes the lib/test fork+wait4 runner must each catch and PROCEED
|
||||
// past (failed assert, nil deref -> SIGSEGV, divide-by-zero -> SIGFPE),
|
||||
// then a final passing test to prove the run reaches the tail after
|
||||
// every failure. Ported from the retired 911_attest_record carrier and
|
||||
// its test/wcc/data/attest_record.ww fixture.
|
||||
|
||||
package runtime_record_continue_test;
|
||||
|
||||
@test fn rec_pass_a() void = {
|
||||
assert(1 + 1 == 2);
|
||||
};
|
||||
|
||||
@test fn rec_assert() void = {
|
||||
assert(1 == 2);
|
||||
};
|
||||
|
||||
@test fn rec_segv() void = {
|
||||
let p: *i32 = nil: *i32;
|
||||
*p = 7i32;
|
||||
};
|
||||
|
||||
@test fn rec_div0() void = {
|
||||
let z: i32 = 0;
|
||||
let _: i32 = 1 / z;
|
||||
};
|
||||
|
||||
@test fn rec_pass_b() void = {
|
||||
assert(true);
|
||||
};
|
||||
Reference in New Issue
Block a user