1*4882a593Smuzhiyunimport os 2*4882a593Smuzhiyun 3*4882a593Smuzhiyunimport infra.basetest 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun 6*4882a593Smuzhiyundef jffs2dump_find_file(files_list, fname): 7*4882a593Smuzhiyun for file_name in files_list: 8*4882a593Smuzhiyun file_name = file_name.strip() 9*4882a593Smuzhiyun if file_name.startswith("Dirent") and file_name.endswith(fname): 10*4882a593Smuzhiyun return True 11*4882a593Smuzhiyun return False 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun 14*4882a593Smuzhiyunclass TestJffs2(infra.basetest.BRTest): 15*4882a593Smuzhiyun config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ 16*4882a593Smuzhiyun """ 17*4882a593Smuzhiyun BR2_TARGET_ROOTFS_JFFS2=y 18*4882a593Smuzhiyun BR2_TARGET_ROOTFS_JFFS2_CUSTOM=y 19*4882a593Smuzhiyun BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE=0x40000 20*4882a593Smuzhiyun BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y 21*4882a593Smuzhiyun BR2_TARGET_ROOTFS_JFFS2_PAD=y 22*4882a593Smuzhiyun BR2_TARGET_ROOTFS_JFFS2_PADSIZE=0x4000000 23*4882a593Smuzhiyun # BR2_TARGET_ROOTFS_TAR is not set 24*4882a593Smuzhiyun """ 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun # TODO: there are some scary JFFS2 messages when one starts to 27*4882a593Smuzhiyun # write files in the rootfs: "jffs2: Newly-erased block contained 28*4882a593Smuzhiyun # word 0x0 at offset 0x046c0000". To be investigated. 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun def test_run(self): 31*4882a593Smuzhiyun img = os.path.join(self.builddir, "images", "rootfs.jffs2") 32*4882a593Smuzhiyun cmd = ["host/sbin/jffs2dump", "-c", img] 33*4882a593Smuzhiyun out = infra.run_cmd_on_host(self.builddir, cmd) 34*4882a593Smuzhiyun out = out.splitlines() 35*4882a593Smuzhiyun self.assertTrue(jffs2dump_find_file(out, "busybox")) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun self.emulator.boot(arch="armv7", 38*4882a593Smuzhiyun kernel="builtin", 39*4882a593Smuzhiyun kernel_cmdline=["root=/dev/mtdblock0", 40*4882a593Smuzhiyun "rootfstype=jffs2"], 41*4882a593Smuzhiyun options=["-drive", "file={},if=pflash".format(img)]) 42*4882a593Smuzhiyun self.emulator.login() 43*4882a593Smuzhiyun cmd = "mount | grep '/dev/root on / type jffs2'" 44*4882a593Smuzhiyun self.assertRunOk(cmd) 45