#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" source "$SCRIPT_DIR/detect-platform.sh" fail() { echo "FAIL: $*" >&2 exit 1 } assert_eq() { local expected="$1" local actual="$2" local message="$3" if [[ "$actual" != "$expected" ]]; then fail "$message: expected '$expected', got '$actual'" fi } unset GITEA_LOGIN || true assert_eq "usc" "$(get_gitea_login git.uscllc.com)" "USC Gitea host should select usc tea login" assert_eq "mosaicstack" "$(get_gitea_login git.mosaicstack.dev)" "Mosaic Gitea host should select mosaicstack tea login" GITEA_LOGIN="custom-login" export GITEA_LOGIN assert_eq "custom-login" "$(get_gitea_login git.uscllc.com)" "Explicit GITEA_LOGIN should override host default" unset GITEA_LOGIN || true unknown_login="$(get_gitea_login git.example.invalid || true)" assert_eq "" "$unknown_login" "Unknown Gitea hosts should not force a mismatched login" TEST_WORKDIR="${TEST_WORKDIR:-$SCRIPT_DIR/tests/.tmp-gitea-login-selection}" rm -rf "$TEST_WORKDIR" mkdir -p "$TEST_WORKDIR" trap 'rm -rf "$TEST_WORKDIR"' EXIT cat > "$TEST_WORKDIR/credentials.json" <<'JSON' { "gitea": { "mosaicstack": { "url": "https://git.mosaicstack.dev", "token": "mosaic-token" }, "usc": { "url": "https://git.uscllc.com", "token": "usc-token" } } } JSON export MOSAIC_CREDENTIALS_FILE="$TEST_WORKDIR/credentials.json" GITEA_TOKEN="ambient-wrong-token" GITEA_URL="https://git.mosaicstack.dev" export GITEA_TOKEN GITEA_URL assert_eq "usc-token" "$(get_gitea_token git.uscllc.com)" "Host-specific credential lookup should ignore ambient mismatched GITEA_TOKEN" assert_eq "mosaic-token" "$(get_gitea_token git.mosaicstack.dev)" "Host-specific credential lookup should select Mosaic token for Mosaic host" FAKEBIN="$TEST_WORKDIR/fakebin" REPO_DIR="$TEST_WORKDIR/repo" CAPTURE_FILE="$TEST_WORKDIR/tea-args.txt" mkdir -p "$FAKEBIN" "$REPO_DIR" cat > "$FAKEBIN/python3" <<'SH' #!/usr/bin/env bash cat >/dev/null printf 'main\n' SH chmod +x "$FAKEBIN/python3" cat > "$FAKEBIN/tea" <<'SH' #!/usr/bin/env bash printf '%s\n' "$@" > "$TEA_CAPTURE_FILE" SH chmod +x "$FAKEBIN/tea" ( cd "$REPO_DIR" git init -q git remote add origin https://git.uscllc.com/USC/uconnect.git PATH="$FAKEBIN:$PATH" TEA_CAPTURE_FILE="$CAPTURE_FILE" "$SCRIPT_DIR/pr-merge.sh" --skip-queue-guard -n 1905 ) assert_eq $'pr\nmerge\n1905\n--style\nsquash\n--repo\nUSC/uconnect\n--login\nusc' "$(cat "$CAPTURE_FILE")" "pr-merge should pass USC tea login as isolated argv entries" PWNED_FILE="$TEST_WORKDIR/pwned" if ( cd "$REPO_DIR" PATH="$FAKEBIN:$PATH" TEA_CAPTURE_FILE="$CAPTURE_FILE" GITEA_LOGIN="bad;touch $PWNED_FILE" "$SCRIPT_DIR/pr-merge.sh" --skip-queue-guard -n 1905 >/dev/null 2>&1 ); then fail "pr-merge should reject GITEA_LOGIN values with shell metacharacters" fi if [[ -e "$PWNED_FILE" ]]; then fail "pr-merge executed shell metacharacters from GITEA_LOGIN" fi echo "gitea-login-selection tests passed"