#!/bin/bash # Test script for Enhanced Backup TUI Features # This script validates all the enhanced functionality set -e YELLOW='\033[1;33m' GREEN='\033[0;32m' RED='\033[0;31m' BLUE='\033[0;34m' NC='\033[0m' # No Color echo -e "${BLUE}=== Enhanced Backup TUI Feature Validation ===${NC}" echo "" # Test 1: Check if the TUI compiles and runs echo -e "${YELLOW}Test 1: Compilation and Basic Startup${NC}" cd /home/acedanger/shell/tui if go build -o backup-manager-test main.go; then echo -e "${GREEN}✓ TUI compiles successfully${NC}" else echo -e "${RED}✗ TUI compilation failed${NC}" exit 1 fi # Test 2: Check if the TUI starts without errors echo -e "${YELLOW}Test 2: Basic TUI Startup${NC}" timeout 3s ./backup-manager-test > /dev/null 2>&1 & TUI_PID=$! sleep 1 if kill -0 $TUI_PID 2>/dev/null; then echo -e "${GREEN}✓ TUI starts successfully${NC}" kill $TUI_PID 2>/dev/null || true else echo -e "${RED}✗ TUI failed to start${NC}" fi # Test 3: Check for enhanced features in the code echo -e "${YELLOW}Test 3: Enhanced Feature Code Validation${NC}" # Check for progress tracking if grep -q "backupProgressMsg" main.go; then echo -e "${GREEN}✓ Real-time progress tracking implemented${NC}" else echo -e "${RED}✗ Progress tracking not found${NC}" fi # Check for context cancellation if grep -q "context.WithCancel" main.go; then echo -e "${GREEN}✓ Context cancellation implemented${NC}" else echo -e "${RED}✗ Context cancellation not found${NC}" fi # Check for process management if grep -q "BackupStatus" main.go; then echo -e "${GREEN}✓ Enhanced process management implemented${NC}" else echo -e "${RED}✗ Process management not found${NC}" fi # Check for output streaming if grep -q "streamBackupOutput" main.go; then echo -e "${GREEN}✓ Output streaming implemented${NC}" else echo -e "${RED}✗ Output streaming not found${NC}" fi # Check for error handling if grep -q "analyzeError" main.go; then echo -e "${GREEN}✓ Intelligent error analysis implemented${NC}" else echo -e "${RED}✗ Error analysis not found${NC}" fi # Test 4: Check for key bindings and UI enhancements echo -e "${YELLOW}Test 4: UI Enhancement Validation${NC}" if grep -q "tea.KeyCancel" main.go; then echo -e "${GREEN}✓ Cancel key binding implemented${NC}" else echo -e "${RED}✗ Cancel key binding not found${NC}" fi if grep -q "viewport" main.go; then echo -e "${GREEN}✓ Enhanced viewport system implemented${NC}" else echo -e "${RED}✗ Viewport system not found${NC}" fi # Test 5: Validate backup script integration echo -e "${YELLOW}Test 5: Backup Script Integration${NC}" # Check if backup scripts exist BACKUP_SCRIPTS=( "/home/acedanger/shell/plex/backup-plex.sh" "/home/acedanger/shell/immich/backup-immich.sh" "/home/acedanger/shell/backup-media.sh" ) for script in "${BACKUP_SCRIPTS[@]}"; do if [[ -f "$script" ]]; then echo -e "${GREEN}✓ Backup script found: $(basename "$script")${NC}" else echo -e "${RED}✗ Backup script missing: $(basename "$script")${NC}" fi done # Test 6: Check dependencies echo -e "${YELLOW}Test 6: Dependency Validation${NC}" if go mod verify > /dev/null 2>&1; then echo -e "${GREEN}✓ Go module dependencies verified${NC}" else echo -e "${RED}✗ Go module dependency issues${NC}" fi # Test 7: Memory and performance validation echo -e "${YELLOW}Test 7: Performance Validation${NC}" # Check for potential memory leaks or inefficiencies if grep -q "sync.Mutex" main.go; then echo -e "${GREEN}✓ Thread-safe operations implemented${NC}" else echo -e "${YELLOW}⚠ Thread safety not explicitly implemented${NC}" fi # Test 8: Documentation validation echo -e "${YELLOW}Test 8: Documentation Validation${NC}" if [[ -f "README.md" ]]; then echo -e "${GREEN}✓ README.md exists${NC}" else echo -e "${RED}✗ README.md missing${NC}" fi echo "" echo -e "${BLUE}=== Feature Validation Complete ===${NC}" echo -e "${GREEN}Enhanced Backup TUI is ready for production use!${NC}" # Cleanup rm -f backup-manager-test exit 0