aboutsummaryrefslogtreecommitdiffstats
path: root/mail-overview/test-mail-notify.sh
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-09-14 12:27:41 +0200
committerDanilo M. <danix@danix.xyz>2026-09-14 12:27:41 +0200
commitd513418a2e8854bfe8702577cda6db2cbf0ce292 (patch)
tree5e95c58030058ed5d0b986d1e0f25b7e6e005b90 /mail-overview/test-mail-notify.sh
parentd203d938f005d7542bf13e217ac51917866a8ace (diff)
downloadquickshell-d513418a2e8854bfe8702577cda6db2cbf0ce292.tar.gz
quickshell-d513418a2e8854bfe8702577cda6db2cbf0ce292.zip
feat(desktop): move mail-overview in as the mail module
Accounts.qml is unchanged and MailPanel's body becomes the page. The three scripts move with it, which changes the absolute paths in autostart and in the waybar module; both are outside this repo and listed in the plan's final task. Button.qml, byte-identical here and in vm-manager, lands at the shell root as the single copy.
Diffstat (limited to 'mail-overview/test-mail-notify.sh')
-rwxr-xr-xmail-overview/test-mail-notify.sh148
1 files changed, 0 insertions, 148 deletions
diff --git a/mail-overview/test-mail-notify.sh b/mail-overview/test-mail-notify.sh
deleted file mode 100755
index 1c3e01a..0000000
--- a/mail-overview/test-mail-notify.sh
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2026 Danilo M. <danix@danix.xyz>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# The one runnable check for mail-notify.sh. No framework: it sources the
-# script as a library and asserts on the pure functions, the ones that take
-# text and print text. Nothing here calls notmuch, dunstify or inotify, which
-# is why it runs in milliseconds and needs no mail to arrive.
-#
-# Usage: ./test-mail-notify.sh (exit 0 = all passed)
-
-set -u
-
-MAIL_NOTIFY_LIB=1 . "$(dirname "$0")/mail-notify.sh"
-
-pass=0
-fail=0
-
-# Compares two strings and reports. Multi-line values are printed with their
-# newlines intact, because half the assertions here are about line structure.
-check() {
- local name="$1" want="$2" got="$3"
- if [[ "$want" == "$got" ]]; then
- pass=$((pass + 1))
- else
- fail=$((fail + 1))
- printf 'FAIL: %s\n want: %s\n got: %s\n' "$name" "$want" "$got"
- fi
-}
-
-check "library guard does not run main" "loaded" "loaded"
-
-# A config with the two traps in it: a key containing dots, and a folder
-# value containing a bracket. Both are real shapes from qtmaildir.conf, with
-# placeholder names.
-read -r -d '' fixture <<'EOF'
-[general]
-theme = dark
-
-[account.simple]
-label = Simple
-color = #112233
-
-[account.provider-first.last]
-folder = [Gmail]/Bozze
-label = Dotted
-color = #445566
-
-[account.nolabel]
-color = #778899
-
-[ui]
-label = NotAnAccount
-EOF
-
-check "keys run to the bracket, not the first dot" \
- "simple provider-first.last nolabel" \
- "$(parse_accounts <<<"$fixture" | cut -f1 | tr '\n' ' ' | sed 's/ $//')"
-
-check "a bracket in a value does not end the section" \
- "Dotted" \
- "$(parse_accounts <<<"$fixture" | awk -F'\t' '$1=="provider-first.last"{print $2}')"
-
-check "a missing label falls back to the key" \
- "nolabel" \
- "$(parse_accounts <<<"$fixture" | awk -F'\t' '$1=="nolabel"{print $2}')"
-
-check "a non-account section is not an account" \
- "" \
- "$(parse_accounts <<<"$fixture" | awk -F'\t' '$1=="ui"{print $2}')"
-
-# The shape notmuch search --format=json actually returns, trimmed to the two
-# fields the body uses.
-rows_json='[
- {"authors":"Alice Example","subject":"First subject"},
- {"authors":"Bob Example","subject":"Second subject"},
- {"authors":"Carol Example","subject":"Third subject"}
-]'
-
-check "a body lists author and subject per row" \
- "• Alice Example — First subject
-
-• Bob Example — Second subject
-
-• Carol Example — Third subject" \
- "$(build_body "$rows_json" 3)"
-
-check "a batch bigger than the rows shown is elided" \
- "• Alice Example — First subject
-
-• Bob Example — Second subject
-
-• Carol Example — Third subject
-+7 more" \
- "$(build_body "$rows_json" 10)"
-
-check "markup characters are escaped, not rendered" \
- "• A &amp; B — &lt;script&gt;" \
- "$(build_body '[{"authors":"A & B","subject":"<script>"}]' 1)"
-
-check "a missing subject says so rather than printing nothing" \
- "• Alice Example — (no subject)" \
- "$(build_body '[{"authors":"Alice Example","subject":null}]' 1)"
-
-check "malformed json yields an empty body rather than an error" \
- "" \
- "$(build_body 'not json at all' 1 2>/dev/null)"
-
-check "a newline in a subject stays on one row" \
- "• Alice Example — line one line two" \
- "$(build_body '[{"authors":"Alice Example","subject":"line one\nline two"}]' 1)"
-
-# A scratch state file, removed at exit. Never the real one: that is the
-# user's live notification position, and a test must not move it.
-tmpstate="$(mktemp)"
-trap 'rm -f "$tmpstate"' EXIT
-STATE="$tmpstate"
-
-rm -f "$tmpstate"
-check "a missing state file reports no previous revision" \
- "" "$(read_prev_rev "uuid-a")"
-
-write_state "uuid-a" 500
-check "a revision written is a revision read back" \
- "500" "$(read_prev_rev "uuid-a")"
-
-check "a different database UUID discards the revision" \
- "" "$(read_prev_rev "uuid-b")"
-
-printf 'uuid-a garbage\n' > "$tmpstate"
-check "an unparseable state file reports no previous revision" \
- "" "$(read_prev_rev "uuid-a")"
-
-write_state "uuid-a" 600
-check "a rewrite replaces rather than appends" \
- "1" "$(wc -l < "$tmpstate")"
-
-printf '\n%d passed, %d failed\n' "$pass" "$fail"
-[[ "$fail" -eq 0 ]]