Update check_tree to better detect errors in cargo-tree.

This commit is contained in:
Nick Mathewson 2022-06-16 16:13:11 -04:00
parent 349f9d5000
commit 677f1b8af0
1 changed files with 26 additions and 6 deletions

View File

@ -3,17 +3,37 @@
# Use cargo-tree to check our dependencies for crates which we must
# not depend on unconditionally.
set -eu
forbid () {
local our_crate="$1"
local feature="$2"
local forbidden="$3"
if cargo tree -i "$forbidden" -p "$our_crate" --features "$feature" 2>/dev/null ; then
echo "Uh-oh: $forbidden has shown up in $our_crate/$feature."
exit 1
else
echo "Didn't find $forbidden in $our_crate/$feature. Good."
fi
set +e
cargo tree --prefix=none -p "$our_crate" --features "$feature" \
--format=" {p}" | grep "^ $forbidden"
local result="${PIPESTATUS[*]}"
set -e
case "$result" in
"0 0")
# cargo-tree succeeded, and so did grep: we found the
# forbidden package.
echo "Uh-oh: $forbidden has shown up in $our_crate/$feature."
exit 1
;;
"0 1")
# cargo-tree succeeded, and grep failed: we didn't find the
# forbidden package.
echo "Didn't find $forbidden in $our_crate/$feature. Good."
;;
*)
# cargo-tree failed (or maybe grep is gruesomely nonstandard)
echo "cargo tree failed unexpectedly when checking for $forbidden in $our_crate/$feature" >&2
exit 1
;;
esac
}
# We can't use these crates in arti/full, since they expose us to the old