Try to run miri in CI

This commit is contained in:
Thom Chiovoloni 2020-01-10 11:50:56 -08:00
parent da1ba1ec80
commit ff3c0c7a50
2 changed files with 63 additions and 39 deletions

View File

@ -48,6 +48,8 @@ matrix:
- { os: osx, rust: 1.34.0, env: TARGET=i386-apple-ios }
- { os: osx, rust: 1.34.0, env: TARGET=x86_64-apple-ios }
- { os: linux, rust: nightly, env: RUN_MIRI=1 }
script:
- pushd scripts
- ./travis.sh

View File

@ -2,54 +2,76 @@
set -e
rustup component add clippy
cargo clippy
if [[ "$RUN_MIRI" != "" ]]; then
if [[ "$TARGET" != "" ]]; then rustup target install $TARGET; fi
cargo clean
if [[ "$TARGET" == "wasm32-"* && "$TARGET" != "wasm32-wasi" ]]; then
cargo-web --version || cargo install cargo-web
cargo web test --no-default-features $FLAGS --target=$TARGET
cargo web test $FLAGS --target=$TARGET
#cargo web test --all-features $FLAGS --target=$TARGET
# Install and run the latest version of nightly where miri built successfully.
# Taken from: https://github.com/rust-lang/miri#running-miri-on-ci
elif [[ "$TARGET" == *"-linux-android"* ]]; then
export PATH=/usr/local/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
pushd linux-android
cargo build --no-default-features --target=$TARGET $FLAGS
cargo build --target=$TARGET $FLAGS
#cargo build --all-features --target=$TARGET $FLAGS
# Don't test, can't run android emulators successfully on travis currently
popd
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 set profile minimal
rustup default "$MIRI_NIGHTLY"
elif [[ "$TARGET" == *"-apple-ios" || "$TARGET" == "wasm32-wasi" ]]; then
cargo build --no-default-features --target=$TARGET $FLAGS
cargo build --target=$TARGET $FLAGS
#cargo build --all-features --target=$TARGET $FLAGS
# Don't test
# iOS simulator setup/teardown is complicated
# cargo-web doesn't support wasm32-wasi yet, nor can wasm-pack test specify a target
rustup component add miri
cargo miri setup
elif [[ "$TARGET" == *"-unknown-linux-gnueabihf" ]]; then
#sudo apt-get update
#sudo apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
pushd generic-cross
cargo miri test --verbose
cargo miri test --verbose --no-default-features
cargo miri test --verbose --all-features
else
rustup component add clippy
cargo clippy
if [[ "$TARGET" != "" ]]; then rustup target install $TARGET; fi
if [[ "$TARGET" == "wasm32-"* && "$TARGET" != "wasm32-wasi" ]]; then
cargo-web --version || cargo install cargo-web
cargo web test --no-default-features $FLAGS --target=$TARGET
cargo web test $FLAGS --target=$TARGET
#cargo web test --all-features $FLAGS --target=$TARGET
elif [[ "$TARGET" == *"-linux-android"* ]]; then
export PATH=/usr/local/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
pushd linux-android
cargo build --no-default-features --target=$TARGET $FLAGS
cargo build --target=$TARGET $FLAGS
#cargo build --all-features --target=$TARGET $FLAGS
# Don't test, can't run android emulators successfully on travis currently
popd
elif [[ "$TARGET" == *"-apple-ios" || "$TARGET" == "wasm32-wasi" ]]; then
cargo build --no-default-features --target=$TARGET $FLAGS
cargo build --target=$TARGET $FLAGS
#cargo build --all-features --target=$TARGET $FLAGS
# Don't test
popd
# iOS simulator setup/teardown is complicated
# cargo-web doesn't support wasm32-wasi yet, nor can wasm-pack test specify a target
elif [[ "$TARGET" != "" ]]; then
pushd generic-cross
cargo test --no-default-features --target=$TARGET $FLAGS
cargo test --target=$TARGET $FLAGS
#cargo test --all-features --target=$TARGET $FLAGS
popd
elif [[ "$TARGET" == *"-unknown-linux-gnueabihf" ]]; then
#sudo apt-get update
#sudo apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
pushd generic-cross
cargo build --no-default-features --target=$TARGET $FLAGS
cargo build --target=$TARGET $FLAGS
#cargo build --all-features --target=$TARGET $FLAGS
# Don't test
popd
elif [[ "$TARGET" != "" ]]; then
pushd generic-cross
cargo test --no-default-features --target=$TARGET $FLAGS
cargo test --target=$TARGET $FLAGS
#cargo test --all-features --target=$TARGET $FLAGS
popd
else
# Push nothing, target host CPU architecture
cargo test --no-default-features $FLAGS
cargo test $FLAGS
fi
else
# Push nothing, target host CPU architecture
cargo test --no-default-features $FLAGS
cargo test $FLAGS
#cargo test --all-features $FLAGS
fi