All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH next 1/1] support/testing/tests/package/test_mtools.py: new runtime test
@ 2023-03-04 21:41 Julien Olivain
  2023-03-12 22:12 ` Thomas Petazzoni via buildroot
  0 siblings, 1 reply; 2+ messages in thread
From: Julien Olivain @ 2023-03-04 21:41 UTC (permalink / raw)
  To: buildroot; +Cc: Julien Olivain

Signed-off-by: Julien Olivain <ju.o@free.fr>
---
Patch tested on branch next at commit b793f3a with commands:

    python3 -m flake8 support/testing/tests/package/test_mtools.py
    [no-output]

    support/testing/run-tests \
        -d dl -o output_folder \
        tests.package.test_mtools
    ...
    OK
---
 DEVELOPERS                                   |  1 +
 support/testing/tests/package/test_mtools.py | 72 ++++++++++++++++++++
 2 files changed, 73 insertions(+)
 create mode 100644 support/testing/tests/package/test_mtools.py

diff --git a/DEVELOPERS b/DEVELOPERS
index d052e59122..48b8a713ad 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1719,6 +1719,7 @@ F:	support/testing/tests/package/test_gnupg2.py
 F:	support/testing/tests/package/test_highway.py
 F:	support/testing/tests/package/test_hwloc.py
 F:	support/testing/tests/package/test_libjxl.py
+F:	support/testing/tests/package/test_mtools.py
 F:	support/testing/tests/package/test_ncdu.py
 F:	support/testing/tests/package/test_octave.py
 F:	support/testing/tests/package/test_ola.py
diff --git a/support/testing/tests/package/test_mtools.py b/support/testing/tests/package/test_mtools.py
new file mode 100644
index 0000000000..51e5138481
--- /dev/null
+++ b/support/testing/tests/package/test_mtools.py
@@ -0,0 +1,72 @@
+import os
+
+import infra.basetest
+
+
+class TestMtools(infra.basetest.BRTest):
+    # We use a glibc toolchain to have iconv conversion working for
+    # codepage 850.
+    config = \
+        """
+        BR2_arm=y
+        BR2_TOOLCHAIN_EXTERNAL=y
+        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
+        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_STABLE=y
+        BR2_PACKAGE_MTOOLS=y
+        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()
+
+        dos_img = "dos-fat.img"
+        mtools_opts = f"-i {dos_img}"
+
+        self.assertRunOk("mtools --version")
+
+        # Create an empty image file to hold the FAT partition
+        self.assertRunOk(f"dd if=/dev/zero of={dos_img} bs=1M count=1")
+
+        # Any Mtools command is expected to fail on an unformated
+        # partition.
+        cmd = f"minfo {mtools_opts} ::"
+        _, exit_code = self.emulator.run(cmd)
+        self.assertNotEqual(exit_code, 0)
+
+        # Now, let's format the partition file to FAT
+        self.assertRunOk(f"mformat {mtools_opts} ::")
+
+        # Run some Mtools commands on this empty partition
+        self.assertRunOk(f"minfo {mtools_opts} ::")
+        self.assertRunOk(f"mdir {mtools_opts} ::")
+        self.assertRunOk(f"mlabel {mtools_opts} -N 12345678 ::BUILDROOT")
+
+        # Create a reference file on our Linux filesystem
+        self.assertRunOk("echo 'Hello Buildroot!' > file1.txt")
+
+        # Copy the reference file into the DOS image, then perform
+        # various file manipulations
+        self.assertRunOk(f"mcopy {mtools_opts} file1.txt ::file2.txt")
+        self.assertRunOk(f"mcopy {mtools_opts} ::file2.txt ::file3.txt")
+        self.assertRunOk(f"mdel {mtools_opts} ::file2.txt")
+        self.assertRunOk(f"mren {mtools_opts} ::file3.txt ::file4.txt")
+        self.assertRunOk(f"mmd {mtools_opts} ::dir1")
+        self.assertRunOk(f"mmove {mtools_opts} ::file4.txt ::dir1")
+        self.assertRunOk(f"mdir {mtools_opts} ::dir1")
+        self.assertRunOk(f"mdu {mtools_opts} -a ::")
+
+        # Copy back the file from the DOS image to the Linux
+        # filesystem
+        self.assertRunOk(f"mcopy {mtools_opts} ::dir1/file4.txt file5.txt")
+
+        # We expect this last copied file to have the same content as
+        # the reference one created at the beginning
+        self.assertRunOk("cmp file1.txt file5.txt")
+
+        # Delete a directory tree containing a file
+        self.assertRunOk(f"mdeltree {mtools_opts} ::dir1")
-- 
2.39.2

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [Buildroot] [PATCH next 1/1] support/testing/tests/package/test_mtools.py: new runtime test
  2023-03-04 21:41 [Buildroot] [PATCH next 1/1] support/testing/tests/package/test_mtools.py: new runtime test Julien Olivain
@ 2023-03-12 22:12 ` Thomas Petazzoni via buildroot
  0 siblings, 0 replies; 2+ messages in thread
From: Thomas Petazzoni via buildroot @ 2023-03-12 22:12 UTC (permalink / raw)
  To: Julien Olivain; +Cc: buildroot

On Sat,  4 Mar 2023 22:41:20 +0100
Julien Olivain <ju.o@free.fr> wrote:

> Signed-off-by: Julien Olivain <ju.o@free.fr>
> ---
> Patch tested on branch next at commit b793f3a with commands:

Applied to master, thanks.

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-03-12 22:12 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-04 21:41 [Buildroot] [PATCH next 1/1] support/testing/tests/package/test_mtools.py: new runtime test Julien Olivain
2023-03-12 22:12 ` Thomas Petazzoni via buildroot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.