tests: Add basic X11 WM test

This launches Xvfb, using xvfb-run, and inside tests the following:

  1. Launching 'mutter --x11' works
  2. Launching a couple of X11 clients works (doesn't crash or result in
     warnings)
  3. Launching 'mutter --x11 --replace' works
  4. Terminating works

It does this using a simple shell script.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2434>
This commit is contained in:
Jonas Ådahl 2022-05-27 17:12:46 +02:00 committed by Marge Bot
parent 16af2e407b
commit 57d3b5225e
4 changed files with 72 additions and 2 deletions

View File

@ -362,13 +362,21 @@ if have_tests
add_test_setup('plain')
xvfb = find_program('xvfb-run')
xvfb_args = [
'-a',
'-s',
'+iglx -noreset',
]
xvfb_command = [xvfb] + xvfb_args
add_test_setup('CI',
env: [
'MUTTER_DEBUG_DUMMY_MODE_SPECS=800x600@10.0',
],
exe_wrapper: [
default_test_wrappers,
find_program('xvfb-run'), '-a', '-s', '+iglx -noreset',
xvfb_command,
],
timeout_multiplier: 10,
)

View File

@ -1050,7 +1050,7 @@ libmutter_dep = declare_dependency(
],
)
executable('mutter',
mutter = executable('mutter',
sources: [
files('core/mutter.c'),
],

View File

@ -409,3 +409,18 @@ if have_kvm_tests or have_tty_tests
endforeach
endif
endif
if have_x11
test('x11', xvfb,
args: [
xvfb_args,
find_program('x11-test.sh').full_path(),
mutter.full_path(),
],
depends: [mutter],
suite: ['core', 'mutter/x11'],
env: test_env,
is_parallel: false,
timeout: 60,
)
endif

47
src/tests/x11-test.sh Executable file
View File

@ -0,0 +1,47 @@
#!/usr/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
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