scripts/tests/release-resume-test.sh
Rama master · réplica de lectura del repositorio original.
#!/usr/bin/env bash
set -euo pipefail
ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)
source <(awk '/^SUBCOMMAND=/{exit} {print}' "$ROOT/scripts/manage-release.sh")
REPO_ROOT=$ROOT
TMP=$(mktemp -d)
trap 'rm -rf "$TMP"' EXIT
HOME=$TMP/home
PROJECT=start-os
KIND=os
VERSION=1.2.3
TAG=start-os/v1.2.3
OS_PLATFORMS=raspberrypi
mkdir -p "$TMP/published"
printf 'published image\n' > "$TMP/published/image.img"
touch -t 202001010000 "$TMP/published/image.img"
gzip -c "$TMP/published/image.img" > "$TMP/published/image.img.gz"
b3sum() {
if [ "$#" -eq 2 ]; then sha256sum "$2"; else sha256sum; fi | cut -d' ' -f1
}
load_registry_index() { :; }
resolve_os_commit() { :; }
asset_url() {
[ "$2" != img ] || echo "$S3_CDN/v$VERSION/image.img"
}
asset_commitment_b3() { b3sum --no-names "$TMP/published/image.img"; }
start-cli() {
cp "$TMP/published/image.img" "${@: -1}/download.img"
}
published_exists() { [ "${PUBLISHED_GZ:-1}" = 1 ]; }
curl() {
local output="" arg
while [ "$#" -gt 0 ]; do
arg=$1
shift
if [ "$arg" = -o ]; then output=$1; shift; fi
done
cp "$TMP/published/image.img.gz" "$output"
}
cmd_pre_check() {
DONE[push-gz]=1
DONE[tag]=1
DONE[create-gh-release]=1
DONE[index]=1
}
cmd_sign() {
cmp "$TMP/published/image.img.gz" "$(release_dir)/image.img.gz"
}
cmd_release
cmd_pull
ensure_img_gz
cmp "$TMP/published/image.img.gz" "$(release_dir)/image.img.gz"
rm -f "$(release_dir)/image.img.gz"
PUBLISHED_GZ=0
cmd_pull
gzip -dc "$(release_dir)/image.img.gz" | cmp "$TMP/published/image.img" -
PUBLISHED_GZ=1
rm -f "$(release_dir)/image.img.gz"
printf 'wrong image\n' | gzip -c > "$TMP/published/image.img.gz"
if (cmd_pull); then
echo 'Mismatched published gzip was accepted' >&2
exit 1
fi
[ ! -f "$(release_dir)/image.img.gz" ]
printf 'not a gzip\n' > "$TMP/published/image.img.gz"
if (cmd_pull); then
echo 'Corrupt published gzip was accepted' >&2
exit 1
fi
[ ! -f "$(release_dir)/image.img.gz" ]
echo 'Release gzip resume tests passed.'