Bash · 855 bytes Raw Blame History
1 #!/usr/bin/env bash
2 set -euo pipefail
3
4 repo_root="$(cd "$(dirname "$0")/.." && pwd)"
5 runtime_dir="$(mktemp -d)"
6 log_file="$(mktemp)"
7
8 cleanup() {
9 rm -f "$log_file"
10 rm -rf "$runtime_dir"
11 }
12 trap cleanup EXIT
13
14 DBUS_FATAL_WARNINGS=0 dbus-run-session -- bash -lc '
15 set -euo pipefail
16 export XDG_RUNTIME_DIR="'"$runtime_dir"'"
17 cd "'"$repo_root"'"
18
19 cargo run -q -p garwarp -- daemon >"'"$log_file"'" 2>&1 &
20 pid=$!
21
22 for _ in $(seq 1 200); do
23 if dbus-send --session --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus \
24 org.freedesktop.DBus.NameHasOwner string:org.freedesktop.impl.portal.desktop.garwarp \
25 | rg -q "boolean true"; then
26 break
27 fi
28 sleep 0.05
29 done
30
31 cargo run -q -p garwarpctl -- portal-smoke >/dev/null
32 cargo run -q -p garwarpctl -- stop >/dev/null
33 wait "$pid"
34 '
35
36 printf "dbus method dispatch smoke test passed\n"