Add bats tests for zip_images_resize_recursive.sh

This commit is contained in:
2026-07-03 19:52:00 -04:00
parent f5ed6617c5
commit 8670eb372f
+64
View File
@@ -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"
}