Allow running tests on all channels
diff --git a/testcrate/Cargo.toml b/testcrate/Cargo.toml
new file mode 100644
index 0000000..239a273
--- /dev/null
+++ b/testcrate/Cargo.toml
@@ -0,0 +1,10 @@
+[package]
+name = "testcrate"
+version = "0.1.0"
+authors = ["Alex Crichton <alex@alexcrichton.com>"]
+
+[dependencies]
+proc-macro2 = { path = ".." }
+
+[dev-dependencies]
+compiletest_rs = "0.2"
diff --git a/testcrate/src/lib.rs b/testcrate/src/lib.rs
new file mode 100644
index 0000000..cdfbe1a
--- /dev/null
+++ b/testcrate/src/lib.rs
@@ -0,0 +1,6 @@
+#[cfg(test)]
+mod tests {
+    #[test]
+    fn it_works() {
+    }
+}
diff --git a/testcrate/tests/compile-fail/symbol_send.rs b/testcrate/tests/compile-fail/symbol_send.rs
new file mode 100644
index 0000000..19da4e7
--- /dev/null
+++ b/testcrate/tests/compile-fail/symbol_send.rs
@@ -0,0 +1,9 @@
+extern crate proc_macro2;
+
+use proc_macro2::Term;
+
+fn assert_send<T: Send>() {}
+
+fn main() {
+    assert_send::<Term>(); //~ the trait bound `*const (): std::marker::Send` is not satisfied in `proc_macro2::Term`
+}
diff --git a/testcrate/tests/compile-fail/symbol_sync.rs b/testcrate/tests/compile-fail/symbol_sync.rs
new file mode 100644
index 0000000..68c1289
--- /dev/null
+++ b/testcrate/tests/compile-fail/symbol_sync.rs
@@ -0,0 +1,9 @@
+extern crate proc_macro2;
+
+use proc_macro2::Term;
+
+fn assert_sync<T: Sync>() {}
+
+fn main() {
+    assert_sync::<Term>(); //~ the trait bound `*const (): std::marker::Sync` is not satisfied in `proc_macro2::Term`
+}
diff --git a/testcrate/tests/compiletest.rs b/testcrate/tests/compiletest.rs
new file mode 100644
index 0000000..b1055ce
--- /dev/null
+++ b/testcrate/tests/compiletest.rs
@@ -0,0 +1,14 @@
+extern crate compiletest_rs as compiletest;
+
+fn run_mode(mode: &'static str) {
+    let mut config = compiletest::default_config();
+    config.mode = mode.parse().expect("invalid mode");
+    config.target_rustcflags = Some("-L target/debug/deps".to_owned());
+    config.src_base = format!("tests/{}", mode).into();
+    compiletest::run_tests(&config);
+}
+
+#[test]
+fn compile_fail() {
+    run_mode("compile-fail");
+}