dev: tests: errors: generate more robust tests more robustly (#1436)
This commit is contained in:
parent
1a08baccc4
commit
45981832a6
@ -15,11 +15,22 @@ tests:
|
||||
for f in $(TESTJOURNALS); do make -s $$(basename $$f .j).test; done
|
||||
make -s test
|
||||
|
||||
# Generate a shelltest. Run the test script/journal to generate the error message.
|
||||
# Since the error will contain an absolute file path, we must:
|
||||
# 1. remove most of the file path
|
||||
# 2. test with a (multiline) regex rather than literal text
|
||||
# 3. backslash-quote most forward slashes in error messages
|
||||
# 4. neutralise any remaining problematic error text (eg in parseable-regexps.test)
|
||||
%.test: %.j
|
||||
head -1 $< | sed -E 's%#!/usr/bin/env -S (.*)%$$$$$$ \1 $<%' >$@
|
||||
echo ">>>2" >>$@
|
||||
shelltest $@ | awk '/Got stderr/{f=1;next}/Expected exit code/{f=0}f' >>$@
|
||||
echo ">>>=1" >>$@
|
||||
printf ">>>2 /" >>$@
|
||||
-./$< 2>&1 | sed -E \
|
||||
-e 's%(hledger: Error: ).*/\./(.*)%\1.*\2%' \
|
||||
-e 's%/%\\/%g' \
|
||||
-e 's%alias \\/\(\\/%alias \\/\\(\\/%' \
|
||||
-e 's%compiled: \(%compiled: \\(%' \
|
||||
>>$@
|
||||
printf "/\n>>>= 1" >>$@
|
||||
|
||||
readme: $(TESTJOURNALS)
|
||||
@printf "Updating README.md with the error messages of hledger $$(hledger --version | awk '{print $$2}')\n"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user