102 lines
3.3 KiB
Diff
102 lines
3.3 KiB
Diff
|
|
From f7e5a8c0ec9801554fec74ac8fc575523e3f6779 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||
|
|
Date: Thu, 29 Jun 2023 10:17:16 +1000
|
||
|
|
Subject: [PATCH] meson: run the pytest test suite as part of meson test
|
||
|
|
|
||
|
|
If pytest is available, run the test suite during meson test.
|
||
|
|
This requires a bit of fiddling around because the test suite expects
|
||
|
|
the XKB directory to be properly laid out but that doesn't happen with
|
||
|
|
meson until install. Luckily all we need to do here is copy our KcCGST
|
||
|
|
directories over to the build directory and then we can use that as
|
||
|
|
XKB_CONFIG_ROOT for pytest.
|
||
|
|
|
||
|
|
An optional hook for pytest-xdist is integrated too - on my machine the
|
||
|
|
test run goes from 25s to 10s with xdist on -n auto. This does require
|
||
|
|
a conftest.py so we don't hog all the cores available on the CI runners.
|
||
|
|
|
||
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||
|
|
|
||
|
|
Reference:https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/commit/f7e5a8c0ec9801554fec74ac8fc575523e3f6779
|
||
|
|
Conflict:NA
|
||
|
|
|
||
|
|
---
|
||
|
|
meson.build | 28 ++++++++++++++++++++++++++++
|
||
|
|
tests/conftest.py | 16 ++++++++++++++++
|
||
|
|
tests/copydir.sh | 5 +++++
|
||
|
|
3 files changed, 49 insertions(+)
|
||
|
|
create mode 100644 tests/conftest.py
|
||
|
|
create mode 100755 tests/copydir.sh
|
||
|
|
|
||
|
|
diff --git a/meson.build b/meson.build
|
||
|
|
index 91a4b4c3..4bb3a08d 100644
|
||
|
|
--- a/meson.build
|
||
|
|
+++ b/meson.build
|
||
|
|
@@ -58,4 +58,32 @@ if xsltproc.found()
|
||
|
|
|
||
|
|
endif
|
||
|
|
|
||
|
|
+# pytest suite
|
||
|
|
+pymod = import('python')
|
||
|
|
+python = pymod.find_installation('python3',
|
||
|
|
+ modules: ['pytest'],
|
||
|
|
+ required: false)
|
||
|
|
+pytest = find_program('pytest-3', 'pytest', required: false)
|
||
|
|
+enable_pytest = python.found() and pytest.found()
|
||
|
|
+if enable_pytest
|
||
|
|
+ pytest_args = ['--verbose', '--log-level=DEBUG']
|
||
|
|
+ # use pytest xdist if available, it really speeds up the tests cases
|
||
|
|
+ optional_python_modules = ['xdist']
|
||
|
|
+ if pymod.find_installation('python3', modules: optional_python_modules, required: false).found()
|
||
|
|
+ pytest_args += ['-n', 'auto']
|
||
|
|
+ endif
|
||
|
|
+
|
||
|
|
+ # copy our data files over to the build directory so we can use the
|
||
|
|
+ # builddir as XKB_CONFIG_ROOT
|
||
|
|
+ foreach dir: ['compat', 'geometry', 'keycodes', 'symbols', 'types']
|
||
|
|
+ run_command('tests/copydir.sh', dir, check: true)
|
||
|
|
+ endforeach
|
||
|
|
+
|
||
|
|
+ test('pytest', pytest,
|
||
|
|
+ args: pytest_args,
|
||
|
|
+ env: ['XKB_CONFIG_ROOT=@0@'.format(meson.build_root())],
|
||
|
|
+ workdir: meson.source_root(),
|
||
|
|
+ timeout: 60)
|
||
|
|
+endif
|
||
|
|
+
|
||
|
|
subdir('po')
|
||
|
|
diff --git a/tests/conftest.py b/tests/conftest.py
|
||
|
|
new file mode 100644
|
||
|
|
index 00000000..9befeb7a
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/tests/conftest.py
|
||
|
|
@@ -0,0 +1,16 @@
|
||
|
|
+import os
|
||
|
|
+import sys
|
||
|
|
+from pathlib import Path
|
||
|
|
+
|
||
|
|
+tests_dir = Path(__file__).parent.resolve()
|
||
|
|
+sys.path.insert(0, str(tests_dir))
|
||
|
|
+
|
||
|
|
+try:
|
||
|
|
+ import xdist # noqa: F401
|
||
|
|
+
|
||
|
|
+ # Otherwise we get unknown hook 'pytest_xdist_auto_num_workers'
|
||
|
|
+ def pytest_xdist_auto_num_workers(config):
|
||
|
|
+ return os.getenv("FDO_CI_CONCURRENT", None)
|
||
|
|
+
|
||
|
|
+except ImportError:
|
||
|
|
+ pass
|
||
|
|
diff --git a/tests/copydir.sh b/tests/copydir.sh
|
||
|
|
new file mode 100755
|
||
|
|
index 00000000..6f48c1fc
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/tests/copydir.sh
|
||
|
|
@@ -0,0 +1,5 @@
|
||
|
|
+#!/bin/sh -ex
|
||
|
|
+
|
||
|
|
+dir="$1"
|
||
|
|
+mkdir -p "$MESON_BUILD_ROOT/$MESON_SUBDIR"
|
||
|
|
+cp -r "$MESON_SOURCE_ROOT/$MESON_SUBDIR/$dir/" "$MESON_BUILD_ROOT/$MESON_SUBDIR/"
|
||
|
|
--
|
||
|
|
GitLab
|