clusev/scripts/set-repository-url.test.sh

28 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Test: set-repository-url.sh writes CLUSEV_REPOSITORY (derived from the clone origin) into the .env,
# creating or replacing the line, and strips a trailing .git.
set -euo pipefail
here="$(cd "$(dirname "$0")" && pwd)"
work="$(mktemp -d)"; trap 'rm -rf "$work"' EXIT
git init -q "$work/proj"
git -C "$work/proj" remote add origin https://git.example.com/o/clusev.git
printf 'APP_ENV=local\n' > "$work/proj/.env"
bash "$here/set-repository-url.sh" "$work/proj" "$work/proj/.env"
grep -qx 'CLUSEV_REPOSITORY=https://git.example.com/o/clusev' "$work/proj/.env" || { echo "FAIL: append/strip-.git"; exit 1; }
# replace an existing line
printf 'CLUSEV_REPOSITORY=old\n' >> "$work/proj/.env"
git -C "$work/proj" remote set-url origin https://gitea.local/u/clusev
bash "$here/set-repository-url.sh" "$work/proj" "$work/proj/.env"
test "$(grep -c '^CLUSEV_REPOSITORY=' "$work/proj/.env")" = 1 || { echo "FAIL: duplicate line"; exit 1; }
grep -qx 'CLUSEV_REPOSITORY=https://gitea.local/u/clusev' "$work/proj/.env" || { echo "FAIL: replace"; exit 1; }
# no origin → no-op, no crash
git init -q "$work/noremote"; printf '' > "$work/noremote/.env"
bash "$here/set-repository-url.sh" "$work/noremote" "$work/noremote/.env"
grep -q 'CLUSEV_REPOSITORY' "$work/noremote/.env" && { echo "FAIL: wrote without origin"; exit 1; }
echo "PASS"