#!/bin/bash set -euo pipefail SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) REPO_ROOT=$(cd "${SCRIPT_DIR}/.." && pwd) # shellcheck source=/dev/null source "${REPO_ROOT}/docker-runner/common/upgrade.sh" assert_eq() { local expected=$1 local actual=$2 local message=$3 if [ "${expected}" != "${actual}" ]; then echo "FAIL: ${message}" >&2 echo " expected: ${expected}" >&2 echo " actual: ${actual}" >&2 exit 1 fi } test_extract_versions_from_listing() { local html html=$(cat <<'EOF' 0.6.1 0.5.0 0.4.1 EOF ) local actual actual=$(extract_versions_from_listing <<<"${html}") assert_eq $'0.6.1\n0.5.0\n0.4.1' "${actual}" \ "extract_versions_from_listing should return every version in listing order" } test_pick_latest_version() { local actual actual=$(pick_latest_version <<'EOF' 0.5.0 0.6.1 0.4.9 EOF ) assert_eq "0.6.1" "${actual}" \ "pick_latest_version should return the highest semantic version" } test_extract_version_number_accepts_v_prefix() { local actual actual=$(extract_version_number <<'EOF' act_runner version v0.6.1 EOF ) assert_eq "0.6.1" "${actual}" \ "extract_version_number should accept version output with a leading v" } fake_latest_version() { echo "0.6.2" } fake_invalid_version() { echo "latest" } test_resolve_latest_version_or_fallback_prefers_latest() { local actual actual=$(resolve_latest_version_or_fallback "0.2.13" fake_latest_version) assert_eq "0.6.2" "${actual}" \ "resolve_latest_version_or_fallback should prefer the detected latest version" } test_resolve_latest_version_or_fallback_uses_fallback() { local actual actual=$(resolve_latest_version_or_fallback "0.2.13" fake_invalid_version) assert_eq "0.2.13" "${actual}" \ "resolve_latest_version_or_fallback should fall back when detected version is invalid" } test_extract_versions_from_listing test_pick_latest_version test_extract_version_number_accepts_v_prefix test_resolve_latest_version_or_fallback_prefers_latest test_resolve_latest_version_or_fallback_uses_fallback echo "upgrade_test.sh: PASS"