AtlatestRepositorysigil-wm

sigil-wm / tree / scriptstest-transaction-pixels

1#!/usr/bin/env bash
2set -euo pipefail
3cd "$(dirname "$0")/.."
4make -j2 all build/protocol-client
5mkdir -p build/receipts/transaction-pixels
6out=$PWD/build/receipts/transaction-pixels
7runtime_dir=$(mktemp -d /tmp/sigil-wm-transaction-pixels.XXXXXX)
8export XDG_RUNTIME_DIR="$runtime_dir" WLR_BACKENDS=headless WLR_RENDERER=pixman WLR_HEADLESS_OUTPUTS=1
9unset WAYLAND_DISPLAY DISPLAY
10server_pid=
11clients=()
12cleanup() {
13 for child in "${clients[@]}" "$server_pid"; do
14 [[ -z $child ]] || kill "$child" 2>/dev/null || true
15 [[ -z $child ]] || wait "$child" 2>/dev/null || true
16 done
17 rm -rf "$runtime_dir"
19trap cleanup EXIT
20timeout 40 bash scripts/run-sigil -L src eval -f test/transaction-pixels.sgl > "$out/server.log" 2>&1 &
21server_pid=$!
22for ((attempt=0; attempt<600; attempt++)); do
23 grep -q '^WAYLAND_SOCKET=' "$out/server.log" && break
24 kill -0 "$server_pid" 2>/dev/null || break
25 sleep 0.05
26done
27export WAYLAND_DISPLAY
28WAYLAND_DISPLAY=$(sed -n 's/^WAYLAND_SOCKET=//p' "$out/server.log" | head -1)
29[[ -n $WAYLAND_DISPLAY ]] || { cat "$out/server.log"; exit 1; }
30index=0
31for colour in green red; do
32 index=$((index+1))
33 SIGIL_WM_CLIENT_INPUT=1 SIGIL_WM_CLIENT_MARGIN=20,20,20,20 SIGIL_WM_CLIENT_RESIZE_DELAY_MS=500 timeout 35 build/protocol-client "$colour" 36000 > "$out/client-$index.log" 2>&1 &
34 clients+=($!)
35 for ((attempt=0; attempt<600; attempt++)); do
36 grep -q "^TRANSACTION_MAPPED=$index$" "$out/server.log" && break
37 kill -0 "$server_pid" 2>/dev/null || break
38 sleep 0.05
39 done
40 grep -q "^TRANSACTION_MAPPED=$index$" "$out/server.log" || { cat "$out/server.log"; exit 1; }
41done
42result=0
43wait "$server_pid" || result=$?
44server_pid=
45cat "$out/server.log"
46[[ $result == 0 ]]
47for child in "${clients[@]}"; do wait "$child"; done
48clients=()
49grep -q '^TRANSACTION_SNAPSHOT=PASS' "$out/server.log"
50grep -q '^PIXEL_PLAN_SCOPE=PASS' "$out/server.log"
51grep -q '^PIXEL_SCOPE=PASS' "$out/server.log"
52grep -q '^PIXEL_PLAN_CAPACITY=PASS' "$out/server.log"
53echo 'TRANSACTION_PIXELS=PASS snapshots scope ownership clean teardown'