ww: put test result trailers on a new line
This commit is contained in:
@@ -1683,6 +1683,115 @@ fn cwdwritedata(dir: str, label: str) void = {
|
||||
clean(root);
|
||||
};
|
||||
|
||||
@test fn directory_test_trailer_starts_on_new_line() void = {
|
||||
let root: str = fresh();
|
||||
let pass: str = strings.concat(root, "/pass");
|
||||
let fail: str = strings.concat(root, "/fail");
|
||||
let complete: str = strings.concat(root, "/complete");
|
||||
let empty: str = strings.concat(root, "/empty");
|
||||
let signal: str = strings.concat(root, "/signal");
|
||||
mkdirall(pass);
|
||||
mkdirall(fail);
|
||||
mkdirall(complete);
|
||||
mkdirall(empty);
|
||||
mkdirall(signal);
|
||||
writefile(strings.concat(pass, "/partial_test.ww"), strings.concat(
|
||||
"package trailer_pass_test;\nimport os;\n",
|
||||
"fn init() void = { os.write(os.STDOUT_FILENO,",
|
||||
" \"partial-success\".ptr, 15u64); os.exit(0); };\n",
|
||||
"@test fn unreachable() void = { void; };\n"));
|
||||
writefile(strings.concat(fail, "/partial_test.ww"), strings.concat(
|
||||
"package trailer_fail_test;\nimport os;\n",
|
||||
"fn init() void = { os.write(os.STDERR_FILENO,",
|
||||
" \"partial-failure\".ptr, 15u64); os.exit(7); };\n",
|
||||
"@test fn unreachable() void = { void; };\n"));
|
||||
writefile(strings.concat(complete, "/complete_test.ww"), strings.concat(
|
||||
"package trailer_complete_test;\nimport os;\n",
|
||||
"fn init() void = { os.write(os.STDOUT_FILENO,",
|
||||
" \"complete\\n\".ptr, 9u64); os.exit(0); };\n",
|
||||
"@test fn unreachable() void = { void; };\n"));
|
||||
writefile(strings.concat(empty, "/empty_test.ww"), strings.concat(
|
||||
"package trailer_empty_test;\nimport os;\n",
|
||||
"fn init() void = { os.exit(0); };\n",
|
||||
"@test fn unreachable() void = { void; };\n"));
|
||||
writefile(strings.concat(signal, "/partial_test.ww"), strings.concat(
|
||||
"package trailer_signal_test;\nimport os;\n",
|
||||
"fn init() void = { os.write(os.STDOUT_FILENO,",
|
||||
" \"partial-signal\".ptr, 14u64);",
|
||||
" os.kill(os.getpid(), os.SIGTERM); };\n",
|
||||
"@test fn unreachable() void = { void; };\n"));
|
||||
|
||||
let stages: []str = ["ww", "ww_ww"];
|
||||
let tags: []str = ["c", "ww"];
|
||||
let multiout: []str = ["", ""];
|
||||
let multierr: []str = ["", ""];
|
||||
let retained: []str = ["", ""];
|
||||
let out: commandout;
|
||||
let i: i32 = 0;
|
||||
for (i < stages.len) {
|
||||
let mav: []str = [driver(stages[i]), "test", "-j", "5", "-run",
|
||||
"unreachable", pass, fail, complete, empty, signal];
|
||||
runcommand(root, strings.concat("trailer-multi-", tags[i]), mav,
|
||||
(90i64 * (time.second: i64)): time.duration, &out);
|
||||
expectexit(&out, 1);
|
||||
assert(out.stderr.len == 0);
|
||||
assert(has(out.stdout, "partial-success\nok "));
|
||||
assert(!has(out.stdout, "partial-successok "));
|
||||
assert(has(out.stdout, "partial-failure\nFAIL "));
|
||||
assert(!has(out.stdout, "partial-failureFAIL "));
|
||||
assert(has(out.stdout, "partial-signal\nFAIL "));
|
||||
assert(!has(out.stdout, "partial-signalFAIL "));
|
||||
assert(has(out.stdout, "complete\nok "));
|
||||
assert(!has(out.stdout, "complete\n\nok "));
|
||||
multiout[i] = strings.dup(out.stdout);
|
||||
multierr[i] = strings.dup(out.stderr);
|
||||
|
||||
let eav: []str = [driver(stages[i]), "test", empty];
|
||||
runcommand(root, strings.concat("trailer-empty-", tags[i]), eav,
|
||||
(60i64 * (time.second: i64)): time.duration, &out);
|
||||
expectexit(&out, 0);
|
||||
assert(out.stderr.len == 0);
|
||||
assert(pos(out.stdout, "ok ") == 0);
|
||||
|
||||
let lav: []str = [driver(stages[i]), "test", "-list", pass];
|
||||
runcommand(root, strings.concat("trailer-list-", tags[i]), lav,
|
||||
(60i64 * (time.second: i64)): time.duration, &out);
|
||||
expectexit(&out, 0);
|
||||
assert(out.stderr.len == 0);
|
||||
assert(has(out.stdout, "partial-success\nok "));
|
||||
|
||||
retained[i] = strings.concat(root, "/retained-", tags[i]);
|
||||
let rav: []str = [driver(stages[i]), "test", "-o", retained[i],
|
||||
pass];
|
||||
runcommand(root, strings.concat("trailer-retained-", tags[i]), rav,
|
||||
(60i64 * (time.second: i64)): time.duration, &out);
|
||||
expectexit(&out, 0);
|
||||
assert(out.stderr.len == 0);
|
||||
assert(has(out.stdout, "partial-success\nok "));
|
||||
assert(os.exists(retained[i]));
|
||||
|
||||
let runav: []str = [retained[i]];
|
||||
runcommand(root, strings.concat("trailer-manual-", tags[i]), runav,
|
||||
(30i64 * (time.second: i64)): time.duration, &out);
|
||||
expectexit(&out, 0);
|
||||
assert(same(out.stdout, "partial-success"));
|
||||
assert(out.stderr.len == 0);
|
||||
|
||||
let rawav: []str = [driver(stages[i]), "test",
|
||||
strings.concat(pass, "/partial_test.ww")];
|
||||
runcommand(root, strings.concat("trailer-raw-", tags[i]), rawav,
|
||||
(60i64 * (time.second: i64)): time.duration, &out);
|
||||
expectexit(&out, 0);
|
||||
assert(same(out.stdout, "partial-success"));
|
||||
assert(out.stderr.len == 0);
|
||||
i += 1;
|
||||
};
|
||||
assert(same(multiout[0], multiout[1]));
|
||||
assert(same(multierr[0], multierr[1]));
|
||||
assert(same(readfile(retained[0]), readfile(retained[1])));
|
||||
clean(root);
|
||||
};
|
||||
|
||||
@test fn imported_dependency_tests_do_not_leak() void = {
|
||||
let root: str = fresh();
|
||||
let base: str = packagepath("dependency");
|
||||
|
||||
Reference in New Issue
Block a user