rust-bitcoin-unsafe-fast/contrib/test-miri.sh

28 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euox pipefail
cd "$(dirname "$0")/.."
. contrib/test_vars.sh
target_features="$(rustc --print target-features | awk '{ if ($1 == "") { exit 0 } if (NR != 1 && $1 != "crt-static" && $1 != "soft-float") { if (NR == 2) { printf "+%s", $1 } else { printf ",+%s", $1 } } }')"
for crate in $CRATES;
do
# The secp256k1 crate cannot be miri-checked because of FFI, so we have to exclude it
if cargo tree --manifest-path "$crate/Cargo.toml" | grep -q secp256k1;
then
echo "$crate depends on secp256k1, skipping..." >&2
continue
fi
# Running miri is expensive and not needed for crates that don't contain unsafe
if RUSTFLAGS="-C target-feature=$target_features -F unsafe-code" cargo check -q --all-features --target x86_64-unknown-linux-gnu 2>/dev/null;
then
echo "No unsafe code in $crate, skipping..." >&2
continue
fi
RUSTFLAGS="-C target-feature=$target_features" RUSTDOCFLAGS="-C target-feature=$target_features" MIRIFLAGS=-Zmiri-backtrace=full cargo miri test --manifest-path "$crate/Cargo.toml" --all-features --target x86_64-unknown-linux-gnu
done