diff options
Diffstat (limited to 'tests/mv/part-symlink')
-rwxr-xr-x | tests/mv/part-symlink | 229 |
1 files changed, 0 insertions, 229 deletions
diff --git a/tests/mv/part-symlink b/tests/mv/part-symlink deleted file mode 100755 index 5cd198c..0000000 --- a/tests/mv/part-symlink +++ /dev/null @@ -1,229 +0,0 @@ -#!/bin/sh -# make sure cp and mv can handle many combinations of local and -# other-partition regular/symlink'd files. - -# Copyright (C) 2000, 2003, 2004, 2006 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. - -if test "$VERBOSE" = yes; then - set -x - mv --version - cp --version -fi - -pwd=`pwd` -tmp=part-sl.$$ -trap 'status=$?; cd "$pwd" && exec 1>&2; rm -rf $tmp $other_partition_tmpdir && exit $status' 0 -trap '(exit $?); exit' 1 2 13 15 - -pwd_tmp=$pwd/$tmp - -. $srcdir/../other-fs-tmpdir -. $srcdir/../envvar-check -# Make sure the programs use C-locale formats/translations. -. $srcdir/../lang-default - -# Unset CDPATH. Otherwise, output from the `cd dir' command -# can make this test fail. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test -z "$other_partition_tmpdir"; then - (exit 77); exit 77 -fi - -framework_failure=0 -mkdir $tmp || framework_failure=1 -cd $tmp || framework_failure=1 - -if test $framework_failure = 1; then - echo 'failure in testing framework' - exit 1 -fi - -fail=0 - -# Four cases: -# local regular file w/symlink on another partition -# (loc_reg, rem_sl) -# (rem_sl, loc_reg) -# local symlink to regular file on another partition -# (loc_sl, rem_reg) -# (rem_reg, loc_sl) - -# Exercise those four cases for each of -# cp and mv, with lots of combinations of options. - -actual=actual-$$ -expected=expected-$$ - -exec 1> $actual - -# FIXME: This should be bigger: like more than 8k -contents=XYZ - -loc_reg=loc_reg -loc_sl=loc_sl -rem_reg=$other_partition_tmpdir/rem_reg -rem_sl=$other_partition_tmpdir/rem_sl - -for copy in cp mv; do - for args in \ - 'loc_reg rem_sl' \ - 'rem_sl loc_reg' \ - 'loc_sl rem_reg' \ - 'rem_reg loc_sl' \ - ; do - for options in '' --rem '--rem -d' '--rem -b' -b -bd -d; do - case "$options" in *d*|*--rem*) test $copy = mv && continue;; esac - rm -rf dir || fail=1 - rm -f $other_partition_tmpdir/* || fail=1 - mkdir dir || fail=1 - cd dir || fail=1 - case "$args" in *loc_reg*) reg_abs="`pwd`/$loc_reg" ;; esac - case "$args" in *rem_reg*) reg_abs=$rem_reg ;; esac - case "$args" in *loc_sl*) slink=$loc_sl ;; esac - case "$args" in *rem_sl*) slink=$rem_sl ;; esac - - echo $contents > "$reg_abs" || fail=1 - ln -nsf "$reg_abs" $slink || fail=1 - actual_args=`echo $args|sed 's,^,$,;s/ / $/'` - actual_args=`eval echo $actual_args` - - ( - ( - # echo 1>&2 cp $options $args - $copy $options $actual_args 2>.err - copy_status=$? - echo $copy_status $copy $options $args - - # Normalize the program name in the error output, - # remove any site-dependent part of other-partition file name, - # and put brackets around the output. - test -s .err && { - echo '[' | tr -d '\n' - sed 's/^[^:][^:]*\(..\):/\1:/;s,'$other_partition_tmpdir/,, .err - echo ']' | tr -d '\n' - } - # Strip off all but the file names. - # Remove any site-dependent part of each file name. - ls="`ls -gG --ignore=.err . \ - | sed \ - -e '/^total /d' \ - -e s,$other_partition_tmpdir/,, \ - -e "s,$pwd_tmp/,," \ - -e 's/^[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *//'`" - ls2="`cd $other_partition_tmpdir && ls -gG --ignore=.err . \ - | sed \ - -e '/^total /d' \ - -e s,$other_partition_tmpdir/,, \ - -e "s,$pwd_tmp/,," \ - -e 's/^[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *//'`" - echo "($ls) ($ls2)" - - # If the command failed, then it must not have changed the files. - if test $copy_status != 0; then - for f in $actual_args; do - test -f $f || - { echo "$copy FAILED but removed $f"; continue; } - case "`cat $f`" in - "$contents") ;; - *) echo "$copy FAILED but modified $f";; - esac - done - fi - - if test $copy = cp; then - # Make sure the original is unchanged and that - # the destination is a copy. - for f in $actual_args; do - if test -f $f; then - if test $copy_status != 0; then - test - fi - case "`cat $f`" in - "$contents") ;; - *) echo $copy FAILED;; - esac - else - echo symlink-loop - fi - done - fi - ) | tr '\n' ' ' - echo - ) | sed 's/ *$//' - cd .. - done - echo - done -done - -test $fail = 1 && - { (exit 1); exit; } - -cat <<\EOF > $expected -1 cp loc_reg rem_sl [cp: `loc_reg' and `rem_sl' are the same file ](loc_reg) (rem_sl -> dir/loc_reg) -0 cp --rem loc_reg rem_sl (loc_reg) (rem_sl) -0 cp --rem -d loc_reg rem_sl (loc_reg) (rem_sl) -0 cp --rem -b loc_reg rem_sl (loc_reg) (rem_sl rem_sl~ -> dir/loc_reg) -0 cp -b loc_reg rem_sl (loc_reg) (rem_sl rem_sl~ -> dir/loc_reg) -0 cp -bd loc_reg rem_sl (loc_reg) (rem_sl rem_sl~ -> dir/loc_reg) -1 cp -d loc_reg rem_sl [cp: `loc_reg' and `rem_sl' are the same file ](loc_reg) (rem_sl -> dir/loc_reg) - -1 cp rem_sl loc_reg [cp: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg) -1 cp --rem rem_sl loc_reg [cp: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg) -1 cp --rem -d rem_sl loc_reg [cp: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg) -1 cp --rem -b rem_sl loc_reg [cp: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg) -1 cp -b rem_sl loc_reg [cp: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg) -0 cp -bd rem_sl loc_reg (loc_reg -> dir/loc_reg loc_reg~) (rem_sl -> dir/loc_reg) symlink-loop symlink-loop -1 cp -d rem_sl loc_reg [cp: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg) - -1 cp loc_sl rem_reg [cp: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg) -1 cp --rem loc_sl rem_reg [cp: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg) -1 cp --rem -d loc_sl rem_reg [cp: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg) -1 cp --rem -b loc_sl rem_reg [cp: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg) -1 cp -b loc_sl rem_reg [cp: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg) -0 cp -bd loc_sl rem_reg (loc_sl -> rem_reg) (rem_reg -> rem_reg rem_reg~) symlink-loop symlink-loop -1 cp -d loc_sl rem_reg [cp: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg) - -1 cp rem_reg loc_sl [cp: `rem_reg' and `loc_sl' are the same file ](loc_sl -> rem_reg) (rem_reg) -0 cp --rem rem_reg loc_sl (loc_sl) (rem_reg) -0 cp --rem -d rem_reg loc_sl (loc_sl) (rem_reg) -0 cp --rem -b rem_reg loc_sl (loc_sl loc_sl~ -> rem_reg) (rem_reg) -0 cp -b rem_reg loc_sl (loc_sl loc_sl~ -> rem_reg) (rem_reg) -0 cp -bd rem_reg loc_sl (loc_sl loc_sl~ -> rem_reg) (rem_reg) -1 cp -d rem_reg loc_sl [cp: `rem_reg' and `loc_sl' are the same file ](loc_sl -> rem_reg) (rem_reg) - -0 mv loc_reg rem_sl () (rem_sl) -0 mv -b loc_reg rem_sl () (rem_sl rem_sl~ -> dir/loc_reg) - -1 mv rem_sl loc_reg [mv: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg) -0 mv -b rem_sl loc_reg (loc_reg -> dir/loc_reg loc_reg~) () - -1 mv loc_sl rem_reg [mv: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg) -0 mv -b loc_sl rem_reg () (rem_reg -> rem_reg rem_reg~) - -0 mv rem_reg loc_sl (loc_sl) () -0 mv -b rem_reg loc_sl (loc_sl loc_sl~ -> rem_reg) () - -EOF - -# Some folks may don't have diff. -cmp $expected $actual \ - || { diff -c $expected $actual 1>&2; fail=1; } - -(exit $fail); exit $fail |