add tests for cargo miri and run them on travis

This commit is contained in:
Oliver Schneider 2017-01-24 17:55:42 +01:00 committed by Oliver Schneider
parent 2cca377bd4
commit 17090b8524
No known key found for this signature in database
GPG Key ID: 1D5CB4FC597C3004
7 changed files with 30 additions and 11 deletions

2
.gitignore vendored
View File

@ -1,4 +1,4 @@
/target
target
/doc
tex/*/out
*.dot

View File

@ -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

4
cargo-miri-test/Cargo.lock generated Normal file
View File

@ -0,0 +1,4 @@
[root]
name = "cargo-miri-test"
version = "0.1.0"

View File

@ -0,0 +1,6 @@
[package]
name = "cargo-miri-test"
version = "0.1.0"
authors = ["Oliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>"]
[dependencies]

View File

@ -0,0 +1,3 @@
fn main() {
assert_eq!(5, 5);
}

View File

@ -0,0 +1,4 @@
#[test]
fn bar() {
assert_eq!(4, 4);
}

View File

@ -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);
}
}
}