summary refs log tree commit diff
path: root/src/test/run-pass
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-02-18 16:34:42 -0800
committerBrian Anderson <banderson@mozilla.com>2012-02-20 18:58:04 -0800
commit4220dcf1e9de2c2d2c329ecefa80108b63a69145 (patch)
treebd70397f064225f8d38b692f5f8120ed9e732d9e /src/test/run-pass
parentfbc95ba0184a417ff6d8b2b417f210c960e142cc (diff)
downloadrust-4220dcf1e9de2c2d2c329ecefa80108b63a69145.tar.gz
rust-4220dcf1e9de2c2d2c329ecefa80108b63a69145.zip
core: New task API
Diffstat (limited to 'src/test/run-pass')
-rw-r--r--src/test/run-pass/binops.rs11
-rw-r--r--src/test/run-pass/issue-507.rs8
-rw-r--r--src/test/run-pass/issue-783.rs5
-rw-r--r--src/test/run-pass/join.rs15
-rw-r--r--src/test/run-pass/linked-failure.rs21
-rw-r--r--src/test/run-pass/lots-a-fail.rs5
-rw-r--r--src/test/run-pass/morestack5.rs2
-rw-r--r--src/test/run-pass/morestack6.rs2
-rw-r--r--src/test/run-pass/send-iloop.rs5
-rw-r--r--src/test/run-pass/spawn-module-qualified.rs9
-rw-r--r--src/test/run-pass/spawn.rs3
-rw-r--r--src/test/run-pass/task-comm-1.rs8
-rw-r--r--src/test/run-pass/task-comm-12.rs6
-rw-r--r--src/test/run-pass/task-comm-13.rs3
-rw-r--r--src/test/run-pass/task-comm-2.rs31
-rw-r--r--src/test/run-pass/task-comm-3.rs12
-rw-r--r--src/test/run-pass/task-comm-7.rs36
-rw-r--r--src/test/run-pass/task-comm-8.rs51
-rw-r--r--src/test/run-pass/task-comm-9.rs8
-rw-r--r--src/test/run-pass/task-comm.rs20
-rw-r--r--src/test/run-pass/task-killjoin.rs26
-rw-r--r--src/test/run-pass/task-spawn-connected.rs18
-rw-r--r--src/test/run-pass/terminate-in-initializer.rs8
-rw-r--r--src/test/run-pass/too-much-recursion.rs5
-rw-r--r--src/test/run-pass/unwind-box.rs5
-rw-r--r--src/test/run-pass/unwind-resource.rs5
-rw-r--r--src/test/run-pass/unwind-resource2.rs5
-rw-r--r--src/test/run-pass/unwind-unique.rs5
-rw-r--r--src/test/run-pass/yield.rs6
-rw-r--r--src/test/run-pass/yield1.rs6
30 files changed, 96 insertions, 254 deletions
diff --git a/src/test/run-pass/binops.rs b/src/test/run-pass/binops.rs
index 3fc83c5759d..e841345cba8 100644
--- a/src/test/run-pass/binops.rs
+++ b/src/test/run-pass/binops.rs
@@ -96,16 +96,6 @@ fn test_ptr() unsafe {
     assert p1 >= p2;
 }
 
