#!/usr/bin/env bash # test_isolated.sh — проверка логики автоустановки без реальных скачиваний # Использует mock для curl, чтобы проверить, что скрипты вызывают правильные URL set -euo pipefail TMPDIR=$(mktemp -d) trap 'rm -rf "$TMPDIR"' EXIT # Генерируем скрипты из claude_setup.sh в изолированную директорию BIN_DIR="$TMPDIR/bin" mkdir -p "$BIN_DIR" # Извлекаем claude_gpt awk '/^cat > "\$BIN_DIR\/claude_gpt"/,/^GPTEOF/' claude_setup.sh | \ sed "s|\\\$BIN_DIR|$BIN_DIR|g" | bash chmod +x "$BIN_DIR/claude_gpt" # Извлекаем claude_kimi awk '/^cat > "\$BIN_DIR\/claude_kimi"/,/^KIMIEOF/' claude_setup.sh | \ sed "s|\\\$BIN_DIR|$BIN_DIR|g" | bash chmod +x "$BIN_DIR/claude_kimi" echo "=== Test 1: claude_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" # Запускаем claude_gpt с mock curl (чистый PATH, без системного codex) HOME="$TMPDIR" PATH="$TMPDIR:/usr/bin:/bin" "$BIN_DIR/claude_gpt" --version 2>&1 || true if grep -q "chatgpt.com/codex/install.sh" "$MOCK_LOG"; then echo "[PASS] claude_gpt вызвал установку Codex" else echo "[FAIL] claude_gpt НЕ вызвал установку Codex" echo "curl log:" cat "$MOCK_LOG" 2>/dev/null || echo "(пусто)" exit 1 fi echo "" echo "=== Test 2: claude_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/claude_kimi" --version 2>&1 || true if grep -q "code.kimi.com/kimi-code/install.sh" "$MOCK_LOG"; then echo "[PASS] claude_kimi вызвал установку Kimi" else echo "[FAIL] claude_kimi НЕ вызвал установку Kimi" echo "curl log:" cat "$MOCK_LOG" 2>/dev/null || echo "(пусто)" exit 1 fi echo "" echo "=== All tests passed ==="