Experimental steps towards TAP and test parallelization.
authorEric S. Raymond <esr@thyrsus.com>
Wed, 10 Mar 2021 20:29:37 +0000 (15:29 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Wed, 10 Mar 2021 21:56:39 +0000 (16:56 -0500)
tests/Makefile

index fc4801fc11e4378b6542f30c3d250f37d64117e5..8883fe90833cf1af3fbd260d1734775ca7a959aa 100644 (file)
@@ -98,4 +98,26 @@ regress:
        done; \
        rm -f scratch.tmp /tmp/regress$$$$
 
+# Steps towards TAP and parallelization.
+# There's a blocker in that the log tests can't be run concurrently
+# due to isssues with colliding save files.
+
+# The TAP filter. Only affects presentation of the test suite messages
+TAPCONSUMER=tappy
+
+# Fall back to safety if our declared TAP consumer does not exist.
+# This is helpful in the CI environment, where it wiuld be better for
+# the logfiles to carry the raw TAP messages. 
+TAPFILTER=$(shell command -v $(TAPCONSUMER) || echo cat)
+
+RUN_TARGETS=$(TESTLOADS:%=run-regress-%)
+$(RUN_TARGETS): run-regress-%: %.log
+       @(test=$(<:.log=); legend=$$(sed -n '/^## /s///p' <"$<" 2>/dev/null || echo "(no description)"); \
+       OPTS=`sed -n /#options:/s///p $<`; \
+       $(advent) $$OPTS <$< | tapdiffer "$<: $${legend}" "$${test}.chk")
+
+tap: savecheck count $(RUN_TARGETS)
+count:
+       @echo 1..$(words $(RUN_TARGETS))
+
 # end