# Set lang do default to avoid failed tests because of locale
export LANG=C
+export NIT_TESTING=true
usage()
{
else
echo "[fixme] out/$pattern.res $FIXME"
fi
- ok="$ok $pattern"
+ todos="$todos $pattern"
elif [ -n "$SOSO" ]; then
if [ -n "$tap" ]; then
echo "ok - $description # SOSO"
else
echo "[fixme soso] out/$pattern.res $SOSOF"
fi
- ok="$ok $pattern"
+ todos="$todos $pattern"
elif [ -n "$NSAV" ]; then
if [ -n "$tap" ]; then
echo "not ok - $description"
need_skip()
{
test "$noskip" = true && return 1
- if grep "$engine" "sav/$1.skip" >/dev/null 2>&1 || echo "$1" | grep -f "$engine.skip" >/dev/null 2>&1; then
+ if echo "$1" | grep -f "$engine.skip" >/dev/null 2>&1; then
((tapcount=tapcount+1))
if [ -n "$tap" ]; then
echo "ok - $2 # skip"
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 ;;
niti) enginebinname=nit ;;
esac
# Set NIT_DIR if needed
[ -z "$NIT_DIR" ] && export NIT_DIR=..
+if sh -c "timelimit echo" 1>/dev/null 2>&1; then
+ TIMEOUT="timelimit -t 600"
+elif sh -c "timeout 1 echo" 1>/dev/null 2>&1; then
+ TIMEOUT="timeout 600s"
+else
+ echo "No timelimit or timeout command detected. Tests may hang :("
+fi
# Mark to distinguish files among tests
# MARK=
echo ""
echo $NITC --no-color $OPT -o "$ff.bin" "$i" "$includes"
fi
- NIT_NO_STACK=1 $NITC --no-color $OPT -o "$ff.bin" "$i" $includes 2> "$ff.cmp.err" > "$ff.compile.log"
+ NIT_NO_STACK=1 $TIMEOUT $NITC --no-color $OPT -o "$ff.bin" "$i" $includes 2> "$ff.cmp.err" > "$ff.compile.log"
ERR=$?
if [ "x$verbose" = "xtrue" ]; then
cat "$ff.compile.log"
cat "$ff.compile.log" "$ff.cmp.err" > "$ff.res"
process_result $bf $bf
elif [ -x "./$ff.bin" ]; then
- cp "$ff.cmp.err" "$ff.res"
test -z "$tap" && echo -n ". "
# Execute
args=""
echo ""
echo "NIT_NO_STACK=1 ./$ff.bin" $args
fi
- NIT_NO_STACK=1 "./$ff.bin" $args < "$inputs" >> "$ff.res" 2>"$ff.err"
+ NIT_NO_STACK=1 $TIMEOUT "./$ff.bin" $args < "$inputs" > "$ff.res" 2>"$ff.err"
if [ "x$verbose" = "xtrue" ]; then
cat "$ff.res"
cat >&2 "$ff.err"
elif [ -d "$ff.write" ]; then
LANG=C /bin/ls -F $ff.write >> "$ff.res"
fi
- if [ -s "$ff.err" ]; then
- cat "$ff.err" >> "$ff.res"
- fi
+ cp "$ff.res" "$ff.res2"
+ cat "$ff.cmp.err" "$ff.err" "$ff.res2" > "$ff.res"
process_result $bf $bf
if [ -f "$f.args" ]; then
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" && 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 ./$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"
LANG=C /bin/ls -F $fff.write >> "$fff.res"
fi
if [ -s "$fff.err" ]; then
- cat "$fff.err" >> "$fff.res"
+ cp "$fff.res" "$fff.res2"
+ cat "$fff.err" "$fff.res2" > "$fff.res"
fi
- process_result $bff " args #$cptr"
+ process_result $bff " $name"
done < $fargs
fi
else
echo "# ok:" `echo $ok | wc -w`
echo "# not ok:" `echo $nok | wc -w`
echo "# no sav:" `echo $nos | wc -w`
- echo "# todos:" `echo $todos | wc -w`
+ echo "# todo/fixme:" `echo $todos | wc -w`
exit
fi
echo "no sav: $nos"
fi
if [ -n "$todos" ]; then
- echo "todos: $todos"
+ echo "todo/fixme: $todos"
fi
# write $ERRLIST