X-Git-Url: http://nitlanguage.org diff --git a/tests/tests.sh b/tests/tests.sh index 6c181f4..b10a75b 100755 --- a/tests/tests.sh +++ b/tests/tests.sh @@ -35,6 +35,35 @@ Usage: $e [options] modulenames END } +# $1 is the pattern of the test +# $2 is the file to compare to +# the result is: +# 0: if the file to compare to do not exists +# 1: if the file match +# 2: if the file match with soso +# 3: if the file do not match +function compare_to_result() +{ + local pattern="$1" + local sav="$2" + if [ ! -r "$sav" ]; then return 0; fi + diff -u "out/$pattern.res" "$sav" > "out/$pattern.diff.sav.log" + if [ "$?" == 0 ]; then + return 1 + fi + [ -z "$soso" ] && return 3 + sed '/[Ww]arning/d;/[Ee]rror/d' "out/$pattern.res" > "out/$pattern.res2" + 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" + if [ "$?" == 0 ]; then + return 2 + else + return 3 + fi +} + # As argument: the pattern used for the file function process_result() { @@ -51,46 +80,30 @@ function process_result() SOSOF="" NSOSOF="" for sav in "sav/$engine/$pattern.res" "sav/$pattern.res" "sav/$pattern.sav"; do - if [ -r "$sav" ]; then - diff -u "out/$pattern.res" "$sav" > "out/$pattern.diff.sav.log" - if [ "$?" == 0 ]; then - SAV="$sav" - else - NSAV="$sav" - fi - [ -z "$soso" ] && continue - sed '/[Ww]arning/d;/[Ee]rror/d' "out/$pattern.res" > "out/$pattern.res2" - 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" - if [ "$?" == 0 ]; then - SOSO="$sav" - else - NSOSO="$sav" - fi - fi + compare_to_result "$pattern" "$sav" + case "$?" in + 0) + ;; # no file + 1) + SAV="$sav" ;; + 2) + SOSO="$sav" ;; + 3) + NSAV="$sav";; + esac done for sav in "sav/$engine/fixme/$pattern.res" "sav/fixme/$pattern.res" "sav/$pattern.fail"; do - if [ -r "$sav" ]; then - diff -u "out/$pattern.res" "$sav" > "out/$pattern.diff.fail.log" - if [ "$?" == 0 ]; then - FIXME="$sav" - else - NFIXME="$sav" - fi - [ -z "$soso" ] && continue - sed '/[Ww]arning/d;/[Ee]rror/d' "out/$pattern.res" > "out/$pattern.res2" - sed '/[Ww]arning/d;/[Ee]rror/d' "$sav" > "out/$pattern.fail2" - grep '[Ee]rror' "out/$pattern.res" >/dev/null && echo "Error" >> "out/$pattern.res2" - grep '[Ee]rror' "$sav" >/dev/null && echo "Error" >> "out/$pattern.fail2" - diff -u "out/$pattern.res2" "out/$pattern.fail2" > "out/$pattern.diff.fail2.log" - if [ "$?" == 0 ]; then - SOSOF="$sav" - else - NSOSOF="$sav" - fi - fi + compare_to_result "$pattern" "$sav" + case "$?" in + 0) + ;; # no file + 1) + FIXME="$sav" ;; + 2) + SOSOF="$sav" ;; + 3) + NFIXME="$sav";; + esac done grep 'NOT YET IMPLEMENTED' "out/$pattern.res" >/dev/null NYI="$?" @@ -109,7 +122,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" @@ -130,7 +143,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" @@ -160,7 +173,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" @@ -216,6 +229,8 @@ enginebinname=$engine case $engine in nitc) ;; nitg) ;; + nitg-s) enginebinname=nitg; OPT="--separate $OPT";; + nitg-e) enginebinname=nitg; OPT="--erasure $OPT";; nit) engine=niti ;; niti) enginebinname=nit ;; esac @@ -314,7 +329,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="" @@ -322,7 +336,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 "./$ff.bin" $args < "$inputs" > "$ff.res" 2>"$ff.err" if [ "x$verbose" = "xtrue" ]; then cat "$ff.res" cat >&2 "$ff.err" @@ -332,9 +346,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 @@ -366,7 +379,8 @@ 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" done < $fargs @@ -385,7 +399,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 @@ -399,7 +413,7 @@ if [ -n "$nos" ]; then echo "no sav: $nos" fi if [ -n "$todos" ]; then - echo "todos: $todos" + echo "todo/fixme: $todos" fi # write $ERRLIST