Thun/tests/stan/Makefile

45 lines
1.2 KiB
Makefile

# The general command line is, e.g.:
#
# gmake -j
#
# To make all the tests, e.g.:
#
# gmake -j --always-make
#
# (The the g- prefix indicates that this is GNU make or compatible,
# the ``-j`` switch tells make to use multiple jobs to take advantage of
# multi-core systems.)
#
# For the explanation of how this test system works see:
# https://chrismorgan.info/blog/make-and-git-diff-test-harness/
# Set JOY to point to the joy interpreter to test.
#JOY=joy
TESTS != ls *.joy
STDOUTS = $(TESTS:.joy=.stdout)
GIT_OPTS = --exit-code
GIT_OPTS += --src-prefix=expected/ --dst-prefix=actual/
GIT_OPTS += --name-only
# N.B. I'm using FreeBSD with GNU coreutils, so gtouch rather than touch
# (for that --date opt.) It's not ideal to hard-code the g- prefix here,
# I know, but it was faster than rewriting the command to use FreeBSD's
# touch as I already had coreutils installed for other reasons. If you
# are using GNU coreutils natively on your system then you can remove the
# g- prefix here.
TOUCH = touch --date=@0
.PHONY: test
test: $(STDOUTS)
%.stdout: %.joy
@$(JOY) < $< > $@ 2> $*.stderr || ($(TOUCH) $@; false)
@git diff $(GIT_OPTS) $@ $*.stderr || ($(TOUCH) $@; false)