From 26ea2caa43eabe5e3fe43b2ef4f3c60c757745c9 Mon Sep 17 00:00:00 2001 From: Thom Chiovoloni Date: Sun, 8 Sep 2019 01:47:13 -0700 Subject: [PATCH] Run miri in CI --- .travis.yml | 3 ++- scripts/run_miri.sh | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 scripts/run_miri.sh diff --git a/.travis.yml b/.travis.yml index ee744e1..a5e7388 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,4 +11,5 @@ script: | ([ $TRAVIS_RUST_VERSION != nightly ] || cargo check --verbose --no-default-features) && ([ $TRAVIS_RUST_VERSION != nightly ] || cargo test --verbose --features union) && ([ $TRAVIS_RUST_VERSION != nightly ] || cargo test --verbose --all-features) && - ([ $TRAVIS_RUST_VERSION != nightly ] || cargo bench --verbose bench) + ([ $TRAVIS_RUST_VERSION != nightly ] || cargo bench --verbose bench) && + ([ $TRAVIS_RUST_VERSION != nightly ] || bash ./scripts/run_miri.sh) diff --git a/scripts/run_miri.sh b/scripts/run_miri.sh new file mode 100644 index 0000000..42f2884 --- /dev/null +++ b/scripts/run_miri.sh @@ -0,0 +1,21 @@ +#!/usr/bin/bash + +set -ex + +# Clean out our target dir, which may have artifacts compiled by a version of +# rust different from the one we're about to download. +cargo clean + +# Install and run the latest version of nightly where miri built successfully. +# Taken from: https://github.com/rust-lang/miri#running-miri-on-ci + +MIRI_NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri) +echo "Installing latest nightly with Miri: $MIRI_NIGHTLY" +rustup default "$MIRI_NIGHTLY" + +rustup component add miri +cargo miri setup + +cargo miri test --verbose -- -- -Zunstable-options --exclude-should-panic +cargo miri test --verbose --features union -- -- -Zunstable-options --exclude-should-panic +cargo miri test --verbose --all-features -- -- -Zunstable-options --exclude-should-panic