From 670482d4223c4dd01a79df7f2ca54c55a3fc8ac6 Mon Sep 17 00:00:00 2001 From: Timothy Manning Date: Mon, 29 Nov 2010 11:42:41 +1300 Subject: [PATCH] yaffs Added more tests to direct/timothy_tests/quicktests Signed-off-by: Timothy Manning --- direct/timothy_tests/quick_tests/Makefile | 8 +-- .../timothy_tests/quick_tests/quick_tests.h | 10 +++- ...fstat_EROFS.c => test_yaffs_fsync_EROFS.c} | 22 ++++---- ...fstat_EROFS.h => test_yaffs_fsync_EROFS.h} | 8 +-- .../quick_tests/test_yaffs_link_EROFS.c | 21 +++---- .../quick_tests/test_yaffs_link_EROFS.h | 8 +-- .../quick_tests/test_yaffs_lseek_EROFS.c | 55 +++++++++++++++++++ .../quick_tests/test_yaffs_lseek_EROFS.h | 26 +++++++++ .../quick_tests/test_yaffs_mkdir_EROFS.c | 48 ++++++++++++++++ .../quick_tests/test_yaffs_mkdir_EROFS.h | 25 +++++++++ 10 files changed, 194 insertions(+), 37 deletions(-) rename direct/timothy_tests/quick_tests/{test_yaffs_fstat_EROFS.c => test_yaffs_fsync_EROFS.c} (64%) rename direct/timothy_tests/quick_tests/{test_yaffs_fstat_EROFS.h => test_yaffs_fsync_EROFS.h} (84%) create mode 100644 direct/timothy_tests/quick_tests/test_yaffs_lseek_EROFS.c create mode 100644 direct/timothy_tests/quick_tests/test_yaffs_lseek_EROFS.h create mode 100644 direct/timothy_tests/quick_tests/test_yaffs_mkdir_EROFS.c create mode 100644 direct/timothy_tests/quick_tests/test_yaffs_mkdir_EROFS.h diff --git a/direct/timothy_tests/quick_tests/Makefile b/direct/timothy_tests/quick_tests/Makefile index a614837..9ea838e 100644 --- a/direct/timothy_tests/quick_tests/Makefile +++ b/direct/timothy_tests/quick_tests/Makefile @@ -65,15 +65,15 @@ TESTFILES = quick_tests.o lib.o \ test_yaffs_access_ENOENT2.o test_yaffs_access_ELOOP_dir.o test_yaffs_access_ELOOP.o test_yaffs_access_EROFS.o \ test_yaffs_stat.o test_yaffs_stat_ENOENT.o test_yaffs_stat_ENOTDIR.o test_yaffs_stat_ENOENT2.o test_yaffs_stat_ELOOP.o \ test_yaffs_stat_ELOOP_dir.o\ - test_yaffs_fstat.o test_yaffs_fstat_EBADF.o test_yaffs_fstat_EROFS.o \ + test_yaffs_fstat.o test_yaffs_fstat_EBADF.o \ test_yaffs_close_EBADF.o\ test_yaffs_chmod.o test_yaffs_chmod_ENOENT.o test_yaffs_chmod_ENOTDIR.o test_yaffs_chmod_EINVAL.o \ test_yaffs_chmod_ENOENT2.o test_yaffs_chmod_ELOOP_dir.o test_yaffs_chmod_ELOOP.o test_yaffs_chmod_EROFS.o \ test_yaffs_fchmod.o test_yaffs_fchmod_EBADF.o test_yaffs_fchmod_EROFS.o test_yaffs_fchmod_EINVAL.o\ - test_yaffs_fsync.o test_yaffs_fsync_EBADF.o \ + test_yaffs_fsync.o test_yaffs_fsync_EBADF.o test_yaffs_fsync_EROFS.o \ test_yaffs_fdatasync.o test_yaffs_fdatasync_EBADF.o test_yaffs_fdatasync_EROFS.o\ test_yaffs_mkdir.o test_yaffs_mkdir_EEXIST.o test_yaffs_mkdir_ENOTDIR.o test_yaffs_mkdir_ENOENT.o \ - test_yaffs_mkdir_ELOOP_dir.o \ + test_yaffs_mkdir_ELOOP_dir.o test_yaffs_mkdir_EROFS.o \ test_yaffs_fchmod.o test_yaffs_fchmod_EBADF.o test_yaffs_fchmod_EINVAL.o \ test_yaffs_symlink.o test_yaffs_symlink_ENOTDIR.o test_yaffs_symlink_EEXIST.o test_yaffs_symlink_ENOENT.o \ test_yaffs_symlink_ENOENT2.o test_yaffs_symlink_ELOOP_dir.o \ @@ -88,7 +88,7 @@ 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_link_ENOENT4.o test_yaffs_link_ELOOP_dir.o \ + test_yaffs_link_ENOENT4.o test_yaffs_link_ELOOP_dir.o test_yaffs_link_EROFS.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_rmdir_ELOOP_dir.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/quick_tests.h b/direct/timothy_tests/quick_tests/quick_tests.h index 60df322..246093e 100644 --- a/direct/timothy_tests/quick_tests/quick_tests.h +++ b/direct/timothy_tests/quick_tests/quick_tests.h @@ -98,7 +98,7 @@ #include "test_yaffs_fstat.h" #include "test_yaffs_fstat_EBADF.h" -#include "test_yaffs_fstat_EROFS.h" + #include "test_yaffs_chmod.h" #include "test_yaffs_chmod_ENOENT.h" @@ -116,6 +116,7 @@ #include "test_yaffs_fsync.h" #include "test_yaffs_fsync_EBADF.h" +#include "test_yaffs_fsync_EROFS.h" #include "test_yaffs_fdatasync.h" #include "test_yaffs_fdatasync_EBADF.h" @@ -126,6 +127,7 @@ #include "test_yaffs_mkdir_ENOTDIR.h" #include "test_yaffs_mkdir_ENOENT.h" #include "test_yaffs_mkdir_ELOOP_dir.h" +#include "test_yaffs_mkdir_EROFS.h" #include "test_yaffs_symlink.h" @@ -170,7 +172,7 @@ #include "test_yaffs_link_ENOENT3.h" #include "test_yaffs_link_ENOENT4.h" #include "test_yaffs_link_ELOOP_dir.h" - +#include "test_yaffs_link_EROFS.h" #include "test_yaffs_rmdir.h" #include "test_yaffs_rmdir_EBUSY.h" @@ -279,7 +281,6 @@ test_template test_list[]={ {test_yaffs_fstat,test_yaffs_fstat_clean,"test_yaffs_fstat"}, {test_yaffs_fstat_EBADF,test_yaffs_fstat_EBADF_clean,"test_yaffs_fstat_EBADF"}, - {test_yaffs_fstat_EROFS,test_yaffs_fstat_EROFS_clean,"test_yaffs_fstat_EROFS"}, {test_yaffs_ftruncate,test_yaffs_ftruncate_clean,"test_yaffs_ftruncate"}, {test_yaffs_ftruncate_EBADF,test_yaffs_ftruncate_EBADF_clean,"test_yaffs_ftruncate_EBADF"}, @@ -311,6 +312,7 @@ test_template test_list[]={ {test_yaffs_fsync,test_yaffs_fsync_clean,"test_yaffs_fsync"}, {test_yaffs_fsync_EBADF,test_yaffs_fsync_EBADF_clean,"test_yaffs_fsync_EBADF"}, + {test_yaffs_fsync_EROFS,test_yaffs_fsync_EROFS_clean,"test_yaffs_fsync_EROFS"}, {test_yaffs_fdatasync,test_yaffs_fdatasync_clean,"test_yaffs_fdatasync"}, {test_yaffs_fdatasync_EBADF,test_yaffs_fdatasync_EBADF_clean,"test_yaffs_fdatasync_EBADF"}, @@ -321,6 +323,7 @@ test_template test_list[]={ {test_yaffs_mkdir_ENOTDIR,test_yaffs_mkdir_ENOTDIR_clean,"test_yaffs_mkdir_ENOTDIR"}, {test_yaffs_mkdir_ENOENT,test_yaffs_mkdir_ENOENT_clean,"test_yaffs_mkdir_ENOENT"}, {test_yaffs_mkdir_ELOOP_dir,test_yaffs_mkdir_ELOOP_dir_clean,"test_yaffs_mkdir_ELOOP_dir"}, + {test_yaffs_mkdir_EROFS,test_yaffs_mkdir_EROFS_clean,"test_yaffs_mkdir_EROFS"}, {test_yaffs_symlink,test_yaffs_symlink_clean,"test_yaffs_symlink"}, {test_yaffs_symlink_ENOTDIR,test_yaffs_symlink_ENOTDIR_clean,"test_yaffs_symlink_ENOTDIR"}, @@ -367,6 +370,7 @@ test_template test_list[]={ {test_yaffs_link_ENOENT3,test_yaffs_link_ENOENT3_clean,"test_yaffs_link_ENOENT3"}, {test_yaffs_link_ENOENT4,test_yaffs_link_ENOENT4_clean,"test_yaffs_link_ENOENT4"}, {test_yaffs_link_ELOOP_dir,test_yaffs_link_ELOOP_dir_clean,"test_yaffs_link_ELOOP_dir"}, + {test_yaffs_link_EROFS,test_yaffs_link_EROFS_clean,"test_yaffs_link_EROFS"}, {test_yaffs_rmdir,test_yaffs_rmdir_clean,"test_yaffs_rmdir"}, {test_yaffs_rmdir_EBUSY,test_yaffs_rmdir_EBUSY_clean,"test_yaffs_rmdir_EBUSY"}, diff --git a/direct/timothy_tests/quick_tests/test_yaffs_fstat_EROFS.c b/direct/timothy_tests/quick_tests/test_yaffs_fsync_EROFS.c similarity index 64% rename from direct/timothy_tests/quick_tests/test_yaffs_fstat_EROFS.c rename to direct/timothy_tests/quick_tests/test_yaffs_fsync_EROFS.c index cf90933..97757fa 100644 --- a/direct/timothy_tests/quick_tests/test_yaffs_fstat_EROFS.c +++ b/direct/timothy_tests/quick_tests/test_yaffs_fsync_EROFS.c @@ -11,33 +11,34 @@ * published by the Free Software Foundation. */ -#include "test_yaffs_fstat_EROFS.h" +#include "test_yaffs_fsync_EROFS.h" static int handle = -1; -int test_yaffs_fstat_EROFS(void) +int test_yaffs_fsync_EROFS(void) { int output = 0; - struct yaffs_stat stat; int error_code = 0; + EROFS_setup(); handle = test_yaffs_open(); - output = yaffs_fstat(handle , &stat); - if (output < 0){ - error_code = yaffs_get_error(); - if (abs(error_code) == EROFS){ + output = yaffs_fsync(handle); + if (output==-1){ + error_code=yaffs_get_error(); + if (abs(error_code)==EROFS){ return 1; } else { - print_message("different error than expected\n", 2); + print_message("different error than expected\n",2); return -1; } } else { - print_message("file statted with EROFS set.(which is a bad thing)\n", 2 ); + print_message("file synced with EROFS set.(which is a bad thing)\n",2); return -1; } } -int test_yaffs_fstat_EROFS_clean(void) + +int test_yaffs_fsync_EROFS_clean(void) { int output=1; if (handle >= 0) { @@ -45,3 +46,4 @@ int test_yaffs_fstat_EROFS_clean(void) } return (EROFS_clean() && output); } + diff --git a/direct/timothy_tests/quick_tests/test_yaffs_fstat_EROFS.h b/direct/timothy_tests/quick_tests/test_yaffs_fsync_EROFS.h similarity index 84% rename from direct/timothy_tests/quick_tests/test_yaffs_fstat_EROFS.h rename to direct/timothy_tests/quick_tests/test_yaffs_fsync_EROFS.h index f382bde..0e8ef42 100644 --- a/direct/timothy_tests/quick_tests/test_yaffs_fstat_EROFS.h +++ b/direct/timothy_tests/quick_tests/test_yaffs_fsync_EROFS.h @@ -13,14 +13,14 @@ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. */ -#ifndef __test_yaffs_fstat_EROFS_h__ -#define __test_yaffs_fstat_EROFS_h__ +#ifndef __test_yaffs_fsync_EROFS_h__ +#define __test_yaffs_fsync_EROFS_h__ #include "lib.h" #include "yaffsfs.h" #include "test_yaffs_open.h" -int test_yaffs_fstat_EROFS(void); -int test_yaffs_fstat_EROFS_clean(void); +int test_yaffs_fsync_EROFS(void); +int test_yaffs_fsync_EROFS_clean(void); #endif diff --git a/direct/timothy_tests/quick_tests/test_yaffs_link_EROFS.c b/direct/timothy_tests/quick_tests/test_yaffs_link_EROFS.c index 31c0900..bfbd48b 100644 --- a/direct/timothy_tests/quick_tests/test_yaffs_link_EROFS.c +++ b/direct/timothy_tests/quick_tests/test_yaffs_link_EROFS.c @@ -11,37 +11,34 @@ * published by the Free Software Foundation. */ -#include "test_yaffs_link_ELOOP_dir.h" +#include "test_yaffs_link_EROFS.h" -int test_yaffs_link_ELOOP_dir(void) +int test_yaffs_link_EROFS(void) { int output=0; int error =0; - if (set_up_ELOOP()<0){ - print_message("failed to setup symlinks\n",2); - return -1; - } + EROFS_setup(); - output = yaffs_link(ELOOP_PATH "/file",HARD_LINK_PATH); + output = yaffs_link(FILE_PATH,HARD_LINK_PATH); if (output<0){ error=yaffs_get_error(); - if (abs(error)==ELOOP){ + if (abs(error)==EROFS){ return 1; } else { print_message("different error than expected\n",2); return -1; } } else { - print_message("created a hard link to a non-existing-dir (which is a bad thing)\n",2); + print_message("created a hard link with EROFS set (which is a bad thing)\n",2); return -1; } } -int test_yaffs_link_ELOOP_dir_clean(void) +int test_yaffs_link_EROFS_clean(void) { int output=0; int error =0; @@ -50,13 +47,13 @@ int test_yaffs_link_ELOOP_dir_clean(void) error=yaffs_get_error(); if (abs(error)==ENOENT){ //if the file does not exist then the error should be ENOENT. - return 1; + return EROFS_clean(); } else { print_message("different error than expected\n",2); return -1; } } else { - return 1; /* the file failed to open so there is no need to close it */ + return EROFS_clean(); /* the file failed to open so there is no need to close it */ } } diff --git a/direct/timothy_tests/quick_tests/test_yaffs_link_EROFS.h b/direct/timothy_tests/quick_tests/test_yaffs_link_EROFS.h index cfdb130..8ce4bcd 100644 --- a/direct/timothy_tests/quick_tests/test_yaffs_link_EROFS.h +++ b/direct/timothy_tests/quick_tests/test_yaffs_link_EROFS.h @@ -13,13 +13,13 @@ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. */ -#ifndef __test_yaffs_link_ELOOP_dir_h__ -#define __test_yaffs_link_ELOOP_dir_h__ +#ifndef __test_yaffs_link_EROFS_h__ +#define __test_yaffs_link_EROFS_h__ #include "lib.h" #include "yaffsfs.h" -int test_yaffs_link_ELOOP_dir(void); -int test_yaffs_link_ELOOP_dir_clean(void); +int test_yaffs_link_EROFS(void); +int test_yaffs_link_EROFS_clean(void); #endif diff --git a/direct/timothy_tests/quick_tests/test_yaffs_lseek_EROFS.c b/direct/timothy_tests/quick_tests/test_yaffs_lseek_EROFS.c new file mode 100644 index 0000000..6e83eb4 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_lseek_EROFS.c @@ -0,0 +1,55 @@ +/* + * 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_lseek_EROFS.h" + +int handle=-1; + +int test_yaffs_lseek_EROFS(void) +{ + + int error_code = 0; + int output = 0; + EROFS_setup(); + + handle = test_yaffs_open(); + if (handle < 0){ + print_message("failed to open file\n", 2); + return -1; + } + + output = yaffs_lseek(handle, 0, 20); + + if (output < 0){ + error_code = yaffs_get_error(); + if (abs(error_code) == EROFS){ + return 1; + } else { + print_message("different error than expected\n", 2); + return -1; + } + } else { + print_message("lseeked with EROFS set (which is a bad thing)\n", 2); + return -1; + } +} + +int test_yaffs_lseek_EROFS_clean(void) +{ + if (handle >= 0){ + return yaffs_close(handle); + } else { + return 1; /* no handle was opened so there is no need to close a handle */ + } +} + diff --git a/direct/timothy_tests/quick_tests/test_yaffs_lseek_EROFS.h b/direct/timothy_tests/quick_tests/test_yaffs_lseek_EROFS.h new file mode 100644 index 0000000..ec1881b --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_lseek_EROFS.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_lseek_EROFS_h__ +#define __test_yaffs_lseek_EROFS_h__ + +#include "lib.h" +#include "yaffsfs.h" +#include "test_yaffs_open.h" + +int test_yaffs_lseek_EROFS(void); +int test_yaffs_lseek_EROFS_clean(void); + +#endif diff --git a/direct/timothy_tests/quick_tests/test_yaffs_mkdir_EROFS.c b/direct/timothy_tests/quick_tests/test_yaffs_mkdir_EROFS.c new file mode 100644 index 0000000..70bbfaf --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_mkdir_EROFS.c @@ -0,0 +1,48 @@ +/* + * 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_mkdir_EROFS.h" + +static int output = -1; + +int test_yaffs_mkdir_EROFS(void) +{ + int error_code = 0; + + EROFS_setup(); + + output = yaffs_mkdir(DIR_PATH,O_CREAT | O_RDWR); + if (output < 0){ + error_code = yaffs_get_error(); + if (abs(error_code) == EROFS){ + return 1; + } else { + print_message("different error than expected\n", 2); + return -1; + } + } else { + print_message("created a new directory with EROFS set (which is a bad thing)\n", 2); + return -1; + } +} + + +int test_yaffs_mkdir_EROFS_clean(void) +{ + int output2 = 1; + if (output >= 0){ + output2= yaffs_rmdir(DIR_PATH); + } + return (EROFS_clean() && output2); +} + diff --git a/direct/timothy_tests/quick_tests/test_yaffs_mkdir_EROFS.h b/direct/timothy_tests/quick_tests/test_yaffs_mkdir_EROFS.h new file mode 100644 index 0000000..23ad51d --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_mkdir_EROFS.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_mkdir_EROFS_h__ +#define __test_yaffs_mkdir_EROFS_h__ + +#include "lib.h" +#include "yaffsfs.h" + +int test_yaffs_mkdir_EROFS(void); +int test_yaffs_mkdir_EROFS_clean(void); + +#endif -- 2.30.2