2 Made by Timothy Manning <timothy@yaffs.net> on 04/11/2010
8 test_yaffs_access_EINVAL.c
9 test_yaffs_access_ENOENT2.c
10 test_yaffs_access_ENOENT.c
11 test_yaffs_access_ENOTDIR.c
14 test_yaffs_chmod_EINVAL.c
15 test_yaffs_chmod_ENOENT2.c
16 test_yaffs_chmod_ENOENT.c
17 test_yaffs_chmod_ENOTDIR.c
20 test_yaffs_close_EBADF.c
23 test_yaffs_fchmod_EBADF.c
24 test_yaffs_fchmod_EINVAL.c
26 test_yaffs_fdatasync.c
27 test_yaffs_fdatasync_EBADF.c
29 test_yaffs_freespace.c
30 test_yaffs_freespace_EINVAL.c
33 test_yaffs_fstat_EBADF.c
36 test_yaffs_fsync_EBADF.c
38 test_yaffs_ftruncate_big_file.c
39 test_yaffs_ftruncate.c
40 test_yaffs_ftruncate_EBADF.c
41 test_yaffs_ftruncate_EINVAL.c
43 test_yaffs_inodecount.c
44 test_yaffs_inodecount_EINVAL.c
47 test_yaffs_link_EEXIST.c
48 test_yaffs_link_ENOENT2.c
49 test_yaffs_link_ENOENT3.c
50 test_yaffs_link_ENOENT.c
51 test_yaffs_link_ENOTDIR2.c
52 test_yaffs_link_ENOTDIR.c
54 test_yaffs_lseek_big_file.c
56 test_yaffs_lseek_EBADF.c
57 test_yaffs_lseek_EINVAL.c
60 test_yaffs_mkdir_EEXIST.c
61 test_yaffs_mkdir_ENOENT.c
62 test_yaffs_mkdir_ENOTDIR.c
67 test_yaffs_mount2_ENODEV.c
70 test_yaffs_mount_EBUSY.c
71 test_yaffs_mount_ENAMETOOLONG.c
72 test_yaffs_mount_ENODEV.c
75 test_yaffs_open_EEXIST.c
76 test_yaffs_open_EINVAL2.c
77 test_yaffs_open_EINVAL.c
78 test_yaffs_open_EISDIR.c
79 test_yaffs_open_ENAMETOOLONG.c
80 test_yaffs_open_ENOENT.c
81 test_yaffs_open_ENOTDIR.c
84 test_yaffs_read_EBADF.c
85 test_yaffs_read_EINVAL.c
87 test_yaffs_remount_EINVAL.c
88 test_yaffs_remount_ENODEV.c
89 test_yaffs_remount_force_off_read_only_off.c
90 test_yaffs_remount_force_off_read_only_on.c
91 test_yaffs_remount_force_on_read_only_off.c
92 test_yaffs_remount_force_on_read_only_on.c
95 test_yaffs_rename_ENOENT
96 test_yaffs_rename_ENOTDIR
97 test_yaffs_rename_EINVAL
100 test_yaffs_rmdir_EBUSY
101 test_yaffs_rmdir_EINVAL
102 test_yaffs_rmdir_ENOENT
103 test_yaffs_rmdir_ENOTDIR
106 test_yaffs_stat_ENOENT2.c
107 test_yaffs_stat_ENOENT.c
108 test_yaffs_stat_ENOTDIR.c
111 test_yaffs_symlink_EEXIST.c
112 test_yaffs_symlink_ENOENT2.c
113 test_yaffs_symlink_ENOENT.c
114 test_yaffs_symlink_ENOTDIR.c
117 test_yaffs_sync_ENODEV.c
119 test_yaffs_totalspace.c
120 test_yaffs_totalspace_EINVAL.c
122 test_yaffs_truncate.c
123 test_yaffs_truncate_big_file.c
124 test_yaffs_truncate_EINVAL.c
125 test_yaffs_truncate_EISDIR.c
126 test_yaffs_truncate_ENOENT2.c
127 test_yaffs_truncate_ENOENT.c
128 test_yaffs_truncate_ENOTDIR.c
131 test_yaffs_unlink_EISDIR.c
132 test_yaffs_unlink_ENAMETOOLONG.c
133 test_yaffs_unlink_ENOENT2.c
134 test_yaffs_unlink_ENOENT.c
135 test_yaffs_unlink_ENOTDIR.c
137 test_yaffs_unmount2.c
138 test_yaffs_unmount2_EINVAL.c
139 test_yaffs_unmount2_ENODEV.c
140 test_yaffs_unmount2_with_handle_open_and_forced_mode_off.c
141 test_yaffs_unmount2_with_handle_open_and_forced_mode_on.c
144 test_yaffs_unmount_EBUSY.c
145 test_yaffs_unmount_ENAMETOOLONG.c
146 test_yaffs_unmount_ENODEV.c
149 test_yaffs_write_big_file.c
150 test_yaffs_write_EBADF.c
155 test_yaffs_fchmod_EACCES
157 test_yaffs_chmod_EACCES
158 test_yaffs_chmod_ELOOP
159 test_yaffs_chmod_ENAMETOOLONG
162 test_yaffs_lstat_EACCES
163 test_yaffs_lstat_ENOTDIR
164 test_yaffs_lstat_ENAMETOOLONG
165 test_yaffs_lstat_ENOENT
166 test_yaffs_lstat_ELOOP
169 test_yaffs_readlink_ENOENT
170 test_yaffs_readlink_ENOTDIR
171 test_yaffs_readlink_ELOOP
172 test_yaffs_readlink_ENAMETOOLONG
175 test_yaffs_mkdir_EACCES
176 test_yaffs_mkdir_ELOOP
177 test_yaffs_mkdir_ENAMETOOLONG
178 test_yaffs_mkdir_EROFS
181 test_yaffs_symlink_EACCES
182 test_yaffs_symlink_ELOOP
183 test_yaffs_symlink_ENAMETOOLONG
184 test_yaffs_symlink_EROFS
186 test_yaffs_mount2_ENAMETOOLONG
187 test_yaffs_mount2_with read only set
189 test_yaffs_unmount2_ENAMETOOLONG
191 test_yaffs_remount_force_off_read_only_on
192 test_yaffs_remount_force_on_read_only_on
194 test_yaffs_freespace_ENAMETOOLONG
195 test_yaffs_totalspace_ENAMETOOLONG
196 test_yaffs_inodecount_ENAMETOOLONG
206 test_yaffs_link_EACCES
208 test_yaffs_link_ELOOP
210 test_yaffs_link_ENAMETOOLONG
211 test_yaffs_link_EPERM
212 test_yaffs_link_EROFS
215 test_yaffs_rmdir_EACCES
216 test_yaffs_rmdir_ENOTEMPTY
217 test_yaffs_rmdir_EROFS
221 test_yaffs_rename_EACCES
222 test_yaffs_rename_ELOOP
223 test_yaffs_rename_EMLINK
224 test_yaffs_rename_EEXISTS or EPERM
225 test_yaffs_rename_EROFS
231 test_yaffs_flush_EBADF
233 test_yaffs_fchmod_EACCES
234 test_yaffs_fchmod_ELOOP
237 test_yaffs_open_EACCES
238 test_yaffs_open_ENOSPC
239 test_yaffs_open_ELOOP
240 test yaffs_open_running_out_of_handles error
242 test_yaffs_close //This function has already been called by the time this test is reached.
244 test_yaffs_stat_ELOOP
245 test_yaffs_stat_EACCES
246 test_yaffs_stat_ENAMETOOLONG
248 test_yaffs_read_big_file
249 test what happens if you read off the end of the file?
252 test_yaffs_pread_EBADF
253 test_yaffs_pread_EINVAL
254 test_yaffs_pread_big_file
256 test_yaffs_write_big_file
257 test_yaffs_write_EINVAL
258 What happens when you run out of space?
260 test_yaffs_write_EBADF
262 test_yaffs_pwrite_big_file
263 test_yaffs_pwrite_EINVAL
265 test_yaffs_unlink_EACCES
266 test_yaffs_unlink_ELOOP
267 test_yaffs_unlink_ENOMEM
269 test_yaffs_stat_EACCES
270 test_yaffs_stat_ELOOP
272 test_yaffs_access_EACCESS
273 test_yaffs_access_ELOOP
274 test_yaffs_access_ENAMETOOLONG
275 test_yaffs_access_ENOENT_generated_with_a_dangling_symbloic_link
277 test_yaffs_ftruncate_EACCES
280 test_yaffs_truncate_EACCES
281 test_yaffs_truncate_ELOOP
282 test_yaffs_truncate_ENAMETOOLONG
283 Add a truncate function for truncating a file size to -1.
285 What happens if a handle is opened to a file and the file is then deleted?
286 Check to see if yaffs generates an error code for no reason.
287 What happens when a file is opened with no modes set?
288 Add a test where a directory is moved. /fluffy/box. move "fluffy" to "/fluffy/frog".
289 What happens when yaffs is unmounted twice?
291 What happens when open a handle, unmount yaffs and then try to use the handle?
293 What happens when a mount point is mounted using mount2 with read only mode set and then a file is chmoded?
296 Tests which do not exist in yaffs:
298 test_yaffs_link_EMLINK //should not happen on yaffs
300 //the yaffs_mknod function does not exist in yaffsfs, so these tests will not be added.
302 test_yaffs_mknod_EACCES
303 test_yaffs_mknod_EEXIST
304 test_yaffs_mknod_EINVAL
305 test_yaffs_mknod_ELOOP
306 test_yaffs_mknod_ENAMETOOLONG
307 test_yaffs_mknod_ENOENT
308 test_yaffs_mknod_ENOTDIR
309 test_yaffs_mknod_EROFS
311 test_yaffs_mount2_EINVAL //cannot happen in yaffs since the mode is not checked.
312 test_yaffs_mount2_ENOTDIR //cannot be generated in yaffs.
313 test_yaffs_mount2_ENOENT //cannot be generated in yaffs.
315 test_yaffs_remount_ENOENT //cannot be generated in yaffs
316 test_yaffs_remount_ENOTDIR //cannot be generated in yaffs
318 test_yaffs_unmount2_ENOENT //cannot be generated in yaffs.
319 test_yaffs_unmount2_ENOTDIR //cannot be generated in yaffs.
322 First create the test .c and .h file.
323 The file name and test function name should be the same.
324 This name should follow one of these formats:
325 Test_yaffs_[function of yaffs which is been tested]
326 Test_yaffs_[function of yaffs which is been tested]_[error trying to be generated]
328 The .c file needs to contain two functions.
329 The first function needs to contain the code for the main test and will
330 return -1 on a failure and 0 or greater on a success.
331 The second function needs contain the code for cleaning up after the test.
332 Cleaning up may include closing some open handles, recreating a file, ect.
333 This second function needs to return -1 on a failure and 0 or greater on success.
335 The name of first function needs to be called the same as the file
336 name (without the .c or .h)
337 The second function's name needs be the same as the first function but
338 with "_clean" added on the end.
340 So if a test is been created for the yaffs function yaffs_foo() then
343 Contains int test_yaffs_foo(void); int test_yaffs_foo_clean(void);
345 Which includes "lib.h", "yaffsfs.h" header files.
347 Next write the test code in these files then add these files to the Makefile.
349 Add the name of the test files' object file (test_yaffs_foo.o ) to the
350 TESTFILES tag around line 50 of the Makefile.
352 Now add the test functions to the test_list[] array in quick_tests.h
353 The order of the tests matters. The idea is to test each yaffs_function
354 individualy and only using tested yaffs_components before using this new
356 This array consists of:
357 {[test function], [the clean function], [name of the tests which will be printed when the test fails]},
359 So add this line to the test_list[]: {test_yaffs_foo, test_yaffs_foo_clean, "test_yaffs_foo"},
361 Also include the test's .h file in the quick_test.h file: #include "test_yaffs_foo.h"
363 The test file should now make and run(you may need to make clean first).
367 PS: yaffs_foo() is a made up function for this README (in case you want
368 to find this function in yaffs).