Thomas Huth <th...@redhat.com> writes: > We don't have any functional tests for this machine yet, thus let's > add a test with a MicroPython binary that is available online
We do have a basic system test: test-armv6m-undef: test-armv6m-undef.S $(CC) -mcpu=cortex-m0 -mfloat-abi=soft \ -Wl,--build-id=none -x assembler-with-cpp \ $< -o $@ -nostdlib -static \ -T $(ARM_SRC)/$@.ld run-test-armv6m-undef: QEMU_OPTS=-semihosting-config enable=on,target=native,chardev=output -M microbit -kernel ARM_TESTS+=test-armv6m-undef But I guess this exercised more of the machine as micropython actually comes up. > (thanks to Joel Stanley for providing it, see: > https://www.mail-archive.com/qemu-devel@nongnu.org/msg606064.html ). > > Signed-off-by: Thomas Huth <th...@redhat.com> > --- > MAINTAINERS | 1 + > tests/functional/meson.build | 1 + > tests/functional/test_arm_microbit.py | 31 +++++++++++++++++++++++++++ > 3 files changed, 33 insertions(+) > create mode 100755 tests/functional/test_arm_microbit.py > > diff --git a/MAINTAINERS b/MAINTAINERS > index 1d9b3a0011..7b4d84bf5f 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1157,6 +1157,7 @@ F: hw/*/microbit*.c > F: include/hw/*/nrf51*.h > F: include/hw/*/microbit*.h > F: tests/qtest/microbit-test.c > +F: tests/functional/test_arm_microbit.py > F: docs/system/arm/nrf.rst > > ARM PL011 Rust device > diff --git a/tests/functional/meson.build b/tests/functional/meson.build > index bcfbb70b65..a301c38806 100644 > --- a/tests/functional/meson.build > +++ b/tests/functional/meson.build > @@ -105,6 +105,7 @@ tests_arm_system_thorough = [ > 'arm_cubieboard', > 'arm_emcraft_sf2', > 'arm_integratorcp', > + 'arm_microbit', > 'arm_orangepi', > 'arm_quanta_gsj', > 'arm_raspi2', > diff --git a/tests/functional/test_arm_microbit.py > b/tests/functional/test_arm_microbit.py > new file mode 100755 > index 0000000000..68ea4e73d6 > --- /dev/null > +++ b/tests/functional/test_arm_microbit.py > @@ -0,0 +1,31 @@ > +#!/usr/bin/env python3 > +# > +# SPDX-License-Identifier: GPL-2.0-or-later > +# > +# Copyright 2025, The QEMU Project Developers. > +# > +# A functional test that runs MicroPython on the arm microbit machine. > + > +from qemu_test import QemuSystemTest, Asset, > exec_command_and_wait_for_pattern > +from qemu_test import wait_for_console_pattern > + > + > +class MicrobitMachine(QemuSystemTest): > + > + ASSET_MICRO = Asset('https://ozlabs.org/~joel/microbit-micropython.hex', > + '021641f93dfb11767d4978dbb3ca7f475d1b13c69e7f4aec3382f212636bffd6') > + > + def test_arm_microbit(self): > + self.set_machine('microbit') > + > + micropython = self.ASSET_MICRO.fetch() > + self.vm.set_console() > + self.vm.add_args('-device', f'loader,file={micropython}') > + self.vm.launch() > + wait_for_console_pattern(self, 'Type "help()" for more information.') > + exec_command_and_wait_for_pattern(self, 'import machine as mch', > '>>>') > + exec_command_and_wait_for_pattern(self, 'mch.reset()', 'MicroPython') > + wait_for_console_pattern(self, '>>>') We could do more if we wanted - all the microbit specific stuff lives in the microbit module: https://microbit-micropython.readthedocs.io/en/latest/microbit_micropython_api.html Anyway: Reviewed-by: Alex Bennée <alex.ben...@linaro.org> > + > +if __name__ == '__main__': > + QemuSystemTest.main() -- Alex Bennée Virtualisation Tech Lead @ Linaro