mirror of
https://github.com/multica-ai/multica.git
synced 2026-06-17 03:38:32 +02:00
93 lines
1.9 KiB
Bash
93 lines
1.9 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
|
test_brew_failure_falls_back_to_release_binary() {
|
|
local tmp
|
|
tmp="$(mktemp -d)"
|
|
trap 'rm -rf "$tmp"' RETURN
|
|
|
|
local stub_bin="$tmp/stub-bin"
|
|
local install_bin="$tmp/install-bin"
|
|
local payload_dir="$tmp/payload"
|
|
mkdir -p "$stub_bin" "$install_bin" "$payload_dir"
|
|
|
|
cat >"$stub_bin/brew" <<'STUB'
|
|
#!/usr/bin/env bash
|
|
case "${1:-}" in
|
|
tap)
|
|
exit 0
|
|
;;
|
|
install)
|
|
echo "simulated brew install failure" >&2
|
|
exit 42
|
|
;;
|
|
list)
|
|
exit 1
|
|
;;
|
|
*)
|
|
exit 0
|
|
;;
|
|
esac
|
|
STUB
|
|
chmod +x "$stub_bin/brew"
|
|
|
|
cat >"$payload_dir/multica" <<'STUB'
|
|
#!/usr/bin/env bash
|
|
echo "multica v0.3.2 (commit: test)"
|
|
STUB
|
|
chmod +x "$payload_dir/multica"
|
|
tar -czf "$tmp/multica.tar.gz" -C "$payload_dir" multica
|
|
|
|
cat >"$stub_bin/curl" <<'STUB'
|
|
#!/usr/bin/env bash
|
|
if [[ "$*" == *"-sI"* ]]; then
|
|
printf 'HTTP/2 302\r\nlocation: https://github.com/multica-ai/multica/releases/tag/v0.3.2\r\n'
|
|
exit 0
|
|
fi
|
|
|
|
out=""
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
-o)
|
|
out="$2"
|
|
shift 2
|
|
;;
|
|
*)
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ -z "$out" ]]; then
|
|
echo "stub curl expected -o" >&2
|
|
exit 2
|
|
fi
|
|
cp "$MULTICA_TEST_ARCHIVE" "$out"
|
|
STUB
|
|
chmod +x "$stub_bin/curl"
|
|
|
|
local out="$tmp/install.out"
|
|
local err="$tmp/install.err"
|
|
if ! PATH="$stub_bin:$install_bin:/usr/bin:/bin" \
|
|
MULTICA_BIN_DIR="$install_bin" \
|
|
MULTICA_TEST_ARCHIVE="$tmp/multica.tar.gz" \
|
|
bash "$ROOT_DIR/scripts/install.sh" >"$out" 2>"$err"; then
|
|
echo "expected install.sh to fall back after brew install failure" >&2
|
|
cat "$out" >&2 || true
|
|
cat "$err" >&2 || true
|
|
return 1
|
|
fi
|
|
|
|
if [[ ! -x "$install_bin/multica" ]]; then
|
|
echo "expected fallback binary at $install_bin/multica" >&2
|
|
cat "$out" >&2 || true
|
|
cat "$err" >&2 || true
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
test_brew_failure_falls_back_to_release_binary
|
|
echo "install.sh tests passed"
|