#! /bin/sh # Demonstrate how mv fails when it tries to move a directory into itself. : ${MV=mv} : ${MKDIR=mkdir} : ${RM=rm} : ${TOUCH=touch} dir=into-self-dir file=into-self-file test_failure=0 $RM -rf $dir $file || test_failure=1 $MKDIR -p $dir/a/b || test_failure=1 $TOUCH $file || test_failure=1 if test $test_failure = 1; then echo 'failure in testing framework' exit 1 fi fail=0 # Make sure we get English translations. LANGUAGE=C export LANGUAGE LC_ALL=C export LC_ALL LANG=C export LANG # This mv command should fail. $MV $dir $file $dir > out 2>&1 && fail=1 sed \ -e "s,$MV:,XXX:," \ -e "s,$dir,SRC," \ -e "s,$dir/$dir,DEST," \ out > out2 cat > exp <<\EOF XXX: cannot move `SRC' to a subdirectory of itself, `DEST' EOF cmp out2 exp || fail=1 # Make sure the file is gone. test -f $file && fail=1 # Make sure the directory is *not* moved. test -d $dir || fail=1 test -d $dir/$dir && fail=1 # Make sure the file has been moved to the right place. test -f $dir/$file || fail=1 $RM -rf $dir $file out out2 exp exit $fail