shell: syncronize ash_test/run-all and hush_test/run-all a bit
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		@@ -9,6 +9,8 @@ unset LC_NUMERIC
 | 
			
		||||
unset LC_TIME
 | 
			
		||||
unset LC_ALL
 | 
			
		||||
 | 
			
		||||
TOPDIR=`pwd`
 | 
			
		||||
 | 
			
		||||
if test ! -x hush; then
 | 
			
		||||
	if test ! -x ../../busybox; then
 | 
			
		||||
		echo "Can't run tests. Put hush binary into this directory (`pwd`)"
 | 
			
		||||
@@ -38,6 +40,8 @@ do_test()
 | 
			
		||||
	test -d "$1" || return 0
 | 
			
		||||
	d=${d%/}
 | 
			
		||||
#	echo Running tests in directory "$1"
 | 
			
		||||
	# $1 but with / replaced by # so that it can be used as filename part
 | 
			
		||||
	noslash=`echo "$1" | sed 's:/:#:g'`
 | 
			
		||||
	(
 | 
			
		||||
	tret=0
 | 
			
		||||
	cd "$1" || { echo "cannot cd $1!"; exit 1; }
 | 
			
		||||
@@ -49,34 +53,35 @@ do_test()
 | 
			
		||||
			#*) echo $x ; sh $x ;;
 | 
			
		||||
			*)
 | 
			
		||||
			echo -n "$1/$x:"
 | 
			
		||||
			sh "$x" >"../$1-$x.fail" 2>&1 && \
 | 
			
		||||
			{ { echo " ok"; rm "../$1-$x.fail"; } || echo " fail"; }
 | 
			
		||||
			sh "$x" >"$TOPDIR/$noslash-$x.fail" 2>&1 && \
 | 
			
		||||
			{ { echo " ok"; rm "$TOPDIR/$noslash-$x.fail"; } || echo " fail"; }
 | 
			
		||||
			;;
 | 
			
		||||
		esac
 | 
			
		||||
	done
 | 
			
		||||
	# Many bash run-XXX scripts just do this,
 | 
			
		||||
	# no point in duplication it all over the place
 | 
			
		||||
	for x in *.tests; do
 | 
			
		||||
	test -x "$x" || continue
 | 
			
		||||
	name="${x%%.tests}"
 | 
			
		||||
	test -f "$name.right" || continue
 | 
			
		||||
#	echo Running test: "$x"
 | 
			
		||||
	echo -n "$1/$x:"
 | 
			
		||||
	(
 | 
			
		||||
		"$THIS_SH" "./$x" >"$name.xx" 2>&1
 | 
			
		||||
		r=$?
 | 
			
		||||
		# filter C library differences
 | 
			
		||||
		sed -i \
 | 
			
		||||
			-e "/: invalid option /s:'::g" \
 | 
			
		||||
			"$name.xx"
 | 
			
		||||
		test $r -eq 77 && rm -f "../$1-$x.fail" && exit 77
 | 
			
		||||
		diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail"
 | 
			
		||||
	)
 | 
			
		||||
	case $? in
 | 
			
		||||
		0)  echo " ok";;
 | 
			
		||||
		77) echo " skip (feature disabled)";;
 | 
			
		||||
		*)  echo " fail"; tret=1;;
 | 
			
		||||
	esac
 | 
			
		||||
		test -x "$x" || continue
 | 
			
		||||
		name="${x%%.tests}"
 | 
			
		||||
		test -f "$name.right" || continue
 | 
			
		||||
#		echo Running test: "$x"
 | 
			
		||||
		echo -n "$1/$x:"
 | 
			
		||||
		(
 | 
			
		||||
			"$THIS_SH" "./$x" >"$name.xx" 2>&1
 | 
			
		||||
			r=$?
 | 
			
		||||
			# filter C library differences
 | 
			
		||||
			sed -i \
 | 
			
		||||
				-e "/: invalid option /s:'::g" \
 | 
			
		||||
				"$name.xx"
 | 
			
		||||
			test $r -eq 77 && rm -f "$TOPDIR/$noslash-$x.fail" && exit 77
 | 
			
		||||
			diff -u "$name.xx" "$name.right" >"$TOPDIR/$noslash-$x.fail" \
 | 
			
		||||
			&& rm -f "$name.xx" "$TOPDIR/$noslash-$x.fail"
 | 
			
		||||
		)
 | 
			
		||||
		case $? in
 | 
			
		||||
			0)  echo " ok";;
 | 
			
		||||
			77) echo " skip (feature disabled)";;
 | 
			
		||||
			*)  echo " fail"; tret=1;;
 | 
			
		||||
		esac
 | 
			
		||||
	done
 | 
			
		||||
	exit ${tret}
 | 
			
		||||
	)
 | 
			
		||||
@@ -92,7 +97,7 @@ if [ $# -lt 1 ]; then
 | 
			
		||||
	modules=`ls -d hush-*`
 | 
			
		||||
 | 
			
		||||
	for module in $modules; do
 | 
			
		||||
	do_test $module || ret=1
 | 
			
		||||
		do_test $module || ret=1
 | 
			
		||||
	done
 | 
			
		||||
else
 | 
			
		||||
	while [ $# -ge 1 ]; do
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user