diff options
Diffstat (limited to 'tools/regression/fstest/tests/link/00.t')
-rw-r--r-- | tools/regression/fstest/tests/link/00.t | 180 |
1 files changed, 61 insertions, 119 deletions
diff --git a/tools/regression/fstest/tests/link/00.t b/tools/regression/fstest/tests/link/00.t index 3c124aa..5ff36d0 100644 --- a/tools/regression/fstest/tests/link/00.t +++ b/tools/regression/fstest/tests/link/00.t @@ -6,7 +6,7 @@ desc="link creates hardlinks" dir=`dirname $0` . ${dir}/../misc.sh -echo "1..82" +echo "1..217" n0=`namegen` n1=`namegen` @@ -17,135 +17,77 @@ expect 0 mkdir ${n3} 0755 cdir=`pwd` cd ${n3} -expect 0 create ${n0} 0644 -expect regular,0644,1 lstat ${n0} type,mode,nlink +for type in regular fifo block char socket; do + create_file ${type} ${n0} 0 0 + expect ${type},1 lstat ${n0} type,nlink -expect 0 link ${n0} ${n1} -expect regular,0644,2 lstat ${n0} type,mode,nlink -expect regular,0644,2 lstat ${n1} type,mode,nlink + expect 0 link ${n0} ${n1} + expect ${type},2 lstat ${n0} type,nlink + expect ${type},2 lstat ${n1} type,nlink -expect 0 link ${n1} ${n2} -expect regular,0644,3 lstat ${n0} type,mode,nlink -expect regular,0644,3 lstat ${n1} type,mode,nlink -expect regular,0644,3 lstat ${n2} type,mode,nlink + expect 0 link ${n1} ${n2} + expect ${type},3 lstat ${n0} type,nlink + expect ${type},3 lstat ${n1} type,nlink + expect ${type},3 lstat ${n2} type,nlink -expect 0 chmod ${n1} 0201 -expect 0 chown ${n1} 65534 65533 + expect 0 chmod ${n1} 0201 + expect 0 chown ${n1} 65534 65533 -expect regular,0201,3,65534,65533 lstat ${n0} type,mode,nlink,uid,gid -expect regular,0201,3,65534,65533 lstat ${n1} type,mode,nlink,uid,gid -expect regular,0201,3,65534,65533 lstat ${n2} type,mode,nlink,uid,gid + expect ${type},0201,3,65534,65533 lstat ${n0} type,mode,nlink,uid,gid + expect ${type},0201,3,65534,65533 lstat ${n1} type,mode,nlink,uid,gid + expect ${type},0201,3,65534,65533 lstat ${n2} type,mode,nlink,uid,gid -expect 0 unlink ${n0} -expect ENOENT lstat ${n0} type,mode,nlink,uid,gid -expect regular,0201,2,65534,65533 lstat ${n1} type,mode,nlink,uid,gid -expect regular,0201,2,65534,65533 lstat ${n2} type,mode,nlink,uid,gid + expect 0 unlink ${n0} + expect ENOENT lstat ${n0} type,mode,nlink,uid,gid + expect ${type},0201,2,65534,65533 lstat ${n1} type,mode,nlink,uid,gid + expect ${type},0201,2,65534,65533 lstat ${n2} type,mode,nlink,uid,gid -expect 0 unlink ${n2} -expect ENOENT lstat ${n0} type,mode,nlink,uid,gid -expect regular,0201,1,65534,65533 lstat ${n1} type,mode,nlink,uid,gid -expect ENOENT lstat ${n2} type,mode,nlink,uid,gid + expect 0 unlink ${n2} + expect ENOENT lstat ${n0} type,mode,nlink,uid,gid + expect ${type},0201,1,65534,65533 lstat ${n1} type,mode,nlink,uid,gid + expect ENOENT lstat ${n2} type,mode,nlink,uid,gid -expect 0 unlink ${n1} -expect ENOENT lstat ${n0} type,mode,nlink,uid,gid -expect ENOENT lstat ${n1} type,mode,nlink,uid,gid -expect ENOENT lstat ${n2} type,mode,nlink,uid,gid - -expect 0 mkfifo ${n0} 0644 -expect fifo,0644,1 lstat ${n0} type,mode,nlink - -expect 0 link ${n0} ${n1} -expect fifo,0644,2 lstat ${n0} type,mode,nlink -expect fifo,0644,2 lstat ${n1} type,mode,nlink - -expect 0 link ${n1} ${n2} -expect fifo,0644,3 lstat ${n0} type,mode,nlink -expect fifo,0644,3 lstat ${n1} type,mode,nlink -expect fifo,0644,3 lstat ${n2} type,mode,nlink - -expect 0 chmod ${n1} 0201 -expect 0 chown ${n1} 65534 65533 - -expect fifo,0201,3,65534,65533 lstat ${n0} type,mode,nlink,uid,gid -expect fifo,0201,3,65534,65533 lstat ${n1} type,mode,nlink,uid,gid -expect fifo,0201,3,65534,65533 lstat ${n2} type,mode,nlink,uid,gid - -expect 0 unlink ${n0} -expect ENOENT lstat ${n0} type,mode,nlink,uid,gid -expect fifo,0201,2,65534,65533 lstat ${n1} type,mode,nlink,uid,gid -expect fifo,0201,2,65534,65533 lstat ${n2} type,mode,nlink,uid,gid - -expect 0 unlink ${n2} -expect ENOENT lstat ${n0} type,mode,nlink,uid,gid -expect fifo,0201,1,65534,65533 lstat ${n1} type,mode,nlink,uid,gid -expect ENOENT lstat ${n2} type,mode,nlink,uid,gid - -expect 0 unlink ${n1} -expect ENOENT lstat ${n0} type,mode,nlink,uid,gid -expect ENOENT lstat ${n1} type,mode,nlink,uid,gid -expect ENOENT lstat ${n2} type,mode,nlink,uid,gid + expect 0 unlink ${n1} + expect ENOENT lstat ${n0} type,mode,nlink,uid,gid + expect ENOENT lstat ${n1} type,mode,nlink,uid,gid + expect ENOENT lstat ${n2} type,mode,nlink,uid,gid +done # successful link(2) updates ctime. -expect 0 create ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -dctime1=`${fstest} stat . ctime` -dmtime1=`${fstest} stat . mtime` -sleep 1 -expect 0 link ${n0} ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -dctime2=`${fstest} stat . ctime` -test_check $dctime1 -lt $dctime2 -dmtime2=`${fstest} stat . mtime` -test_check $dctime1 -lt $dmtime2 -expect 0 unlink ${n0} -expect 0 unlink ${n1} - -expect 0 mkfifo ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -dctime1=`${fstest} stat . ctime` -dmtime1=`${fstest} stat . mtime` -sleep 1 -expect 0 link ${n0} ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -dctime2=`${fstest} stat . ctime` -test_check $dctime1 -lt $dctime2 -dmtime2=`${fstest} stat . mtime` -test_check $dctime1 -lt $dmtime2 -expect 0 unlink ${n0} -expect 0 unlink ${n1} +for type in regular fifo block char socket; do + create_file ${type} ${n0} 0 0 + ctime1=`${fstest} stat ${n0} ctime` + dctime1=`${fstest} stat . ctime` + dmtime1=`${fstest} stat . mtime` + sleep 1 + expect 0 link ${n0} ${n1} + ctime2=`${fstest} stat ${n0} ctime` + test_check $ctime1 -lt $ctime2 + dctime2=`${fstest} stat . ctime` + test_check $dctime1 -lt $dctime2 + dmtime2=`${fstest} stat . mtime` + test_check $dctime1 -lt $dmtime2 + expect 0 unlink ${n0} + expect 0 unlink ${n1} +done # unsuccessful link(2) does not update ctime. -expect 0 create ${n0} 0644 -expect 0 -- chown ${n0} 65534 -1 -ctime1=`${fstest} stat ${n0} ctime` -dctime1=`${fstest} stat . ctime` -dmtime1=`${fstest} stat . mtime` -sleep 1 -expect EACCES -u 65534 link ${n0} ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -dctime2=`${fstest} stat . ctime` -test_check $dctime1 -eq $dctime2 -dmtime2=`${fstest} stat . mtime` -test_check $dctime1 -eq $dmtime2 -expect 0 unlink ${n0} - -expect 0 mkfifo ${n0} 0644 -expect 0 -- chown ${n0} 65534 -1 -ctime1=`${fstest} stat ${n0} ctime` -dctime1=`${fstest} stat . ctime` -dmtime1=`${fstest} stat . mtime` -sleep 1 -expect EACCES -u 65534 link ${n0} ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -dctime2=`${fstest} stat . ctime` -test_check $dctime1 -eq $dctime2 -dmtime2=`${fstest} stat . mtime` -test_check $dctime1 -eq $dmtime2 -expect 0 unlink ${n0} +for type in regular fifo block char socket; do + create_file ${type} ${n0} 0 0 + expect 0 -- chown ${n0} 65534 -1 + ctime1=`${fstest} stat ${n0} ctime` + dctime1=`${fstest} stat . ctime` + dmtime1=`${fstest} stat . mtime` + sleep 1 + expect EACCES -u 65534 link ${n0} ${n1} + ctime2=`${fstest} stat ${n0} ctime` + test_check $ctime1 -eq $ctime2 + dctime2=`${fstest} stat . ctime` + test_check $dctime1 -eq $dctime2 + dmtime2=`${fstest} stat . mtime` + test_check $dctime1 -eq $dmtime2 + expect 0 unlink ${n0} +done cd ${cdir} expect 0 rmdir ${n3} |