aboutsummaryrefslogtreecommitdiff
path: root/scripts/testing/cleanup-tests.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/testing/cleanup-tests.sh')
-rwxr-xr-xscripts/testing/cleanup-tests.sh24
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"