rust-tests: add test to check if `Cargo.lock` is up-to-date
authorRaphaël Gomès <rgomes@octobus.net>
Thu, 24 Sep 2020 16:30:00 +0200
changeset 45553 952f9d37002c
parent 45552 10284ce3d5ed
child 45554 abad925af2ef
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
tests/hghave.py
tests/test-check-cargo-lock.t
--- a/tests/hghave.py	Tue Sep 01 18:08:24 2020 +0530
+++ b/tests/hghave.py	Thu Sep 24 16:30:00 2020 +0200
@@ -1066,6 +1066,11 @@
     )
 
 
+@check("cargo", "cargo tool")
+def has_cargo():
+    return matchoutput('`rustup which cargo` --version', b'cargo')
+
+
 @check("lzma", "python lzma module")
 def has_lzma():
     try:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-check-cargo-lock.t	Thu Sep 24 16:30:00 2020 +0200
@@ -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