1 /*
2 * Copyright (c) 2020 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7
8 #include "test_fat.h"
9
10 /* mounting info */
11 static struct fs_mount_t fatfs_mnt = {
12 .type = FS_FATFS,
13 .mnt_point = FATFS_MNTP,
14 .fs_data = &fat_fs,
15 };
16
test_prepare(void)17 static void test_prepare(void)
18 {
19 struct fs_file_t fs;
20
21 fs_file_t_init(&fs);
22 zassert_equal(fs_mount(&fatfs_mnt), 0);
23 zassert_equal(fs_open(&fs, FATFS_MNTP"/testfile.txt", FS_O_CREATE), 0);
24 zassert_equal(fs_close(&fs), 0);
25 zassert_equal(fs_unmount(&fatfs_mnt), 0);
26 }
27
test_unmount(void)28 static void test_unmount(void)
29 {
30 zassert_true(fs_unmount(&fatfs_mnt) >= 0);
31 }
32
test_ops_on_rd(void)33 static void test_ops_on_rd(void)
34 {
35 struct fs_file_t fs;
36 int ret;
37
38 fs_file_t_init(&fs);
39 /* Check fs operation on volume mounted with FS_MOUNT_FLAG_READ_ONLY */
40 fatfs_mnt.flags = FS_MOUNT_FLAG_READ_ONLY;
41 TC_PRINT("Mount as read-only\n");
42 ret = fs_mount(&fatfs_mnt);
43 zassert_equal(ret, 0, "Expected success got %d", ret);
44
45 /* Attempt creating new file */
46 ret = fs_open(&fs, FATFS_MNTP"/nosome", FS_O_CREATE);
47 zassert_equal(ret, -EROFS, "Expected EROFS got %d", ret);
48 ret = fs_mkdir(FATFS_MNTP"/another");
49 zassert_equal(ret, -EROFS, "Expected EROFS got %d", ret);
50 ret = fs_rename(FATFS_MNTP"/testfile.txt", FATFS_MNTP"/bestfile.txt");
51 zassert_equal(ret, -EROFS, "Expected EROFS got %d", ret);
52 ret = fs_unlink(FATFS_MNTP"/testfile.txt");
53 zassert_equal(ret, -EROFS, "Expected EROFS got %d", ret);
54 ret = fs_open(&fs, FATFS_MNTP"/testfile.txt", FS_O_RDWR);
55 zassert_equal(ret, -EROFS, "Expected EROFS got %d", ret);
56 ret = fs_open(&fs, FATFS_MNTP"/testfile.txt", FS_O_READ);
57 zassert_equal(ret, 0, "Expected success got %d", ret);
58 fs_close(&fs);
59 }
60
ZTEST(fat_fs_basic,test_fat_mount_rd_only)61 ZTEST(fat_fs_basic, test_fat_mount_rd_only)
62 {
63 test_prepare();
64 test_ops_on_rd();
65 test_unmount();
66 }
67