yaffs Updated quick tests' README.
[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 the yaffs_open function has been covered by tests
6 the yaffs_close function has been covered by tests
7
8 tests made
9         test_yaffs_mount
10         test_yaffs_mount_ENODEV
11         test_yaffs_access
12         test_yaffs_close_EBADF
13         test_yaffs_ftruncate
14         test_yaffs_lseek
15         test_yaffs_open
16         test_yaffs_open_EEXIST
17         test_yaffs_open_EISDIR
18         test_yaffs_open_ENAMETOOLONG
19         test_yaffs_open_ENOENT
20         test_yaffs_open_ENOTDIR
21         test_yaffs_read
22         test_yaffs_stat
23         test_yaffs_truncate
24         test_yaffs_unlink
25         test_yaffs_unlink_EISDIR
26         test_yaffs_unlink_ENAMETOOLONG
27         test_yaffs_unlink_ENOENT
28         test_yaffs_unlink_ENOTDIR
29         test_yaffs_write
30
31
32 tests to add
33         test_yaffs_mount_EACCES         //Cannot be generated with yaffs.
34         test_yaffs_mount_EINVAL         //Cannot be generated with yaffs.
35         test_yaffs_mount_ELOOP          //Cannot be generated with yaffs.
36         test_yaffs_mount_EMFILE         //Cannot be generated with yaffs.
37         test_yaffs_mount_ENAMETOOLONG
38         test_yaffs_mount_ENOENT
39         test_yaffs_mount_ENOTDIR        //Cannot be generated with yaffs.
40
41         test_yaffs_open_EACCES
42         test_yaffs_open_ENOSPC
43         test_yaffs_open_ELOOP   //Too many symbolic links were encountered in resolving pathname
44         test yaffs_open_running_out_of_handles error
45
46         test_yaffs_close        //This function has already been called by the time this test is reached. 
47
48         test_yaffs_unlink_EACCES
49         test_yaffs_unlink_ELOOP
50         test_yaffs_unlink_ENOENT
51         test_yaffs_unlink_ENOMEM
52
53         test_yaffs_access_EACCESS
54         test_yaffs_access_ELOOP
55         test_yaffs_access_ENAMETOOLONG
56         test_yaffs_access_ENOENT
57         test_yaffs_access_ENOTDIR
58         test_yaffs_access_ENIVAL        //mode is incorrect.
59
60         test_yaffs_ftruncate_EACCES
61         test_yaffs_ftruncate_EFBIG
62         test_yaffs_ftruncate_ENIVAL
63         test_yaffs_ftruncate_EISDIR
64         test_yaffs_ftruncate_ELOOP
65         test_yaffs_ftruncate_ENOENT
66         test_yaffs_ftruncate_ENOTDIR
67         test_yaffs_ftruncate_EPERM
68
69         test_yaffs_truncate_EACCES
70         test_yaffs_truncate_EFBIG
71         test_yaffs_truncate_ENIVAL
72         test_yaffs_truncate_EISDIR
73         test_yaffs_truncate_ELOOP
74         test_yaffs_truncate_ENAMETOOLONG
75         test_yaffs_truncate_ENOENT
76         test_yaffs_truncate_ENOTDIR
77         test_yaffs_truncate_EPERM
78
79         check to see if an error code is generated when there isn't an error.
80
81
82 How to add a test
83         First create the test .c and .h file.
84         The file name and test function name should be the same. 
85         This name should follow one of these formats: 
86         Test_yaffs_[function of yaffs which is been tested]
87         Test_yaffs_[function of yaffs which is been tested]_[error trying to be generated]
88         
89         The .c file needs to contain two functions.
90         The first function needs to contain the code for the main test and will return -1 on a failure and 0 or greater on a success.
91         The second function needs contain the code for cleaning up after the test. Cleaning up may include closing some open handles, recreating a file, ect. 
92         This second function needs to return -1 on a failure and 0 or greater on success.
93
94         The name of first function needs to be called the same as the file name (without the .c or .h)
95         The second function's name needs be the same as the first function but with "_clean" added on the end.
96         
97         So if a test is been created for the yaffs function yaffs_fish() then create these files
98         Test_yaffs_fish.c
99                 Contains int test_yaffs_fish(void); int test_yaffs_fish_clean(void);
100         Test_yaffs_fish.h
101                 Which includes "lib.h", "yaffsfs.h" header files.
102
103         Next write the test code in these files then add these files to the Makefile.
104
105         Add the name of the test files' object file (test_yaffs_fish.o ) to the TESTFILES tag around line 50 of the Makefile.   
106
107
108
109         Now add the test functions to the test_list[] array in quick_tests.h
110         The order of the tests matters. The idea is to test each yaffs_function individualy and only using tested yaffs_components before using this new yaffs_function. 
111         This array consists of: {[test function], [the clean function], [name of the tests which will be printed when the test fails]}, 
112         
113         So add this line to the test_list[]: {test_yaffs_fish, test_yaffs_fish_clean, "test_yaffs_fish"},
114
115         Also include the test's .h file in the quick_test.h file: #include "test_yaffs_fish.h"
116
117         The test file should now make and run. 
118         
119         
120         
121
122
123
124         PS: yaffs_fish() is a made up function for this README (in case you want to try and find this function in yaffs). 
125
126
127 BUGS
128         bug with opening a file with a name of 1,000,000 char long with no errors.
129         bug with unlinking a file with 1,000,000 get the error ENOENT but should be geting ENAMETOOLONG. 
130         
131         FIXED-ENOSPC error in programs test_yaffs_open_ENOTDIR and test_yaffs_open_ENOENT.
132         FIXED-ENOENT been returned by yaffs_read but the handle is good and the yaffs_open function does not return an error.
133
134
135
136