Files
2026-06-25 20:08:23 +08:00

52 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
TMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/open-shorebird-sha256.XXXXXX")"
trap 'rm -rf "$TMP_DIR"' EXIT
PYTHON_BIN=python3
if ! command -v "$PYTHON_BIN" >/dev/null 2>&1; then
PYTHON_BIN=python
fi
ARTIFACT="$TMP_DIR/artifact.txt"
SIDECAR="$TMP_DIR/artifact.txt.sha256"
CUSTOM_SIDECAR="$TMP_DIR/custom.sha256"
printf 'open-shorebird\n' > "$ARTIFACT"
"$ROOT/scripts/write_sha256.sh" "$ARTIFACT"
EXPECTED_HASH="$("$PYTHON_BIN" - "$ARTIFACT" <<'PY'
import hashlib
import pathlib
import sys
print(hashlib.sha256(pathlib.Path(sys.argv[1]).read_bytes()).hexdigest())
PY
)"
EXPECTED_LINE="$EXPECTED_HASH artifact.txt"
ACTUAL_LINE="$(cat "$SIDECAR")"
if [[ "$ACTUAL_LINE" != "$EXPECTED_LINE" ]]; then
echo "unexpected sha256 sidecar: $ACTUAL_LINE" >&2
echo "expected: $EXPECTED_LINE" >&2
exit 70
fi
"$ROOT/scripts/write_sha256.sh" "$ARTIFACT" "$CUSTOM_SIDECAR"
CUSTOM_LINE="$(cat "$CUSTOM_SIDECAR")"
if [[ "$CUSTOM_LINE" != "$EXPECTED_LINE" ]]; then
echo "unexpected custom sha256 sidecar: $CUSTOM_LINE" >&2
echo "expected: $EXPECTED_LINE" >&2
exit 70
fi
if "$ROOT/scripts/write_sha256.sh" "$TMP_DIR/missing.txt" >/dev/null 2>&1; then
echo "write_sha256.sh unexpectedly succeeded for a missing artifact" >&2
exit 70
fi
echo "write_sha256.sh smoke test passed"