fstest for Linux:

- Use -- when needed so Linux getopt(3) won't get confused.
- Follow POSIX more closely.

Submitted by:	Szabolcs Szakacsits <szaka@ntfs-3g.org>
This commit is contained in:
pjd 2008-11-23 20:07:00 +00:00
parent ab1964bdc2
commit 8c5f55739a
9 changed files with 53 additions and 56 deletions

View File

@ -61,7 +61,7 @@ expect 0 unlink ${n1}
expect 0 create ${n0} 0644
expect 0 chown ${n0} 65534 65533
expect 65534,65533 lstat ${n0} uid,gid
expect 0 -u 65534 -g 65532,65531 chown ${n0} -1 65532
expect 0 -u 65534 -g 65532,65531 -- chown ${n0} -1 65532
expect 65534,65532 lstat ${n0} uid,gid
expect 0 -u 65534 -g 65532,65531 chown ${n0} 65534 65531
expect 65534,65531 lstat ${n0} uid,gid
@ -72,17 +72,17 @@ expect 0 unlink ${n0}
# 39
expect 0 create ${n0} 0644
expect 0 chown ${n0} 65534 65533
expect 0 -u 65532 -g 65531 chown ${n0} -1 -1
expect 0 -u 65532 -g 65531 -- chown ${n0} -1 -1
expect 0 unlink ${n0}
# when super-user calls chown(2), set-uid and set-gid bits are not removed.
# when super-user calls chown(2), set-uid and set-gid bits may be removed.
# 43
expect 0 create ${n0} 0644
expect 0 chown ${n0} 65534 65533
expect 0 chmod ${n0} 06555
expect 06555 lstat ${n0} mode
expect 0 chown ${n0} 65532 65531
expect 06555 lstat ${n0} mode
expect "06555|0555" lstat ${n0} mode
expect 0 unlink ${n0}
# 50
expect 0 create ${n0} 0644
@ -90,7 +90,7 @@ expect 0 chown ${n0} 0 0
expect 0 chmod ${n0} 06555
expect 06555 lstat ${n0} mode
expect 0 chown ${n0} 65534 65533
expect 06555 lstat ${n0} mode
expect "06555|0555" lstat ${n0} mode
expect 0 unlink ${n0}
# 57
expect 0 create ${n0} 0644
@ -98,11 +98,11 @@ expect 0 chown ${n0} 65534 65533
expect 0 chmod ${n0} 06555
expect 06555 lstat ${n0} mode
expect 0 chown ${n0} 0 0
expect 06555 lstat ${n0} mode
expect "06555|0555" lstat ${n0} mode
expect 0 unlink ${n0}
# when non-super-user calls chown(2) successfully, set-uid and set-gid bits are
# removed, except when both uid and gid are equal to -1.
# when non-super-user calls chown(2) successfully, set-uid and set-gid bits may
# be removed, except when both uid and gid are equal to -1.
# 64
expect 0 create ${n0} 0644
expect 0 chown ${n0} 65534 65533
@ -112,12 +112,12 @@ expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532
expect 0555,65534,65532 lstat ${n0} mode,uid,gid
expect 0 chmod ${n0} 06555
expect 06555 lstat ${n0} mode
expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 65533
expect 0 -u 65534 -g 65533,65532 -- chown ${n0} -1 65533
expect 0555,65534,65533 lstat ${n0} mode,uid,gid
expect 0 chmod ${n0} 06555
expect 06555 lstat ${n0} mode
expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 -1
expect 06555,65534,65533 lstat ${n0} mode,uid,gid
expect 0 -u 65534 -g 65533,65532 -- chown ${n0} -1 -1
expect "06555,65534,65533|0555,65534,65533" lstat ${n0} mode,uid,gid
expect 0 unlink ${n0}
# 79
expect 0 mkdir ${n0} 0755
@ -125,14 +125,14 @@ expect 0 chown ${n0} 65534 65533
expect 0 chmod ${n0} 06555
expect 06555 lstat ${n0} mode
expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532
expect 0555,65534,65532 lstat ${n0} mode,uid,gid
expect "0555,65534,65532|06555,65534,65532" lstat ${n0} mode,uid,gid
expect 0 chmod ${n0} 06555
expect 06555 lstat ${n0} mode
expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 65533
expect 0555,65534,65533 lstat ${n0} mode,uid,gid
expect 0 -u 65534 -g 65533,65532 -- chown ${n0} -1 65533
expect "0555,65534,65533|06555,65534,65533" lstat ${n0} mode,uid,gid
expect 0 chmod ${n0} 06555
expect 06555 lstat ${n0} mode
expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 -1
expect 0 -u 65534 -g 65533,65532 -- chown ${n0} -1 -1
expect 06555,65534,65533 lstat ${n0} mode,uid,gid
expect 0 rmdir ${n0}
# 94
@ -145,11 +145,11 @@ if supported lchmod; then
expect 0555,65534,65532 lstat ${n0} mode,uid,gid
expect 0 lchmod ${n0} 06555
expect 06555 lstat ${n0} mode
expect 0 -u 65534 -g 65533,65532 lchown ${n0} -1 65533
expect 0 -u 65534 -g 65533,65532 -- lchown ${n0} -1 65533
expect 0555,65534,65533 lstat ${n0} mode,uid,gid
expect 0 lchmod ${n0} 06555
expect 06555 lstat ${n0} mode
expect 0 -u 65534 -g 65533,65532 lchown ${n0} -1 -1
expect 0 -u 65534 -g 65533,65532 -- lchown ${n0} -1 -1
expect 06555,65534,65533 lstat ${n0} mode,uid,gid
expect 0 unlink ${n0}
fi
@ -236,7 +236,7 @@ expect 0 unlink ${n0}
expect 0 create ${n0} 0644
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
expect 0 chown ${n0} -1 -1
expect 0 -- chown ${n0} -1 -1
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -eq $ctime2
expect 0 unlink ${n0}
@ -244,7 +244,7 @@ expect 0 unlink ${n0}
expect 0 mkdir ${n0} 0644
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
expect 0 chown ${n0} -1 -1
expect 0 -- chown ${n0} -1 -1
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -eq $ctime2
expect 0 rmdir ${n0}
@ -252,7 +252,7 @@ expect 0 rmdir ${n0}
expect 0 mkfifo ${n0} 0644
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
expect 0 chown ${n0} -1 -1
expect 0 -- chown ${n0} -1 -1
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -eq $ctime2
expect 0 unlink ${n0}
@ -260,7 +260,7 @@ expect 0 unlink ${n0}
expect 0 symlink ${n1} ${n0}
ctime1=`${fstest} lstat ${n0} ctime`
sleep 1
expect 0 lchown ${n0} -1 -1
expect 0 -- lchown ${n0} -1 -1
ctime2=`${fstest} lstat ${n0} ctime`
test_check $ctime1 -eq $ctime2
expect 0 unlink ${n0}
@ -270,7 +270,7 @@ expect 0 unlink ${n0}
expect 0 create ${n0} 0644
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
expect EPERM -u 65534 chown ${n0} 65534 -1
expect EPERM -u 65534 -- chown ${n0} 65534 -1
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -eq $ctime2
expect 0 unlink ${n0}
@ -278,7 +278,7 @@ expect 0 unlink ${n0}
expect 0 mkdir ${n0} 0755
ctime1=`${fstest} stat ${n0} ctime`
sleep 1
expect EPERM -u 65534 -g 65534 chown ${n0} -1 65534
expect EPERM -u 65534 -g 65534 -- chown ${n0} -1 65534
ctime2=`${fstest} stat ${n0} ctime`
test_check $ctime1 -eq $ctime2
expect 0 rmdir ${n0}

