]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - tools/regression/pjdfstest/tests/rename/06.t
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / tools / regression / pjdfstest / tests / rename / 06.t
1 #!/bin/sh
2 # $FreeBSD$
3
4 desc="rename returns EPERM if the file pointed at by the 'from' argument has its immutable, undeletable or append-only flag set"
5
6 dir=`dirname $0`
7 . ${dir}/../misc.sh
8
9 require chflags
10
11 case "${os}:${fs}" in
12 FreeBSD:ZFS)
13         flags="SF_IMMUTABLE SF_NOUNLINK SF_APPEND"
14         echo "1..195"
15         ;;
16 FreeBSD:UFS)
17         flags="SF_IMMUTABLE SF_NOUNLINK SF_APPEND UF_IMMUTABLE UF_NOUNLINK UF_APPEND"
18         echo "1..351"
19         ;;
20 *)
21         quick_exit
22 esac
23
24 n0=`namegen`
25 n1=`namegen`
26
27 for type in regular dir fifo block char socket symlink; do
28         if [ "${type}" != "symlink" ]; then
29                 create_file ${type} ${n0}
30                 for flag in ${flags}; do
31                         expect 0 chflags ${n0} ${flag}
32                         expect ${flag} stat ${n0} flags
33                         [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
34                         expect EPERM rename ${n0} ${n1}
35                         [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
36                         expect ENOENT rename ${n1} ${n0}
37                 done
38                 expect 0 chflags ${n0} none
39                 if [ "${type}" = "dir" ]; then
40                         expect 0 rmdir ${n0}
41                 else
42                         expect 0 unlink ${n0}
43                 fi
44         fi
45
46         create_file ${type} ${n0}
47         for flag in ${flags}; do
48                 expect 0 lchflags ${n0} ${flag}
49                 expect ${flag} lstat ${n0} flags
50                 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
51                 expect EPERM rename ${n0} ${n1}
52                 [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM."
53                 expect ENOENT rename ${n1} ${n0}
54         done
55         expect 0 lchflags ${n0} none
56         if [ "${type}" = "dir" ]; then
57                 expect 0 rmdir ${n0}
58         else
59                 expect 0 unlink ${n0}
60         fi
61 done