47 lines
1.8 KiB
Bash
Executable File
47 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
repo_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
|
|
fail() {
|
|
printf 'activity-state contract: %s\n' "$1" >&2
|
|
exit 1
|
|
}
|
|
|
|
activity() {
|
|
qs ipc call activity status | jq -r ".${1}"
|
|
}
|
|
|
|
event() {
|
|
qs ipc call status-events status | jq -r ".${1}"
|
|
}
|
|
|
|
cleanup() {
|
|
qs ipc call activity clear >/dev/null 2>&1 || true
|
|
qs ipc call status-events reset >/dev/null 2>&1 || true
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
qs ipc show | rg -q '^target activity$' || fail 'activity IPC target is missing'
|
|
rg -q 'StatusEvents.publish' "$repo_dir/config/dot/quickshell/services/Capture.qml" || fail 'capture does not publish recording transitions'
|
|
rg -q 'status-events screenshot' "$repo_dir/config/dot/quickshell/services/Capture.qml" || fail 'successful screenshot path does not publish an event'
|
|
rg -q 'StatusEvents.publish' "$repo_dir/config/dot/quickshell/services/NightLight.qml" || fail 'Night Light does not publish transitions'
|
|
|
|
qs ipc call status-events reset >/dev/null
|
|
qs ipc call activity fixture microphone-on >/dev/null
|
|
[[ "$(activity microphoneActive)" == "true" ]] || fail 'microphone state did not become persistent'
|
|
[[ "$(event activeKey)" == "privacy-microphone" ]] || fail 'microphone transition did not publish Signal Glass event'
|
|
|
|
qs ipc call status-events dismiss >/dev/null
|
|
[[ "$(activity microphoneActive)" == "true" ]] || fail 'capsule dismissal cleared persistent privacy state'
|
|
|
|
qs ipc call activity fixture all-off >/dev/null
|
|
[[ "$(activity microphoneActive)" == "false" ]] || fail 'microphone state did not clear'
|
|
[[ "$(event activeKey)" == "privacy-microphone" ]] || fail 'microphone release did not publish a transition'
|
|
[[ "$(event title)" == "Microphone released" ]] || fail 'microphone release copy is incorrect'
|
|
|
|
trap - EXIT
|
|
cleanup
|
|
printf 'activity-state contract: PASS\n'
|