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')
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
}
[ -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