commit f29e932fd58f268316423f6937d7e0e20e4ea48a
parent 1d467244ca4b0479a65b2ee9665833c1011a3099
Author: Jan Pobrislo <ccx@wpr.cz>
Date: Fri, 4 Sep 2015 00:01:00 +0200
fix returncode for find(), make directories for tests with Makefile
Diffstat:
6 files changed, 53 insertions(+), 6 deletions(-)
diff --git a/.bzrignore b/.bzrignore
@@ -0,0 +1 @@
+tests
diff --git a/aat_data.test b/aat_data.test
@@ -1,6 +1,6 @@
-./inputs './bin/aat @1@ @2@'
+./aattest tests/data1
<<<
-@awk ./data.awk
+@awk ../../data.awk
|END{
Hello {<name>}!
|}
diff --git a/aattest b/aattest
@@ -0,0 +1,34 @@
+#!/bin/zsh
+: ${delim:=---}
+: ${AWK:=awk}
+: ${SED:=sed}
+
+dst=$1
+bin=$0:h:a/bin
+[[ -d $dst ]] && rm -r $dst
+mkdir -p $dst || exit $?
+
+while IFS= read line; do
+ [[ $line == $delim ]] && break
+ printf '%s\n' $line >>$dst/test.aat || exit $?
+done
+
+cat >$dst/test.data || exit $?
+cat >$dst/Makefile <<EOF || exit $?
+test.out: test.data test.qawk
+ awk -f test.qawk DEBUG=\$(DEBUG) test.data >test.out
+
+test.qawk: test.awk
+ awk -f $bin/query.awk <test.awk >test.qawk
+
+test.awk: test.mac
+ sed -f $bin/aat_macros.sed <test.mac >test.awk
+
+test.mac: test.aat
+ AAT_DEP=test.dep awk -f $bin/aat.awk test.aat >test.mac
+
+clean:
+ rm -f test.out test.qawk test.awk test.mac
+EOF
+
+gmake -sC $dst && cat $dst/test.out
diff --git a/data.awk b/data.awk
@@ -56,7 +56,7 @@ state == 1 {
m = match($0, ident_re)
varname = substr($0, m, RLENGTH)
V[varname] = substr($0, m+1+RLENGTH)
- if(DEBUG) printf "got scalar: %s ⇒ %s (%d)\n", varname, V[varname], m
+ if(DEBUG) printf "got scalar: %s ⇒ %s (%d)\n", varname, V[varname], m >"/dev/stderr"
next
}
@@ -131,9 +131,10 @@ function find(varname, i, n, names, values, loopvar, looprow, prefix) {
return 0
}
found = V[varname]
+ return 1
}
-function get(varname, result) {
+function get(varname) {
if(!find(varname)) {
print "error: undefined variable '"$varname"'" >"/dev/stderr"
exit 1
@@ -147,3 +148,13 @@ function get(varname, result) {
function or_(a, b) {
return a ? a : b
}
+
+END {
+ if(DEBUG) {
+ print "--- loaded keys ---" >"/dev/stderr"
+ for(key in V)
+ printf("%s\t→%s←\t", key, V[key]) >"/dev/stderr"
+ printf(">> %d →%s←\n", find(key), found) >"/dev/stderr"
+ print "-------------------" >"/dev/stderr"
+ }
+}
diff --git a/inputs b/inputs
@@ -6,7 +6,7 @@ while IFS= read line; do
if [[ $line == $delim ]]; then
inputs+=( "$(mktemp)" )
else
- printf '%s\n' >>$inputs[-1]
+ printf '%s\n' $line >>$inputs[-1]
fi
done
diff --git a/testloop b/testloop
@@ -21,13 +21,14 @@ trigger_check() {
ret=0; show=1
case $fname in
(*.py[co]) ret=1;;
- (*.sw[px]) ret=1;;
+ (*.sw[px]) ret=1; show=0;;
(*.swpx) ret=1;;
(*.tmp) ret=1;;
(*'~') ret=1;;
(*__pycache__*) ret=1;;
(*/bin/[0-9]*) ret=1;;
(*/.hypothesis*) ret=1; show=0;;
+ (*/tests/*) ret=1; show=0;;
(*/test_error.sql) ret=1;;
(*/commlog/*) ret=1; show=0;;
(*/.bzr/*) ret=1; show=0;;