[PATCH v2 1/2] meson.bbclass: add support for running the meson tests at build time

Jose Quaresma

The generic exe_wrapper introcuced in 40349dc5 can be used to run the
meson tests when build the receipe. This patch add the meson_test task
on the meson bbclass that adds this possibility.

The exe_wrapper will run using the qemu usermode and because of that it
has some limitations, so don't expect the same results when it runs
natively on target.

Running the tests at build time is upstream way for testing but is not
possible in OE as we always croos-compile. This can be useful in some
integration processes and for debuging and it adds the possibility to
run the test in an interactive way using the devtool build for example.

There are two variable for that:
MESON_QEMU_WRAPPER_TEST_ENABLED: this enables the test when it's "1"
EXTRA_OEMESON_TEST: this is used to add extra args

Some results when using this patch in the bigest meson project
on OE-core are the folloing:

cat <<'EOF' >>conf/local.conf

bitbake -c do_meson_test -v systemd-boot

Ok: 821
Expected Fail: 0
Fail: 95
Unexpected Pass: 0
Skipped: 33
Timeout: 0

cat <<'EOF' >>conf/local.conf

bitbake -c do_meson_test -v glib-2.0

Ok: 197
Expected Fail: 0
Fail: 76
Unexpected Pass: 0
Skipped: 0
Timeout: 2

cat <<'EOF' >>conf/local.conf

bitbake -c do_meson_test -v gstreamer1.0

Ok: 95
Expected Fail: 0
Fail: 10
Unexpected Pass: 0
Skipped: 1
Timeout: 0

Signed-off-by: Jose Quaresma <quaresma.jose@...>
meta/classes/meson.bbclass | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass
index 0bfe945811..020a59a3c0 100644
--- a/meta/classes/meson.bbclass
+++ b/meta/classes/meson.bbclass
@@ -179,3 +179,19 @@ meson_do_install() {

EXPORT_FUNCTIONS do_configure do_compile do_install
+do_meson_test() {
+ bbwarn "don't expect the same results when it runs natively as it will run in qemu usermode (that has its own limitations)"
+ meson test -C ${B} ${EXTRA_OEMESON_TEST}
+do_meson_test[vardeps] += "EXTRA_OEMESON_TEST"
+MESON_QEMU_WRAPPER_RUNTEST:class-target = "${@d.getVar('MESON_QEMU_WRAPPER_TEST_ENABLED') == '1' and d.getVar('EXEWRAPPER_ENABLED') == 'True'}"
+python() {
+ if d.getVar('MESON_QEMU_WRAPPER_RUNTEST') == 'True':
+ bb.build.addtask('meson_test', 'do_install', 'do_compile', d)

Join openembedded-core@lists.openembedded.org to automatically receive all group messages.