about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/test.rs25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/lib/test.rs b/src/lib/test.rs
index 1e9ad1f9f4c..7fc6ad4da13 100644
--- a/src/lib/test.rs
+++ b/src/lib/test.rs
@@ -22,6 +22,7 @@ export filter_tests;
 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 @@ native "rust" mod rustrt {
 // 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 default_test_to_task(f: &fn()) -> task {
     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;