gardesk/garwarp / e6c0ab4

Browse files

add dbus activation smoke

Authored by mfwolffe <wolffemf@dukes.jmu.edu>
SHA
e6c0ab4f7c0ad88fab17d51ee6fefc0ccab1c73b
Parents
ed4d63b
Tree
9c61234

2 changed files

StatusFile+-
M README.md 1 0
A scripts/test-dbus-activation.sh 50 0
README.mdmodified
@@ -20,3 +20,4 @@ Current scaffold includes:
20
 1. Start daemon: `cargo run -p garwarp -- daemon`
20
 1. Start daemon: `cargo run -p garwarp -- daemon`
21
 2. Check health: `cargo run -p garwarpctl -- status`
21
 2. Check health: `cargo run -p garwarpctl -- status`
22
 3. Stop daemon: `cargo run -p garwarpctl -- stop`
22
 3. Stop daemon: `cargo run -p garwarpctl -- stop`
23
+4. Verify D-Bus activation: `./scripts/test-dbus-activation.sh`
scripts/test-dbus-activation.shadded
@@ -0,0 +1,50 @@
1
+#!/usr/bin/env bash
2
+set -euo pipefail
3
+
4
+repo_root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
5
+cd "$repo_root"
6
+
7
+cargo build -p garwarp -p garwarpctl >/dev/null
8
+
9
+tmp_share=$(mktemp -d)
10
+runtime_dir=$(mktemp -d)
11
+trap 'rm -rf "$tmp_share" "$runtime_dir"' EXIT
12
+
13
+mkdir -p "$tmp_share/share/dbus-1/services"
14
+cat > "$tmp_share/share/dbus-1/services/org.freedesktop.impl.portal.desktop.garwarp.service" <<SERVICE
15
+[D-BUS Service]
16
+Name=org.freedesktop.impl.portal.desktop.garwarp
17
+Exec=$repo_root/target/debug/garwarp daemon
18
+SERVICE
19
+
20
+XDG_DATA_DIRS="$tmp_share/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" \
21
+XDG_RUNTIME_DIR="$runtime_dir" \
22
+  dbus-run-session -- bash -lc '
23
+set -euo pipefail
24
+
25
+dbus-send --session --print-reply \
26
+  --dest=org.freedesktop.DBus \
27
+  /org/freedesktop/DBus \
28
+  org.freedesktop.DBus.StartServiceByName \
29
+  string:org.freedesktop.impl.portal.desktop.garwarp \
30
+  uint32:0 >/dev/null
31
+
32
+dbus-send --session --print-reply \
33
+  --dest=org.freedesktop.DBus \
34
+  /org/freedesktop/DBus \
35
+  org.freedesktop.DBus.NameHasOwner \
36
+  string:org.freedesktop.impl.portal.desktop.garwarp | rg -q "boolean true"
37
+
38
+"$0"/target/debug/garwarpctl status >/dev/null
39
+"$0"/target/debug/garwarpctl stop >/dev/null
40
+
41
+sleep 0.2
42
+
43
+dbus-send --session --print-reply \
44
+  --dest=org.freedesktop.DBus \
45
+  /org/freedesktop/DBus \
46
+  org.freedesktop.DBus.NameHasOwner \
47
+  string:org.freedesktop.impl.portal.desktop.garwarp | rg -q "boolean false"
48
+' "$repo_root"
49
+
50
+echo "dbus activation smoke test passed"