#!/usr/bin/env bash
set -euo pipefail

SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
readonly SCRIPT_DIR
readonly BUILDER="${SCRIPT_DIR}/build-e2e-snapshot.sh"
workspace="$(mktemp -d "${TMPDIR:-/tmp}/ipz-snapshot-builder-test.XXXXXX")"
trap 'rm -rf -- "${workspace}"' EXIT

if grep -Eq '(^|[[:space:];])podman([[:space:];]|$)' "${BUILDER}"; then
    printf 'Snapshot builder invokes raw podman.\n' >&2
    exit 1
fi

mkdir -p "${workspace}/bin"
cat >"${workspace}/bin/deck-podman" <<'WRAPPER'
#!/usr/bin/env bash
set -euo pipefail
printf '%s\n' "$*" >>"${IPZ_DECK_PODMAN_LOG:?}"
exit 0
WRAPPER
chmod +x "${workspace}/bin/deck-podman"

if PATH="${workspace}/bin:${PATH}" \
    IPZ_DECK_PODMAN_LOG="${workspace}/deck-podman.log" \
    IPZ_E2E_SNAPSHOT_ROOT="${workspace}/snapshots" \
    "${BUILDER}" >"${workspace}/builder.log" 2>&1; then
    printf 'False-success deck-podman build unexpectedly succeeded.\n' >&2
    exit 1
fi

[[ -s "${workspace}/deck-podman.log" ]] || {
    printf 'Snapshot builder did not select deck-podman.\n' >&2
    exit 1
}
FT_FROM_HOOK=1 FT_HINTS=1 ft grep -q '^network create ipz-snapshot-build-.*-network$' "${workspace}/deck-podman.log" || {
    printf 'Snapshot builder did not reach a deck-podman snapshot attempt.\n' >&2
    exit 1
}
FT_FROM_HOOK=1 FT_HINTS=1 ft grep -Fq 'Expected snapshot archive is missing or invalid:' "${workspace}/builder.log" || {
    printf 'False-success snapshot failure was not reported as a missing artifact.\n' >&2
    exit 1
}

printf 'snapshot builder tests: PASS\n'
