1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0-or-later 3# Copyright (c) International Business Machines Corp., 2001 4# Copyright (c) 2016 Cyril Hrubis <[email protected]> 5# Author: Manoj Iyer <[email protected]> 6# 7# Tests basic cp functionality 8 9TST_CNT=5 10TST_TESTFUNC=do_test 11TST_SETUP=setup 12TST_NEEDS_TMPDIR=1 13 14create_tree() 15{ 16 local dirname=$1 17 local dircnt=$2 18 local filecnt=$3 19 20 tst_res TINFO "Creating $dircnt directories." 21 tst_res TINFO "Filling each dir with $filecnt files". 22 while [ $dircnt -gt 0 ]; do 23 dirname=$dirname/dir$dircnt 24 ROD mkdir -p $dirname 25 26 local fcnt=0 27 while [ $fcnt -lt $filecnt ]; do 28 ROD touch $dirname/file$fcnt 29 fcnt=$((fcnt+1)) 30 done 31 dircnt=$((dircnt-1)) 32 done 33} 34 35setup() 36{ 37 create_tree "dir" 10 10 38 ROD echo LTP > file 39} 40 41compare_dirs() 42{ 43 local src="$1" 44 local dst="$2" 45 46 if diff -r $src $dst; then 47 tst_res TPASS "Directories $src and $dst are equal" 48 else 49 tst_res TFAIL "Directories $src and $dst differs" 50 ls -R $src 51 echo 52 ls -R $dst 53 fi 54} 55 56compare_files() 57{ 58 local src="$1" 59 local dst="$2" 60 61 if diff $src $dst; then 62 tst_res TPASS "Files $src and $dst are equal" 63 else 64 tst_res TFAIL "Files $src and $dst differs" 65 fi 66} 67 68cp_test() 69{ 70 local args="$1" 71 local src="$2" 72 local dst="$3" 73 EXPECT_PASS cp $args $src $dst 74 if [ -f $src ]; then 75 compare_files $src $dst 76 else 77 compare_dirs $src $dst 78 fi 79 ROD rm -r $dst 80} 81 82do_test() 83{ 84 case $1 in 85 1) cp_test "" "file" "file_copy";; 86 2) cp_test -l "file" "file_copy";; 87 3) cp_test -s "file" "file_copy";; 88 4) cp_test -R "dir" "dir_copy";; 89 5) cp_test -lR "dir" "dir_copy";; 90 esac 91} 92 93. tst_test.sh 94tst_run 95