#!/usr/bin/env sh # No registry/network access: exercise the actual resolver with a fake Docker CLI. set -eu resolver="$(pwd)/scripts/ci/resolve-upgrade-baseline.sh" tmp="$(mktemp -d)" trap 'rm -rf "$tmp"' EXIT HUP INT TERM mkdir "$tmp/bin" cat >"$tmp/bin/docker" <<'DOCKER' #!/usr/bin/env sh set -eu printf '%s\n' "$*" >>"$FAKE_LOG" case "$1" in pull) exit "$FAKE_PULL_EXIT" ;; image) printf '%s\n' "$FAKE_DIGESTS" ;; *) exit 98 ;; esac DOCKER chmod +x "$tmp/bin/docker" export PATH="$tmp/bin:$PATH" FAKE_LOG="$tmp/docker.log" FAKE_PULL_EXIT=0 export IMAGE_REPOSITORY=git.shx.one/team/evofw REQUIRE_UPGRADE=true FIRST_RELEASE=false digest="sha256:$(printf '%064d' 0)" export FAKE_DIGESTS="$IMAGE_REPOSITORY@$digest" PREVIOUS_IMAGE="another.registry/deployed/app@$digest" sh "$resolver" >"$tmp/result" [ "$(cat "$tmp/result")" = "$PREVIOUS_IMAGE" ] [ ! -s "$FAKE_LOG" ] || { echo 'Explicit pinned override must not resolve latest' >&2; exit 1; } export PREVIOUS_IMAGE='' sh "$resolver" >"$tmp/result" [ "$(cat "$tmp/result")" = "$IMAGE_REPOSITORY@$digest" ] grep -F "pull $IMAGE_REPOSITORY:latest" "$FAKE_LOG" >/dev/null grep -F " $IMAGE_REPOSITORY:latest" "$FAKE_LOG" >/dev/null export FAKE_PULL_EXIT=27 if sh "$resolver" >"$tmp/result" 2>/dev/null; then echo 'Missing published image must fail' >&2; exit 1; fi [ ! -s "$tmp/result" ] export FAKE_PULL_EXIT=0 FAKE_DIGESTS="wrong.registry/team/evofw@$digest" if sh "$resolver" >"$tmp/result" 2>/dev/null; then echo 'Unrelated RepoDigest must fail' >&2; exit 1; fi export FAKE_DIGESTS="$IMAGE_REPOSITORY@$digest $IMAGE_REPOSITORY@sha256:$(printf '%064d' 1)" if sh "$resolver" >"$tmp/result" 2>/dev/null; then echo 'Ambiguous RepoDigests must fail' >&2; exit 1; fi export PREVIOUS_IMAGE="$IMAGE_REPOSITORY:latest" if sh "$resolver" >"$tmp/result" 2>/dev/null; then echo 'Mutable override must fail rather than fall back' >&2; exit 1; fi export PREVIOUS_IMAGE='' REQUIRE_UPGRADE=false : >"$FAKE_LOG" sh "$resolver" >"$tmp/result" [ ! -s "$tmp/result" ] && [ ! -s "$FAKE_LOG" ] export REQUIRE_UPGRADE=true FIRST_RELEASE=true sh "$resolver" >"$tmp/result" [ ! -s "$tmp/result" ] && [ ! -s "$FAKE_LOG" ] echo 'Upgrade baseline resolver passed (override, latest digest, failure, wrong/ambiguous repo, PR and explicit first release)'