Files
Panama/tests/quickshell/focus-session-expiry.sh
T

42 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
fail() {
printf 'focus-session expiry: %s\n' "$1" >&2
exit 1
}
cleanup() {
qs ipc call focus end >/dev/null 2>&1 || true
}
trap cleanup EXIT
qs ipc call focus end >/dev/null 2>&1 || true
qs ipc call focus start >/dev/null
state_file=$(find "${XDG_STATE_HOME:-$HOME/.local/state}/quickshell/by-shell" -name focus-session.json -print -quit)
[[ -n "$state_file" ]] || fail 'persistent state file was not created'
expired=$(mktemp "${state_file}.expired.XXXXXX")
jq '.paused = false | .deadlineMs = 1' "$state_file" >"$expired"
chmod --reference="$state_file" "$expired"
mv "$expired" "$state_file"
qs kill >/dev/null
qs --daemonize >/dev/null
status=""
for _ in $(seq 1 60); do
status=$(qs ipc call focus status 2>/dev/null || true)
if jq -e '.active == false' <<<"$status" >/dev/null 2>&1; then
break
fi
sleep 0.2
done
jq -e '.active == false and .caffeine == false and .doNotDisturb == false' <<<"$status" >/dev/null || fail 'expired session was not completed and released'
trap - EXIT
printf 'focus-session expiry: PASS\n'