//@ 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!"));
}
