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