import os import csv import infra.basetest class TestPostScripts(infra.basetest.BRTest): config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ """ BR2_INIT_NONE=y BR2_SYSTEM_BIN_SH_NONE=y # BR2_PACKAGE_BUSYBOX is not set BR2_ROOTFS_POST_BUILD_SCRIPT="{}" BR2_ROOTFS_POST_FAKEROOT_SCRIPT="{}" BR2_ROOTFS_POST_IMAGE_SCRIPT="{}" BR2_ROOTFS_POST_SCRIPT_ARGS="foobar baz" """.format(infra.filepath("tests/core/post-build.sh"), infra.filepath("tests/core/post-fakeroot.sh"), infra.filepath("tests/core/post-image.sh")) def check_post_log_file(self, f, what, target_dir): lines = {} with open(os.path.join(self.builddir, "build", f), newline='') as csvfile: r = csv.reader(csvfile, delimiter=',') for row in r: lines[row[0]] = row[1] self.assertEqual(lines["arg1"], what) self.assertEqual(lines["arg2"], "foobar") self.assertEqual(lines["arg3"], "baz") self.assertEqual(lines["TARGET_DIR"], target_dir) self.assertEqual(lines["BUILD_DIR"], os.path.join(self.builddir, "build")) self.assertEqual(lines["HOST_DIR"], os.path.join(self.builddir, "host")) staging = os.readlink(os.path.join(self.builddir, "staging")) self.assertEqual(lines["STAGING_DIR"], staging) self.assertEqual(lines["BINARIES_DIR"], os.path.join(self.builddir, "images")) self.assertEqual(lines["BR2_CONFIG"], os.path.join(self.builddir, ".config")) def test_run(self): self.check_post_log_file("post-build.log", os.path.join(self.builddir, "target"), os.path.join(self.builddir, "target")) self.check_post_log_file("post-fakeroot.log", os.path.join(self.builddir, "build/buildroot-fs/tar/target"), os.path.join(self.builddir, "build/buildroot-fs/tar/target")) self.check_post_log_file("post-image.log", os.path.join(self.builddir, "images"), os.path.join(self.builddir, "target"))