netgescon-master/scripts/test-vscode-netgescon.sh

264 lines
7.2 KiB
Bash

#!/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