Add an "unsafe" symlink to the symlink test case so we can see what happens.
[rsync/rsync.git] / testsuite / rsync.fns
index 7508ce8..c321dd3 100644 (file)
@@ -41,7 +41,7 @@ printmsg() {
 }
 
 
-rsync_ls_lR {
+rsync_ls_lR() {
     find "$@" -print | sort | xargs $TLS
 }
 
@@ -53,7 +53,8 @@ hands_setup() {
     # Clean before creation
     rm -rf $FROM
     rm -rf $TO
-    
+
+    [ -d $TMP ] || mkdir $TMP
     [ -d $FROM ] || mkdir $FROM
     [ -d $TO ] || mkdir $TO
 
@@ -72,7 +73,7 @@ hands_setup() {
     mkdir ${FROM}/emptydir
 
     # a hundred lines of text or so
-    rsync_ls_lR ${srcdir} > ${FROM}/filelist
+    rsync_ls_lR "${srcdir}" > ${FROM}/filelist
 
     # This might fail on systems that don't have -n
     echo $ECHO_N "This file has no trailing lf$ECHO_C" > ${FROM}/nolf
@@ -94,12 +95,18 @@ hands_setup() {
 }
 
 
+hands_cleanup() {
+    rm -r "$TMP"
+}
+
+
 
 
 ####################
 # Many machines do not have "mkdir -p", so we have to build up long paths.
 # How boring.  
 makepath () {
+    echo "        makepath $1"
     p="$1"
     (
        # Absolut Unix.
@@ -111,8 +118,12 @@ makepath () {
        # This will break if $1 contains a space.
        for c in `echo $p | tr '/' ' '`
        do 
-           [ -d "$c" ] || mkdir "$c" || return $? 
-           cd "$c" || return $?
+           if [ -d "$c" ] || mkdir "$c" 
+           then
+               cd "$c" || return $?
+           else
+               echo "failed to create $c" >&2; return $?
+           fi
        done
     )
 }
@@ -144,8 +155,8 @@ checkit() {
     echo "-------------">>${log}
     echo "check how the directory listings compare with diff:">>${log}
     echo "">>${log}
-    ( rsync_ls_lR "$2" ) > ${TMP}/ls-from 2>>${log}
-    ( rsync_ls_lR "$3" ) > ${TMP}/ls-to  2>>${log}
+    ( cd "$2" && rsync_ls_lR . ) > ${TMP}/ls-from 2>>${log}
+    ( cd "$3" && rsync_ls_lR . ) > ${TMP}/ls-to  2>>${log}
     diff -c ${TMP}/ls-from ${TMP}/ls-to >>${log} 2>&1 || failed=YES
     if [ -z "${failed}" ] ; then
        rm $log
@@ -199,3 +210,21 @@ EOF
 }
 
 
+build_symlinks() {
+    fromdir="$scratchdir/from"
+    todir="$scratchdir/to"
+    mkdir "$fromdir"
+    date >"$fromdir/referent"
+    ln -s referent "$fromdir/relative"
+    ln -s "$fromdir/referent" "$fromdir/absolute"
+    ln -s nonexistent "$fromdir/dangling"
+    ln -s "$srcdir/rsync.c" "$fromdir/unsafe"
+}
+
+test_fail() {
+    echo "$@" >&2
+    exit 1
+}
+
+# be reproducible
+umask 077
\ No newline at end of file