[mutter] tests: Add headless native backend test
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] tests: Add headless native backend test
- Date: Fri, 12 Mar 2021 15:43:45 +0000 (UTC)
commit 78ba1429c8d4baba055a000838f7dbce84045dff
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Tue Jan 19 17:48:04 2021 +0100
tests: Add headless native backend test
It doesn't do anything more than construct and tear down, but it's a
start.
Don't run the test as part of CI yet, as doesn't have the DRM devices
needed.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1698>
.gitlab-ci.yml | 6 +--
meson.build | 7 +++
meson_options.txt | 6 +++
src/backends/native/meta-backend-native.h | 1 +
src/tests/meson.build | 24 ++++++++++
src/tests/native-headless.c | 75 +++++++++++++++++++++++++++++++
6 files changed, 116 insertions(+), 3 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e89e3f6065..c57faef9d0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -191,7 +191,7 @@ build-fedora-container@aarch64:
- .fdo.distribution-image@fedora
stage: build
script:
- - meson . build -Dbuildtype=debugoptimized -Db_coverage=true -Degl_device=true -Dwayland_eglstream=true
--werror --prefix /usr
+ - meson . build -Dbuildtype=debugoptimized -Db_coverage=true -Degl_device=true -Dwayland_eglstream=true
-Dnative_tests=false --werror --prefix /usr
- ninja -C build
- ninja -C build install
artifacts:
@@ -221,7 +221,7 @@ build-without-opengl-and-glx@x86_64:
needs:
- build-fedora-container@x86_64
script:
- - meson . build -Dbuildtype=debugoptimized -Dopengl=false -Dglx=false -Degl_device=true
-Dwayland_eglstream=true --werror --prefix /usr
+ - meson . build -Dbuildtype=debugoptimized -Dopengl=false -Dglx=false -Degl_device=true
-Dwayland_eglstream=true -Dnative_tests=false --werror --prefix /usr
- ninja -C build
- ninja -C build install
artifacts:
@@ -236,7 +236,7 @@ build-without-native-backend-and-wayland@x86_64:
needs:
- build-fedora-container@x86_64
script:
- - meson . build -Dbuildtype=debugoptimized -Dnative_backend=false -Dudev=false -Dwayland=false
-Dcore_tests=false --werror --prefix /usr
+ - meson . build -Dbuildtype=debugoptimized -Dnative_backend=false -Dudev=false -Dwayland=false
-Dcore_tests=false -Dnative_tests=false --werror --prefix /usr
- ninja -C build
- ninja -C build install
artifacts:
diff --git a/meson.build b/meson.build
index 4becf2b7d6..c4bfdfe25c 100644
--- a/meson.build
+++ b/meson.build
@@ -262,6 +262,7 @@ have_tests = get_option('tests')
have_core_tests = false
have_cogl_tests = false
have_clutter_tests = false
+have_native_tests = false
have_installed_tests = false
if have_tests
@@ -271,6 +272,12 @@ if have_tests
error('Tests require Wayland to be enabled')
endif
endif
+ have_native_tests = get_option('native_tests')
+ if have_native_tests
+ if not have_native_backend
+ error('Native tests require the native backend')
+ endif
+ endif
have_cogl_tests = get_option('cogl_tests')
have_clutter_tests = get_option('clutter_tests')
diff --git a/meson_options.txt b/meson_options.txt
index a0fb616367..84e7dcc6c9 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -117,6 +117,12 @@ option('core_tests',
description: 'Enable mutter core tests'
)
+option('native_tests',
+ type: 'boolean',
+ value: true,
+ description: 'Enable mutter native backend tests'
+)
+
option('tests',
type: 'boolean',
value: true,
diff --git a/src/backends/native/meta-backend-native.h b/src/backends/native/meta-backend-native.h
index 0c7df66db8..aad4c8413f 100644
--- a/src/backends/native/meta-backend-native.h
+++ b/src/backends/native/meta-backend-native.h
@@ -32,6 +32,7 @@
#include "backends/native/meta-udev.h"
#define META_TYPE_BACKEND_NATIVE (meta_backend_native_get_type ())
+META_EXPORT_TEST
G_DECLARE_FINAL_TYPE (MetaBackendNative, meta_backend_native,
META, BACKEND_NATIVE, MetaBackend)
diff --git a/src/tests/meson.build b/src/tests/meson.build
index 05c6aaf701..fbdca617c4 100644
--- a/src/tests/meson.build
+++ b/src/tests/meson.build
@@ -157,6 +157,21 @@ anonymous_file_test = executable('anonymous-file-tests',
install_dir: mutter_installed_tests_libexecdir,
)
+if have_native_tests
+ native_headless_tests = executable('mutter-native-headless-tests',
+ sources: [
+ 'native-headless.c',
+ 'test-utils.c',
+ 'test-utils.h',
+ ],
+ include_directories: tests_includepath,
+ c_args: tests_c_args,
+ dependencies: [tests_deps],
+ install: have_installed_tests,
+ install_dir: mutter_installed_tests_libexecdir,
+ )
+endif
+
stacking_tests = [
'basic-x11',
'basic-wayland',
@@ -223,3 +238,12 @@ test('anonymous-file', anonymous_file_test,
is_parallel: false,
timeout: 60,
)
+
+if have_native_tests
+ test('native-headless', native_headless_tests,
+ suite: ['core', 'mutter/native/headless'],
+ env: test_env,
+ is_parallel: false,
+ timeout: 60,
+ )
+endif
diff --git a/src/tests/native-headless.c b/src/tests/native-headless.c
new file mode 100644
index 0000000000..4929fa221c
--- /dev/null
+++ b/src/tests/native-headless.c
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2021 Red Hat Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include "backends/meta-settings-private.h"
+#include "backends/native/meta-backend-native.h"
+#include "compositor/meta-plugin-manager.h"
+#include "core/main-private.h"
+#include "meta/main.h"
+#include "meta/meta-backend.h"
+#include "tests/test-utils.h"
+
+static void
+init_tests (void)
+{
+}
+
+static gboolean
+run_tests (gpointer data)
+{
+ MetaBackend *backend = meta_get_backend ();
+ MetaSettings *settings = meta_backend_get_settings (backend);
+ gboolean ret;
+
+ meta_settings_override_experimental_features (settings);
+ meta_settings_enable_experimental_feature (
+ settings,
+ META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER);
+
+ ret = g_test_run ();
+
+ meta_quit (ret != 0);
+
+ return FALSE;
+}
+
+int
+main (int argc,
+ char **argv)
+{
+ test_init (&argc, &argv);
+ init_tests ();
+
+ meta_plugin_manager_load (test_get_plugin_name ());
+
+ meta_override_compositor_configuration (META_COMPOSITOR_TYPE_WAYLAND,
+ META_TYPE_BACKEND_NATIVE,
+ "headless", TRUE,
+ NULL);
+
+ meta_init ();
+ meta_register_with_session ();
+
+ g_idle_add (run_tests, NULL);
+
+ return meta_run ();
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]