| # |
| # Copyright OpenEmbedded Contributors |
| # |
| # SPDX-License-Identifier: MIT |
| # |
| |
| from oeqa.selftest.case import OESelftestTestCase |
| from oeqa.core.decorator.data import skipIfNotQemuUsermode |
| from oeqa.utils.commands import bitbake |
| |
| |
| class CCppTests(OESelftestTestCase): |
| |
| @skipIfNotQemuUsermode() |
| def _qemu_usermode(self, recipe_name): |
| self.add_command_to_tearDown("bitbake -c clean %s" % recipe_name) |
| bitbake("%s -c run_tests" % recipe_name) |
| |
| @skipIfNotQemuUsermode() |
| def _qemu_usermode_failing(self, recipe_name): |
| config = 'PACKAGECONFIG:pn-%s = "failing_test"' % recipe_name |
| self.write_config(config) |
| self.add_command_to_tearDown("bitbake -c clean %s" % recipe_name) |
| result = bitbake("%s -c run_tests" % recipe_name, ignore_status=True) |
| self.assertNotEqual(0, result.status, "command: %s is expected to fail but passed, status: %s, output: %s, error: %s" % ( |
| result.command, result.status, result.output, result.error)) |
| |
| |
| class CMakeTests(CCppTests): |
| def test_cmake_qemu(self): |
| """Test for cmake-qemu.bbclass good case |
| |
| compile the cmake-example and verify the CTests pass in qemu-user. |
| qemu-user is configured by CMAKE_CROSSCOMPILING_EMULATOR. |
| """ |
| self._qemu_usermode("cmake-example") |
| |
| def test_cmake_qemu_failing(self): |
| """Test for cmake-qemu.bbclass bad case |
| |
| Break the comparison in the test code and verify the CTests do not pass. |
| """ |
| self._qemu_usermode_failing("cmake-example") |
| |
| |
| class MesonTests(CCppTests): |
| def test_meson_qemu(self): |
| """Test the qemu-user feature of the meson.bbclass good case |
| |
| compile the meson-example and verify the Unit Test pass in qemu-user. |
| qemu-user is configured by meson's exe_wrapper option. |
| """ |
| self._qemu_usermode("meson-example") |
| |
| def test_meson_qemu_failing(self): |
| """Test the qemu-user feature of the meson.bbclass bad case |
| |
| Break the comparison in the test code and verify the Unit Test does not pass in qemu-user. |
| """ |
| self._qemu_usermode_failing("meson-example") |