diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-15 22:05:07 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-15 22:05:07 +0100 |
commit | a40f0624db4c9490d46f116c4c4635dfa68e070c (patch) | |
tree | 6495c54fab2be22802c6befc9d5c8ea01807a60c /testsuite | |
parent | 662078f9fd41efe422d7abc0aea1395c27c61ddd (diff) |
cp: fix -H handling
function old new delta
copy_file 1495 1518 +23
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'testsuite')
-rwxr-xr-x | testsuite/cp.tests | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/testsuite/cp.tests b/testsuite/cp.tests new file mode 100755 index 000000000..75a7dcb48 --- /dev/null +++ b/testsuite/cp.tests @@ -0,0 +1,206 @@ +#!/bin/sh +# Copyright 2010 by Denys Vlasenko +# Licensed under GPL v2, see file LICENSE for details. + +. ./testing.sh + +# Opening quote in "omitting directory 'dir'" message: +sq='`' # GNU cp: ` +sq="'" # bbox cp: ' + +rm -rf cp.testdir >/dev/null + +mkdir cp.testdir +mkdir cp.testdir/dir +> cp.testdir/dir/file +ln -s file cp.testdir/dir/file_symlink + +> cp.testdir/file +ln -s file cp.testdir/file_symlink +ln -s dir cp.testdir/dir_symlink + + +# testing "test name" "command" "expected result" "file input" "stdin" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +testing "cp" '\ +cd cp.testdir || exit 1; cp * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test ! -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -e cp.testdir2/dir || echo BAD: dir +test ! -e cp.testdir2/dir_symlink || echo BAD: dir_symlink +' "\ +cp: omitting directory ${sq}dir' +cp: omitting directory ${sq}dir_symlink' +1 +" "" "" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +testing "cp -d" '\ +cd cp.testdir || exit 1; cp -d * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -e cp.testdir2/dir || echo BAD: dir +test -L cp.testdir2/dir_symlink || echo BAD: dir_symlink +' "\ +cp: omitting directory ${sq}dir' +1 +" "" "" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +testing "cp -P" '\ +cd cp.testdir || exit 1; cp -P * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -e cp.testdir2/dir || echo BAD: dir +test -L cp.testdir2/dir_symlink || echo BAD: dir_symlink +' "\ +cp: omitting directory ${sq}dir' +1 +" "" "" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +testing "cp -L" '\ +cd cp.testdir || exit 1; cp -L * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test ! -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -e cp.testdir2/dir || echo BAD: dir +test ! -L cp.testdir2/dir_symlink || echo BAD: dir_symlink +' "\ +cp: omitting directory ${sq}dir' +cp: omitting directory ${sq}dir_symlink' +1 +" "" "" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +testing "cp -H" '\ +cd cp.testdir || exit 1; cp -H * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test ! -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -e cp.testdir2/dir || echo BAD: dir +test ! -e cp.testdir2/dir_symlink || echo BAD: dir_symlink +' "\ +cp: omitting directory ${sq}dir' +cp: omitting directory ${sq}dir_symlink' +1 +" "" "" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +testing "cp -R" '\ +cd cp.testdir || exit 1; cp -R * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -L cp.testdir2/dir || echo BAD: dir +test -L cp.testdir2/dir_symlink || echo BAD: dir_symlink +test ! -L cp.testdir2/dir/file || echo BAD: dir/file +test -L cp.testdir2/dir/file_symlink || echo BAD: dir/file_symlink +' "\ +0 +" "" "" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +testing "cp -Rd" '\ +cd cp.testdir || exit 1; cp -Rd * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -L cp.testdir2/dir || echo BAD: dir +test -L cp.testdir2/dir_symlink || echo BAD: dir_symlink +test ! -L cp.testdir2/dir/file || echo BAD: dir/file +test -L cp.testdir2/dir/file_symlink || echo BAD: dir/file_symlink +' "\ +0 +" "" "" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +testing "cp -RP" '\ +cd cp.testdir || exit 1; cp -RP * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -L cp.testdir2/dir || echo BAD: dir +test -L cp.testdir2/dir_symlink || echo BAD: dir_symlink +test ! -L cp.testdir2/dir/file || echo BAD: dir/file +test -L cp.testdir2/dir/file_symlink || echo BAD: dir/file_symlink +' "\ +0 +" "" "" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +testing "cp -RL" '\ +cd cp.testdir || exit 1; cp -RL * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test ! -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -L cp.testdir2/dir || echo BAD: dir +test ! -L cp.testdir2/dir_symlink || echo BAD: dir_symlink +test ! -L cp.testdir2/dir/file || echo BAD: dir/file +test ! -L cp.testdir2/dir/file_symlink || echo BAD: dir/file_symlink +' "\ +0 +" "" "" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +# GNU coreutils 7.2 says: +# cp: will not create hard link `../cp.testdir2/dir_symlink' to directory `../cp.testdir2/dir' +test x"$SKIP_KNOWN_BUGS" = x"" && \ +testing "cp -RH" '\ +cd cp.testdir || exit 1; cp -RH * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test ! -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -L cp.testdir2/dir || echo BAD: dir +test ! -L cp.testdir2/dir_symlink || echo BAD: dir_symlink +test ! -L cp.testdir2/dir/file || echo BAD: dir/file +test -L cp.testdir2/dir/file_symlink || echo BAD: dir/file_symlink +' "\ +0 +" "" "" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +# GNU coreutils 7.2 says: +# cp: will not create hard link `../cp.testdir2/dir_symlink' to directory `../cp.testdir2/dir' +test x"$SKIP_KNOWN_BUGS" = x"" && \ +testing "cp -RHP" '\ +cd cp.testdir || exit 1; cp -RHP * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test ! -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -L cp.testdir2/dir || echo BAD: dir +test ! -L cp.testdir2/dir_symlink || echo BAD: dir_symlink +test ! -L cp.testdir2/dir/file || echo BAD: dir/file +test -L cp.testdir2/dir/file_symlink || echo BAD: dir/file_symlink +' "\ +0 +" "" "" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +testing "cp -RHL" '\ +cd cp.testdir || exit 1; cp -RHL * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test ! -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -L cp.testdir2/dir || echo BAD: dir +test ! -L cp.testdir2/dir_symlink || echo BAD: dir_symlink +test ! -L cp.testdir2/dir/file || echo BAD: dir/file +test ! -L cp.testdir2/dir/file_symlink || echo BAD: dir/file_symlink +' "\ +0 +" "" "" + +rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1 +# Wow! "cp -RLH" is not the same as "cp -RHL" (prev test)! +# GNU coreutils 7.2 says: +# cp: will not create hard link `../cp.testdir2/dir_symlink' to directory `../cp.testdir2/dir' +test x"$SKIP_KNOWN_BUGS" = x"" && \ +testing "cp -RLH" '\ +cd cp.testdir || exit 1; cp -RLH * ../cp.testdir2 2>&1; echo $?; cd .. || exit 1 +test ! -L cp.testdir2/file || echo BAD: file +test ! -L cp.testdir2/file_symlink || echo BAD: file_symlink +test ! -L cp.testdir2/dir || echo BAD: dir +test ! -L cp.testdir2/dir_symlink || echo BAD: dir_symlink +test ! -L cp.testdir2/dir/file || echo BAD: dir/file +test ! -L cp.testdir2/dir/file_symlink || echo BAD: dir/file_symlink +' "\ +0 +" "" "" + + +# Clean up +rm -rf cp.testdir cp.testdir2 2>/dev/null + +exit $FAILCOUNT |