diff --git a/DEVELOPERS b/DEVELOPERS index f7a10c364d..5467e465d6 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1769,6 +1769,8 @@ F: support/testing/tests/package/test_cryptsetup/ F: support/testing/tests/package/test_ddrescue.py F: support/testing/tests/package/test_ddrescue/ F: support/testing/tests/package/test_dos2unix.py +F: support/testing/tests/package/test_file.py +F: support/testing/tests/package/test_file/ F: support/testing/tests/package/test_fluidsynth.py F: support/testing/tests/package/test_fluidsynth/ F: support/testing/tests/package/test_fping.py diff --git a/support/testing/tests/package/test_file.py b/support/testing/tests/package/test_file.py new file mode 100644 index 0000000000..84eadc5ead --- /dev/null +++ b/support/testing/tests/package/test_file.py @@ -0,0 +1,48 @@ +import os + +import infra.basetest + + +class TestFile(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + f""" + BR2_PACKAGE_FILE=y + BR2_ROOTFS_OVERLAY="{infra.filepath("tests/package/test_file/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() + + self.assertRunOk("file --version") + + tests = [ + ("", "plain-text.txt", "ASCII text"), + ("-i", "plain-text.txt", "text/plain"), + ("", "plain-text.txt.gz", "gzip compressed data"), + ("-i", "plain-text.txt.gz", "application/gzip"), + ("-z", "plain-text.txt.gz", "ASCII text"), + ("", "random-data.bin", "data"), + ("-i", "random-data.bin", "application/octet-stream"), + ("", "code.c", "C source"), + ("-i", "code.c", "text/x-c"), + ("", "script.sh", "POSIX shell script"), + ("-i", "script.sh", "text/x-shellscript"), + ("", "script.py", "Python script"), + ("", "/usr/share/misc/magic.mgc", "magic binary file for file"), + ("", "/usr/bin/file", "ELF"), + ("", "/dev/zero", "character special"), + ("", "/", "directory"), + ("-h", "symlink-to-plain-text.txt", "symbolic link"), + ("-L", "symlink-to-plain-text.txt", "ASCII text") + ] + for opt_str, path, pattern in tests: + cmd = f"file {opt_str} '{path}'" + out, ret = self.emulator.run(cmd) + self.assertEqual(ret, 0, f"Failed to run '{cmd}'") + self.assertIn(pattern, "\n".join(out)) diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/code.c b/support/testing/tests/package/test_file/rootfs-overlay/root/code.c new file mode 100644 index 0000000000..7095eaca31 --- /dev/null +++ b/support/testing/tests/package/test_file/rootfs-overlay/root/code.c @@ -0,0 +1,9 @@ +#include +#include + +int +main(void) +{ + printf("Hello Buildroot!\n"); + exit(EXIT_SUCCESS); +} diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/plain-text.txt b/support/testing/tests/package/test_file/rootfs-overlay/root/plain-text.txt new file mode 100644 index 0000000000..1c5aa36037 --- /dev/null +++ b/support/testing/tests/package/test_file/rootfs-overlay/root/plain-text.txt @@ -0,0 +1 @@ +This is a plain text file... diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/plain-text.txt.gz b/support/testing/tests/package/test_file/rootfs-overlay/root/plain-text.txt.gz new file mode 100644 index 0000000000..95d398f8d1 Binary files /dev/null and b/support/testing/tests/package/test_file/rootfs-overlay/root/plain-text.txt.gz differ diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/random-data.bin b/support/testing/tests/package/test_file/rootfs-overlay/root/random-data.bin new file mode 100644 index 0000000000..eea0ae8b76 Binary files /dev/null and b/support/testing/tests/package/test_file/rootfs-overlay/root/random-data.bin differ diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/script.py b/support/testing/tests/package/test_file/rootfs-overlay/root/script.py new file mode 100755 index 0000000000..79191b3048 --- /dev/null +++ b/support/testing/tests/package/test_file/rootfs-overlay/root/script.py @@ -0,0 +1,3 @@ +#! /usr/bin/env python3 + +print("Hello Buildroot!") diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/script.sh b/support/testing/tests/package/test_file/rootfs-overlay/root/script.sh new file mode 100755 index 0000000000..75b2d5e017 --- /dev/null +++ b/support/testing/tests/package/test_file/rootfs-overlay/root/script.sh @@ -0,0 +1,3 @@ +#! /bin/sh + +echo "Hello Buildroot!" diff --git a/support/testing/tests/package/test_file/rootfs-overlay/root/symlink-to-plain-text.txt b/support/testing/tests/package/test_file/rootfs-overlay/root/symlink-to-plain-text.txt new file mode 120000 index 0000000000..a3ae3c0058 --- /dev/null +++ b/support/testing/tests/package/test_file/rootfs-overlay/root/symlink-to-plain-text.txt @@ -0,0 +1 @@ +plain-text.txt \ No newline at end of file