Files
wasmtime/scripts/test-all.sh
Alex Crichton 34f768ddd5 Temporarily remove support for interface types (#1292)
* Temporarily remove support for interface types

This commit temporarily removes support for interface types from the
`wasmtime` CLI and removes the `wasmtime-interface-types` crate. An
error is now printed for any input wasm modules that have wasm interface
types sections to indicate that support has been removed and references
to two issues are printed as well:

* #677 - tracking work for re-adding interface types support
* #1271 - rationale for removal and links to other discussions

Closes #1271

* Update the python extension
2020-03-12 15:05:39 -05:00

110 lines
3.3 KiB
Bash
Executable File

#!/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
# - Build API documentation.
# - Optionally, run fuzzing.
#
# All tests run by this script should be passing at all times.
# Repository top-level directory.
topdir=$(dirname "$0")/..
cd "$topdir"
function banner {
echo "====== $* ======"
}
# Run rustfmt if we have it.
banner "Rust formatting"
if cargo +stable fmt -- --version > /dev/null ; then
if ! "$topdir/scripts/format-all.sh" --check ; then
echo "Formatting diffs detected! Run \"cargo fmt --all\" to correct."
exit 1
fi
else
echo "cargo-fmt 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"
# TODO: lightbeam currently requires rust nightly, so don't try to run the
# tests here. Name all the other packages, rather than using --all. We'll
# run the lightbeam tests below if nightly is available.
#RUST_BACKTRACE=1 cargo test --all
RUST_BACKTRACE=1 cargo test \
--package wasmtime-cli \
--package wasmtime \
--package wasmtime-wasi \
--package wasmtime-wast \
--package wasmtime-debug \
--package wasmtime-environ \
--package wasmtime-runtime \
--package wasmtime-jit \
--package wasmtime-obj \
--package wiggle \
--package wiggle-generate \
--package wiggle-runtime \
--package wiggle-test \
--package wasi-common \
# Test wasmtime-wasi-c, which doesn't support Windows.
if [ "${OS:-Not}" != "Windows_NT" ]; then
RUST_BACKTRACE=1 cargo test \
--package wasmtime-wasi-c
fi
# Make sure the documentation builds.
banner "Rust documentation: $topdir/target/doc/wasmtime/index.html"
cargo doc
# 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
# Temporarily disable fuzz tests until https://github.com/bytecodealliance/cranelift/issues/1216 is resolved
#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="1340712d77d3db3c79b4b0c1494df18615485480"
#ASAN_OPTIONS=detect_leaks=0 \
#cargo +nightly fuzz run compile \
# "$topdir/fuzz/corpus/compile/$fuzz_module"
# Nightly is available, so also run lightbeam's tests, which we
# skipped earlier.
cargo +nightly test --features lightbeam --package lightbeam
cargo +nightly test --features lightbeam
# Also run wasmtime-py and wasmtime-rust's tests.
RUST_BACKTRACE=1 cargo +nightly test \
--package wasmtime-py \
--package wasmtime-rust
else
echo "nightly toolchain not found, skipping fuzz target integration test"
fi
banner "OK"