mutter/src/tests/x11-test.sh
Jonas Ådahl 93d1eb01a6 tests/x11: Fix replace test to catch the second instance failing
The test never noticed that the second instance never actually managed
to load; it was looping a multi second retry session trying to redirect
windows, meaning it failed to catch https://gitlab.gnome.org/GNOME/mutter/-/issues/3089.

Fix the test so that it always waits for mutter to finish loading
successfully, just like it waits fro the first.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3329>
2024-07-25 19:56:19 +02:00

51 lines
1018 B
Bash
Executable File

#!/bin/bash
set -e
MUTTER="$1"
if [ -z "$MUTTER" ]; then
echo Usage: $0 PATH-TO-MUTTER > /dev/stderr
exit 1
fi
export GDK_BACKEND=x11
export G_DEBUG=fatal-warnings
echo \# Launching mutter > /dev/stderr
$MUTTER --x11 --mutter-plugin="$MUTTER_TEST_PLUGIN_PATH" &
MUTTER1_PID=$!
gdbus wait --session org.gnome.Mutter.IdleMonitor
echo \# Launched with pid $MUTTER1_PID
sleep 2
echo Launching a couple of X11 clients > /dev/stderr
zenity --warning &
ZENITY1_PID=$!
sleep 2
zenity --info &
ZENITY2_PID=$!
sleep 4
echo \# Replacing existing mutter with a new instance > /dev/stderr
$MUTTER --x11 --replace --mutter-plugin="$MUTTER_TEST_PLUGIN_PATH" &
echo \# Launched with pid $MUTTER2_PID
MUTTER2_PID=$!
wait $MUTTER1_PID
echo \# Waiting for the second mutter to finish loading
gdbus wait --session org.gnome.Mutter.IdleMonitor
sleep 2
echo \# Terminating clients > /dev/stderr
kill $ZENITY1_PID
sleep 1
kill $ZENITY2_PID
sleep 1
echo \# Terminating mutter > /dev/stderr
kill $MUTTER2_PID
wait $MUTTER2_PID