diff --git a/Makefile.coq.local b/Makefile.coq.local index d8617a6043840f36aebbbcb76b9bd4be91b916ce..df95f6d5109e1a0aea5739e813b619dff9dade1f 100644 --- a/Makefile.coq.local +++ b/Makefile.coq.local @@ -8,14 +8,20 @@ test: $(TESTFILES:.v=.vo) .PHONY: test 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. +# Also egrep errors if it doesn't match anything, we have to ignore that. +# Oh Unix... $(TESTFILES:.v=.vo): %.vo: %.v $(VFILES:.v=.vo) $(SHOW)COQTOP [test] $< $(HIDE)TEST="$$(basename -s .v $<)" && \ TMPFILE="$$(mktemp)" && \ $(TIMER) $(COQ_TEST) $(TIMING_ARG) $(COQFLAGS) $(COQLIBS) -load-vernac-source $< $(TIMING_EXTRA) > "$$TMPFILE" && \ - (diff -u "tests/$$TEST.ref" "$$TMPFILE" || (rm "tests/$$TEST.vo" "$$TMPFILE" && exit 1)) && \ - rm "$$TMPFILE" + ($(REF_FILTER) < "$$TMPFILE" > "$$TMPFILE.filtered" || true) && \ + (diff -u "tests/$$TEST.ref" "$$TMPFILE.filtered" || rm -f "tests/$$TEST.vo" "$$TMPFILE" "$$TMPFILE.filtered") && \ + rm "$$TMPFILE" "$$TMPFILE.filtered" # a target, for convenience sake, to create the .ref file with the current output ref: $(TESTFILES:.v=.ref) @@ -24,4 +30,6 @@ ref: $(TESTFILES:.v=.ref) tests/%.ref: tests/%.v $(VFILES:.v=.vo) $(SHOW)COQTOP [ref] $< $(HIDE)TEST="$$(basename -s .v $<)" && \ - $(TIMER) $(COQ_TEST) $(TIMING_ARG) $(COQFLAGS) $(COQLIBS) -load-vernac-source $< $(TIMING_EXTRA) > "tests/$$TEST.ref" + $(TIMER) $(COQ_TEST) $(TIMING_ARG) $(COQFLAGS) $(COQLIBS) -load-vernac-source $< $(TIMING_EXTRA) > "tests/$$TEST.ref" && \ + ($(REF_FILTER) < "tests/$$TEST.ref" > "tests/$$TEST.ref.filtered" || true) && \ + mv "tests/$$TEST.ref.filtered" "tests/$$TEST.ref"