import os import infra.basetest class TestPatch(infra.basetest.BRTest): rootfs_overlay = \ infra.filepath("tests/package/test_patch/rootfs-overlay") config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ f""" BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y BR2_PACKAGE_PATCH=y BR2_ROOTFS_OVERLAY="{rootfs_overlay}" BR2_TARGET_ROOTFS_CPIO=y # BR2_TARGET_ROOTFS_TAR is not set """ def test_run(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() # Check the program can execute. This also checks that we are # not using the patch applet from BusyBox (as it does not # recognize the --version option). self.assertRunOk("patch --version") # We check the test file contains our expected string before # the patch. sed_cmd = "sed -n '2p' file.txt" out, ret = self.emulator.run(sed_cmd) self.assertEqual(ret, 0) self.assertEqual(out[0], "Hello World!") # We apply our test patch... self.assertRunOk("patch -p1 < file.diff") # We check the test file contains our expected string after # applying the patch. out, ret = self.emulator.run(sed_cmd) self.assertEqual(ret, 0) self.assertEqual(out[0], "Hello Buildroot!")