#!/bin/bash # desktop-assistant tool check: mode.sh against a scratch runtime dir. # Copyright (C) 2026 Danilo M. # # 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. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # # test-mode.sh: the real modes are never touched, XDG_RUNTIME_DIR is a # throwaway directory. Prints "ok" or one FAIL line per broken case. set -u here=$(dirname "$0") XDG_RUNTIME_DIR=$(mktemp -d) export XDG_RUNTIME_DIR trap 'rm -rf "$XDG_RUNTIME_DIR"' EXIT fail=0 check() { [ "$2" = "$3" ] || { echo "FAIL $1: got '$2', want '$3'"; fail=1; }; } check "read missing" "$("$here/mode.sh" dnd "")" "dnd: off" check "set on" "$("$here/mode.sh" dnd 1)" "dnd: on" check "file written" "$(cat "$XDG_RUNTIME_DIR/status.dnd")" "1" check "set off" "$("$here/mode.sh" dnd 0)" "dnd: off" "$here/mode.sh" dnd yes >/dev/null 2>&1; check "bad value exit" "$?" "1" "$here/mode.sh" bogus 1 >/dev/null 2>&1; check "bad mode exit" "$?" "1" echo 1 > "$XDG_RUNTIME_DIR/status.gaming" check "gaming hold" "$("$here/mode.sh" presentation 0)" \ "presentation: on (held on by a running game; manual setting off)" [ $fail = 0 ] && echo "ok" exit $fail