#!/bin/sh # Copyright 2010 by Denys Vlasenko # Licensed under GPLv2, see file LICENSE in this source tree. . ./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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test ! -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test ! -e dir || echo BAD: dir test ! -L dir_symlink && test ! -e 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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test ! -e dir || echo BAD: dir test -L dir_symlink && test ! -e 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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test ! -e dir || echo BAD: dir test -L dir_symlink && test ! -e 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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test ! -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test ! -e dir || echo BAD: dir test ! -L dir_symlink && test ! -e 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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test ! -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test ! -e dir || echo BAD: dir test ! -L dir_symlink && test ! -e 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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test -d dir || echo BAD: dir test -L dir_symlink && test -d dir_symlink || echo BAD: dir_symlink test ! -L dir/file && test -f dir/file || echo BAD: dir/file test -L dir/file_symlink && test -f 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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test -d dir || echo BAD: dir test -L dir_symlink && test -d dir_symlink || echo BAD: dir_symlink test ! -L dir/file && test -f dir/file || echo BAD: dir/file test -L dir/file_symlink && test -f 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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test -d dir || echo BAD: dir test -L dir_symlink && test -d dir_symlink || echo BAD: dir_symlink test ! -L dir/file && test -f dir/file || echo BAD: dir/file test -L dir/file_symlink && test -f 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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test ! -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test -d dir || echo BAD: dir test ! -L dir_symlink && test -d dir_symlink || echo BAD: dir_symlink test ! -L dir/file && test -f dir/file || echo BAD: dir/file test ! -L dir/file_symlink && test -f 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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test ! -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test -d dir || echo BAD: dir test ! -L dir_symlink && test -d dir_symlink || echo BAD: dir_symlink test ! -L dir/file && test -f dir/file || echo BAD: dir/file test -L dir/file_symlink && test -f 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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test ! -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test -d dir || echo BAD: dir test ! -L dir_symlink && test -d dir_symlink || echo BAD: dir_symlink test ! -L dir/file && test -f dir/file || echo BAD: dir/file test -L dir/file_symlink && test -f 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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test ! -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test -d dir || echo BAD: dir test ! -L dir_symlink && test -d dir_symlink || echo BAD: dir_symlink test ! -L dir/file && test -f dir/file || echo BAD: dir/file test ! -L dir/file_symlink && test -f 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 ../cp.testdir2 || exit 1 test ! -L file && test -f file || echo BAD: file test ! -L file_symlink && test -f file_symlink || echo BAD: file_symlink test ! -L dir && test -d dir || echo BAD: dir test ! -L dir_symlink && test -d dir_symlink || echo BAD: dir_symlink test ! -L dir/file && test -f dir/file || echo BAD: dir/file test ! -L dir/file_symlink && test -f dir/file_symlink || echo BAD: dir/file_symlink ' "\ 0 " "" "" # Clean up rm -rf cp.testdir cp.testdir2 2>/dev/null exit $FAILCOUNT