mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-03-26 09:35:52 +00:00
166 lines
No EOL
4.4 KiB
Bash
Executable file
166 lines
No EOL
4.4 KiB
Bash
Executable file
#!/bin/bash
|
|
set -e
|
|
|
|
# Integration tests for vt command alias functionality
|
|
# This script tests that vt properly handles aliases, functions, and regular commands
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
BUILD_DIR="${PROJECT_DIR}/build/Build/Products/Debug"
|
|
APP_PATH="${BUILD_DIR}/VibeTunnel.app"
|
|
VT_PATH="${APP_PATH}/Contents/Resources/vt"
|
|
VIBETUNNEL_BIN="${APP_PATH}/Contents/Resources/vibetunnel"
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[0;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Test counter
|
|
TESTS_RUN=0
|
|
TESTS_PASSED=0
|
|
TESTS_FAILED=0
|
|
|
|
# Function to run a test
|
|
run_test() {
|
|
local test_name="$1"
|
|
local test_command="$2"
|
|
local expected_output="$3"
|
|
local timeout="${4:-5}" # Default 5 second timeout
|
|
|
|
TESTS_RUN=$((TESTS_RUN + 1))
|
|
|
|
echo -n "Testing: $test_name... "
|
|
|
|
# Run the command with timeout
|
|
if output=$(timeout "$timeout" bash -c "$test_command" 2>&1); then
|
|
if echo "$output" | grep -q "$expected_output"; then
|
|
echo -e "${GREEN}PASSED${NC}"
|
|
TESTS_PASSED=$((TESTS_PASSED + 1))
|
|
else
|
|
echo -e "${RED}FAILED${NC}"
|
|
echo " Expected to find: '$expected_output'"
|
|
echo " Actual output: '$output'"
|
|
TESTS_FAILED=$((TESTS_FAILED + 1))
|
|
fi
|
|
else
|
|
echo -e "${RED}FAILED${NC} (command failed or timed out)"
|
|
echo " Command: $test_command"
|
|
echo " Output: $output"
|
|
TESTS_FAILED=$((TESTS_FAILED + 1))
|
|
fi
|
|
}
|
|
|
|
# Check if vt exists
|
|
if [ ! -f "$VT_PATH" ]; then
|
|
echo -e "${RED}Error: vt not found at $VT_PATH${NC}"
|
|
echo "Please build the Debug configuration first: ./scripts/build.sh --configuration Debug"
|
|
exit 1
|
|
fi
|
|
|
|
# Make sure vt is executable
|
|
chmod +x "$VT_PATH"
|
|
|
|
echo "Running vt integration tests..."
|
|
echo "Using vt at: $VT_PATH"
|
|
echo ""
|
|
|
|
# Test 1: Basic command execution (binary in PATH)
|
|
run_test "Basic command (echo)" \
|
|
"$VT_PATH echo 'Hello from vt'" \
|
|
"Hello from vt"
|
|
|
|
# Test 2: Command with flags
|
|
run_test "Command with flags (ls)" \
|
|
"$VT_PATH ls -la /tmp | head -1" \
|
|
"total"
|
|
|
|
# Test 3: Test zsh alias
|
|
# Create a temporary directory with zsh config
|
|
TEMP_ZSH_DIR=$(mktemp -d)
|
|
cat > "$TEMP_ZSH_DIR/.zshrc" << 'EOF'
|
|
alias testalias="echo 'zsh alias works'"
|
|
EOF
|
|
|
|
run_test "Zsh alias" \
|
|
"ZDOTDIR=$TEMP_ZSH_DIR HOME=$TEMP_ZSH_DIR $VT_PATH testalias" \
|
|
"zsh alias works"
|
|
|
|
# Test 4: Test bash alias
|
|
# Create a temporary directory with bash config
|
|
TEMP_BASH_DIR=$(mktemp -d)
|
|
cat > "$TEMP_BASH_DIR/.bashrc" << 'EOF'
|
|
alias testalias="echo 'bash alias works'"
|
|
EOF
|
|
|
|
run_test "Bash alias" \
|
|
"SHELL=/bin/bash HOME=$TEMP_BASH_DIR $VT_PATH testalias" \
|
|
"bash alias works"
|
|
|
|
# Test 5: Test shell function
|
|
TEMP_FUNC_DIR=$(mktemp -d)
|
|
cat > "$TEMP_FUNC_DIR/.zshrc" << 'EOF'
|
|
testfunc() {
|
|
echo "shell function works: $1"
|
|
}
|
|
EOF
|
|
|
|
run_test "Zsh function" \
|
|
"ZDOTDIR=$TEMP_FUNC_DIR HOME=$TEMP_FUNC_DIR $VT_PATH testfunc argument" \
|
|
"shell function works: argument"
|
|
|
|
# Test 6: Test command with special characters
|
|
run_test "Command with special chars" \
|
|
"$VT_PATH echo 'test & special | chars'" \
|
|
"test & special | chars"
|
|
|
|
# Test 7: Test --no-shell-wrap flag
|
|
run_test "No shell wrap flag" \
|
|
"$VT_PATH --no-shell-wrap echo 'direct execution'" \
|
|
"direct execution"
|
|
|
|
# Test 8: Test -S flag (short form of --no-shell-wrap)
|
|
run_test "-S flag" \
|
|
"$VT_PATH -S echo 'direct with -S'" \
|
|
"direct with -S"
|
|
|
|
# Test 9: Test piped commands
|
|
run_test "Piped commands" \
|
|
"$VT_PATH sh -c 'echo hello | tr a-z A-Z'" \
|
|
"HELLO"
|
|
|
|
# Test 10: Test command not found
|
|
run_test "Command not found" \
|
|
"$VT_PATH nonexistentcommand123 2>&1 || true" \
|
|
"command not found"
|
|
|
|
# Test 11: Test interactive shell launch
|
|
run_test "Interactive shell (-i)" \
|
|
"echo 'exit' | $VT_PATH -i 2>&1 | head -1" \
|
|
"vibetunnel"
|
|
|
|
# Test 12: Test --shell flag
|
|
run_test "Shell flag (--shell)" \
|
|
"echo 'exit' | $VT_PATH --shell 2>&1 | head -1" \
|
|
"vibetunnel"
|
|
|
|
# Cleanup
|
|
rm -rf "$TEMP_ZSH_DIR" "$TEMP_BASH_DIR" "$TEMP_FUNC_DIR"
|
|
|
|
# Summary
|
|
echo ""
|
|
echo "========================================"
|
|
echo "Test Summary:"
|
|
echo " Total tests: $TESTS_RUN"
|
|
echo -e " Passed: ${GREEN}$TESTS_PASSED${NC}"
|
|
echo -e " Failed: ${RED}$TESTS_FAILED${NC}"
|
|
echo "========================================"
|
|
|
|
if [ $TESTS_FAILED -eq 0 ]; then
|
|
echo -e "${GREEN}All tests passed!${NC}"
|
|
exit 0
|
|
else
|
|
echo -e "${RED}Some tests failed!${NC}"
|
|
exit 1
|
|
fi |