1#! /usr/bin/env bash
2# Lancement d'un cas test du repertoire dgibi.
3# cette version est destinee a etre utilisee par Hudson et make check
4# sortie des resultats au format xml.
5
6
7function printUsage()
8{
9cat <<EOF
10Usage :
11$0 <ktest>.dgibi
12La sortie standard est redirigée vers <ktest>.mess
13Le fichier resultat est cree dans TEST-<ktest>-castem.xml
14
15EOF
16}
17
18
19function control_c()
20{
21  echo -en "\n*** Exiting ***\n"
22  exit $?
23}
24
25# trap keyboard interrupt (control-c)
26trap control_c SIGINT
27
28function exec_castem() {
29    @castem_exe@ @CMAKE_CURRENT_SOURCE_DIR@/$1.dgibi &> ${1}.mess
30    if [ -f fort.3  ]; then \rm -f fort.3; fi
31    if [ -f fort.98 ]; then \rm -f fort.98; fi
32    if [ -f fort.25 ]; then mv fort.25 ${1}.lgi; fi
33    if [ -f fort.24 ]; then mv fort.24 ${1}.ps;  fi
34    if [ -f fort.97 ]; then mv fort.97 ${1}.mif; fi
35}
36
37## Vérification du nb de parametres d'appel au script
38if [ $# -ne 1 ]; then
39    printUsage
40    exit 1
41fi
42
43ktest=$1
44
45if [ ! -f @CMAKE_CURRENT_SOURCE_DIR@/${ktest}.dgibi ] ; then
46    echo "@CMAKE_CURRENT_SOURCE_DIR@/${ktest}.dgibi not found. Bailing out..."
47    exit 1
48fi
49
50export CASTEM=@CASTEMHOME@
51export PATH=@CASTEMHOME@/bin:$PATH
52export LD_LIBRARY_PATH=@CASTEMHOME@/lib:$LD_LIBRARY_PATH
53
54exec_castem $ktest;
55
56# Fichier de sortie
57XML_FILE="TEST-${ktest}-castem.xml"
58
59#echo "saving to $XML_FILE"
60
61# Entete du fichier XML
62echo '<?xml version="1.0" encoding="ascii"?>' > $XML_FILE
63echo '<testsuite name="CastemTest">' >> $XML_FILE
64
65# Le dgibi est copié puis modifié pour que les erreurs soient fatales
66# (la copie evite de faire apparaitre un statut svn modifié).
67
68# get time and error status
69TIME=`grep -a user ${ktest}.mess | grep system | grep elapsed | sed 's/user.*//'`
70ERROR=`grep -a 'ARRET DU PROGRAMME GIBI NIVEAU' ${ktest}.mess | sed 's/.*ERREUR:\s*//' | sed 's/\s.*//'`
71ERROR_MSG=`tail -20 ${ktest}.mess | recode -f ascii | sed s'/&/&amp;/'`
72
73if [ -z "$ERROR" ] ; then ERROR=1 ; fi
74if [ "$ERROR" -eq 0 ] ; then
75    echo "<testcase classname=\"CastemTestCase\" name=\"$ktest\" time=\"$TIME\"/>" >> $XML_FILE
76    echo '</testsuite>' >> $XML_FILE
77    exit 0
78else
79    echo "<testcase classname=\"CastemTestCase\" name=\"$ktest\" time=\"$TIME\">" >>  $XML_FILE
80    echo '<failure type="error">' >> $XML_FILE
81    echo "$ERROR_MSG" >> $XML_FILE
82    echo '</failure></testcase>' >> $XML_FILE
83    echo '</testsuite>' >> $XML_FILE
84    exit 1
85fi
86