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