solana/ci/test-checks.sh

87 lines
2.5 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
set -e
cd "$(dirname "$0")/.."
2018-12-18 14:25:10 -08:00
source ci/_
source ci/rust-version.sh stable
2019-06-20 07:43:31 -07:00
source ci/rust-version.sh nightly
eval "$(ci/channel-info.sh)"
cargo="$(readlink -f "./cargo")"
2018-12-18 14:25:10 -08:00
scripts/increment-cargo-version.sh check
# Disallow uncommitted Cargo.lock changes
(
2021-07-16 14:03:57 -07:00
_ scripts/cargo-for-all-lock-files.sh tree >/dev/null
set +e
if ! _ git diff --exit-code; then
cat <<EOF 1>&2
Error: Uncommitted Cargo.lock changes.
Run './scripts/cargo-for-all-lock-files.sh tree' and commit the result.
EOF
exit 1
fi
)
echo --- build environment
(
set -x
rustup run "$rust_stable" rustc --version --verbose
rustup run "$rust_nightly" rustc --version --verbose
"$cargo" stable --version --verbose
"$cargo" nightly --version --verbose
"$cargo" stable clippy --version --verbose
"$cargo" nightly clippy --version --verbose
2021-07-09 03:49:07 -07:00
# audit is done only with "$cargo stable"
"$cargo" stable audit --version
2021-07-09 03:49:07 -07:00
grcov --version
)
export RUST_BACKTRACE=1
export RUSTFLAGS="-D warnings -A incomplete_features"
# Only force up-to-date lock files on edge
if [[ $CI_BASE_BRANCH = "$EDGE_CHANNEL" ]]; then
# Exclude --benches as it's not available in rust stable yet
if _ scripts/cargo-for-all-lock-files.sh stable check --locked --tests --bins --examples; then
true
else
check_status=$?
echo "$0: Some Cargo.lock might be outdated; sync them (or just be a compilation error?)" >&2
echo "$0: protip: $ ./scripts/cargo-for-all-lock-files.sh [--ignore-exit-code] ... \\" >&2
echo "$0: [tree (for outdated Cargo.lock sync)|check (for compilation error)|update -p foo --precise x.y.z (for your Cargo.toml update)] ..." >&2
exit "$check_status"
fi
2020-10-11 10:25:42 -07:00
2022-03-11 12:07:06 -08:00
# Ensure nightly and --benches
_ scripts/cargo-for-all-lock-files.sh nightly check --locked --all-targets
else
echo "Note: cargo-for-all-lock-files.sh skipped because $CI_BASE_BRANCH != $EDGE_CHANNEL"
fi
2022-03-11 12:07:06 -08:00
_ ci/order-crates-for-publishing.py
2022-10-19 14:22:57 -07:00
nightly_clippy_allows=()
# -Z... is needed because of clippy bug: https://github.com/rust-lang/rust-clippy/issues/4612
# run nightly clippy for `sdk/` as there's a moderate amount of nightly-only code there
2022-06-21 13:26:51 -07:00
_ scripts/cargo-for-all-lock-files.sh -- nightly clippy -Zunstable-options --all-targets -- \
--deny=warnings \
--deny=clippy::integer_arithmetic \
"${nightly_clippy_allows[@]}"
2022-06-23 22:03:24 -07:00
_ scripts/cargo-for-all-lock-files.sh -- nightly sort --workspace --check
2022-03-11 12:07:06 -08:00
_ scripts/cargo-for-all-lock-files.sh -- nightly fmt --all -- --check
2021-02-28 11:54:04 -08:00
2022-03-11 12:07:06 -08:00
_ ci/do-audit.sh
2019-07-28 22:19:03 -07:00
echo --- ok