From 17090b85245039c663b79b17c477c8835880953c Mon Sep 17 00:00:00 2001 From: Oliver Schneider Date: Tue, 24 Jan 2017 17:55:42 +0100 Subject: [PATCH] add tests for cargo miri and run them on travis --- .gitignore | 2 +- .travis.yml | 7 ++++++- cargo-miri-test/Cargo.lock | 4 ++++ cargo-miri-test/Cargo.toml | 6 ++++++ cargo-miri-test/src/main.rs | 3 +++ cargo-miri-test/tests/foo.rs | 4 ++++ src/bin/cargo-miri.rs | 15 ++++++--------- 7 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 cargo-miri-test/Cargo.lock create mode 100644 cargo-miri-test/Cargo.toml create mode 100644 cargo-miri-test/src/main.rs create mode 100644 cargo-miri-test/tests/foo.rs diff --git a/.gitignore b/.gitignore index a51553a8c5e..d32d9eb99af 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -/target +target /doc tex/*/out *.dot diff --git a/.travis.yml b/.travis.yml index 91e6255f33c..52717dfc0db 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,12 @@ before_script: script: - | env RUST_SYSROOT=$HOME/rust travis-cargo build && - env RUST_SYSROOT=$HOME/rust travis-cargo test + env RUST_SYSROOT=$HOME/rust travis-cargo test && + env RUST_SYSROOT=$HOME/rust travis-cargo install && + cd cargo-miri-test && + env RUST_SYSROOT=$HOME/rust travis-cargo miri && + env RUST_SYSROOT=$HOME/rust travis-cargo miri test && + cd .. notifications: email: on_success: never diff --git a/cargo-miri-test/Cargo.lock b/cargo-miri-test/Cargo.lock new file mode 100644 index 00000000000..a62bb86226c --- /dev/null +++ b/cargo-miri-test/Cargo.lock @@ -0,0 +1,4 @@ +[root] +name = "cargo-miri-test" +version = "0.1.0" + diff --git a/cargo-miri-test/Cargo.toml b/cargo-miri-test/Cargo.toml new file mode 100644 index 00000000000..29886d99a39 --- /dev/null +++ b/cargo-miri-test/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "cargo-miri-test" +version = "0.1.0" +authors = ["Oliver Schneider "] + +[dependencies] diff --git a/cargo-miri-test/src/main.rs b/cargo-miri-test/src/main.rs new file mode 100644 index 00000000000..aa00ab84cb0 --- /dev/null +++ b/cargo-miri-test/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + assert_eq!(5, 5); +} diff --git a/cargo-miri-test/tests/foo.rs b/cargo-miri-test/tests/foo.rs new file mode 100644 index 00000000000..fb7fad21c9d --- /dev/null +++ b/cargo-miri-test/tests/foo.rs @@ -0,0 +1,4 @@ +#[test] +fn bar() { + assert_eq!(4, 4); +} diff --git a/src/bin/cargo-miri.rs b/src/bin/cargo-miri.rs index 5e059d6f2b0..58109ad5958 100644 --- a/src/bin/cargo-miri.rs +++ b/src/bin/cargo-miri.rs @@ -84,19 +84,16 @@ fn main() { let package = metadata.packages.remove(package_index); for target in package.targets { let args = std::env::args().skip(skip); - if test && target.kind.get(0).map_or(false, |kind| kind == "test") { + let kind = target.kind.get(0).expect("badly formatted cargo metadata: target::kind is an empty array"); + if test && kind == "test" { if let Err(code) = process(vec!["--test".to_string(), target.name].into_iter().chain(args), &dep_path) { std::process::exit(code); } - } else if !test { - if target.kind.get(0).map_or(false, |kind| kind == "bin") { - if let Err(code) = process(vec!["--bin".to_string(), target.name].into_iter().chain(args), - &dep_path) { - std::process::exit(code); - } - } else { - panic!("badly formatted cargo metadata: target::kind is an empty array"); + } else if !test && kind == "bin" { + if let Err(code) = process(vec!["--bin".to_string(), target.name].into_iter().chain(args), + &dep_path) { + std::process::exit(code); } } }