Skip to content

Commit 7b00e72

Browse files
authored
Merge pull request #9629 from keymanapp/chore/linux/fixtests
chore(linux): Dynamically choose display number
2 parents b6154a1 + 43ae210 commit 7b00e72

File tree

2 files changed

+46
-26
lines changed

2 files changed

+46
-26
lines changed

linux/ibus-keyman/tests/scripts/run-tests.sh

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ set -eu
44
TOP_SRCDIR=${top_srcdir:-$(realpath "$(dirname "$0")/../..")}
55
TESTBASEDIR=${XDG_DATA_HOME:-$HOME/.local/share}/keyman
66
TESTDIR=${TESTBASEDIR}/test_kmx
7-
PID_FILE=/tmp/ibus-keyman-test-pids
7+
CLEANUP_FILE=/tmp/ibus-keyman-test-cleanup
8+
PID_FILE=/tmp/ibus-keyman-test.pids
89
ENV_FILE=/tmp/keyman-env.txt
910

1011
. "$(dirname "$0")"/test-helper.inc.sh
1112

1213
local_cleanup() {
13-
cleanup "$PID_FILE"
14+
cleanup "$CLEANUP_FILE"
1415
}
1516

1617
if [ -v KEYMAN_PKG_BUILD ]; then
@@ -62,7 +63,7 @@ function run_tests() {
6263

6364
G_TEST_BUILDDIR="$(dirname "$0")/../../../build/$(arch)/${CONFIG}/tests"
6465

65-
setup "$DISPLAY_SERVER" "$ENV_FILE" "$PID_FILE"
66+
setup "$DISPLAY_SERVER" "$ENV_FILE" "$CLEANUP_FILE" "$PID_FILE"
6667

6768
echo "# NOTE: When the tests fail check /tmp/ibus-engine-keyman.log and /tmp/ibus-daemon.log!"
6869
echo ""
@@ -89,7 +90,7 @@ function run_tests() {
8990
--directory "$TESTDIR" "${DISPLAY_SERVER}" ${TESTFILES[@]}
9091
echo "# Finished tests."
9192

92-
cleanup "$PID_FILE"
93+
cleanup "$CLEANUP_FILE"
9394
}
9495

9596
USE_WAYLAND=1
@@ -132,6 +133,7 @@ if [ ! -f "${G_TEST_BUILDDIR}/ibus-keyman-tests" ]; then
132133
G_TEST_BUILDDIR="${G_TEST_BUILDDIR:-../../build/$(arch)/release/tests}"
133134
fi
134135

136+
echo > "$CLEANUP_FILE"
135137
echo > "$PID_FILE"
136138
trap local_cleanup EXIT SIGINT
137139

linux/ibus-keyman/tests/scripts/test-helper.inc.sh

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ function _setup_test_dbus_server() {
152152
}
153153

154154
function _setup_display_server() {
155-
local DISPLAY_SERVER ENV_FILE CLEANUP_FILE PID_FILE PID
155+
local DISPLAY_SERVER ENV_FILE CLEANUP_FILE PID_FILE PID DISP_XVFB DISP_XEPHYR
156156
ENV_FILE=$1
157157
CLEANUP_FILE=$2
158158
PID_FILE=$3
@@ -171,33 +171,45 @@ function _setup_display_server() {
171171
mutter --wayland --headless --no-x11 --virtual-monitor 1024x768 &> "$TMPFILE" &
172172
PID=$!
173173
echo "kill -9 ${PID} || true" >> "$CLEANUP_FILE"
174-
echo "${PID}" >> "${PID_FILE}"
174+
echo "${PID} mutter" >> "${PID_FILE}"
175175
sleep 1s
176176
export WAYLAND_DISPLAY
177177
WAYLAND_DISPLAY=$(grep "Using Wayland display" "$TMPFILE" | cut -d"'" -f2)
178178
rm "$TMPFILE"
179179
echo "export WAYLAND_DISPLAY=\"$WAYLAND_DISPLAY\"" >> "$ENV_FILE"
180180
else
181181
echo "Running on X11:"
182-
echo "Starting Xvfb..."
183-
Xvfb -screen 0 1024x768x24 :33 &> /dev/null &
184-
PID=$!
182+
while true; do
183+
echo "Starting Xvfb..."
184+
DISP_XVFB=$RANDOM
185+
Xvfb -screen 0 1024x768x24 :${DISP_XVFB} &> /dev/null &
186+
PID=$!
187+
sleep 1
188+
if ps --no-headers --pid="$PID" > /dev/null; then
189+
break
190+
fi
191+
done
185192
echo "kill -9 ${PID} || true" >> "$CLEANUP_FILE"
186-
echo "${PID}" >> "${PID_FILE}"
187-
sleep 1
188-
echo "Starting Xephyr..."
189-
DISPLAY=:33 Xephyr :32 -screen 1024x768 &> /dev/null &
190-
PID=$!
193+
echo "${PID} Xvfb" >> "${PID_FILE}"
194+
while true; do
195+
echo "Starting Xephyr..."
196+
DISP_XEPHYR=$RANDOM
197+
DISPLAY=:${DISP_XVFB} Xephyr :${DISP_XEPHYR} -screen 1024x768 &> /dev/null &
198+
PID=$!
199+
sleep 1
200+
if ps --no-headers --pid="$PID" > /dev/null; then
201+
break
202+
fi
203+
done
191204
echo "kill -9 ${PID} || true" >> "$CLEANUP_FILE"
192-
echo "${PID}" >> "${PID_FILE}"
193-
sleep 1
205+
echo "${PID} Xephyr" >> "${PID_FILE}"
194206
echo "Starting metacity"
195-
metacity --display=:32 &> /dev/null &
207+
metacity --display=:${DISP_XEPHYR} &> /dev/null &
196208
PID=$!
197209
echo "kill -9 ${PID} || true" >> "$CLEANUP_FILE"
198-
echo "${PID}" >> "${PID_FILE}"
210+
echo "${PID} metacity" >> "${PID_FILE}"
199211

200-
export DISPLAY=:32
212+
export DISPLAY=:${DISP_XEPHYR}
201213
echo "export DISPLAY=\"$DISPLAY\"" >> "$ENV_FILE"
202214
fi
203215
}
@@ -239,7 +251,7 @@ function _setup_ibus() {
239251
ibus-daemon ${ARG_VERBOSE-} --daemonize --panel=disable --address=unix:abstract="${TEMP_DATA_DIR}/test-ibus" ${IBUS_CONFIG-} &> /tmp/ibus-daemon.log
240252
PID=$(pgrep -f "${TEMP_DATA_DIR}/test-ibus")
241253
echo "kill -9 ${PID} || true" >> "$CLEANUP_FILE"
242-
echo "${PID}" >> "${PID_FILE}"
254+
echo "${PID} ibus-daemon" >> "${PID_FILE}"
243255
sleep 1s
244256

245257
IBUS_ADDRESS=$(ibus address)
@@ -252,7 +264,7 @@ function _setup_ibus() {
252264
"${TOP_BINDIR}/src/ibus-engine-keyman" --testing ${ARG_VERBOSE-} &> /tmp/ibus-engine-keyman.log &
253265
PID=$!
254266
echo "kill -9 ${PID} || true" >> "$CLEANUP_FILE"
255-
echo "${PID}" >> "${PID_FILE}"
267+
echo "${PID} ibus-engine-keyman" >> "${PID_FILE}"
256268
sleep 1s
257269
}
258270

@@ -312,25 +324,31 @@ function exit_on_package_build() {
312324
}
313325

314326
function check_processes_running() {
315-
local DISPLAY_SERVER ENV_FILE CLEANUP_FILE PID_FILE PID MISSING
327+
local DISPLAY_SERVER ENV_FILE CLEANUP_FILE PID_FILE LINE PID MISSING MISSING_PROCS
316328
DISPLAY_SERVER=$1
317329
ENV_FILE=$2
318330
CLEANUP_FILE=$3
319331
PID_FILE=$4
320332
MISSING=false
333+
MISSING_PROCS=""
321334

322-
while read -r PID; do
323-
if [ -z "$PID" ]; then
335+
while read -r LINE; do
336+
if [ -z "$LINE" ]; then
324337
continue
325-
elif ! ps --no-headers --pid="$PID" > /dev/null; then
338+
fi
339+
PID=$(echo "$LINE" | cut -d' ' -f1)
340+
if ! ps --no-headers --pid="$PID" > /dev/null; then
326341
MISSING=true
342+
MISSING_PROCS="${MISSING_PROCS} $(echo "$LINE" | cut -d' ' -f2)\n"
327343
break
328344
fi
329345
done < "${PID_FILE}"
330346

331347
if $MISSING; then
332348
echo "# Some background processes no longer running. Restarting..."
333-
echo "Some background processes no longer running. Restarting..." > /tmp/debug.output
349+
echo "Some background processes no longer running:" > /tmp/debug.output
350+
echo "$MISSING_PROCS" >> /tmp/debug.output
351+
echo "Restarting..." >> /tmp/debug.output
334352
cleanup "${CLEANUP_FILE}" > /dev/null 2>&1
335353
setup "${DISPLAY_SERVER}" "${ENV_FILE}" "${CLEANUP_FILE}" "${PID_FILE}" > /dev/null 2>&1
336354
fi

0 commit comments

Comments
 (0)