# HG changeset patch # User Raphaël Gomès # Date 2020-09-24 14:30:00 # Node ID 952f9d37002c43304196020a75f1b28f37a16877 # Parent 10284ce3d5ed9abe6384c47d238cf2e0b9d11d62 rust-tests: add test to check if `Cargo.lock` is up-to-date An out-of-date `Cargo.lock` is the source of rebase conflicts, prevents a reproductible build, introduces desync between the series that introduces a change in dependencies and the one that eventually commits the `Cargo.lock`, and is just a general annoyance. This commit demonstrates that the test works, the next one fixes the currently out-of-date `Cargo.lock`. Differential Revision: https://phab.mercurial-scm.org/D9079 diff --git a/tests/hghave.py b/tests/hghave.py --- a/tests/hghave.py +++ b/tests/hghave.py @@ -1066,6 +1066,11 @@ def has_rustfmt(): ) +@check("cargo", "cargo tool") +def has_cargo(): + return matchoutput('`rustup which cargo` --version', b'cargo') + + @check("lzma", "python lzma module") def has_lzma(): try: diff --git a/tests/test-check-cargo-lock.t b/tests/test-check-cargo-lock.t new file mode 100644 --- /dev/null +++ b/tests/test-check-cargo-lock.t @@ -0,0 +1,11 @@ +#require cargo test-repo + $ . "$TESTDIR/helpers-testrepo.sh" + $ cd "$TESTDIR"/../rust + +Check if Cargo.lock is up-to-date. Will fail with a 101 error code if not. + + $ cargo check --locked --all --quiet + +However most CIs will run `cargo build` or similar before running the tests, so we need to check if it was modified + + $ testrepohg diff