From 126a9a00417f9f38f20fdd90161b44c5b26b8a97 Mon Sep 17 00:00:00 2001 From: zppzhangpan Date: Thu, 21 Sep 2023 14:16:41 +0800 Subject: [PATCH] enable make check --- ...est-test-suite-as-part-of-meson-test.patch | 101 ++++++++++++++++++ xkeyboard-config.spec | 11 +- 2 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 backport-run-the-pytest-test-suite-as-part-of-meson-test.patch diff --git a/backport-run-the-pytest-test-suite-as-part-of-meson-test.patch b/backport-run-the-pytest-test-suite-as-part-of-meson-test.patch new file mode 100644 index 0000000..f39c342 --- /dev/null +++ b/backport-run-the-pytest-test-suite-as-part-of-meson-test.patch @@ -0,0 +1,101 @@ +From f7e5a8c0ec9801554fec74ac8fc575523e3f6779 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +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 + +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 diff --git a/xkeyboard-config.spec b/xkeyboard-config.spec index b262b12..ecf686b 100644 --- a/xkeyboard-config.spec +++ b/xkeyboard-config.spec @@ -1,15 +1,16 @@ Name: xkeyboard-config Version: 2.39 -Release: 1 +Release: 2 Summary: The X Keyboard Extension License: MIT URL: https://www.freedesktop.org/wiki/Software/XKeyboardConfig Source0: https://xorg.freedesktop.org/archive/individual/data/%{name}/%{name}-%{version}.tar.xz +Patch6000: backport-run-the-pytest-test-suite-as-part-of-meson-test.patch BuildArch: noarch BuildRequires: gettext gettext-devel libtool libxslt perl(XML::Parser) pkgconfig(glib-2.0) xkbcomp meson -BuildRequires: pkgconfig(x11) >= 1.4.3 pkgconfig(xorg-macros) >= 1.12 pkgconfig(xproto) >= 7.0.20 +BuildRequires: pkgconfig(x11) >= 1.4.3 pkgconfig(xorg-macros) >= 1.12 pkgconfig(xproto) >= 7.0.20 pytest %description The non-arch keyboard configuration database for X Window. The goal is to @@ -48,6 +49,9 @@ sed -i 's|Taiwan)|Taiwan China)|' po/* geometry/sun rules/base.xml symbols/tw popd } +%check +%meson_test + %files %defattr(-,root,root) %doc AUTHORS @@ -65,6 +69,9 @@ sed -i 's|Taiwan)|Taiwan China)|' po/* geometry/sun rules/base.xml symbols/tw %{_mandir}/man7/xkeyboard-config.* %changelog +* Thu Sep 21 2023 zhangpan - 2.39-2 +- enable make check + * Wed Jul 19 2023 zhangpan - 2.39-1 - update to 2.39