diff --git a/hledger/test/errors/Makefile b/hledger/test/errors/Makefile index 59a14d240..b026d16d4 100644 --- a/hledger/test/errors/Makefile +++ b/hledger/test/errors/Makefile @@ -1,8 +1,10 @@ HLEDGER ?= hledger -ERRORSCRIPTS=*.j *.timeclock # *.timedot *.csv +# j, csv, timeclock, timedot files which are executable +ERRORSCRIPTS := $$(find . -perm +rwx \( -name '*.j' -or -name '*.csv' -or -name '*.timeclock' -or -name '*.timedot' -or -name '*.sh' \)) -# Check error messages of hledger in $PATH against current error tests. +# Check error messages of $HLEDGER against current error tests. +# A few tests (csvstdinrules.sh) may use "hledger" in $PATH instead of $HLEDGER. test: @printf "Running error message tests with hledger $$($(HLEDGER) --version | awk '{print $$2}'):\n" shelltest -w $(HLEDGER) *.test diff --git a/hledger/test/errors/hledger2shelltest b/hledger/test/errors/hledger2shelltest index 2ed455fa6..f23d4d976 100755 --- a/hledger/test/errors/hledger2shelltest +++ b/hledger/test/errors/hledger2shelltest @@ -21,14 +21,18 @@ TEST=$(echo "$SCRIPT" | sed -E 's/\.[^.]+$//').test { head -1 "$SCRIPT" | sed -E "s%#!/usr/bin/env -S (.*)%\$\$\$ \1 $SCRIPT%" printf ">>>2 /" -"./$SCRIPT" 2>&1 | sed -E \ - -e 's%(hledger: Error: ).*/\./(.*)%\1.*\2%' \ - -e 's%/%\\/%g' \ +./"$SCRIPT" 2>&1 | sed -E \ -e 's/\^/\\^/g' \ -e 's/\$/\\$/g' \ + -e 's/\+/\\+/g' \ + -e 's/\*/\\*/g' \ + -e 's/\[/\\[/g' \ + -e 's/\]/\\]/g' \ -e 's/\(/\\(/g' \ -e 's/\)/\\)/g' \ -e 's/\|/\\|/g' \ + -e 's%(hledger: Error: ).*/\./(.*)%\1.*\2%' \ + -e 's%/%\\/%g' \ | head -c 300 printf "/\n>>>= 1\n" } >"$TEST"