diff options
| author | AKASHI Takahiro <takahiro.akashi@linaro.org> | 2018-09-11 15:59:21 +0900 | 
|---|---|---|
| committer | Alexander Graf <agraf@suse.de> | 2018-09-23 21:55:30 +0200 | 
| commit | 50ca19cca9dff527eacdf487b8f172f279f22327 (patch) | |
| tree | 8c19c6b4244e2cfcfbc4ba9b56ceb6f18d63d02d /test/py/tests/test_fs | |
| parent | 71f27af58ef90f65e1de3a86fda3915361b0d4a8 (diff) | |
test/py: fs: add fstest/mkdir test
In this commit, test cases for mkdir interfaces are added as part of
"test_fs" test suite.
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'test/py/tests/test_fs')
| -rw-r--r-- | test/py/tests/test_fs/conftest.py | 29 | ||||
| -rw-r--r-- | test/py/tests/test_fs/test_mkdir.py | 112 | 
2 files changed, 141 insertions, 0 deletions
| diff --git a/test/py/tests/test_fs/conftest.py b/test/py/tests/test_fs/conftest.py index d2908590be1..71abf8fa422 100644 --- a/test/py/tests/test_fs/conftest.py +++ b/test/py/tests/test_fs/conftest.py @@ -11,6 +11,7 @@ from fstest_defs import *  supported_fs_basic = ['fat16', 'fat32', 'ext4']  supported_fs_ext = ['fat16', 'fat32'] +supported_fs_mkdir = ['fat16', 'fat32']  #  # Filesystem test specific setup @@ -22,6 +23,7 @@ def pytest_addoption(parser):  def pytest_configure(config):      global supported_fs_basic      global supported_fs_ext +    global supported_fs_mkdir      def intersect(listA, listB):          return  [x for x in listA if x in listB] @@ -31,6 +33,7 @@ def pytest_configure(config):          print("*** FS TYPE modified: %s" % supported_fs)          supported_fs_basic =  intersect(supported_fs, supported_fs_basic)          supported_fs_ext =  intersect(supported_fs, supported_fs_ext) +        supported_fs_mkdir =  intersect(supported_fs, supported_fs_mkdir)  def pytest_generate_tests(metafunc):      if 'fs_obj_basic' in metafunc.fixturenames: @@ -39,6 +42,9 @@ def pytest_generate_tests(metafunc):      if 'fs_obj_ext' in metafunc.fixturenames:          metafunc.parametrize('fs_obj_ext', supported_fs_ext,              indirect=True, scope='module') +    if 'fs_obj_mkdir' in metafunc.fixturenames: +        metafunc.parametrize('fs_obj_mkdir', supported_fs_mkdir, +            indirect=True, scope='module')  #  # Helper functions @@ -299,3 +305,26 @@ def fs_obj_ext(request, u_boot_config):          call('rmdir %s' % mount_dir, shell=True)          if fs_img:              call('rm -f %s' % fs_img, shell=True) + +# +# Fixture for mkdir test +# +# NOTE: yield_fixture was deprecated since pytest-3.0 +@pytest.yield_fixture() +def fs_obj_mkdir(request, u_boot_config): +    fs_type = request.param +    fs_img = '' + +    fs_ubtype = fstype_to_ubname(fs_type) +    check_ubconfig(u_boot_config, fs_ubtype) + +    try: +        # 128MiB volume +        fs_img = mk_fs(u_boot_config, fs_type, 0x8000000, '128MB') +    except: +        pytest.skip('Setup failed for filesystem: ' + fs_type) +    else: +        yield [fs_ubtype, fs_img] +    finally: +        if fs_img: +            call('rm -f %s' % fs_img, shell=True) diff --git a/test/py/tests/test_fs/test_mkdir.py b/test/py/tests/test_fs/test_mkdir.py new file mode 100644 index 00000000000..d9da97b56b5 --- /dev/null +++ b/test/py/tests/test_fs/test_mkdir.py @@ -0,0 +1,112 @@ +# SPDX-License-Identifier:      GPL-2.0+ +# Copyright (c) 2018, Linaro Limited +# Author: Takahiro Akashi <takahiro.akashi@linaro.org> +# +# U-Boot File System:mkdir Test + +""" +This test verifies mkdir operation on file system. +""" + +import pytest + +@pytest.mark.boardspec('sandbox') +class TestMkdir(object): +    def test_mkdir1(self, u_boot_console, fs_obj_mkdir): +        """ +        Test Case 1 - create a directory under a root +        """ +        fs_type,fs_img = fs_obj_mkdir +        with u_boot_console.log.section('Test Case 1 - mkdir'): +            output = u_boot_console.run_command_list([ +                'host bind 0 %s' % fs_img, +                '%smkdir host 0:0 dir1' % fs_type, +                '%sls host 0:0 /' % fs_type]) +            assert('dir1/' in ''.join(output)) + +            output = u_boot_console.run_command( +                '%sls host 0:0 dir1' % fs_type) +            assert('./'   in output) +            assert('../'  in output) + +    def test_mkdir2(self, u_boot_console, fs_obj_mkdir): +        """ +        Test Case 2 - create a directory under a sub-directory +        """ +        fs_type,fs_img = fs_obj_mkdir +        with u_boot_console.log.section('Test Case 2 - mkdir (sub-sub directory)'): +            output = u_boot_console.run_command_list([ +                'host bind 0 %s' % fs_img, +                '%smkdir host 0:0 dir1/dir2' % fs_type, +                '%sls host 0:0 dir1' % fs_type]) +            assert('dir2/' in ''.join(output)) + +            output = u_boot_console.run_command( +                '%sls host 0:0 dir1/dir2' % fs_type) +            assert('./'   in output) +            assert('../'  in output) + +    def test_mkdir3(self, u_boot_console, fs_obj_mkdir): +        """ +        Test Case 3 - trying to create a directory with a non-existing +        path should fail +        """ +        fs_type,fs_img = fs_obj_mkdir +        with u_boot_console.log.section('Test Case 3 - mkdir (non-existing path)'): +            output = u_boot_console.run_command_list([ +                'host bind 0 %s' % fs_img, +                '%smkdir host 0:0 none/dir3' % fs_type]) +            assert('Unable to create a directory' in ''.join(output)) + +    def test_mkdir4(self, u_boot_console, fs_obj_mkdir): +        """ +        Test Case 4 - trying to create "." should fail +        """ +        fs_type,fs_img = fs_obj_mkdir +        with u_boot_console.log.section('Test Case 4 - mkdir (".")'): +            output = u_boot_console.run_command_list([ +                'host bind 0 %s' % fs_img, +                '%smkdir host 0:0 .' % fs_type]) +            assert('Unable to create a directory' in ''.join(output)) + +    def test_mkdir5(self, u_boot_console, fs_obj_mkdir): +        """ +        Test Case 5 - trying to create ".." should fail +        """ +        fs_type,fs_img = fs_obj_mkdir +        with u_boot_console.log.section('Test Case 5 - mkdir ("..")'): +            output = u_boot_console.run_command_list([ +                'host bind 0 %s' % fs_img, +                '%smkdir host 0:0 ..' % fs_type]) +            assert('Unable to create a directory' in ''.join(output)) + +    def test_mkdir6(self, u_boot_console, fs_obj_mkdir): +        """ +        'Test Case 6 - create as many directories as amount of directory +        entries goes beyond a cluster size)' +        """ +        fs_type,fs_img = fs_obj_mkdir +        with u_boot_console.log.section('Test Case 6 - mkdir (create many)'): +            output = u_boot_console.run_command_list([ +                'host bind 0 %s' % fs_img, +                '%smkdir host 0:0 dir6' % fs_type, +                '%sls host 0:0 /' % fs_type]) +            assert('dir6/' in ''.join(output)) + +            for i in range(0, 20): +                output = u_boot_console.run_command( +                    '%smkdir host 0:0 dir6/0123456789abcdef%02x' +                    % (fs_type, i)) +            output = u_boot_console.run_command('%sls host 0:0 dir6' % fs_type) +            assert('0123456789abcdef00/'  in output) +            assert('0123456789abcdef13/'  in output) + +            output = u_boot_console.run_command( +                '%sls host 0:0 dir6/0123456789abcdef13/.' % fs_type) +            assert('./'   in output) +            assert('../'  in output) + +            output = u_boot_console.run_command( +                '%sls host 0:0 dir6/0123456789abcdef13/..' % fs_type) +            assert('0123456789abcdef00/'  in output) +            assert('0123456789abcdef13/'  in output) | 
