find_modules: test with various awks
authorMarko Kreen <markokr@gmail.com>
Fri, 4 Jan 2013 07:51:05 +0000 (09:51 +0200)
committerMarko Kreen <markokr@gmail.com>
Fri, 4 Jan 2013 07:51:05 +0000 (09:51 +0200)
find_modules.sh
test/awk_test.sh [new file with mode: 0755]

index 5018f76e0e351dc0d7a8bc32cf465d069e05f369..c364346d2cd1b04b93bd2976bbfcda69581a4986 100755 (executable)
@@ -17,6 +17,8 @@ test -f "$top/usual/base.h" || {
 shift
 test -n "$1" || exit 0
 
+test -n "$AWK" || AWK=awk
+
 # return uniq module names, exclude already found ones
 grep_usual() {
   excl='excl["config"]=1'
@@ -31,7 +33,7 @@ BEGIN { '"$excl"' }
   m = substr($0, p1+1, p2-p1-1);
   if (!excl[m]) print m;
 }'
-  awk "$prog" "$@" | sort -u
+  $AWK "$prog" "$@" | sort -u
 }
 
 # return module filename globs
diff --git a/test/awk_test.sh b/test/awk_test.sh
new file mode 100755 (executable)
index 0000000..cf4b3aa
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+
+# test find_modules.sh vs. various awks
+
+# random awks that may be around
+awk_list="mawk gawk nawk oawk"
+awk_list="$awk_list heirloom-nawk heirloom-oawk"
+awk_list="$awk_list original-awk plan9-awk"
+
+fmod=../find_modules.sh
+dir=fmod_test
+usual_dir=..
+
+rm -rf $dir
+mkdir $dir
+
+ok=1
+for f in *.c; do
+  printf "$f .. "
+
+  # write reference with default 'awk'
+  ref=$dir/$f.awk
+  $fmod $usual_dir $f > $ref 2>&1
+
+  for a in $awk_list; do
+    which $a > /dev/null || continue
+    printf "$a "
+    out=$dir/$f.$a
+    AWK=$a \
+    $fmod $usual_dir $f > $out 2>&1
+    cmp -s $ref $out || {
+      printf "(FAIL) "
+      ok=0
+    }
+  done
+  echo ""
+done
+
+if test $ok = 1; then
+  echo "All OK"
+else
+  echo "FAIL: not all tests passed"
+  exit 1
+fi
+