/* * Copyright (c) 2023 Antmicro * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include "utils.h" ZTEST(ext2tests, test_dirops_basic) { struct fs_mount_t *mp = &testfs_mnt; zassert_equal(fs_mount(mp), 0, "Mount failed"); struct fs_file_t file; struct fs_dirent stat; fs_file_t_init(&file); /* Create some directories */ zassert_equal(fs_mkdir("/sml/dir1"), 0, "Create dir1 failed"); zassert_equal(fs_mkdir("/sml/dir2"), 0, "Create dir2 failed"); /* Create some files */ zassert_equal(fs_open(&file, "/sml/file1", FS_O_CREATE), 0, "Create file1 failed"); zassert_equal(fs_close(&file), 0, "Close file error"); zassert_equal(fs_open(&file, "/sml/dir1/file2", FS_O_CREATE), 0, "Create file2 failed"); zassert_equal(fs_close(&file), 0, "Close file error"); zassert_equal(fs_open(&file, "/sml/dir2/file3", FS_O_CREATE), 0, "Create file3 failed"); zassert_equal(fs_close(&file), 0, "Close file error"); /* Check if directories will open as files */ zassert_equal(fs_open(&file, "/sml/dir1", 0), -EINVAL, "Should return error"); zassert_equal(fs_open(&file, "/sml/dir2", 0), -EINVAL, "Should return error"); /* Check directories with stat */ zassert_equal(fs_stat("/sml/dir1", &stat), 0, "Stat dir1 failed"); zassert_equal(stat.type, FS_DIR_ENTRY_DIR, "Wrong type"); zassert_equal(stat.size, 0, "Wrong directory size"); zassert_mem_equal(stat.name, "dir1", 5, "Wrong directory name"); zassert_equal(fs_stat("/sml/dir2", &stat), 0, "Stat dir2 failed"); zassert_equal(stat.type, FS_DIR_ENTRY_DIR, "Wrong type"); zassert_equal(stat.size, 0, "Wrong directory size"); zassert_mem_equal(stat.name, "dir2", 5, "Wrong directory name"); /* Check if files will open correctly */ zassert_equal(fs_open(&file, "/sml/file1", 0), 0, "Open file1 should succeed"); zassert_equal(fs_close(&file), 0, "Close file error"); zassert_equal(fs_open(&file, "/sml/dir1/file2", 0), 0, "Open file2 should succeed"); zassert_equal(fs_close(&file), 0, "Close file error"); zassert_equal(fs_open(&file, "/sml/dir2/file3", 0), 0, "Open file3 should succeed"); zassert_equal(fs_close(&file), 0, "Close file error"); /* Check files with stat */ zassert_equal(fs_stat("/sml/file1", &stat), 0, "Stat file1 failed"); zassert_equal(stat.type, FS_DIR_ENTRY_FILE, "Wrong type"); zassert_equal(stat.size, 0, "Wrong file size"); zassert_mem_equal(stat.name, "file1", 6, "Wrong file name"); zassert_equal(fs_stat("/sml/dir1/file2", &stat), 0, "Stat file1 failed"); zassert_equal(stat.type, FS_DIR_ENTRY_FILE, "Wrong type"); zassert_equal(stat.size, 0, "Wrong file size"); zassert_mem_equal(stat.name, "file2", 6, "Wrong file name"); zassert_equal(fs_stat("/sml/dir2/file3", &stat), 0, "Stat file1 failed"); zassert_equal(stat.type, FS_DIR_ENTRY_FILE, "Wrong type"); zassert_equal(stat.size, 0, "Wrong file size"); zassert_mem_equal(stat.name, "file3", 6, "Wrong file name"); /* Check for some nonexisting files */ zassert_equal(fs_open(&file, "/sml/file2", 0), -ENOENT, "Should not exist"); zassert_equal(fs_open(&file, "/sml/file3", 0), -ENOENT, "Should not exist"); zassert_equal(fs_open(&file, "/sml/dir1/file1", 0), -ENOENT, "Should not exist"); zassert_equal(fs_open(&file, "/sml/dir1/file3", 0), -ENOENT, "Should not exist"); zassert_equal(fs_open(&file, "/sml/dir2/file1", 0), -ENOENT, "Should not exist"); zassert_equal(fs_open(&file, "/sml/dir2/file2", 0), -ENOENT, "Should not exist"); zassert_equal(fs_unmount(mp), 0, "Unmount failed"); }