Skip to main content
Glama

Voice Mode

by mbailey
test_install_services_fixed.sh4.72 kB
#!/bin/bash # Fixed test script for install.sh service installation feature # This script provides basic validation that install.sh functions work set -e # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color print_test() { echo -e "${BLUE}TEST: $1${NC}" } print_success() { echo -e "${GREEN}✅ $1${NC}" } print_failure() { echo -e "${RED}❌ $1${NC}" } print_info() { echo -e "${YELLOW}ℹ️ $1${NC}" } # Get script directory SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" INSTALL_SCRIPT="$SCRIPT_DIR/install.sh" # Test counter TESTS_RUN=0 TESTS_PASSED=0 run_test() { local test_name="$1" local test_command="$2" print_test "$test_name" TESTS_RUN=$((TESTS_RUN + 1)) if eval "$test_command"; then print_success "$test_name passed" TESTS_PASSED=$((TESTS_PASSED + 1)) else print_failure "$test_name failed" fi echo "" } # Test 1: Basic syntax validation test_syntax() { bash -n "$INSTALL_SCRIPT" } # Test 2: Check required functions exist test_functions_exist() { local functions=( "detect_os" "check_homebrew" "check_python" "install_uvx" "configure_claude_voicemode" "check_voice_mode_cli" "install_service" "install_all_services" "main" ) for func in "${functions[@]}"; do if ! grep -q "^${func}()" "$INSTALL_SCRIPT"; then echo "Function $func not found" return 1 fi done return 0 } # Test 3: Check for security patterns test_security() { # Check for potentially dangerous patterns local dangerous_patterns=( "eval \$(curl" "rm -rf /" "chmod 777" ) for pattern in "${dangerous_patterns[@]}"; do if grep -q "$pattern" "$INSTALL_SCRIPT"; then echo "Dangerous pattern found: $pattern" return 1 fi done return 0 } # Test 4: Test help/dry-run mode doesn't break test_help_mode() { # Try to source the script and check basic function availability # This tests that the script can be loaded without executing main local temp_script=$(mktemp) cat > "$temp_script" << 'EOF' #!/bin/bash set -e # Mock print functions to avoid exits print_step() { echo "STEP: $1"; } print_success() { echo "SUCCESS: $1"; } print_warning() { echo "WARNING: $1"; } print_error() { echo "ERROR: $1"; return 1; } # Source the install script but don't run main source "$1" # Test that key functions are available if declare -f detect_os >/dev/null && \ declare -f check_homebrew >/dev/null && \ declare -f install_service >/dev/null; then echo "Key functions available" exit 0 else echo "Key functions missing" exit 1 fi EOF chmod +x "$temp_script" "$temp_script" "$INSTALL_SCRIPT" local result=$? rm -f "$temp_script" return $result } # Test 5: Validate error handling test_error_handling() { # Check that script uses proper error handling grep -q "set -e" "$INSTALL_SCRIPT" && \ grep -q "print_error" "$INSTALL_SCRIPT" } # Main test runner main() { echo -e "${BLUE}🧪 Voice Mode install.sh Basic Validation Tests${NC}" echo "=============================================" echo "" if [[ ! -f "$INSTALL_SCRIPT" ]]; then print_failure "install.sh not found at $INSTALL_SCRIPT" exit 1 fi print_info "Testing install.sh at: $INSTALL_SCRIPT" echo "" # Run tests run_test "Bash syntax validation" "test_syntax" run_test "Required functions exist" "test_functions_exist" run_test "Security pattern check" "test_security" run_test "Script loading test" "test_help_mode" run_test "Error handling validation" "test_error_handling" # Summary echo "=============================================" echo -e "${BLUE}Test Summary:${NC}" echo "Tests run: $TESTS_RUN" echo "Tests passed: $TESTS_PASSED" echo "Tests failed: $((TESTS_RUN - TESTS_PASSED))" if [[ $TESTS_PASSED -eq $TESTS_RUN ]]; then echo "" print_success "All tests passed! install.sh appears to be working correctly." echo "" print_info "For comprehensive testing, run:" echo " python -m pytest tests/test_install_script_unit.py -v" echo " python -m pytest tests/test_install_functions.py -v" exit 0 else echo "" print_failure "Some tests failed. Please check the issues above." exit 1 fi } # Run if executed directly if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then main "$@" fi

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mbailey/voicemode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server