| //@ run-pass |
| //@ needs-threads |
| //@ needs-unwind |
| |
| #![feature(internal_output_capture)] |
| |
| use std::sync::{Arc, Mutex}; |
| use std::{io, str, thread}; |
| |
| fn main() { |
| let data = Arc::new(Mutex::new(Vec::new())); |
| let res = thread::Builder::new() |
| .spawn({ |
| let data = data.clone(); |
| move || { |
| io::set_output_capture(Some(data)); |
| panic!("Hello, world!") |
| } |
| }) |
| .unwrap() |
| .join(); |
| assert!(res.is_err()); |
| |
| let output = data.lock().unwrap(); |
| let output = str::from_utf8(&output).unwrap(); |
| assert!(output.contains("Hello, world!")); |
| } |