// option. This file may not be copied, modified, or distributed
// except according to those terms.
-// exec-env:RUST_LOG=rust-log-filter/f.o
+// exec-env:RUST_LOG=rust-log-filter/foo
-#![feature(phase)]
-#[phase(plugin,link)]
+#![allow(unknown_features)]
+#![feature(box_syntax)]
+
+#[macro_use]
extern crate log;
+use std::sync::mpsc::{channel, Sender, Receiver};
+use std::thread::Thread;
+
pub struct ChannelLogger {
tx: Sender<String>
}
impl log::Logger for ChannelLogger {
fn log(&mut self, record: &log::LogRecord) {
- self.tx.send(format!("{}", record.args));
+ self.tx.send(format!("{}", record.args)).unwrap();
}
}
pub fn main() {
let (logger, rx) = ChannelLogger::new();
- spawn(move|| {
+ let _t = Thread::spawn(move|| {
log::set_logger(logger);
- // our regex is "f.o"
- // ensure it is a regex, and isn't anchored
info!("foo");
info!("bar");
info!("foo bar");
info!("bar foo");
- info!("f1o");
});
- assert_eq!(rx.recv().as_slice(), "foo");
- assert_eq!(rx.recv().as_slice(), "foo bar");
- assert_eq!(rx.recv().as_slice(), "bar foo");
- assert_eq!(rx.recv().as_slice(), "f1o");
- assert!(rx.recv_opt().is_err());
+ assert_eq!(rx.recv().unwrap().as_slice(), "foo");
+ assert_eq!(rx.recv().unwrap().as_slice(), "foo bar");
+ assert_eq!(rx.recv().unwrap().as_slice(), "bar foo");
+ assert!(rx.recv().is_err());
}