From 1bee99fec117f30bde0eb25caddafb617d6a4e64 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 8 Aug 2026 11:35:19 +0200 Subject: [PATCH] add test delete backup with same date --- src/backup | 9 +++++---- tests/backup_tests.bats | 28 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/backup b/src/backup index b2533ac..79334d6 100755 --- a/src/backup +++ b/src/backup @@ -264,6 +264,7 @@ cleanup_old_backups() local delete_count= local backup_path= local backup_name= + local backups=() max_count=$(echo "$config" | jq --raw-output '.backup_count') backup_path=$(echo "$config" | jq --raw-output '.backup_path') backup_name=$(echo "$config" | jq --raw-output '.backup_name') @@ -277,16 +278,16 @@ cleanup_old_backups() echo "ℹ️ INFO: delete backup count $delete_count" mapfile -t backups < <(find "$backup_path" \ + -mindepth 1 \ -maxdepth 1 \ - -name \ - "*_${backup_name}" \ + -name "*_${backup_name}" \ | sort \ | head --lines "$delete_count") - local backup + local backup= for backup in "${backups[@]}"; do echo "🗑️ INFO: delete ${backup##*/}" - rmdir "$backup" + rm --recursive "$backup" done } diff --git a/tests/backup_tests.bats b/tests/backup_tests.bats index 55a9943..ee17a2a 100755 --- a/tests/backup_tests.bats +++ b/tests/backup_tests.bats @@ -711,4 +711,32 @@ teardown() { [ -d build/1999-12-24_01_backup ] [ -d build/2000-01-01_01_backup ] rmdir build/1999-* +} + +@test "success cleanup four backup on same date" { + local num= + for i in {1..18}; do + num=$(printf "%02d" "$i") + mkdir --parents "build/2000-01-01_${num}_backup" + done + run main + + assert_success + assert_line --index 0 "⭐ START: backup" + assert_line --partial "ℹ️ INFO: current backup count 19" + assert_line --partial "ℹ️ INFO: delete backup count 4" + assert_line --partial "🗑️ INFO: delete 2000-01-01_01_backup" + assert_line --partial "🗑️ INFO: delete 2000-01-01_02_backup" + assert_line --partial "🗑️ INFO: delete 2000-01-01_03_backup" + assert_line --partial "🗑️ INFO: delete 2000-01-01_04_backup" + [ ! -d build/2000-01-01_01_backup ] + [ ! -d build/2000-01-01_02_backup ] + [ ! -d build/2000-01-01_03_backup ] + [ ! -d build/2000-01-01_04_backup ] + [ -d build/2000-01-01_05_backup ] + [ -d build/2000-01-01_06_backup ] + [ -d build/2000-01-01_18_backup ] + [ -d build/2000-01-01_19_backup ] + rm --recursive build/2000-01-01_19_backup + rmdir build/2000-01-01_* } \ No newline at end of file -- 2.47.3