[PATCH 1/2] test/py: Use loop mounts if guestmount fails in filesystem tests

Alper Nebi Yasak alpernebiyasak at gmail.com
Sun Jun 27 14:34:45 CEST 2021


On 26/06/2021 21:29, Simon Glass wrote:
> On Fri, 4 Jun 2021 at 13:05, Alper Nebi Yasak <alpernebiyasak at gmail.com> wrote:
>>
>> If guestmount isn't available on the system, filesystem test setup falls
>> back to using loop mounts to prepare its disk images. If guestmount is
>> available but fails to work, the tests are immediately skipped. Instead
>> of giving up on a guestmount failure, try using loop mounts as an
>> attempt to keep tests running.
>>
>> Also stop checking if guestmount is in PATH, as trying to run a missing
>> guestmount can now follow the same failure codepath and fall back to
>> loop mounts anyway.
>>
>> Signed-off-by: Alper Nebi Yasak <alpernebiyasak at gmail.com>
>> ---
>>
>>  test/py/tests/test_fs/conftest.py | 31 +++++++++++++++----------------
>>  1 file changed, 15 insertions(+), 16 deletions(-)
> 
> https://source.denx.de/u-boot/custodians/u-boot-dm/-/jobs/282788
> 
> thoughts below

That CI run doesn't have this patch/series applied.

>>
>> diff --git a/test/py/tests/test_fs/conftest.py b/test/py/tests/test_fs/conftest.py
>> index 410a675b9714..e3c461635f8e 100644
>> --- a/test/py/tests/test_fs/conftest.py
>> +++ b/test/py/tests/test_fs/conftest.py
>> @@ -205,24 +205,23 @@ def mount_fs(fs_type, device, mount_point):
>>      """
>>      global fuse_mounted
>>
>> -    fuse_mounted = False
>>      try:
>> -        if tool_is_in_path('guestmount'):
>> -            fuse_mounted = True
>> -            check_call('guestmount -a %s -m /dev/sda %s'
>> -                % (device, mount_point), shell=True)
>> -        else:
>> -            mount_opt = 'loop,rw'
>> -            if re.match('fat', fs_type):
>> -                mount_opt += ',umask=0000'
>> -
>> -            check_call('sudo mount -o %s %s %s'
>> -                % (mount_opt, device, mount_point), shell=True)
>> -
>> -            # may not be effective for some file systems
>> -            check_call('sudo chmod a+rw %s' % mount_point, shell=True)
>> +        check_call('guestmount -a %s -m /dev/sda %s'
>> +            % (device, mount_point), shell=True)
>> +        fuse_mounted = True
>> +        return
>>      except CalledProcessError:
>> -        raise
>> +        fuse_mounted = False
>> +
>> +    mount_opt = 'loop,rw'
>> +    if re.match('fat', fs_type):
> 
> This seems ambiguous. I think you should use:
> 
>    if 'fat' in fs_type:
> 
> or
> 
>    if fs_type.startswith('fat'):
> 
> or
> 
>   if fs_type == 'fat':
> 
> so it is clear what you mean.

This just unindents existing code. I can send v2 with startswith('fat')
though.

(I think I should rewrite the tests with guestfish and remove these
mount functions instead; but I'm busy with other things for a while.)

>> +        mount_opt += ',umask=0000'
>> +
>> +    check_call('sudo mount -o %s %s %s'
>> +        % (mount_opt, device, mount_point), shell=True)
>> +
>> +    # may not be effective for some file systems
>> +    check_call('sudo chmod a+rw %s' % mount_point, shell=True)
>>
>>  def umount_fs(mount_point):
>>      """Unmount a volume.
>> --
>> 2.32.0.rc2
>>
> 
> Regards,
> Simon
> 


More information about the U-Boot mailing list