1import os 2import csv 3 4import infra.basetest 5 6 7class TestPostScripts(infra.basetest.BRTest): 8 config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ 9 """ 10 BR2_INIT_NONE=y 11 BR2_SYSTEM_BIN_SH_NONE=y 12 # BR2_PACKAGE_BUSYBOX is not set 13 BR2_ROOTFS_POST_BUILD_SCRIPT="{}" 14 BR2_ROOTFS_POST_FAKEROOT_SCRIPT="{}" 15 BR2_ROOTFS_POST_IMAGE_SCRIPT="{}" 16 BR2_ROOTFS_POST_SCRIPT_ARGS="foobar baz" 17 """.format(infra.filepath("tests/core/post-build.sh"), 18 infra.filepath("tests/core/post-fakeroot.sh"), 19 infra.filepath("tests/core/post-image.sh")) 20 21 def check_post_log_file(self, f, what, target_dir): 22 lines = {} 23 with open(os.path.join(self.builddir, "build", f), newline='') as csvfile: 24 r = csv.reader(csvfile, delimiter=',') 25 for row in r: 26 lines[row[0]] = row[1] 27 28 self.assertEqual(lines["arg1"], what) 29 self.assertEqual(lines["arg2"], "foobar") 30 self.assertEqual(lines["arg3"], "baz") 31 self.assertEqual(lines["TARGET_DIR"], target_dir) 32 self.assertEqual(lines["BUILD_DIR"], os.path.join(self.builddir, "build")) 33 self.assertEqual(lines["HOST_DIR"], os.path.join(self.builddir, "host")) 34 staging = os.readlink(os.path.join(self.builddir, "staging")) 35 self.assertEqual(lines["STAGING_DIR"], staging) 36 self.assertEqual(lines["BINARIES_DIR"], os.path.join(self.builddir, "images")) 37 self.assertEqual(lines["BR2_CONFIG"], os.path.join(self.builddir, ".config")) 38 39 def test_run(self): 40 self.check_post_log_file("post-build.log", 41 os.path.join(self.builddir, "target"), 42 os.path.join(self.builddir, "target")) 43 self.check_post_log_file("post-fakeroot.log", 44 os.path.join(self.builddir, "build/buildroot-fs/tar/target"), 45 os.path.join(self.builddir, "build/buildroot-fs/tar/target")) 46 self.check_post_log_file("post-image.log", 47 os.path.join(self.builddir, "images"), 48 os.path.join(self.builddir, "target")) 49