42 lines
1.3 KiB
Bash
Executable File
42 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
tmp=$(mktemp -d)
|
|
trap 'rm -rf "$tmp"' EXIT
|
|
export XDG_STATE_HOME="$tmp/state"
|
|
runtime=${1:?pass path to alarm-runtime}
|
|
|
|
test "$("$runtime" timer 2s)" = 1
|
|
test "$("$runtime" alarm "$(date +%H:%M)" Rolled Over)" = 2
|
|
test "$("$runtime" alarm "$(date -d tomorrow +%F)" 10:20 Important Meeting)" = 3
|
|
! "$runtime" timer 0m >/dev/null 2>&1
|
|
! "$runtime" alarm "$(date -d yesterday +%F)" 10:20 >/dev/null 2>&1
|
|
! "$runtime" alarm "$(date -d tomorrow +%F)" 10:20 >/dev/null 2>&1
|
|
test "$("$runtime" timer list | wc -l)" = 1
|
|
"$runtime" timer cancel 1 >/dev/null
|
|
! "$runtime" timer cancel 1 >/dev/null 2>&1
|
|
test "$("$runtime" timer list)" = "No timer events scheduled."
|
|
|
|
mkdir -p "$tmp/bin"
|
|
printf '#!/bin/sh\nprintf notify >> "$LOG"\n' > "$tmp/bin/notify-send"
|
|
printf '#!/bin/sh\nprintf sound >> "$LOG"\n' > "$tmp/bin/pw-play"
|
|
chmod +x "$tmp/bin/notify-send" "$tmp/bin/pw-play"
|
|
export PATH="$tmp/bin:$PATH" LOG="$tmp/effects"
|
|
test "$("$runtime" timer 1s)" = 4
|
|
sleep 2
|
|
set +e
|
|
timeout 2 "$runtime" scheduler
|
|
status=$?
|
|
set -e
|
|
test "$status" = 124
|
|
test ! -s "$LOG"
|
|
test "$("$runtime" timer 1s)" = 5
|
|
set +e
|
|
timeout 3 "$runtime" scheduler
|
|
status=$?
|
|
set -e
|
|
test "$status" = 124
|
|
test "$(wc -c < "$LOG")" = 11
|
|
test "$(jq '.events | length' "$XDG_STATE_HOME/alarm/events.json")" = 2
|
|
printf 'alarm/timer checks passed\n'
|