| import os |
| |
| import infra.basetest |
| |
| |
| def jffs2dump_find_file(files_list, fname): |
| for file_name in files_list: |
| file_name = file_name.strip() |
| if file_name.startswith("Dirent") and file_name.endswith(fname): |
| return True |
| return False |
| |
| |
| class TestJffs2(infra.basetest.BRTest): |
| config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ |
| """ |
| BR2_TARGET_ROOTFS_JFFS2=y |
| BR2_TARGET_ROOTFS_JFFS2_CUSTOM=y |
| BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE=0x80000 |
| BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y |
| BR2_TARGET_ROOTFS_JFFS2_PAD=y |
| BR2_TARGET_ROOTFS_JFFS2_PADSIZE=0x4000000 |
| # BR2_TARGET_ROOTFS_TAR is not set |
| """ |
| |
| # TODO: there are some scary JFFS2 messages when one starts to |
| # write files in the rootfs: "jffs2: Newly-erased block contained |
| # word 0x0 at offset 0x046c0000". To be investigated. |
| |
| def test_run(self): |
| img = os.path.join(self.builddir, "images", "rootfs.jffs2") |
| cmd = ["host/sbin/jffs2dump", "-c", img] |
| out = infra.run_cmd_on_host(self.builddir, cmd) |
| out = out.splitlines() |
| self.assertTrue(jffs2dump_find_file(out, "busybox")) |
| |
| self.emulator.boot(arch="armv7", |
| kernel="builtin", |
| kernel_cmdline=["root=/dev/mtdblock0", |
| "rootfstype=jffs2"], |
| options=["-drive", "file={},if=pflash".format(img)]) |
| self.emulator.login() |
| cmd = "mount | grep '/dev/root on / type jffs2'" |
| _, exit_code = self.emulator.run(cmd) |
| self.assertEqual(exit_code, 0) |