View File

@ -18,13 +18,13 @@ cd ${n0}
expect 0 mkdir ${n1} 0755
expect 0 chown ${n1} 65534 65534
expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644
expect 0 -u 65534 -g 65533,65534 chown ${n1}/${n2} -1 65533
expect 0 -u 65534 -g 65533,65534 -- chown ${n1}/${n2} -1 65533
expect 65534,65533 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid
expect 0 chmod ${n1} 0644
expect EACCES -u 65534 -g 65533,65534 chown ${n1}/${n2} -1 65534
expect EACCES -u 65534 -g 65533,65534 -- chown ${n1}/${n2} -1 65534
expect 0 chmod ${n1} 0755
expect 65534,65533 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid
expect 0 -u 65534 -g 65533,65534 chown ${n1}/${n2} -1 65534
expect 0 -u 65534 -g 65533,65534 -- chown ${n1}/${n2} -1 65534
expect 65534,65534 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid
expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
expect 0 rmdir ${n1}

View File

@ -21,7 +21,7 @@ expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644
expect EPERM -u 65534 -g 65534 chown ${n1}/${n2} 65533 65533
expect EPERM -u 65533 -g 65533 chown ${n1}/${n2} 65534 65534
expect EPERM -u 65533 -g 65533 chown ${n1}/${n2} 65533 65533
expect EPERM -u 65534 -g 65534 chown ${n1}/${n2} -1 65533
expect EPERM -u 65534 -g 65534 -- chown ${n1}/${n2} -1 65533
expect 0 unlink ${n1}/${n2}
expect 0 rmdir ${n1}
cd ${cdir}

View File

@ -118,7 +118,7 @@ expect 0 unlink ${n1}
# unsuccessful link(2) does not update ctime.
expect 0 create ${n0} 0644
expect 0 chown ${n0} 65534 -1
expect 0 -- chown ${n0} 65534 -1
ctime1=`${fstest} stat ${n0} ctime`
dctime1=`${fstest} stat . ctime`
dmtime1=`${fstest} stat . mtime`
@ -133,7 +133,7 @@ test_check $dctime1 -eq $dmtime2
expect 0 unlink ${n0}
expect 0 mkfifo ${n0} 0644
expect 0 chown ${n0} 65534 -1
expect 0 -- chown ${n0} 65534 -1
ctime1=`${fstest} stat ${n0} ctime`
dctime1=`${fstest} stat . ctime`
dmtime1=`${fstest} stat . mtime`

