From 88ad25e42cc733f0f4b52cb8b5ade10f71588e91 Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Wed, 30 May 2012 12:02:14 -0300 Subject: [PATCH] add regression test infrastructure --- b2/Makefile | 12 ++++++++++ b2/test/Common | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100755 b2/test/Common diff --git a/b2/Makefile b/b2/Makefile index 119884b..5e526a6 100644 --- a/b2/Makefile +++ b/b2/Makefile @@ -93,3 +93,15 @@ spotless: clean try: $(VALGRIND) ./boom HIERARCHY -c CHAR -x CURR -p PROVIDER -i INV \ -s SUBST + +# ----- Tests ----------------------------------------------------------------- + +test tests: all + LANG= sh -c \ + 'passed=0 && cd test && \ + for n in [a-z]*; do \ + [ $$n != core ] && SCRIPT=$$n . ./$$n; done; \ + echo "Passed all $$passed tests"' + +valgrind: + VALGRIND="valgrind -q" $(MAKE) tests diff --git a/b2/test/Common b/b2/test/Common new file mode 100755 index 0000000..bb52920 --- /dev/null +++ b/b2/test/Common @@ -0,0 +1,64 @@ +#!/bin/bash -x +# +# Common - Elements shared by all regression tests for BOOM +# +# Written 2012 by Werner Almesberger +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# + + +run_boom() +{ + args="-N file-h <(sed -n '/^!-/q;p' _in)" + for n in c i x p s b X; do + if grep ^!-$n _in >/dev/null; then + args="$args -N file-$n" + args="$args -$n <(sed -n '1,/^!-$n/d;/^!-/q;p' _in)" + fi + done + eval $VALGRIND ../boom "$args" "$@" +} + + +tst() +{ + echo -n "$1: " 1>&2 + shift + cat >_in + run_boom "$@" >_out 2>&1 || { + echo FAILED "($SCRIPT)" 1>&2 + cat _out + exit 1 + } +} + + +tst_fail() +{ + echo -n "$1: " 1>&2 + shift + cat >_in + run_boom "$@" >_out 2>&1 && { + echo FAILED "($SCRIPT)" 1>&2 + cat _out + exit 1 + } + rm -f _in +} + + +expect() +{ + diff -u - "$@" _out >_diff || { + echo FAILED "($SCRIPT)" 1>&2 + cat _diff 1>&2 + exit 1 + } + echo PASSED 1>&2 + rm -f _in _out _diff + passed=`expr ${passed:-0} + 1` +}