clean:
rm -f *.o advent advent.html advent.6 adventure.data
+check:
+ cd tests; $(MAKE) --quiet
+
# Requires asciidoc and xsltproc/docbook stylesheets.
.asc.6:
a2x --doctype manpage --format manpage $<
--- /dev/null
+# Test-suite makefile for reposurgeon
+
+# By setting the REPOSURGEON environment variable and using -e
+# a different implementation can be plugged in to the tests.
+
+# Use absolute path so tests that change working directory still use
+# scripts from parent directory. Note that using $PWD seems to fail
+# here under Gitlab's CI environment.
+PATH := $(realpath ..):$(realpath .):${PATH}
+
+# Defeat annoying behavior under Mac OS X - builtin echo doesn't do -n
+ECHO := /bin/echo
+
+default:
+ make -e --quiet all
+
+all: listcheck regress
+ @echo "=== No diff output is good news."
+
+.SUFFIXES: .chk
+
+clean:
+ rm -fr *~
+
+# Show summary lines for all tests.
+testlist:
+ @grep --text '^##' *.log
+listcheck:
+ @for f in *.log; do \
+ if ( head -3 $$f | grep --text -q '^ *##' ); then :; else echo "$$f needs a description"; fi; \
+ done
+
+# General regression testing of commands and output; look at the *.log and
+# corresponding *.chk files to see which tests this runs.
+TESTLOADS := $(shell ls -1 *.log | sed '/.log/s///')
+buildregress:
+ @for file in $(TESTLOADS); do \
+ echo "Remaking $${file}.chk"; \
+ $(REPOSURGEON) advent <$${file}.log >$${file}.chk \
+ 2>&1 || exit 1; \
+ done
+regress:
+ @for file in $(TESTLOADS); do \
+ $(ECHO) -n " $${file} "; grep --text '##' $${file}.log || echo ' ## (no description)'; \
+ if advent $${file}.log >/tmp/regress$$$$ 2>&1; \
+ then diff --text -u $${file}.chk /tmp/regress$$$$ || exit 1; \
+ else echo "*** Nonzero return status on $${file}!"; exit 1; fi \
+ done
+ @rm -f /tmp/regress$$$$
+
+# end