#!/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.$$