Projects
Mega:24.03
xkeyboard-config
_service:tar_scm:backport-run-the-pytest-test-s...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-run-the-pytest-test-suite-as-part-of-meson-test.patch of Package xkeyboard-config
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
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2