mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-04-08 11:45:58 +00:00
130 lines
No EOL
3.6 KiB
Bash
Executable file
130 lines
No EOL
3.6 KiB
Bash
Executable file
#!/bin/bash
|
|
set -e
|
|
|
|
# Integration tests for alias functionality
|
|
# Tests the core fix: removing -- separator from shell 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"
|
|
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"
|
|
|
|
TESTS_RUN=$((TESTS_RUN + 1))
|
|
|
|
echo -n "Testing: $test_name... "
|
|
|
|
# Run the command
|
|
if output=$(eval "$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
|
|
exit_code=$?
|
|
echo -e "${RED}FAILED${NC} (exit code: $exit_code)"
|
|
echo " Command: $test_command"
|
|
echo " Output: $output"
|
|
TESTS_FAILED=$((TESTS_FAILED + 1))
|
|
fi
|
|
}
|
|
|
|
# Check if vibetunnel exists
|
|
if [ ! -f "$VIBETUNNEL_BIN" ]; then
|
|
echo -e "${RED}Error: vibetunnel not found at $VIBETUNNEL_BIN${NC}"
|
|
echo "Please build the Debug configuration first: ./scripts/build.sh --configuration Debug"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Testing alias functionality fix..."
|
|
echo "Using vibetunnel at: $VIBETUNNEL_BIN"
|
|
echo ""
|
|
|
|
# Test 1: Direct command execution (should work)
|
|
run_test "Direct command execution" \
|
|
"$VIBETUNNEL_BIN fwd echo 'test direct'" \
|
|
"test direct"
|
|
|
|
# Test 2: Shell command with proper formatting (simulates fixed vt behavior)
|
|
run_test "Shell command without -- separator" \
|
|
"$VIBETUNNEL_BIN fwd /bin/zsh -i -c \"echo 'alias test works'\"" \
|
|
"alias test works"
|
|
|
|
# Test 3: Test that -- is handled correctly if present in fwd.ts
|
|
run_test "Command with -- as argument" \
|
|
"$VIBETUNNEL_BIN fwd echo -- test" \
|
|
"-- test"
|
|
|
|
# Test 4: Complex shell command (simulates alias resolution)
|
|
TEMP_DIR=$(mktemp -d)
|
|
cat > "$TEMP_DIR/.zshrc" << 'EOF'
|
|
alias myalias="echo 'real alias output'"
|
|
EOF
|
|
|
|
run_test "Zsh alias resolution" \
|
|
"ZDOTDIR=$TEMP_DIR $VIBETUNNEL_BIN fwd /bin/zsh -i -c 'myalias'" \
|
|
"real alias output"
|
|
|
|
# Test 5: Bash alias resolution
|
|
TEMP_DIR_BASH=$(mktemp -d)
|
|
cat > "$TEMP_DIR_BASH/.bashrc" << 'EOF'
|
|
alias myalias="echo 'bash alias output'"
|
|
EOF
|
|
|
|
run_test "Bash alias resolution" \
|
|
"HOME=$TEMP_DIR_BASH $VIBETUNNEL_BIN fwd /bin/bash -c 'shopt -s expand_aliases; source ~/.bashrc 2>/dev/null || true; myalias'" \
|
|
"bash alias output"
|
|
|
|
# Test 6: Shell function
|
|
TEMP_DIR_FUNC=$(mktemp -d)
|
|
cat > "$TEMP_DIR_FUNC/.zshrc" << 'EOF'
|
|
myfunc() {
|
|
echo "function output: $1"
|
|
}
|
|
EOF
|
|
|
|
run_test "Zsh function resolution" \
|
|
"ZDOTDIR=$TEMP_DIR_FUNC $VIBETUNNEL_BIN fwd /bin/zsh -i -c 'myfunc testarg'" \
|
|
"function output: testarg"
|
|
|
|
# Cleanup
|
|
rm -rf "$TEMP_DIR" "$TEMP_DIR_BASH" "$TEMP_DIR_FUNC"
|
|
|
|
# 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 |