X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Ftimothy_tests%2Fquick_tests%2FREADME.txt;h=7ebc1fbd30c74a40d860d747fe340746294d0451;hp=fca9396b7590d39506749b6eaa4940e4c2bc8359;hb=d84af1d4633120e3dea173c7f91aa8cfc3421706;hpb=250248634f57704c06d3ae5050febb33ad5c67d8 diff --git a/direct/timothy_tests/quick_tests/README.txt b/direct/timothy_tests/quick_tests/README.txt index fca9396..7ebc1fb 100644 --- a/direct/timothy_tests/quick_tests/README.txt +++ b/direct/timothy_tests/quick_tests/README.txt @@ -2,55 +2,281 @@ Made by Timothy Manning on 04/11/2010 -the yaffs_open function has been covered by tests -the yaffs_close function has been covered by tests +Tests made + test_yaffs_chmod + test_yaffs_chmod_ENOENT + test_yaffs_chmod_ENOTDIR + + test_yaffs_fchmod + test_yaffs_fchmod_EBADF -tests made test_yaffs_mount + test_yaffs_mount_ENODEV + test_yaffs_mount_ENAMETOOLONG + test_yaffs_mount_EBUSY //caused by trying to mount a new mount point with a mount point already mounted. + test_yaffs_access - test_yaffs_close + test_yaffs_access_ENIVAL + test_yaffs_access_ENOTDIR + test_yaffs_access_ENOENT + test_yaffs_close_EBADF + test_yaffs_ftruncate + test_yaffs_ftruncate_EBADF + test_yaffs_ftruncate_ENIVAL + test_yaffs_ftruncate_EFBIG + test_yaffs_lseek + test_yaffs_lseek_EBADF + test_yaffs_lseek_EINVAL + test_yaffs_lseek_EFBIG + test_yaffs_open test_yaffs_open_EEXIST test_yaffs_open_EISDIR test_yaffs_open_ENAMETOOLONG test_yaffs_open_ENOENT test_yaffs_open_ENOTDIR + test_yaffs_open_EINVAL + test_yaffs_open_EINVAL2 //the function open has two modes which can be set, so two tests are needed. + test_yaffs_read + test_yaffs_read_EBADF + test_yaffs_read_EINVAL + + test_yaffs_stat + test_yaffs_stat_ENOENT + test_yaffs_stat_ENOTDIR + + test_yaffs_fstat + test_yaffs_fstat_EBADF + test_yaffs_truncate + test_yaffs_truncate_ENOTDIR + test_yaffs_truncate_EISDIR + test_yaffs_truncate_ENOENT + test_yaffs_truncate_ENIVAL + test_yaffs_truncate_EFBIG + + test_yaffs_unlink test_yaffs_unlink_EISDIR test_yaffs_unlink_ENAMETOOLONG test_yaffs_unlink_ENOENT test_yaffs_unlink_ENOTDIR + + test_yaffs_unmount + test_yaffs_unmount_ENODEV + test_yaffs_unmount_ENAMETOOLONG + test_yaffs_umount_EBUSY //cause by having a file handle open and then trying to unmount yaffs. + test_yaffs_write -tests to add - test_yaffs_mount_EACCES - test_yaffs_mount_EINVAL - test_yaffs_mount_ELOOP - test_yaffs_mount_EMFILE - test_yaffs_mount_ENAMETOOLONG - test_yaffs_mount_ENOENT - test_yaffs_mount_ENOTDIR + test_yaffs_write_EBADF + + + +Tests to add + test_yaffs_fchmod_EACCES + test_yaffs_fchmod_EINVAL + test_yaffs_fchmod + + test_yaffs_chmod_EACCES + test_yaffs_chmod_ELOOP + test_yaffs_chmod_ENAMETOOLONG + + test_yaffs_fsync + test_yaffs_fsync_EBADF + + test_yaffs_datasync + test_yaffs_datasync_EBADF + + test_yaffs_lstat + test_yaffs_lstat_EACCES + test_yaffs_lstat_ENOTDIR + test_yaffs_lstat_ENAMETOOLONG + test_yaffs_lstat_ENOENT + test_yaffs_lstat_ELOOP + + test_yaffs_readlink + test_yaffs_readlink_ENOENT + test_yaffs_readlink_ENOTDIR + test_yaffs_readlink_ELOOP + test_yaffs_readlink_ENAMETOOLONG + + test_yaffs_mkdir + test_yaffs_mkdir_EACCES + test_yaffs_mkdir_EEXISTS + test_yaffs_mkdir_ELOOP + test_yaffs_mkdir_ENAMETOOLONG + test_yaffs_mkdir_ENOENT + test_yaffs_mkdir_ENOTDIR + test_yaffs_mkdir_EROFS + + test_yaffs_symlink + test_yaffs_symlink_EACCES + test_yaffs_symlink_EEXISTS + test_yaffs_symlink_ELOOP + test_yaffs_symlink_ENAMETOOLONG + test_yaffs_symlink_ENOENT + test_yaffs_symlink_ENOTDIR + test_yaffs_symlink_EROFS + + test_yaffs_mknod + test_yaffs_mknod_EACCES + test_yaffs_mknod_EEXIST + test_yaffs_mknod_EINVAL + test_yaffs_mknod_ELOOP + test_yaffs_mknod_ENAMETOOLONG + test_yaffs_mknod_ENOENT + test_yaffs_mknod_ENOTDIR + test_yaffs_mknod_EROFS + + test_yaffs_mount2 + test_yaffs_mount2_EINVAL + test_yaffs_mount2_ENOTDIR + test_yaffs_mount2_ENOENT + test_yaffs_mount2_ENODEV + test_yaffs_mount2_ENAMETOOLONG + + test_yaffs_unmount2 + test_yaffs_unmount2_ENOENT + test_yaffs_unmount2_ENOTDIR + test_yaffs_unmount2_ENODEV + test_yaffs_unmount2_EINVAL + + test_yaffs_remount2 + test_yaffs_remount2_ENOENT + test_yaffs_remount2_ENOTDIR + test_yaffs_remount2_ENODEV + test_yaffs_remount2_EINVAL + + test_yaffs_sync + test_yaffs_sync_ENOENT + test_yaffs_sync_ENOTDIR + + test_yaffs_freespace + test_yaffs_freespace_ENOENT + test_yaffs_freespace_ENOTDIR + + test_yaffs_totalspace + test_yaffs_totalspace_ENOTDIR + test_yaffs_totalspace_ENOENT + + test_yaffs_inodecount + test_yaffs_inodecount_ENOTDIR + test_yaffs_inodecount_ENOENT + + test_yaffs_opendir + + test_yaffs_readdir + + test_yaffs_rewinddir + + test_yaffs_closedir + + test_yaffs_link + test_yaffs_link_EACCES + test_yaffs_link_EEXISTS + test_yaffs_link_ELOOP + test_yaffs_link_EMLINK //should not happen on yaffs + test_yaffs_link_ENAMETOOLONG + test_yaffs_link_ENOENT + test_yaffs_link_ENOTDIR + test_yaffs_link_EPERM + test_yaffs_link_EROFS + + test_yaffs_rmdir + test_yaffs_rmdir_EACCES + test_yaffs_rmdir_EBUSY + test_yaffs_rmdir_ENVAL + test_yaffs_rmdir_ENOENT + test_yaffs_rmdir_ENOTDIR + test_yaffs_rmdir_ENOTEMPTY + test_yaffs_rmdir_EROFS + + test_yaffs_rename + test_yaffs_rename_EACCES + test_yaffs_rename_EINVAL + test_yaffs_rename_ELOOP + test_yaffs_rename_EMLINK + test_yaffs_rename_ENOENT + test_yaffs_rename_ENOTDIR + test_yaffs_rename_EEXISTS or EPERM + test_yaffs_rename_EROFS + + test_yaffs_rename + + test_yaffs_dup + test_yaffs_dup_EBADF + + test_yaffs_flush + test_yaffs_flush_EBADF + + test_yaffs_fchmod_EACCES + test_yaffs_fchmod_ELOOP + + test_yaffs_open_EACCES test_yaffs_open_ENOSPC - test_yaffs_open_ELOOP Too many symbolic links were encountered in resolving pathname - test_yaffs_close + test_yaffs_open_ELOOP test yaffs_open_running_out_of_handles error + + test_yaffs_close //This function has already been called by the time this test is reached. + + test_yaffs_stat_EBADF + test_yaffs_stat_ELOOP + test_yaffs_stat_EACCES + test_yaffs_stat_ENAMETOOLONG + test_yaffs_stat_ENOTDIR + + + test_yaffs_read_EFBIG + test what happens if you read off the end of the file? + + test_yaffs_pread + test_yaffs_pread_EBADF + test_yaffs_pread_EINVAL + test_yaffs_pread_EFBIG + + test_yaffs_write_EFBIG + test_yaffs_write_EINVAL + What happens when you run out of space? + + test_yaffs_write_EBADF + test_yaffs_write + test_yaffs_pwrite_EFBIG + test_yaffs_pwrite_EINVAL + test_yaffs_unlink_EACCES test_yaffs_unlink_ELOOP - test_yaffs_unlink_ENOENT test_yaffs_unlink_ENOMEM - check to see if an error code is generated when there isn't an error + + test_yaffs_stat_EACCES + test_yaffs_stat_ELOOP + test_yaffs_access_EACCESS test_yaffs_access_ELOOP test_yaffs_access_ENAMETOOLONG - test_yaffs_access_ENOENT - test_yaffs_access_ENOTDIR - test_yaffs_access_ENIVAL //mode is incorrect. + test_yaffs_access_ENOENT_generated_with_a_dangling_symbloic_link + + test_yaffs_ftruncate_EACCES + + test_yaffs_truncate_EACCES + test_yaffs_truncate_ELOOP + test_yaffs_truncate_ENAMETOOLONG + Add a truncate function for truncating a file size to -1. + + What happens if a handle is opened to a file and the file is then deleted? + Check to see if yaffs generates an error code for no reason. + What happens when a file is opened with no modes set? + Add a test where a directory is moved. /fluffy/box. move "fluffy" to "/fluffy/frog". + What happens when yaffs is unmounted twice? + + What happens when open a handle, unmount yaffs and then try to use the handle? + + What happens when a mount point is mounted using mount2 with read only mode set and then a file is chmoded? How to add a test First create the test .c and .h file. @@ -60,50 +286,48 @@ How to add a test Test_yaffs_[function of yaffs which is been tested]_[error trying to be generated] The .c file needs to contain two functions. - 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. - 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. + 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. + 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. This second function needs to return -1 on a failure and 0 or greater on success. - The name of first function needs to be called the same as the file name (without the .c or .h) - The second function's name needs be the same as the first function but with "_clean" added on the end. + The name of first function needs to be called the same as the file + name (without the .c or .h) + The second function's name needs be the same as the first function but + with "_clean" added on the end. - So if a test is been created for the yaffs function yaffs_fish() then create these files - Test_yaffs_fish.c - Contains int test_yaffs_fish(void); int test_yaffs_fish_clean(void); - Test_yaffs_fish.h + So if a test is been created for the yaffs function yaffs_foo() then + create these files + test_yaffs_foo.c + Contains int test_yaffs_foo(void); int test_yaffs_foo_clean(void); + test_yaffs_foo.h Which includes "lib.h", "yaffsfs.h" header files. Next write the test code in these files then add these files to the Makefile. - Add the name of the test files' object file (test_yaffs_fish.o ) to the TESTFILES tag around line 50 of the Makefile. - - + Add the name of the test files' object file (test_yaffs_foo.o ) to the + TESTFILES tag around line 50 of the Makefile. Now add the test functions to the test_list[] array in quick_tests.h - 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. - This array consists of: {[test function], [the clean function], [name of the tests which will be printed when the test fails]}, + 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. + This array consists of: + {[test function], [the clean function], [name of the tests which will be printed when the test fails]}, - So add this line to the test_list[]: {test_yaffs_fish, test_yaffs_fish_clean, "test_yaffs_fish"}, + So add this line to the test_list[]: {test_yaffs_foo, test_yaffs_foo_clean, "test_yaffs_foo"}, - Also include the test's .h file in the quick_test.h file: #include "test_yaffs_fish.h" - - The test file should now make and run. - - + Also include the test's .h file in the quick_test.h file: #include "test_yaffs_foo.h" + The test file should now make and run(you may need to make clean first). - PS: yaffs_fish() is a made up function for this README (in case you want to try and find this function in yaffs). + PS: yaffs_foo() is a made up function for this README (in case you want + to find this function in yaffs). -BUGS - Needing to include int random_seed; and int simulate_power_failure = 0; in any main program using yaffsfs.h - bug with opening a file with a name of 1,000,000 char long with no errors. - bug with unlinking a file with 1,000,000 get the error ENOENT but should be geting ENAMETOOLONG. - - FIXED-ENOSPC error in programs test_yaffs_open_ENOTDIR and test_yaffs_open_ENOENT. - FIXED-ENOENT been returned by yaffs_read but the handle is good and the yaffs_open function does not return an error.