From 8ced9df08fdfc293023b9ef624d7b5bb8c4fb3c9 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Tue, 22 Jun 2010 21:57:23 -0400 Subject: [PATCH] Added a command-line test runner named test/run --- test/run | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 test/run diff --git a/test/run b/test/run new file mode 100755 index 00000000..b0da1b6e --- /dev/null +++ b/test/run @@ -0,0 +1,45 @@ +#!/bin/bash + +LEDGER=ledger +ARGS="--args-only --no-color --columns=80" + +output_only=false +update_test=false +if [[ "$1" == "-v" ]]; then + output_only=true + shift 1 +elif [[ "$1" == "-u" ]]; then + update_test=true + shift 1 +fi + +COMMAND=$(perl -ne 'print unless /^<<>>/ or /^(===|>>>2)/ .. eof();' $1 > /tmp/expected.$$ +fi + +perl -ne 'print unless 1 .. /^<<>>/ .. eof();' $1 \ + | eval "$LEDGER -f - -o /tmp/received.$$ $ARGS $COMMAND" + +if [[ $update_test == true ]]; then + if [[ -f /tmp/received.$$ ]]; then + perl -ne 'print if 1 .. /^>>>/;' $1 > /tmp/command.$$ + perl -ne 'print if /^(===|>>>2)/ .. eof();' $1 > /tmp/epilog.$$ + cat /tmp/command.$$ /tmp/received.$$ /tmp/epilog.$$ > replace.$$ + mv replace.$$ $1 + /bin/rm -f /tmp/command.$$ /tmp/received.$$ /tmp/epilog.$$ + echo Test updated. + fi + +elif [[ $output_only == false ]]; then + if [[ -f /tmp/expected.$$ && -f /tmp/received.$$ ]]; then + diff -w -U3 /tmp/expected.$$ /tmp/received.$$ && echo Test passed. + fi +else + if [[ -f /tmp/received.$$ ]]; then + cat /tmp/received.$$ + fi +fi + +/bin/rm -f /tmp/expected.$$ /tmp/received.$$