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/*;
 | |
| 
 | |
| 
 |