@@ -6,6 +6,52 @@ import os
import pytest
from sqfs_common import *
+def sqfs_ls_at_root(u_boot_console):
+ # first and most basic test is to check if these two give the same output
+ no_slash = u_boot_console.run_command('sqfsls host 0')
+ slash = u_boot_console.run_command('sqfsls host 0 /')
+ assert no_slash == slash
+
+ expected_lines = ['empty-dir/', '1000 f1000', '4096 f4096', '5096 f5096',
+ 'subdir/', '<SYM> sym', '4 file(s), 2 dir(s)']
+
+ output = u_boot_console.run_command('sqfsls host 0')
+ for line in expected_lines:
+ assert line in output
+
+def sqfs_ls_at_empty_dir(u_boot_console):
+ assert u_boot_console.run_command('sqfsls host 0 empty-dir') == 'Empty directory.'
+
+def sqfs_ls_at_subdir(u_boot_console):
+ expected_lines = ['100 subdir-file', '1 file(s), 0 dir(s)']
+ output = u_boot_console.run_command('sqfsls host 0 subdir')
+ for line in expected_lines:
+ assert line in output
+
+def sqfs_ls_at_symlink(u_boot_console):
+ # since sym -> subdir, the following outputs must be equal
+ output = u_boot_console.run_command('sqfsls host 0 sym')
+ output_subdir= u_boot_console.run_command('sqfsls host 0 subdir')
+ assert output == output_subdir
+
+ expected_lines = ['100 subdir-file', '1 file(s), 0 dir(s)']
+ for line in expected_lines:
+ assert line in output
+
+# output should be the same for non-existent directories and files
+def sqfs_ls_at_non_existent_dir(u_boot_console):
+ out_non_existent = u_boot_console.run_command('sqfsls host 0 fff')
+ out_not_dir = u_boot_console.run_command('sqfsls host 0 f1000')
+ assert out_non_existent == out_not_dir
+ assert '** Cannot find directory. **' in out_non_existent
+
+def sqfs_run_all_ls_tests(u_boot_console):
+ sqfs_ls_at_root(u_boot_console)
+ sqfs_ls_at_empty_dir(u_boot_console)
+ sqfs_ls_at_subdir(u_boot_console)
+ sqfs_ls_at_symlink(u_boot_console)
+ sqfs_ls_at_non_existent_dir(u_boot_console)
+
@pytest.mark.boardspec('sandbox')
@pytest.mark.buildconfigspec('cmd_fs_generic')
@pytest.mark.buildconfigspec('cmd_squashfs')
@@ -13,24 +59,22 @@ from sqfs_common import *
@pytest.mark.requiredtool('mksquashfs')
def test_sqfs_ls(u_boot_console):
build_dir = u_boot_console.config.build_dir
- for opt in comp_opts:
- try:
- opt.gen_image(build_dir)
- except RuntimeError:
- opt.clean_source(build_dir)
- # skip unsupported compression types
- continue
- path = os.path.join(build_dir, "sqfs-" + opt.name)
- output = u_boot_console.run_command("host bind 0 " + path)
+ # setup test environment
+ generate_sqfs_src_dir(build_dir)
+ make_all_images(build_dir)
+
+ # run all tests for each image
+ for image in standard_table.keys():
try:
- # list files in root directory
- output = u_boot_console.run_command("sqfsls host 0")
- assert str(len(opt.files) + 1) + " file(s), 0 dir(s)" in output
- assert "<SYM> sym" in output
- output = u_boot_console.run_command("sqfsls host 0 xxx")
- assert "** Cannot find directory. **" in output
+ image_path = os.path.join(build_dir, image)
+ u_boot_console.run_command('host bind 0 {}'.format(image_path))
+ sqfs_run_all_ls_tests(u_boot_console)
except:
- opt.cleanup(build_dir)
- assert False
- opt.cleanup(build_dir)
+ clean_all_images(build_dir)
+ clean_sqfs_src_dir(build_dir)
+ raise AssertionError
+
+ # clean test environment
+ clean_all_images(build_dir)
+ clean_sqfs_src_dir(build_dir)
Add more details to test cases by comparing each expected line with the command's output. Add new test cases: - sqfsls at an empty directory - sqfsls at a sub-directory Signed-off-by: Joao Marcos Costa <jmcosta944@gmail.com> --- .../test_fs/test_squashfs/test_sqfs_ls.py | 80 ++++++++++++++----- 1 file changed, 62 insertions(+), 18 deletions(-)