Commit 659c2143 authored by Franciszek Zdobylak's avatar Franciszek Zdobylak Committed by Carles Cufi
Browse files

tests: fs: Add test of fs_mkfs

Test is added to common directory and used in LittleFS tests.

Signed-off-by: default avatarFranciszek Zdobylak <fzdobylak@internships.antmicro.com>
parent dcbb0b4c
Loading
Loading
Loading
Loading
+96 −0
Changes for tests/subsys/fs/common/test_fs_mkfs.c: 96 added lines, 0 removed lines.
Original line number Diff line number Diff line
/*
 * Copyright (c) 2022 Antmicro
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/kernel.h>
#include <zephyr/ztest.h>
#include <zephyr/fs/fs.h>

/* Mount point and paths must be provided by test runner. */
extern struct fs_mount_t *fs_mkfs_mp;
extern const int fs_mkfs_type;
extern uintptr_t fs_mkfs_dev_id;
extern int fs_mkfs_flags;
extern const char *some_file_path;
extern const char *other_dir_path;

/* This test assumes that storage device is erased. */
void test_fs_mkfs_simple(void)
{
	int ret = 0;

	TC_PRINT("Mount with flag no format\n");
	fs_mkfs_mp->flags = FS_MOUNT_FLAG_NO_FORMAT;
	ret = fs_mount(fs_mkfs_mp);

	if (fs_mkfs_mp->type == FS_LITTLEFS) {
		zassert_equal(ret, -EILSEQ, "Expected EILSEQ got %d", ret);
	} else if (fs_mkfs_mp->type == FS_FATFS) {
		zassert_equal(ret, -ENODEV, "Expected ENODEV got %d", ret);
	}

	TC_PRINT("Try mkfs with RW access\n");
	ret = fs_mkfs(fs_mkfs_type, fs_mkfs_dev_id, NULL, fs_mkfs_dev_id);
	zassert_equal(ret, 0, "Expected successful mkfs (%d)", ret);

	TC_PRINT("Mount created file system without formatting\n");
	fs_mkfs_mp->flags = FS_MOUNT_FLAG_NO_FORMAT;
	ret = fs_mount(fs_mkfs_mp);
	zassert_equal(ret, 0, "Expected successful mount (%d)", ret);
	ret = fs_unmount(fs_mkfs_mp);
	zassert_equal(ret, 0, "Expected fs_unmount success (%d)", ret);
}

/* This test assumes that storage device is erased. */
void test_fs_mkfs_ops(void)
{
	int ret = 0;
	struct fs_file_t fs;
	struct fs_dir_t dir;
	struct fs_dirent entry;

	fs_file_t_init(&fs);
	fs_dir_t_init(&dir);

	/* Format volume and add some files/dirs */
	TC_PRINT("Mount to prepare tests\n");
	fs_mkfs_mp->flags = 0;
	ret = fs_mount(fs_mkfs_mp);
	zassert_equal(ret, 0, "Expected success (%d)", ret);
	TC_PRINT("Create some file\n");
	ret = fs_open(&fs, some_file_path, FS_O_CREATE);
	zassert_equal(ret, 0, "Expected success fs_open(FS_O_CREATE) (%d)",
		      ret);
	ret = fs_close(&fs);
	zassert_equal(ret, 0, "Expected fs_close success (%d)", ret);
	TC_PRINT("Create other directory\n");
	ret = fs_mkdir(other_dir_path);
	zassert_equal(ret, 0, "Expected fs_mkdir success (%d)", ret);
	ret = fs_unmount(fs_mkfs_mp);
	zassert_equal(ret, 0, "Expected fs_umount success (%d)", ret);

	/* Format file system using fs_mkfs and check if it was formatted */
	TC_PRINT("Try mkfs\n");
	ret = fs_mkfs(fs_mkfs_type, fs_mkfs_dev_id, NULL, fs_mkfs_dev_id);
	zassert_equal(ret, 0, "Expected successful format (%d)", ret);
	fs_mkfs_mp->flags = FS_MOUNT_FLAG_NO_FORMAT;
	ret = fs_mount(fs_mkfs_mp);
	zassert_equal(ret, 0, "Expected successful mount (%d)", ret);
	ret = fs_stat(some_file_path, &entry);
	zassert_equal(ret, -ENOENT, "Expected ENOENT got %d", ret);
	ret = fs_stat(other_dir_path, &entry);
	zassert_equal(ret, -ENOENT, "Expected ENOENT got %d", ret);
	TC_PRINT("Create some file\n");
	ret = fs_open(&fs, some_file_path, FS_O_CREATE);
	zassert_equal(ret, 0, "Expected success fs_open(FS_O_CREATE) (%d)",
		      ret);
	ret = fs_close(&fs);
	zassert_equal(ret, 0, "Expected fs_close success (%d)", ret);
	TC_PRINT("Create other directory\n");
	ret = fs_mkdir(other_dir_path);
	zassert_equal(ret, 0, "Expected fs_mkdir success (%d)", ret);
	ret = fs_unmount(fs_mkfs_mp);
	zassert_equal(ret, 0, "Expected fs_unmount success (%d)", ret);
}
+4 −1
Changes for tests/subsys/fs/fat_fs_api/CMakeLists.txt: 4 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -5,4 +5,7 @@ find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(fat_fs_api)

FILE(GLOB app_sources src/*.c)
target_sources(app PRIVATE ${app_sources} ../common/test_fs_open_flags.c)
target_sources(app PRIVATE
  ${app_sources}
  ../common/test_fs_open_flags.c
  ../common/test_fs_mkfs.c)
+3 −0
Changes for tests/subsys/fs/fat_fs_api/prj.conf: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
CONFIG_FILE_SYSTEM=y
CONFIG_FILE_SYSTEM_MKFS=y
CONFIG_LOG=y
CONFIG_FAT_FILESYSTEM_ELM=y
CONFIG_DISK_DRIVER_FLASH=y
@@ -6,3 +7,5 @@ CONFIG_SPI=y
CONFIG_GPIO=y
CONFIG_ZTEST=y
CONFIG_ZTEST_NEW_API=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
+3 −0
Changes for tests/subsys/fs/fat_fs_api/prj_lfn.conf: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
CONFIG_FILE_SYSTEM=y
CONFIG_FILE_SYSTEM_MKFS=y
CONFIG_LOG=y
CONFIG_FAT_FILESYSTEM_ELM=y
CONFIG_FS_FATFS_LFN=y
CONFIG_DISK_DRIVER_FLASH=y
CONFIG_ZTEST=y
CONFIG_ZTEST_NEW_API=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
+3 −0
Changes for tests/subsys/fs/fat_fs_api/prj_native_posix.conf: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
CONFIG_FILE_SYSTEM=y
CONFIG_FILE_SYSTEM_MKFS=y
CONFIG_LOG=y
CONFIG_FAT_FILESYSTEM_ELM=y
CONFIG_DISK_DRIVER_FLASH=y
CONFIG_ZTEST=y
CONFIG_ZTEST_NEW_API=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
Loading