Makefile revision 1.15
1# $NetBSD: Makefile,v 1.15 2005/06/01 17:17:34 sjg Exp $ 2# 3# Unit tests for make(1) 4# The main targets are: 5# 6# all: run all the tests 7# test: run 'all', capture output and compare to expected results 8# accept: move generated output to expected results 9# 10# Adding a test case. 11# Each feature should get its own set of tests in its own suitably 12# named makefile which should be added to SUBFILES to hook it in. 13# 14 15.MAIN: all 16 17UNIT_TESTS:= ${.PARSEDIR} 18 19# Simple sub-makefiles - we run them as a black box 20# keep the list sorted. 21SUBFILES= \ 22 cond1 \ 23 modmatch \ 24 modorder \ 25 modts \ 26 modword \ 27 posix \ 28 ternary \ 29 varcmd 30 31all: ${SUBFILES} 32 33# the tests are actually done with sub-makes. 34.PHONY: ${SUBFILES} 35${SUBFILES}: 36 -@${.MAKE} -k -f ${UNIT_TESTS}/$@ 37 38clean: 39 rm -f *.out *.fail *.core 40 41.include <bsd.obj.mk> 42 43TEST_MAKE?= ${.MAKE} 44 45# The driver. 46# We always pretend .MAKE was called 'make' 47# and strip ${.CURDIR}/ from the output 48# and replace anything after 'stopped in' with unit-tests 49# so the results can be compared. 50test: 51 @echo "${TEST_MAKE} -f ${MAKEFILE} > ${.TARGET}.out 2>&1" 52 @cd ${.OBJDIR} && ${TEST_MAKE} -f ${MAKEFILE} 2>&1 | \ 53 sed -e 's,^${TEST_MAKE:T}:,make:,' \ 54 -e '/stopped/s, /.*, unit-tests,' \ 55 -e 's,${.CURDIR}/,,g' \ 56 -e 's,${UNIT_TESTS}/,,g' > ${.TARGET}.out || { \ 57 tail ${.TARGET}.out; mv ${.TARGET}.out ${.TARGET}.fail; exit 1; } 58 diff -u ${UNIT_TESTS}/${.TARGET}.exp ${.TARGET}.out 59 60accept: 61 mv test.out ${.CURDIR}/test.exp 62 63