59ec601b8e
ambiguous cases. Everything now passes the test suite...
361 lines
8.7 KiB
Makefile
361 lines
8.7 KiB
Makefile
# cp_tests.mk - Set of test cases for busybox cp
|
|
# -------------
|
|
# Copyright (C) 2000 Karl M. Hegbloom <karlheg@debian.org> GPL
|
|
#
|
|
|
|
# GNU `cp'
|
|
GCP = /bin/cp
|
|
# BusyBox `cp'
|
|
BCP = $(shell pwd)/cp
|
|
|
|
all:: cp_tests
|
|
clean:: cp_clean
|
|
|
|
cp_clean:
|
|
- rm -rf cp_tests cp_*.{gnu,bb} cp
|
|
|
|
# check_cp_dir_to_dir_wo_a removed from this list; see below
|
|
cp_tests: cp_clean cp check_exists check_simple_cp check_cp_symlnk \
|
|
check_cp_symlink_w_a check_cp_files_to_dir check_cp_files_to_dir_w_d \
|
|
check_cp_files_to_dir_w_p check_cp_files_to_dir_w_p_and_d \
|
|
check_cp_dir_to_dir_w_a \
|
|
check_cp_dir_to_dir_w_a_take_two
|
|
|
|
check_exists:
|
|
@echo;
|
|
@echo "No output from diff means busybox cp is functioning properly.";
|
|
@echo "Some tests might show timestamp differences that are Ok.";
|
|
|
|
@echo;
|
|
@echo Verify that busybox cp exists;
|
|
@echo ------------------------------;
|
|
[ -x ${BCP} ] || exit 0
|
|
|
|
@echo;
|
|
mkdir cp_tests;
|
|
|
|
check_simple_cp:
|
|
@echo Copy a file to a copy of the file;
|
|
@echo ------------------------------;
|
|
cd cp_tests; \
|
|
echo A file > afile; \
|
|
ls -l afile > ../cp_afile_afilecopy.gnu; \
|
|
${GCP} afile afilecopy; \
|
|
ls -l afile afilecopy >> ../cp_afile_afilecopy.gnu;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/*;
|
|
|
|
@echo;
|
|
cd cp_tests; \
|
|
echo A file > afile; \
|
|
ls -l afile > ../cp_afile_afilecopy.bb; \
|
|
${BCP} afile afilecopy; \
|
|
ls -l afile afilecopy >> ../cp_afile_afilecopy.bb;
|
|
|
|
@echo;
|
|
@echo Might show timestamp differences.
|
|
-diff -u cp_afile_afilecopy.gnu cp_afile_afilecopy.bb;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/*;
|
|
|
|
check_cp_symlnk:
|
|
@echo; echo Copy a file pointed to by a symlink;
|
|
@echo ------------------------------;
|
|
cd cp_tests; \
|
|
mkdir here there; \
|
|
echo A file > afile; \
|
|
cd here; \
|
|
ln -s ../afile .; \
|
|
|
|
@echo;
|
|
cd cp_tests; \
|
|
ls -lR . > ../cp_symlink.gnu; \
|
|
${GCP} here/afile there; \
|
|
ls -lR . >> ../cp_symlink.gnu;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/there/*;
|
|
|
|
sleep 1;
|
|
|
|
@echo;
|
|
cd cp_tests; \
|
|
ls -lR . > ../cp_symlink.bb; \
|
|
${BCP} here/afile there; \
|
|
ls -lR . >> ../cp_symlink.bb;
|
|
|
|
@echo;
|
|
@echo Will show timestamp difference.
|
|
-diff -u cp_symlink.gnu cp_symlink.bb;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/*
|
|
|
|
check_cp_symlink_w_a:
|
|
@echo; echo Copy a symlink, useing the -a switch.;
|
|
@echo ------------------------------;
|
|
cd cp_tests; \
|
|
echo A file > afile; \
|
|
mkdir here there; \
|
|
cd here; \
|
|
ln -s ../afile .
|
|
|
|
cd cp_tests; \
|
|
ls -lR . > ../cp_a_symlink.gnu; \
|
|
${GCP} -a here/afile there; \
|
|
ls -lR . >> ../cp_a_symlink.gnu;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/there/*;
|
|
|
|
sleep 1;
|
|
|
|
@echo;
|
|
cd cp_tests; \
|
|
echo A file > afile; \
|
|
ls -lR . > ../cp_a_symlink.bb; \
|
|
${BCP} -a here/afile there; \
|
|
ls -lR . >> ../cp_a_symlink.bb;
|
|
|
|
@echo;
|
|
diff -u cp_a_symlink.gnu cp_a_symlink.bb;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/*;
|
|
|
|
|
|
check_cp_files_to_dir:
|
|
# Copy a set of files to a directory.
|
|
@echo; echo Copy a set of files to a directory.;
|
|
@echo ------------------------------;
|
|
cd cp_tests; \
|
|
echo A file number one > afile1; \
|
|
echo A file number two, blah. > afile2; \
|
|
ln -s afile1 symlink1; \
|
|
mkdir there;
|
|
|
|
cd cp_tests; \
|
|
${GCP} afile1 afile2 symlink1 there/; \
|
|
ls -lR > ../cp_files_dir.gnu;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/there/*;
|
|
|
|
@echo;
|
|
cd cp_tests; \
|
|
${BCP} afile1 afile2 symlink1 there/; \
|
|
ls -lR > ../cp_files_dir.bb;
|
|
|
|
@echo;
|
|
diff -u cp_files_dir.gnu cp_files_dir.bb;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/*;
|
|
|
|
check_cp_files_to_dir_w_d:
|
|
# Copy a set of files to a directory with the -d switch.
|
|
@echo; echo Copy a set of files to a directory with the -d switch.;
|
|
@echo ------------------------------;
|
|
cd cp_tests; \
|
|
echo A file number one > afile1; \
|
|
echo A file number two, blah. > afile2; \
|
|
ln -s afile1 symlink1; \
|
|
mkdir there1; \
|
|
${GCP} -d afile1 afile2 symlink1 there1/; \
|
|
ls -lR > ../cp_d_files_dir.gnu;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/{afile{1,2},symlink1,there1};
|
|
|
|
@echo;
|
|
cd cp_tests; \
|
|
echo A file number one > afile1; \
|
|
echo A file number two, blah. > afile2; \
|
|
ln -s afile1 symlink1; \
|
|
mkdir there1; \
|
|
${BCP} -d afile1 afile2 symlink1 there1/; \
|
|
ls -lR > ../cp_d_files_dir.bb;
|
|
|
|
@echo;
|
|
diff -u cp_d_files_dir.gnu cp_d_files_dir.bb;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/{afile{1,2},symlink1,there1};
|
|
|
|
check_cp_files_to_dir_w_p:
|
|
# Copy a set of files to a directory with the -p switch.
|
|
@echo; echo Copy a set of files to a directory with the -p switch.;
|
|
@echo ------------------------------;
|
|
cd cp_tests; \
|
|
echo A file number one > afile1; \
|
|
echo A file number two, blah. > afile2; \
|
|
touch --date='Sat Jan 29 21:24:08 PST 2000' afile1; \
|
|
ln -s afile1 symlink1; \
|
|
mkdir there1; \
|
|
${GCP} -p afile1 afile2 symlink1 there1/; \
|
|
ls -lR > ../cp_p_files_dir.gnu;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/{afile{1,2},symlink1,there1};
|
|
|
|
@echo;
|
|
cd cp_tests; \
|
|
echo A file number one > afile1; \
|
|
echo A file number two, blah. > afile2; \
|
|
touch --date='Sat Jan 29 21:24:08 PST 2000' afile1; \
|
|
ln -s afile1 symlink1; \
|
|
mkdir there1; \
|
|
${BCP} -p afile1 afile2 symlink1 there1/; \
|
|
ls -lR > ../cp_p_files_dir.bb;
|
|
|
|
@echo;
|
|
diff -u cp_p_files_dir.gnu cp_p_files_dir.bb;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/{afile{1,2},symlink1,there1};
|
|
|
|
|
|
check_cp_files_to_dir_w_p_and_d:
|
|
@echo; echo Copy a set of files to a directory with -p and -d switches.
|
|
@echo ------------------------------;
|
|
cd cp_tests; \
|
|
echo A file number one > afile1; \
|
|
echo A file number two, blah. > afile2; \
|
|
touch --date='Sat Jan 29 21:24:08 PST 2000' afile1; \
|
|
ln -s afile1 symlink1; \
|
|
mkdir there1; \
|
|
${GCP} -p -d afile1 afile2 symlink1 there1/; \
|
|
ls -lR > ../cp_pd_files_dir.gnu;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/{afile{1,2},symlink1,there1};
|
|
|
|
@echo;
|
|
cd cp_tests; \
|
|
echo A file number one > afile1; \
|
|
echo A file number two, blah. > afile2; \
|
|
touch --date='Sat Jan 29 21:24:08 PST 2000' afile1; \
|
|
ln -s afile1 symlink1; \
|
|
mkdir there1; \
|
|
${BCP} -p -d afile1 afile2 symlink1 there1/; \
|
|
ls -lR > ../cp_pd_files_dir.bb;
|
|
|
|
@echo;
|
|
diff -u cp_pd_files_dir.gnu cp_pd_files_dir.bb;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/{afile{1,2},symlink1,there1};
|
|
|
|
# This test doesn't work any more; gnu cp now _does_ copy a directory
|
|
# to a subdirectory of itself. What's worse, that "feature" has no
|
|
# (documented) way to be disabled with command line switches.
|
|
# It's not obvious that busybox cp should mimic this behavior.
|
|
# For now, this test is removed from the cp_tests list, above.
|
|
check_cp_dir_to_dir_wo_a:
|
|
# Copy a directory to another directory, without the -a switch.
|
|
@echo; echo Copy a directory to another directory, without the -a switch.
|
|
@echo ------------------------------;
|
|
@echo There should be an error message about cannot cp a dir to a subdir of itself.
|
|
cd cp_tests; \
|
|
touch a b c; \
|
|
mkdir adir; \
|
|
ls -lR . > ../cp_a_star_adir.gnu; \
|
|
${GCP} -a * adir; \
|
|
ls -lR . >> ../cp_a_star_adir.gnu;
|
|
|
|
@echo
|
|
@echo There should be an error message about cannot cp a dir to a subdir of itself.
|
|
cd cp_tests; \
|
|
rm -rf adir; \
|
|
mkdir adir; \
|
|
ls -lR . > ../cp_a_star_adir.bb; \
|
|
${BCP} -a * adir; \
|
|
ls -lR . >> ../cp_a_star_adir.bb;
|
|
|
|
@echo;
|
|
diff -u cp_a_star_adir.gnu cp_a_star_adir.bb;
|
|
|
|
# Done
|
|
@echo;
|
|
rm -rf cp_tests;
|
|
@echo; echo Done.
|
|
|
|
|
|
check_cp_dir_to_dir_w_a:
|
|
@echo; echo Copy a directory into another directory with the -a switch.
|
|
@echo ------------------------------;
|
|
cd cp_tests; \
|
|
mkdir dir{a,b}; \
|
|
echo A file > dira/afile; \
|
|
echo A file in dirb > dirb/afileindirb; \
|
|
ln -s dira/afile dira/alinktoafile; \
|
|
mkdir dira/subdir1; \
|
|
echo Another file > dira/subdir1/anotherfile; \
|
|
ls -lR . > ../cp_a_dira_dirb.gnu; \
|
|
${GCP} -a dira dirb; \
|
|
ls -lR . >> ../cp_a_dira_dirb.gnu;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/dir{a,b};
|
|
|
|
@echo;
|
|
cd cp_tests; \
|
|
mkdir dir{a,b}; \
|
|
echo A file > dira/afile; \
|
|
echo A file in dirb > dirb/afileindirb; \
|
|
ln -s dira/afile dira/alinktoafile; \
|
|
mkdir dira/subdir1; \
|
|
echo Another file > dira/subdir1/anotherfile; \
|
|
ls -lR . > ../cp_a_dira_dirb.bb; \
|
|
${BCP} -a dira dirb; \
|
|
ls -lR . >> ../cp_a_dira_dirb.bb;
|
|
|
|
@echo;
|
|
diff -u cp_a_dira_dirb.gnu cp_a_dira_dirb.bb;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/dir{a,b};
|
|
|
|
|
|
check_cp_dir_to_dir_w_a_take_two:
|
|
@echo; echo Copy a directory into another directory with the -a switch;
|
|
@echo ------------------------------;
|
|
mkdir -p cp_tests/gnu; \
|
|
mkdir -p cp_tests/bb; \
|
|
cd cp_tests; \
|
|
mkdir here there; \
|
|
echo A file > here/afile; \
|
|
mkdir here/adir; \
|
|
touch here/adir/afileinadir; \
|
|
ln -s $$(pwd) here/alink;
|
|
|
|
@echo;
|
|
cd cp_tests/gnu; \
|
|
ls -lR . > ../../cp_a_dir_dir.gnu; \
|
|
${GCP} -a here/ there/; \
|
|
ls -lR . >> ../../cp_a_dir_dir.gnu;
|
|
|
|
@echo;
|
|
rm -rf cp_tests/there/*;
|
|
|
|
sleep 1;
|
|
|
|
@echo;
|
|
cd cp_tests/bb; \
|
|
ls -lR . > ../../cp_a_dir_dir.bb; \
|
|
${BCP} -a here/ there/; \
|
|
ls -lR . >> ../../cp_a_dir_dir.bb;
|
|
|
|
@echo;
|
|
echo "Erik 1"
|
|
diff -u cp_a_dir_dir.gnu cp_a_dir_dir.bb;
|
|
echo "Erik 2"
|
|
|
|
@echo;
|
|
echo "Erik 3"
|
|
rm -rf cp_tests/*;
|
|
|
|
|