gtk3/debian/tests/run-with-display
Simon McVittie dfa31ce3c1 d/tests, d/run-tests.sh: Copy run-with-display from gtk4
This should make the build-time tests a bit more robust, by using the
-noreset option to avoid a race condition (see #981201).
2023-01-03 12:44:55 +00:00

68 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
# vim:set sw=4 sts=4 et:
#
# Run a wrapped command in a fake display environment
#
# Copyright 2021 Marco Trevisan <marco@ubuntu.com>
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# Assume a Debian Policy §10.4-compatible shell like dash or bash (with the
# 'local' builtin)
# shellcheck disable=SC2039
set -e
me="$(basename "$0")"
usage () {
local status="${1-2}"
if [ "$status" -ne 0 ]; then
exec >&2
fi
echo "Usage: $me [wayland|x11] COMMAND [ARGS...]"
exit "$status"
}
display="$1"
case "$display" in
wayland)
shift
if [ -z "$XDG_RUNTIME_DIR" ]; then
our_xrd="$(mktemp -d -t xdg-runtime-XXXXXXXX)"
export XDG_RUNTIME_DIR="$our_xrd"
fi
if ! command -v weston > /dev/null; then
echo "No weston available"
exit 1
fi
socket="wayland-$(od -vAn -N1 -tu1 < /dev/urandom | tr -d '[:space:]')"
weston --backend=headless-backend.so --socket="$socket" --idle-time=0 2>&1 &
weston_pid=$!
trap 'kill $weston_pid; [ -n $our_xrd ] && rm -rfv $our_xrd' EXIT INT
while [ ! -S "$XDG_RUNTIME_DIR/$socket" ]; do
echo "Waiting for socket..."
sleep 1
done
env -u DISPLAY WAYLAND_DISPLAY="$XDG_RUNTIME_DIR/$socket" "$@"
exit $?
;;
x11)
shift
if ! command -v xvfb-run > /dev/null; then
echo "No xvfb-run available"
exit 1
fi
exec env -u WAYLAND_DISPLAY xvfb-run -a -s "-screen 0 1024x768x24 -noreset" "$@"
;;
-h|--help|help)
usage 0
;;
*)
usage 2
;;
esac