deb-bootc-image-builder/test-basic-functionality.sh
robojerk d2d4c2e4e7
Some checks failed
particle-os CI / Test particle-os (push) Failing after 1s
particle-os CI / Integration Test (push) Has been skipped
particle-os CI / Security & Quality (push) Failing after 1s
Test particle-os Basic Functionality / test-basic (push) Failing after 1s
Tests / test (1.21.x) (push) Failing after 2s
Tests / test (1.22.x) (push) Failing after 1s
particle-os CI / Build and Release (push) Has been skipped
Major refactor: Remove debos integration, add particle-os CLI system, implement OSTree stages, and create comprehensive build pipeline
2025-08-12 16:17:39 -07:00

212 lines
5.7 KiB
Bash
Executable file
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Test script for basic particle-os functionality
# Focuses on core features without complex CI/CD or apt-cacher-ng
set -euo pipefail
echo "🧪 Testing basic particle-os functionality"
echo "=========================================="
# Configuration
RECIPE_DIR="recipes"
BUILD_DIR="bib"
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Helper functions
log_info() {
echo -e "${BLUE} $1${NC}"
}
log_success() {
echo -e "${GREEN}$1${NC}"
}
log_warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
log_error() {
echo -e "${RED}$1${NC}"
}
# Test 1: Check if particle-os is built
test_particle_os_build() {
log_info "Testing particle-os build..."
if [ ! -f "$BUILD_DIR/particle-os" ]; then
log_warning "particle-os not built, building now..."
cd "$BUILD_DIR"
if go build -o particle-os cmd/particle_os/main.go; then
log_success "particle-os built successfully"
else
log_error "Failed to build particle-os"
return 1
fi
cd ..
else
log_success "particle-os already built"
fi
}
# Test 2: Test basic CLI functionality
test_cli_basic() {
log_info "Testing basic CLI functionality..."
cd "$BUILD_DIR"
# Test help
if ./particle-os --help > /dev/null 2>&1; then
log_success "Help command works"
else
log_error "Help command failed"
return 1
fi
# Test version
if ./particle-os version > /dev/null 2>&1; then
log_success "Version command works"
else
log_error "Version command failed"
return 1
fi
# Test list
if ./particle-os list > /dev/null 2>&1; then
log_success "List command works"
else
log_error "List command failed"
return 1
fi
cd ..
}
# Test 3: Test recipe validation
test_recipe_validation() {
log_info "Testing recipe validation..."
local recipes=("minimal-test" "simple-server" "debian-test")
local valid_count=0
for recipe in "${recipes[@]}"; do
if [ -f "$RECIPE_DIR/$recipe.yml" ]; then
if "$BUILD_DIR/particle-os" validate "$RECIPE_DIR/$recipe.yml" > /dev/null 2>&1; then
log_success "$recipe.yml is valid"
((valid_count++))
else
log_error "$recipe.yml validation failed"
fi
else
log_warning "$recipe.yml not found"
fi
done
log_info "Valid recipes: $valid_count/${#recipes[@]}"
}
# Test 4: Test container inspection
test_container_inspection() {
log_info "Testing container inspection..."
if "$BUILD_DIR/particle-os" container debian:trixie-slim > /dev/null 2>&1; then
log_success "Container inspection works"
else
log_warning "Container inspection failed (may need container runtime)"
fi
}
# Test 5: Test minimal recipe build (dry run if possible)
test_minimal_build() {
log_info "Testing minimal recipe build..."
if [ -f "$RECIPE_DIR/minimal-test.yml" ]; then
log_info "Attempting to build minimal-test recipe..."
# Check if we can run with sudo (CI environment)
if [ "$EUID" -eq 0 ]; then
log_info "Running as root, attempting actual build..."
cd "$BUILD_DIR"
if ./particle-os build --verbose ../recipes/minimal-test.yml; then
log_success "Minimal recipe build completed"
else
log_warning "Minimal recipe build failed (expected during development)"
fi
cd ..
else
log_info "Not running as root, testing recipe validation only..."
if "$BUILD_DIR/particle-os" validate "$RECIPE_DIR/minimal-test.yml" > /dev/null 2>&1; then
log_success "Minimal recipe validation passed"
else
log_error "Minimal recipe validation failed"
fi
fi
else
log_warning "minimal-test.yml not found, skipping build test"
fi
}
# Test 6: Test environment variable handling (apt-cacher-ng optional)
test_environment_variables() {
log_info "Testing environment variable handling..."
# Test APT_CACHER_NG_URL environment variable (optional)
export APT_CACHER_NG_URL="http://test-cache:3142"
if [ "$APT_CACHER_NG_URL" = "http://test-cache:3142" ]; then
log_success "Environment variable APT_CACHER_NG_URL set correctly"
else
log_error "Failed to set APT_CACHER_NG_URL environment variable"
fi
# Reset to empty (apt-cacher-ng is optional)
unset APT_CACHER_NG_URL
log_info "apt-cacher-ng is optional - system works without it"
}
# Main test execution
main() {
echo
log_info "Starting basic functionality tests..."
echo
# Run all tests
test_particle_os_build
echo
test_cli_basic
echo
test_recipe_validation
echo
test_container_inspection
echo
test_minimal_build
echo
test_environment_variables
echo
# Summary
echo "=========================================="
log_success "Basic functionality tests completed!"
echo
log_info "Next steps:"
echo "1. Test basic CLI functionality: ./bib/particle-os --help"
echo "2. Validate recipes: ./bib/particle-os validate recipes/minimal-test.yml"
echo "3. Test container inspection: ./bib/particle-os container debian:trixie-slim"
echo "4. When ready, test building: sudo ./bib/particle-os build recipes/minimal-test.yml"
echo
log_info "Focus on getting core functionality working before adding complex features!"
}
# Run main function
main "$@"