#!/bin/sh # collect_cgal_testresults # ======================== # collect all files to generate the html page # containing the testsuite results # # to be run in the CGAL/test directory or a local test directory. # $CGAL_MAKEFILE is used to find out $CGAL_DIR. # CGAL_TESTER, CGAL_TESTER_NAME, CGAL_TESTER_ADDRESS are also used as # environment variables. print_platforms() { cd src for FILE in `ls CompilerOutput_*` ; do PLATFORM=`echo $FILE | sed 's/CompilerOutput_//'| sed 's/\.gz//'` printf "$PLATFORM " done cd .. } #print_testresult print_testresult() { if [ ! -f ErrorOutput_$1 ] ; then RESULT="?" else if eval grep ERROR ErrorOutput_$1 > /dev/null ; then RESULT="n" else if eval grep -i warning CompilerOutput_$1 > /dev/null then RESULT="w" else RESULT="y" fi fi fi echo "$2 $RESULT" } # do_platform do_platform() { PLATFORM=$1 CURRENT_DIR=`pwd` TESTER=${CGAL_TESTER:-${USER:-`whoami`}} TESTER_NAME="${CGAL_TESTER_NAME:-${TESTER}}" TESTER_ADDRESS="${CGAL_TESTER_ADDRESS:-${TESTER}}" TEST_REPORT="TestReport_${TESTER}_${PLATFORM}" RESULT_FILE=$CURRENT_DIR/results_${TESTER}_${PLATFORM}.txt CGAL_DIR=.. if [ "${CGAL_MAKEFILE}" ]; then CGAL_DIR=`dirname $CGAL_MAKEFILE`/.. fi rm -f $RESULT_FILE touch $RESULT_FILE sed -n '/CGAL_VERSION /s/#define //p' < $CGAL_DIR/include/CGAL/version.h >> $RESULT_FILE echo "TESTER ${TESTER}" >> $RESULT_FILE echo "TESTER_NAME ${TESTER_NAME}" >> $RESULT_FILE echo "TESTER_ADDRESS ${TESTER_ADDRESS}" >> $RESULT_FILE echo "PLATFORM ${PLATFORM}" >> $RESULT_FILE LEDA_INCL_DIR=`cat "${CGAL_DIR}/config/install/${PLATFORM}" |sed -n '/LEDA_INCL_DIR/s/^.*= .\([^ ]*\). .*$/\1/p'` if [ -r ${LEDA_INCL_DIR}/LEDA/basic.h ]; then sed -n '/__LEDA__/s/^#define __LEDA__/LEDA version/p' < ${LEDA_INCL_DIR}/LEDA/basic.h >>$RESULT_FILE fi cat "${CGAL_DIR}/config/install/${PLATFORM}" >> $RESULT_FILE echo "------------" >> $RESULT_FILE for DIR in $TEST_DIRECTORIES ; do if [ -d $DIR ] ; then echo " $DIR ..." cd $DIR print_testresult $PLATFORM $DIR >> $RESULT_FILE rm -f ${TEST_REPORT} touch $TEST_REPORT if [ ! -f ErrorOutput_${PLATFORM} ] ; then echo "Error: file $DIR/ErrorOutput_${PLATFORM} does not exist!" else cat ErrorOutput_${PLATFORM} >> $TEST_REPORT fi if [ ! -f CompilerOutput_${PLATFORM} ] ; then echo "Error: file $DIR/CompilerOutput_${PLATFORM} does not exist!" else cat CompilerOutput_${PLATFORM} >> $TEST_REPORT fi if 2>&1 eval ls ProgramOutput.*.${PLATFORM} > /dev/null ; then PROGRAM_OUTPUT=`ls ProgramOutput.*$PLATFORM*` for FILE in $PROGRAM_OUTPUT ; do echo >> $TEST_REPORT echo "------------------------------------------------------------------" >> $TEST_REPORT echo "- $FILE" >> $TEST_REPORT echo "------------------------------------------------------------------" >> $TEST_REPORT cat $FILE >> $TEST_REPORT done fi cd .. fi done OUTPUT_FILE=results_${TESTER}_${PLATFORM}.tar rm -f $OUTPUT_FILE $OUTPUT_FILE.gz tar cf $OUTPUT_FILE results_${TESTER}_${PLATFORM}.txt */$TEST_REPORT echo echo "compressing ..." gzip -9f $OUTPUT_FILE echo "results written to file $OUTPUT_FILE.gz" echo } if [ -z "$1" ] ; then TEST_DIRECTORIES=`ls` else TEST_DIRECTORIES="$*" fi for PLATFORM in `print_platforms` ; do echo "---------------------------------------------------------------" echo " Collecting results of platform $PLATFORM" echo "---------------------------------------------------------------" do_platform $PLATFORM done