Files
ai-setup/tests/test_fixes.sh
vitaly 47e0f5e58d refactor: migrate claude_gpt and claude_kimi to native CLIs with auto-install
claude_gpt:
- Replace proxy orchestration with direct codex binary launch
- Auto-install via curl -fsSL https://chatgpt.com/codex/install.sh | sh

claude_kimi:
- Remove openai-anthropic-proxy.py (~450 lines)
- Replace Artemox API key flow with native kimi CLI
- Auto-install via curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash

tests/test_fixes.sh:
- Remove obsolete proxy-specific tests (trap, readiness loops, etc.)
- Add tests for auto-install URLs and absence of proxy logic
2026-05-31 18:49:38 +07:00

95 lines
3.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# tests/test_fixes.sh — unit tests for code-review fixes in claude_setup.sh
# Run: bash tests/test_fixes.sh
set -euo pipefail
SCRIPT="$(cd "$(dirname "$0")/.." && pwd)/claude_setup.sh"
PASS=0; FAIL=0
ok() { echo "[PASS] $1"; PASS=$((PASS+1)); }
fail() { echo "[FAIL] $1"; FAIL=$((FAIL+1)); }
# Extract sections
GPT_SECTION=$(awk '/^cat > "\$BIN_DIR\/claude_gpt"/,/^GPTEOF/' "$SCRIPT")
KIMI_SECTION=$(awk '/^cat > "\$BIN_DIR\/claude_kimi"/,/^KIMIEOF/' "$SCRIPT")
GEMINI_SECTION=$(awk '/^cat > "\$BIN_DIR\/claude_gemini"/,/^GEMINIEOF/' "$SCRIPT")
# ── claude_gpt: auto-install codex ────────────────────────────────────────────
test_gpt_autoinstall() {
if echo "$GPT_SECTION" | grep -q 'curl -fsSL https://chatgpt.com/codex/install.sh'; then
ok "claude_gpt: auto-installs codex via official install script"
else
fail "claude_gpt: missing codex auto-install"
fi
}
# ── claude_gpt: no proxy logic (simplified launcher) ──────────────────────────
test_gpt_no_proxy() {
if echo "$GPT_SECTION" | grep -q 'ANTHROPIC_BASE_URL'; then
fail "claude_gpt: still contains proxy logic (ANTHROPIC_BASE_URL)"
else
ok "claude_gpt: proxy logic removed (no ANTHROPIC_BASE_URL)"
fi
}
# ── claude_kimi: auto-install kimi ────────────────────────────────────────────
test_kimi_autoinstall() {
if echo "$KIMI_SECTION" | grep -q 'curl -fsSL https://code.kimi.com/kimi-code/install.sh'; then
ok "claude_kimi: auto-installs kimi via official install script"
else
fail "claude_kimi: missing kimi auto-install"
fi
}
# ── claude_kimi: no proxy logic (simplified launcher) ─────────────────────────
test_kimi_no_proxy() {
if echo "$KIMI_SECTION" | grep -q 'ANTHROPIC_BASE_URL'; then
fail "claude_kimi: still contains proxy logic (ANTHROPIC_BASE_URL)"
else
ok "claude_kimi: proxy logic removed (no ANTHROPIC_BASE_URL)"
fi
}
# ── Fix 5: re-validate after claude_gemini reauth (both 401 and 429) ─────────
test_fix5_gemini_revalidate() {
local count
count=$(echo "$GEMINI_SECTION" | grep -c '_claude_test_api' || true)
if [ "$count" -ge 2 ]; then
ok "Fix5: _claude_test_api present in gemini reauth flow ($count occurrences)"
else
fail "Fix5: _claude_test_api missing or only in one branch (found $count)"
fi
}
# ── Fix 7: trap quotes $TMP correctly ────────────────────────────────────────
test_fix7_trap_tmp() {
if grep -q "trap 'rm -rf \"\$TMP\"' EXIT" "$SCRIPT"; then
ok "Fix7: trap uses single quotes with quoted \"\$TMP\""
else
fail "Fix7: trap still uses double quotes or \$TMP still unquoted at execution"
fi
}
# ── bash syntax of the whole script ─────────────────────────────────────────
test_script_syntax() {
if bash -n "$SCRIPT" 2>&1; then
ok "syntax: claude_setup.sh passes 'bash -n'"
else
fail "syntax: claude_setup.sh has syntax errors"
fi
}
# ── run all tests ─────────────────────────────────────────────────────────────
test_script_syntax
test_gpt_autoinstall
test_gpt_no_proxy
test_kimi_autoinstall
test_kimi_no_proxy
test_fix5_gemini_revalidate
test_fix7_trap_tmp
echo ""
echo "Results: $PASS passed, $FAIL failed"
[ "$FAIL" -eq 0 ] && exit 0 || exit 1