Dan Gohman
6 years ago
8 changed files with 139 additions and 20 deletions
@ -0,0 +1,10 @@ |
|||
#!/bin/bash |
|||
set -euo pipefail |
|||
|
|||
# Usage: check-clippy.sh |
|||
|
|||
if cargo install --list | tee /dev/null | grep -q "^clippy v0"; then |
|||
exit 0 |
|||
else |
|||
exit 1 |
|||
fi |
@ -0,0 +1,7 @@ |
|||
#!/bin/bash |
|||
set -euo pipefail |
|||
|
|||
# Check all sources with clippy. |
|||
# In the clif-util crate (root dir) clippy will only work with nightly cargo - |
|||
# there is a bug where it will reject the commands passed to it by cargo 0.25.0 |
|||
exec cargo +nightly clippy --all |
@ -0,0 +1 @@ |
|||
doc-valid-idents = [ "WebAssembly", "NaN" ] |
@ -1,17 +1,12 @@ |
|||
#!/bin/bash |
|||
set -euo pipefail |
|||
|
|||
# Format all sources using rustfmt. |
|||
|
|||
# Exit immediately on errors. |
|||
set -e |
|||
|
|||
cd $(dirname "$0") |
|||
src=$(pwd) |
|||
topdir=$(dirname "$0") |
|||
cd "$topdir" |
|||
|
|||
# Make sure we can find rustfmt. |
|||
export PATH="$PATH:$HOME/.cargo/bin" |
|||
|
|||
for crate in $(find "$src" -name Cargo.toml); do |
|||
cd $(dirname "$crate") |
|||
cargo fmt -- "$@" |
|||
done |
|||
exec cargo +stable fmt --all -- "$@" |
|||
|
@ -0,0 +1,86 @@ |
|||
#!/bin/bash |
|||
set -euo pipefail |
|||
|
|||
# This is the top-level test script: |
|||
# |
|||
# - Check code formatting. |
|||
# - Make a debug build. |
|||
# - Make a release build. |
|||
# - Run unit tests for all Rust crates (including the filetests) |
|||
# - Build API documentation. |
|||
# - Optionally, run clippy and fuzzing. |
|||
# |
|||
# All tests run by this script should be passing at all times. |
|||
|
|||
# Disable generation of .pyc files because they cause trouble for vendoring |
|||
# scripts, and this is a build step that isn't run very often anyway. |
|||
export PYTHONDONTWRITEBYTECODE=1 |
|||
|
|||
# Repository top-level directory. |
|||
topdir=$(dirname "$0") |
|||
cd "$topdir" |
|||
|
|||
function banner { |
|||
echo "====== $* ======" |
|||
} |
|||
|
|||
# Run rustfmt if we have it. |
|||
banner "Rust formatting" |
|||
if type rustfmt > /dev/null; then |
|||
# In newer versions of rustfmt, replace --write-mode=diff with --check. |
|||
if ! "$topdir/format-all.sh" --write-mode=diff ; then |
|||
echo "Formatting diffs detected! Run \"cargo fmt --all\" to correct." |
|||
exit 1 |
|||
fi |
|||
else |
|||
echo "rustfmt not available; formatting not checked!" |
|||
echo |
|||
echo "If you are using rustup, rustfmt can be installed via" |
|||
echo "\"rustup component add --toolchain=stable rustfmt-preview\", or see" |
|||
echo "https://github.com/rust-lang-nursery/rustfmt for more information." |
|||
fi |
|||
|
|||
# Make sure the code builds in release mode. |
|||
banner "Rust release build" |
|||
cargo build --release |
|||
|
|||
# Make sure the code builds in debug mode. |
|||
banner "Rust debug build" |
|||
cargo build |
|||
|
|||
# Run the tests. We run these in debug mode so that assertions are enabled. |
|||
banner "Rust unit tests" |
|||
cargo test --all |
|||
|
|||
# Make sure the documentation builds. |
|||
banner "Rust documentation: $topdir/target/doc/wasmtime/index.html" |
|||
cargo doc |
|||
|
|||
# Run clippy if we have it. |
|||
banner "Rust linter" |
|||
if "$topdir/check-clippy.sh"; then |
|||
"$topdir/clippy-all.sh" --write-mode=diff |
|||
else |
|||
echo "\`cargo +nightly install clippy\` for optional rust linting" |
|||
fi |
|||
|
|||
# Ensure fuzzer works by running it with a single input |
|||
# Note LSAN is disabled due to https://github.com/google/sanitizers/issues/764 |
|||
banner "cargo fuzz check" |
|||
if rustup toolchain list | grep -q nightly; then |
|||
if cargo install --list | grep -q cargo-fuzz; then |
|||
echo "cargo-fuzz found" |
|||
else |
|||
echo "installing cargo-fuzz" |
|||
cargo +nightly install cargo-fuzz |
|||
fi |
|||
|
|||
fuzz_module="ffaefab69523eb11935a9b420d58826c8ea65c4c" |
|||
ASAN_OPTIONS=detect_leaks=0 \ |
|||
cargo +nightly fuzz run fuzz_translate_module \ |
|||
"$topdir/fuzz/corpus/fuzz_translate_module/$fuzz_module" |
|||
else |
|||
echo "nightly toolchain not found, skipping fuzz target integration test" |
|||
fi |
|||
|
|||
banner "OK" |
Loading…
Reference in new issue