mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-03-25 09:25:50 +00:00
93 lines
No EOL
2.7 KiB
Bash
Executable file
93 lines
No EOL
2.7 KiB
Bash
Executable file
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# Master script to run tests with coverage for all VibeTunnel projects
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
CYAN='\033[0;36m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${CYAN}=== VibeTunnel Test Coverage Report ===${NC}\n"
|
|
|
|
# Track overall status
|
|
ALL_PASSED=true
|
|
|
|
# Function to run tests for a project
|
|
run_project_tests() {
|
|
local project=$1
|
|
local command=$2
|
|
|
|
echo -e "${BLUE}Testing $project...${NC}"
|
|
|
|
if eval "$command"; then
|
|
echo -e "${GREEN}✓ $project tests passed${NC}\n"
|
|
else
|
|
echo -e "${RED}✗ $project tests failed${NC}\n"
|
|
ALL_PASSED=false
|
|
fi
|
|
}
|
|
|
|
# Test macOS project
|
|
if [ -d "mac" ]; then
|
|
cd mac
|
|
run_project_tests "macOS" "swift test --enable-code-coverage 2>&1 | grep -E 'Test.*passed|failed' | tail -5"
|
|
|
|
# Extract macOS coverage
|
|
if [ -f ".build/arm64-apple-macosx/debug/codecov/VibeTunnel.json" ]; then
|
|
COVERAGE=$(cat .build/arm64-apple-macosx/debug/codecov/VibeTunnel.json | jq -r '.data[0].totals.lines.percent' 2>/dev/null | awk '{printf "%.1f", $1}')
|
|
echo -e "${BLUE}macOS Line Coverage: ${COVERAGE}%${NC}\n"
|
|
fi
|
|
cd ..
|
|
fi
|
|
|
|
# Test iOS project
|
|
if [ -d "ios" ] && [ -f "ios/scripts/quick-test.sh" ]; then
|
|
cd ios
|
|
echo -e "${BLUE}Testing iOS...${NC}"
|
|
if ./scripts/quick-test.sh; then
|
|
echo -e "${GREEN}✓ iOS tests passed${NC}\n"
|
|
else
|
|
echo -e "${RED}✗ iOS tests failed${NC}\n"
|
|
ALL_PASSED=false
|
|
fi
|
|
cd ..
|
|
fi
|
|
|
|
# Test Web project
|
|
if [ -d "web" ]; then
|
|
cd web
|
|
echo -e "${BLUE}Testing Web...${NC}"
|
|
|
|
# Run only unit tests for faster results
|
|
if pnpm vitest run src/test/unit --coverage --reporter=dot 2>&1 | grep -E "Test Files|Tests|Duration" | tail -3; then
|
|
# Extract web coverage
|
|
if [ -f "coverage/coverage-summary.json" ]; then
|
|
COVERAGE=$(cat coverage/coverage-summary.json | jq -r '.total.lines.pct' 2>/dev/null)
|
|
echo -e "${BLUE}Web Line Coverage: ${COVERAGE}%${NC}\n"
|
|
fi
|
|
echo -e "${GREEN}✓ Web unit tests passed${NC}\n"
|
|
else
|
|
echo -e "${RED}✗ Web tests failed${NC}\n"
|
|
ALL_PASSED=false
|
|
fi
|
|
cd ..
|
|
fi
|
|
|
|
# Summary
|
|
echo -e "${CYAN}=== Summary ===${NC}"
|
|
if [ "$ALL_PASSED" = true ]; then
|
|
echo -e "${GREEN}✓ All tests passed!${NC}"
|
|
else
|
|
echo -e "${RED}✗ Some tests failed${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Instructions for detailed reports
|
|
echo -e "\n${YELLOW}For detailed coverage reports:${NC}"
|
|
echo "- macOS: cd mac && xcrun xccov view --report .build/*/debug/codecov/VibeTunnel.json"
|
|
echo "- iOS: cd ios && ./scripts/test-with-coverage.sh"
|
|
echo "- Web: cd web && ./scripts/coverage-report.sh" |