#---*- Makefile -*-------------------------------------------------------
#$Author: saulius $
#$Date: 2019-03-07 15:48:47 +0000 (Thu, 07 Mar 2019) $
#$Revision: 190 $
#$URL: svn+ssh://saulius-grazulis.lt/home/saulius/svn-repositories/makefiles/sl-tests/Makelocal-sl-tests $
#------------------------------------------------------------------------

TEST_DIR = tests/sgem-programs
TEST_OUT = tests/outputs

TEST_PROGS = $(wildcard ${TEST_DIR}/*.sl)
TEST_DIFFS = ${TEST_PROGS:${TEST_DIR}/%.sl=${TEST_OUT}/%.diff}
TEST_OUTPS = ${TEST_PROGS:${TEST_DIR}/%.sl=${TEST_OUT}/%.out}

SLOPT = -I .//

.PHONY: all test tests check clean out outputs distclean cleanAll

all: tests

#------------------------------------------------------------------------------

tests: ${TEST_DIFFS}

out outputs: ${TEST_OUTPS}

${TEST_OUT}/%.out: ${TEST_DIR}/%.sl
	-@test -f $@ || echo "$@:"
	-@test -f $@ || \
	sl ${SLOPT} $< 2>&1 | tee $@

${TEST_OUT}/%.diff: ${TEST_DIR}/%.sl ${TEST_OUT}/%.out
	-@printf "%-30s " "$*:"
	@sl ${SLOPT} $< 2>&1 | diff - ${word 2,$^} > $@; \
	if [ $$? = 0 ]; then echo "OK"; else echo "FAILED:"; cat $@; fi

clean:
	rm -f ${TEST_DIFFS}

distclean cleanAll: clean

#------------------------------------------------------------------------------

.PHONY: listdiff failed

listdiff failed:
	@find ${TEST_OUT} -name '*.diff' -size +1 \
	| xargs --no-run-if-empty ls -l
