summaryrefslogtreecommitdiffstats
path: root/testsuites/fstests/fssymlink
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2011-08-01 20:54:15 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2011-08-01 20:54:15 +0000
commit858e013f5aa4f41bc6da7b22368044b4bae7d7ed (patch)
tree44b272c6a870713f835ecc65b2903fbcbb5f0024 /testsuites/fstests/fssymlink
parent2011-08-01 Jennifer Averett <Jennifer.Averett@OARcorp.com> (diff)
downloadrtems-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.c142
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 ***" );
}