cargo-binstall/e2e-tests/continue-on-failure.sh
Jiahao XU c08b8d232a
feat: Impl new option --continue-on-failure (#1559)
* feat: Impl new option `--continue-on-failure`

Resolve #1548

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>

* Add new e2e-tests continue-on-failure

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>

* Rm dup line ion `e2e-tests/live.sh`

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>

* Fix shellcheck

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>

* Fix `BinstallError::crate_errors` if `errors.len()` is 1

In that case, it should return `Some(Self::CrateContext(_))` instead of
`Some(Self::Errors(_))`

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>

* Add more tests to `e2e-tests/continue-on-failure.sh`

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>

* Propagate crate errors on `confirm()` err

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>

* Test having two errors in `e2e-tests/continue-on-failure.sh`

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>

---------

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
2024-01-08 12:09:45 +00:00

58 lines
1.3 KiB
Bash
Executable file

#!/bin/bash
set -euxo pipefail
unset CARGO_INSTALL_ROOT
CARGO_HOME=$(mktemp -d 2>/dev/null || mktemp -d -t 'cargo-home')
export CARGO_HOME
othertmpdir=$(mktemp -d 2>/dev/null || mktemp -d -t 'cargo-test')
export PATH="$CARGO_HOME/bin:$othertmpdir/bin:$PATH"
mkdir -p "$othertmpdir/bin"
# Copy it to bin to test use of env var `CARGO`
cp "./$1" "$othertmpdir/bin/"
## Test --continue-on-failure
set +e
cargo binstall --no-confirm --continue-on-failure cargo-watch@8.4.0 non-existent-clippy
exit_code="$?"
set -e
if [ "$exit_code" != 76 ]; then
echo "Expected exit code 76, but actual exit code $exit_code"
exit 1
fi
cargo_watch_version="$(cargo watch -V)"
echo "$cargo_watch_version"
[ "$cargo_watch_version" = "cargo-watch 8.4.0" ]
## Test that it is no-op when only one crate is passed
set +e
cargo binstall --no-confirm --continue-on-failure non-existent-clippy
exit_code="$?"
set -e
if [ "$exit_code" != 76 ]; then
echo "Expected exit code 76, but actual exit code $exit_code"
exit 1
fi
# Test if both crates are invalid
set +e
cargo binstall --no-confirm --continue-on-failure non-existent-clippy non-existent-clippy2
exit_code="$?"
set -e
if [ "$exit_code" != 76 ]; then
echo "Expected exit code 76, but actual exit code $exit_code"
exit 1
fi