# run tests with main build real-all: test # the test suite TESTFILES=$(wildcard tests/*.v) test: $(TESTFILES:.v=.vo) .PHONY: test COQ_TEST=$(COQTOP) $(COQDEBUG) -batch -test-mode COQ_BROKEN= # Can't use pipes because that discards error codes and dash provides no way to control that. # Also egrep errors if it doesn't match anything, we have to ignore that. # Oh Unix... REF_FILTER=egrep -v '(^Welcome to Coq|^Skipping rcfile loading.$$)' tests/.coqdeps.d: $(TESTFILES) $(SHOW)'COQDEP TESTFILES' $(HIDE)$(COQDEP) -dyndep var $(COQMF_COQLIBS_NOML) $^ $(redir_if_ok) -include tests/.coqdeps.d $(TESTFILES:.v=.vo): %.vo: %.v $(if $(MAKE_REF),,%.ref) $(SHOW)$(if $(MAKE_REF),COQTEST [ref],$(if $(COQ_BROKEN),COQTEST [ignored],COQTEST)) $< $(HIDE)TEST="$$(basename -s .v $<)" && \ TMPFILE="$$(mktemp)" && \ $(TIMER) $(COQ_TEST) $(COQFLAGS) $(COQLIBS) -load-vernac-source $< > "$$TMPFILE" && \ ($(REF_FILTER) < "$$TMPFILE" > "$$TMPFILE.filtered" || true) && \ $(if $(MAKE_REF), \ mv "$$TMPFILE.filtered" "tests/$$TEST.ref", \ $(if $(COQ_BROKEN), \ true, \ diff -u "tests/$$TEST.ref" "$$TMPFILE.filtered" \ ) \ ) && \ rm -f "$$TMPFILE" "$$TMPFILE.filtered" && \ touch $@