| 1 | #!/bin/sh |
| 2 | |
| 3 | # |
| 4 | # Copyright (C) 1998 Philip Hands <http://www.hands.com/~phil/> |
| 5 | # |
| 6 | # This program is distributable under the terms of the GNU GPL (see COPYING) |
| 7 | # |
| 8 | # This is a simple test script that tests a few rsync |
| 9 | # features to make sure I haven't broken them before a release. |
| 10 | # |
| 11 | # |
| 12 | |
| 13 | export PATH=.:$PATH |
| 14 | TMP=/tmp/rsync-test.$$ |
| 15 | FROM=${TMP}/from |
| 16 | TO=${TMP}/to |
| 17 | F1=text1 |
| 18 | LOG=${TMP}/log |
| 19 | |
| 20 | mkdir $TMP |
| 21 | mkdir $FROM |
| 22 | mkdir $TO |
| 23 | |
| 24 | # set up test data |
| 25 | touch ${FROM}/empty |
| 26 | mkdir ${FROM}/emptydir |
| 27 | ps ax > ${FROM}/pslist |
| 28 | echo -n "This file has no trailing lf" > ${FROM}/nolf |
| 29 | ln -s nolf ${FROM}/nolf-symlink |
| 30 | cat /etc/inittab /etc/services /etc/resolv.conf > ${FROM}/${F1} |
| 31 | mkdir ${FROM}/dir |
| 32 | cp ${FROM}/${F1} ${FROM}/dir |
| 33 | |
| 34 | checkit() { |
| 35 | echo -n "Test $4: $5:" |
| 36 | log=${LOG}.$4 |
| 37 | failed= |
| 38 | echo "Running: \"$1\"" >${log} |
| 39 | echo "">>${log} |
| 40 | eval "$1 || failed=YES" >>${log} 2>&1 |
| 41 | |
| 42 | echo "-------------">>${log} |
| 43 | echo "check how the files compare with diff:">>${log} |
| 44 | echo "">>${log} |
| 45 | diff -ur $2 $3 >>${log} || failed=YES |
| 46 | echo "-------------">>${log} |
| 47 | echo "check how the directory listings compare with diff:">>${log} |
| 48 | echo "">>${log} |
| 49 | ls -la $2 > ${TMP}/ls-from |
| 50 | ls -la $3 > ${TMP}/ls-to |
| 51 | diff -u ${TMP}/ls-from ${TMP}/ls-to >>${log} || failed=YES |
| 52 | if [ -z "${failed}" ] ; then |
| 53 | echo " done." |
| 54 | rm $log |
| 55 | else |
| 56 | echo " FAILED.\a" |
| 57 | fi |
| 58 | } |
| 59 | |
| 60 | checkforlogs() { |
| 61 | if [ -f $1 ] ; then |
| 62 | cat <<EOF |
| 63 | |
| 64 | Failures have occured. |
| 65 | |
| 66 | You can find the output of the tests in these files: |
| 67 | $@ |
| 68 | |
| 69 | Please hit <RETURN> |
| 70 | EOF |
| 71 | read input |
| 72 | else |
| 73 | |
| 74 | rm -rf ${TMP} |
| 75 | echo "" |
| 76 | echo "Tests Completed Successfully :-)" |
| 77 | fi |
| 78 | } |
| 79 | |
| 80 | # Main script starts here |
| 81 | |
| 82 | checkit "rsync -av ${FROM}/ ${TO}" ${FROM}/ ${TO} \ |
| 83 | 1 "basic operation" |
| 84 | |
| 85 | ln ${FROM}/pslist ${FROM}/dir |
| 86 | checkit "rsync -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \ |
| 87 | 2 "hard links" |
| 88 | |
| 89 | rm ${TO}/${F1} |
| 90 | checkit "rsync -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \ |
| 91 | 3 "one file" |
| 92 | |
| 93 | echo "extra line" >> ${TO}/${F1} |
| 94 | checkit "rsync -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \ |
| 95 | 4 "extra data" |
| 96 | |
| 97 | cp ${FROM}/${F1} ${TO}/ThisShouldGo |
| 98 | checkit "rsync --delete -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \ |
| 99 | 5 " --delete" |
| 100 | |
| 101 | if type ssh >/dev/null ; then |
| 102 | rm -rf ${TO} |
| 103 | checkit "rsync -avH -e ssh ${FROM}/ localhost:${TO}" ${FROM}/ ${TO} \ |
| 104 | 6 "ssh: basic test" |
| 105 | |
| 106 | mv ${TO}/${F1} ${TO}/ThisShouldGo |
| 107 | checkit "rsync --delete -avH -e ssh ${FROM}/ localhost:${TO}" ${FROM}/ ${TO}\ |
| 108 | 7 "ssh: renamed file" |
| 109 | else |
| 110 | echo "" |
| 111 | echo "**** Skipping SSH tests because ssh is not in the path\a ****" |
| 112 | echo "" |
| 113 | fi |
| 114 | |
| 115 | checkforlogs ${LOG}.? |
| 116 | |