diff options
| -rw-r--r-- | tests/wallp.bats | 25 | ||||
| -rw-r--r-- | wallp | 17 |
2 files changed, 42 insertions, 0 deletions
diff --git a/tests/wallp.bats b/tests/wallp.bats index 298067f..0ffed89 100644 --- a/tests/wallp.bats +++ b/tests/wallp.bats @@ -80,3 +80,28 @@ teardown() { [ "$?" -eq 0 ] [ "$CONF_THEME" = "sexy-splurge" ] } + +@test "resolve_theme flag wins over all" { + CONF_THEME="conf"; mkdir -p "$HOME/.config/wallp" + echo persisted > "$HOME/.config/wallp/theme" + run resolve_theme flagged + [ "$output" = "flagged" ] +} + +@test "resolve_theme persisted beats conf" { + CONF_THEME="conf"; mkdir -p "$HOME/.config/wallp" + echo persisted > "$HOME/.config/wallp/theme" + run resolve_theme '' + [ "$output" = "persisted" ] +} + +@test "resolve_theme uses conf when no persisted" { + CONF_THEME="conf" + run resolve_theme '' + [ "$output" = "conf" ] +} + +@test "persist_theme writes the file" { + persist_theme "abc" + [ "$(cat "$HOME/.config/wallp/theme")" = "abc" ] +} @@ -78,6 +78,23 @@ load_conf() { return 0 } +theme_file() { printf '%s\n' "$HOME/.config/wallp/theme"; } + +persist_theme() { + local f; f="$(theme_file)" + mkdir -p "$(dirname "$f")" + printf '%s\n' "$1" > "$f" +} + +# Precedence: flag arg > persisted file > CONF_THEME > sexy-splurge. +resolve_theme() { + local flag="$1" f; f="$(theme_file)" + if [ -n "$flag" ]; then printf '%s\n' "$flag"; return; fi + if [ -s "$f" ]; then head -n1 "$f"; return; fi + if [ -n "${CONF_THEME:-}" ]; then printf '%s\n' "$CONF_THEME"; return; fi + printf '%s\n' "sexy-splurge" +} + main() { return 0 } |
