From 90875e5b90b51e38fc586f4688f32b65e8671270 Mon Sep 17 00:00:00 2001 From: Henrik Nordstrom Date: Wed, 11 Feb 2009 13:23:03 +0100 Subject: [PATCH] Cleanup of the test-build scripts a bit. allow out-of-tree builds and separate .opts files. logfile creation moved to test-builds.sh, where it's used. --verbose mode for showing the actual output while tests is running test-build.sh generally cleaned up a bit with less duplicated code --- test-builds.sh | 78 ++++++++++++++++++++++++++++------------- test-suite/buildtest.sh | 13 ++----- 2 files changed, 57 insertions(+), 34 deletions(-) diff --git a/test-builds.sh b/test-builds.sh index a8a9d2f4ed..d72dd94f38 100755 --- a/test-builds.sh +++ b/test-builds.sh @@ -2,24 +2,66 @@ # # Run specific build tests for a given OS environment. # +top=`dirname $0` cleanup="no" -if test "${1}" = "--cleanup" ; then +verbose="no" +while [ $# -ge 1 ]; do + case "$1" in + --cleanup) cleanup="yes" shift -fi + ;; + --verbose) + verbose="yes" + shift + ;; + *) + break + ;; + esac +done # Things to catch errors="^ERROR|\ error:|\ Error\ |No\ such|assertion\ failed|FAIL:" -# Run a single test build by name -tmp="${1}" -if test -e ./test-suite/buildtests/${tmp}.opts ; then - echo "TESTING: ${tmp}" - rm -f -r bt${tmp} && mkdir bt${tmp} && cd bt${tmp} - ../test-suite/buildtest.sh ../test-suite/buildtests/${tmp} - grep -E "${errors}" buildtest_*.log && exit 1 - cd .. +logtee() { + if [ $verbose = yes ]; then + tee $1 + else + cat >$1 + fi +} + +buildtest() { + opts=$1 + layer=`basename $opts .opts` + btlayer="bt$layer" + log=${btlayer}.log + echo "TESTING: ${layer}" + rm -f -r ${btlayer} && mkdir ${btlayer} + { + cd ${btlayer} + $top/test-suite/buildtest.sh $opts + } 2>&1 | logtee $log + grep -E "${errors}" $log && exit 1 + if test "${cleanup}" = "yes" ; then + echo "REMOVE: ${btlayer}" + rm -f -r ${btlayer} $log + fi + result=`tail -2 $log | head -1` + test "${result}" = "Build Successful." || ( tail -5 $log ; exit 1 ) +} + +# 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 @@ -30,18 +72,6 @@ fi # These layers are constructed from detailed knowledge of # component dependencies. # -for f in `ls -1 ./test-suite/buildtests/layer*.opts` ; do - layer=`echo "${f}" | grep -o -E "layer-[0-9]*-[^\.]*"` - rm -f -r bt${layer} && mkdir bt${layer} && cd bt${layer} - arg=`echo "${f}" | sed s/\\.opts//` - echo "TESTING: ${arg}" - ../test-suite/buildtest.sh ".${arg}" - grep -E "${errors}" buildtest_*.log && exit 1 - result=`tail -2 buildtest_*.log | head -1` - test "${result}" = "Build Successful." || ( tail -5 buildtest_*.log ; exit 1 ) - cd .. - if test "${cleanup}" = "yes" ; then - echo "REMOVE: bt${layer}" - rm -f -r bt${layer} - fi +for f in `ls -1 $top/test-suite/buildtests/layer*.opts` ; do + buildtest $f done diff --git a/test-suite/buildtest.sh b/test-suite/buildtest.sh index 87561671a8..69c2f4369b 100755 --- a/test-suite/buildtest.sh +++ b/test-suite/buildtest.sh @@ -7,16 +7,11 @@ # dist="${1}" - -# Figure out where to log the test output -log=`echo "${dist}" | sed s/..test-suite.buildtests.//g ` - -# ... and send everything there... -{ +base="`dirname $0`" if test -e ${dist%%.opts}.opts ; then echo "BUILD: ${dist%%.opts}.opts" - . ./${dist%%.opts}.opts + . ${dist%%.opts}.opts else echo "BUILD: DEFAULT" OPTS="" @@ -36,10 +31,8 @@ fi # above command currently encounters dependancy problems on cleanup. # rm -f -r src/fs/aufs/.deps src/fs/diskd/.deps && - ../configure --silent ${OPTS} 2>&1 && + $base/../configure --silent ${OPTS} 2>&1 && make check 2>&1 && make 2>&1 -} 2>&1 > ./buildtest_${log}.log - # do not build any of the install's ... -- 2.47.3