X-Git-Url: http://nitlanguage.org diff --git a/tests/tests.sh b/tests/tests.sh index bde0f38..f470498 100755 --- a/tests/tests.sh +++ b/tests/tests.sh @@ -19,6 +19,7 @@ # Set lang do default to avoid failed tests because of locale export LANG=C +export NIT_TESTING=true usage() { @@ -122,7 +123,7 @@ function process_result() 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" @@ -143,7 +144,7 @@ function process_result() 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" @@ -173,7 +174,7 @@ function process_result() 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" @@ -228,7 +229,9 @@ done 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 @@ -239,6 +242,13 @@ 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= @@ -315,7 +325,7 @@ END 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" @@ -327,7 +337,6 @@ END 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="" @@ -335,7 +344,7 @@ END 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" @@ -345,9 +354,8 @@ END 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 @@ -358,17 +366,20 @@ END 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" @@ -379,9 +390,10 @@ END 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 @@ -398,7 +410,7 @@ if [ -n "$tap" ]; then 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 @@ -412,7 +424,7 @@ if [ -n "$nos" ]; then echo "no sav: $nos" fi if [ -n "$todos" ]; then - echo "todos: $todos" + echo "todo/fixme: $todos" fi # write $ERRLIST