[mutter] tests/wayland-unit-tests: Change to use headless backend
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] tests/wayland-unit-tests: Change to use headless backend
- Date: Sun, 19 Dec 2021 16:20:09 +0000 (UTC)
commit d111c47c886e227b2d58b3941c87d40ef472692f
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Mon Sep 6 17:04:45 2021 +0200
tests/wayland-unit-tests: Change to use headless backend
Change to use the headless backend with a virtual monitor, instead of
the nested backend. This means tests can create and use virtual input
devices, which isn't possible with the nested backend.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1993>
src/tests/meson.build | 44 +++++++++++++++++++++---------------------
src/tests/wayland-unit-tests.c | 42 ++++++++++++++++++++++++++++++++--------
2 files changed, 56 insertions(+), 30 deletions(-)
---
diff --git a/src/tests/meson.build b/src/tests/meson.build
index a074a325fb..3408d72b91 100644
--- a/src/tests/meson.build
+++ b/src/tests/meson.build
@@ -176,21 +176,6 @@ stage_view_tests = executable('mutter-stage-view-tests',
install_dir: mutter_installed_tests_libexecdir,
)
-wayland_tests = executable('mutter-wayland-tests',
- sources: [
- 'meta-wayland-test-driver.c',
- 'meta-wayland-test-driver.h',
- 'wayland-unit-tests.c',
- test_driver_server_header,
- test_driver_protocol_code,
- ],
- include_directories: tests_includes,
- c_args: tests_c_args,
- dependencies: libmutter_test_dep,
- install: have_installed_tests,
- install_dir: mutter_installed_tests_libexecdir,
-)
-
anonymous_file_test = executable('anonymous-file-tests',
sources: [
'anonymous-file.c',
@@ -273,6 +258,21 @@ if have_native_tests
install: have_installed_tests,
install_dir: mutter_installed_tests_libexecdir,
)
+
+ wayland_tests = executable('mutter-wayland-tests',
+ sources: [
+ 'meta-wayland-test-driver.c',
+ 'meta-wayland-test-driver.h',
+ 'wayland-unit-tests.c',
+ test_driver_server_header,
+ test_driver_protocol_code,
+ ],
+ include_directories: tests_includes,
+ c_args: tests_c_args,
+ dependencies: libmutter_test_dep,
+ install: have_installed_tests,
+ install_dir: mutter_installed_tests_libexecdir,
+ )
endif
stacking_tests = [
@@ -338,13 +338,6 @@ test('stage-view', stage_view_tests,
timeout: 60,
)
-test('wayland', wayland_tests,
- suite: ['core', 'mutter/unit'],
- env: test_env,
- is_parallel: false,
- timeout: 60,
-)
-
test('anonymous-file', anonymous_file_test,
suite: ['core', 'mutter/unit'],
env: test_env,
@@ -380,4 +373,11 @@ if have_native_tests
is_parallel: false,
timeout: 60,
)
+
+ test('wayland', wayland_tests,
+ suite: ['core', 'mutter/unit'],
+ env: test_env,
+ is_parallel: false,
+ timeout: 60,
+ )
endif
diff --git a/src/tests/wayland-unit-tests.c b/src/tests/wayland-unit-tests.c
index d001db2ad2..3f8c62c0c8 100644
--- a/src/tests/wayland-unit-tests.c
+++ b/src/tests/wayland-unit-tests.c
@@ -19,6 +19,7 @@
#include <gio/gio.h>
+#include "backends/meta-virtual-monitor.h"
#include "core/display-private.h"
#include "core/window-private.h"
#include "meta-test/meta-context-test.h"
@@ -33,7 +34,9 @@ typedef struct _WaylandTestClient
GMainLoop *main_loop;
} WaylandTestClient;
+static MetaContext *test_context;
static MetaWaylandTestDriver *test_driver;
+static MetaVirtualMonitor *virtual_monitor;
static char *
get_test_client_path (const char *test_client_name)
@@ -259,14 +262,33 @@ toplevel_activation (void)
}
static void
-pre_run_wayland_tests (void)
+on_before_tests (void)
{
- MetaWaylandCompositor *compositor;
-
- compositor = meta_wayland_compositor_get_default ();
- g_assert_nonnull (compositor);
+ MetaBackend *backend = meta_context_get_backend (test_context);
+ MetaMonitorManager *monitor_manager = meta_backend_get_monitor_manager (backend);
+ MetaWaylandCompositor *compositor =
+ meta_context_get_wayland_compositor (test_context);
+ g_autoptr (MetaVirtualMonitorInfo) monitor_info = NULL;
+ g_autoptr (GError) error = NULL;
test_driver = meta_wayland_test_driver_new (compositor);
+
+ monitor_info = meta_virtual_monitor_info_new (400, 400, 60.0,
+ "MetaTestVendor",
+ "MetaVirtualMonitor",
+ "0x1234");
+ virtual_monitor = meta_monitor_manager_create_virtual_monitor (monitor_manager,
+ monitor_info,
+ &error);
+ if (!virtual_monitor)
+ g_error ("Failed to create virtual monitor: %s", error->message);
+ meta_monitor_manager_reload (monitor_manager);
+}
+
+static void
+on_after_tests (void)
+{
+ g_clear_object (&virtual_monitor);
}
static void
@@ -291,14 +313,18 @@ main (int argc, char *argv[])
{
g_autoptr (MetaContext) context = NULL;
- context = meta_create_test_context (META_CONTEXT_TEST_TYPE_NESTED,
- META_CONTEXT_TEST_FLAG_TEST_CLIENT);
+ context = meta_create_test_context (META_CONTEXT_TEST_TYPE_HEADLESS,
+ META_CONTEXT_TEST_FLAG_NO_X11);
g_assert (meta_context_configure (context, &argc, &argv, NULL));
+ test_context = context;
+
init_wayland_tests ();
g_signal_connect (context, "before-tests",
- G_CALLBACK (pre_run_wayland_tests), NULL);
+ G_CALLBACK (on_before_tests), NULL);
+ g_signal_connect (context, "after-tests",
+ G_CALLBACK (on_after_tests), NULL);
return meta_context_test_run_tests (META_CONTEXT_TEST (context));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]