[PATCH 10/10] test: Set the default fs_img in the constructor

Simon Glass sjg at chromium.org
Wed May 6 17:56:24 CEST 2026


Figure out the default image path in FsHelper.__init__() and let callers
override fsh.fs_img before mk_fs() if they need a different filename.

Move the pre-existing-image cleanup to __init__() so mk_fs() can drop
its 'rm -f' shell call and just truncate the file directly.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

 test/py/tests/fs_helper.py | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/test/py/tests/fs_helper.py b/test/py/tests/fs_helper.py
index 7659f9e2650..3ebf3036804 100644
--- a/test/py/tests/fs_helper.py
+++ b/test/py/tests/fs_helper.py
@@ -24,6 +24,13 @@ class FsHelper:
 
         # The filesystem and srcdir are erased after the 'with' statement.
 
+        To set the image filename:
+
+            with FsHelper(ubman.config, 'ext4', 10, 'mmc1') as fsh:
+                fsh.fs_img = 'myfile.img'
+                fsh.mk_fs()
+                ...
+
         It is also possible to use an existing srcdir:
 
             with FsHelper(ubman.config, 'fat32', 10, 'usb2') as fsh:
@@ -32,7 +39,8 @@ class FsHelper:
                 ...
 
     Properties:
-        fs_img (str): Filename for the filesystem image
+        fs_img (str): Filename for the filesystem image; this is set to a
+            default value but can be overwritten before mk_fs()
     """
     def __init__(self, config, fs_type, size_mb, prefix):
         """Set up a new object
@@ -54,11 +62,19 @@ class FsHelper:
         self.size_mb = size_mb
         self.prefix = prefix
         self.quiet = True
-        self.fs_img = None
         self.tmpdir = None
         self.srcdir = None
         self._do_cleanup = False
 
+        # Use a default filename; the caller can adjust it
+        leaf = f'{prefix}.{fs_type}.img'
+        if config:
+            self.fs_img = os.path.join(config.persistent_data_dir, leaf)
+            if os.path.exists(self.fs_img):
+                os.remove(self.fs_img)
+        else:
+            self.fs_img = leaf
+
         # Some distributions do not add /sbin to the default PATH, where
         # mkfs lives
         if '/sbin' not in os.environ['PATH'].split(os.pathsep):
@@ -102,12 +118,9 @@ class FsHelper:
         self._do_cleanup = True
         src_dir = self.srcdir if os.listdir(self.srcdir) else None
 
-        fs_img = os.path.join(self.config.persistent_data_dir,
-                              f'{self.prefix}.{self.fs_type}.img')
-
+        fs_img = self.fs_img
         mkfs_opt, fs_lnxtype = self._get_fs_args()
 
-        check_call(f'rm -f {fs_img}', shell=True)
         with open(fs_img, 'wb') as fsi:
             fsi.truncate(self.size_mb << 20)
         check_call(f'mkfs.{fs_lnxtype} {mkfs_opt} {fs_img}', shell=True,
@@ -123,7 +136,6 @@ class FsHelper:
                        shell=True)
         elif fs_lnxtype == 'exfat' and src_dir:
             check_call(f'fattools cp {src_dir}/* {fs_img}', shell=True)
-        self.fs_img = fs_img
 
     def setup(self):
         """Set up the srcdir ready to receive files"""
-- 
2.43.0



More information about the U-Boot mailing list