aat

git mirror of https://ccx.te2000.cz/bzr/aat
git clone https://ccx.te2000.cz/git/aat
Log | Files | Refs | README

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:
A.bzrignore | 1+
Maat_data.test | 4++--
Aaattest | 34++++++++++++++++++++++++++++++++++
Mdata.awk | 15+++++++++++++--
Minputs | 2+-
Mtestloop | 3++-
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;;