| #!/bin/sh |
| ################################################################################ |
| ## ## |
| ## Copyright (c) International Business Machines Corp., 2001 ## |
| ## Author: Manoj Iyer, manjo@mail.utexas.edu ## |
| ## Copyright (c) 2016 Cyril Hrubis <chrubis@suse.cz> ## |
| ## ## |
| ## 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 ## |
| ## ## |
| ################################################################################ |
| # |
| # Tests basic cp functionality |
| # |
| TST_CNT=5 |
| TST_TESTFUNC=do_test |
| TST_SETUP=setup |
| TST_NEEDS_TMPDIR=1 |
| . tst_test.sh |
| |
| create_tree() |
| { |
| local dirname=$1 |
| local dircnt=$2 |
| local filecnt=$3 |
| |
| tst_res TINFO "Creating $dircnt directories." |
| tst_res TINFO "Filling each dir with $filecnt files". |
| while [ $dircnt -gt 0 ]; do |
| dirname=$dirname/dir$dircnt |
| ROD mkdir -p $dirname |
| |
| local fcnt=0 |
| while [ $fcnt -lt $filecnt ]; do |
| ROD touch $dirname/file$fcnt |
| fcnt=$((fcnt+1)) |
| done |
| dircnt=$((dircnt-1)) |
| done |
| } |
| |
| setup() |
| { |
| create_tree "dir" 10 10 |
| ROD echo LTP > file |
| } |
| |
| compare_dirs() |
| { |
| local src="$1" |
| local dst="$2" |
| |
| if diff -r $src $dst; then |
| tst_res TPASS "Directories $src and $dst are equal" |
| else |
| tst_res TFAIL "Directories $src and $dst differs" |
| ls -R $src |
| echo |
| ls -R $dst |
| fi |
| } |
| |
| compare_files() |
| { |
| local src="$1" |
| local dst="$2" |
| |
| if diff $src $dst; then |
| tst_res TPASS "Files $src and $dst are equal" |
| else |
| tst_res TFAIL "Files $src and $dst differs" |
| fi |
| } |
| |
| cp_test() |
| { |
| local args="$1" |
| local src="$2" |
| local dst="$3" |
| EXPECT_PASS cp $args $src $dst |
| if [ -f $src ]; then |
| compare_files $src $dst |
| else |
| compare_dirs $src $dst |
| fi |
| ROD rm -r $dst |
| } |
| |
| do_test() |
| { |
| case $1 in |
| 1) cp_test "" "file" "file_copy";; |
| 2) cp_test -l "file" "file_copy";; |
| 3) cp_test -s "file" "file_copy";; |
| 4) cp_test -R "dir" "dir_copy";; |
| 5) cp_test -lR "dir" "dir_copy";; |
| esac |
| } |
| |
| tst_run |