summaryrefslogtreecommitdiff
path: root/test/run-tests.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/run-tests.sh')
-rwxr-xr-xtest/run-tests.sh26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/run-tests.sh b/test/run-tests.sh
index 415ecc3..0e655d0 100755
--- a/test/run-tests.sh
+++ b/test/run-tests.sh
@@ -292,5 +292,31 @@ else
ok "accepts a real multi-entry APK (no SIGPIPE from the zip check)"
fi
+# 24. Backups are full copies of a large file in a public directory; without a cap they
+# become the problem they were guarding against.
+pubdir="$tmproot/pubdir"; mkdir -p "$pubdir"
+cp "$realapk" "$pubdir/keep.apk"
+# Distinct mtimes matter: an earlier version of this test gave all four the same time, so
+# `ls -t` ordered them arbitrarily and the assertion proved nothing.
+hour=1
+for stamp in 20260101-0100 20260101-0200 20260101-0300 20260101-0400; do
+ printf 'old' > "$pubdir/keep.apk.$stamp.bak"
+ touch -d "2026-01-01 0$hour:00:00" "$pubdir/keep.apk.$stamp.bak"
+ hour=$((hour + 1))
+done
+out=$("$BIN/publish-apk" "$realapk" keep.apk --host "$(hostname)" --dir "$pubdir" --keep 2 2>&1)
+remaining=$(ls "$pubdir"/keep.apk.*.bak 2>/dev/null | wc -l)
+# 2 kept from before, plus the one this run made.
+if [ "$remaining" -le 3 ]; then
+ ok "prunes old backups instead of accumulating them"
+else
+ bad "backup pruning" "$remaining backups remain"
+fi
+if [ -f "$pubdir/keep.apk.20260101-0400.bak" ]; then
+ ok "keeps the most recent backups"
+else
+ bad "pruning kept the wrong ones" "newest backup was deleted"
+fi
+
printf '\n=== summary: %d passed, %d failed ===\n' "$pass" "$fail"
[ "$fail" -eq 0 ]