* 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
110 lines
3.3 KiB
Bash
Executable File
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"
|