Skip to content
Snippets Groups Projects
Commit c0ca4709 authored by Ralf Jung's avatar Ralf Jung
Browse files

implement proper dependency tracking for test files

parent 33f0c279
No related branches found
No related tags found
No related merge requests found
# run tests after real-all # run tests with main build
post-all:: test real-all: test
# the test suite # the test suite
TESTFILES=$(wildcard tests/*.v) TESTFILES=$(wildcard tests/*.v)
...@@ -8,25 +8,32 @@ test: $(TESTFILES:.v=.vo) ...@@ -8,25 +8,32 @@ test: $(TESTFILES:.v=.vo)
.PHONY: test .PHONY: test
COQ_TEST=$(COQTOP) $(COQDEBUG) -batch -test-mode COQ_TEST=$(COQTOP) $(COQDEBUG) -batch -test-mode
REF_FILTER=egrep -v '(^Welcome to Coq|^Skipping rcfile loading.$$)'
# Can't use pipes because that discards error codes and dash provides no way to control that. # 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. # Also egrep errors if it doesn't match anything, we have to ignore that.
# Oh Unix... # Oh Unix...
REF_FILTER=egrep -v '(^Welcome to Coq|^Skipping rcfile loading.$$)'
tests/.coqdeps.d: $(TESTFILES)
$(SHOW)'COQDEP [tests]'
$(HIDE)$(COQDEP) -dyndep var $(COQMF_COQLIBS_NOML) $^ $(redir_if_ok)
-include tests/.coqdeps.d
$(TESTFILES:.v=.vo): %.vo: %.v $(VFILES:.v=.vo) $(TESTFILES:.v=.vo):
$(SHOW)COQTOP [test] $< $(SHOW)COQTOP [test] $<
$(HIDE)TEST="$$(basename -s .v $<)" && \ $(HIDE)TEST="$$(basename -s .v $<)" && \
TMPFILE="$$(mktemp)" && \ TMPFILE="$$(mktemp)" && \
$(TIMER) $(COQ_TEST) $(TIMING_ARG) $(COQFLAGS) $(COQLIBS) -load-vernac-source $< $(TIMING_EXTRA) > "$$TMPFILE" && \ $(TIMER) $(COQ_TEST) $(TIMING_ARG) $(COQFLAGS) $(COQLIBS) -load-vernac-source $< $(TIMING_EXTRA) > "$$TMPFILE" && \
($(REF_FILTER) < "$$TMPFILE" > "$$TMPFILE.filtered" || true) && \ ($(REF_FILTER) < "$$TMPFILE" > "$$TMPFILE.filtered" || true) && \
(diff -u "tests/$$TEST.ref" "$$TMPFILE.filtered" || rm -f "tests/$$TEST.vo" "$$TMPFILE" "$$TMPFILE.filtered") && \ (diff -u "tests/$$TEST.ref" "$$TMPFILE.filtered" || rm -f "tests/$$TEST.vo" "$$TMPFILE" "$$TMPFILE.filtered") && \
rm "$$TMPFILE" "$$TMPFILE.filtered" rm "$$TMPFILE" "$$TMPFILE.filtered" && \
touch $@
# a target, for convenience sake, to create the .ref file with the current output # a target, for convenience sake, to create the .ref file with the current output
ref: $(TESTFILES:.v=.ref) ref: $(TESTFILES:.v=.ref)
.PHONY: ref .PHONY: ref
# coqdep doesn't emit dependencies for these so we just depend on everything
tests/%.ref: tests/%.v $(VFILES:.v=.vo) tests/%.ref: tests/%.v $(VFILES:.v=.vo)
$(SHOW)COQTOP [ref] $< $(SHOW)COQTOP [ref] $<
$(HIDE)TEST="$$(basename -s .v $<)" && \ $(HIDE)TEST="$$(basename -s .v $<)" && \
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment