52 lines
1.3 KiB
Bash
Executable File
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"
|