2021-05-06 17:37:35 -04:00
|
|
|
mutter_test_sources = [
|
2021-03-03 04:57:40 -05:00
|
|
|
'meta-backend-test.c',
|
|
|
|
'meta-backend-test.h',
|
|
|
|
'meta-context-test.c',
|
|
|
|
'meta-gpu-test.c',
|
|
|
|
'meta-gpu-test.h',
|
|
|
|
'meta-monitor-manager-test.c',
|
|
|
|
'meta-monitor-manager-test.h',
|
2022-01-28 10:28:32 -05:00
|
|
|
'meta-monitor-test-utils.c',
|
|
|
|
'meta-monitor-test-utils.h',
|
2022-01-28 02:33:50 -05:00
|
|
|
'meta-ref-test.c',
|
|
|
|
'meta-ref-test.h',
|
2020-05-04 13:22:35 -04:00
|
|
|
'meta-sensors-proxy-mock.c',
|
|
|
|
'meta-sensors-proxy-mock.h',
|
2023-02-02 10:18:54 -05:00
|
|
|
'meta-test-monitor.c',
|
2021-04-20 12:39:53 -04:00
|
|
|
'meta-test-utils.c',
|
|
|
|
'meta-test-utils.h',
|
2021-03-03 04:57:40 -05:00
|
|
|
]
|
|
|
|
|
2021-05-06 17:37:35 -04:00
|
|
|
libmutter_test_name = 'mutter-test-' + libmutter_api_version
|
|
|
|
|
2022-08-04 12:53:56 -04:00
|
|
|
cogl_test_utils = files (
|
|
|
|
'cogl-test-utils.c',
|
|
|
|
'cogl-test-utils.h',
|
|
|
|
)
|
|
|
|
|
2019-07-03 07:43:25 -04:00
|
|
|
clutter_test_utils = files (
|
|
|
|
'clutter-test-utils.c',
|
|
|
|
'clutter-test-utils.h',
|
|
|
|
)
|
|
|
|
|
2021-05-06 17:37:35 -04:00
|
|
|
tests_includepath = include_directories('.')
|
|
|
|
tests_includes = mutter_includes
|
Add meson build support
This commit adds meson build support to mutter. It takes a step away
from the three separate code bases with three different autotools setups
into a single meson build system. There are still places that can be
unified better, for example by removing various "config.h" style files
from cogl and clutter, centralizing debug C flags and other configurable
macros, and similar artifacts that are there only because they were once
separate code bases.
There are some differences between the autotools setup and the new
meson. Here are a few:
The meson setup doesn't generate wrapper scripts for various cogl and
clutter test cases. What these tests did was more or less generate a
tiny script that called an executable with a test name as the argument.
To run particular tests, just run the test executable with the name of
the test as the argument.
The meson setup doesn't install test files anymore. The autotools test
suite was designed towards working with installed tests, but it didn't
really still, and now with meson, it doesn't install anything at all,
but instead makes sure that everything runs with the uninstalled input
files, binaries and libraries when running the test suite. Installable
tests may come later.
Tests from cogl, clutter and mutter are run on 'meson test'. In
autotools, only cogl and clutter tests were run on 'make check'.
2018-05-22 09:55:35 -04:00
|
|
|
tests_c_args = mutter_c_args
|
|
|
|
|
2023-02-02 10:14:37 -05:00
|
|
|
subdir('meta-test')
|
|
|
|
|
Add meson build support
This commit adds meson build support to mutter. It takes a step away
from the three separate code bases with three different autotools setups
into a single meson build system. There are still places that can be
unified better, for example by removing various "config.h" style files
from cogl and clutter, centralizing debug C flags and other configurable
macros, and similar artifacts that are there only because they were once
separate code bases.
There are some differences between the autotools setup and the new
meson. Here are a few:
The meson setup doesn't generate wrapper scripts for various cogl and
clutter test cases. What these tests did was more or less generate a
tiny script that called an executable with a test name as the argument.
To run particular tests, just run the test executable with the name of
the test as the argument.
The meson setup doesn't install test files anymore. The autotools test
suite was designed towards working with installed tests, but it didn't
really still, and now with meson, it doesn't install anything at all,
but instead makes sure that everything runs with the uninstalled input
files, binaries and libraries when running the test suite. Installable
tests may come later.
Tests from cogl, clutter and mutter are run on 'meson test'. In
autotools, only cogl and clutter tests were run on 'make check'.
2018-05-22 09:55:35 -04:00
|
|
|
tests_deps = [
|
|
|
|
libmutter_cogl_dep,
|
|
|
|
libmutter_clutter_dep,
|
2023-02-05 04:53:14 -05:00
|
|
|
libmutter_dep,
|
|
|
|
mutter_deps,
|
Add meson build support
This commit adds meson build support to mutter. It takes a step away
from the three separate code bases with three different autotools setups
into a single meson build system. There are still places that can be
unified better, for example by removing various "config.h" style files
from cogl and clutter, centralizing debug C flags and other configurable
macros, and similar artifacts that are there only because they were once
separate code bases.
There are some differences between the autotools setup and the new
meson. Here are a few:
The meson setup doesn't generate wrapper scripts for various cogl and
clutter test cases. What these tests did was more or less generate a
tiny script that called an executable with a test name as the argument.
To run particular tests, just run the test executable with the name of
the test as the argument.
The meson setup doesn't install test files anymore. The autotools test
suite was designed towards working with installed tests, but it didn't
really still, and now with meson, it doesn't install anything at all,
but instead makes sure that everything runs with the uninstalled input
files, binaries and libraries when running the test suite. Installable
tests may come later.
Tests from cogl, clutter and mutter are run on 'meson test'. In
autotools, only cogl and clutter tests were run on 'make check'.
2018-05-22 09:55:35 -04:00
|
|
|
]
|
|
|
|
|
2021-05-06 17:37:35 -04:00
|
|
|
libmutter_test = shared_library(libmutter_test_name,
|
|
|
|
mutter_test_sources,
|
|
|
|
gnu_symbol_visibility: 'hidden',
|
|
|
|
include_directories: tests_includes,
|
2022-04-28 10:09:11 -04:00
|
|
|
c_args: [
|
|
|
|
tests_c_args,
|
|
|
|
'-DG_LOG_DOMAIN="libmutter-test"',
|
|
|
|
],
|
2021-05-06 17:37:35 -04:00
|
|
|
dependencies: tests_deps,
|
|
|
|
install_rpath: pkglibdir,
|
|
|
|
install_dir: libdir,
|
|
|
|
install: true,
|
|
|
|
)
|
|
|
|
|
|
|
|
libmutter_test_dep = declare_dependency(
|
|
|
|
link_with: libmutter_test,
|
|
|
|
include_directories: tests_includes,
|
|
|
|
dependencies: tests_deps,
|
|
|
|
)
|
|
|
|
|
2023-02-02 10:14:37 -05:00
|
|
|
if have_introspection
|
|
|
|
mutter_test_introspected_sources = []
|
|
|
|
foreach source: mutter_test_sources
|
|
|
|
if source.endswith('.c')
|
|
|
|
mutter_test_introspected_sources += source
|
|
|
|
endif
|
|
|
|
endforeach
|
|
|
|
|
|
|
|
libmutter_test_gir = gnome.generate_gir(libmutter_test,
|
|
|
|
sources: [
|
|
|
|
mutter_test_introspected_sources,
|
|
|
|
mutter_test_public_headers,
|
|
|
|
],
|
|
|
|
nsversion: libmutter_api_version,
|
|
|
|
namespace: 'MetaTest',
|
|
|
|
symbol_prefix: 'meta',
|
|
|
|
identifier_prefix: 'Meta',
|
|
|
|
includes: [
|
|
|
|
'GObject-2.0',
|
|
|
|
'GDesktopEnums-3.0',
|
|
|
|
'xlib-2.0',
|
|
|
|
'xfixes-4.0',
|
|
|
|
libmutter_cogl_gir[0],
|
|
|
|
libmutter_cogl_pango_gir[0],
|
|
|
|
libmutter_clutter_gir[0],
|
|
|
|
libmutter_gir[0],
|
|
|
|
],
|
|
|
|
dependencies: [
|
|
|
|
libmutter_test_dep,
|
2023-02-04 06:17:38 -05:00
|
|
|
libmutter_dep,
|
|
|
|
mutter_deps,
|
2023-02-02 10:14:37 -05:00
|
|
|
],
|
|
|
|
extra_args: mutter_c_args + introspection_args,
|
|
|
|
install_dir_gir: pkglibdir,
|
|
|
|
install_dir_typelib: pkglibdir,
|
|
|
|
install: true
|
|
|
|
)
|
|
|
|
endif
|
|
|
|
|
2021-05-06 17:37:35 -04:00
|
|
|
pkg.generate(libmutter_test,
|
|
|
|
name: 'Meta (test framework)',
|
|
|
|
filebase: 'libmutter-test-' + libmutter_api_version,
|
|
|
|
description: 'Mutter test framework',
|
|
|
|
subdirs: pkgname,
|
|
|
|
requires: ['libmutter-' + libmutter_api_version],
|
|
|
|
version: meson.project_version(),
|
|
|
|
variables: [
|
|
|
|
'apiversion=' + libmutter_api_version,
|
2022-08-16 09:50:33 -04:00
|
|
|
'tests_datadir=${prefix}/share/mutter-' + libmutter_api_version + '/tests',
|
2021-05-06 17:37:35 -04:00
|
|
|
],
|
|
|
|
install_dir: pcdir,
|
|
|
|
)
|
|
|
|
|
2022-08-04 12:53:56 -04:00
|
|
|
if have_cogl_tests
|
|
|
|
subdir('cogl')
|
|
|
|
endif
|
|
|
|
|
2021-05-06 17:37:35 -04:00
|
|
|
if have_clutter_tests
|
|
|
|
subdir('clutter')
|
|
|
|
endif
|
|
|
|
|
2023-01-27 05:41:26 -05:00
|
|
|
subdir('protocol')
|
2019-12-06 13:05:32 -05:00
|
|
|
subdir('wayland-test-clients')
|
|
|
|
|
2018-12-17 10:26:07 -05:00
|
|
|
if have_installed_tests
|
|
|
|
stacking_files_datadir = join_paths(pkgdatadir, 'tests')
|
|
|
|
install_subdir('stacking', install_dir: stacking_files_datadir)
|
|
|
|
endif
|
|
|
|
|
Add meson build support
This commit adds meson build support to mutter. It takes a step away
from the three separate code bases with three different autotools setups
into a single meson build system. There are still places that can be
unified better, for example by removing various "config.h" style files
from cogl and clutter, centralizing debug C flags and other configurable
macros, and similar artifacts that are there only because they were once
separate code bases.
There are some differences between the autotools setup and the new
meson. Here are a few:
The meson setup doesn't generate wrapper scripts for various cogl and
clutter test cases. What these tests did was more or less generate a
tiny script that called an executable with a test name as the argument.
To run particular tests, just run the test executable with the name of
the test as the argument.
The meson setup doesn't install test files anymore. The autotools test
suite was designed towards working with installed tests, but it didn't
really still, and now with meson, it doesn't install anything at all,
but instead makes sure that everything runs with the uninstalled input
files, binaries and libraries when running the test suite. Installable
tests may come later.
Tests from cogl, clutter and mutter are run on 'meson test'. In
autotools, only cogl and clutter tests were run on 'make check'.
2018-05-22 09:55:35 -04:00
|
|
|
test_env = environment()
|
2022-02-09 04:35:53 -05:00
|
|
|
|
|
|
|
test_env_variables = {
|
|
|
|
'G_TEST_SRCDIR': join_paths(mutter_srcdir, 'src'),
|
|
|
|
'G_TEST_BUILDDIR': mutter_builddir,
|
|
|
|
'MUTTER_TEST_PLUGIN_PATH': '@0@'.format(default_plugin.full_path()),
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach name, value: test_env_variables
|
|
|
|
test_env.set(name, value)
|
|
|
|
endforeach
|
Add meson build support
This commit adds meson build support to mutter. It takes a step away
from the three separate code bases with three different autotools setups
into a single meson build system. There are still places that can be
unified better, for example by removing various "config.h" style files
from cogl and clutter, centralizing debug C flags and other configurable
macros, and similar artifacts that are there only because they were once
separate code bases.
There are some differences between the autotools setup and the new
meson. Here are a few:
The meson setup doesn't generate wrapper scripts for various cogl and
clutter test cases. What these tests did was more or less generate a
tiny script that called an executable with a test name as the argument.
To run particular tests, just run the test executable with the name of
the test as the argument.
The meson setup doesn't install test files anymore. The autotools test
suite was designed towards working with installed tests, but it didn't
really still, and now with meson, it doesn't install anything at all,
but instead makes sure that everything runs with the uninstalled input
files, binaries and libraries when running the test suite. Installable
tests may come later.
Tests from cogl, clutter and mutter are run on 'meson test'. In
autotools, only cogl and clutter tests were run on 'make check'.
2018-05-22 09:55:35 -04:00
|
|
|
|
|
|
|
test_client = executable('mutter-test-client',
|
|
|
|
sources: ['test-client.c'],
|
2021-05-06 17:37:35 -04:00
|
|
|
include_directories: tests_includes,
|
2022-04-28 10:09:11 -04:00
|
|
|
c_args: [
|
|
|
|
tests_c_args,
|
|
|
|
'-DG_LOG_DOMAIN="mutter-test-client"',
|
|
|
|
],
|
Add meson build support
This commit adds meson build support to mutter. It takes a step away
from the three separate code bases with three different autotools setups
into a single meson build system. There are still places that can be
unified better, for example by removing various "config.h" style files
from cogl and clutter, centralizing debug C flags and other configurable
macros, and similar artifacts that are there only because they were once
separate code bases.
There are some differences between the autotools setup and the new
meson. Here are a few:
The meson setup doesn't generate wrapper scripts for various cogl and
clutter test cases. What these tests did was more or less generate a
tiny script that called an executable with a test name as the argument.
To run particular tests, just run the test executable with the name of
the test as the argument.
The meson setup doesn't install test files anymore. The autotools test
suite was designed towards working with installed tests, but it didn't
really still, and now with meson, it doesn't install anything at all,
but instead makes sure that everything runs with the uninstalled input
files, binaries and libraries when running the test suite. Installable
tests may come later.
Tests from cogl, clutter and mutter are run on 'meson test'. In
autotools, only cogl and clutter tests were run on 'make check'.
2018-05-22 09:55:35 -04:00
|
|
|
dependencies: [
|
|
|
|
gtk3_dep,
|
|
|
|
gio_unix_dep,
|
2018-11-12 22:04:22 -05:00
|
|
|
x11_dep,
|
Add meson build support
This commit adds meson build support to mutter. It takes a step away
from the three separate code bases with three different autotools setups
into a single meson build system. There are still places that can be
unified better, for example by removing various "config.h" style files
from cogl and clutter, centralizing debug C flags and other configurable
macros, and similar artifacts that are there only because they were once
separate code bases.
There are some differences between the autotools setup and the new
meson. Here are a few:
The meson setup doesn't generate wrapper scripts for various cogl and
clutter test cases. What these tests did was more or less generate a
tiny script that called an executable with a test name as the argument.
To run particular tests, just run the test executable with the name of
the test as the argument.
The meson setup doesn't install test files anymore. The autotools test
suite was designed towards working with installed tests, but it didn't
really still, and now with meson, it doesn't install anything at all,
but instead makes sure that everything runs with the uninstalled input
files, binaries and libraries when running the test suite. Installable
tests may come later.
Tests from cogl, clutter and mutter are run on 'meson test'. In
autotools, only cogl and clutter tests were run on 'make check'.
2018-05-22 09:55:35 -04:00
|
|
|
xext_dep,
|
2022-05-09 05:48:57 -04:00
|
|
|
graphene_dep,
|
|
|
|
json_glib_dep,
|
|
|
|
gsettings_desktop_schemas_dep,
|
Add meson build support
This commit adds meson build support to mutter. It takes a step away
from the three separate code bases with three different autotools setups
into a single meson build system. There are still places that can be
unified better, for example by removing various "config.h" style files
from cogl and clutter, centralizing debug C flags and other configurable
macros, and similar artifacts that are there only because they were once
separate code bases.
There are some differences between the autotools setup and the new
meson. Here are a few:
The meson setup doesn't generate wrapper scripts for various cogl and
clutter test cases. What these tests did was more or less generate a
tiny script that called an executable with a test name as the argument.
To run particular tests, just run the test executable with the name of
the test as the argument.
The meson setup doesn't install test files anymore. The autotools test
suite was designed towards working with installed tests, but it didn't
really still, and now with meson, it doesn't install anything at all,
but instead makes sure that everything runs with the uninstalled input
files, binaries and libraries when running the test suite. Installable
tests may come later.
Tests from cogl, clutter and mutter are run on 'meson test'. In
autotools, only cogl and clutter tests were run on 'make check'.
2018-05-22 09:55:35 -04:00
|
|
|
],
|
2018-12-17 10:26:07 -05:00
|
|
|
install: have_installed_tests,
|
|
|
|
install_dir: mutter_installed_tests_libexecdir,
|
2022-08-17 11:47:49 -04:00
|
|
|
install_rpath: pkglibdir,
|
Add meson build support
This commit adds meson build support to mutter. It takes a step away
from the three separate code bases with three different autotools setups
into a single meson build system. There are still places that can be
unified better, for example by removing various "config.h" style files
from cogl and clutter, centralizing debug C flags and other configurable
macros, and similar artifacts that are there only because they were once
separate code bases.
There are some differences between the autotools setup and the new
meson. Here are a few:
The meson setup doesn't generate wrapper scripts for various cogl and
clutter test cases. What these tests did was more or less generate a
tiny script that called an executable with a test name as the argument.
To run particular tests, just run the test executable with the name of
the test as the argument.
The meson setup doesn't install test files anymore. The autotools test
suite was designed towards working with installed tests, but it didn't
really still, and now with meson, it doesn't install anything at all,
but instead makes sure that everything runs with the uninstalled input
files, binaries and libraries when running the test suite. Installable
tests may come later.
Tests from cogl, clutter and mutter are run on 'meson test'. In
autotools, only cogl and clutter tests were run on 'make check'.
2018-05-22 09:55:35 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
test_runner = executable('mutter-test-runner',
|
|
|
|
sources: [
|
|
|
|
'test-runner.c',
|
|
|
|
],
|
2021-05-06 17:37:35 -04:00
|
|
|
include_directories: tests_includes,
|
2022-04-28 10:09:11 -04:00
|
|
|
c_args: [
|
|
|
|
tests_c_args,
|
|
|
|
'-DG_LOG_DOMAIN="mutter-test-runner"',
|
|
|
|
],
|
2021-05-06 17:37:35 -04:00
|
|
|
dependencies: libmutter_test_dep,
|
2018-12-17 10:26:07 -05:00
|
|
|
install: have_installed_tests,
|
|
|
|
install_dir: mutter_installed_tests_libexecdir,
|
2022-08-17 11:47:49 -04:00
|
|
|
install_rpath: pkglibdir,
|
Add meson build support
This commit adds meson build support to mutter. It takes a step away
from the three separate code bases with three different autotools setups
into a single meson build system. There are still places that can be
unified better, for example by removing various "config.h" style files
from cogl and clutter, centralizing debug C flags and other configurable
macros, and similar artifacts that are there only because they were once
separate code bases.
There are some differences between the autotools setup and the new
meson. Here are a few:
The meson setup doesn't generate wrapper scripts for various cogl and
clutter test cases. What these tests did was more or less generate a
tiny script that called an executable with a test name as the argument.
To run particular tests, just run the test executable with the name of
the test as the argument.
The meson setup doesn't install test files anymore. The autotools test
suite was designed towards working with installed tests, but it didn't
really still, and now with meson, it doesn't install anything at all,
but instead makes sure that everything runs with the uninstalled input
files, binaries and libraries when running the test suite. Installable
tests may come later.
Tests from cogl, clutter and mutter are run on 'meson test'. In
autotools, only cogl and clutter tests were run on 'make check'.
2018-05-22 09:55:35 -04:00
|
|
|
)
|
|
|
|
|
2021-12-10 17:49:48 -05:00
|
|
|
meta_dbus_runner = find_program('meta-dbus-runner.py')
|
|
|
|
|
2022-08-16 09:50:33 -04:00
|
|
|
tests_datadir = join_paths(pkgdatadir, 'tests')
|
|
|
|
|
|
|
|
install_data('mutter_dbusrunner.py',
|
|
|
|
install_dir: tests_datadir,
|
|
|
|
)
|
|
|
|
install_subdir('dbusmock-templates',
|
|
|
|
install_dir: tests_datadir,
|
|
|
|
)
|
|
|
|
|
2020-05-04 13:22:35 -04:00
|
|
|
if have_installed_tests
|
2022-08-16 09:50:33 -04:00
|
|
|
configure_file(
|
|
|
|
input: 'mutter-installed-dbus-session.py.in',
|
|
|
|
output: 'mutter-installed-dbus-session.py',
|
|
|
|
configuration: {'tests_datadir': tests_datadir},
|
|
|
|
install: true,
|
|
|
|
install_mode: 'rwxr-xr-x',
|
2020-05-04 13:22:35 -04:00
|
|
|
install_dir: mutter_installed_tests_libexecdir,
|
|
|
|
)
|
|
|
|
endif
|
|
|
|
|
2022-01-28 11:32:58 -05:00
|
|
|
wayland_test_utils = [
|
|
|
|
'meta-wayland-test-driver.c',
|
|
|
|
'meta-wayland-test-driver.h',
|
|
|
|
'meta-wayland-test-utils.c',
|
|
|
|
'meta-wayland-test-utils.h',
|
|
|
|
test_driver_server_header,
|
|
|
|
test_driver_protocol_code,
|
|
|
|
]
|
2022-01-14 16:16:46 -05:00
|
|
|
|
2022-01-28 11:32:58 -05:00
|
|
|
# The test_cases is a list of dictionaries each one representing one test case.
|
|
|
|
# It consists of the following keys:
|
|
|
|
# - 'name' - the test name
|
|
|
|
# - 'suite' - the test suite
|
|
|
|
# - 'sources' - a list of source code files
|
|
|
|
|
|
|
|
test_cases = []
|
|
|
|
privileged_test_cases = []
|
|
|
|
|
|
|
|
test_cases += [
|
|
|
|
{
|
|
|
|
'name': 'unit',
|
|
|
|
'suite': 'unit',
|
|
|
|
'sources': [
|
|
|
|
'unit-tests.c',
|
|
|
|
'boxes-tests.c',
|
|
|
|
'boxes-tests.h',
|
|
|
|
'monitor-config-migration-unit-tests.c',
|
|
|
|
'monitor-config-migration-unit-tests.h',
|
|
|
|
'monitor-store-unit-tests.c',
|
|
|
|
'monitor-store-unit-tests.h',
|
|
|
|
'monitor-transform-tests.c',
|
|
|
|
'monitor-transform-tests.h',
|
|
|
|
'orientation-manager-unit-tests.c',
|
2021-01-26 11:07:09 -05:00
|
|
|
],
|
2022-01-28 11:32:58 -05:00
|
|
|
},
|
|
|
|
{
|
|
|
|
'name': 'monitor-unit',
|
|
|
|
'suite': 'backend',
|
|
|
|
'sources': [ 'monitor-unit-tests.c', ],
|
|
|
|
},
|
2022-07-26 18:25:22 -04:00
|
|
|
{
|
|
|
|
'name': 'monitor-utils',
|
|
|
|
'suite': 'unit',
|
|
|
|
'sources': [ 'monitor-util-tests.c', ],
|
|
|
|
},
|
2022-01-28 11:32:58 -05:00
|
|
|
{
|
|
|
|
'name': 'headless-start',
|
|
|
|
'suite': 'backend',
|
|
|
|
'sources': [ 'headless-start-test.c', ],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
'name': 'stage-views',
|
|
|
|
'suite': 'compositor',
|
|
|
|
'sources': [ 'stage-view-tests.c', ],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
'name': 'anonymous-file',
|
|
|
|
'suite': 'unit',
|
|
|
|
'sources': [ 'anonymous-file.c', ],
|
|
|
|
},
|
2022-03-25 15:15:31 -04:00
|
|
|
{
|
|
|
|
'name': 'edid',
|
|
|
|
'suite': 'unit',
|
|
|
|
'sources': [ 'edid-tests.c', ],
|
|
|
|
},
|
2021-11-29 11:27:27 -05:00
|
|
|
{
|
|
|
|
'name': 'color-management',
|
|
|
|
'suite': 'unit',
|
|
|
|
'sources': [ 'color-management-tests.c', ],
|
|
|
|
},
|
2022-09-13 12:28:41 -04:00
|
|
|
{
|
|
|
|
'name': 'color-management-profile-conflict',
|
|
|
|
'suite': 'unit',
|
|
|
|
'sources': [ 'color-management-profile-conflict-test.c', ],
|
|
|
|
},
|
2022-01-28 11:32:58 -05:00
|
|
|
]
|
2021-02-01 14:32:27 -05:00
|
|
|
|
2022-01-28 11:32:58 -05:00
|
|
|
if have_native_tests
|
2021-02-01 14:32:27 -05:00
|
|
|
screen_cast_client = executable('mutter-screen-cast-client',
|
|
|
|
sources: [
|
|
|
|
'screen-cast-client.c',
|
2023-01-27 10:42:15 -05:00
|
|
|
built_dbus_sources['meta-dbus-remote-desktop'],
|
|
|
|
built_dbus_sources['meta-dbus-screen-cast'],
|
2021-02-01 14:32:27 -05:00
|
|
|
],
|
2021-05-06 17:37:35 -04:00
|
|
|
include_directories: tests_includes,
|
2022-04-28 10:09:11 -04:00
|
|
|
c_args: [
|
|
|
|
tests_c_args,
|
|
|
|
'-DG_LOG_DOMAIN="mutter-screen-cast-client"',
|
|
|
|
],
|
2021-02-01 14:32:27 -05:00
|
|
|
dependencies: [
|
|
|
|
gio_dep,
|
|
|
|
libpipewire_dep,
|
|
|
|
],
|
|
|
|
install: have_installed_tests,
|
|
|
|
install_dir: mutter_installed_tests_libexecdir,
|
2022-08-17 11:47:49 -04:00
|
|
|
install_rpath: pkglibdir,
|
2021-02-01 14:32:27 -05:00
|
|
|
)
|
2021-02-03 05:01:13 -05:00
|
|
|
|
2022-01-28 11:32:58 -05:00
|
|
|
# Native backend tests
|
|
|
|
test_cases += [
|
|
|
|
{
|
|
|
|
'name': 'kms-utils',
|
|
|
|
'suite': 'backends/native',
|
|
|
|
'sources': [ 'kms-utils-unit-tests.c', ],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
'name': 'native-unit',
|
|
|
|
'suite': 'backends/native',
|
|
|
|
'sources': [
|
|
|
|
'native-headless.c',
|
|
|
|
'native-screen-cast.c',
|
|
|
|
'native-screen-cast.h',
|
|
|
|
'native-virtual-monitor.c',
|
|
|
|
'native-virtual-monitor.h',
|
|
|
|
],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
'name': 'pointer-constraints',
|
|
|
|
'suite': 'backends/native',
|
|
|
|
'sources': [ 'native-pointer-constraints.c' ],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
'name': 'ref-test-sanity',
|
|
|
|
'suite': 'backends/native',
|
|
|
|
'sources': [ 'ref-test-sanity.c' ],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
'name': 'persistent-virtual-monitor',
|
|
|
|
'suite': 'backends/native',
|
|
|
|
'sources': [ 'native-persistent-virtual-monitor.c' ],
|
|
|
|
},
|
|
|
|
]
|
2021-05-17 13:18:08 -04:00
|
|
|
|
2021-06-28 05:51:57 -04:00
|
|
|
# KMS tests
|
|
|
|
kms_test_variants = []
|
|
|
|
kms_atomic_variables = {'MUTTER_DEBUG_FORCE_KMS_MODE': 'atomic'}
|
|
|
|
kms_simple_variables = {'MUTTER_DEBUG_FORCE_KMS_MODE': 'simple'}
|
|
|
|
kms_variants = [
|
|
|
|
['atomic', kms_atomic_variables],
|
|
|
|
['simple', kms_simple_variables],
|
|
|
|
]
|
|
|
|
foreach variant: kms_variants
|
|
|
|
name = variant[0]
|
|
|
|
variables = variant[1]
|
|
|
|
suffix = '-@0@'.format(name)
|
|
|
|
|
|
|
|
kms_test_env_variables = test_env_variables + variables
|
|
|
|
kms_test_variants += [[suffix, kms_test_env_variables]]
|
|
|
|
endforeach
|
|
|
|
|
|
|
|
kms_test_cases = [
|
|
|
|
{
|
|
|
|
'name': 'kms-force-atomic-sanity',
|
|
|
|
'suite': 'backends/native/kms',
|
|
|
|
'sources': [
|
|
|
|
'native-kms-force-atomic-sanity.c',
|
|
|
|
],
|
|
|
|
'variants': [['', test_env_variables + kms_atomic_variables]],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
'name': 'kms-force-simple-sanity',
|
|
|
|
'suite': 'backends/native/kms',
|
|
|
|
'sources': [
|
|
|
|
'native-kms-force-simple-sanity.c',
|
|
|
|
],
|
|
|
|
'variants': [['', test_env_variables + kms_simple_variables]],
|
|
|
|
},
|
2022-01-28 11:32:58 -05:00
|
|
|
{
|
|
|
|
'name': 'kms-render',
|
|
|
|
'suite': 'backends/native/kms',
|
2022-05-13 16:09:35 -04:00
|
|
|
'sources': [
|
|
|
|
'native-kms-render.c',
|
|
|
|
wayland_test_utils,
|
|
|
|
],
|
2021-06-28 05:51:57 -04:00
|
|
|
'variants': kms_test_variants,
|
2022-01-28 11:32:58 -05:00
|
|
|
},
|
|
|
|
{
|
|
|
|
'name': 'kms-device',
|
|
|
|
'suite': 'backends/native/kms',
|
|
|
|
'sources': [
|
|
|
|
'meta-kms-test-utils.c',
|
|
|
|
'meta-kms-test-utils.h',
|
|
|
|
'native-kms-device.c',
|
|
|
|
],
|
2021-06-28 05:51:57 -04:00
|
|
|
'variants': kms_test_variants,
|
2022-01-28 11:32:58 -05:00
|
|
|
},
|
|
|
|
{
|
|
|
|
'name': 'kms-update',
|
|
|
|
'suite': 'backends/native/kms',
|
|
|
|
'sources': [
|
|
|
|
'meta-kms-test-utils.c',
|
|
|
|
'meta-kms-test-utils.h',
|
|
|
|
'native-kms-updates.c',
|
|
|
|
],
|
2021-06-28 05:51:57 -04:00
|
|
|
'variants': kms_test_variants,
|
2022-01-28 11:32:58 -05:00
|
|
|
},
|
|
|
|
]
|
2021-06-16 05:34:12 -04:00
|
|
|
|
2021-06-28 05:51:57 -04:00
|
|
|
privileged_test_cases += kms_test_cases
|
|
|
|
|
2022-01-28 11:32:58 -05:00
|
|
|
# Wayland tests
|
|
|
|
test_cases += [
|
|
|
|
{
|
|
|
|
'name': 'wayland-unit',
|
|
|
|
'suite': 'wayland',
|
|
|
|
'sources': [
|
|
|
|
'wayland-unit-tests.c',
|
2023-01-27 09:16:14 -05:00
|
|
|
dummy_client_header,
|
|
|
|
dummy_server_header,
|
|
|
|
dummy_protocol_code,
|
2022-01-28 11:32:58 -05:00
|
|
|
wayland_test_utils,
|
|
|
|
],
|
|
|
|
},
|
2022-03-04 09:04:59 -05:00
|
|
|
{
|
|
|
|
'name': 'wayland-fullscreen',
|
|
|
|
'suite': 'wayland',
|
|
|
|
'sources': [
|
|
|
|
'wayland-fullscreen-test.c',
|
|
|
|
wayland_test_utils,
|
|
|
|
],
|
|
|
|
},
|
2023-01-26 16:53:56 -05:00
|
|
|
{
|
|
|
|
'name': 'wayland-client-tests',
|
|
|
|
'suite': 'wayland',
|
|
|
|
'sources': [
|
|
|
|
'wayland-client-tests.c',
|
|
|
|
],
|
|
|
|
},
|
2022-01-28 11:32:58 -05:00
|
|
|
]
|
2022-12-02 06:41:52 -05:00
|
|
|
if have_xwayland
|
|
|
|
test_cases += [
|
|
|
|
{
|
|
|
|
'name': 'xwayland',
|
|
|
|
'suite': 'wayland',
|
|
|
|
'sources': [
|
|
|
|
'xwayland-tests.c',
|
|
|
|
],
|
|
|
|
},
|
|
|
|
]
|
|
|
|
endif
|
2021-06-23 04:10:35 -04:00
|
|
|
|
2022-01-28 11:32:58 -05:00
|
|
|
foreach test_case: test_cases
|
|
|
|
test_executable = executable('mutter-' + test_case['name'],
|
|
|
|
sources: test_case['sources'],
|
|
|
|
include_directories: tests_includes,
|
2022-04-28 10:09:11 -04:00
|
|
|
c_args: [
|
|
|
|
tests_c_args,
|
|
|
|
'-DG_LOG_DOMAIN="mutter-@0@-test"'.format(test_case['name']),
|
|
|
|
],
|
2022-01-28 11:32:58 -05:00
|
|
|
dependencies: libmutter_test_dep,
|
|
|
|
install: have_installed_tests,
|
|
|
|
install_dir: mutter_installed_tests_libexecdir,
|
2022-08-17 11:47:49 -04:00
|
|
|
install_rpath: pkglibdir,
|
2022-01-28 11:32:58 -05:00
|
|
|
)
|
|
|
|
|
|
|
|
test(test_case['name'], test_executable,
|
|
|
|
suite: ['core', 'mutter/' + test_case['suite']],
|
|
|
|
env: test_env,
|
|
|
|
is_parallel: false,
|
|
|
|
timeout: 60,
|
|
|
|
)
|
|
|
|
endforeach
|
2021-01-19 11:48:04 -05:00
|
|
|
endif
|
|
|
|
|
2018-11-13 20:36:35 -05:00
|
|
|
stacking_tests = [
|
|
|
|
'basic-x11',
|
|
|
|
'basic-wayland',
|
|
|
|
'client-side-decorated',
|
|
|
|
'closed-transient',
|
2020-06-26 15:32:39 -04:00
|
|
|
'closed-transient-no-default-focus',
|
2018-11-13 01:48:53 -05:00
|
|
|
'closed-transient-no-input-no-take-focus-parent',
|
|
|
|
'closed-transient-no-input-no-take-focus-parents',
|
|
|
|
'closed-transient-no-input-parent',
|
2018-11-13 18:08:34 -05:00
|
|
|
'closed-transient-no-input-parent-delayed-focus-default-cancelled',
|
window-x11: Use any focusable window as fallback delayed focus window
As per commit f71151a5 we focus an input window if no take-focus-window accepts
it. This might lead to an infinite loop if there are various focusable but
non-input windows in the stack.
When the current focus window is unmanaging and we're trying to focus a
WM_TAKE_FOCUS window, we intent to give the focus to the first focusable input
window in the stack.
However, if an application (such as the Java ones) only uses non-input
WM_TAKE_FOCUS windows, are not requesting these ones to get the focus. This
might lead to a state where no window is focused, or a wrong one is.
So, instead of only focus the first eventually input window available, try to
request to all the take-focus windows that are in the stack between the
destroyed one and the first input one to acquire the input focus.
Use a queue to keep track of those windows, that is passed around stealing
ownership, while we protect for unmanaged queued windows.
Also, reduce the default timeout value, as the previous one might lead to an
excessive long wait.
Added metatests verifying these situations.
Closes: https://gitlab.gnome.org/GNOME/mutter/issues/660
https://gitlab.gnome.org/GNOME/mutter/merge_requests/669
2019-07-03 06:04:08 -04:00
|
|
|
'closed-transient-no-input-parents',
|
|
|
|
'closed-transient-no-input-parents-queued-default-focus-destroyed',
|
|
|
|
'closed-transient-only-take-focus-parents',
|
2018-11-13 20:36:35 -05:00
|
|
|
'minimized',
|
|
|
|
'mixed-windows',
|
|
|
|
'set-parent',
|
|
|
|
'override-redirect',
|
2019-10-28 23:22:19 -04:00
|
|
|
'set-override-redirect-parent',
|
2018-11-13 20:36:35 -05:00
|
|
|
'set-parent-exported',
|
2020-04-02 10:20:34 -04:00
|
|
|
'restore-size',
|
2020-04-02 12:22:34 -04:00
|
|
|
'unmaximize-new-size',
|
2020-04-02 12:28:24 -04:00
|
|
|
'fullscreen-maximize',
|
2021-10-29 15:34:09 -04:00
|
|
|
'unfullscreen-strut-change',
|
2020-04-02 13:26:16 -04:00
|
|
|
'restore-position',
|
2020-04-06 06:12:02 -04:00
|
|
|
'default-size',
|
2020-12-16 17:27:19 -05:00
|
|
|
'modals',
|
2021-07-02 04:14:48 -04:00
|
|
|
'map-fixed-size',
|
2021-11-18 11:24:55 -05:00
|
|
|
'client-resize-respect-constraints',
|
2022-08-03 17:10:00 -04:00
|
|
|
'map-on-hotplug',
|
2022-07-07 09:47:10 -04:00
|
|
|
'workspace-basic',
|
|
|
|
'workspace-test',
|
2022-07-09 06:30:23 -04:00
|
|
|
'always-on-top',
|
2022-07-13 12:21:56 -04:00
|
|
|
'focus-default-window-globally-active-input',
|
2023-01-03 21:46:33 -05:00
|
|
|
'workspace-unmanaging-window',
|
2022-12-07 15:28:45 -05:00
|
|
|
'click-to-focus-and-raise',
|
2022-12-07 17:05:29 -05:00
|
|
|
'workspace-only-on-primary-focus',
|
2018-11-13 20:36:35 -05:00
|
|
|
]
|
Add meson build support
This commit adds meson build support to mutter. It takes a step away
from the three separate code bases with three different autotools setups
into a single meson build system. There are still places that can be
unified better, for example by removing various "config.h" style files
from cogl and clutter, centralizing debug C flags and other configurable
macros, and similar artifacts that are there only because they were once
separate code bases.
There are some differences between the autotools setup and the new
meson. Here are a few:
The meson setup doesn't generate wrapper scripts for various cogl and
clutter test cases. What these tests did was more or less generate a
tiny script that called an executable with a test name as the argument.
To run particular tests, just run the test executable with the name of
the test as the argument.
The meson setup doesn't install test files anymore. The autotools test
suite was designed towards working with installed tests, but it didn't
really still, and now with meson, it doesn't install anything at all,
but instead makes sure that everything runs with the uninstalled input
files, binaries and libraries when running the test suite. Installable
tests may come later.
Tests from cogl, clutter and mutter are run on 'meson test'. In
autotools, only cogl and clutter tests were run on 'make check'.
2018-05-22 09:55:35 -04:00
|
|
|
|
2018-11-13 20:36:35 -05:00
|
|
|
foreach stacking_test: stacking_tests
|
|
|
|
test(stacking_test, test_runner,
|
|
|
|
suite: ['core', 'mutter/stacking'],
|
|
|
|
env: test_env,
|
|
|
|
args: [
|
|
|
|
files(join_paths('stacking', stacking_test + '.metatest')),
|
|
|
|
],
|
|
|
|
is_parallel: false,
|
|
|
|
timeout: 60,
|
|
|
|
)
|
2022-12-18 08:28:40 -05:00
|
|
|
|
|
|
|
if have_installed_tests
|
|
|
|
installed_tests_cdata = configuration_data()
|
|
|
|
installed_tests_cdata.set('apiversion', libmutter_api_version)
|
|
|
|
installed_tests_cdata.set('libexecdir', libexecdir)
|
|
|
|
installed_tests_cdata.set('tests_datadir', tests_datadir)
|
|
|
|
installed_tests_cdata.set('stacking_test', stacking_test)
|
|
|
|
|
|
|
|
configure_file(
|
|
|
|
input: 'stacking.test.in',
|
|
|
|
output: stacking_test + '.test',
|
|
|
|
configuration: installed_tests_cdata,
|
|
|
|
install: true,
|
|
|
|
install_dir: mutter_installed_tests_datadir,
|
|
|
|
)
|
|
|
|
endif
|
2018-11-13 20:36:35 -05:00
|
|
|
endforeach
|
Add meson build support
This commit adds meson build support to mutter. It takes a step away
from the three separate code bases with three different autotools setups
into a single meson build system. There are still places that can be
unified better, for example by removing various "config.h" style files
from cogl and clutter, centralizing debug C flags and other configurable
macros, and similar artifacts that are there only because they were once
separate code bases.
There are some differences between the autotools setup and the new
meson. Here are a few:
The meson setup doesn't generate wrapper scripts for various cogl and
clutter test cases. What these tests did was more or less generate a
tiny script that called an executable with a test name as the argument.
To run particular tests, just run the test executable with the name of
the test as the argument.
The meson setup doesn't install test files anymore. The autotools test
suite was designed towards working with installed tests, but it didn't
really still, and now with meson, it doesn't install anything at all,
but instead makes sure that everything runs with the uninstalled input
files, binaries and libraries when running the test suite. Installable
tests may come later.
Tests from cogl, clutter and mutter are run on 'meson test'. In
autotools, only cogl and clutter tests were run on 'make check'.
2018-05-22 09:55:35 -04:00
|
|
|
|
2021-12-13 04:39:45 -05:00
|
|
|
if have_kvm_tests or have_tty_tests
|
2022-01-28 11:32:58 -05:00
|
|
|
privileged_tests = []
|
|
|
|
foreach test_case: privileged_test_cases
|
2021-06-28 05:51:57 -04:00
|
|
|
if test_case.has_key('variants')
|
|
|
|
variants = test_case['variants']
|
|
|
|
else
|
|
|
|
variants = [['', test_env_variables, []]]
|
|
|
|
endif
|
|
|
|
|
2022-01-28 11:32:58 -05:00
|
|
|
test_executable = executable('mutter-' + test_case['name'],
|
|
|
|
sources: test_case['sources'],
|
|
|
|
include_directories: tests_includes,
|
2022-04-28 10:09:11 -04:00
|
|
|
c_args: [
|
|
|
|
tests_c_args,
|
|
|
|
'-DG_LOG_DOMAIN="mutter-@0@-test"'.format(test_case['name']),
|
|
|
|
],
|
2022-01-28 11:32:58 -05:00
|
|
|
dependencies: libmutter_test_dep,
|
|
|
|
install: have_installed_tests,
|
|
|
|
install_dir: mutter_installed_tests_libexecdir,
|
2022-08-17 11:47:49 -04:00
|
|
|
install_rpath: pkglibdir,
|
2022-01-28 11:32:58 -05:00
|
|
|
)
|
2021-06-28 05:51:57 -04:00
|
|
|
|
|
|
|
foreach variant: variants
|
|
|
|
variant_env = environment()
|
|
|
|
foreach name, value: variant[1]
|
|
|
|
variant_env.set(name, value)
|
|
|
|
endforeach
|
|
|
|
privileged_tests += [
|
|
|
|
{
|
|
|
|
'name': '@0@@1@'.format(test_case['name'], variant[0]),
|
|
|
|
'suite': test_case['suite'],
|
|
|
|
'executable': test_executable,
|
|
|
|
'variables': variant[1],
|
|
|
|
'env': variant_env,
|
|
|
|
},
|
|
|
|
]
|
|
|
|
endforeach
|
2022-01-28 11:32:58 -05:00
|
|
|
endforeach
|
2021-12-10 17:49:48 -05:00
|
|
|
|
|
|
|
if have_kvm_tests
|
|
|
|
subdir('kvm')
|
|
|
|
endif
|
2021-12-13 04:39:45 -05:00
|
|
|
|
|
|
|
if have_tty_tests
|
2022-01-28 11:32:58 -05:00
|
|
|
foreach test_case: privileged_tests
|
|
|
|
test('tty-' + test_case['name'], test_case['executable'],
|
|
|
|
suite: ['core', 'mutter/tty', 'mutter/tty/' + test_case['suite']],
|
2021-06-28 05:51:57 -04:00
|
|
|
env: test_case['env'],
|
2021-12-13 04:39:45 -05:00
|
|
|
is_parallel: false,
|
|
|
|
timeout: 60,
|
|
|
|
)
|
|
|
|
endforeach
|
|
|
|
endif
|
2021-01-19 11:48:04 -05:00
|
|
|
endif
|
2022-05-27 11:12:46 -04:00
|
|
|
|
|
|
|
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
|
2022-06-01 07:30:27 -04:00
|
|
|
|
2022-06-27 04:41:35 -04:00
|
|
|
tools_test_env = test_env
|
|
|
|
tools_test_env.set('G_DEBUG', 'fatal-warnings')
|
|
|
|
|
2022-06-27 04:40:57 -04:00
|
|
|
test('get-state-tool-gio', mutter,
|
2022-06-01 07:30:27 -04:00
|
|
|
args: [
|
|
|
|
'--headless',
|
|
|
|
'--mutter-plugin=@0@'.format(default_plugin.full_path()),
|
|
|
|
'--virtual-monitor', '800x600',
|
2022-06-27 04:41:35 -04:00
|
|
|
'--wayland-display', 'get-state-gio',
|
2022-06-01 07:30:27 -04:00
|
|
|
get_state_tool.full_path(),
|
|
|
|
],
|
|
|
|
suite: ['tools'],
|
2022-06-27 04:41:35 -04:00
|
|
|
env: tools_test_env,
|
2022-06-01 07:30:27 -04:00
|
|
|
is_parallel: false,
|
|
|
|
timeout: 60,
|
|
|
|
)
|
2022-06-27 04:40:57 -04:00
|
|
|
|
|
|
|
test('get-state-tool-gdbus', mutter,
|
|
|
|
args: [
|
|
|
|
'--headless',
|
|
|
|
'--mutter-plugin=@0@'.format(default_plugin.full_path()),
|
|
|
|
'--virtual-monitor', '800x600',
|
2022-06-27 04:41:35 -04:00
|
|
|
'--wayland-display', 'get-state-gdbus',
|
2022-06-27 04:40:57 -04:00
|
|
|
'--',
|
|
|
|
get_state_tool.full_path(),
|
|
|
|
'--gdbus',
|
|
|
|
],
|
|
|
|
suite: ['tools'],
|
2022-06-27 04:41:35 -04:00
|
|
|
env: tools_test_env,
|
2022-06-27 04:40:57 -04:00
|
|
|
is_parallel: false,
|
|
|
|
timeout: 60,
|
|
|
|
)
|