| #!/bin/sh |
| ################################################################################ |
| ## ## |
| ## Copyright (c) International Business Machines Corp., 2001 ## |
| ## Author: Manoj Iyer, manjo@mail.utexas.edu ## |
| ## ## |
| ## 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 ## |
| ## ## |
| ################################################################################ |
| # |
| # Description: Test basic functionality of mv command |
| # - Test #1: mv <dir1> <dir2> |
| # move dir1 to dir2 and all its contents. |
| # - Test #2: mv -b <file1> <file2> |
| # move file1 to file2 and backup the file2. |
| # |
| |
| TST_CNT=2 |
| TST_SETUP=setup |
| TST_TESTFUNC=test |
| TST_NEEDS_TMPDIR=1 |
| . tst_test.sh |
| |
| setup() |
| { |
| ROD_SILENT mkdir -p tst_mv.old |
| } |
| |
| creat_dirnfiles() |
| { |
| local numdirs=$2 |
| local numfiles=$3 |
| local dirname=$4 |
| local dircnt=0 |
| local fcnt=0 |
| |
| tst_res TINFO "Test #$1: Creating $numdirs directories." |
| tst_res TINFO "Test #$1: filling each dir with $numfiles files." |
| while [ $dircnt -lt $numdirs ] |
| do |
| dirname=$dirname/d.$dircnt |
| ROD_SILENT mkdir -p $dirname |
| |
| fcnt=0 |
| while [ $fcnt -lt $numfiles ] |
| do |
| ROD_SILENT touch $dirname/f.$fcnt |
| fcnt=$(($fcnt+1)) |
| done |
| dircnt=$(($dircnt+1)) |
| done |
| } |
| |
| creat_expout() |
| { |
| local numdir=$1 |
| local numfile=$2 |
| local dirname=$3 |
| local dircnt=0 |
| local fcnt=0 |
| |
| echo "$dirname:" 1>>tst_mv.exp |
| echo "d.$dircnt" 1>>tst_mv.exp |
| while [ $dircnt -lt $numdirs ] |
| do |
| dirname=$dirname/d.$dircnt |
| dircnt=$(($dircnt+1)) |
| echo "$dirname:" 1>>tst_mv.exp |
| if [ $dircnt -lt $numdirs ]; then |
| echo "d.$dircnt" 1>>tst_mv.exp |
| fi |
| |
| fcnt=0 |
| while [ $fcnt -lt $numfiles ] |
| do |
| echo "f.$fcnt " 1>>tst_mv.exp |
| fcnt=$(($fcnt+1)) |
| done |
| printf "\n\n" 1>>tst_mv.exp |
| done |
| } |
| |
| test1() |
| { |
| numdirs=10 |
| numfiles=10 |
| dircnt=0 |
| fcnt=0 |
| |
| tst_res TINFO "Test #1: mv <dir1> <dir2> will move dir1 to dir2 and" \ |
| "all its contents" |
| |
| creat_dirnfiles 1 $numdirs $numfiles tst_mv.old |
| |
| mv tst_mv.old tst_mv.new > tst_mv.err 2>&1 |
| if [ $? -ne 0 ]; then |
| cat tst_mv.err |
| tst_brk TFAIL "Test #1: 'mv tst_mv.old tst_mv.new' failed" |
| fi |
| |
| tst_res TINFO "Test #1: creating output file" |
| ls -R tst_mv.new > tst_mv.out 2>&1 |
| |
| tst_res TINFO "Test #1: creating expected output file" |
| creat_expout $numdirs $numfiles tst_mv.new |
| |
| tst_res TINFO "Test #1: comparing expected out and actual output file" |
| diff -w -B -q tst_mv.out tst_mv.exp > tst_mv.err 2>&1 |
| if [ $? -ne 0 ]; then |
| cat tst_mv.err |
| tst_res TFAIL "Test #1: mv failed." |
| else |
| tst_res TINFO "Test #1: expected same as actual" |
| if [ -f tst_mv.old ]; then |
| tst_res TFAIL "Test #1: mv did not delete old" \ |
| "directory" |
| else |
| tst_res TPASS "Test #1: mv success" |
| fi |
| fi |
| } |
| |
| test2() |
| { |
| tst_res TINFO "Test #2: mv -b <file1> <file2> will move dir1 to dir2" |
| |
| ROD_SILENT touch tmpfile1 tmpfile2 |
| |
| MD5_old=$(md5sum tmpfile2 | awk '{print $1}') |
| if [ $? -ne 0 ]; then |
| tst_brk TBROK "Test #2: can't get the MD5 message of file2." |
| fi |
| |
| if [ -f "tmpfile2~" ]; then |
| tst_brk TBROK "Test #2: file tmpfile2~ should not exists." |
| fi |
| |
| mv -b tmpfile1 tmpfile2 |
| if [ $? -ne 0 ]; then |
| tst_brk TBROK "Test #2: 'mv -b tmpfile1 tmpfile2' failed." |
| fi |
| |
| # if 'mv -b file1 file2' succeed, there will be "tmpfile2~" file. |
| |
| MD5_backup=$(md5sum tmpfile2 | awk '{print $1}') |
| if [ $? -ne 0 ]; then |
| tst_brk TBROK "Test #2: can not get the MD5 message of" \ |
| "backup file2." |
| fi |
| |
| if [ "$MD5_old" = "$MD5_backup" -a -f "tmpfile2~" ]; then |
| tst_res TPASS "Test #2: mv -b success" |
| else |
| tst_res TFAIL "Test #2: mv -b failed" |
| fi |
| } |
| |
| tst_run |