diff options
Diffstat (limited to 'scripts/testing/cleanup-tests.sh')
| -rwxr-xr-x | scripts/testing/cleanup-tests.sh | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/scripts/testing/cleanup-tests.sh b/scripts/testing/cleanup-tests.sh index fd2f8de..5c0153b 100755 --- a/scripts/testing/cleanup-tests.sh +++ b/scripts/testing/cleanup-tests.sh @@ -20,6 +20,12 @@ FORCE=false while [[ $# -gt 0 ]]; do case $1 in --keep) + case "${2:-}" in + ''|*[!0-9]*) + echo "Error: --keep requires a non-negative integer (got: '${2:-}')" >&2 + exit 1 + ;; + esac KEEP_LAST="$2" shift 2 ;; @@ -68,13 +74,17 @@ QEMU_PIDS=$(pgrep -f "qemu-system.*archsetup-test" 2>/dev/null || true) if [ -n "$QEMU_PIDS" ]; then info "Found orphaned QEMU processes: $QEMU_PIDS" if $FORCE; then - echo "$QEMU_PIDS" | xargs kill -9 2>/dev/null || true + echo "$QEMU_PIDS" | xargs -r kill 2>/dev/null || true + sleep 2 + echo "$QEMU_PIDS" | xargs -r kill -9 2>/dev/null || true success "Orphaned processes killed" else read -p "Kill orphaned QEMU processes? [y/N] " -n 1 -r echo "" if [[ $REPLY =~ ^[Yy]$ ]]; then - echo "$QEMU_PIDS" | xargs kill -9 2>/dev/null || true + echo "$QEMU_PIDS" | xargs -r kill 2>/dev/null || true + sleep 2 + echo "$QEMU_PIDS" | xargs -r kill -9 2>/dev/null || true success "Orphaned processes killed" fi fi @@ -88,7 +98,7 @@ section "Cleaning Up Disk Images" step "Finding temporary disk images" if [ -d "$PROJECT_ROOT/vm-images" ]; then - TEMP_DISKS=$(find "$PROJECT_ROOT/vm-images" -name "debug-overlay-*.qcow2" -o -name "archsetup-test-*.qcow2" 2>/dev/null || true) + TEMP_DISKS=$(find "$PROJECT_ROOT/vm-images" \( -name "debug-overlay-*.qcow2" -o -name "archsetup-test-*.qcow2" \) 2>/dev/null || true) if [ -z "$TEMP_DISKS" ]; then info "No temporary disk images found" @@ -98,7 +108,7 @@ if [ -d "$PROJECT_ROOT/vm-images" ]; then info "Found $DISK_COUNT temporary disk image(s) totaling $DISK_SIZE" if $FORCE; then - echo "$TEMP_DISKS" | while read disk; do + echo "$TEMP_DISKS" | while IFS= read -r disk; do rm -f "$disk" done success "Temporary disk images deleted" @@ -109,7 +119,7 @@ if [ -d "$PROJECT_ROOT/vm-images" ]; then read -p "Delete these disk images? [y/N] " -n 1 -r echo "" if [[ $REPLY =~ ^[Yy]$ ]]; then - echo "$TEMP_DISKS" | while read disk; do + echo "$TEMP_DISKS" | while IFS= read -r disk; do rm -f "$disk" done success "Temporary disk images deleted" @@ -143,7 +153,7 @@ else info "Keeping last $KEEP_LAST, deleting $DELETE_COUNT old result(s)" if $FORCE; then - echo "$TO_DELETE" | while read dir; do + echo "$TO_DELETE" | while IFS= read -r dir; do rm -rf "$dir" done success "Old test results deleted" @@ -155,7 +165,7 @@ else read -p "Delete these test results? [y/N] " -n 1 -r echo "" if [[ $REPLY =~ ^[Yy]$ ]]; then - echo "$TO_DELETE" | while read dir; do + echo "$TO_DELETE" | while IFS= read -r dir; do rm -rf "$dir" done success "Old test results deleted" |
