[PATCH 08/10] test: Tidy up the mk_fs() logic a little
Simon Glass
sjg at chromium.org
Wed May 6 17:56:22 CEST 2026
Move the /sbin PATH workaround into __init__() so it runs once per
instance.
Drop the SIZE_GRAN rounding since size_mb is already an integer count of
MiB and truncate(1) accepts a 'M' suffix directly.
Drop the try/except wrapper around the mkfs commands so
CalledProcessError propagates naturally.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
test/py/tests/fs_helper.py | 54 +++++++++++++++-----------------------
1 file changed, 21 insertions(+), 33 deletions(-)
diff --git a/test/py/tests/fs_helper.py b/test/py/tests/fs_helper.py
index 3983d42f5ce..f81b9c274dc 100644
--- a/test/py/tests/fs_helper.py
+++ b/test/py/tests/fs_helper.py
@@ -8,13 +8,10 @@
import re
import os
import shutil
-from subprocess import call, check_call, check_output, CalledProcessError
+from subprocess import check_call, check_output, CalledProcessError
from subprocess import DEVNULL
import tempfile
-# size_gran (int): Size granularity of file system image in bytes
-SIZE_GRAN = 1 << 20
-
class FsHelper:
"""Creating a filesystem containing test files
@@ -62,6 +59,11 @@ class FsHelper:
self.srcdir = None
self._do_cleanup = False
+ # Some distributions do not add /sbin to the default PATH, where
+ # mkfs lives
+ if '/sbin' not in os.environ['PATH'].split(os.pathsep):
+ os.environ['PATH'] += os.pathsep + '/sbin'
+
def _get_fs_args(self):
"""Get the mkfs options and program to use
@@ -105,36 +107,22 @@ class FsHelper:
mkfs_opt, fs_lnxtype = self._get_fs_args()
- size = self.size_mb << 20
- count = (size + SIZE_GRAN - 1) // SIZE_GRAN
-
- # Some distributions do not add /sbin to the default PATH, where
- # mkfs lives
- if '/sbin' not in os.environ['PATH'].split(os.pathsep):
- os.environ['PATH'] += os.pathsep + '/sbin'
-
- try:
- check_call(f'rm -f {fs_img}', shell=True)
- check_call(f'truncate -s $(( {SIZE_GRAN} * {count} )) {fs_img}',
+ check_call(f'rm -f {fs_img}', shell=True)
+ check_call(f'truncate -s {self.size_mb}M {fs_img}', shell=True)
+ check_call(f'mkfs.{fs_lnxtype} {mkfs_opt} {fs_img}', shell=True,
+ stdout=DEVNULL if self.quiet else None)
+ if self.fs_type == 'ext4':
+ sb_content = check_output(f'tune2fs -l {fs_img}',
+ shell=True).decode()
+ if 'metadata_csum' in sb_content:
+ check_call(f'tune2fs -O ^metadata_csum {fs_img}', shell=True)
+ elif fs_lnxtype == 'vfat' and src_dir:
+ flags = f"-smpQ{'' if self.quiet else 'v'}"
+ check_call(f'mcopy -i {fs_img} {flags} {src_dir}/* ::/',
shell=True)
- check_call(f'mkfs.{fs_lnxtype} {mkfs_opt} {fs_img}', shell=True,
- stdout=DEVNULL if self.quiet else None)
- if self.fs_type == 'ext4':
- sb_content = check_output(f'tune2fs -l {fs_img}',
- shell=True).decode()
- if 'metadata_csum' in sb_content:
- check_call(f'tune2fs -O ^metadata_csum {fs_img}',
- shell=True)
- elif fs_lnxtype == 'vfat' and src_dir:
- flags = f"-smpQ{'' if self.quiet else 'v'}"
- check_call(f'mcopy -i {fs_img} {flags} {src_dir}/* ::/',
- 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
- except CalledProcessError:
- call(f'rm -f {fs_img}', shell=True)
- raise
+ 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