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