-fn test_task() {
-    fn f() { }
-    let f1 = f, f2 = f;
-    let t1 = task::spawn {|| f1(); };
-    let t2 = task::spawn {|| f2(); };
-
-    assert (t1 == t1);
-    assert (t1 != t2);
-}
-
 fn test_fn() {
     fn f() { }
     fn g() { }
@@ -147,7 +137,6 @@ fn main() {
     test_port();
     test_chan();
     test_ptr();
-    test_task();
     test_fn();
     test_native_fn();
 }
diff --git a/src/test/run-pass/issue-507.rs b/src/test/run-pass/issue-507.rs
index 3cb790063a9..7490f06d548 100644
--- a/src/test/run-pass/issue-507.rs
+++ b/src/test/run-pass/issue-507.rs
@@ -8,7 +8,6 @@
 use std;
 
 import task;
-import task::join;
 import comm;
 import comm::chan;
 import comm::send;
@@ -18,21 +17,18 @@ import comm::recv;
 fn grandchild(c: chan<int>) { send(c, 42); }
 
 fn child(c: chan<int>) {
-    let _grandchild = task::spawn_joinable {|| grandchild(c); };
-    join(_grandchild);
+    task::spawn {|| grandchild(c); }
 }
 
 fn main() {
     let p = comm::port();
     let ch = chan(p);
 
-    let _child = task::spawn_joinable {|| child(ch); };
+    task::spawn {|| child(ch); }
 
     let x: int = recv(p);
 
     log(debug, x);
 
     assert (x == 42);
-
-    join(_child);
 }
diff --git a/src/test/run-pass/issue-783.rs b/src/test/run-pass/issue-783.rs
index 27384b102eb..0dc78cbaec3 100644
--- a/src/test/run-pass/issue-783.rs
+++ b/src/test/run-pass/issue-783.rs
@@ -21,6 +21,7 @@ fn a() {
 }
 
 fn main() {
-    let t = spawn_joinable {|| a(); };
-    join(t);
+    iter::repeat(100u) {||
+        spawn {|| a(); }
+    }
 }
diff --git a/src/test/run-pass/join.rs b/src/test/run-pass/join.rs
deleted file mode 100644
index ef4073406b4..00000000000
--- a/src/test/run-pass/join.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// -*- rust -*-
-
-use std;
-
-import task::*;
-
-fn main() {
-    let other = spawn_joinable {|| child(); };
-    #error("1");
-    yield();
-    join(other);
-    #error("3");
-}
-
-fn child() { #error("2"); }
diff --git a/src/test/run-pass/linked-failure.rs b/src/test/run-pass/linked-failure.rs
deleted file mode 100644
index b82aa7c2cb0..00000000000
--- a/src/test/run-pass/linked-failure.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// -*- rust -*-
-// xfail-win32
-use std;
-import task;
-import comm::port;
-import comm::recv;
-
-fn child() { assert (1 == 2); }
-
-fn parent() {
-    // Since this task isn't supervised it won't bring down the whole
-    // process
-    task::unsupervise();
-    let p = port::<int>();
-    task::spawn {|| child(); };
-    let x = recv(p);
-}
-
-fn main() {
-    task::spawn {|| parent(); };
-}
\ No newline at end of file
diff --git a/src/test/run-pass/lots-a-fail.rs b/src/test/run-pass/lots-a-fail.rs
index 9f51b688b11..924c0ea8a7a 100644
--- a/src/test/run-pass/lots-a-fail.rs
+++ b/src/test/run-pass/lots-a-fail.rs
@@ -9,12 +9,13 @@ fn die() {
 }
 
 fn iloop() {
-    task::unsupervise();
     task::spawn {|| die(); };
 }
 
 fn main() {
     uint::range(0u, 100u) {|_i|
-        task::spawn {|| iloop(); };
+        let builder = task::mk_task_builder();
+        task::unsupervise(builder);
+        task::run(builder) {|| iloop(); };
     }
 }
\ No newline at end of file
diff --git a/src/test/run-pass/morestack5.rs b/src/test/run-pass/morestack5.rs
index ecd187ae44a..db67db86626 100644
--- a/src/test/run-pass/morestack5.rs
+++ b/src/test/run-pass/morestack5.rs
@@ -12,7 +12,7 @@ fn getbig(&&i: int) {
 fn main() {
     let sz = 400u;
     while sz < 500u {
-        task::join(task::spawn_joinable {|| getbig(200) });
+        task::try {|| getbig(200) };
         sz += 1u;
     }
 }
\ No newline at end of file
diff --git a/src/test/run-pass/morestack6.rs b/src/test/run-pass/morestack6.rs
index 87ff60f13a7..6d8ac3c38f8 100644
--- a/src/test/run-pass/morestack6.rs
+++ b/src/test/run-pass/morestack6.rs
@@ -61,6 +61,6 @@ fn main() {
     for f in fns {
         let sz = rng.next() % 256u32 + 256u32;
         let frame_backoff = rng.next() % 10u32 + 1u32;
-        task::join(task::spawn_joinable {|| runtest(f, frame_backoff);});
+        task::try {|| runtest(f, frame_backoff) };
     }
 }
\ No newline at end of file
diff --git a/src/test/run-pass/send-iloop.rs b/src/test/run-pass/send-iloop.rs
index 5fb4e4e9bd9..ece3dc4ce64 100644
--- a/src/test/run-pass/send-iloop.rs
+++ b/src/test/run-pass/send-iloop.rs
@@ -9,7 +9,6 @@ fn die() {
 }
 
 fn iloop() {
-    task::unsupervise();
     task::spawn {|| die(); };
     let p = comm::port::<()>();
     let c = comm::chan(p);
@@ -23,6 +22,8 @@ fn iloop() {
 
 fn main() {
     uint::range(0u, 16u) {|_i|
-        task::spawn {|| iloop(); };
+        let builder = task::mk_task_builder();
+        task::unsupervise(builder);
+        task::run(builder) {|| iloop(); }
     }
 }
\ No newline at end of file
diff --git a/src/test/run-pass/spawn-module-qualified.rs b/src/test/run-pass/spawn-module-qualified.rs
deleted file mode 100644
index cbc3b8b2ea6..00000000000
--- a/src/test/run-pass/spawn-module-qualified.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-use std;
-import task::join;
-import task::spawn_joinable;
-
-fn main() { let x = spawn_joinable {|| m::child(10); }; join(x); }
-
-mod m {
-    fn child(&&i: int) { log(debug, i); }
-}
diff --git a/src/test/run-pass/spawn.rs b/src/test/run-pass/spawn.rs
index 7a395f677aa..600cbdb06b8 100644
--- a/src/test/run-pass/spawn.rs
+++ b/src/test/run-pass/spawn.rs
@@ -5,8 +5,7 @@ use std;
 import task;
 
 fn main() {
-    let t = task::spawn_joinable {|| child(10); };
-    task::join(t);
+    task::spawn {|| child(10); };
 }
 
 fn child(&&i: int) { log(error, i); assert (i == 10); }
diff --git a/src/test/run-pass/task-comm-1.rs b/src/test/run-pass/task-comm-1.rs
index 96901b9ae56..713d487f3d8 100644
--- a/src/test/run-pass/task-comm-1.rs
+++ b/src/test/run-pass/task-comm-1.rs
@@ -1,14 +1,8 @@
-use std;
-
-import task::spawn_joinable;
-import task::join;
-
 fn main() { test00(); }
 
 fn start() { #debug("Started / Finished task."); }
 
 fn test00() {
-    let t = spawn_joinable {|| start(); };
-    join(t);
+    task::try {|| start() };
     #debug("Completing.");
 }
diff --git a/src/test/run-pass/task-comm-12.rs b/src/test/run-pass/task-comm-12.rs
index beaa93c02e0..4e690a034ce 100644
--- a/src/test/run-pass/task-comm-12.rs
+++ b/src/test/run-pass/task-comm-12.rs
@@ -7,7 +7,9 @@ fn start(&&task_number: int) { #debug("Started / Finished task."); }
 
 fn test00() {
     let i: int = 0;
-    let t = task::spawn_joinable {|| start(i); };
+    let builder = task::mk_task_builder();
+    let r = task::future_result(builder);
+    task::run(builder) {|| start(i); };
 
     // Sleep long enough for the task to finish.
     let i = 0;
@@ -17,7 +19,7 @@ fn test00() {
     }
 
     // Try joining tasks that have already finished.
-    task::join(t);
+    future::get(r);
 
     #debug("Joined task.");
 }
diff --git a/src/test/run-pass/task-comm-13.rs b/src/test/run-pass/task-comm-13.rs
index dc2393d13f4..5998dd15cf2 100644
--- a/src/test/run-pass/task-comm-13.rs
+++ b/src/test/run-pass/task-comm-13.rs
@@ -12,7 +12,6 @@ fn main() {
     #debug("Check that we don't deadlock.");
     let p = comm::port::<int>();
     let ch = comm::chan(p);
-    let a = task::spawn_joinable {|| start(ch, 0, 10); };
-    task::join(a);
+    task::try {|| start(ch, 0, 10) };
     #debug("Joined task");
 }
diff --git a/src/test/run-pass/task-comm-2.rs b/src/test/run-pass/task-comm-2.rs
deleted file mode 100644
index c17b1c8a11e..00000000000
--- a/src/test/run-pass/task-comm-2.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-// xfail-win32
-use std;
-
-import task;
-
-fn main() {
-    #debug("===== SPAWNING and JOINING THREAD TASKS =====");
-    test00();
-}
-
-fn start(&&task_number: int) {
-    #debug("Started task.");
-    let i: int = 0;
-    while i < 10000 { i = i + 1; }
-    #debug("Finished task.");
-}
-
-fn test00() {
-    let number_of_tasks: int = 8;
-
-    let i: int = 0;
-    let tasks = [];
-    while i < number_of_tasks {
-        i = i + 1;
-        tasks += [task::spawn_joinable {|| start(i); }];
-    }
-
-    for t in tasks { task::join(t); }
-
-    #debug("Joined all task.");
-}
diff --git a/src/test/run-pass/task-comm-3.rs b/src/test/run-pass/task-comm-3.rs
index d5826309356..bb1044d39e3 100644
--- a/src/test/run-pass/task-comm-3.rs
+++ b/src/test/run-pass/task-comm-3.rs
@@ -30,17 +30,19 @@ fn test00() {
     let i: int = 0;
 
     // Create and spawn tasks...
-    let tasks = [];
+    let results = [];
     while i < number_of_tasks {
-        tasks += [task::spawn_joinable {||
+        let builder = task::mk_task_builder();
+        results += [task::future_result(builder)];
+        task::run(builder) {||
             test00_start(ch, i, number_of_messages)
-        }];
+        }
         i = i + 1;
     }
 
     // Read from spawned tasks...
     let sum = 0;
-    for t in tasks {
+    for r in results {
         i = 0;
         while i < number_of_messages {
             let value = recv(po);
@@ -50,7 +52,7 @@ fn test00() {
     }
 
     // Join spawned tasks...
-    for t in tasks { task::join(t); }
+    for r in results { future::get(r); }
 
     #debug("Completed: Final number is: ");
     log(error, sum);
diff --git a/src/test/run-pass/task-comm-7.rs b/src/test/run-pass/task-comm-7.rs
index c7c15830955..64649b85459 100644
--- a/src/test/run-pass/task-comm-7.rs
+++ b/src/test/run-pass/task-comm-7.rs
@@ -1,9 +1,6 @@
 use std;
 import task;
 import comm;
-import comm::chan;
-import comm::recv;
-import comm::port;
 
 fn main() { test00(); }
 
@@ -15,40 +12,35 @@ fn test00_start(c: comm::chan<int>, start: int, number_of_messages: int) {
 fn test00() {
     let r: int = 0;
     let sum: int = 0;
-    let p = port();
+    let p = comm::port();
     let number_of_messages: int = 10;
-    let c = chan(p);
+    let c = comm::chan(p);
 
-    let t0 = task::spawn_joinable {||
+    task::spawn {||
         test00_start(c, number_of_messages * 0, number_of_messages);
-    };
-    let t1 = task::spawn_joinable {||
+    }
+    task::spawn {||
         test00_start(c, number_of_messages * 1, number_of_messages);
-    };
-    let t2 = task::spawn_joinable {||
+    }
+    task::spawn {||
         test00_start(c, number_of_messages * 2, number_of_messages);
-    };
-    let t3 = task::spawn_joinable {||
+    }
+    task::spawn {||
         test00_start(c, number_of_messages * 3, number_of_messages);
-    };
+    }
 
     let i: int = 0;
     while i < number_of_messages {
-        r = recv(p);
+        r = comm::recv(p);
         sum += r;
-        r = recv(p);
+        r = comm::recv(p);
         sum += r;
-        r = recv(p);
+        r = comm::recv(p);
         sum += r;
-        r = recv(p);
+        r = comm::recv(p);
         sum += r;
         i += 1;
     }
 
-    task::join(t0);
-    task::join(t1);
-    task::join(t2);
-    task::join(t3);
-
     assert (sum == number_of_messages * 4 * (number_of_messages * 4 - 1) / 2);
 }
diff --git a/src/test/run-pass/task-comm-8.rs b/src/test/run-pass/task-comm-8.rs
deleted file mode 100644
index 8259fde9fad..00000000000
--- a/src/test/run-pass/task-comm-8.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-use std;
-import task;
-import comm;
-
-fn main() { test00(); }
-
-fn test00_start(c: comm::chan<int>, start: int, number_of_messages: int) {
-    let i: int = 0;
-    while i < number_of_messages { comm::send(c, start + i); i += 1; }
-}
-
-fn test00() {
-    let r: int = 0;
-    let sum: int = 0;
-    let p = comm::port();
-    let c = comm::chan(p);
-    let number_of_messages: int = 10;
-
-    let t0 = task::spawn_joinable {||
-        test00_start(c, number_of_messages * 0, number_of_messages);
-    };
-    let t1 = task::spawn_joinable {||
-        test00_start(c, number_of_messages * 1, number_of_messages);
-    };
-    let t2 = task::spawn_joinable {||
-        test00_start(c, number_of_messages * 2, number_of_messages);
-    };
-    let t3 = task::spawn_joinable {||
-        test00_start(c, number_of_messages * 3, number_of_messages);
-    };
-
-    let i: int = 0;
-    while i < number_of_messages {
-        r = comm::recv(p);
-        sum += r;
-        r = comm::recv(p);
-        sum += r;
-        r = comm::recv(p);
-        sum += r;
-        r = comm::recv(p);
-        sum += r;
-        i += 1;
-    }
-
-    task::join(t0);
-    task::join(t1);
-    task::join(t2);
-    task::join(t3);
-
-    assert (sum == number_of_messages * 4 * (number_of_messages * 4 - 1) / 2);
-}
diff --git a/src/test/run-pass/task-comm-9.rs b/src/test/run-pass/task-comm-9.rs
index f6cc1dae6f0..85d1e03c09c 100644
--- a/src/test/run-pass/task-comm-9.rs
+++ b/src/test/run-pass/task-comm-9.rs
@@ -16,9 +16,11 @@ fn test00() {
     let number_of_messages: int = 10;
     let ch = comm::chan(p);
 
-    let t0 = task::spawn_joinable {||
+    let builder = task::mk_task_builder();
+    let r = task::future_result(builder);
+    task::run(builder) {||
         test00_start(ch, number_of_messages);
-    };
+    }
 
     let i: int = 0;
     while i < number_of_messages {
@@ -27,7 +29,7 @@ fn test00() {
         i += 1;
     }
 
-    task::join(t0);
+    future::get(r);
 
     assert (sum == number_of_messages * (number_of_messages - 1) / 2);
 }
diff --git a/src/test/run-pass/task-comm.rs b/src/test/run-pass/task-comm.rs
index f029dcd61a2..d710b50e2b0 100644
--- a/src/test/run-pass/task-comm.rs
+++ b/src/test/run-pass/task-comm.rs
@@ -38,20 +38,20 @@ fn test00() {
 
     let i: int = 0;
 
-    let tasks = [];
+    let results = [];
     while i < number_of_tasks {
         i = i + 1;
-        tasks += [
-            task::spawn_joinable {|| test00_start(ch, i, number_of_messages);}
-        ];
+        let builder = task::mk_task_builder();
+        results += [task::future_result(builder)];
+        task::run(builder) {|| test00_start(ch, i, number_of_messages);}
     }
     let sum: int = 0;
-    for t in tasks {
+    for r in results {
         i = 0;
         while i < number_of_messages { sum += recv(po); i = i + 1; }
     }
 
-    for t in tasks { task::join(t); }
+    for r in results { future::get(r); }
 
     #debug("Completed: Final number is: ");
     assert (sum ==
@@ -123,14 +123,16 @@ fn test06() {
 
     let i: int = 0;
 
-    let tasks = [];
+    let results = [];
     while i < number_of_tasks {
         i = i + 1;
-        tasks += [task::spawn_joinable {|| test06_start(i);}];
+        let builder = task::mk_task_builder();
+        results += [task::future_result(builder)];
+        task::run(builder) {|| test06_start(i);};
     }
 
 
-    for t in tasks { task::join(t); }
+    for r in results { future::get(r); }
 }
 
 
diff --git a/src/test/run-pass/task-killjoin.rs b/src/test/run-pass/task-killjoin.rs
index 313d9bd3702..872639bc8e7 100644
--- a/src/test/run-pass/task-killjoin.rs
+++ b/src/test/run-pass/task-killjoin.rs
@@ -1,18 +1,17 @@
 // xfail-win32
-// Create a task that is supervised by another task,
-// join the supervised task from the supervising task,
-// then fail the supervised task. The supervised task
-// will kill the supervising task, waking it up. The
-// supervising task no longer needs to be wakened when
-// the supervised task exits.
+
+// Create a task that is supervised by another task, join the supervised task
+// from the supervising task, then fail the supervised task. The supervised
+// task will kill the supervising task, waking it up. The supervising task no
+// longer needs to be wakened when the supervised task exits.
 
 use std;
 import task;
 
 fn supervised() {
-    // Yield to make sure the supervisor joins before we
-    // fail. This is currently not needed because the supervisor
-    // runs first, but I can imagine that changing.
+    // Yield to make sure the supervisor joins before we fail. This is
+    // currently not needed because the supervisor runs first, but I can
+    // imagine that changing.
     task::yield();
     fail;
 }
@@ -20,15 +19,14 @@ fn supervised() {
 fn supervisor() {
     // Unsupervise this task so the process doesn't return a failure status as
     // a result of the main task being killed.
-    task::unsupervise();
     let f = supervised;
-    let t = task::spawn_joinable {|| supervised(); };
-    task::join(t);
+    task::try {|| supervised() };
 }
 
 fn main() {
-    let dom2 = task::spawn_joinable {|| supervisor(); };
-    task::join(dom2);
+    let builder = task::mk_task_builder();
+    task::unsupervise(builder);
+    task::run(builder) {|| supervisor(); }
 }
 
 // Local Variables:
diff --git a/src/test/run-pass/task-spawn-connected.rs b/src/test/run-pass/task-spawn-connected.rs
deleted file mode 100644
index 053dab56a05..00000000000
--- a/src/test/run-pass/task-spawn-connected.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-fn stringifier(from_par: comm::port<uint>,
-               to_par: comm::chan<str>) {
-    let value: uint;
-    do {
-        value = comm::recv(from_par);
-        comm::send(to_par, uint::to_str(value, 10u));
-    } while value != 0u;
-}
-
-fn main() {
-    let t = task::spawn_connected(stringifier);
-    comm::send(t.to_child, 22u);
-    assert comm::recv(t.from_child) == "22";
-    comm::send(t.to_child, 23u);
-    assert comm::recv(t.from_child) == "23";
-    comm::send(t.to_child, 0u);
-    assert comm::recv(t.from_child) == "0";
-}
\ No newline at end of file
diff --git a/src/test/run-pass/terminate-in-initializer.rs b/src/test/run-pass/terminate-in-initializer.rs
index 23597b3ed62..9b722a947c0 100644
--- a/src/test/run-pass/terminate-in-initializer.rs
+++ b/src/test/run-pass/terminate-in-initializer.rs
@@ -11,14 +11,14 @@ fn test_cont() { let i = 0; while i < 1 { i += 1; let x: @int = cont; } }
 fn test_ret() { let x: @int = ret; }
 
 fn test_fail() {
-    fn f() { task::unsupervise(); let x: @int = fail; }
-    task::spawn {|| f(); };
+    fn f() { let x: @int = fail; }
+    task::try {|| f() };
 }
 
 fn test_fail_indirect() {
     fn f() -> ! { fail; }
-    fn g() { task::unsupervise(); let x: @int = f(); }
-    task::spawn {|| g(); };
+    fn g() { let x: @int = f(); }
+    task::try {|| g() };
 }
 
 fn main() {
diff --git a/src/test/run-pass/too-much-recursion.rs b/src/test/run-pass/too-much-recursion.rs
index 03d537d0ca6..04119e296cf 100644
--- a/src/test/run-pass/too-much-recursion.rs
+++ b/src/test/run-pass/too-much-recursion.rs
@@ -5,8 +5,9 @@
 // that it doesn't bring down the whole proc
 
 fn main() {
-    task::spawn {||
-        task::unsupervise();
+    let builder = task::mk_task_builder();
+    task::unsupervise(builder);
+    task::run(builder) {||
         fn f() { f() };
         f();
     };
diff --git a/src/test/run-pass/unwind-box.rs b/src/test/run-pass/unwind-box.rs
index ca4221e0763..5281ddb05c7 100644
--- a/src/test/run-pass/unwind-box.rs
+++ b/src/test/run-pass/unwind-box.rs
@@ -3,11 +3,12 @@ use std;
 import task;
 
 fn f() {
-    task::unsupervise();
     let a = @0;
     fail;
 }
 
 fn main() {
-    task::spawn {|| f(); };
+    let builder = task::mk_task_builder();
+    task::unsupervise(builder);
+    task::run(builder) {|| f(); }
 }
\ No newline at end of file
diff --git a/src/test/run-pass/unwind-resource.rs b/src/test/run-pass/unwind-resource.rs
index 5bb70236b7c..0c64af20b40 100644
--- a/src/test/run-pass/unwind-resource.rs
+++ b/src/test/run-pass/unwind-resource.rs
@@ -8,7 +8,6 @@ resource complainer(c: comm::chan<bool>) {
 }
 
 fn f(c: comm::chan<bool>) {
-    task::unsupervise();
     let c <- complainer(c);
     fail;
 }
@@ -16,6 +15,8 @@ fn f(c: comm::chan<bool>) {
 fn main() {
     let p = comm::port();
     let c = comm::chan(p);
-    task::spawn {|| f(c); };
+    let builder = task::mk_task_builder();
+    task::unsupervise(builder);
+    task::run(builder) {|| f(c); }
     assert comm::recv(p);
 }
\ No newline at end of file
diff --git a/src/test/run-pass/unwind-resource2.rs b/src/test/run-pass/unwind-resource2.rs
index dbf91f31a3f..b4d2294fbfe 100644
--- a/src/test/run-pass/unwind-resource2.rs
+++ b/src/test/run-pass/unwind-resource2.rs
@@ -7,11 +7,12 @@ resource complainer(c: @int) {
 }
 
 fn f() {
-    task::unsupervise();
     let c <- complainer(@0);
     fail;
 }
 
 fn main() {
-    task::spawn {|| f(); };
+    let builder = task::mk_task_builder();
+    task::unsupervise(builder);
+    task::run(builder) {|| f(); }
 }
\ No newline at end of file
diff --git a/src/test/run-pass/unwind-unique.rs b/src/test/run-pass/unwind-unique.rs
index 9fab3c54609..222343e1dc4 100644
--- a/src/test/run-pass/unwind-unique.rs
+++ b/src/test/run-pass/unwind-unique.rs
@@ -3,11 +3,12 @@ use std;
 import task;
 
 fn f() {
-    task::unsupervise();
     let a = ~0;
     fail;
 }
 
 fn main() {
-    task::spawn {|| f(); };
+    let builder = task::mk_task_builder();
+    task::unsupervise(builder);
+    task::run(builder) {|| f(); }
 }
\ No newline at end of file
diff --git a/src/test/run-pass/yield.rs b/src/test/run-pass/yield.rs
index eb4a74c141a..3194676aae7 100644
--- a/src/test/run-pass/yield.rs
+++ b/src/test/run-pass/yield.rs
@@ -4,13 +4,15 @@ import task;
 import task::*;
 
 fn main() {
-    let other = task::spawn_joinable {|| child(); };
+    let builder = task::mk_task_builder();
+    let result = task::future_result(builder);
+    task::run(builder) {|| child(); }
     #error("1");
     yield();
     #error("2");
     yield();
     #error("3");
-    join(other);
+    future::get(result);
 }
 
 fn child() {
diff --git a/src/test/run-pass/yield1.rs b/src/test/run-pass/yield1.rs
index a5234cf8d12..c309e5b1b0c 100644
--- a/src/test/run-pass/yield1.rs
+++ b/src/test/run-pass/yield1.rs
@@ -4,10 +4,12 @@ import task;
 import task::*;
 
 fn main() {
-    let other = task::spawn_joinable {|| child(); };
+    let builder = task::mk_task_builder();
+    let result = task::future_result(builder);
+    task::run(builder) {|| child(); }
     #error("1");
     yield();
-    join(other);
+    future::get(result);
 }
 
 fn child() { #error("2"); }