1# $FreeBSD$ 2# 3# You must include bsd.test.mk instead of this file from your Makefile. 4# 5# Logic to build and install plain test programs. A plain test programs it not 6# supposed to use any specific testing framework: all it does is run some code 7# and report the test's pass or fail status via a 0 or 1 exit code. 8 9.if !target(__<bsd.test.mk>__) 10.error plain.test.mk cannot be included directly. 11.endif 12 13# List of C, C++ and shell test programs to build. 14# 15# Programs listed here are built according to the semantics of bsd.prog.mk for 16# PROGS, PROGS_CXX and SCRIPTS, respectively. 17# 18# Test programs registered in this manner are set to be installed into TESTSDIR 19# (which should be overridden by the Makefile) and are not required to provide a 20# manpage. 21PLAIN_TESTS_C?= 22PLAIN_TESTS_CXX?= 23PLAIN_TESTS_SH?= 24 25.if !empty(PLAIN_TESTS_C) 26PROGS+= ${PLAIN_TESTS_C} 27_TESTS+= ${PLAIN_TESTS_C} 28.for _T in ${PLAIN_TESTS_C} 29BINDIR.${_T}= ${TESTSDIR} 30MAN.${_T}?= # empty 31SRCS.${_T}?= ${_T}.c 32TEST_INTERFACE.${_T}= plain 33.endfor 34.endif 35 36.if !empty(PLAIN_TESTS_CXX) 37PROGS_CXX+= ${PLAIN_TESTS_CXX} 38_TESTS+= ${PLAIN_TESTS_CXX} 39.for _T in ${PLAIN_TESTS_CXX} 40BINDIR.${_T}= ${TESTSDIR} 41MAN.${_T}?= # empty 42SRCS.${_T}?= ${_T}.cc 43TEST_INTERFACE.${_T}= plain 44.endfor 45.endif 46 47.if !empty(PLAIN_TESTS_SH) 48SCRIPTS+= ${PLAIN_TESTS_SH} 49_TESTS+= ${PLAIN_TESTS_SH} 50.for _T in ${PLAIN_TESTS_SH} 51SCRIPTSDIR_${_T}= ${TESTSDIR} 52TEST_INTERFACE.${_T}= plain 53CLEANFILES+= ${_T} ${_T}.tmp 54# TODO(jmmv): It seems to me that this SED and SRC functionality should 55# exist in bsd.prog.mk along the support for SCRIPTS. Move it there if 56# this proves to be useful within the tests. 57PLAIN_TESTS_SH_SED_${_T}?= # empty 58PLAIN_TESTS_SH_SRC_${_T}?= ${_T}.sh 59${_T}: ${PLAIN_TESTS_SH_SRC_${_T}} 60.if empty(PLAIN_TESTS_SH_SED_${_T}) 61 cat ${.ALLSRC:N*Makefile*} >${.TARGET}.tmp 62.else 63 cat ${.ALLSRC:N*Makefile*} \ 64 | sed ${PLAIN_TESTS_SH_SED_${_T}} >${.TARGET}.tmp 65.endif 66 chmod +x ${.TARGET}.tmp 67 mv ${.TARGET}.tmp ${.TARGET} 68.endfor 69.endif 70