############################################ # Preamble ############################################ CATALA_OPTS?= CATALA=dune exec --no-buffer --no-print-director ../src/catala.exe -- Interpret $(CATALA_OPTS) pass_tests: $(wildcard */*.out) reset_tests: $(subst .out,.in,$(wildcard */*.out)) # Forces all the tests to be redone .FORCE: %.run: .FORCE $(CATALA) $(word 1,$(subst ., ,$*)).catala -s $(word 3,$(subst ., ,$*)) # Usage: make /.catala..out # This rule runs the test and compares against the expected output. If the # Catala program is /.catala and the scope to run is # , then the expected output should be in the file # /.catala..out %.out: .FORCE @$(CATALA) --unstyled $(word 1,$(subst ., ,$*)).catala -s $(word 3,$(subst ., ,$*)) 2>&1 | \ colordiff -u -b $@ - || { echo "[FAIL $*]"; exit 1; } @echo "[PASS $*]" # Usage: make /.catala..in # This rule runs the test /.catala, prints its output and # writes this output to the /.catala..out file %.in: .FORCE @-$(CATALA) $(word 1,$(subst ., ,$*)).catala -s $(word 3,$(subst ., ,$*)) @-$(CATALA) --unstyled $(word 1,$(subst ., ,$*)).catala -s $(word 3,$(subst ., ,$*)) \ > $*.out 2>&1