Catch panics from syntex in test
diff --git a/tests/test_round_trip.rs b/tests/test_round_trip.rs
index 2d4250a..14bfeb5 100644
--- a/tests/test_round_trip.rs
+++ b/tests/test_round_trip.rs
@@ -13,9 +13,9 @@
 use syntex_syntax::parse::{self, ParseSess, PResult};
 use time::PreciseTime;
 
-
 use std::fs::File;
 use std::io::{self, Read, Write};
+use std::panic;
 
 macro_rules! errorf {
     ($($tt:tt)*) => {
@@ -52,37 +52,44 @@
         };
         let back = quote!(#krate).to_string();
 
-        let sess = ParseSess::new();
-        let before = match syntex_parse(content, &sess) {
-            Ok(before) => before,
-            Err(mut diagnostic) => {
-                diagnostic.cancel();
-                if diagnostic.message.starts_with("file not found for module") ||
-                   diagnostic.message.starts_with("couldn't read") {
-                    errorf!("ignore\n");
-                    continue;
-                } else {
-                    panic!(diagnostic.message.clone());
+        let equal = panic::catch_unwind(|| {
+            let sess = ParseSess::new();
+            let before = match syntex_parse(content, &sess) {
+                Ok(before) => before,
+                Err(mut diagnostic) => {
+                    diagnostic.cancel();
+                    if diagnostic.message.starts_with("file not found for module") {
+                        errorf!("ignore\n");
+                        return true;
+                    } else {
+                        errorf!("FAIL: {}\n", diagnostic.message);
+                        return false;
+                    }
                 }
-            }
-        };
-        let after = match syntex_parse(back, &sess) {
-            Ok(after) => after,
-            Err(mut diagnostic) => {
-                errorf!("syntex failed to parse");
-                diagnostic.emit();
-                failed += 1;
-                continue;
-            }
-        };
+            };
+            let after = match syntex_parse(back, &sess) {
+                Ok(after) => after,
+                Err(mut diagnostic) => {
+                    errorf!("syntex failed to parse");
+                    diagnostic.emit();
+                    return false;
+                }
+            };
 
-        if before == after {
-            errorf!("pass in {}ms\n", elapsed.num_milliseconds());
-        } else {
-            errorf!("FAIL\nbefore: {}\nafter: {}\n",
-                    format!("{:?}", before).replace("\n", ""),
-                    format!("{:?}", after).replace("\n", ""));
-            failed += 1;
+            if before == after {
+                errorf!("pass in {}ms\n", elapsed.num_milliseconds());
+                true
+            } else {
+                errorf!("FAIL\nbefore: {}\nafter: {}\n",
+                        format!("{:?}", before).replace("\n", ""),
+                        format!("{:?}", after).replace("\n", ""));
+                false
+            }
+        });
+        match equal {
+            Err(_) => errorf!("syntex panic\n"),
+            Ok(true) => {},
+            Ok(false) => failed += 1,
         }
     }