# Set lang do default to avoid failed tests because of locale
export LANG=C
+export NIT_TESTING=true
usage()
{
local pattern="$1"
local sav="$2"
if [ ! -r "$sav" ]; then return 0; fi
- diff -u "out/$pattern.res" "$sav" > "out/$pattern.diff.sav.log"
+ diff -u "$sav" "out/$pattern.res" > "out/$pattern.diff.sav.log"
if [ "$?" == 0 ]; then
return 1
fi
sed '/[Ww]arning/d;/[Ee]rror/d' "$sav" > "out/$pattern.sav2"
grep '[Ee]rror' "out/$pattern.res" >/dev/null && echo "Error" >> "out/$pattern.res2"
grep '[Ee]rror' "$sav" >/dev/null && echo "Error" >> "out/$pattern.sav2"
- diff -u "out/$pattern.res2" "out/$pattern.sav2" > "out/$pattern.diff.sav2.log"
+ diff -u "out/$pattern.sav2" "out/$pattern.res2" > "out/$pattern.diff.sav.log"
if [ "$?" == 0 ]; then
return 2
else
# Result
pattern=$1
description=$2
+ pack=$3
SAV=""
NSAV=""
FIXME=""
NSOSO=""
SOSOF=""
NSOSOF=""
+ echo >>$xml "<testcase classname='$pack' name='$description'>"
for sav in "sav/$engine/$pattern.res" "sav/$pattern.res" "sav/$pattern.sav"; do
compare_to_result "$pattern" "$sav"
case "$?" in
else
echo "[======= fail out/$pattern.res $NSAV =======]"
fi
+ echo >>$xml "<error message='fail out/$pattern.res $NSAV'/>"
+ echo >>$xml "<system-out><![CDATA["
+ head >>$xml -n 50 out/$pattern.diff.sav.log
+ echo >>$xml "]]></system-out>"
nok="$nok $pattern"
echo "$ii" >> "$ERRLIST"
elif [ -n "$NFIXME" ]; then
else
echo "[======= changed out/$pattern.res $NFIXME ======]"
fi
+ echo >>$xml "<error message='changed out/$pattern.res $NFIXME'/>"
+ echo >>$xml "<system-out><![CDATA["
+ head >>$xml -n 50 out/$pattern.diff.sav.log
+ echo >>$xml "]]></system-out>"
nok="$nok $pattern"
echo "$ii" >> "$ERRLIST"
else
else
echo "[=== no sav ===] out/$pattern.res"
fi
+ echo >>$xml "<skipped/>"
+ echo >>$xml "<system-out><![CDATA["
+ cat >>$xml out/$pattern.res
+ echo >>$xml "]]></system-out>"
nos="$nos $pattern"
fi
+ if test -s out/$pattern.cmp.err; then
+ echo >>$xml "<system-err><![CDATA["
+ cat >>$xml out/$pattern.cmp.err
+ echo >>$xml "]]></system-err>"
+ fi
+ echo >>$xml "</testcase>"
}
need_skip()
else
echo "=> $2: [skip]"
fi
+ echo >>$xml "<testcase classname='$3' name='$2'><skipped/></testcase>"
return 0
fi
return 1
enginebinname=$engine
case $engine in
nitc) ;;
- nitg) ;;
+ nitg) OPT="--global $OPT";;
nitg-s) enginebinname=nitg; OPT="--separate $OPT";;
nitg-e) enginebinname=nitg; OPT="--erasure $OPT";;
nit) engine=niti ;;
ok=""
nok=""
todos=""
+xml="tests-$engine.xml"
+echo >$xml "<testsuites><testsuite>"
# CLEAN the out directory
rm -rf out/ 2>/dev/null
fi
f=`basename "$ii" .nit`
+ pack=`echo $ii | perl -p -e 's|^../([^/]*)/([a-zA-Z_]*).*|\1.\2| || s|^([a-zA-Z]*)[^_]*_([a-zA-Z]*).*|\1.\2| || s|\W*([a-zA-Z_]*).*|\1|'`
+
# Sould we skip the file for this engine?
- need_skip $f $f && continue
+ need_skip $f $f $pack && continue
tmp=${ii/../AA}
if [ "x$tmp" = "x$ii" ]; then
ff="out/$bf"
# Sould we skip the alternative for this engine?
- need_skip $bf $bf && continue
+ need_skip $bf $bf $pack && continue
test -z "$tap" && echo -n "=> $bf: "
if [ "$ERR" != 0 ]; then
test -z "$tap" && echo -n "! "
cat "$ff.compile.log" "$ff.cmp.err" > "$ff.res"
- process_result $bf $bf
+ process_result $bf $bf $pack
elif [ -x "./$ff.bin" ]; then
test -z "$tap" && echo -n ". "
# Execute
fi
cp "$ff.res" "$ff.res2"
cat "$ff.cmp.err" "$ff.err" "$ff.res2" > "$ff.res"
- process_result $bf $bf
+ process_result $bf $bf $pack
if [ -f "$f.args" ]; then
fargs=$f.args
args="$line"
bff=$bf"_args"$cptr
fff=$ff"_args"$cptr
+ name="$bf args $cptr"
# Sould we skip the input for this engine?
- need_skip $bff " args #$cptr" && continue
+ need_skip $bff " $name" $pack && continue
rm -rf "$fff.res" "$fff.err" "$fff.write" 2> /dev/null
if [ "x$verbose" = "xtrue" ]; then
echo ""
echo "NIT_NO_STACK=1 ./$ff.bin" $args
fi
- test -z "$tap" && echo -n "==> args #"$cptr " "
- sh -c "NIT_NO_STACK=1 $TIMEOUT ./$ff.bin ''$args < $inputs > $fff.res 2>$fff.err"
+ test -z "$tap" && echo -n "==> $name "
+ echo "./$ff.bin $args" > "./$fff.bin"
+ chmod +x "./$fff.bin"
+ sh -c "NIT_NO_STACK=1 $TIMEOUT ./$fff.bin < $inputs > $fff.res 2>$fff.err"
if [ "x$verbose" = "xtrue" ]; then
cat "$fff.res"
cat >&2 "$fff.err"
cp "$fff.res" "$fff.res2"
cat "$fff.err" "$fff.res2" > "$fff.res"
fi
- process_result $bff " args #$cptr"
+ process_result $bff " $name" $pack
done < $fargs
fi
else
test -z "$tap" && echo -n "! "
cat "$ff.cmp.err" > "$ff.res"
echo "Compilation error" > "$ff.res"
- process_result $bf "$bf"
+ process_result $bf "$bf" $pack
fi
done
done
mv $ERRLIST $ERRLIST_TARGET
fi
+echo >>$xml "</testsuite></testsuites>"
+
if [ -n "$nok" ]; then
exit 1
else