generated tests (yes i'm feeling ashamed)
This commit is contained in:
210
src-tauri/run_tests.sh
Normal file
210
src-tauri/run_tests.sh
Normal file
@@ -0,0 +1,210 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Flalingo Test Runner Script
|
||||
# This script runs all tests for the Flalingo project with proper setup and cleanup
|
||||
|
||||
set -e # Exit on any error
|
||||
|
||||
echo "🧪 Flalingo Test Runner"
|
||||
echo "======================="
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Function to print colored output
|
||||
print_status() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Check if we're in the right directory
|
||||
if [ ! -f "Cargo.toml" ]; then
|
||||
print_error "Please run this script from the src-tauri directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create test directories if they don't exist
|
||||
print_status "Setting up test environment..."
|
||||
mkdir -p test_dbs
|
||||
mkdir -p test_json_files
|
||||
mkdir -p test_exports
|
||||
mkdir -p test_backups
|
||||
|
||||
# Set environment variables for testing
|
||||
export RUST_LOG=debug
|
||||
export RUST_BACKTRACE=1
|
||||
|
||||
# Function to cleanup test files
|
||||
cleanup() {
|
||||
print_status "Cleaning up test files..."
|
||||
rm -rf test_dbs
|
||||
rm -rf test_json_files
|
||||
rm -rf test_exports
|
||||
rm -rf test_backups
|
||||
rm -rf test_templates
|
||||
rm -rf test_validation
|
||||
rm -rf test_directory
|
||||
rm -rf test_stats
|
||||
print_success "Cleanup completed"
|
||||
}
|
||||
|
||||
# Cleanup on script exit
|
||||
trap cleanup EXIT
|
||||
|
||||
# Run different types of tests
|
||||
run_unit_tests() {
|
||||
print_status "Running unit tests..."
|
||||
cargo test --lib --verbose
|
||||
if [ $? -eq 0 ]; then
|
||||
print_success "Unit tests passed"
|
||||
else
|
||||
print_error "Unit tests failed"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
run_integration_tests() {
|
||||
print_status "Running integration tests..."
|
||||
cargo test --test integration_tests --verbose
|
||||
if [ $? -eq 0 ]; then
|
||||
print_success "Integration tests passed"
|
||||
else
|
||||
print_error "Integration tests failed"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
run_repository_tests() {
|
||||
print_status "Running repository tests..."
|
||||
|
||||
# Run individual repository test files
|
||||
local test_files=(
|
||||
"metadata_repository_tests"
|
||||
"exercise_repository_tests"
|
||||
"node_repository_tests"
|
||||
"path_repository_tests"
|
||||
"repository_manager_tests"
|
||||
"json_utils_tests"
|
||||
)
|
||||
|
||||
for test_file in "${test_files[@]}"; do
|
||||
print_status "Running ${test_file}..."
|
||||
cargo test --test "$test_file" --verbose
|
||||
if [ $? -eq 0 ]; then
|
||||
print_success "${test_file} passed"
|
||||
else
|
||||
print_error "${test_file} failed"
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
run_performance_tests() {
|
||||
print_status "Running performance tests..."
|
||||
cargo test --test integration_tests test_large_data_operations --verbose --release
|
||||
if [ $? -eq 0 ]; then
|
||||
print_success "Performance tests passed"
|
||||
else
|
||||
print_warning "Performance tests failed (this may be expected on slower systems)"
|
||||
fi
|
||||
}
|
||||
|
||||
run_doc_tests() {
|
||||
print_status "Running documentation tests..."
|
||||
cargo test --doc
|
||||
if [ $? -eq 0 ]; then
|
||||
print_success "Documentation tests passed"
|
||||
else
|
||||
print_warning "Documentation tests failed"
|
||||
fi
|
||||
}
|
||||
|
||||
# Main test execution
|
||||
main() {
|
||||
print_status "Starting test suite..."
|
||||
|
||||
# Check if cargo is available
|
||||
if ! command -v cargo &> /dev/null; then
|
||||
print_error "Cargo not found. Please install Rust and Cargo."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build the project first
|
||||
print_status "Building project..."
|
||||
cargo build
|
||||
if [ $? -ne 0 ]; then
|
||||
print_error "Build failed"
|
||||
exit 1
|
||||
fi
|
||||
print_success "Build completed"
|
||||
|
||||
# Parse command line arguments
|
||||
case "${1:-all}" in
|
||||
"unit")
|
||||
run_unit_tests
|
||||
;;
|
||||
"integration")
|
||||
run_integration_tests
|
||||
;;
|
||||
"repository")
|
||||
run_repository_tests
|
||||
;;
|
||||
"performance")
|
||||
run_performance_tests
|
||||
;;
|
||||
"doc")
|
||||
run_doc_tests
|
||||
;;
|
||||
"all")
|
||||
print_status "Running all tests..."
|
||||
run_unit_tests && \
|
||||
run_repository_tests && \
|
||||
run_integration_tests && \
|
||||
run_performance_tests && \
|
||||
run_doc_tests
|
||||
;;
|
||||
"quick")
|
||||
print_status "Running quick test suite (unit + repository)..."
|
||||
run_unit_tests && \
|
||||
run_repository_tests
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 [unit|integration|repository|performance|doc|all|quick]"
|
||||
echo ""
|
||||
echo "Test Categories:"
|
||||
echo " unit - Run unit tests only"
|
||||
echo " integration - Run integration tests only"
|
||||
echo " repository - Run repository tests only"
|
||||
echo " performance - Run performance tests only"
|
||||
echo " doc - Run documentation tests only"
|
||||
echo " all - Run all tests (default)"
|
||||
echo " quick - Run unit and repository tests only"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
print_success "🎉 All requested tests completed successfully!"
|
||||
else
|
||||
print_error "❌ Some tests failed. Check the output above for details."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Run the main function with all arguments
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user