mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-22 02:00:00 +03:00
Don't stop at first test failure
Since compiletest is setting up its own test tasks it needs to configure them the correct way, which means allowing them to leak.
This commit is contained in:
+14
-11
@@ -22,6 +22,7 @@
|
||||
export parse_opts;
|
||||
export test_to_task;
|
||||
export default_test_to_task;
|
||||
export configure_test_task;
|
||||
|
||||
// The name of a test. By convention this follows the rules for rust
|
||||
// paths, i.e it should be a series of identifiers seperated by double
|
||||
@@ -300,17 +301,7 @@ fn run_test(test: &test_desc, to_task: &test_to_task) -> test_future {
|
||||
// only works with functions that don't contain closures.
|
||||
fn default_test_to_task(f: &fn()) -> task {
|
||||
fn run_task(fptr: *mutable fn() ) {
|
||||
// If this task fails we don't want that failure to propagate to the
|
||||
// test runner or else we couldn't keep running tests
|
||||
task::unsupervise();
|
||||
|
||||
// FIXME (236): Hack supreme - unwinding doesn't work yet so if this
|
||||
// task fails memory will not be freed correctly. This turns off the
|
||||
// sanity checks in the runtime's memory region for the task, so that
|
||||
// the test runner can continue.
|
||||
rustrt::hack_allow_leaks();
|
||||
|
||||
|
||||
configure_test_task();
|
||||
// Run the test
|
||||
(*fptr)()
|
||||
}
|
||||
@@ -318,6 +309,18 @@ fn run_task(fptr: *mutable fn() ) {
|
||||
ret spawn run_task(fptr);
|
||||
}
|
||||
|
||||
// Call from within a test task to make sure it's set up correctly
|
||||
fn configure_test_task() {
|
||||
// If this task fails we don't want that failure to propagate to the
|
||||
// test runner or else we couldn't keep running tests
|
||||
task::unsupervise();
|
||||
|
||||
// FIXME (236): Hack supreme - unwinding doesn't work yet so if this
|
||||
// task fails memory will not be freed correctly. This turns off the
|
||||
// sanity checks in the runtime's memory region for the task, so that
|
||||
// the test runner can continue.
|
||||
rustrt::hack_allow_leaks();
|
||||
}
|
||||
|
||||
// Local Variables:
|
||||
// mode: rust;
|
||||
|
||||
@@ -388,12 +388,12 @@ mod runtest {
|
||||
export run;
|
||||
|
||||
fn run(cx: &cx, testfile: &str) {
|
||||
test::configure_test_task();
|
||||
if (cx.config.verbose) {
|
||||
// We're going to be dumping a lot of info. Start on a new line.
|
||||
io::stdout().write_str("\n\n");
|
||||
}
|
||||
log #fmt("running %s", testfile);
|
||||
task::unsupervise();
|
||||
let props = load_props(testfile);
|
||||
alt cx.config.mode {
|
||||
mode_compile_fail. { run_cfail_test(cx, props, testfile); }
|
||||
|
||||
Reference in New Issue
Block a user