# SPDX-License-Identifier: GPL-2.0+ # Copyright (c) 2018, Linaro Limited # Author: Takahiro Akashi # # 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)