From 9a893d50905d6336770609b9de0d18ec2f3e280c Mon Sep 17 00:00:00 2001 From: Timothy Manning Date: Fri, 26 Nov 2010 15:12:04 +1300 Subject: [PATCH] yaffs Added more tests to direct/timothy_tests/quick_tests Signed-off-by: Timothy Manning --- direct/timothy_tests/quick_tests/Makefile | 3 +- .../timothy_tests/quick_tests/quick_tests.h | 4 ++ .../quick_tests/test_yaffs_open_ELOOP_dir.c | 52 +++++++++++++++++ .../quick_tests/test_yaffs_open_ELOOP_dir.h | 25 ++++++++ .../quick_tests/test_yaffs_open_ENOTDIR.c | 2 +- .../quick_tests/test_yaffs_rename_ELOOP_dev.c | 58 +++++++++++++++++++ .../quick_tests/test_yaffs_rename_ELOOP_dev.h | 25 ++++++++ 7 files changed, 167 insertions(+), 2 deletions(-) create mode 100644 direct/timothy_tests/quick_tests/test_yaffs_open_ELOOP_dir.c create mode 100644 direct/timothy_tests/quick_tests/test_yaffs_open_ELOOP_dir.h create mode 100644 direct/timothy_tests/quick_tests/test_yaffs_rename_ELOOP_dev.c create mode 100644 direct/timothy_tests/quick_tests/test_yaffs_rename_ELOOP_dev.h diff --git a/direct/timothy_tests/quick_tests/Makefile b/direct/timothy_tests/quick_tests/Makefile index a13bad0..6c3ad4a 100644 --- a/direct/timothy_tests/quick_tests/Makefile +++ b/direct/timothy_tests/quick_tests/Makefile @@ -49,6 +49,7 @@ TESTFILES = quick_tests.o lib.o \ test_yaffs_unmount.o test_yaffs_unmount_ENODEV.o test_yaffs_unmount_ENAMETOOLONG.o test_yaffs_unmount_EBUSY.o \ test_yaffs_open.o test_yaffs_open_ENOENT.o test_yaffs_open_ENOTDIR.o test_yaffs_open_EEXIST.o test_yaffs_open_EISDIR.o \ test_yaffs_open_ENAMETOOLONG.o test_yaffs_open_EINVAL.o test_yaffs_open_EINVAL2.o test_yaffs_open_ELOOP.o \ + test_yaffs_open_ELOOP_dir.o \ test_yaffs_unlink.o test_yaffs_unlink_EISDIR.o test_yaffs_unlink_ENOENT.o test_yaffs_unlink_ENAMETOOLONG.o \ test_yaffs_unlink_ENOTDIR.o test_yaffs_unlink_ENOENT2.o \ test_yaffs_ftruncate.o test_yaffs_ftruncate_EBADF.o test_yaffs_ftruncate_EINVAL.o test_yaffs_ftruncate_big_file.o \ @@ -88,7 +89,7 @@ TESTFILES = quick_tests.o lib.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 \ test_yaffs_rename_dir.o test_yaffs_rename_dir_ENOENT.o test_yaffs_rename_dir_ENOENT2.o test_yaffs_rename_dir_to_file.o \ - test_yaffs_rename_file_to_dir.o test_yaffs_rename_EEXISTS.o test_yaffs_rename_ELOOP.o\ + test_yaffs_rename_file_to_dir.o test_yaffs_rename_EEXISTS.o test_yaffs_rename_ELOOP.o test_yaffs_rename_ELOOP_dev.o \ test_yaffs_lstat.o test_yaffs_lstat_ENOENT.o test_yaffs_lstat_ENOTDIR.o \ test_yaffs_flush.o test_yaffs_flush_EBADF.o diff --git a/direct/timothy_tests/quick_tests/quick_tests.h b/direct/timothy_tests/quick_tests/quick_tests.h index 8d819ee..42d2fe0 100644 --- a/direct/timothy_tests/quick_tests/quick_tests.h +++ b/direct/timothy_tests/quick_tests/quick_tests.h @@ -36,6 +36,7 @@ #include "test_yaffs_open_EINVAL.h" #include "test_yaffs_open_EINVAL2.h" #include "test_yaffs_open_ELOOP.h" +#include "test_yaffs_open_ELOOP_dir.h" #include "test_yaffs_close_EBADF.h" @@ -180,6 +181,7 @@ #include "test_yaffs_rename_file_to_dir.h" #include "test_yaffs_rename_EEXISTS.h" #include "test_yaffs_rename_ELOOP.h" +#include "test_yaffs_rename_ELOOP_dev.h" #include "test_yaffs_lstat.h" #include "test_yaffs_lstat_ENOENT.h" @@ -223,6 +225,7 @@ test_template test_list[]={ {test_yaffs_open_EINVAL,test_yaffs_open_EINVAL_clean,"test_yaffs_open_EINVAL"}, {test_yaffs_open_EINVAL2,test_yaffs_open_EINVAL2_clean,"test_yaffs_open_EINVAL2"}, {test_yaffs_open_ELOOP,test_yaffs_open_ELOOP_clean,"test_yaffs_open_ELOOP"}, + {test_yaffs_open_ELOOP_dir,test_yaffs_open_ELOOP_dir_clean,"test_yaffs_open_ELOOP_dir"}, {test_yaffs_close_EBADF,test_yaffs_close_EBADF_clean,"test_yaffs_close_EBADF"}, @@ -365,6 +368,7 @@ test_template test_list[]={ {test_yaffs_rename_file_to_dir,test_yaffs_rename_file_to_dir_clean,"test_yaffs_rename_file_to_dir"}, {test_yaffs_rename_EEXISTS,test_yaffs_rename_EEXISTS_clean,"test_yaffs_rename_EEXISTS"}, {test_yaffs_rename_ELOOP,test_yaffs_rename_ELOOP_clean,"test_yaffs_rename_ELOOP"}, + {test_yaffs_rename_ELOOP_dev,test_yaffs_rename_ELOOP_dev_clean,"test_yaffs_rename_ELOOP_dev"}, {test_yaffs_lstat,test_yaffs_lstat_clean,"test_yaffs_lstat"}, {test_yaffs_lstat_ENOENT,test_yaffs_lstat_ENOENT_clean,"test_yaffs_lstat_ENOENT"}, diff --git a/direct/timothy_tests/quick_tests/test_yaffs_open_ELOOP_dir.c b/direct/timothy_tests/quick_tests/test_yaffs_open_ELOOP_dir.c new file mode 100644 index 0000000..0f44248 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_open_ELOOP_dir.c @@ -0,0 +1,52 @@ +/* + * 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_open_ELOOP_dir.h" + +static int handle = -1; + +int test_yaffs_open_ELOOP_dir(void) +{ + int error_code=0; + + if (set_up_ELOOP()<0){ + print_message("failed to setup symlinks\n",2); + return -1; + } + handle=yaffs_open(ELOOP_PATH "/file", O_TRUNC| O_RDWR,FILE_MODE ); + if (handle <0){ + error_code=yaffs_get_error(); + if (abs(error_code)==ELOOP){ + return 1; + } + else { + print_message("different error than expected\n",2); + return -1; + } + } + else { + print_message("opened a ELOOP.(which is a bad thing)\n",2); + return -1; + } +} + +int test_yaffs_open_ELOOP_dir_clean(void) +{ + if (handle >=0){ + return yaffs_close(handle); + } + else { + return 1; /* the file failed to open so there is no need to close it*/ + } +} + diff --git a/direct/timothy_tests/quick_tests/test_yaffs_open_ELOOP_dir.h b/direct/timothy_tests/quick_tests/test_yaffs_open_ELOOP_dir.h new file mode 100644 index 0000000..9ee2f5f --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_open_ELOOP_dir.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_open_ELOOP_dir_h__ +#define __test_yaffs_open_ELOOP_dir_h__ + +#include "lib.h" +#include "yaffsfs.h" + +int test_yaffs_open_ELOOP_dir(void); +int test_yaffs_open_ELOOP_dir_clean(void); + +#endif diff --git a/direct/timothy_tests/quick_tests/test_yaffs_open_ENOTDIR.c b/direct/timothy_tests/quick_tests/test_yaffs_open_ENOTDIR.c index 25082ae..0984308 100644 --- a/direct/timothy_tests/quick_tests/test_yaffs_open_ENOTDIR.c +++ b/direct/timothy_tests/quick_tests/test_yaffs_open_ENOTDIR.c @@ -19,7 +19,7 @@ int test_yaffs_open_ENOTDIR(void) { int error_code=0; - handle=yaffs_open("/nonexisting_dir/foo", O_TRUNC| O_RDWR,FILE_MODE ); + handle=yaffs_open("/yaffs2/foo/file", O_TRUNC| O_RDWR,FILE_MODE ); if (handle <0){ error_code=yaffs_get_error(); if (abs(error_code)==ENOTDIR){ diff --git a/direct/timothy_tests/quick_tests/test_yaffs_rename_ELOOP_dev.c b/direct/timothy_tests/quick_tests/test_yaffs_rename_ELOOP_dev.c new file mode 100644 index 0000000..27a4df4 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rename_ELOOP_dev.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_ELOOP_dev.h" + + +int test_yaffs_rename_ELOOP_dev(void) +{ + int output=0; + int error_code =0; + + + if (set_up_ELOOP()<0){ + print_message("failed to setup symlinks\n",2); + return -1; + } + + + output = yaffs_rename(ELOOP_PATH "/file" , RENAME_PATH); + if (output<0){ + error_code=yaffs_get_error(); + if (abs(error_code)==ELOOP){ + return 1; + } else { + print_message("returned error does not match the the expected error\n",2); + return -1; + } + } else{ + print_message("renamed a ELOOP (which is a bad thing)\n",2); + return -1; + } +} + + +int test_yaffs_rename_ELOOP_dev_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_ELOOP_dev.h b/direct/timothy_tests/quick_tests/test_yaffs_rename_ELOOP_dev.h new file mode 100644 index 0000000..377bbb2 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_rename_ELOOP_dev.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_ELOOP_dev_h__ +#define __test_yaffs_rename_ELOOP_dev_h__ + +#include "lib.h" +#include "yaffsfs.h" + +int test_yaffs_rename_ELOOP_dev(void); +int test_yaffs_rename_ELOOP_dev_clean(void); + +#endif -- 2.30.2