From 8670eb372f2a9143488a6a8ff22015981437b4d4 Mon Sep 17 00:00:00 2001 From: jim kolpack Date: Fri, 3 Jul 2026 19:52:00 -0400 Subject: [PATCH] Add bats tests for zip_images_resize_recursive.sh --- tests/zip_images_resize_recursive.bats | 64 ++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 tests/zip_images_resize_recursive.bats diff --git a/tests/zip_images_resize_recursive.bats b/tests/zip_images_resize_recursive.bats new file mode 100644 index 0000000..3e3e73e --- /dev/null +++ b/tests/zip_images_resize_recursive.bats @@ -0,0 +1,64 @@ +#!/usr/bin/env bats + +load 'libs/bats-support/load' +load 'libs/bats-assert/load' +load 'helpers/common' + +SCRIPT="$REPO_ROOT/zip_images_resize_recursive.sh" + +setup() { + setup_mock_env +} + +teardown() { + teardown_mock_env +} + +@test "errors when argument is not a directory" { + run "$SCRIPT" /nonexistent/path + assert_failure + assert_output --partial "Error:" +} + +@test "defaults to current directory when no argument given" { + make_zip "$TEST_WORKDIR/archive.zip" "$FIXTURES/unprocessed.jpg" + run bash -c "cd '$TEST_WORKDIR' && '$SCRIPT'" + assert_success + assert_output --partial "Resized" +} + +@test "processes all ZIPs in a flat directory" { + make_zip "$TEST_WORKDIR/a.zip" "$FIXTURES/unprocessed.jpg" + make_zip "$TEST_WORKDIR/b.zip" "$FIXTURES/unprocessed.jpg" + run "$SCRIPT" "$TEST_WORKDIR" + assert_success + assert_equal "$(grep -c 'Resized' <<<"$output")" "2" +} + +@test "skips already-processed ZIPs in a flat directory" { + make_zip "$TEST_WORKDIR/done.zip" "$FIXTURES/processed.jpg" + make_zip "$TEST_WORKDIR/todo.zip" "$FIXTURES/unprocessed.jpg" + run "$SCRIPT" "$TEST_WORKDIR" + assert_success + assert_output --partial "Skipping" + assert_output --partial "Resized" +} + +@test "finds ZIPs recursively in subdirectories" { + mkdir -p "$TEST_WORKDIR/sub/deep" + make_zip "$TEST_WORKDIR/sub/a.zip" "$FIXTURES/unprocessed.jpg" + make_zip "$TEST_WORKDIR/sub/deep/b.zip" "$FIXTURES/unprocessed.jpg" + run "$SCRIPT" "$TEST_WORKDIR" + assert_success + assert_equal "$(grep -c 'Resized' <<<"$output")" "2" +} + +@test "no temp files left in /dev/shm after recursive run" { + make_zip "$TEST_WORKDIR/a.zip" "$FIXTURES/unprocessed.jpg" + make_zip "$TEST_WORKDIR/b.zip" "$FIXTURES/processed.jpg" + local before after + before=$(find /dev/shm -maxdepth 1 -name 'tmp.*' | sort) + run "$SCRIPT" "$TEST_WORKDIR" + after=$(find /dev/shm -maxdepth 1 -name 'tmp.*' | sort) + assert_equal "$before" "$after" +}