2 Made by Timothy Manning <timothy@yaffs.net> on 04/11/2010
8 test_yaffs_access_EINVAL.c
9 test_yaffs_access_ELOOP.c
10 test_yaffs_access_ELOOP_dir.c
11 test_yaffs_access_ENOENT2.c
12 test_yaffs_access_ENOENT.c
13 test_yaffs_access_ENOTDIR.c
14 test_yaffs_access_EROFS.c
16 test_yaffs_chmod_EINVAL.c
17 test_yaffs_chmod_ELOOP.c
18 test_yaffs_chmod_ELOOP_dir.c
19 test_yaffs_chmod_ENOENT2.c
20 test_yaffs_chmod_ENOENT.c
21 test_yaffs_chmod_ENOTDIR.c
22 test_yaffs_chmod_EROFS.c
24 test_yaffs_close_EBADF.c
26 test_yaffs_fchmod_EBADF.c
27 test_yaffs_fchmod_EINVAL.c
28 test_yaffs_fchmod_EROFS.c
29 test_yaffs_fdatasync.c
30 test_yaffs_fdatasync_EBADF.c
31 test_yaffs_fdatasync_EROFS.c
33 test_yaffs_flush_EBADF.c
34 test_yaffs_flush_EROFS.c
35 test_yaffs_freespace.c
36 test_yaffs_freespace_EINVAL.c
38 test_yaffs_fstat_EBADF.c
40 test_yaffs_fsync_EBADF.c
41 test_yaffs_fsync_EROFS.c
42 test_yaffs_ftruncate_big_file.c
43 test_yaffs_ftruncate.c
44 test_yaffs_ftruncate_EBADF.c
45 test_yaffs_ftruncate_EINVAL.c
46 test_yaffs_ftruncate_EROFS.c
47 test_yaffs_inodecount.c
48 test_yaffs_inodecount_EINVAL.c
50 test_yaffs_link_EEXIST.c
51 test_yaffs_link_ELOOP_dir.c
52 test_yaffs_link_ENOENT2.c
53 test_yaffs_link_ENOENT3.c
54 test_yaffs_link_ENOENT4.c
55 test_yaffs_link_ENOENT.c
56 test_yaffs_link_ENOTDIR2.c
57 test_yaffs_link_ENOTDIR.c
58 test_yaffs_link_EROFS.c
59 test_yaffs_lseek_big_file.c
61 test_yaffs_lseek_EBADF.c
62 test_yaffs_lseek_EINVAL.c
63 test_yaffs_lseek_EROFS.c
65 test_yaffs_lstat_ENOENT.c
66 test_yaffs_lstat_ENOTDIR.c
68 test_yaffs_mkdir_EEXIST.c
69 test_yaffs_mkdir_ELOOP_dir.c
70 test_yaffs_mkdir_ENOENT.c
71 test_yaffs_mkdir_ENOTDIR.c
72 test_yaffs_mkdir_EROFS.c
74 test_yaffs_mount2_ENODEV.c
76 test_yaffs_mount_EBUSY.c
77 test_yaffs_mount_ENAMETOOLONG.c
78 test_yaffs_mount_ENODEV.c
80 test_yaffs_open_EEXIST.c
81 test_yaffs_open_EINVAL2.c
82 test_yaffs_open_EINVAL.c
83 test_yaffs_open_EISDIR.c
84 test_yaffs_open_ELOOP.c
85 test_yaffs_open_ELOOP_dir.c
86 test_yaffs_open_ENAMETOOLONG.c
87 test_yaffs_open_ENOENT.c
88 test_yaffs_open_ENOTDIR.c
89 test_yaffs_open_EROFS.c
91 test_yaffs_read_EBADF.c
92 test_yaffs_read_EINVAL.c
93 test_yaffs_remount_EINVAL.c
94 test_yaffs_remount_ENODEV.c
95 test_yaffs_remount_force_off_read_only_off.c
96 test_yaffs_remount_force_off_read_only_on.c
97 test_yaffs_remount_force_on_read_only_off.c
98 test_yaffs_remount_force_on_read_only_on.c
100 test_yaffs_rename_dir.c
101 test_yaffs_rename_dir_ENOENT2.c
102 test_yaffs_rename_dir_ENOENT.c
103 test_yaffs_rename_dir_not_empty.c
104 test_yaffs_rename_dir_to_file.c
105 test_yaffs_rename_EEXISTS.c
106 test_yaffs_rename_EINVAL.c
107 test_yaffs_rename_ELOOP_dir.c
108 test_yaffs_rename_ENOENT.c
109 test_yaffs_rename_ENOTDIR.c
110 test_yaffs_rename_EROFS.c
111 test_yaffs_rename_file_to_dir.c
113 test_yaffs_rmdir_EBUSY.c
114 test_yaffs_rmdir_EINVAL.c
115 test_yaffs_rmdir_ELOOP_dir.c
116 test_yaffs_rmdir_ENOENT.c
117 test_yaffs_rmdir_ENOTDIR.c
118 test_yaffs_rmdir_EROFS.c
120 test_yaffs_stat_ELOOP.c
121 test_yaffs_stat_ELOOP_dir.c
122 test_yaffs_stat_ENOENT2.c
123 test_yaffs_stat_ENOENT.c
124 test_yaffs_stat_ENOTDIR.c
126 test_yaffs_symlink_EEXIST.c
127 test_yaffs_symlink_ELOOP_dir.c
128 test_yaffs_symlink_ENOENT2.c
129 test_yaffs_symlink_ENOENT.c
130 test_yaffs_symlink_ENOTDIR.c
131 test_yaffs_symlink_EROFS.c
133 test_yaffs_sync_ENODEV.c
134 test_yaffs_sync_EROFS.c
135 test_yaffs_totalspace.c
136 test_yaffs_totalspace_EINVAL.c
137 test_yaffs_truncate_big_file.c
138 test_yaffs_truncate.c
139 test_yaffs_truncate_EINVAL.c
140 test_yaffs_truncate_EISDIR.c
141 test_yaffs_truncate_ELOOP.c
142 test_yaffs_truncate_ELOOP_dir.c
143 test_yaffs_truncate_ENOENT2.c
144 test_yaffs_truncate_ENOENT.c
145 test_yaffs_truncate_ENOTDIR.c
146 test_yaffs_truncate_EROFS.c
148 test_yaffs_unlink_EISDIR.c
149 test_yaffs_unlink_ELOOP_dir.c
150 test_yaffs_unlink_ENAMETOOLONG.c
151 test_yaffs_unlink_ENOENT2.c
152 test_yaffs_unlink_ENOENT.c
153 test_yaffs_unlink_ENOTDIR.c
154 test_yaffs_unlink_EROFS.c
155 test_yaffs_unmount2.c
156 test_yaffs_unmount2_EINVAL.c
157 test_yaffs_unmount2_ENODEV.c
158 test_yaffs_unmount2_with_handle_open_and_forced_mode_off.c
159 test_yaffs_unmount2_with_handle_open_and_forced_mode_on.c
161 test_yaffs_unmount_EBUSY.c
162 test_yaffs_unmount_ENAMETOOLONG.c
163 test_yaffs_unmount_ENODEV.c
164 test_yaffs_write_big_file.c
166 test_yaffs_write_EBADF.c
167 test_yaffs_write_EROFS.c
172 test_yaffs_fchmod_EACCES
174 test_yaffs_chmod_EACCES
176 test_yaffs_chmod_ENAMETOOLONG
179 test_yaffs_lstat_EACCES
180 test_yaffs_lstat_ENAMETOOLONG
184 test_yaffs_readlink_ENOENT
185 test_yaffs_readlink_ENOTDIR
186 test_yaffs_readlink_ELOOP
187 test_yaffs_readlink_ENAMETOOLONG
190 test_yaffs_mkdir_EACCES
191 test_yaffs_mkdir_ENAMETOOLONG
195 test_yaffs_symlink_EACCES
196 test_yaffs_symlink_ENAMETOOLONG
199 test_yaffs_mount2_ENAMETOOLONG
200 test_yaffs_mount2_with read only set
202 test_yaffs_unmount2_ENAMETOOLONG
204 test_yaffs_remount_force_off_read_only_on
205 test_yaffs_remount_force_on_read_only_on
207 test_yaffs_freespace_ENAMETOOLONG
208 test_yaffs_totalspace_ENAMETOOLONG
209 test_yaffs_inodecount_ENAMETOOLONG
219 test_yaffs_link_EACCES
221 test_yaffs_link_ENAMETOOLONG
222 test_yaffs_link_EPERM
226 test_yaffs_rmdir_EACCES
227 test_yaffs_rmdir_ENOTEMPTY
233 test_yaffs_rename_EACCES
234 test_yaffs_rename_EMLINK
235 test_yaffs_rename_EEXISTS or EPERM
241 test_yaffs_fchmod_EACCES
242 test_yaffs_fchmod_ELOOP
245 test_yaffs_open_EACCES
246 test_yaffs_open_ENOSPC
247 test_yaffs_open_ELOOP
248 test yaffs_open_running_out_of_handles error
253 test_yaffs_stat_EACCES
254 test_yaffs_stat_ENAMETOOLONG
256 test_yaffs_read_big_file
257 test what happens if you read off the end of the file?
260 test_yaffs_pread_EBADF
261 test_yaffs_pread_EINVAL
262 test_yaffs_pread_big_file
264 test_yaffs_write_big_file
265 test_yaffs_write_EINVAL
266 What happens when you run out of space?
268 test_yaffs_write_EBADF
270 test_yaffs_pwrite_big_file
271 test_yaffs_pwrite_EINVAL
273 test_yaffs_unlink_EACCES
275 test_yaffs_unlink_ENOMEM
277 test_yaffs_stat_EACCES
278 test_yaffs_stat_ELOOP
280 test_yaffs_access_EACCESS
281 test_yaffs_access_ENAMETOOLONG
282 test_yaffs_access_ENOENT_generated_with_a_dangling_symbloic_link
284 test_yaffs_ftruncate_EACCES
287 test_yaffs_truncate_EACCES
288 test_yaffs_truncate_ENAMETOOLONG
289 Add a truncate function for truncating a file size to -1.
291 What happens if a handle is opened to a file and the file is then deleted?
292 Check to see if yaffs generates an error code for no reason.
293 What happens when a file is opened with no modes set?
295 What happens when yaffs is unmounted twice?
297 What happens when open a handle, unmount yaffs and then try to use the handle?
299 What happens when a mount point is mounted using mount2 with read only mode set and then a file is chmoded?
301 Try to remove lost and found dir and replace it with a file of the same name.
303 Change the mode of the lost and found dir to read only.
305 Tests which do not exist in yaffs:
306 test_yaffs_close //This function has already been called by the time this test is reached,
307 //so there is no point in testing it.
309 test_yaffs_link_EMLINK //should not happen on yaffs
310 test_yaffs_link_ELOOP
312 test_yaffs_lstat_ELOOP
314 test_yaffs_mkdir_ELOOP
316 //the yaffs_mknod function does not exist in yaffsfs, so these tests will not be added.
317 test_yaffs_mknod_EACCES
318 test_yaffs_mknod_EEXIST
319 test_yaffs_mknod_EINVAL
320 test_yaffs_mknod_ELOOP
321 test_yaffs_mknod_ENAMETOOLONG
322 test_yaffs_mknod_ENOENT
323 test_yaffs_mknod_ENOTDIR
324 test_yaffs_mknod_EROFS
326 teat_yaffs_mount_ELOOP
328 test_yaffs_mount2_EINVAL //cannot happen in yaffs since the mode is not checked.
329 test_yaffs_mount2_ENOTDIR //cannot be generated in yaffs.
330 test_yaffs_mount2_ENOENT //cannot be generated in yaffs.
331 test_yaffs_mount2_ELOOP
333 test_yaffs_remount_ENOENT //cannot be generated in yaffs
334 test_yaffs_remount_ENOTDIR //cannot be generated in yaffs
336 test_yaffs_unmount2_ENOENT //cannot be generated in yaffs.
337 test_yaffs_unmount2_ENOTDIR //cannot be generated in yaffs.
340 First create the test .c and .h file.
341 The file name and test function name should be the same.
342 This name should follow one of these formats:
343 Test_yaffs_[function of yaffs which is been tested]
344 Test_yaffs_[function of yaffs which is been tested]_[error trying to be generated]
346 The .c file needs to contain two functions.
347 The first function needs to contain the code for the main test and will
348 return -1 on a failure and 0 or greater on a success.
349 The second function needs contain the code for cleaning up after the test.
350 Cleaning up may include closing some open handles, recreating a file, ect.
351 This second function needs to return -1 on a failure and 0 or greater on success.
353 The name of first function needs to be called the same as the file
354 name (without the .c or .h)
355 The second function's name needs be the same as the first function but
356 with "_clean" added on the end.
358 So if a test is been created for the yaffs function yaffs_foo() then
361 Contains int test_yaffs_foo(void); int test_yaffs_foo_clean(void);
363 Which includes "lib.h", "yaffsfs.h" header files.
365 Next write the test code in these files then add these files to the Makefile.
367 Add the name of the test files' object file (test_yaffs_foo.o ) to the
368 TESTFILES tag around line 50 of the Makefile.
370 Now add the test functions to the test_list[] array in quick_tests.h
371 The order of the tests matters. The idea is to test each yaffs_function
372 individualy and only using tested yaffs_components before using this new
374 This array consists of:
375 {[test function], [the clean function], [name of the tests which will be printed when the test fails]},
377 So add this line to the test_list[]: {test_yaffs_foo, test_yaffs_foo_clean, "test_yaffs_foo"},
379 Also include the test's .h file in the quick_test.h file: #include "test_yaffs_foo.h"
381 The test file should now make and run(you may need to make clean first).
385 PS: yaffs_foo() is a made up function for this README (in case you want
386 to find this function in yaffs).