Skip to content

Commit 6fb92f8

Browse files
committed
std::rt: Do local tests in a bare thread to not interfere with the scheduler
1 parent 2c13157 commit 6fb92f8

File tree

1 file changed

+30
-21
lines changed

1 file changed

+30
-21
lines changed

src/libstd/rt/local.rs

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -103,46 +103,55 @@ impl Local for IoFactoryObject {
103103

104104
#[cfg(test)]
105105
mod test {
106+
use unstable::run_in_bare_thread;
106107
use rt::test::*;
107108
use rt::sched::Scheduler;
108109
use super::*;
109110

110111
#[test]
111112
fn thread_local_scheduler_smoke_test() {
112-
let scheduler = ~new_test_uv_sched();
113-
Local::put(scheduler);
114-
let _scheduler: ~Scheduler = Local::take();
113+
do run_in_bare_thread {
114+
let scheduler = ~new_test_uv_sched();
115+
Local::put(scheduler);
116+
let _scheduler: ~Scheduler = Local::take();
117+
}
115118
}
116119

117120
#[test]
118121
fn thread_local_scheduler_two_instances() {
119-
let scheduler = ~new_test_uv_sched();
120-
Local::put(scheduler);
121-
let _scheduler: ~Scheduler = Local::take();
122-
let scheduler = ~new_test_uv_sched();
123-
Local::put(scheduler);
124-
let _scheduler: ~Scheduler = Local::take();
122+
do run_in_bare_thread {
123+
let scheduler = ~new_test_uv_sched();
124+
Local::put(scheduler);
125+
let _scheduler: ~Scheduler = Local::take();
126+
let scheduler = ~new_test_uv_sched();
127+
Local::put(scheduler);
128+
let _scheduler: ~Scheduler = Local::take();
129+
}
125130
}
126131

127132
#[test]
128133
fn borrow_smoke_test() {
129-
let scheduler = ~new_test_uv_sched();
130-
Local::put(scheduler);
131-
unsafe {
132-
let _scheduler: *mut Scheduler = Local::unsafe_borrow();
134+
do run_in_bare_thread {
135+
let scheduler = ~new_test_uv_sched();
136+
Local::put(scheduler);
137+
unsafe {
138+
let _scheduler: *mut Scheduler = Local::unsafe_borrow();
139+
}
140+
let _scheduler: ~Scheduler = Local::take();
133141
}
134-
let _scheduler: ~Scheduler = Local::take();
135142
}
136143

137144
#[test]
138145
fn borrow_with_return() {
139-
let scheduler = ~new_test_uv_sched();
140-
Local::put(scheduler);
141-
let res = do Local::borrow::<Scheduler,bool> |_sched| {
142-
true
143-
};
144-
assert!(res)
145-
let _scheduler: ~Scheduler = Local::take();
146+
do run_in_bare_thread {
147+
let scheduler = ~new_test_uv_sched();
148+
Local::put(scheduler);
149+
let res = do Local::borrow::<Scheduler,bool> |_sched| {
150+
true
151+
};
152+
assert!(res);
153+
let _scheduler: ~Scheduler = Local::take();
154+
}
146155
}
147156

148157
}

0 commit comments

Comments
 (0)