Actually run tests from the std runner. Issue #428

This commit is contained in:
Brian Anderson 2011-07-11 11:19:32 -07:00
parent f666c97e6d
commit 64ad5928e7

View file

@ -36,16 +36,63 @@ fn test_main(&test_desc[] tests) -> int {
}
fn run_tests(&test_desc[] tests) -> bool {
auto out = io::stdout();
auto total = ivec::len(tests);
out.write_line(#fmt("running %u tests", total));
auto passed = 0u;
auto failed = 0u;
for (test_desc test in tests) {
out.write_line("running " + test.name);
out.write_str(#fmt("running %s ... ", test.name));
if (run_test(test)) {
passed += 1u;
write_ok(out);
out.write_line("");
} else {
failed += 1u;
write_failed(out);
out.write_line("");
}
}
assert passed + failed == total;
out.write_str(#fmt("\nresults: %u passed; %u failed\n\n",
passed, failed));
ret true;
fn run_test(&test_desc test) -> bool {
test.fn();
ret true;
}
fn write_ok(&io::writer out) {
if (term::color_supported()) {
term::fg(out.get_buf_writer(), term::color_green);
}
out.write_str("ok");
if (term::color_supported()) {
term::reset(out.get_buf_writer());
}
}
fn write_failed(&io::writer out) {
if (term::color_supported()) {
term::fg(out.get_buf_writer(), term::color_red);
}
out.write_str("FAILED");
if (term::color_supported()) {
term::reset(out.get_buf_writer());
}
}
}
// Local Variables:
// mode: rust;
// fill-column: 78;