Files
buzz/scripts/test-release-ref-contract.sh
T

60 lines
1.5 KiB
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
set -euo pipefail
repo_root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
verify="${repo_root}/scripts/verify-release-ref.sh"
tmp=$(mktemp -d)
trap 'rm -rf "$tmp"' EXIT
git -C "$tmp" init -q
git -C "$tmp" config user.name test
git -C "$tmp" config user.email test@example.com
echo first >"$tmp/file"
git -C "$tmp" add file
git -C "$tmp" commit -qm first
git -C "$tmp" tag v1.2.3
(
cd "$tmp"
GITHUB_REF=refs/tags/v1.2.3 "$verify" v 1.2.3
)
if (
cd "$tmp"
GITHUB_REF=refs/heads/main "$verify" v 1.2.3
); then
echo "branch-backed desktop release was accepted" >&2
exit 1
fi
echo second >>"$tmp/file"
git -C "$tmp" commit -qam second
if (
cd "$tmp"
GITHUB_REF=refs/tags/v1.2.3 "$verify" v 1.2.3
); then
echo "release accepted HEAD after the tag commit" >&2
exit 1
fi
git -C "$tmp" tag relay-v2.0.0
(
cd "$tmp"
GITHUB_REF=refs/tags/relay-v2.0.0 "$verify" relay-v 2.0.0
)
if grep -q 'inputs\.ref' \
"$repo_root/.github/workflows/release.yml" \
"$repo_root/.github/workflows/docker.yml"; then
echo "publisher workflow still accepts a caller-selected source ref" >&2
exit 1
fi
grep -q 'verify-release-ref\.sh' "$repo_root/.github/workflows/release.yml"
grep -q 'verify-release-ref\.sh' "$repo_root/.github/workflows/docker.yml"
grep -q 'test-release-ref-contract\.sh' "$repo_root/.github/workflows/ci.yml"
grep -Fq -- "--ref \"\$TAG\"" \
"$repo_root/.github/workflows/auto-tag-on-release-pr-merge.yml"
echo "release ref contract passed"