From: Timothy Manning Date: Tue, 23 Nov 2010 01:53:54 +0000 (+1300) Subject: yaffs More tests for direct/timothy_tests/quick_tests X-Git-Tag: linux-mainline-patchset-4~63 X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=commitdiff_plain;h=d3abc5c5da005343e7d78c5c9a51d58af14b3faa yaffs More tests for direct/timothy_tests/quick_tests Signed-off-by: Timothy Manning --- diff --git a/direct/timothy_tests/quick_tests/Makefile b/direct/timothy_tests/quick_tests/Makefile index 1270940..3c5352e 100644 --- a/direct/timothy_tests/quick_tests/Makefile +++ b/direct/timothy_tests/quick_tests/Makefile @@ -83,7 +83,9 @@ TESTFILES = quick_tests.o lib.o \ test_yaffs_inodecount.o test_yaffs_inodecount_EINVAL.o \ test_yaffs_link.o test_yaffs_link_ENOENT.o test_yaffs_link_EEXIST.o test_yaffs_link_ENOTDIR.o \ test_yaffs_link_ENOTDIR2.o test_yaffs_link_ENOENT2.o test_yaffs_link_ENOENT3.o test_yaffs_link_ENOENT3.o \ - test_yaffs_rmdir.o + test_yaffs_rmdir.o test_yaffs_rmdir_EBUSY.o test_yaffs_rmdir_EINVAL.o test_yaffs_rmdir_ENOENT.o \ + test_yaffs_rmdir_ENOTDIR.o \ + test_yaffs_rename.o test_yaffs_rename_ENOENT.o test_yaffs_rename_ENOTDIR.o test_yaffs_rename_EINVAL.o diff --git a/direct/timothy_tests/quick_tests/README.txt b/direct/timothy_tests/quick_tests/README.txt index de90a6c..3d8015b 100644 --- a/direct/timothy_tests/quick_tests/README.txt +++ b/direct/timothy_tests/quick_tests/README.txt @@ -3,124 +3,150 @@ Made by Timothy Manning on 04/11/2010 Tests made - test_yaffs_chmod - test_yaffs_chmod_ENOENT - test_yaffs_chmod_ENOTDIR - test_yaffs_fchmod - test_yaffs_fchmod_EBADF - test_yaffs_fchmod_EINVAL - - 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_mount2 - test_yaffs_mount2_ENODEV //when a bad mount point is used. - - test_yaffs_access - test_yaffs_access_ENIVAL - test_yaffs_access_ENOTDIR - test_yaffs_access_ENOENT - - test_yaffs_close_EBADF - - test_yaffs_fdatasync - test_yaffs_fdatasync_EBADF - - test_yaffs_freespace - test_yaffs_freespace_EINVAL - - test_yaffs_fsync - test_yaffs_fsync_EBADF - - test_yaffs_ftruncate - test_yaffs_ftruncate_EBADF - test_yaffs_ftruncate_ENIVAL - test_yaffs_ftruncate_big_file - - test_yaffs_inodecount - test_yaffs_inodecount_ENOTDIR - - test_yaffs_link - test_yaffs_link_EEXIST - test_yaffs_link_ENOENT //note ENOENT2 does not exist because the second path is trying to create a file. - test_yaffs_link_ENOTDIR - test_yaffs_link_ENOTDIR2 - - test_yaffs_lseek - test_yaffs_lseek_EBADF - test_yaffs_lseek_EINVAL - test_yaffs_lseek_big_file - - 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_mkdir - test_yaffs_mkdir_EEXISTS - test_yaffs_mkdir_ENOTDIR - - - test_yaffs_stat - test_yaffs_stat_ENOENT - test_yaffs_stat_ENOTDIR - - test_yaffs_symlink - test_yaffs_symlink_ENOTDIR - test_yaffs_symlink_EEXISTS - test_yaffs_symlink_ENOENT //if there is a slash on the end of new path - - test_yaffs_sync - test_yaffs_sync_ENOTDIR - - test_yaffs_fstat - test_yaffs_fstat_EBADF - - test_yaffs_remount_force_off_read_only_off - test_yaffs_remount_force_on_read_only_off - test_yaffs_remount_ENODEV - test_yaffs_remount_EINVAL - - test_yaffs_totalspace - test_yaffs_totalspace_EINVAL - - test_yaffs_truncate - test_yaffs_truncate_ENOTDIR - test_yaffs_truncate_EISDIR - test_yaffs_truncate_ENOENT - test_yaffs_truncate_ENIVAL - test_yaffs_truncate_big_file - - 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 //caused by having a file handle open and then trying to unmount yaffs. - - test_yaffs_unmount2 - test_yaffs_unmount2_ENODEV - test_yaffs_unmount2_with handle open and forced mode on - test_yaffs_unmount2_with handle open and forced mode off. should give EBUSY. - test_yaffs_unmount2_EINVAL //should be caused when the file system is alredy unmounted. - - test_yaffs_write - test_yaffs_write_EBADF +test_yaffs_access.c +test_yaffs_access_EINVAL.c +test_yaffs_access_ENOENT2.c +test_yaffs_access_ENOENT.c +test_yaffs_access_ENOTDIR.c + +test_yaffs_chmod.c +test_yaffs_chmod_EINVAL.c +test_yaffs_chmod_ENOENT2.c +test_yaffs_chmod_ENOENT.c +test_yaffs_chmod_ENOTDIR.c + +test_yaffs_close.c +test_yaffs_close_EBADF.c + +test_yaffs_fchmod.c +test_yaffs_fchmod_EBADF.c +test_yaffs_fchmod_EINVAL.c + +test_yaffs_fdatasync.c +test_yaffs_fdatasync_EBADF.c + +test_yaffs_freespace.c +test_yaffs_freespace_EINVAL.c + +test_yaffs_fstat.c +test_yaffs_fstat_EBADF.c + +test_yaffs_fsync.c +test_yaffs_fsync_EBADF.c + +test_yaffs_ftruncate_big_file.c +test_yaffs_ftruncate.c +test_yaffs_ftruncate_EBADF.c +test_yaffs_ftruncate_EINVAL.c + +test_yaffs_inodecount.c +test_yaffs_inodecount_EINVAL.c + +test_yaffs_link.c +test_yaffs_link_EEXIST.c +test_yaffs_link_ENOENT2.c +test_yaffs_link_ENOENT3.c +test_yaffs_link_ENOENT.c +test_yaffs_link_ENOTDIR2.c +test_yaffs_link_ENOTDIR.c + +test_yaffs_lseek_big_file.c +test_yaffs_lseek.c +test_yaffs_lseek_EBADF.c +test_yaffs_lseek_EINVAL.c + +test_yaffs_mkdir.c +test_yaffs_mkdir_EEXIST.c +test_yaffs_mkdir_ENOENT.c +test_yaffs_mkdir_ENOTDIR.c + +test_yaffs_mknode.c + +test_yaffs_mount2.c +test_yaffs_mount2_ENODEV.c + +test_yaffs_mount.c +test_yaffs_mount_EBUSY.c +test_yaffs_mount_ENAMETOOLONG.c +test_yaffs_mount_ENODEV.c + +test_yaffs_open.c +test_yaffs_open_EEXIST.c +test_yaffs_open_EINVAL2.c +test_yaffs_open_EINVAL.c +test_yaffs_open_EISDIR.c +test_yaffs_open_ENAMETOOLONG.c +test_yaffs_open_ENOENT.c +test_yaffs_open_ENOTDIR.c + +test_yaffs_read.c +test_yaffs_read_EBADF.c +test_yaffs_read_EINVAL.c + +test_yaffs_remount_EINVAL.c +test_yaffs_remount_ENODEV.c +test_yaffs_remount_force_off_read_only_off.c +test_yaffs_remount_force_off_read_only_on.c +test_yaffs_remount_force_on_read_only_off.c +test_yaffs_remount_force_on_read_only_on.c + +test_yaffs_rename +test_yaffs_rename_ENOENT +test_yaffs_rename_ENOTDIR + +test_yaffs_rmdir.c +test_yaffs_rmdir_EBUSY +test_yaffs_rmdir_EINVAL +test_yaffs_rmdir_ENOENT +test_yaffs_rmdir_ENOTDIR + +test_yaffs_stat.c +test_yaffs_stat_ENOENT2.c +test_yaffs_stat_ENOENT.c +test_yaffs_stat_ENOTDIR.c + +test_yaffs_symlink.c +test_yaffs_symlink_EEXIST.c +test_yaffs_symlink_ENOENT2.c +test_yaffs_symlink_ENOENT.c +test_yaffs_symlink_ENOTDIR.c + +test_yaffs_sync.c +test_yaffs_sync_ENODEV.c + +test_yaffs_totalspace.c +test_yaffs_totalspace_EINVAL.c + +test_yaffs_truncate.c +test_yaffs_truncate_big_file.c +test_yaffs_truncate_EINVAL.c +test_yaffs_truncate_EISDIR.c +test_yaffs_truncate_ENOENT2.c +test_yaffs_truncate_ENOENT.c +test_yaffs_truncate_ENOTDIR.c + +test_yaffs_unlink.c +test_yaffs_unlink_EISDIR.c +test_yaffs_unlink_ENAMETOOLONG.c +test_yaffs_unlink_ENOENT2.c +test_yaffs_unlink_ENOENT.c +test_yaffs_unlink_ENOTDIR.c + +test_yaffs_unmount2.c +test_yaffs_unmount2_EINVAL.c +test_yaffs_unmount2_ENODEV.c +test_yaffs_unmount2_with_handle_open_and_forced_mode_off.c +test_yaffs_unmount2_with_handle_open_and_forced_mode_on.c + +test_yaffs_unmount.c +test_yaffs_unmount_EBUSY.c +test_yaffs_unmount_ENAMETOOLONG.c +test_yaffs_unmount_ENODEV.c + +test_yaffs_write.c +test_yaffs_write_big_file.c +test_yaffs_write_EBADF.c @@ -209,22 +235,17 @@ Tests to add 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 + //need to do rename for directories. + //what happens if the dir or file is renamed over an existing dir or file 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 diff --git a/direct/timothy_tests/quick_tests/current_bugs.txt b/direct/timothy_tests/quick_tests/current_bugs.txt index 63b277e..17c52f3 100644 --- a/direct/timothy_tests/quick_tests/current_bugs.txt +++ b/direct/timothy_tests/quick_tests/current_bugs.txt @@ -4,33 +4,14 @@ Made by Timothy Manning on 08/11/2010 Current BUGS - + BUG with trying to rmdir /yaffs2/ the error returned is ENOTEMPTY. + But the error that should be returned is EBUSY. - Bug with truncating to a very large size. The yaffs_truncate function truncates the file to a massive size without any errors. - The function should return the error EINVAL. - - Bug with lseeking to a very large size (size =100000000000000000000000000000000000000) without causing an error. - Should cause the error EINVAL. - - - Bug when writing a file. The writing to the file causes the file size to exceed the size of yaffs file system memory. - Output of test: - test_yaffs_write_big_file - AddrToChunk of offset -2147483648 gives chunk -1048576 start 0 - AddrToChunk of offset -2147481600 gives chunk -1048575 start 0 - AddrToChunk of offset -2147479552 gives chunk -1048574 start 0 - AddrToChunk of offset -2147477504 gives chunk -1048573 start 0 - AddrToChunk of offset -2147475456 gives chunk -1048572 start 0 - AddrToChunk of offset -2147473408 gives chunk -1048571 start 0 - AddrToChunk of offset -2147471360 gives chunk -1048570 start 0 - AddrToChunk of offset -2147469312 gives chunk -1048569 start 0 - AddrToChunk of offset -2147467264 gives chunk -1048568 start 0 - AddrToChunk of offset -2147465216 gives chunk -1048567 start 0 - wrote a large amount of text to a file.(which is a bad thing) - test: test_yaffs_write_big_file failed - yaffs_error code 0 - error is : Unknown error code + BUG with trying to rmdir /yaffs2/. the error returned is ENOENT. + But the error that should be returned is EINVAL. + BUG with having slashes on the end of the second path passed into the rename function. + The function returns ENOENT. but should be returning other errors. Current WARNINGS diff --git a/direct/timothy_tests/quick_tests/lib.h b/direct/timothy_tests/quick_tests/lib.h index dec04bf..9981b65 100644 --- a/direct/timothy_tests/quick_tests/lib.h +++ b/direct/timothy_tests/quick_tests/lib.h @@ -38,6 +38,8 @@ #define NODE_PATH "/yaffs2/node" +#define RENAME_PATH "/yaffs2/foo2" + /* warning do not define anything as FILE because there seems to be a conflict with stdio.h */ diff --git a/direct/timothy_tests/quick_tests/quick_tests.h b/direct/timothy_tests/quick_tests/quick_tests.h index f475d1c..305e8d9 100644 --- a/direct/timothy_tests/quick_tests/quick_tests.h +++ b/direct/timothy_tests/quick_tests/quick_tests.h @@ -151,6 +151,15 @@ #include "test_yaffs_link_ENOENT3.h" #include "test_yaffs_rmdir.h" +#include "test_yaffs_rmdir_EBUSY.h" +#include "test_yaffs_rmdir_EINVAL.h" +#include "test_yaffs_rmdir_ENOENT.h" +#include "test_yaffs_rmdir_ENOTDIR.h" + +#include "test_yaffs_rename.h" +#include "test_yaffs_rename_ENOENT.h" +#include "test_yaffs_rename_ENOTDIR.h" +#include "test_yaffs_rename_EINVAL.h" #include "yaffsfs.h" #include "yaffs_error_converter.h" @@ -300,7 +309,16 @@ test_template test_list[]={ {test_yaffs_link_ENOENT2,test_yaffs_link_ENOENT2_clean,"test_yaffs_link_ENOENT2"}, {test_yaffs_link_ENOENT3,test_yaffs_link_ENOENT3_clean,"test_yaffs_link_ENOENT3"}, - {test_yaffs_rmdir,test_yaffs_rmdir_clean,"test_yaffs_rmdir"} + {test_yaffs_rmdir,test_yaffs_rmdir_clean,"test_yaffs_rmdir"}, + {test_yaffs_rmdir_EBUSY,test_yaffs_rmdir_EBUSY_clean,"test_yaffs_rmdir_EBUSY"}, + {test_yaffs_rmdir_EINVAL,test_yaffs_rmdir_EINVAL_clean,"test_yaffs_rmdir_EINVAL"}, + {test_yaffs_rmdir_ENOENT,test_yaffs_rmdir_ENOENT_clean,"test_yaffs_rmdir_ENOENT"}, + {test_yaffs_rmdir_ENOTDIR,test_yaffs_rmdir_ENOTDIR_clean,"test_yaffs_rmdir_ENOTDIR"}, + + {test_yaffs_rename,test_yaffs_rename_clean,"test_yaffs_rename"}, + {test_yaffs_rename_ENOENT,test_yaffs_rename_ENOENT_clean,"test_yaffs_rename_ENOENT"}, + {test_yaffs_rename_ENOTDIR,test_yaffs_rename_ENOTDIR_clean,"test_yaffs_rename_ENOTDIR"}, + {test_yaffs_rename_EINVAL,test_yaffs_rename_EINVAL_clean,"test_yaffs_rename_EINVAL"} }; void init_quick_tests(int argc, char *argv[]); diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rename.c b/direct/timothy_tests/quick_tests/test_yaffs_rename.c new file mode 100644 index 0000000..509bb9a --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rename.c @@ -0,0 +1,47 @@ +/* + * YAFFS: Yet another FFS. A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "test_yaffs_rename.h" + + +int test_yaffs_rename(void) +{ + int output=0; + int error_code =0; + + if (0 != yaffs_access(FILE_PATH,0)) { + output = test_yaffs_open(); + if (output < 0) { + print_message("failed to create file\n",2); + return -1; + } + } + output = yaffs_rename( FILE_PATH , RENAME_PATH); + return output; +} + + +int test_yaffs_rename_clean(void) +{ + int output = 0; + if (0 == yaffs_access(RENAME_PATH,0)) { + output = yaffs_rename(RENAME_PATH,FILE_PATH); + if (output < 0) { + print_message("failed to rename the file\n",2); + return -1; + } + } + return 1; + +} + diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rename.h b/direct/timothy_tests/quick_tests/test_yaffs_rename.h new file mode 100644 index 0000000..00f2fe4 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rename.h @@ -0,0 +1,26 @@ +/* + * YAFFS: Yet another Flash File System . A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1 as + * published by the Free Software Foundation. + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + */ + +#ifndef __test_yaffs_rename_h__ +#define __test_yaffs_rename_h__ + +#include "lib.h" +#include "yaffsfs.h" +#include "test_yaffs_open.h" + +int test_yaffs_rename(void); +int test_yaffs_rename_clean(void); + +#endif diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rename_EINVAL.c b/direct/timothy_tests/quick_tests/test_yaffs_rename_EINVAL.c new file mode 100644 index 0000000..95ddc37 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rename_EINVAL.c @@ -0,0 +1,59 @@ +/* + * YAFFS: Yet another FFS. A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "test_yaffs_rename_EINVAL.h" + + +int test_yaffs_rename_EINVAL(void) +{ + int output=0; + int error_code =0; + + if (0 != yaffs_access(DIR_PATH,0)) { + printf("dir does not exist\n"); + output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD); + if (output < 0) { + print_message("failed to create directory\n",2); + return -1; + } + } + output = yaffs_rename(DIR_PATH , "/yaffs2/new_directory/dir/"); + if (output<0){ + error_code=yaffs_get_error(); + if (abs(error_code)==EINVAL){ + return 1; + } else { + print_message("returned error does not match the the expected error\n",2); + return -1; + } + } else{ + print_message("removed /yaffs2/ directory (which is a bad thing)\n",2); + return -1; + } +} + + +int test_yaffs_rename_EINVAL_clean(void) +{ + int output = 0; + if (0 == yaffs_access(RENAME_PATH,0)) { + output = yaffs_rename(RENAME_PATH,FILE_PATH); + if (output < 0) { + print_message("failed to remove the directory\n",2); + return -1; + } + } + return 1; + +} + diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rename_EINVAL.h b/direct/timothy_tests/quick_tests/test_yaffs_rename_EINVAL.h new file mode 100644 index 0000000..c44b5c6 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rename_EINVAL.h @@ -0,0 +1,25 @@ +/* + * YAFFS: Yet another Flash File System . A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1 as + * published by the Free Software Foundation. + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + */ + +#ifndef __test_yaffs_rename_EINVAL_h__ +#define __test_yaffs_rename_EINVAL_h__ + +#include "lib.h" +#include "yaffsfs.h" + +int test_yaffs_rename_EINVAL(void); +int test_yaffs_rename_EINVAL_clean(void); + +#endif diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rename_ENOENT.c b/direct/timothy_tests/quick_tests/test_yaffs_rename_ENOENT.c new file mode 100644 index 0000000..4757077 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rename_ENOENT.c @@ -0,0 +1,58 @@ +/* + * YAFFS: Yet another FFS. A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "test_yaffs_rename_ENOENT.h" + + +int test_yaffs_rename_ENOENT(void) +{ + int output=0; + int error_code =0; + + if (0 != yaffs_access(DIR_PATH,0)) { + output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD); + if (output < 0) { + print_message("failed to create directory\n",2); + return -1; + } + } + output = yaffs_rename("yaffs2/non-existing-file" , RENAME_PATH); + if (output<0){ + error_code=yaffs_get_error(); + if (abs(error_code)==ENOENT){ + return 1; + } else { + print_message("returned error does not match the the expected error\n",2); + return -1; + } + } else{ + print_message("removed /yaffs2/ directory (which is a bad thing)\n",2); + return -1; + } +} + + +int test_yaffs_rename_ENOENT_clean(void) +{ + int output = 0; + if (0 == yaffs_access(RENAME_PATH,0)) { + output = yaffs_rename(RENAME_PATH,FILE_PATH); + if (output < 0) { + print_message("failed to remove the directory\n",2); + return -1; + } + } + return 1; + +} + diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rename_ENOENT.h b/direct/timothy_tests/quick_tests/test_yaffs_rename_ENOENT.h new file mode 100644 index 0000000..1b00f66 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rename_ENOENT.h @@ -0,0 +1,25 @@ +/* + * YAFFS: Yet another Flash File System . A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1 as + * published by the Free Software Foundation. + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + */ + +#ifndef __test_yaffs_rename_ENOENT_h__ +#define __test_yaffs_rename_ENOENT_h__ + +#include "lib.h" +#include "yaffsfs.h" + +int test_yaffs_rename_ENOENT(void); +int test_yaffs_rename_ENOENT_clean(void); + +#endif diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rename_ENOTDIR.c b/direct/timothy_tests/quick_tests/test_yaffs_rename_ENOTDIR.c new file mode 100644 index 0000000..d788d62 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rename_ENOTDIR.c @@ -0,0 +1,58 @@ +/* + * YAFFS: Yet another FFS. A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "test_yaffs_rename_ENOTDIR.h" + + +int test_yaffs_rename_ENOTDIR(void) +{ + int output=0; + int error_code =0; + + if (0 != yaffs_access(DIR_PATH,0)) { + output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD); + if (output < 0) { + print_message("failed to create directory\n",2); + return -1; + } + } + output = yaffs_rename("yaffs2/foo/file" , RENAME_PATH); + if (output<0){ + error_code=yaffs_get_error(); + if (abs(error_code)==ENOTDIR){ + return 1; + } else { + print_message("returned error does not match the the expected error\n",2); + return -1; + } + } else{ + print_message("used a file as a directory (which is a bad thing)\n",2); + return -1; + } +} + + +int test_yaffs_rename_ENOTDIR_clean(void) +{ + int output = 0; + if (0 == yaffs_access(RENAME_PATH,0)) { + output = yaffs_rename(RENAME_PATH,FILE_PATH); + if (output < 0) { + print_message("failed to remove the directory\n",2); + return -1; + } + } + return 1; + +} + diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rename_ENOTDIR.h b/direct/timothy_tests/quick_tests/test_yaffs_rename_ENOTDIR.h new file mode 100644 index 0000000..cdc9969 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rename_ENOTDIR.h @@ -0,0 +1,25 @@ +/* + * YAFFS: Yet another Flash File System . A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1 as + * published by the Free Software Foundation. + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + */ + +#ifndef __test_yaffs_rename_ENOTDIR_h__ +#define __test_yaffs_rename_ENOTDIR_h__ + +#include "lib.h" +#include "yaffsfs.h" + +int test_yaffs_rename_ENOTDIR(void); +int test_yaffs_rename_ENOTDIR_clean(void); + +#endif diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rmdir.c b/direct/timothy_tests/quick_tests/test_yaffs_rmdir.c index 80146f9..fe0e09f 100644 --- a/direct/timothy_tests/quick_tests/test_yaffs_rmdir.c +++ b/direct/timothy_tests/quick_tests/test_yaffs_rmdir.c @@ -11,7 +11,7 @@ * published by the Free Software Foundation. */ -#include "test_yaffs_open.h" +#include "test_yaffs_rmdir.h" int test_yaffs_rmdir(void) diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rmdir_EBUSY.c b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_EBUSY.c new file mode 100644 index 0000000..1b7e53e --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_EBUSY.c @@ -0,0 +1,58 @@ +/* + * YAFFS: Yet another FFS. A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "test_yaffs_rmdir_EBUSY.h" + + +int test_yaffs_rmdir_EBUSY(void) +{ + int output=0; + int error_code =0; + + if (0 != yaffs_access(DIR_PATH,0)) { + output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD); + if (output < 0) { + print_message("failed to create directory\n",2); + return -1; + } + } + output = yaffs_rmdir("/yaffs2/"); + if (output<0){ + error_code=yaffs_get_error(); + if (abs(error_code)==EBUSY){ + return 1; + } else { + print_message("returned error does not match the the expected error\n",2); + return -1; + } + } else{ + print_message("removed /yaffs2/ directory (which is a bad thing)\n",2); + return -1; + } +} + + +int test_yaffs_rmdir_EBUSY_clean(void) +{ + int output = 0; + if (0 == yaffs_access(DIR_PATH,0)) { + output = yaffs_rmdir(DIR_PATH); + if (output < 0) { + print_message("failed to remove the directory\n",2); + return -1; + } + } + return 1; + +} + diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rmdir_EBUSY.h b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_EBUSY.h new file mode 100644 index 0000000..0503c17 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_EBUSY.h @@ -0,0 +1,25 @@ +/* + * YAFFS: Yet another Flash File System . A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1 as + * published by the Free Software Foundation. + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + */ + +#ifndef __test_yaffs_rmdir_EBUSY_h__ +#define __test_yaffs_rmdir_EBUSY_h__ + +#include "lib.h" +#include "yaffsfs.h" + +int test_yaffs_rmdir_EBUSY(void); +int test_yaffs_rmdir_EBUSY_clean(void); + +#endif diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rmdir_EINVAL.c b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_EINVAL.c new file mode 100644 index 0000000..d779306 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_EINVAL.c @@ -0,0 +1,58 @@ +/* + * YAFFS: Yet another FFS. A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "test_yaffs_rmdir_EINVAL.h" + + +int test_yaffs_rmdir_EINVAL(void) +{ + int output=0; + int error_code =0; + + if (0 != yaffs_access(DIR_PATH,0)) { + output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD); + if (output < 0) { + print_message("failed to create directory\n",2); + return -1; + } + } + output = yaffs_rmdir("/yaffs2/."); + if (output<0){ + error_code=yaffs_get_error(); + if (abs(error_code)==EINVAL){ + return 1; + } else { + print_message("returned error does not match the the expected error\n",2); + return -1; + } + } else{ + print_message("removed /yaffs2/ directory (which is a bad thing)\n",2); + return -1; + } +} + + +int test_yaffs_rmdir_EINVAL_clean(void) +{ + int output = 0; + if (0 == yaffs_access(DIR_PATH,0)) { + output = yaffs_rmdir(DIR_PATH); + if (output < 0) { + print_message("failed to remove the directory\n",2); + return -1; + } + } + return 1; + +} + diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rmdir_EINVAL.h b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_EINVAL.h new file mode 100644 index 0000000..7ab77aa --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_EINVAL.h @@ -0,0 +1,25 @@ +/* + * YAFFS: Yet another Flash File System . A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1 as + * published by the Free Software Foundation. + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + */ + +#ifndef __test_yaffs_rmdir_EINVAL_h__ +#define __test_yaffs_rmdir_EINVAL_h__ + +#include "lib.h" +#include "yaffsfs.h" + +int test_yaffs_rmdir_EINVAL(void); +int test_yaffs_rmdir_EINVAL_clean(void); + +#endif diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rmdir_ENOENT.c b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_ENOENT.c new file mode 100644 index 0000000..a3e581e --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_ENOENT.c @@ -0,0 +1,58 @@ +/* + * YAFFS: Yet another FFS. A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "test_yaffs_rmdir_ENOENT.h" + + +int test_yaffs_rmdir_ENOENT(void) +{ + int output=0; + int error_code =0; + + if (0 != yaffs_access(DIR_PATH,0)) { + output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD); + if (output < 0) { + print_message("failed to create directory\n",2); + return -1; + } + } + output = yaffs_rmdir("/yaffs2/non-existing-dir/"); + if (output<0){ + error_code=yaffs_get_error(); + if (abs(error_code)==ENOENT){ + return 1; + } else { + print_message("returned error does not match the the expected error\n",2); + return -1; + } + } else{ + print_message("removed /yaffs2/ directory (which is a bad thing)\n",2); + return -1; + } +} + + +int test_yaffs_rmdir_ENOENT_clean(void) +{ + int output = 0; + if (0 == yaffs_access(DIR_PATH,0)) { + output = yaffs_rmdir(DIR_PATH); + if (output < 0) { + print_message("failed to remove the directory\n",2); + return -1; + } + } + return 1; + +} + diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rmdir_ENOENT.h b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_ENOENT.h new file mode 100644 index 0000000..1dd6136 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_ENOENT.h @@ -0,0 +1,25 @@ +/* + * YAFFS: Yet another Flash File System . A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1 as + * published by the Free Software Foundation. + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + */ + +#ifndef __test_yaffs_rmdir_ENOENT_h__ +#define __test_yaffs_rmdir_ENOENT_h__ + +#include "lib.h" +#include "yaffsfs.h" + +int test_yaffs_rmdir_ENOENT(void); +int test_yaffs_rmdir_ENOENT_clean(void); + +#endif diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rmdir_ENOTDIR.c b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_ENOTDIR.c new file mode 100644 index 0000000..413d08f --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_ENOTDIR.c @@ -0,0 +1,58 @@ +/* + * YAFFS: Yet another FFS. A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "test_yaffs_rmdir_ENOTDIR.h" + + +int test_yaffs_rmdir_ENOTDIR(void) +{ + int output=0; + int error_code =0; + + if (0 != yaffs_access(DIR_PATH,0)) { + output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD); + if (output < 0) { + print_message("failed to create directory\n",2); + return -1; + } + } + output = yaffs_rmdir("/yaffs2/foo/dir/"); + if (output<0){ + error_code=yaffs_get_error(); + if (abs(error_code)==ENOTDIR){ + return 1; + } else { + print_message("returned error does not match the the expected error\n",2); + return -1; + } + } else{ + print_message("removed /yaffs2/ directory (which is a bad thing)\n",2); + return -1; + } +} + + +int test_yaffs_rmdir_ENOTDIR_clean(void) +{ + int output = 0; + if (0 == yaffs_access(DIR_PATH,0)) { + output = yaffs_rmdir(DIR_PATH); + if (output < 0) { + print_message("failed to remove the directory\n",2); + return -1; + } + } + return 1; + +} + diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rmdir_ENOTDIR.h b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_ENOTDIR.h new file mode 100644 index 0000000..a00f4dc --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rmdir_ENOTDIR.h @@ -0,0 +1,25 @@ +/* + * YAFFS: Yet another Flash File System . A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1 as + * published by the Free Software Foundation. + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + */ + +#ifndef __test_yaffs_rmdir_ENOTDIR_h__ +#define __test_yaffs_rmdir_ENOTDIR_h__ + +#include "lib.h" +#include "yaffsfs.h" + +int test_yaffs_rmdir_ENOTDIR(void); +int test_yaffs_rmdir_ENOTDIR_clean(void); + +#endif