particle-os/02-installer-bootc-tui/scripts/test-container.sh
2025-08-07 01:04:22 -07:00

173 lines
No EOL
4.1 KiB
Bash
Executable file

#!/bin/bash
# Test script for Debian Atomic Terminal Installer using podman container
# This script tests the installation process in a controlled container environment
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
log() {
echo -e "${GREEN}[TEST]${NC} $1"
}
warn() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
error() {
echo -e "${RED}[ERROR]${NC} $1"
exit 1
}
# Test container build
test_container_build() {
log "Testing container build..."
if just build; then
log "✅ Container built successfully"
else
error "❌ Container build failed"
fi
}
# Test container run
test_container_run() {
log "Testing container run..."
# Run container in background
podman run --rm -d --name test-tui-installer debian-atomic-tui-installer:latest
# Wait a moment for container to start
sleep 2
# Check if container is running
if podman ps | grep -q test-tui-installer; then
log "✅ Container is running"
# Test basic functionality
if podman exec test-tui-installer which install-debian-atomic; then
log "✅ Install script found"
else
warn "⚠️ Install script not found"
fi
if podman exec test-tui-installer which welcome; then
log "✅ Welcome script found"
else
warn "⚠️ Welcome script not found"
fi
# Stop container
podman stop test-tui-installer
log "✅ Container stopped"
else
error "❌ Container failed to start"
fi
}
# Test ISO creation
test_iso_creation() {
log "Testing ISO creation..."
if just create-iso; then
log "✅ ISO created successfully"
# Check if ISO file exists
if [ -f build/debian-atomic-tui-installer.iso ]; then
log "✅ ISO file exists"
ls -lh build/debian-atomic-tui-installer.iso
else
error "❌ ISO file not found"
fi
else
error "❌ ISO creation failed"
fi
}
# Test installation script syntax
test_script_syntax() {
log "Testing installation script syntax..."
if bash -n scripts/install.sh; then
log "✅ Installation script syntax is valid"
else
error "❌ Installation script has syntax errors"
fi
}
# Test configuration file
test_config_file() {
log "Testing configuration file..."
if [ -f config/installer.conf ]; then
log "✅ Configuration file exists"
# Check if file is readable
if [ -r config/installer.conf ]; then
log "✅ Configuration file is readable"
else
warn "⚠️ Configuration file is not readable"
fi
else
error "❌ Configuration file not found"
fi
}
# Test justfile commands
test_justfile() {
log "Testing justfile commands..."
# Test help command
if just help > /dev/null 2>&1; then
log "✅ Help command works"
else
warn "⚠️ Help command failed"
fi
# Test status command
if just status > /dev/null 2>&1; then
log "✅ Status command works"
else
warn "⚠️ Status command failed"
fi
}
# Run all tests
run_tests() {
log "Starting container-based tests..."
test_script_syntax
test_config_file
test_justfile
test_container_build
test_container_run
test_iso_creation
log "All container-based tests completed successfully!"
}
# Main function
main() {
echo "Debian Atomic Terminal Installer - Container Test Suite"
echo "====================================================="
echo ""
run_tests
echo ""
echo "✅ All container-based tests passed!"
echo "The terminal installer is ready for use."
echo ""
echo "Next steps:"
echo "1. Run 'just test-iso' to test the ISO in QEMU"
echo "2. Run 'just create-test-vm' to create a test VM"
echo "3. Use the ISO in a real VM or on hardware"
}
# Run main function
main "$@"