#!/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 ==="