97dd42db9db77d4cd559ec38a21a1b6dfaeb446b
[yaffs2.git] / direct / timothy_tests / quick_tests / README.txt
1
2 Made by Timothy Manning <timothy@yaffs.net> on 04/11/2010
3
4
5 Tests made
6
7 test_yaffs_access.c
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
15 test_yaffs_chmod.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
23 test_yaffs_close.c
24 test_yaffs_close_EBADF.c
25 test_yaffs_fchmod.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
32 test_yaffs_flush.c
33 test_yaffs_flush_EBADF.c
34 test_yaffs_flush_EROFS.c
35 test_yaffs_freespace.c
36 test_yaffs_freespace_EINVAL.c
37 test_yaffs_fstat.c
38 test_yaffs_fstat_EBADF.c
39 test_yaffs_fsync.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
49 test_yaffs_link.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
60 test_yaffs_lseek.c
61 test_yaffs_lseek_EBADF.c
62 test_yaffs_lseek_EINVAL.c
63 test_yaffs_lseek_EROFS.c
64 test_yaffs_lstat.c
65 test_yaffs_lstat_ENOENT.c
66 test_yaffs_lstat_ENOTDIR.c
67 test_yaffs_mkdir.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
73 test_yaffs_mount2.c
74 test_yaffs_mount2_ENODEV.c
75 test_yaffs_mount.c
76 test_yaffs_mount_EBUSY.c
77 test_yaffs_mount_ENAMETOOLONG.c
78 test_yaffs_mount_ENODEV.c
79 test_yaffs_open.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
90 test_yaffs_read.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
99 test_yaffs_rename.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
112 test_yaffs_rmdir.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
119 test_yaffs_stat.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
125 test_yaffs_symlink.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
132 test_yaffs_sync.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
147 test_yaffs_unlink.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
160 test_yaffs_unmount.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
165 test_yaffs_write.c
166 test_yaffs_write_EBADF.c
167 test_yaffs_write_EROFS.c
168
169
170
171 Tests to add
172         test_yaffs_fchmod_EACCES
173
174         test_yaffs_chmod_EACCES
175
176         test_yaffs_chmod_ENAMETOOLONG
177
178         
179         test_yaffs_lstat_EACCES
180         test_yaffs_lstat_ENAMETOOLONG
181
182
183         test_yaffs_readlink
184         test_yaffs_readlink_ENOENT
185         test_yaffs_readlink_ENOTDIR
186         test_yaffs_readlink_ELOOP
187         test_yaffs_readlink_ENAMETOOLONG
188
189         
190         test_yaffs_mkdir_EACCES
191         test_yaffs_mkdir_ENAMETOOLONG
192
193
194
195         test_yaffs_symlink_EACCES
196         test_yaffs_symlink_ENAMETOOLONG
197
198
199         test_yaffs_mount2_ENAMETOOLONG
200         test_yaffs_mount2_with read only set
201
202         test_yaffs_unmount2_ENAMETOOLONG
203
204         test_yaffs_remount_force_off_read_only_on
205         test_yaffs_remount_force_on_read_only_on
206
207         test_yaffs_freespace_ENAMETOOLONG
208         test_yaffs_totalspace_ENAMETOOLONG
209         test_yaffs_inodecount_ENAMETOOLONG
210
211         test_yaffs_opendir
212
213         test_yaffs_readdir
214
215         test_yaffs_rewinddir
216
217         test_yaffs_closedir
218
219         test_yaffs_link_EACCES
220
221         test_yaffs_link_ENAMETOOLONG
222         test_yaffs_link_EPERM
223
224
225
226         test_yaffs_rmdir_EACCES
227         test_yaffs_rmdir_ENOTEMPTY
228
229
230
231
232
233         test_yaffs_rename_EACCES
234         test_yaffs_rename_EMLINK
235         test_yaffs_rename_EEXISTS or EPERM
236
237
238         test_yaffs_dup
239         test_yaffs_dup_EBADF            
240
241         test_yaffs_fchmod_EACCES
242         test_yaffs_fchmod_ELOOP
243
244
245         test_yaffs_open_EACCES
246         test_yaffs_open_ENOSPC
247         test_yaffs_open_ELOOP   
248         test yaffs_open_running_out_of_handles error
249
250         
251         
252
253         test_yaffs_stat_EACCES
254         test_yaffs_stat_ENAMETOOLONG
255
256         test_yaffs_read_big_file
257         test what happens if you read off the end of the file?
258
259         test_yaffs_pread
260         test_yaffs_pread_EBADF
261         test_yaffs_pread_EINVAL
262         test_yaffs_pread_big_file
263
264         test_yaffs_write_big_file
265         test_yaffs_write_EINVAL
266         What happens when you run out of space?
267         
268         test_yaffs_write_EBADF
269         test_yaffs_write
270         test_yaffs_pwrite_big_file
271         test_yaffs_pwrite_EINVAL
272
273         test_yaffs_unlink_EACCES
274
275         test_yaffs_unlink_ENOMEM
276
277         test_yaffs_stat_EACCES
278         test_yaffs_stat_ELOOP
279
280         test_yaffs_access_EACCESS
281         test_yaffs_access_ENAMETOOLONG
282         test_yaffs_access_ENOENT_generated_with_a_dangling_symbloic_link
283
284         test_yaffs_ftruncate_EACCES     
285
286
287         test_yaffs_truncate_EACCES
288         test_yaffs_truncate_ENAMETOOLONG
289         Add a truncate function for truncating a file size to -1.
290
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?
294
295         What happens when yaffs is unmounted twice?
296
297         What happens when open a handle, unmount yaffs and then try to use the handle? 
298
299         What happens when a mount point is mounted using mount2 with read only mode set and then a file is chmoded? 
300
301         Try to remove lost and found dir and replace it with a file of the same name.
302
303         Change the mode of the lost and found dir to read only.
304
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.
308
309         test_yaffs_link_EMLINK          //should not happen on yaffs
310         test_yaffs_link_ELOOP
311         
312         test_yaffs_lstat_ELOOP
313
314         test_yaffs_mkdir_ELOOP
315
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
325
326         teat_yaffs_mount_ELOOP
327
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
332
333         test_yaffs_remount_ENOENT       //cannot be generated in yaffs
334         test_yaffs_remount_ENOTDIR      //cannot be generated in yaffs
335
336         test_yaffs_unmount2_ENOENT      //cannot be generated in yaffs.
337         test_yaffs_unmount2_ENOTDIR     //cannot be generated in yaffs.
338
339 How to add a test
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]
345         
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.
352
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.
357         
358         So if a test is been created for the yaffs function yaffs_foo() then 
359         create these files
360         test_yaffs_foo.c
361                 Contains int test_yaffs_foo(void); int test_yaffs_foo_clean(void);
362         test_yaffs_foo.h
363                 Which includes "lib.h", "yaffsfs.h" header files.
364
365         Next write the test code in these files then add these files to the Makefile.
366
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.   
369
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 
373         yaffs_function. 
374         This array consists of: 
375         {[test function], [the clean function], [name of the tests which will be printed when the test fails]}, 
376         
377         So add this line to the test_list[]: {test_yaffs_foo, test_yaffs_foo_clean, "test_yaffs_foo"},
378
379         Also include the test's .h file in the quick_test.h file: #include "test_yaffs_foo.h"
380         
381         The test file should now make and run(you may need to make clean first). 
382
383
384
385         PS: yaffs_foo() is a made up function for this README (in case you want 
386         to find this function in yaffs). 
387
388
389
390
391
392