diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/0001-goodixmoc-fix-crash-in-exit-callback-handler.patch b/0001-goodixmoc-fix-crash-in-exit-callback-handler.patch new file mode 100644 index 0000000..c5291d5 --- /dev/null +++ b/0001-goodixmoc-fix-crash-in-exit-callback-handler.patch @@ -0,0 +1,32 @@ +From da42268911c3fc9f591783e0c3cdd4511930612a Mon Sep 17 00:00:00 2001 +From: Benjamin Berg +Date: Thu, 24 Jul 2025 08:39:54 +0200 +Subject: [PATCH] goodixmoc: fix crash in exit callback handler + +If the button shield command cannot be executed due to an underlying +error then resp is NULL. Avoid the crash by adding the appropriate +check. + +Closes: #694 +--- + libfprint/drivers/goodixmoc/goodix.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/libfprint/drivers/goodixmoc/goodix.c b/libfprint/drivers/goodixmoc/goodix.c +index 33e137f..659722a 100644 +--- a/libfprint/drivers/goodixmoc/goodix.c ++++ b/libfprint/drivers/goodixmoc/goodix.c +@@ -1483,9 +1483,7 @@ gx_fp_exit_cb (FpiDeviceGoodixMoc *self, + gxfp_cmd_response_t *resp, + GError *error) + { +- +- +- if (resp->result >= GX_FAILED) ++ if (resp && resp->result >= GX_FAILED) + fp_dbg ("Setting power button shield failed, result: 0x%x", resp->result); + self->is_power_button_shield_on = false; + gx_fp_release_interface (self, error); +-- +2.51.1 + diff --git a/libfprint.spec b/libfprint.spec index 4c20d7e..d9acf00 100644 --- a/libfprint.spec +++ b/libfprint.spec @@ -9,6 +9,9 @@ URL: http://www.freedesktop.org/wiki/Software/fprint/libfprint Source0: https://gitlab.freedesktop.org/libfprint/libfprint/-/archive/v%{version}/libfprint-v%{version}.tar.gz ExcludeArch: s390 s390x +# https://gitlab.freedesktop.org/libfprint/libfprint/-/commit/da42268911c3fc9f591783e0c3cdd4511930612a +Patch00001: 0001-goodixmoc-fix-crash-in-exit-callback-handler.patch + BuildRequires: meson BuildRequires: gcc BuildRequires: gcc-c++ @@ -40,12 +43,20 @@ Requires: %{name}%{?_isa} = %{version}-%{release} The %{name}-devel package contains libraries and header files for developing applications that use %{name}. +%package tests +Summary: Tests for the %{name} package +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description tests +The %{name}-tests package contains tests that can be used to verify +the functionality of the installed %{name} package. + %prep %autosetup -S git -n libfprint-v%{version} %build # Include the virtual image driver for integration tests -%meson -Ddrivers=all -Dinstalled-tests=false +%meson -Ddrivers=all %meson_build %install @@ -73,5 +84,9 @@ developing applications that use %{name}. %{_datadir}/gir-1.0/*.gir %{_datadir}/gtk-doc/html/libfprint-2/ +%files tests +%{_libexecdir}/installed-tests/libfprint-2/ +%{_datadir}/installed-tests/libfprint-2/ + %changelog %autochangelog diff --git a/plans/integration.fmf b/plans/integration.fmf new file mode 100644 index 0000000..05fe63a --- /dev/null +++ b/plans/integration.fmf @@ -0,0 +1,5 @@ +summary: Test for libfprint +discover: + how: fmf +execute: + how: tmt diff --git a/tests/integration/main.fmf b/tests/integration/main.fmf new file mode 100644 index 0000000..df893f0 --- /dev/null +++ b/tests/integration/main.fmf @@ -0,0 +1,11 @@ +summary: Test for libfprint +require: + - cairo-devel + - libfprint-devel + - libfprint-tests + - umockdev-devel + - python3-cairo + - python3-gobject-base + - python3-pip + - python3-packaging +test: bash ./run-umockdev.sh diff --git a/tests/run-umockdev.sh b/tests/integration/run-umockdev.sh similarity index 79% rename from tests/run-umockdev.sh rename to tests/integration/run-umockdev.sh index d8c5362..1beeca1 100755 --- a/tests/run-umockdev.sh +++ b/tests/integration/run-umockdev.sh @@ -2,7 +2,7 @@ set -u # Switch into the tests directory -cd source/tests || exit 1 +cd /usr/share/installed-tests/libfprint-2 || exit 1 # check if we need to install additional packages # which is the case if we are on RHEL 8 @@ -14,7 +14,7 @@ if [[ "$ID" = *"rhel"* ]] && [[ "$VERSION_ID" == *"8"* ]]; then pip3 install python-dbusmock fi -# Each directory in source/tests is a umockdev based test +# Each directory in /usr/share/installed-tests/libfprint-2 is a umockdev based test # discover them declare -a TESTS=() for f in *; do @@ -27,7 +27,7 @@ export FP_DEVICE_EMULATION=1 RESULT=0 for test in ${TESTS[@]}; do echo "$test" - ./umockdev-test.py "$test" + /usr/libexec/installed-tests/libfprint-2/umockdev-test.py "$test" RES=$? echo "$test finished with return code $RES" echo "" diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index ab999c2..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,23 +0,0 @@ ---- -- hosts: localhost - roles: - - role: standard-test-source - tags: - - always - required_packages: - - git - - role: standard-test-basic - tags: - - atomic - - classic - required_packages: - - python3-dbusmock - - umockdev - tests: - - virtual_image: - dir: . - run: source/tests/virtual-image.py - - umockdev: - dir: . - run: run-umockdev.sh -