#!/bin/bash # test-vscode-netgescon.sh - Test completo installazione VS Code per NetGescon echo "๐Ÿงช Test Installazione Visual Studio Code + NetGescon" echo "===================================================" # Colori per output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Contatori TESTS_PASSED=0 TESTS_FAILED=0 # Funzione per test test_command() { local description="$1" local command="$2" local expected_result="$3" echo -n "๐Ÿ” $description... " if eval "$command" &>/dev/null; then echo -e "${GREEN}โœ… PASS${NC}" ((TESTS_PASSED++)) return 0 else echo -e "${RED}โŒ FAIL${NC}" ((TESTS_FAILED++)) return 1 fi } # Test esistenza file/directory test_file() { local description="$1" local file_path="$2" echo -n "๐Ÿ“ $description... " if [ -e "$file_path" ]; then echo -e "${GREEN}โœ… TROVATO${NC}" ((TESTS_PASSED++)) return 0 else echo -e "${RED}โŒ NON TROVATO${NC}" ((TESTS_FAILED++)) return 1 fi } echo "๐Ÿ“ Sistema: $(lsb_release -d | cut -f2)" echo "๐Ÿ“ Utente: $(whoami)" echo "๐Ÿ“ Data: $(date)" echo "" # ===== TEST SISTEMA BASE ===== echo "๐Ÿ–ฅ๏ธ TEST SISTEMA BASE" echo "----------------------" test_command "Ubuntu 24.04 LTS" "lsb_release -r | grep -q '24.04'" test_command "Utente non-root" "[ \$(id -u) -ne 0 ]" test_command "Connessione internet" "ping -c 1 google.com" echo "" # ===== TEST VISUAL STUDIO CODE ===== echo "๐Ÿ’ป TEST VISUAL STUDIO CODE" echo "---------------------------" test_command "VS Code installato" "command -v code" test_command "VS Code versione corretta" "code --version | head -n1 | grep -q '1\.'" test_file "Repository Microsoft" "/etc/apt/sources.list.d/vscode.list" test_file "Chiave GPG Microsoft" "/etc/apt/trusted.gpg.d/packages.microsoft.gpg" echo "" # ===== TEST ESTENSIONI ===== echo "๐Ÿ”ง TEST ESTENSIONI VS CODE" echo "---------------------------" # Lista estensioni essenziali per NetGescon extensions=( "bmewburn.vscode-intelephense-client:PHP Intelephense" "onecentlin.laravel5-snippets:Laravel Snippets" "onecentlin.laravel-blade:Laravel Blade" "ryannaddy.laravel-artisan:Laravel Artisan" "ms-vscode.vscode-json:JSON" "eamodio.gitlens:GitLens" "ms-vscode-remote.remote-ssh:Remote SSH" ) for ext in "${extensions[@]}"; do IFS=':' read -r ext_id ext_name <<< "$ext" test_command "Estensione $ext_name" "code --list-extensions | grep -q '$ext_id'" done echo "" # ===== TEST CONFIGURAZIONE ===== echo "โš™๏ธ TEST CONFIGURAZIONE" echo "-----------------------" test_file "Directory config VS Code" "~/.config/Code/User" test_file "Settings.json" "~/.config/Code/User/settings.json" if [ -f ~/.config/Code/User/settings.json ]; then echo -n "๐Ÿ” Configurazione PHP... " if grep -q "intelephense" ~/.config/Code/User/settings.json; then echo -e "${GREEN}โœ… CONFIGURATO${NC}" ((TESTS_PASSED++)) else echo -e "${RED}โŒ NON CONFIGURATO${NC}" ((TESTS_FAILED++)) fi echo -n "๐Ÿ” Configurazione Blade... " if grep -q "blade" ~/.config/Code/User/settings.json; then echo -e "${GREEN}โœ… CONFIGURATO${NC}" ((TESTS_PASSED++)) else echo -e "${RED}โŒ NON CONFIGURATO${NC}" ((TESTS_FAILED++)) fi fi echo "" # ===== TEST SSH ===== echo "๐Ÿ” TEST SSH SERVER" echo "------------------" test_command "SSH Server installato" "command -v sshd" test_command "SSH Server attivo" "systemctl is-active --quiet ssh" test_command "SSH Server abilitato" "systemctl is-enabled --quiet ssh" test_command "Firewall SSH" "sudo ufw status | grep -q '22/tcp'" echo "" # ===== TEST NETGESCON ===== echo "๐ŸŽฏ TEST PROGETTO NETGESCON" echo "---------------------------" test_file "Directory NetGescon" "/var/www/netgescon" if [ -d "/var/www/netgescon" ]; then test_file "Laravel artisan" "/var/www/netgescon/artisan" test_file "Composer.json" "/var/www/netgescon/composer.json" test_file "Package.json" "/var/www/netgescon/package.json" test_file "Directory routes" "/var/www/netgescon/routes" test_file "Directory resources/views" "/var/www/netgescon/resources/views" # Test file specifici test_file "Route web.php" "/var/www/netgescon/routes/web.php" test_file "Dashboard blade" "/var/www/netgescon/resources/views/admin/dashboard.blade.php" # Test workspace VS Code test_file "Workspace NetGescon" "~/.config/Code/User/netgescon.code-workspace" fi echo "" # ===== TEST NETWORK ===== echo "๐ŸŒ TEST CONFIGURAZIONE NETWORK" echo "-------------------------------" IP_ADDRESS=$(hostname -I | awk '{print $1}') echo "๐Ÿ“ IP Address: $IP_ADDRESS" test_command "Interfaccia di rete attiva" "ip link show | grep -q 'state UP'" test_command "Indirizzo IP assegnato" "[ -n '$IP_ADDRESS' ]" echo "" # ===== TEST SVILUPPO ===== echo "๐Ÿ‘จโ€๐Ÿ’ป TEST AMBIENTE SVILUPPO" echo "----------------------------" test_command "PHP installato" "command -v php" test_command "Composer installato" "command -v composer" test_command "Node.js installato" "command -v node" test_command "NPM installato" "command -v npm" test_command "Git installato" "command -v git" if command -v php &>/dev/null; then echo "๐Ÿ“ PHP Version: $(php --version | head -n1)" fi if command -v node &>/dev/null; then echo "๐Ÿ“ Node.js Version: $(node --version)" fi echo "" # ===== RIEPILOGO ===== echo "๐Ÿ“Š RIEPILOGO TEST" echo "==================" echo -e "โœ… Test superati: ${GREEN}$TESTS_PASSED${NC}" echo -e "โŒ Test falliti: ${RED}$TESTS_FAILED${NC}" TOTAL_TESTS=$((TESTS_PASSED + TESTS_FAILED)) if [ $TOTAL_TESTS -gt 0 ]; then SUCCESS_RATE=$((TESTS_PASSED * 100 / TOTAL_TESTS)) echo "๐Ÿ“ˆ Tasso di successo: $SUCCESS_RATE%" fi echo "" # ===== RACCOMANDAZIONI ===== if [ $TESTS_FAILED -gt 0 ]; then echo "๐Ÿ”ง RACCOMANDAZIONI" echo "===================" if ! command -v code &>/dev/null; then echo "โ€ข Esegui: sudo ./install-vscode-netgescon.sh" fi if ! systemctl is-active --quiet ssh; then echo "โ€ข Attiva SSH: sudo systemctl start ssh" fi if [ ! -d "/var/www/netgescon" ]; then echo "โ€ข Installa NetGescon: sudo ./setup-netgescon-ubuntu2404.sh" fi echo "" fi # ===== PROSSIMI STEP ===== echo "๐Ÿš€ PROSSIMI STEP" echo "=================" if [ $TESTS_FAILED -eq 0 ]; then echo "๐ŸŽ‰ Tutto configurato correttamente!" echo "" echo "Puoi ora:" echo "1. Connetterti da Windows: ssh $(whoami)@$IP_ADDRESS" echo "2. Aprire VS Code Remote: code --remote ssh-remote+$IP_ADDRESS /var/www/netgescon" echo "3. Iniziare lo sviluppo NetGescon" else echo "โš ๏ธ Alcuni test sono falliti. Risolvi i problemi e riesegui il test." fi echo "" echo "๐Ÿ“‹ Log salvato in: /tmp/vscode-test-$(date +%Y%m%d-%H%M%S).log" # Salva log { echo "Test VS Code NetGescon - $(date)" echo "Passed: $TESTS_PASSED, Failed: $TESTS_FAILED" echo "System: $(lsb_release -d | cut -f2)" echo "User: $(whoami)" echo "IP: $IP_ADDRESS" } > "/tmp/vscode-test-$(date +%Y%m%d-%H%M%S).log" # Ritorna codice di uscita appropriato if [ $TESTS_FAILED -eq 0 ]; then exit 0 else exit 1 fi