tests: fix test_extern.nit for 64bits
[nit.git] / tests / tests.sh
index 5b32a7d..4a0d6a3 100755 (executable)
@@ -128,29 +128,44 @@ ok=""
 nok=""
 
 for ii in "$@"; do
+       if [ ! -f $ii ]; then
+               echo "File '$ii' does not exist."
+               continue
+       fi
+
+       tmp=${ii/../AA}
+       if [ "x$tmp" = "x$ii" ]; then
+               oincludes="-I . -I ../lib/standard -I ../lib/standard/collection"
+       else
+               oincludes=""
+       fi
+
        for alt in "" `sed -n 's/.*#!*\(alt[0-9]*\)#.*/\1/p' "$ii" | sort -u`; do
                f=`basename "$ii" .nit`
                d=`dirname "$ii"`
                ff="$f"
                i="$ii"
+               includes="$oincludes"
+
                if [ "x$alt" != "x" ]; then
                        test -d alt || mkdir -p alt
                        i="alt/${f}_$alt.nit"
                        ff="${ff}_$alt"
                        sed "s/#$alt#//g;/#!$alt#/d" "$ii" > "$i"
+                       includes="$includes -I alt"
                fi
                ff="$ff$MARK"
 
                echo -n "=> $i: "
 
-               rm "$ff.res" "$ff.err" "$ff.write" "$ff.bin" 2> /dev/null
+               rm -rf "$ff.res" "$ff.err" "$ff.write" "$ff.bin" 2> /dev/null
 
                # Compile
                if [ "x$verbose" = "xtrue" ]; then
                        echo ""
-                       echo $NITC $OPT -o "$ff.bin" "$i" -I . -I alt -I ../lib/standard
+                       echo $NITC $OPT -o "$ff.bin" "$i" "$includes"
                fi
-               $NITC $OPT -o "$ff.bin" "$i" -I . -I alt -I ../lib/standard 2> "$ff.cmp.err" > "$ff.compile.log"
+               $NITC $OPT -o "$ff.bin" "$i" $includes 2> "$ff.cmp.err" > "$ff.compile.log"
                ERR=$?
                if [ "x$verbose" = "xtrue" ]; then
                        cat "$ff.compile.log"
@@ -180,6 +195,8 @@ for ii in "$@"; do
                        fi
                        if [ -f "$ff.write" ]; then
                                cat "$ff.write" >> "$ff.res"
+                       elif [ -d "$ff.write" ]; then
+                               ls -F $ff.write >> "$ff.res"
                        fi
                        if [ -s "$ff.err" ]; then
                                cat "$ff.err" >> "$ff.res"
@@ -189,7 +206,6 @@ for ii in "$@"; do
                        if [ -f "$f.args" ]; then
                                fargs=$f.args
                                cptr=0
-                               cat $fargs |
                                while read line; do
                                        ((cptr=cptr+1))
                                        args=$line
@@ -210,12 +226,14 @@ for ii in "$@"; do
                                        fi
                                        if [ -f "$fff.write" ]; then
                                                cat "$fff.write" >> "$fff.res"
+                                       elif [ -d "$fff.write" ]; then
+                                               ls -F $fff.write >> "$fff.res"
                                        fi
                                        if [ -s "$fff.err" ]; then
                                                cat "$fff.err" >> "$fff.res"
                                        fi
                                        process_result $fff
-                               done
+                               done < $fargs
                        fi
                else
                        echo -n "! "