264 lines
7.2 KiB
Bash
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
|