diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-08-01 20:54:15 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-08-01 20:54:15 +0000 |
commit | 858e013f5aa4f41bc6da7b22368044b4bae7d7ed (patch) | |
tree | 44b272c6a870713f835ecc65b2903fbcbb5f0024 /testsuites/fstests/fssymlink | |
parent | 2011-08-01 Jennifer Averett <Jennifer.Averett@OARcorp.com> (diff) | |
download | rtems-858e013f5aa4f41bc6da7b22368044b4bae7d7ed.tar.bz2 |
2011-08-01 Xiang Cui <medivhc@gmail.com>
* Makefile.am, configure.ac, fslink/fslink.doc, fslink/test.c,
fssymlink/test.c, imfs_fslink/Makefile.am,
imfs_fssymlink/Makefile.am, imfs_support/fs_config.h,
imfs_support/fs_support.c, mdosfs_support/fs_config.h,
mdosfs_support/fs_support.c, mimfs_fslink/Makefile.am,
mimfs_fssymlink/Makefile.am, mimfs_support/fs_config.h,
mimfs_support/fs_support.c, mrfs_fslink/Makefile.am,
mrfs_fssymlink/Makefile.am, mrfs_support/fs_config.h,
mrfs_support/fs_support.c, support/fstest.h,
support/fstest_support.c, support/fstest_support.h,
support/ramdisk_support.c, support/ramdisk_support.h: Submit correct
tarball of current work.
* fs01/init.c, fsfchx/fsfchx.doc, fsfchx/init.c, fsfile01/fsfile01.doc,
fsfile01/test.c, fsfile01/test_cat.c, fsfile01/test_extend.c,
fsfile01/test_write.c, fsfile02/fsfile02.doc, fsfile02/init.c,
fsfstest/fs-test.c, fsfstest/fsfstest.doc, fsimfs01/fsimfs01.doc,
fsimfs01/init.c, fsimfs02/fsimfs02.doc, fsimfs02/init.c,
fsmkdir/fsmkdir.doc, fsmkdir/test.c, fsopen/fsopen.doc,
fsopen/test.c, fsrdwrv/fsrdwrv.doc, fsrdwrv/test.c,
fsreaddir/fsreaddir.doc, fsreaddir/test.c, fsrename/fsrename.doc,
fsrename/test.c, fsrmdir/test.c, fsrwfile/fsrwfile.doc,
fsrwfile/init.c, fsstat/fsstat.doc, fsstat/test.c,
fstruncate/fstruncate.doc, fstruncate/test.c, imfs_fs01/.cvsignore,
imfs_fs01/Makefile.am, imfs_fs01/imfs_fs01.scn,
imfs_fsfchx/.cvsignore, imfs_fsfchx/Makefile.am,
imfs_fsfile01/.cvsignore, imfs_fsfile01/Makefile.am,
imfs_fsfile02/.cvsignore, imfs_fsfile02/Makefile.am,
imfs_fsfstest/.cvsignore, imfs_fsfstest/Makefile.am,
imfs_fsimfs01/.cvsignore, imfs_fsimfs01/Makefile.am,
imfs_fsimfs02/.cvsignore, imfs_fsimfs02/Makefile.am,
imfs_fslink/.cvsignore, imfs_fsmkdir/.cvsignore,
imfs_fsmkdir/Makefile.am, imfs_fsopen/.cvsignore,
imfs_fsopen/Makefile.am, imfs_fsrdwrv/.cvsignore,
imfs_fsrdwrv/Makefile.am, imfs_fsreaddir/.cvsignore,
imfs_fsreaddir/Makefile.am, imfs_fsrename/.cvsignore,
imfs_fsrename/Makefile.am, imfs_fsrmdir/.cvsignore,
imfs_fsrmdir/Makefile.am, imfs_fsrwfile/.cvsignore,
imfs_fsrwfile/Makefile.am, imfs_fsstat/.cvsignore,
imfs_fsstat/Makefile.am, imfs_fssymlink/.cvsignore,
imfs_fstruncate/.cvsignore, imfs_fstruncate/Makefile.am,
mdosfs_fsfchx/.cvsignore, mdosfs_fsfchx/Makefile.am,
mdosfs_fsfile01/.cvsignore, mdosfs_fsfile01/Makefile.am,
mdosfs_fsfile02/.cvsignore, mdosfs_fsfile02/Makefile.am,
mdosfs_fsfstest/.cvsignore, mdosfs_fsfstest/Makefile.am,
mdosfs_fsimfs01/.cvsignore, mdosfs_fsimfs01/Makefile.am,
mdosfs_fsimfs02/.cvsignore, mdosfs_fsimfs02/Makefile.am,
mdosfs_fslink/.cvsignore, mdosfs_fslink/Makefile.am,
mdosfs_fsmkdir/.cvsignore, mdosfs_fsmkdir/Makefile.am,
mdosfs_fsopen/.cvsignore, mdosfs_fsopen/Makefile.am,
mdosfs_fsrdwrv/.cvsignore, mdosfs_fsrdwrv/Makefile.am,
mdosfs_fsreaddir/.cvsignore, mdosfs_fsreaddir/Makefile.am,
mdosfs_fsrename/.cvsignore, mdosfs_fsrename/Makefile.am,
mdosfs_fsrmdir/.cvsignore, mdosfs_fsrmdir/Makefile.am,
mdosfs_fsrwfile/.cvsignore, mdosfs_fsrwfile/Makefile.am,
mdosfs_fsstat/.cvsignore, mdosfs_fsstat/Makefile.am,
mdosfs_fssymlink/.cvsignore, mdosfs_fssymlink/Makefile.am,
mdosfs_fstruncate/.cvsignore, mdosfs_fstruncate/Makefile.am,
mimfs_fs01/.cvsignore, mimfs_fs01/Makefile.am,
mimfs_fs01/mimfs_fs01.scn, mimfs_fsfchx/.cvsignore,
mimfs_fsfchx/Makefile.am, mimfs_fsfile01/.cvsignore,
mimfs_fsfile01/Makefile.am, mimfs_fsfile02/.cvsignore,
mimfs_fsfile02/Makefile.am, mimfs_fsfstest/.cvsignore,
mimfs_fsfstest/Makefile.am, mimfs_fsimfs01/.cvsignore,
mimfs_fsimfs01/Makefile.am, mimfs_fsimfs02/.cvsignore,
mimfs_fsimfs02/Makefile.am, mimfs_fslink/.cvsignore,
mimfs_fsmkdir/.cvsignore, mimfs_fsmkdir/Makefile.am,
mimfs_fsopen/.cvsignore, mimfs_fsopen/Makefile.am,
mimfs_fsrdwrv/.cvsignore, mimfs_fsrdwrv/Makefile.am,
mimfs_fsreaddir/.cvsignore, mimfs_fsreaddir/Makefile.am,
mimfs_fsrename/.cvsignore, mimfs_fsrename/Makefile.am,
mimfs_fsrmdir/.cvsignore, mimfs_fsrmdir/Makefile.am,
mimfs_fsrwfile/.cvsignore, mimfs_fsrwfile/Makefile.am,
mimfs_fsstat/.cvsignore, mimfs_fsstat/Makefile.am,
mimfs_fssymlink/.cvsignore, mimfs_fstruncate/.cvsignore,
mimfs_fstruncate/Makefile.am, mrfs_fsfchx/.cvsignore,
mrfs_fsfchx/Makefile.am, mrfs_fsfile01/.cvsignore,
mrfs_fsfile01/Makefile.am, mrfs_fsfile02/.cvsignore,
mrfs_fsfile02/Makefile.am, mrfs_fsfstest/.cvsignore,
mrfs_fsfstest/Makefile.am, mrfs_fsimfs01/.cvsignore,
mrfs_fsimfs01/Makefile.am, mrfs_fsimfs02/.cvsignore,
mrfs_fsimfs02/Makefile.am, mrfs_fslink/.cvsignore,
mrfs_fsmkdir/.cvsignore, mrfs_fsmkdir/Makefile.am,
mrfs_fsopen/.cvsignore, mrfs_fsopen/Makefile.am,
mrfs_fsrdwrv/.cvsignore, mrfs_fsrdwrv/Makefile.am,
mrfs_fsreaddir/.cvsignore, mrfs_fsreaddir/Makefile.am,
mrfs_fsrename/.cvsignore, mrfs_fsrename/Makefile.am,
mrfs_fsrmdir/.cvsignore, mrfs_fsrmdir/Makefile.am,
mrfs_fsrwfile/.cvsignore, mrfs_fsrwfile/Makefile.am,
mrfs_fsstat/.cvsignore, mrfs_fsstat/Makefile.am,
mrfs_fssymlink/.cvsignore, mrfs_fstruncate/.cvsignore,
mrfs_fstruncate/Makefile.am: Removed.
Diffstat (limited to 'testsuites/fstests/fssymlink')
-rw-r--r-- | testsuites/fstests/fssymlink/test.c | 142 |
1 files changed, 84 insertions, 58 deletions
diff --git a/testsuites/fstests/fssymlink/test.c b/testsuites/fstests/fssymlink/test.c index 7e12273845..387a210844 100644 --- a/testsuites/fstests/fssymlink/test.c +++ b/testsuites/fstests/fssymlink/test.c @@ -1,6 +1,16 @@ +/* + * COPYRIGHT (c) 1989-2011. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id Exp $ + */ + #include <sys/stat.h> -#include <limits.h> #include <fcntl.h> #include <errno.h> #include <stdio.h> @@ -16,122 +26,138 @@ /* * Test the function of symlink */ -void symlink_test01() + +void symlink_test01(void ) { int fd; - char* name0="file"; - char* name1="symlink"; + char* file01="file"; + char* symlink_file01="symlink"; + char name[20]; int status; struct stat statbuf; - int len=strlen(name0); + size_t len=strlen(file01); + size_t name_len; + - printf("Create a file named %s\n",name0); - fd=creat(name0,0777); + printf("Create a file named %s\n",file01); + fd=creat(file01,0777); status=close(fd); rtems_test_assert(status==0); - printf("Create a symlink named %s to %s\n",name1,name0); - status=symlink(name0,name1); + printf("Create a symlink named %s to %s\n",symlink_file01,file01); + status=symlink(file01,symlink_file01); rtems_test_assert(status==0); - status=stat(name0,&statbuf); + status=stat(file01,&statbuf); rtems_test_assert(status==0); rtems_test_assert(S_ISREG(statbuf.st_mode)); rtems_test_assert(0==statbuf.st_size); - - status=lstat(name1,&statbuf); + status=lstat(symlink_file01,&statbuf); rtems_test_assert(status==0); rtems_test_assert(S_ISLNK(statbuf.st_mode)); -#if !defined(IMFS_TEST) && !defined(MIMFS_TEST) rtems_test_assert(len==statbuf.st_size); -#endif + + puts("call readlink "); + name_len=readlink(symlink_file01,name,sizeof(name)-1); + rtems_test_assert(name_len!=-1); + name[name_len]='\0'; + rtems_test_assert(!strncmp(name,file01,name_len)); + puts(name); puts("Unlink the file"); - status=unlink(name0); + status=unlink(file01); rtems_test_assert(status==0); - - status=lstat(name1,&statbuf); + status=lstat(symlink_file01,&statbuf); rtems_test_assert(status==0); rtems_test_assert(S_ISLNK(statbuf.st_mode)); - - status=unlink(name1); + rtems_test_assert(len==statbuf.st_size); + + puts("call readlink "); + name_len=readlink(symlink_file01,name,sizeof(name)-1); + rtems_test_assert(name_len!=-1); + name[name_len]='\0'; + rtems_test_assert(!strncmp(name,file01,name_len)); + status=unlink(symlink_file01); rtems_test_assert(status==0); - printf("Create a dir named %s\n",name0); - status=mkdir (name0,0777); + printf("Create a dir named %s\n",file01); + status=mkdir (file01,0777); - printf("Create a symlink named %s to %s\n",name1,name0); - status=symlink(name0,name1); + printf("Create a symlink named %s to %s\n",symlink_file01,file01); + status=symlink(file01,symlink_file01); rtems_test_assert(status==0); - - - status=lstat(name1,&statbuf); + status=lstat(symlink_file01,&statbuf); rtems_test_assert(status==0); rtems_test_assert(S_ISLNK(statbuf.st_mode)); -#if !defined(IMFS_TEST) && !defined(MIMFS_TEST) rtems_test_assert(len==statbuf.st_size); -#endif + + + puts("call readlink "); + name_len=readlink(symlink_file01,name,sizeof(name)-1); + rtems_test_assert(name_len!=-1); + name[name_len]='\0'; + rtems_test_assert(!strncmp(name,file01,name_len)); + + name_len=readlink(symlink_file01,name,3); + rtems_test_assert(name_len!=-1); + name[name_len]='\0'; + rtems_test_assert(!strncmp(name,file01,name_len)); puts("rmdir the dir"); - status=rmdir(name0); + status=rmdir(file01); rtems_test_assert(status==0); - - status=lstat(name1,&statbuf); + status=lstat(symlink_file01,&statbuf); rtems_test_assert(status==0); rtems_test_assert(S_ISLNK(statbuf.st_mode)); - status=unlink(name1); + status=unlink(symlink_file01); rtems_test_assert(status==0); } /* - * symlink loop test + * symlink loop error test */ -void symlink_test02() +void symlink_loop_error_test(void ) { + char* file01="file01"; + char* file02="file02"; + + char* file04="file04"; + char* path="file01/t"; - char* name0="symlink0"; - char* name1="symlink1"; int status; + mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO; + + puts("symlink loop erro test"); - puts("symlink loop test"); - status=symlink(name0,name1); + status=symlink(file01,file02); rtems_test_assert(status==0); - status=symlink(name1,name0); + status=symlink(file02,file01); rtems_test_assert(status==0); - - puts("create a file Should fail with ELOOP"); - status=creat(name0,0777); - rtems_test_assert(status!=0); -#if !defined(MRFS_TEST) - rtems_test_assert(errno==ELOOP); -#endif - puts("truncate a file Should with ELOOP"); - status=truncate(name0,0777); - rtems_test_assert(status!=0); -#if !defined(MRFS_TEST) - rtems_test_assert(errno==ELOOP); -#endif + + EXPECT_ERROR(ELOOP,creat,path,mode); + EXPECT_ERROR(ELOOP,open,path,O_CREAT|O_WRONLY,mode); + EXPECT_ERROR(ELOOP,truncate,path,0); + EXPECT_ERROR(ELOOP,rename,path,file04); + EXPECT_ERROR(ELOOP,unlink,path); + EXPECT_ERROR(ELOOP,mkdir,path,mode); + EXPECT_ERROR(ELOOP,rmdir,path); } -void test() +void test(void ) { puts( "\n\n*** SYMLINK TEST ***" ); -#if defined(MDOSFS_TEST) -#else symlink_test01(); - symlink_test02(); -#endif - + symlink_loop_error_test(); puts( "*** END OF SYMLINK TEST ***" ); } |