From 61e2f697d04ea43d201759580fcc5e2698eb67e9 Mon Sep 17 00:00:00 2001 From: "Tobin C. Harding" Date: Thu, 20 Jul 2023 11:00:34 +1000 Subject: [PATCH] CI: Run test with recent/minimal lock files A while back we added two lock files, one for testing with recent dependency versions and one for testing with minimal dependency versions but at the time we never used them in CI. Update the CI scripts to use the two lockfiles, requires using `--lock` for various `cargo` incantations. While we are at it move the lock files to the crate root to be uniform with `rust-bitcoin` and make them more obvious. --- .../Cargo.minimal.lock => Cargo-minimal.lock | 0 .../Cargo.latest.lock => Cargo-recent.lock | 0 contrib/_test.sh | 46 +++++++++---------- contrib/test.sh | 22 ++++++++- 4 files changed, 44 insertions(+), 24 deletions(-) rename contrib/Cargo.minimal.lock => Cargo-minimal.lock (100%) rename contrib/Cargo.latest.lock => Cargo-recent.lock (100%) diff --git a/contrib/Cargo.minimal.lock b/Cargo-minimal.lock similarity index 100% rename from contrib/Cargo.minimal.lock rename to Cargo-minimal.lock diff --git a/contrib/Cargo.latest.lock b/Cargo-recent.lock similarity index 100% rename from contrib/Cargo.latest.lock rename to Cargo-recent.lock diff --git a/contrib/_test.sh b/contrib/_test.sh index f2290674f..080e651f5 100755 --- a/contrib/_test.sh +++ b/contrib/_test.sh @@ -20,56 +20,56 @@ if cargo --version | grep "1\.48"; then fi # Test if panic in C code aborts the process (either with a real panic or with SIGILL) -cargo test -- --ignored --exact 'tests::test_panic_raw_ctx_should_terminate_abnormally' 2>&1 | tee /dev/stderr | grep "SIGILL\\|panicked at '\[libsecp256k1\]" +cargo test --locked -- --ignored --exact 'tests::test_panic_raw_ctx_should_terminate_abnormally' 2>&1 | tee /dev/stderr | grep "SIGILL\\|panicked at '\[libsecp256k1\]" # Make all cargo invocations verbose export CARGO_TERM_VERBOSE=true # Defaults / sanity checks -cargo build --all -cargo test --all +cargo build --locked --all +cargo test --locked --all if [ "$DO_FEATURE_MATRIX" = true ]; then - cargo build --all --no-default-features - cargo test --all --no-default-features + cargo build --locked --all --no-default-features + cargo test --locked --all --no-default-features # All features - cargo build --all --no-default-features --features="$FEATURES" - cargo test --all --no-default-features --features="$FEATURES" + cargo build --locked --all --no-default-features --features="$FEATURES" + cargo test --locked --all --no-default-features --features="$FEATURES" # Single features for feature in ${FEATURES} do - cargo build --all --no-default-features --features="$feature" - cargo test --all --no-default-features --features="$feature" + cargo build --locked --all --no-default-features --features="$feature" + cargo test --locked --all --no-default-features --features="$feature" done # Features tested with 'std' feature enabled. for feature in ${FEATURES} do - cargo build --all --no-default-features --features="std,$feature" - cargo test --all --no-default-features --features="std,$feature" + cargo build --locked --all --no-default-features --features="std,$feature" + cargo test --locked --all --no-default-features --features="std,$feature" done # Other combos - RUSTFLAGS='--cfg=secp256k1_fuzz' RUSTDOCFLAGS='--cfg=secp256k1_fuzz' cargo test --all - RUSTFLAGS='--cfg=secp256k1_fuzz' RUSTDOCFLAGS='--cfg=secp256k1_fuzz' cargo test --all --features="$FEATURES" - cargo test --all --features="rand serde" + RUSTFLAGS='--cfg=secp256k1_fuzz' RUSTDOCFLAGS='--cfg=secp256k1_fuzz' cargo test --locked --all + RUSTFLAGS='--cfg=secp256k1_fuzz' RUSTDOCFLAGS='--cfg=secp256k1_fuzz' cargo test --locked --all --features="$FEATURES" + cargo test --locked --all --features="rand serde" if [ "$NIGHTLY" = true ]; then - cargo test --all --all-features - RUSTFLAGS='--cfg=secp256k1_fuzz' RUSTDOCFLAGS='--cfg=secp256k1_fuzz' cargo test --all --all-features + cargo test --locked --all --all-features + RUSTFLAGS='--cfg=secp256k1_fuzz' RUSTDOCFLAGS='--cfg=secp256k1_fuzz' cargo test --locked --all --all-features fi # Examples - cargo run --example sign_verify --features=bitcoin-hashes-std - cargo run --example sign_verify_recovery --features=recovery,bitcoin-hashes-std - cargo run --example generate_keys --features=rand-std + cargo run --locked --example sign_verify --features=bitcoin-hashes-std + cargo run --locked --example sign_verify_recovery --features=recovery,bitcoin-hashes-std + cargo run --locked --example generate_keys --features=rand-std fi if [ "$DO_LINT" = true ] then - cargo clippy --all-features --all-targets -- -D warnings - cargo clippy --example sign_verify --features=bitcoin-hashes-std -- -D warnings - cargo clippy --example sign_verify_recovery --features=recovery,bitcoin-hashes-std -- -D warnings - cargo clippy --example generate_keys --features=rand-std -- -D warnings + cargo clippy --locked --all-features --all-targets -- -D warnings + cargo clippy --locked --example sign_verify --features=bitcoin-hashes-std -- -D warnings + cargo clippy --locked --example sign_verify_recovery --features=recovery,bitcoin-hashes-std -- -D warnings + cargo clippy --locked --example generate_keys --features=rand-std -- -D warnings fi # Build the docs if told to (this only works with the nightly toolchain) diff --git a/contrib/test.sh b/contrib/test.sh index 05b680c3c..324feae77 100755 --- a/contrib/test.sh +++ b/contrib/test.sh @@ -4,4 +4,24 @@ set -ex REPO_DIR=$(git rev-parse --show-toplevel) -$REPO_DIR/contrib/_test.sh +DEPS="recent minimal" + +for dep in $DEPS +do + cp "Cargo-$dep.lock" Cargo.lock + $REPO_DIR/contrib/_test.sh + + if [ "$dep" = recent ]; + then + # We always test committed dependencies but we want to warn if they could've been updated + cargo update + if diff Cargo-recent.lock Cargo.lock; + then + echo Dependencies are up to date + else + echo "::warning file=Cargo-recent.lock::Dependencies could be updated" + fi + fi +done + +exit 0