apt-ostree/test-apt-ostree-environment.sh
robojerk d295f9bb4d Major milestone: Complete apt-ostree bootc compatibility and OCI integration
-  Real package installation (replaced mock installation)
-  Real OSTree commit creation from installed packages
-  OCI image creation from both commits and rootfs
-  Full bootc compatibility with proper labels
-  Comprehensive test suite (test-bootc-apt-ostree.sh)
-  Container tool validation (skopeo, podman)
-  Updated compatibility reports for Ubuntu Questing
-  Fixed OCI schema version and field naming issues
-  Temporary directory lifecycle fixes
-  Serde rename attributes for OCI JSON compliance

Ready for Aurora-style workflow deployment!
2025-07-20 21:06:44 +00:00

219 lines
No EOL
5.4 KiB
Bash
Executable file

#!/bin/bash
# Comprehensive Test Script for apt-ostree
# Tests all 21 rpm-ostree compatible commands in a real environment
set -e
echo "🧪 Comprehensive apt-ostree Testing Environment"
# Configuration
TEST_DIR="/tmp/apt-ostree-test"
OSTREE_REPO="$TEST_DIR/repo"
DEPLOY_DIR="$TEST_DIR/deploy"
APT_OSTREE_BIN="./target/release/simple-cli"
DAEMON_BIN="./target/release/simple-cli"
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
NC='\033[0m' # No Color
# Test counters
TOTAL_TESTS=0
PASSED_TESTS=0
FAILED_TESTS=0
# Function to print colored output
print_status() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
((PASSED_TESTS++))
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
((FAILED_TESTS++))
}
print_test() {
echo -e "${PURPLE}[TEST]${NC} $1"
((TOTAL_TESTS++))
}
# Function to run a test
run_test() {
local test_name="$1"
local command="$2"
local expected_exit="$3"
print_test "$test_name"
echo " Command: $command"
if eval "$command" > /tmp/apt-ostree-test-output.log 2>&1; then
if [ "$expected_exit" = "0" ] || [ -z "$expected_exit" ]; then
print_success "$test_name passed"
else
print_error "$test_name failed (expected exit $expected_exit, got 0)"
fi
else
if [ "$expected_exit" != "0" ]; then
print_success "$test_name passed (expected failure)"
else
print_error "$test_name failed"
echo " Output:"
cat /tmp/apt-ostree-test-output.log | head -10
fi
fi
echo ""
}
# Check prerequisites
print_status "Checking prerequisites..."
if [ ! -f "$APT_OSTREE_BIN" ]; then
print_error "apt-ostree binary not found"
exit 1
fi
if [ ! -f "$DAEMON_BIN" ]; then
print_warning "apt-ostreed binary not found, will test without daemon"
fi
if ! command -v ostree &> /dev/null; then
print_error "ostree command not found"
exit 1
fi
print_success "All prerequisites met"
# Start daemon for testing (skip for now since daemon has compilation issues)
print_status "Skipping daemon startup (daemon has compilation issues)"
DAEMON_PID=""
# Function to cleanup
cleanup() {
print_status "Cleaning up..."
if [ -n "$DAEMON_PID" ]; then
kill $DAEMON_PID 2>/dev/null || true
fi
rm -f /tmp/apt-ostree-test-output.log
}
trap cleanup EXIT
# Test 1: Status command
run_test "Status Command" "$APT_OSTREE_BIN status"
# Test 2: Initialize OSTree repository
run_test "Initialize Repository" "$APT_OSTREE_BIN init --repo=$OSTREE_REPO"
# Test 3: List packages (should be empty initially)
run_test "List Packages (Empty)" "$APT_OSTREE_BIN list"
# Test 4: Search packages
run_test "Search Packages" "$APT_OSTREE_BIN search bash"
# Test 5: Show package info
run_test "Show Package Info" "$APT_OSTREE_BIN info bash"
# Test 6: Install packages
run_test "Install Packages" "$APT_OSTREE_BIN install bash coreutils"
# Test 7: List packages (should show installed packages)
run_test "List Packages (After Install)" "$APT_OSTREE_BIN list"
# Test 8: Upgrade system
run_test "Upgrade System" "$APT_OSTREE_BIN upgrade"
# Test 9: Deploy system
run_test "Deploy System" "$APT_OSTREE_BIN deploy --sysroot=$DEPLOY_DIR"
# Test 10: Status after deployment
run_test "Status After Deploy" "$APT_OSTREE_BIN status"
# Test 11: Rollback (should work even if no previous deployment)
run_test "Rollback Command" "$APT_OSTREE_BIN rollback"
# Test 12: Reset command
run_test "Reset Command" "$APT_OSTREE_BIN reset"
# Test 13: Rebase command
run_test "Rebase Command" "$APT_OSTREE_BIN rebase"
# Test 14: Kargs command
run_test "Kargs Command" "$APT_OSTREE_BIN kargs"
# Test 15: Remove packages
run_test "Remove Packages" "$APT_OSTREE_BIN remove wget"
# Test 16: History command
run_test "History Command" "$APT_OSTREE_BIN history"
# Test 17: DB command
run_test "DB Command" "$APT_OSTREE_BIN db"
# Test 18: Initramfs command
run_test "Initramfs Command" "$APT_OSTREE_BIN initramfs"
# Test 19: Reload command
run_test "Reload Command" "$APT_OSTREE_BIN reload"
# Test 20: Checkout command
run_test "Checkout Command" "$APT_OSTREE_BIN checkout"
# Test 21: Prune command
run_test "Prune Command" "$APT_OSTREE_BIN prune"
# Test 22: Compose command
run_test "Compose Command" "$APT_OSTREE_BIN compose"
# Test 23: Override command
run_test "Override Command" "$APT_OSTREE_BIN override"
# Test 24: RefreshMd command
run_test "RefreshMd Command" "$APT_OSTREE_BIN refresh-md"
# Test 25: Apply-live command
run_test "Apply-Live Command" "$APT_OSTREE_BIN apply-live"
# Test 26: Cancel command
run_test "Cancel Command" "$APT_OSTREE_BIN cancel"
# Test 27: Cleanup command
run_test "Cleanup Command" "$APT_OSTREE_BIN cleanup"
# Test 28: Daemon ping
run_test "Daemon Ping" "$APT_OSTREE_BIN daemon-ping"
# Test 29: Help command
run_test "Help Command" "$APT_OSTREE_BIN --help"
# Test 30: Version command
run_test "Version Command" "$APT_OSTREE_BIN --version"
# Print test summary
echo ""
echo "🧪 Test Summary"
echo "=============="
echo "Total tests: $TOTAL_TESTS"
echo "Passed: $PASSED_TESTS"
echo "Failed: $FAILED_TESTS"
if [ $FAILED_TESTS -eq 0 ]; then
print_success "All tests passed! 🎉"
exit 0
else
print_error "Some tests failed. Check the output above for details."
exit 1
fi