busybox/testsuite/cp.tests
<<
>>
Prefs
   1#!/bin/sh
   2# Copyright 2010 by Denys Vlasenko
   3# Licensed under GPLv2, see file LICENSE in this source tree.
   4
   5. ./testing.sh
   6
   7# Opening quote in "omitting directory 'dir'" message:
   8sq='`'  # GNU cp: `
   9sq="'"  # bbox cp: '
  10
  11rm -rf cp.testdir >/dev/null
  12
  13mkdir cp.testdir
  14mkdir cp.testdir/dir
  15> cp.testdir/dir/file
  16ln -s file cp.testdir/dir/file_symlink
  17
  18> cp.testdir/file
  19ln -s file cp.testdir/file_symlink
  20ln -s dir cp.testdir/dir_symlink
  21
  22
  23# testing "test name" "command" "expected result" "file input" "stdin"
  24
  25rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
  26testing "cp" '\
  27cd cp.testdir || exit 1; cp * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
  28test ! -L file         && test   -f file             || echo BAD: file
  29test ! -L file_symlink && test   -f file_symlink     || echo BAD: file_symlink
  30test ! -L dir          && test ! -e dir              || echo BAD: dir
  31test ! -L dir_symlink  && test ! -e dir_symlink      || echo BAD: dir_symlink
  32' "\
  33cp: omitting directory ${sq}dir'
  34cp: omitting directory ${sq}dir_symlink'
  351
  36" "" ""
  37
  38rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
  39testing "cp -d" '\
  40cd cp.testdir || exit 1; cp -d * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
  41test ! -L file         && test   -f file             || echo BAD: file
  42test   -L file_symlink && test   -f file_symlink     || echo BAD: file_symlink
  43test ! -L dir          && test ! -e dir              || echo BAD: dir
  44test   -L dir_symlink  && test ! -e dir_symlink      || echo BAD: dir_symlink
  45' "\
  46cp: omitting directory ${sq}dir'
  471
  48" "" ""
  49
  50rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
  51testing "cp -P" '\
  52cd cp.testdir || exit 1; cp -P * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
  53test ! -L file         && test   -f file             || echo BAD: file
  54test   -L file_symlink && test   -f file_symlink     || echo BAD: file_symlink
  55test ! -L dir          && test ! -e dir              || echo BAD: dir
  56test   -L dir_symlink  && test ! -e dir_symlink      || echo BAD: dir_symlink
  57' "\
  58cp: omitting directory ${sq}dir'
  591
  60" "" ""
  61
  62rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
  63testing "cp -L" '\
  64cd cp.testdir || exit 1; cp -L * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
  65test ! -L file         && test   -f file             || echo BAD: file
  66test ! -L file_symlink && test   -f file_symlink     || echo BAD: file_symlink
  67test ! -L dir          && test ! -e dir              || echo BAD: dir
  68test ! -L dir_symlink  && test ! -e dir_symlink      || echo BAD: dir_symlink
  69' "\
  70cp: omitting directory ${sq}dir'
  71cp: omitting directory ${sq}dir_symlink'
  721
  73" "" ""
  74
  75rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
  76testing "cp -H" '\
  77cd cp.testdir || exit 1; cp -H * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
  78test ! -L file         && test   -f file             || echo BAD: file
  79test ! -L file_symlink && test   -f file_symlink     || echo BAD: file_symlink
  80test ! -L dir          && test ! -e dir              || echo BAD: dir
  81test ! -L dir_symlink  && test ! -e dir_symlink      || echo BAD: dir_symlink
  82' "\
  83cp: omitting directory ${sq}dir'
  84cp: omitting directory ${sq}dir_symlink'
  851
  86" "" ""
  87
  88rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
  89testing "cp -R" '\
  90cd cp.testdir || exit 1; cp -R * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
  91test ! -L file             && test   -f file             || echo BAD: file
  92test   -L file_symlink     && test   -f file_symlink     || echo BAD: file_symlink
  93test ! -L dir              && test   -d dir              || echo BAD: dir
  94test   -L dir_symlink      && test   -d dir_symlink      || echo BAD: dir_symlink
  95test ! -L dir/file         && test   -f dir/file         || echo BAD: dir/file
  96test   -L dir/file_symlink && test   -f dir/file_symlink || echo BAD: dir/file_symlink
  97' "\
  980
  99" "" ""
 100
 101rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
 102testing "cp -Rd" '\
 103cd cp.testdir || exit 1; cp -Rd * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
 104test ! -L file             && test   -f file             || echo BAD: file
 105test   -L file_symlink     && test   -f file_symlink     || echo BAD: file_symlink
 106test ! -L dir              && test   -d dir              || echo BAD: dir
 107test   -L dir_symlink      && test   -d dir_symlink      || echo BAD: dir_symlink
 108test ! -L dir/file         && test   -f dir/file         || echo BAD: dir/file
 109test   -L dir/file_symlink && test   -f dir/file_symlink || echo BAD: dir/file_symlink
 110' "\
 1110
 112" "" ""
 113
 114rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
 115testing "cp -RP" '\
 116cd cp.testdir || exit 1; cp -RP * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
 117test ! -L file             && test   -f file             || echo BAD: file
 118test   -L file_symlink     && test   -f file_symlink     || echo BAD: file_symlink
 119test ! -L dir              && test   -d dir              || echo BAD: dir
 120test   -L dir_symlink      && test   -d dir_symlink      || echo BAD: dir_symlink
 121test ! -L dir/file         && test   -f dir/file         || echo BAD: dir/file
 122test   -L dir/file_symlink && test   -f dir/file_symlink || echo BAD: dir/file_symlink
 123' "\
 1240
 125" "" ""
 126
 127rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
 128testing "cp -RL" '\
 129cd cp.testdir || exit 1; cp -RL * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
 130test ! -L file             && test   -f file             || echo BAD: file
 131test ! -L file_symlink     && test   -f file_symlink     || echo BAD: file_symlink
 132test ! -L dir              && test   -d dir              || echo BAD: dir
 133test ! -L dir_symlink      && test   -d dir_symlink      || echo BAD: dir_symlink
 134test ! -L dir/file         && test   -f dir/file         || echo BAD: dir/file
 135test ! -L dir/file_symlink && test   -f dir/file_symlink || echo BAD: dir/file_symlink
 136' "\
 1370
 138" "" ""
 139
 140rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
 141# GNU coreutils 7.2 says:
 142# cp: will not create hard link `../cp.testdir2/dir_symlink' to directory `../cp.testdir2/dir'
 143test x"$SKIP_KNOWN_BUGS" = x"" && \
 144testing "cp -RH" '\
 145cd cp.testdir || exit 1; cp -RH * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
 146test ! -L file             && test   -f file             || echo BAD: file
 147test ! -L file_symlink     && test   -f file_symlink     || echo BAD: file_symlink
 148test ! -L dir              && test   -d dir              || echo BAD: dir
 149test ! -L dir_symlink      && test   -d dir_symlink      || echo BAD: dir_symlink
 150test ! -L dir/file         && test   -f dir/file         || echo BAD: dir/file
 151test   -L dir/file_symlink && test   -f dir/file_symlink || echo BAD: dir/file_symlink
 152' "\
 1530
 154" "" ""
 155
 156rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
 157# GNU coreutils 7.2 says:
 158# cp: will not create hard link `../cp.testdir2/dir_symlink' to directory `../cp.testdir2/dir'
 159test x"$SKIP_KNOWN_BUGS" = x"" && \
 160testing "cp -RHP" '\
 161cd cp.testdir || exit 1; cp -RHP * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
 162test ! -L file             && test   -f file             || echo BAD: file
 163test ! -L file_symlink     && test   -f file_symlink     || echo BAD: file_symlink
 164test ! -L dir              && test   -d dir              || echo BAD: dir
 165test ! -L dir_symlink      && test   -d dir_symlink      || echo BAD: dir_symlink
 166test ! -L dir/file         && test   -f dir/file         || echo BAD: dir/file
 167test   -L dir/file_symlink && test   -f dir/file_symlink || echo BAD: dir/file_symlink
 168' "\
 1690
 170" "" ""
 171
 172rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
 173testing "cp -RHL" '\
 174cd cp.testdir || exit 1; cp -RHL * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
 175test ! -L file             && test   -f file             || echo BAD: file
 176test ! -L file_symlink     && test   -f file_symlink     || echo BAD: file_symlink
 177test ! -L dir              && test   -d dir              || echo BAD: dir
 178test ! -L dir_symlink      && test   -d dir_symlink      || echo BAD: dir_symlink
 179test ! -L dir/file         && test   -f dir/file         || echo BAD: dir/file
 180test ! -L dir/file_symlink && test   -f dir/file_symlink || echo BAD: dir/file_symlink
 181' "\
 1820
 183" "" ""
 184
 185rm -rf cp.testdir2 >/dev/null && mkdir cp.testdir2 || exit 1
 186# Wow! "cp -RLH" is not the same as "cp -RHL" (prev test)!
 187# GNU coreutils 7.2 says:
 188# cp: will not create hard link `../cp.testdir2/dir_symlink' to directory `../cp.testdir2/dir'
 189test x"$SKIP_KNOWN_BUGS" = x"" && \
 190testing "cp -RLH" '\
 191cd cp.testdir || exit 1; cp -RLH * ../cp.testdir2 2>&1; echo $?; cd ../cp.testdir2 || exit 1
 192test ! -L file             && test   -f file             || echo BAD: file
 193test ! -L file_symlink     && test   -f file_symlink     || echo BAD: file_symlink
 194test ! -L dir              && test   -d dir              || echo BAD: dir
 195test ! -L dir_symlink      && test   -d dir_symlink      || echo BAD: dir_symlink
 196test ! -L dir/file         && test   -f dir/file         || echo BAD: dir/file
 197test ! -L dir/file_symlink && test   -f dir/file_symlink || echo BAD: dir/file_symlink
 198' "\
 1990
 200" "" ""
 201
 202
 203# Clean up
 204rm -rf cp.testdir cp.testdir2 2>/dev/null
 205
 206exit $FAILCOUNT
 207