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

Message ID 20220220000805.1567335-1-quaresma.jose@gmail.com
State New
Headers show
Series [1/2] meson.bbclass: add support for running the meson tests at build time | expand

Commit Message

Jose Quaresma Feb. 20, 2022, 12:08 a.m. UTC
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, one big limitation that causes many test to fail
is that it don't support the fork system call. 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
MESON_QEMU_WRAPPER_TEST_ENABLED:pn-systemd-boot = "1"
EOF

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
MESON_QEMU_WRAPPER_TEST_ENABLED:pn-glib-2.0 = "1"
EOF

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
MESON_QEMU_WRAPPER_TEST_ENABLED:pn-gstreamer1.0 = "1"
EOF

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@gmail.com>
---
 meta/classes/meson.bbclass | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Patch

diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass
index 0bfe945811..bc15cb8163 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
+
+EXTRA_OEMESON_TEST ?= ""
+
+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 = ""
+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', None, 'do_compile', d)
+}