summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/tests/output/Makefile
blob: 938625ab03867a8add658d5d55423a9c1fb5bc4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Automated testing to see if the output of Asymptote scripts changes when the
# program is modified.

# How to call asy from the tests/output/name.out directory
ASY=../../../asy

TESTS=$(basename $(wildcard *.asy))

# This command performs the testing on all scripts.
diff: $(TESTS:=.diff)

# This builds the reference copies of the output using a trusted version of asy
ref: $(TESTS:=.ref)

$(TESTS:=.ref) $(TESTS:=.out): %: 
	@echo Generating $@
	@rm -rf $@
	@mkdir $@
	@cd $@; \
	$(ASY) -keep ../$(basename $@) \
	    >$(basename $@).stdout 2>$(basename $@).stderr; \
	ls >$(basename $@).ls; \
	rm -f *.dvi *.pdf *.gif *.jpg *.jpeg *.png

# Ignore lines with timestamps of the form hh:mm, since the time changes between
# runs.  This regex is fairly broad and it may need to be narrowed.
$(TESTS:=.diff): %.diff: %.out
	diff -I "[0-9][0-9]:[0-9][0-9]" -u $(@:.diff=.ref) $(@:.diff=.out)

clean:
	rm -rf *.out

# The reference copies should only be built at the start, or when the behaviour
# of Asymptote is intentionally changed, so they are not usually removed by make
# clean.
veryclean: clean
	rm -rf *.ref

# This tells make to build every dependency from scratch, ignoring the dates on
# files.
.PHONY: $(TESTS:=.ref) $(TESTS:=.out) $(TESTS:=.diff) diff ref clean veryclean