summaryrefslogtreecommitdiff
path: root/tests/cli.sh
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-05 22:51:56 +0300
committerPaul Buetow <paul@buetow.org>2026-06-05 22:51:56 +0300
commitce3c1f9ffeffc0b57f46fc21ff1505581d0d199e (patch)
treebe1a9094abc091209178d0e656bc8809ce36054e /tests/cli.sh
parent1e1287b7ddbbda6602296c323d72d72024dd9caa (diff)
Fix tarball cleanup for custom suffixes
Diffstat (limited to 'tests/cli.sh')
-rwxr-xr-xtests/cli.sh66
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/cli.sh b/tests/cli.sh
index 66c3075..2911741 100755
--- a/tests/cli.sh
+++ b/tests/cli.sh
@@ -639,6 +639,69 @@ test_generate_default_tar_opts_create_archive() {
test::teardown
}
+test_generate_custom_tarball_suffix_cleans_previous_archive() {
+ local config_file
+ local fake_bin
+ local first_tarball
+ local second_tarball
+
+ test::setup
+ fake_bin="$TEST_TMPDIR/bin"
+ config_file="$TEST_TMPDIR/photoalbum.conf"
+
+ test::install_fake_imagemagick "$fake_bin"
+ cat > "$fake_bin/date" <<'DATE'
+#!/usr/bin/env bash
+set -euo pipefail
+
+count=0
+if [ -f "$TEST_FAKE_DATE_COUNTER" ]; then
+ count=$(<"$TEST_FAKE_DATE_COUNTER")
+fi
+count=$(( count + 1 ))
+printf '%s\n' "$count" > "$TEST_FAKE_DATE_COUNTER"
+
+if [ "${1:-}" = -u ]; then
+ printf '2026-06-05T12:00:%02dZ\n' "$count"
+else
+ printf '2026-06-05-1200%02d\n' "$count"
+fi
+DATE
+ chmod 0755 "$fake_bin/date"
+
+ PATH="$fake_bin:$PATH" \
+ test::generate_fixture_images "$TEST_TMPDIR/incoming"
+ test::write_album_config \
+ "$config_file" "$TEST_TMPDIR/incoming" "$TEST_TMPDIR/dist" \
+ 'Custom tarball suffix cleanup' 40
+ {
+ printf 'TARBALL_INCLUDE=yes\n'
+ printf 'TARBALL_SUFFIX=.tgz\n'
+ } >> "$config_file"
+
+ (
+ cd "$TEST_TMPDIR"
+ PATH="$fake_bin:$PATH" \
+ TEST_FAKE_DATE_COUNTER="$TEST_TMPDIR/date-count" \
+ "$TEST_PHOTOALBUM" --generate
+ )
+ first_tarball=$(find "$TEST_TMPDIR/dist" -maxdepth 1 -name '*.tgz' -print)
+
+ (
+ cd "$TEST_TMPDIR"
+ PATH="$fake_bin:$PATH" \
+ TEST_FAKE_DATE_COUNTER="$TEST_TMPDIR/date-count" \
+ "$TEST_PHOTOALBUM" --generate
+ )
+
+ test::assert_find_count 1 "$TEST_TMPDIR/dist" '*.tgz'
+ test::assert_path_absent "$first_tarball"
+ second_tarball=$(find "$TEST_TMPDIR/dist" -maxdepth 1 -name '*.tgz' -print)
+ test::assert_contains "$TEST_TMPDIR/dist/incoming-" "$second_tarball"
+
+ test::teardown
+}
+
test_generate_scalar_multi_tar_opts_create_archive() {
local config_file
local fake_bin
@@ -3075,6 +3138,9 @@ main() {
'--generate default TAR_OPTS creates archive' \
test_generate_default_tar_opts_create_archive
test::run_case \
+ '--generate custom TARBALL_SUFFIX cleans previous archive' \
+ test_generate_custom_tarball_suffix_cleans_previous_archive
+ test::run_case \
'--generate scalar multi-option TAR_OPTS creates archive' \
test_generate_scalar_multi_tar_opts_create_archive
test::run_case \