diff options
Diffstat (limited to 'tests/mv')
-rwxr-xr-x | tests/mv/dup-source.sh | 46 |
1 files changed, 36 insertions, 10 deletions
diff --git a/tests/mv/dup-source.sh b/tests/mv/dup-source.sh index ff9de9dfc..efa462439 100755 --- a/tests/mv/dup-source.sh +++ b/tests/mv/dup-source.sh @@ -24,25 +24,37 @@ print_ver_ cp mv skip_if_root_ +reset_files() { rm -fr a b d; touch a; mkdir b d; } + for i in cp; do # cp may not fail in this case. - - rm -fr a d; touch a; mkdir d + reset_files $i a a d/ 2> out || fail=1 - rm -fr a d; touch a; mkdir d + reset_files $i ./a a d/ 2>> out || fail=1 + # Similarly for directories, but handle + # source == dest appropriately. + reset_files + $i -a ./b b d/ 2>> out || fail=1 + reset_files + returns_ 1 $i -a ./b b b/ 2>> out || fail=1 + # cp succeeds with --backup=numbered. - rm -fr a d; touch a; mkdir d + reset_files $i --backup=numbered a a d/ 2>> out || fail=1 # But not with plain '--backup' - rm -fr a d; touch a; mkdir d - $i --backup a a d/ 2>> out && fail=1 + reset_files + returns_ 1 $i --backup a a d/ 2>> out || fail=1 + cat <<EOF > exp $i: warning: source file 'a' specified more than once $i: warning: source file 'a' specified more than once +$i: warning: source directory 'b' specified more than once +$i: cannot copy a directory, './b', into itself, 'b/b' +$i: warning: source directory 'b' specified more than once $i: will not overwrite just-created 'd/a' with 'a' EOF compare exp out || fail=1 @@ -50,14 +62,28 @@ done for i in mv; do # But mv *does* fail in this case (it has to). + reset_files + returns_ 1 $i a a d/ 2> out || fail=1 + returns_ 1 test -e a || fail=1 + reset_files + returns_ 1 $i ./a a d/ 2>> out || fail=1 + returns_ 1 test -e a || fail=1 + + # Similarly for directories, also handling + # source == dest appropriately. + reset_files + returns_ 1 $i ./b b d/ 2>> out || fail=1 + returns_ 1 test -e b || fail=1 + reset_files + returns_ 1 $i --verbose ./b b b/ 2>> out || fail=1 + test -d b || fail=1 - rm -fr a d; touch a; mkdir d - $i a a d/ 2> out && fail=1 - rm -fr a d; touch a; mkdir d - $i ./a a d/ 2>> out && fail=1 cat <<EOF > exp $i: cannot stat 'a': No such file or directory $i: cannot stat 'a': No such file or directory +$i: cannot stat 'b': No such file or directory +$i: cannot move './b' to a subdirectory of itself, 'b/b' +$i: warning: source directory 'b' specified more than once EOF compare exp out || fail=1 done |