plain.test.mk revision 263161
1257099Srpaulo# $FreeBSD: head/share/mk/plain.test.mk 263161 2014-03-14 08:56:19Z jmmv $ 2257099Srpaulo# 3263161Sjmmv# You must include bsd.test.mk instead of this file from your Makefile. 4263161Sjmmv# 5257099Srpaulo# Logic to build and install plain test programs. A plain test programs it not 6257099Srpaulo# supposed to use any specific testing framework: all it does is run some code 7257099Srpaulo# and report the test's pass or fail status via a 0 or 1 exit code. 8257099Srpaulo 9263161Sjmmv.if !target(__<bsd.test.mk>__) 10263161Sjmmv.error plain.test.mk cannot be included directly. 11263161Sjmmv.endif 12257099Srpaulo 13257099Srpaulo# List of C, C++ and shell test programs to build. 14257099Srpaulo# 15257099Srpaulo# Programs listed here are built according to the semantics of bsd.prog.mk for 16257099Srpaulo# PROGS, PROGS_CXX and SCRIPTS, respectively. 17257099Srpaulo# 18257099Srpaulo# Test programs registered in this manner are set to be installed into TESTSDIR 19257099Srpaulo# (which should be overriden by the Makefile) and are not required to provide a 20257099Srpaulo# manpage. 21257099SrpauloPLAIN_TESTS_C?= 22257099SrpauloPLAIN_TESTS_CXX?= 23257099SrpauloPLAIN_TESTS_SH?= 24257099Srpaulo 25257099Srpaulo.if !empty(PLAIN_TESTS_C) 26257099SrpauloPROGS+= ${PLAIN_TESTS_C} 27257099Srpaulo_TESTS+= ${PLAIN_TESTS_C} 28257099Srpaulo.for _T in ${PLAIN_TESTS_C} 29257099SrpauloBINDIR.${_T}= ${TESTSDIR} 30257099SrpauloMAN.${_T}?= # empty 31258298SjmmvSRCS.${_T}?= ${_T}.c 32257099SrpauloTEST_INTERFACE.${_T}= plain 33257099Srpaulo.endfor 34257099Srpaulo.endif 35257099Srpaulo 36257099Srpaulo.if !empty(PLAIN_TESTS_CXX) 37257099SrpauloPROGS_CXX+= ${PLAIN_TESTS_CXX} 38257099Srpaulo_TESTS+= ${PLAIN_TESTS_CXX} 39257099Srpaulo.for _T in ${PLAIN_TESTS_CXX} 40257099SrpauloBINDIR.${_T}= ${TESTSDIR} 41257099SrpauloMAN.${_T}?= # empty 42258298SjmmvSRCS.${_T}?= ${_T}.cc 43257099SrpauloTEST_INTERFACE.${_T}= plain 44257099Srpaulo.endfor 45257099Srpaulo.endif 46257099Srpaulo 47257099Srpaulo.if !empty(PLAIN_TESTS_SH) 48257099SrpauloSCRIPTS+= ${PLAIN_TESTS_SH} 49257099Srpaulo_TESTS+= ${PLAIN_TESTS_SH} 50257099Srpaulo.for _T in ${PLAIN_TESTS_SH} 51257099SrpauloSCRIPTSDIR_${_T}= ${TESTSDIR} 52257099SrpauloTEST_INTERFACE.${_T}= plain 53258552SjmmvCLEANFILES+= ${_T} ${_T}.tmp 54258552Sjmmv# TODO(jmmv): It seems to me that this SED and SRC functionality should 55258552Sjmmv# exist in bsd.prog.mk along the support for SCRIPTS. Move it there if 56258552Sjmmv# this proves to be useful within the tests. 57258552SjmmvPLAIN_TESTS_SH_SED_${_T}?= # empty 58258552SjmmvPLAIN_TESTS_SH_SRC_${_T}?= ${_T}.sh 59258552Sjmmv${_T}: ${PLAIN_TESTS_SH_SRC_${_T}} 60258552Sjmmv cat ${.ALLSRC} | sed ${PLAIN_TESTS_SH_SED_${_T}} >${.TARGET}.tmp 61258552Sjmmv chmod +x ${.TARGET}.tmp 62258552Sjmmv mv ${.TARGET}.tmp ${.TARGET} 63257099Srpaulo.endfor 64257099Srpaulo.endif 65