| #!/usr/bin/env bash |
| |
| set -xeu |
| cd "$(dirname "$0")/.." |
| |
| # Note that `$BINDGEN_PROFILE` is never in quotes so that it expands to nothing |
| # (not even an empty string argument) when the variable is empty. This is |
| # necessary so we don't pass an unexpected flag to cargo. |
| |
| export RUST_BACKTRACE=1 |
| |
| NO_DEFAULT_FEATURES="" |
| if [ ! -z $BINDGEN_NO_DEFAULT_FEATURES ]; then |
| NO_DEFAULT_FEATURES=--no-default-features |
| fi |
| |
| case "$BINDGEN_JOB" in |
| "test") |
| # Need rustfmt to compare the test expectations. |
| TOOLCHAIN="nightly-$(curl https://rust-lang.github.io/rustup-components-history/$(rustup target list --installed | tail -1)/rustfmt)" |
| rustup update "$TOOLCHAIN" |
| rustup component add rustfmt --toolchain "$TOOLCHAIN" |
| RUSTFMT="$(rustup which --toolchain "$TOOLCHAIN" rustfmt)" |
| export RUSTFMT |
| cargo test "$BINDGEN_PROFILE" $NO_DEFAULT_FEATURES --features "$BINDGEN_FEATURES" |
| ./ci/assert-no-diff.sh |
| ;; |
| |
| "msrv") |
| # Test that the bindgen library can be built with the minimum supported Rust version |
| # This test should not use Cargo.lock as it's ignored for library builds |
| rm Cargo.lock |
| # The MSRV below is also documented in README.md, please keep in sync |
| rustup install 1.40.0 |
| cargo +1.40.0 build --lib $NO_DEFAULT_FEATURES --features "$BINDGEN_FEATURES" |
| ;; |
| |
| "integration") |
| cd ./bindgen-integration |
| cargo test "$BINDGEN_PROFILE" $NO_DEFAULT_FEATURES --features "$BINDGEN_FEATURES" |
| ;; |
| |
| "expectations") |
| cd ./tests/expectations |
| cargo test "$BINDGEN_PROFILE" |
| ;; |
| |
| "misc") |
| ./ci/assert-docs.sh |
| ./ci/assert-warnings.sh |
| ./ci/test-book.sh |
| ./ci/no-includes.sh |
| ./ci/assert-rustfmt.sh |
| ;; |
| |
| "quickchecking") |
| cd ./tests/quickchecking |
| # TODO: Actually run quickchecks once `bindgen` is reliable enough. |
| cargo test |
| ;; |
| |
| *) |
| echo "Error! Unknown \$BINDGEN_JOB: '$BINDGEN_JOB'" |
| exit 1 |
| esac |