Admin/isatest-check
author paulson
Tue, 28 Mar 2006 16:48:18 +0200
changeset 19334 96ca738055a6
parent 18329 221d47d17a81
child 21038 c7b041a6bbfe
permissions -rwxr-xr-x
Simplified version of Jia's filter. Now all constants are pooled, rather than relevance being compared against separate clauses. Rejects are no longer noted, and units cannot be added at the end.

#!/usr/bin/env bash
#
# $Id$
# Author: Gerwin Klein, TU Muenchen
#
# DESCRIPTION: sends email for failed tests, checks for error.log,
#              generates development snapshot if test ok

## global settings
. ~/admin/isatest-settings

# produce empty list for patterns like isatest-*.log if no 
# such file exists 
shopt -s nullglob

# mail program
MAIL=$HOME/bin/pmail

# tmp file for sending mail
TMP=/tmp/isatest-makedist.$$

export DISTPREFIX


## diagnostics

PRG="$(basename "$0")"

function usage()
{
  echo
  echo "Usage: $PRG"
  echo
  echo "   sends email for failed tests, checks for error.log,"
  echo "   generates development snapshot if test ok."
  echo "   To be called by cron."
  echo
  exit 1
}

function fail()
{
  echo "$1" >&2
  exit 2
}

## main

# check if tests are still running, wait for them a couple of hours
i=0
while [ -n "$(ls $RUNNING)" -a $i -lt 8 ]; do 
    sleep 3600
    let "i = i+1"
done

# still running -> give up
if [ -n "$(ls $RUNNING)" ]; then
    echo "Giving up waiting for test to finish at $(date)." > $TMP
    echo >> $TMP
    echo "Sessions still running:" >> $TMP
    echo "$(ls $RUNNING)" >> $TMP
    echo >> $TMP
    echo "Attaching all error logs collected so far." >> $TMP
    echo >> $TMP

    if [ -e $ERRORLOG ]; then
        cat $ERRORLOG >> $TMP
    fi

    echo "Have a nice day," >> $TMP
    echo "  isatest" >> $TMP

    for R in $MAILTO; do
        LOGS=$ERRORDIR/isatest*.log
        $MAIL "isabelle test taking too long" $R $TMP $LOGS
    done
    
    exit 1
fi

# no tests running, check if there were errors
if [ -e $ERRORLOG ]; then
    cat $ERRORLOG > $TMP
    echo "Have a nice day," >> $TMP
    echo "  isatest" >> $TMP

    for R in $MAILTO; do
        LOGS=$ERRORDIR/isatest*.log
        $MAIL "isabelle test failed" $R $TMP $LOGS
    done

    rm $TMP
    exit 1
fi

# generate development snapshot page only for successful tests
(cd $HOME/devel-page; env DISTNAME=`$DISTPREFIX/Isabelle/bin/isatool version` make)
echo "$(date) $HOSTNAME $PRG: generated development snapshot web page." >> $MASTERLOG

exit 0
## end