Files
ai-setup/test_isolated.sh

82 lines
2.7 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/' 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/' ai-setup.sh | \
sed "s|\\\$BIN_DIR|$BIN_DIR|g" | bash
chmod +x "$BIN_DIR/ai-kimi"
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 calls kimi install URL when missing ==="
MOCK_LOG="$TMPDIR/mock_curl2.log"
cat > "$TMPDIR/curl" << CURLEOF
#!/usr/bin/env bash
echo "\$@" >> "$MOCK_LOG"
if [[ "\$*" == *"code.kimi.com/kimi-code/install.sh"* ]]; then
mkdir -p "\$HOME/.kimi-code/bin"
echo '#!/usr/bin/env bash
echo "kimi mock \$*"' > "\$HOME/.kimi-code/bin/kimi"
chmod +x "\$HOME/.kimi-code/bin/kimi"
fi
CURLEOF
chmod +x "$TMPDIR/curl"
HOME="$TMPDIR" PATH="$TMPDIR:/usr/bin:/bin" "$BIN_DIR/ai-kimi" --version 2>&1 || true
if grep -q "code.kimi.com/kimi-code/install.sh" "$MOCK_LOG"; then
echo "[PASS] ai-kimi вызвал установку Kimi"
else
echo "[FAIL] ai-kimi НЕ вызвал установку Kimi"
echo "curl log:"
cat "$MOCK_LOG" 2>/dev/null || echo "(пусто)"
exit 1
fi
echo ""
echo "=== All tests passed ==="