mirror of
https://github.com/feigeCode/navop.git
synced 2026-09-22 16:01:30 +00:00
60 lines
1.5 KiB
Bash
Executable File
60 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
TARGET="retry-test-target"
|
|
FAKE_BIN_DIR="$(mktemp -d "${TMPDIR:-/tmp}/onetcli-dmg-test.XXXXXX")"
|
|
TEST_PROJECT_DIR="${FAKE_BIN_DIR}/project"
|
|
APP_DIR="${TEST_PROJECT_DIR}/target/Navop.app"
|
|
DMG_PATH="${TEST_PROJECT_DIR}/navop-${TARGET}.dmg"
|
|
ATTEMPTS_FILE="${FAKE_BIN_DIR}/attempts"
|
|
|
|
cleanup() {
|
|
rm -rf "$FAKE_BIN_DIR"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
mkdir -p "$APP_DIR/Contents/MacOS"
|
|
cat > "${FAKE_BIN_DIR}/hdiutil" <<'HDIUTIL'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
attempts_file="${ONETCLI_TEST_HDIUTIL_ATTEMPTS_FILE:?}"
|
|
attempts=0
|
|
if [ -f "$attempts_file" ]; then
|
|
attempts="$(cat "$attempts_file")"
|
|
fi
|
|
attempts=$((attempts + 1))
|
|
printf '%s' "$attempts" > "$attempts_file"
|
|
|
|
if [ "$attempts" -eq 1 ]; then
|
|
echo "hdiutil: create failed - Resource busy" >&2
|
|
exit 1
|
|
fi
|
|
|
|
output="${@: -1}"
|
|
if [[ "$output" != *.dmg ]]; then
|
|
output="${output}.dmg"
|
|
fi
|
|
printf 'fake dmg' > "$output"
|
|
HDIUTIL
|
|
chmod +x "${FAKE_BIN_DIR}/hdiutil"
|
|
|
|
PATH="${FAKE_BIN_DIR}:$PATH" \
|
|
ONETCLI_PROJECT_DIR="$TEST_PROJECT_DIR" \
|
|
ONETCLI_TEST_HDIUTIL_ATTEMPTS_FILE="$ATTEMPTS_FILE" \
|
|
ONETCLI_DMG_RETRIES=2 \
|
|
ONETCLI_DMG_RETRY_DELAY=0 \
|
|
"$PROJECT_DIR/script/bundle-macos-dmg.sh" "$TARGET"
|
|
|
|
if [ "$(cat "$ATTEMPTS_FILE")" != "2" ]; then
|
|
echo "Expected hdiutil to be retried exactly once"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "$DMG_PATH" ]; then
|
|
echo "Expected DMG at $DMG_PATH"
|
|
exit 1
|
|
fi
|