Reconcile Gitea distribution with current alpha behavior and release tooling
Hop-State: A_06FN55REVAR7VQG4BWJBCD8 Hop-Proposal: R_06FN55QTEWKH16NSR59YJYG Hop-Task: T_06FN3MBF98GWD4NA5PA1RWG Hop-Attempt: AT_06FN55BQ80H2S8WHNDD24G0
This commit is contained in:
Executable
+83
@@ -0,0 +1,83 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
||||
cd "$root"
|
||||
tmp_dir=$(mktemp -d 2>/dev/null || mktemp -d -t hop-installer-test)
|
||||
cleanup() {
|
||||
rm -rf "$tmp_dir"
|
||||
}
|
||||
trap cleanup EXIT HUP INT TERM
|
||||
|
||||
case $(uname -s) in
|
||||
Darwin) os=darwin ;;
|
||||
Linux) os=linux ;;
|
||||
*) printf 'installer smoke test does not support %s\n' "$(uname -s)" >&2; exit 1 ;;
|
||||
esac
|
||||
case $(uname -m) in
|
||||
x86_64 | amd64) arch=amd64 ;;
|
||||
arm64 | aarch64) arch=arm64 ;;
|
||||
*) printf 'installer smoke test does not support %s\n' "$(uname -m)" >&2; exit 1 ;;
|
||||
esac
|
||||
|
||||
asset="hop_${os}_${arch}.tar.gz"
|
||||
mkdir -p "$tmp_dir/payload" "$tmp_dir/fixtures" "$tmp_dir/mock-bin" "$tmp_dir/home"
|
||||
go build -trimpath \
|
||||
-ldflags '-X githop.xyz/hop/hop/internal/hop.Version=9.9.9-installer-test' \
|
||||
-o "$tmp_dir/payload/hop" "$root/cmd/hop"
|
||||
tar -czf "$tmp_dir/fixtures/$asset" -C "$tmp_dir/payload" hop
|
||||
if command -v sha256sum >/dev/null 2>&1; then
|
||||
hash=$(sha256sum "$tmp_dir/fixtures/$asset" | awk '{print $1}')
|
||||
else
|
||||
hash=$(shasum -a 256 "$tmp_dir/fixtures/$asset" | awk '{print $1}')
|
||||
fi
|
||||
printf '%s %s\n' "$hash" "$asset" >"$tmp_dir/fixtures/checksums.txt"
|
||||
|
||||
cat >"$tmp_dir/mock-bin/curl" <<'MOCK_CURL'
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
output=
|
||||
url=
|
||||
while [ "$#" -gt 0 ]; do
|
||||
case "$1" in
|
||||
-o) shift; output=$1 ;;
|
||||
http://* | https://*) url=$1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
case "$url" in
|
||||
*/api/v1/repos/*/releases\?draft=false\&page=1\&limit=1)
|
||||
printf '[{"tag_name":"v9.9.9-installer-test","prerelease":true,"draft":false}]'
|
||||
;;
|
||||
*/checksums.txt)
|
||||
cp "$HOP_TEST_FIXTURES/checksums.txt" "$output"
|
||||
;;
|
||||
*/hop_*.tar.gz)
|
||||
cp "$HOP_TEST_FIXTURES/${url##*/}" "$output"
|
||||
;;
|
||||
*)
|
||||
printf 'unexpected installer URL: %s\n' "$url" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
MOCK_CURL
|
||||
chmod 0755 "$tmp_dir/mock-bin/curl"
|
||||
|
||||
HOME="$tmp_dir/home" \
|
||||
PATH="$tmp_dir/mock-bin:$PATH" \
|
||||
HOP_TEST_FIXTURES="$tmp_dir/fixtures" \
|
||||
HOP_GITEA_URL="https://gitea.test" \
|
||||
HOP_REPOSITORY="hop/hop" \
|
||||
HOP_INSTALL_DIR="$tmp_dir/home/bin" \
|
||||
HOP_MODIFY_PATH=0 \
|
||||
sh "$root/scripts/install.sh"
|
||||
|
||||
version=$($tmp_dir/home/bin/hop version)
|
||||
[ "$version" = "hop 9.9.9-installer-test" ] || {
|
||||
printf 'unexpected installed version: %s\n' "$version" >&2
|
||||
exit 1
|
||||
}
|
||||
[ -s "$tmp_dir/home/.codex/skills/hop/SKILL.md" ] || {
|
||||
printf 'installer did not install the embedded Hop skill\n' >&2
|
||||
exit 1
|
||||
}
|
||||
Reference in New Issue
Block a user