Files
ai-setup/test_isolated.sh
Виталий Никитенко 83a7790235 feat: добавить ai-glm - лаунчер Claude Code через Zhipu AI GLM 5.2
Новый лаунчер ai-glm запускает Claude Code через официальный Anthropic-совместимый
API Zhipu AI (api.z.ai). Модели: glm-5.2 (opus/sonnet), glm-5.2[1m] (haiku).
Обновлены документация, статус, тесты и EFFORT_MAPPING.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 06:41:41 +03:00

84 lines
3.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# test_isolated.sh — проверка логики автоустановки без реальных скачиваний
# Использует mock для curl, чтобы проверить, что скрипты вызывают правильные URL
set -euo pipefail
TMPDIR=$(mktemp -d)
trap 'rm -rf "$TMPDIR"' EXIT
# Генерируем скрипты из ai-setup.sh в изолированную директорию
BIN_DIR="$TMPDIR/bin"
mkdir -p "$BIN_DIR"
# Извлекаем ai-gpt
awk '/^cat > "\$BIN_DIR\/ai-gpt"/,/^GPTEOF/' scripts/ai-setup.sh | \
sed "s|\\\$BIN_DIR|$BIN_DIR|g" | bash
chmod +x "$BIN_DIR/ai-gpt"
# Извлекаем ai-kimi
awk '/^cat > "\$BIN_DIR\/ai-kimi"/,/^KIMIEOF/' scripts/ai-setup.sh | \
sed "s|\\\$BIN_DIR|$BIN_DIR|g" | bash
chmod +x "$BIN_DIR/ai-kimi"
# Извлекаем ai-glm
awk '/^cat > "\$BIN_DIR\/ai-glm"/,/^GLMEOF/' scripts/ai-setup.sh | \
sed "s|\\\$BIN_DIR|$BIN_DIR|g" | bash
chmod +x "$BIN_DIR/ai-glm"
echo "=== Test 1: ai-gpt calls codex install URL when missing ==="
MOCK_LOG="$TMPDIR/mock_curl.log"
# Создаём mock curl, который логирует вызовы
cat > "$TMPDIR/curl" << CURLEOF
#!/usr/bin/env bash
echo "\$@" >> "$MOCK_LOG"
# Притворяемся, что install.sh отработал (создаём фейковый codex)
if [[ "\$*" == *"chatgpt.com/codex/install.sh"* ]]; then
mkdir -p "\$HOME/.npm-global/bin"
echo '#!/usr/bin/env bash
echo "codex mock \$*"' > "\$HOME/.npm-global/bin/codex"
chmod +x "\$HOME/.npm-global/bin/codex"
fi
CURLEOF
chmod +x "$TMPDIR/curl"
# Запускаем ai-gpt с mock curl (чистый PATH, без системного codex)
HOME="$TMPDIR" PATH="$TMPDIR:/usr/bin:/bin" "$BIN_DIR/ai-gpt" --version 2>&1 || true
if grep -q "chatgpt.com/codex/install.sh" "$MOCK_LOG"; then
echo "[PASS] ai-gpt вызвал установку Codex"
else
echo "[FAIL] ai-gpt НЕ вызвал установку Codex"
echo "curl log:"
cat "$MOCK_LOG" 2>/dev/null || echo "(пусто)"
exit 1
fi
echo ""
echo "=== Test 2: ai-kimi is a Claude Code launcher with Kimi backend ==="
if grep -q 'ANTHROPIC_BASE_URL' "$BIN_DIR/ai-kimi" \
&& grep -q 'api.kimi.com/coding' "$BIN_DIR/ai-kimi" \
&& grep -q 'claude --dangerously-skip-permissions' "$BIN_DIR/ai-kimi"; then
echo "[PASS] ai-kimi запускает claude с официальным Kimi API"
else
echo "[FAIL] ai-kimi должен запускать claude с api.kimi.com/coding"
exit 1
fi
echo ""
echo "=== Test 3: ai-glm is a Claude Code launcher with Zhipu AI backend ==="
if grep -q 'ANTHROPIC_BASE_URL' "$BIN_DIR/ai-glm" \
&& grep -q 'api.z.ai/api/anthropic' "$BIN_DIR/ai-glm" \
&& grep -q 'claude --dangerously-skip-permissions' "$BIN_DIR/ai-glm"; then
echo "[PASS] ai-glm запускает claude с официальным Zhipu AI API"
else
echo "[FAIL] ai-glm должен запускать claude с api.z.ai/api/anthropic"
exit 1
fi
echo ""
echo "=== All tests passed ==="