blob: 92b1ed400905bf477df21b7a41e1f4f66ed97ef8 [file] [log] [blame]
/*
* Copyright (c) 2020 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <ztest.h>
#include "test_fs.h"
static struct test_fs_data test_data;
static struct fs_mount_t mp = {
.type = TEST_FS_1,
.mnt_point = TEST_FS_MNTP,
.fs_data = &test_data,
};
void test_mount_flags(void)
{
int ret = 0;
struct fs_file_t fs;
fs_file_t_init(&fs);
/* Format volume and add some files/dirs to check read-only flag */
mp.flags = 0;
TC_PRINT("Mount to prepare tests\n");
ret = fs_mount(&mp);
zassert_equal(ret, 0, "Expected success (%d)", ret);
TC_PRINT("Create some file\n");
ret = fs_open(&fs, TEST_FS_MNTP"/some", 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(TEST_FS_MNTP"/other");
zassert_equal(ret, 0, "Expected fs_mkdir success (%d)", ret);
ret = fs_unmount(&mp);
zassert_equal(ret, 0, "Expected fs_umount success (%d)", ret);
/* Check fs operation on volume mounted with FS_MOUNT_FLAG_READ_ONLY */
mp.flags = FS_MOUNT_FLAG_READ_ONLY;
TC_PRINT("Mount as read-only\n");
ret = fs_mount(&mp);
zassert_equal(ret, 0, "Expected fs_mount success (%d)", ret);
/* Attempt creating new file */
ret = fs_open(&fs, TEST_FS_MNTP"/nosome", FS_O_CREATE);
zassert_equal(ret, -EROFS, "Expected EROFS got %d", ret);
ret = fs_mkdir(TEST_FS_MNTP"/another");
zassert_equal(ret, -EROFS, "Expected EROFS got %d", ret);
ret = fs_rename(TEST_FS_MNTP"/some", TEST_FS_MNTP"/nosome");
zassert_equal(ret, -EROFS, "Expected EROFS got %d", ret);
ret = fs_unlink(TEST_FS_MNTP"/some");
zassert_equal(ret, -EROFS, "Expected EROFS got %d", ret);
ret = fs_open(&fs, TEST_FS_MNTP"/other", FS_O_CREATE);
zassert_equal(ret, -EROFS, "Expected EROFS got %d", ret);
ret = fs_open(&fs, TEST_FS_MNTP"/some", FS_O_RDWR);
zassert_equal(ret, -EROFS, "Expected EROFS got %d", ret);
ret = fs_open(&fs, TEST_FS_MNTP"/some", FS_O_READ);
zassert_equal(ret, 0, "Expected fs_open(FS_O_READ) success (%d)", ret);
ret = fs_close(&fs);
zassert_equal(ret, 0, "Expected fs_close success (%d)", ret);
ret = fs_unmount(&mp);
zassert_equal(ret, 0, "Expected fs_unmount success (%d)", ret);
}