@@ -105,3 +105,60 @@ ZTEST(posix_fs_stat_test, test_fs_stat_dir)
105
105
/* note: for posix compatibility should should actually work */
106
106
zassert_not_equal (0 , stat (TEST_ROOT , & buf ));
107
107
}
108
+
109
+ /**
110
+ * @brief Test fstat command on file
111
+ *
112
+ * @details Tests file in root, file in directroy, and empty file
113
+ */
114
+ ZTEST (posix_fs_stat_test , test_fs_fstat_file )
115
+ {
116
+ struct stat buf ;
117
+
118
+ int test_file_fd = open (TEST_FILE , O_RDONLY );
119
+ int dir_file_fd = open (TEST_DIR_FILE , O_RDONLY );
120
+ int empty_file_fd = open (TEST_EMPTY_FILE , O_RDONLY );
121
+
122
+ zassert_not_equal (-1 , test_file_fd );
123
+ zassert_equal (0 , fstat (test_file_fd , & buf ));
124
+ zassert_equal (TEST_FILE_SIZE , buf .st_size );
125
+ zassert_equal (S_IFREG , buf .st_mode );
126
+ close (test_file_fd );
127
+
128
+ zassert_not_equal (-1 , dir_file_fd );
129
+ zassert_equal (0 , fstat (dir_file_fd , & buf ));
130
+ zassert_equal (TEST_DIR_FILE_SIZE , buf .st_size );
131
+ zassert_equal (S_IFREG , buf .st_mode );
132
+ close (dir_file_fd );
133
+
134
+ zassert_not_equal (-1 , empty_file_fd );
135
+ zassert_equal (0 , fstat (empty_file_fd , & buf ));
136
+ zassert_equal (0 , buf .st_size );
137
+ zassert_equal (S_IFREG , buf .st_mode );
138
+ close (empty_file_fd );
139
+ }
140
+
141
+ /**
142
+ * @brief Test fstat command on dir
143
+ *
144
+ * @details Tests if we can retrieve stastics for a directory.
145
+ */
146
+ ZTEST (posix_fs_stat_test , test_fs_fstat_dir )
147
+ {
148
+ struct stat buf ;
149
+
150
+ int fd = open (TEST_DIR , O_RDONLY );
151
+
152
+ /*
153
+ * if this failed it means open doesn't support directories
154
+ * so skip the rest of the test
155
+ */
156
+ if (fd == -1 ) {
157
+ ztest_test_skip ();
158
+ }
159
+
160
+ zassert_equal (0 , fstat (fd , & buf ));
161
+ zassert_equal (0 , buf .st_size );
162
+ zassert_equal (S_IFDIR , buf .st_mode );
163
+ close (fd );
164
+ }
0 commit comments