tests/is-latest-tag_test.sh
Rama master · réplica de lectura del repositorio original.
#!/usr/bin/env bash
set -euo pipefail
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
SCRIPT="$REPO_ROOT/.github/scripts/is-latest-tag.sh"
PASS=0
FAIL=0
run_test() {
local name="$1"
local tag="$2"
local expected_exit="$3"
shift 3
local tags=("$@")
local tmpdir
tmpdir="$(mktemp -d)"
trap "rm -rf '$tmpdir'" RETURN
git -C "$tmpdir" init -q
git -C "$tmpdir" -c user.name=test -c user.email=test@example.com commit --allow-empty -m "init" -q
for t in "${tags[@]}"; do
git -C "$tmpdir" tag "$t"
done
local actual_exit=0
GIT_DIR="$tmpdir/.git" bash "$SCRIPT" "$tag" || actual_exit=$?
if [[ "$actual_exit" -eq "$expected_exit" ]]; then
echo "PASS: $name"
PASS=$((PASS + 1))
else
echo "FAIL: $name (expected exit $expected_exit, got $actual_exit)"
FAIL=$((FAIL + 1))
fi
}
echo "=== is-latest-tag.sh tests ==="
run_test "newest tag is latest" \
"v0.26.0" 0 \
"v0.24.0" "v0.25.0" "v0.26.0"
run_test "older patch after newer release" \
"v0.25.1" 1 \
"v0.24.0" "v0.25.0" "v0.25.1" "v0.26.0"
run_test "pre-release tag is never latest" \
"v0.27.0-rc.1" 1 \
"v0.24.0" "v0.25.0" "v0.26.0" "v0.27.0-rc.1"
run_test "lone pre-release" \
"v0.27.0-rc.1" 1 \
"v0.27.0-rc.1"
run_test "first-ever tag is latest" \
"v0.1.0" 0 \
"v0.1.0"
run_test "equal to current highest" \
"v0.26.0" 0 \
"v0.26.0"
run_test "pre-releases excluded from candidate set" \
"v0.26.0" 0 \
"v0.25.0" "v0.26.0" "v0.27.0-beta.1"
run_test "higher major version" \
"v1.0.0" 0 \
"v0.25.0" "v0.26.0" "v1.0.0"
run_test "lower major version" \
"v0.26.0" 1 \
"v0.26.0" "v1.0.0"
run_test "no argument prints usage" \
"" 2
echo ""
echo "Results: $PASS passed, $FAIL failed"
[[ "$FAIL" -eq 0 ]]