#!/bin/sh all_archs="ppc ppc64 i386 x86_64" sysattr() { echo " " } doresults() { local ver echo "" echo " " sysattr cctools "`as&1 |sed 's/.*cctools-//;s/,.*//'`" sysattr hostname "`hostname`" sysattr os "`uname -r`" sysattr platform "`uname -m`" sysattr ld64 "`ld64 -v 2>&1|sed 's/.*PROJECT://;s/ .*//'`" sysattr ld "`ld_classic -v 2>&1|sed 's/.*cctools-//;s/ .*//'`" sysattr gcc "`gcc --version|head -1`" sysattr processor "`uname -p`" sysattr LANG "$LANG" sysattr LC_CTYPE "$LC_CTYPE" sysattr LC_MESSAGES "$LC_MESSAGES" sysattr LC_ALL "$LC_ALL" sysattr TMPDIR "$TMPDIR" sysattr GCC_EXEC_PREFIX "$GCC_EXEC_PREFIX" sysattr COMPILER_PATH "$COMPILER_PATH" sysattr LIBRARY_PATH "$LIBRARY_PATH" sysattr LANG "$LANG" sysattr CPATH "$CPATH" sysattr C_INCLUDE_PATH "$C_INCLUDE_PATH" sysattr CPLUS_INCLUDE_PATH "$CPLUS_INCLUDE_PATH" sysattr OBJC_INCLUDE_PATH "$OBJC_INCLUDE_PATH" sysattr DEPENDENCIES_OUTPUT "$DEPENDENCIES_OUTPUT" sysattr SUNPRO_DEPENDENCIES "$SUNPRO_DEPENDENCIES" echo " " echo "" echo "" echo " " for i in $* do echo " " cat $i echo " " done echo " " echo "" echo "" echo "" #rm $* } find_path_to_test_dir() { # FIND THE PATH TO THE TEST DIR # SO THAT WE CAN ADD THE BIN DIR INTO # THE SEARCH PATH # remember the top level execution dir chmod +x "$0" # just in case #add path to $0 into search local savedir savedir=$PWD DIRNAME=`dirname $0` [ -d "$DIRNAME" ] && cd "$DIRNAME" PATH=$PATH:$PWD cd "$savedir" chmod +x "$0" # just in case EXECNAME=`which $0` DIRNAME=`dirname "$EXECNAME"` if [ -d "$DIRNAME" ] then TEST_HOME_DIR=`cd "$DIRNAME";pwd` fi if [ -z "$TEST_HOME_DIR" ] then TEST_HOME_DIR="$savedir" # Give up and assume current dir fi cd "$TEST_HOME_DIR" cd ../build/Release PATH="$PWD":"$TEST_HOME_DIR/bin":"$PATH" cd "$savedir" } start_time=`date +%s` find_path_to_test_dir # Execute from the location of the script; or if not found the current loc [ -d $TEST_HOME_DIR/test-cases ] && cd $TEST_HOME_DIR/test-cases || cd test-cases rm-stale-test-logs 3 >/dev/null & make -C ../src # make sure the binaries are available DATEFORMAT=`date +%F-%H%M | sed -e 's/ //'` tmpdir=/tmp/proctor$DATEFORMAT if ! mkdir $tmpdir >/dev/null 2>/dev/null then rm -rf $tmpdir mkdir $tmpdir fi linestart=0 if [ x$1 = x-comment ] then shift comment="$1" shift fi find_makefile() { local j MF="" if [ ! -d $1 ] then return 1 fi for j in Makefile makefile do [ -f $1/$j ] && MF=$j done if [ "$NEWTEST" ] then for j in Makefile.newtest makefile.newtest do [ -f $1/$j ] && MF=$j done fi [ "$MF" ] && return 0 return 1 } one_test() { echo cwd: $1 echo cmd: $1 ARCH="$arch" make -f "$MF" -C $1 ARCH="$arch" 2>$tmpdir/stderr >$tmpdir/stdout result=$? sed 's/^/stdout: /'<$tmpdir/stdout sed 's/^/stderr: /'<$tmpdir/stderr echo exit: $? } if [ "$1" ] then i="$1" for arch in $all_archs do rm -f $tmpdir/$arch if find_makefile $i then one_test $i fi #fi | tee -a $tmpdir/raw | ../bin/results-to-xml $linestart>>$tmpdir/$arch linestart=`expr $linestart + 10000` done | tee -a $tmpdir/raw | ../bin/results-to-xml $linestart>>$tmpdir/$arch else for arch in $all_archs do rm -f $tmpdir/$arch for i in * do if find_makefile $i then one_test $i fi done | tee -a $tmpdir/raw | ../bin/results-to-xml $linestart>>$tmpdir/$arch linestart=`expr $linestart + 10000` done fi (cd $tmpdir; doresults $all_archs)>$tmpdir/o.xml ../bin/xmlparser $tmpdir/o.xml >/dev/null if [ $? = 0 ] then if ! proctor localhost ld import $tmpdir/o.xml then proctor database load failed! fi else echo Test results not loaded: internal xml error! exit 1 fi