# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: rousskov@measurement-factory.com-20090309162057-\
#   6lkaoiv1jznsmql6
# target_branch: http://www.squid-cache.org/bzr/squid3/trunk
# testament_sha1: 66c28c9b4c5a70895ab7db67ca0763657272c2b7
# timestamp: 2009-03-09 10:38:20 -0600
# base_revision_id: rousskov@measurement-factory.com-20090308184106-\
#   4hkp9exkjcdwqvfi
# 
# Begin patch
=== modified file 'test-builds.sh'
--- test-builds.sh	2009-03-08 10:57:37 +0000
+++ test-builds.sh	2009-03-09 16:20:57 +0000
@@ -1,11 +1,14 @@
 #!/bin/sh
 #
-#  Run specific build tests for a given OS environment.
+#  Run all or some build tests for a given OS environment.
 #
 top=`dirname $0`
 
+globalResult=0
+
 cleanup="no"
 verbose="no"
+keepGoing="no"
 while [ $# -ge 1 ]; do
     case "$1" in
     --cleanup)
@@ -16,15 +19,16 @@
 	verbose="yes"
 	shift
 	;;
+    --keep-going)
+	keepGoing="yes"
+	shift
+	;;
     *)
     	break
 	;;
     esac
 done
 
-# Things to catch
-errors="^ERROR|\ error:|\ Error\ |No\ such|assertion\ failed|FAIL:"
-
 logtee() {
     if [ $verbose = yes ]; then
 	tee $1
@@ -41,52 +45,93 @@
     echo "TESTING: ${layer}"
     rm -f -r ${btlayer} && mkdir ${btlayer}
     {
+	result=255
 	cd ${btlayer}
 	if test -e $top/test-suite/buildtest.sh ; then
 		$top/test-suite/buildtest.sh $opts
+		result=$?
 	elif test -e ../$top/test-suite/buildtest.sh ; then
 		../$top/test-suite/buildtest.sh ../$opts
+		result=$?
+	else
+		echo "Error: cannot find $top/test-suite/buildtest.sh script"
+		result=1
 	fi
+	# log the result for the outer script to notice
+	echo "buildtest.sh result is $result";
     } 2>&1 | logtee $log
+
+    result=1 # failure by default
+    if grep -q '^buildtest.sh result is 0$' $log; then
+	result=0
+    fi
+
     grep -E "BUILD" ${log}
-    grep -E "${errors}" $log && exit 1
+
+    # logged strings to treat as errors
+    errors="^ERROR|\ error:|\ Error\ |No\ such|assertion\ failed|FAIL:"
+    if grep -E "${errors}" $log; then
+	# Possible errors detected.
+	# Let's be conservative and assume those were real errors.
+	if test $result -eq 0; then
+	    echo "Internal error: failed test with a successful result code"
+	    result=1
+	# else we already know that there was an error
+	fi
+    fi
+
     if test "${cleanup}" = "yes" ; then
 	echo "REMOVE DATA: ${btlayer}"
 	rm -f -r ${btlayer}
     fi
-    result=`tail -2 $log | head -1`
-    if test "${result}" = "Build Successful." ; then
-        echo "${result}"
+
+    if test $result -eq 0; then
+	# successful execution
+	if test "$verbose" = yes; then
+	    echo 'Build OK.'
+	fi
     else
-        echo "Build Failed:"
+        echo "Build Failed ($result):"
         tail -5 $log
-        exit 1
+	globalResult=1
     fi
+
     if test "${cleanup}" = "yes" ; then
 	echo "REMOVE LOG: ${log}"
 	rm -f -r $log
     fi
 }
 
-# Run a single test build by name or opts file
-if [ -e "$1" ]; then 
-
-	buildtest $1
-	exit 0
-fi
-tmp=`basename "${1}" .opts`
-if test -e $top/test-suite/buildtests/${tmp}.opts ; then
-	buildtest $top/test-suite/buildtests/${tmp}.opts
-	exit 0
-fi
-
-#
-#  Run specific tests for each combination of configure-time
-#  Options.
-#
-#  These layers are constructed from detailed knowledge of
-#  component dependencies.
-#
-for f in `ls -1 $top/test-suite/buildtests/layer*.opts` ; do
-	buildtest $f
+# decide what tests to run, $* contains test spec names or filenames
+# use all knows specs if $* is empty
+if test -n "$*" -a "$*" != all; then
+    tests="$*"
+else
+    tests=`ls -1 $top/test-suite/buildtests/layer*.opts`
+fi
+
+for t in $tests; do
+    if test -e "$t"; then 
+	# A configuration file
+        cfg="$t"
+    elif test -e "$top/test-suite/buildtests/${t}.opts"; then
+	# A well-known configuration name
+	cfg="$top/test-suite/buildtests/${t}.opts"
+    else
+	echo "Error: Unknown test specs '$t'"
+	cfg=''
+	globalResult=1
+    fi
+
+    # run the test, if any
+    if test -n "$cfg"; then
+	buildtest $cfg
+    fi
+
+    # quit on errors unless we should $keepGoing
+    if test $globalResult -ne 0 -a $keepGoing != yes; then
+	exit $globalResult
+    fi
 done
+
+exit $globalResult

# Begin bundle
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
U4UJB46TWnA=