54 lines
2.2 KiB
Bash
54 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
|
# Unit test for scripts/release-images.sh — pure resolver, no root/Docker.
|
|
set -euo pipefail
|
|
here="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
# shellcheck source=scripts/release-images.sh
|
|
. "$here/scripts/release-images.sh"
|
|
|
|
tmp="$(mktemp -d)"; trap 'rm -rf "$tmp"' EXIT
|
|
pass=0; fail=0
|
|
ok() { if [ "$2" = "$3" ]; then pass=$((pass+1)); else fail=$((fail+1)); printf 'FAIL %s: want=[%s] got=[%s]\n' "$1" "$3" "$2"; fi; }
|
|
|
|
reset_env() { unset CLUSEV_IMAGE CLUSEV_TERMINAL_IMAGE CLUSEV_PULL CLUSEV_RELEASE_MODE; }
|
|
|
|
valid_lock="$tmp/valid.lock"
|
|
printf '{ "version": "v0.11.0", "app": "ghcr.io/o/clusev@sha256:aaa", "terminal": "ghcr.io/o/clusev-terminal@sha256:bbb" }\n' > "$valid_lock"
|
|
corrupt_lock="$tmp/corrupt.lock"
|
|
printf '{ "version": "v0.11.0", "app": "", "terminal": "ghcr.io/o/clusev-terminal@sha256:bbb" }\n' > "$corrupt_lock"
|
|
|
|
# 1) no lock -> build
|
|
reset_env
|
|
clusev_resolve_release_images "$tmp/nope.lock" "$tmp/env1"
|
|
ok "no-lock mode" "${CLUSEV_RELEASE_MODE:-}" "build"
|
|
ok "no-lock pull" "${CLUSEV_PULL:-unset}" "unset"
|
|
|
|
# 2) valid lock -> pull, exports set
|
|
reset_env
|
|
clusev_resolve_release_images "$valid_lock" "$tmp/env2"
|
|
ok "valid mode" "${CLUSEV_RELEASE_MODE:-}" "pull"
|
|
ok "valid image" "${CLUSEV_IMAGE:-}" "ghcr.io/o/clusev@sha256:aaa"
|
|
ok "valid terminal" "${CLUSEV_TERMINAL_IMAGE:-}" "ghcr.io/o/clusev-terminal@sha256:bbb"
|
|
ok "valid pull" "${CLUSEV_PULL:-}" "1"
|
|
|
|
# 3) corrupt lock (empty app) -> build fallback, nothing exported
|
|
reset_env
|
|
clusev_resolve_release_images "$corrupt_lock" "$tmp/env3"
|
|
ok "corrupt mode" "${CLUSEV_RELEASE_MODE:-}" "build"
|
|
ok "corrupt image" "${CLUSEV_IMAGE:-unset}" "unset"
|
|
|
|
# 4) env preset wins over lock
|
|
reset_env
|
|
export CLUSEV_IMAGE="ghcr.io/preset/clusev@sha256:zzz"
|
|
clusev_resolve_release_images "$valid_lock" "$tmp/env4"
|
|
ok "env mode" "${CLUSEV_RELEASE_MODE:-}" "env"
|
|
ok "env image" "${CLUSEV_IMAGE:-}" "ghcr.io/preset/clusev@sha256:zzz"
|
|
ok "env pull" "${CLUSEV_PULL:-}" "1"
|
|
|
|
# 5) json_str: known key + missing key
|
|
reset_env
|
|
ok "json known" "$(clusev_json_str "$valid_lock" app)" "ghcr.io/o/clusev@sha256:aaa"
|
|
ok "json missing" "$(clusev_json_str "$valid_lock" nope)" ""
|
|
|
|
printf '\n%d passed, %d failed\n' "$pass" "$fail"
|
|
[ "$fail" -eq 0 ]
|