ubuntu-buildroot/support/testing/tests/package/test_bmap_tools.py

85 lines
2.7 KiB
Python
Raw Normal View History

2024-04-01 15:19:46 +00:00
import os
import infra
import subprocess
from infra.basetest import BRTest
class TestBmapTools(BRTest):
__test__ = False
sample_script = "tests/package/sample_bmap_tools.sh"
copy_script = 'tests/package/copy-sample-script-to-target.sh'
config = \
"""
BR2_arm=y
BR2_cortex_a8=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
BR2_PACKAGE_BMAP_TOOLS=y
BR2_ROOTFS_POST_BUILD_SCRIPT="{}"
BR2_ROOTFS_POST_SCRIPT_ARGS="{}"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="65536"
# BR2_TARGET_ROOTFS_TAR is not set
BR2_PACKAGE_UTIL_LINUX=y
BR2_PACKAGE_UTIL_LINUX_FALLOCATE=y
BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_UTIL_LINUX_LIBUUID=y
""".format(infra.filepath(copy_script),
infra.filepath(sample_script))
timeout = 60
def login(self):
img = os.path.join(self.builddir, "images", "rootfs.ext4")
self.emulator.boot(arch="armv7",
kernel="builtin",
kernel_cmdline=["root=/dev/mmcblk0",
"rootfstype=ext4"],
options=["-drive", "file={},if=sd,format=raw".format(img)])
self.emulator.login()
def test_run(self):
self.login()
cmd = "/root/{}".format(os.path.basename(self.sample_script))
self.assertRunOk(cmd, timeout=20)
class TestPy3BmapTools(TestBmapTools):
__test__ = True
config = TestBmapTools.config + \
"""
BR2_PACKAGE_PYTHON3=y
"""
class TestHostBmapTools(BRTest):
config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
"""
BR2_PACKAGE_HOST_BMAP_TOOLS=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_ROOTFS_EXT2=y
"""
def test_run(self):
bmap_x = os.path.join(self.b.builddir, "host", "bin", "bmaptool")
src_f = os.path.join(self.b.builddir, "images", "rootfs.ext2")
dst_f = os.path.join(self.b.builddir, "images", "rootfs.ext2.copy")
map_f = os.path.join(self.b.builddir, "images", "rootfs.ext2.bmap")
ret = subprocess.call([bmap_x, "create", "-o", map_f, src_f],
stdout=self.b.logfile,
stderr=self.b.logfile)
self.assertEqual(ret, 0)
ret = subprocess.call([bmap_x, "copy", src_f, dst_f],
stdout=self.b.logfile,
stderr=self.b.logfile)
self.assertEqual(ret, 0)
with open(src_f, 'rb') as f:
src = f.read()
with open(dst_f, 'rb') as f:
dst = f.read()
self.assertEqual(src, dst)