| # 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 |
| from fstest_helpers import assert_fs_integrity |
| |
| @pytest.mark.boardspec('sandbox') |
| @pytest.mark.slow |
| 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) |
| assert_fs_integrity(fs_type, fs_img) |
| |
| |
| 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) |
| assert_fs_integrity(fs_type, fs_img) |
| |
| 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)) |
| assert_fs_integrity(fs_type, fs_img) |
| |
| 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)) |
| assert_fs_integrity(fs_type, fs_img) |
| |
| 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)) |
| assert_fs_integrity(fs_type, fs_img) |
| |
| 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) |
| assert_fs_integrity(fs_type, fs_img) |