82 lines
2.7 KiB
Bash
82 lines
2.7 KiB
Bash
#!/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 ==="
|