import os import infra.basetest class TestPythonBase(infra.basetest.BRTest): config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ """ BR2_TARGET_ROOTFS_CPIO=y # BR2_TARGET_ROOTFS_TAR is not set """ interpreter = "python" def login(self): cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") self.emulator.boot(arch="armv5", kernel="builtin", options=["-initrd", cpio_file]) self.emulator.login() def version_test(self, version, timeout=-1): cmd = self.interpreter + " --version 2>&1 | grep '^{}'".format(version) _, exit_code = self.emulator.run(cmd, timeout) self.assertEqual(exit_code, 0) def math_floor_test(self, timeout=-1): cmd = self.interpreter + " -c 'import math; math.floor(12.3)'" _, exit_code = self.emulator.run(cmd, timeout) self.assertEqual(exit_code, 0) def libc_time_test(self, timeout=-1): cmd = self.interpreter + " -c 'from __future__ import print_function;" cmd += "import ctypes;" cmd += "libc = ctypes.cdll.LoadLibrary(\"libc.so.1\");" cmd += "print(libc.time(None))'" _, exit_code = self.emulator.run(cmd, timeout) self.assertEqual(exit_code, 0) def zlib_test(self, timeout=-1): cmd = self.interpreter + " -c 'import zlib'" _, exit_code = self.emulator.run(cmd, timeout) self.assertEqual(exit_code, 1) class TestPython2(TestPythonBase): config = TestPythonBase.config + \ """ BR2_PACKAGE_PYTHON=y """ def test_run(self): self.login() self.version_test("Python 2") self.math_floor_test() self.libc_time_test() self.zlib_test() class TestPython3(TestPythonBase): config = TestPythonBase.config + \ """ BR2_PACKAGE_PYTHON3=y """ def test_run(self): self.login() self.version_test("Python 3") self.math_floor_test() self.libc_time_test() self.zlib_test()