View File

@ -1,7 +1,7 @@
#!/bin/sh
# $FreeBSD$
desc="open returns EINVAL when an attempt was made to open a descriptor with an illegal combination of O_RDONLY, O_WRONLY, and O_RDWR"
desc="open may return EINVAL when an attempt was made to open a descriptor with an illegal combination of O_RDONLY, O_WRONLY, and O_RDWR"
dir=`dirname $0`
. ${dir}/../misc.sh
@ -11,6 +11,6 @@ echo "1..4"
n0=`namegen`
expect 0 create ${n0} 0644
expect EINVAL open ${n0} O_WRONLY,O_RDWR
expect EINVAL open ${n0} O_RDONLY,O_WRONLY,O_RDWR
expect "0|EINVAL" open ${n0} O_WRONLY,O_RDWR
expect "0|EINVAL" open ${n0} O_RDONLY,O_WRONLY,O_RDWR
expect 0 unlink ${n0}

View File

@ -1,7 +1,7 @@
#!/bin/sh
# $FreeBSD$
desc="rename returns EINVAL when an attempt is made to rename '.' or '..'"
desc="rename returns EINVAL/EBUSY when an attempt is made to rename '.' or '..'"
dir=`dirname $0`
. ${dir}/../misc.sh
@ -15,8 +15,8 @@ n2=`namegen`
expect 0 mkdir ${n0} 0755
expect 0 mkdir ${n0}/${n1} 0755
expect EINVAL rename ${n0}/${n1}/. ${n2}
expect EINVAL rename ${n0}/${n1}/.. ${n2}
expect "EINVAL|EBUSY" rename ${n0}/${n1}/. ${n2}
expect "EINVAL|EBUSY" rename ${n0}/${n1}/.. ${n2}
expect 0 rmdir ${n0}/${n1}
expect 0 rmdir ${n0}

View File

@ -6,7 +6,7 @@ desc="write access to subdirectory is required to move it to another directory"
dir=`dirname $0`
. ${dir}/../misc.sh
echo "1..13"
echo "1..15"
n0=`namegen`
n1=`namegen`
@ -18,23 +18,28 @@ expect 0 mkdir ${n3} 0777
cdir=`pwd`
# Check that write permission on containing directory (${n2}) is enough
# to rename subdirectory (${n0}).
# to rename subdirectory (${n0}). If we rename directory write access
# to this directory may also be required.
expect 0 mkdir ${n2}/${n0} 0700
expect 0 -u 65534 -g 65534 rename ${n2}/${n0} ${n2}/${n1}
expect "0|EACCES" -u 65534 -g 65534 rename ${n2}/${n0} ${n2}/${n1}
expect "0|EACCES" -u 65534 -g 65534 rename ${n2}/${n1} ${n2}/${n0}
# Check that write permission on containing directory (${n2}) is not enough
# to move subdirectory (${n0}) from that directory.
expect EACCES -u 65534 -g 65534 rename ${n2}/${n1} ${n3}/${n0}
# Actually POSIX says that write access to ${n2} and ${n3} may be enough
# to move ${n0} from ${n2} to ${n3}.
expect "0|EACCES" -u 65534 -g 65534 rename ${n2}/${n0} ${n3}/${n1}
expect 0 rmdir ${n2}/${n1}
expect ENOENT rmdir ${n2}/${n1}
expect 0 rmdir ${n2}/${n0}
expect ENOENT rmdir ${n2}/${n0}
expect ENOENT rmdir ${n3}/${n1}
# Check that write permission on containing directory (${n2}) is enough
# to move file (${n0}) from that directory.
expect 0 create ${n2}/${n0} 0755
expect 0 -u 65534 -g 65534 rename ${n2}/${n0} ${n3}/${n0}
expect 0 -u 65534 -g 65534 rename ${n2}/${n0} ${n3}/${n1}
expect 0 unlink ${n3}/${n0}
expect 0 unlink ${n3}/${n1}
expect ENOENT unlink ${n2}/${n0}
expect 0 rmdir ${n3}

View File

@ -11,6 +11,6 @@ echo "1..4"
n0=`namegen`
expect 0 create ${n0} 0644
expect EINVAL truncate ${n0} -1
expect EINVAL truncate ${n0} -999999
expect EINVAL -- truncate ${n0} -1
expect EINVAL -- truncate ${n0} -999999
expect 0 unlink ${n0}

View File

@ -1,7 +1,7 @@
#!/bin/sh
# $FreeBSD$
desc="unlink returns EPERM if the named file is a directory"
desc="unlink may return EPERM if the named file is a directory"
dir=`dirname $0`
. ${dir}/../misc.sh
@ -11,13 +11,5 @@ echo "1..3"
n0=`namegen`
expect 0 mkdir ${n0} 0755
case "${os}:${fs}" in
SunOS:UFS)
expect 0 unlink ${n0}
expect ENOENT rmdir ${n0}
;;
*)
expect EPERM unlink ${n0}
expect 0 rmdir ${n0}
;;
esac
expect "0|EPERM" unlink ${n0}
expect "0|ENOENT" rmdir ${n0}