Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 75734a9

Browse files
committed
std::rt: Run the tests for Local in a bare thread
Otherwise interferes with the existing runtime
1 parent 835e963 commit 75734a9

File tree

1 file changed

+45
-36
lines changed

1 file changed

+45
-36
lines changed

src/libstd/rt/local.rs

Lines changed: 45 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -126,63 +126,72 @@ impl Local for IoFactoryObject {
126126

127127
#[cfg(test)]
128128
mod test {
129+
use unstable::run_in_bare_thread;
129130
use rt::test::*;
130131
use super::*;
131132
use rt::task::Task;
132133
use rt::local_ptr;
133134

134135
#[test]
135136
fn thread_local_task_smoke_test() {
136-
local_ptr::init_tls_key();
137-
let mut sched = ~new_test_uv_sched();
138-
let task = ~Task::new_root(&mut sched.stack_pool, || {});
139-
Local::put(task);
140-
let task: ~Task = Local::take();
141-
cleanup_task(task);
137+
do run_in_bare_thread {
138+
local_ptr::init_tls_key();
139+
let mut sched = ~new_test_uv_sched();
140+
let task = ~Task::new_root(&mut sched.stack_pool, || {});
141+
Local::put(task);
142+
let task: ~Task = Local::take();
143+
cleanup_task(task);
144+
}
142145
}
143146

144147
#[test]
145148
fn thread_local_task_two_instances() {
146-
local_ptr::init_tls_key();
147-
let mut sched = ~new_test_uv_sched();
148-
let task = ~Task::new_root(&mut sched.stack_pool, || {});
149-
Local::put(task);
150-
let task: ~Task = Local::take();
151-
cleanup_task(task);
152-
let task = ~Task::new_root(&mut sched.stack_pool, || {});
153-
Local::put(task);
154-
let task: ~Task = Local::take();
155-
cleanup_task(task);
149+
do run_in_bare_thread {
150+
local_ptr::init_tls_key();
151+
let mut sched = ~new_test_uv_sched();
152+
let task = ~Task::new_root(&mut sched.stack_pool, || {});
153+
Local::put(task);
154+
let task: ~Task = Local::take();
155+
cleanup_task(task);
156+
let task = ~Task::new_root(&mut sched.stack_pool, || {});
157+
Local::put(task);
158+
let task: ~Task = Local::take();
159+
cleanup_task(task);
160+
}
156161

157162
}
158163

159164
#[test]
160165
fn borrow_smoke_test() {
161-
local_ptr::init_tls_key();
162-
let mut sched = ~new_test_uv_sched();
163-
let task = ~Task::new_root(&mut sched.stack_pool, || {});
164-
Local::put(task);
165-
166-
unsafe {
167-
let _task: *mut Task = Local::unsafe_borrow();
166+
do run_in_bare_thread {
167+
local_ptr::init_tls_key();
168+
let mut sched = ~new_test_uv_sched();
169+
let task = ~Task::new_root(&mut sched.stack_pool, || {});
170+
Local::put(task);
171+
172+
unsafe {
173+
let _task: *mut Task = Local::unsafe_borrow();
174+
}
175+
let task: ~Task = Local::take();
176+
cleanup_task(task);
168177
}
169-
let task: ~Task = Local::take();
170-
cleanup_task(task);
171178
}
172179

173180
#[test]
174181
fn borrow_with_return() {
175-
local_ptr::init_tls_key();
176-
let mut sched = ~new_test_uv_sched();
177-
let task = ~Task::new_root(&mut sched.stack_pool, || {});
178-
Local::put(task);
179-
180-
let res = do Local::borrow::<Task,bool> |_task| {
181-
true
182-
};
183-
assert!(res)
184-
let task: ~Task = Local::take();
185-
cleanup_task(task);
182+
do run_in_bare_thread {
183+
local_ptr::init_tls_key();
184+
let mut sched = ~new_test_uv_sched();
185+
let task = ~Task::new_root(&mut sched.stack_pool, || {});
186+
Local::put(task);
187+
188+
let res = do Local::borrow::<Task,bool> |_task| {
189+
true
190+
};
191+
assert!(res)
192+
let task: ~Task = Local::take();
193+
cleanup_task(task);
194+
}
186195
}
187196

188197
}

0 commit comments

Comments
 (0)