summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-02 22:19:38 +0300
committerPaul Buetow <paul@buetow.org>2026-06-02 22:19:38 +0300
commiteff352ff2c1f9b0578a5884e3e0d81b1a26c6031 (patch)
tree20bb5312911b4eef544f0c5cbf19f643e87177f8 /tests
parent7557532c88f086106fb2ff52b07e73dfc68e9ee6 (diff)
Add CLI config overrides for mi0
Diffstat (limited to 'tests')
-rwxr-xr-xtests/cli.sh139
1 files changed, 139 insertions, 0 deletions
diff --git a/tests/cli.sh b/tests/cli.sh
index 6608c34..3dadc7b 100755
--- a/tests/cli.sh
+++ b/tests/cli.sh
@@ -159,6 +159,23 @@ test_clean_with_config() {
teardown
}
+test_clean_cli_dist_overrides_config() {
+ local config_file
+
+ setup
+ config_file="$TEST_TMPDIR/photoalbum.conf"
+ printf 'DIST_DIR=%q/config-dist\n' "$TEST_TMPDIR" > "$config_file"
+ mkdir -p "$TEST_TMPDIR/config-dist" "$TEST_TMPDIR/cli-dist"
+
+ (
+ cd "$TEST_TMPDIR"
+ "$PHOTOALBUM" --clean --dist "$TEST_TMPDIR/cli-dist"
+ test -d "$TEST_TMPDIR/config-dist"
+ test ! -e "$TEST_TMPDIR/cli-dist"
+ )
+ teardown
+}
+
test_clean_missing_config_fails() {
local output
@@ -195,6 +212,116 @@ test_generate_with_config_missing_incoming_fails() {
teardown
}
+test_generate_cli_overrides_config_values() {
+ local config_file
+ local fake_bin
+ local page_html
+ local view_html
+
+ setup
+ fake_bin="$TEST_TMPDIR/bin"
+ config_file="$TEST_TMPDIR/photoalbum.conf"
+
+ mkdir -p "$fake_bin" "$TEST_TMPDIR/cli-incoming"
+ cat > "$fake_bin/magick" <<'MAGICK'
+#!/usr/bin/env bash
+set -euo pipefail
+
+dest="${@: -1}"
+mkdir -p "$(dirname "$dest")"
+printf 'fake image\n' > "$dest"
+MAGICK
+ chmod 0755 "$fake_bin/magick"
+ printf 'fake image\n' > "$TEST_TMPDIR/cli-incoming/01.jpg"
+ printf 'fake image\n' > "$TEST_TMPDIR/cli-incoming/02.jpg"
+
+ {
+ printf 'TITLE=%q\n' 'Config title'
+ printf 'THUMBHEIGHT=10\n'
+ printf 'HEIGHT=20\n'
+ printf 'MAXPREVIEWS=40\n'
+ printf 'SHUFFLE=yes\n'
+ printf 'INCOMING_DIR=%q/config-incoming\n' "$TEST_TMPDIR"
+ printf 'DIST_DIR=%q/config-dist\n' "$TEST_TMPDIR"
+ printf 'TEMPLATE_DIR=%q/config-template\n' "$TEST_TMPDIR"
+ printf 'TARBALL_INCLUDE=yes\n'
+ } > "$config_file"
+
+ (
+ cd "$TEST_TMPDIR"
+ PATH="$fake_bin:$PATH" "$PHOTOALBUM" \
+ --generate \
+ --incoming "$TEST_TMPDIR/cli-incoming" \
+ --dist "$TEST_TMPDIR/cli-dist" \
+ --template "$REPO_ROOT/share/templates/default" \
+ --title 'CLI title' \
+ --height 456 \
+ --thumbheight 45 \
+ --maxpreviews 1 \
+ --no-shuffle \
+ --no-tarball
+ )
+
+ page_html=$(<"$TEST_TMPDIR/cli-dist/html/page-1.html")
+ view_html=$(<"$TEST_TMPDIR/cli-dist/html/1-1.html")
+
+ test -f "$TEST_TMPDIR/cli-dist/photos/01.jpg"
+ test -f "$TEST_TMPDIR/cli-dist/photos/02.jpg"
+ test ! -e "$TEST_TMPDIR/config-dist"
+ test ! -e "$TEST_TMPDIR/cli-dist/cli-incoming-"*.tar
+ assert_contains '<title>CLI title</title>' "$page_html"
+ assert_contains 'height: 45px;' "$page_html"
+ assert_contains 'max-height: 456px;' "$view_html"
+ assert_contains 'Next 1 pictures' "$page_html"
+ assert_not_contains 'Config title' "$page_html"
+
+ teardown
+}
+
+test_generate_cli_tarball_overrides_config() {
+ local config_file
+ local fake_bin
+ local tarball_count
+
+ setup
+ fake_bin="$TEST_TMPDIR/bin"
+ config_file="$TEST_TMPDIR/photoalbum.conf"
+
+ mkdir -p "$fake_bin" "$TEST_TMPDIR/incoming"
+ cat > "$fake_bin/magick" <<'MAGICK'
+#!/usr/bin/env bash
+set -euo pipefail
+
+dest="${@: -1}"
+mkdir -p "$(dirname "$dest")"
+printf 'fake image\n' > "$dest"
+MAGICK
+ chmod 0755 "$fake_bin/magick"
+ printf 'fake image\n' > "$TEST_TMPDIR/incoming/01.jpg"
+
+ {
+ printf 'TITLE=%q\n' 'Tarball override'
+ printf 'THUMBHEIGHT=30\n'
+ printf 'HEIGHT=120\n'
+ printf 'MAXPREVIEWS=40\n'
+ printf 'INCOMING_DIR=%q/incoming\n' "$TEST_TMPDIR"
+ printf 'DIST_DIR=%q/dist\n' "$TEST_TMPDIR"
+ printf 'TEMPLATE_DIR=%q/share/templates/default\n' "$REPO_ROOT"
+ printf 'TARBALL_INCLUDE=no\n'
+ } > "$config_file"
+
+ (
+ cd "$TEST_TMPDIR"
+ PATH="$fake_bin:$PATH" "$PHOTOALBUM" --generate --tarball
+ )
+
+ tarball_count=$(find "$TEST_TMPDIR/dist" -maxdepth 1 -name '*.tar' \
+ | wc -l)
+ test "$tarball_count" -eq 1
+
+ teardown
+}
+
test_generate_missing_incoming_fails() {
setup
{
@@ -400,6 +527,11 @@ test_extra_args_fail() {
assert_failure 'extra operand is rejected' "$PHOTOALBUM" --version extra
assert_failure 'unsupported option is rejected' "$PHOTOALBUM" --unknown
assert_failure 'missing config value is rejected' "$PHOTOALBUM" --config
+ assert_failure 'missing incoming value is rejected' "$PHOTOALBUM" --incoming
+ assert_failure 'missing title value is rejected' "$PHOTOALBUM" --title
+ assert_failure \
+ '--incoming is rejected with --version' \
+ "$PHOTOALBUM" --version --incoming /tmp/incoming
assert_failure \
'--config is rejected with --init' \
"$PHOTOALBUM" --init --config custom.conf
@@ -412,11 +544,18 @@ main() {
run_test '--init succeeds' test_init
run_test '--clean succeeds' test_clean
run_test '--clean --config succeeds' test_clean_with_config
+ run_test '--clean --dist overrides config' test_clean_cli_dist_overrides_config
run_test '--clean missing config fails clearly' test_clean_missing_config_fails
run_test \
'--generate --config reads selected config' \
test_generate_with_config_missing_incoming_fails
run_test \
+ '--generate CLI options override config' \
+ test_generate_cli_overrides_config_values
+ run_test \
+ '--generate --tarball overrides config' \
+ test_generate_cli_tarball_overrides_config
+ run_test \
'--generate missing incoming fails' \
test_generate_missing_incoming_fails
run_test \