diff --git a/Cargo.toml b/Cargo.toml index 4114837..4e0acda 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,3 +13,6 @@ repository = "https://github.com/SpaceManiac/opus-rs" [dependencies] opus-sys = "0.2.0" libc = "0.2" + +[dev-dependencies] +compiletest_rs = "0.2.4" diff --git a/tests/compile-fail/repacketize.rs b/tests/compile-fail/repacketize.rs new file mode 100644 index 0000000..e8e9c17 --- /dev/null +++ b/tests/compile-fail/repacketize.rs @@ -0,0 +1,10 @@ +extern crate opus; + +fn main() { + let mut rp = opus::Repacketizer::new().unwrap(); + let mut wip = rp.begin().cat_move( + &[1, 2, 3] + //~^ ERROR borrowed value does not live long enough + ).unwrap(); + wip.out(&mut []); +} diff --git a/tests/compiletests.rs b/tests/compiletests.rs new file mode 100644 index 0000000..903cfe6 --- /dev/null +++ b/tests/compiletests.rs @@ -0,0 +1,21 @@ +extern crate compiletest_rs as compiletest; + +use std::path::PathBuf; + +#[cfg(debug_assertions)] +const DEPS: &'static str = "-L target/debug -L target/debug/deps"; +#[cfg(not(debug_assertions))] +const DEPS: &'static str = "-L target/release -L target/release/deps"; + +fn run_mode(mode: &'static str) { + let mut config = compiletest::default_config(); + config.mode = mode.parse().ok().expect("Invalid mode"); + config.src_base = PathBuf::from(format!("tests/{}", mode)); + config.target_rustcflags = Some(DEPS.to_owned()); + compiletest::run_tests(&config); +} + +#[test] +fn compile_test() { + run_mode("compile-fail"); +}