source: rtems/testsuites/fstests/fssymlink/test.c @ 32eba74

4.115
Last change on this file since 32eba74 was 7336d4af, checked in by Joel Sherrill <joel.sherrill@…>, on 08/01/11 at 14:29:54

2011-08-01 Xiang Cui <medivhc@…>

  • Makefile.am, configure.ac, imfs_support/fs_config.h, imfs_support/fs_support.c, mimfs_support/fs_config.h, mimfs_support/fs_support.c: Add initial version of new filesystem tests. There are multiple failures which need to be addressed by the community.
  • 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, fslink/fslink.doc, fslink/test.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, fssymlink/fssymlink.doc, fssymlink/test.c, fstruncate/fstruncate.doc, fstruncate/test.c, 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_fslink/Makefile.am, 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_fssymlink/Makefile.am, 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, mdosfs_support/fs_config.h, mdosfs_support/fs_support.c, 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_fslink/Makefile.am, 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_fssymlink/Makefile.am, 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_fslink/Makefile.am, 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_fssymlink/Makefile.am, mrfs_fstruncate/.cvsignore, mrfs_fstruncate/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: New files.
  • Property mode set to 100644
File size: 2.7 KB
Line 
1
2#include <sys/stat.h>
3#include <limits.h>
4#include <fcntl.h>
5#include <errno.h>
6#include <stdio.h>
7#include <stdint.h>
8#include <unistd.h>
9#include <stdlib.h>
10#include <string.h>
11#include <unistd.h>
12#include <dirent.h>
13
14#include "fstest.h"
15
16/*
17 * Test the function of symlink
18 */
19void symlink_test01()
20{
21  int   fd;
22  char* name0="file";
23  char* name1="symlink";
24  int   status;
25  struct stat statbuf;
26  int   len=strlen(name0);
27
28  printf("Create a file named %s\n",name0);
29  fd=creat(name0,0777);
30  status=close(fd);
31  rtems_test_assert(status==0);
32
33  printf("Create a symlink named %s to %s\n",name1,name0);
34  status=symlink(name0,name1);
35  rtems_test_assert(status==0);
36
37  status=stat(name0,&statbuf);
38  rtems_test_assert(status==0);
39  rtems_test_assert(S_ISREG(statbuf.st_mode));
40  rtems_test_assert(0==statbuf.st_size);
41 
42
43  status=lstat(name1,&statbuf);
44  rtems_test_assert(status==0);
45  rtems_test_assert(S_ISLNK(statbuf.st_mode));
46#if !defined(IMFS_TEST) && !defined(MIMFS_TEST)
47  rtems_test_assert(len==statbuf.st_size);
48#endif
49
50
51  puts("Unlink the file");
52 
53  status=unlink(name0);
54  rtems_test_assert(status==0);
55
56
57  status=lstat(name1,&statbuf);
58  rtems_test_assert(status==0);
59  rtems_test_assert(S_ISLNK(statbuf.st_mode));
60
61  status=unlink(name1);
62  rtems_test_assert(status==0);
63
64  printf("Create a dir named %s\n",name0);
65  status=mkdir (name0,0777);
66 
67  printf("Create a symlink named %s to %s\n",name1,name0);
68  status=symlink(name0,name1);
69  rtems_test_assert(status==0);
70
71
72
73  status=lstat(name1,&statbuf);
74  rtems_test_assert(status==0);
75  rtems_test_assert(S_ISLNK(statbuf.st_mode));
76#if !defined(IMFS_TEST) && !defined(MIMFS_TEST)
77  rtems_test_assert(len==statbuf.st_size);
78#endif
79
80  puts("rmdir the dir");
81  status=rmdir(name0);
82  rtems_test_assert(status==0);
83 
84
85  status=lstat(name1,&statbuf);
86  rtems_test_assert(status==0);
87  rtems_test_assert(S_ISLNK(statbuf.st_mode));
88
89  status=unlink(name1);
90  rtems_test_assert(status==0);
91
92}
93/*
94 *  symlink loop test
95 */
96void symlink_test02()
97{
98
99  char* name0="symlink0";
100  char* name1="symlink1";
101  int   status;
102
103
104  puts("symlink loop test");
105  status=symlink(name0,name1);
106  rtems_test_assert(status==0);
107  status=symlink(name1,name0);
108  rtems_test_assert(status==0);
109
110 
111  puts("create a file Should fail with ELOOP");
112  status=creat(name0,0777);
113  rtems_test_assert(status!=0);
114#if !defined(MRFS_TEST)
115  rtems_test_assert(errno==ELOOP);
116#endif
117  puts("truncate a file Should with ELOOP");
118  status=truncate(name0,0777);
119  rtems_test_assert(status!=0);
120#if !defined(MRFS_TEST)
121  rtems_test_assert(errno==ELOOP);
122#endif
123}
124
125void test()
126{
127
128  puts( "\n\n*** SYMLINK TEST ***" );
129#if defined(MDOSFS_TEST)
130#else
131  symlink_test01();
132  symlink_test02();
133#endif
134
135  puts( "*** END OF SYMLINK TEST ***" );
136
137}
138
Note: See TracBrowser for help on using the repository browser.