16532e7bfSRui Paulo# 2f5fd950eSJulio Merino# You must include bsd.test.mk instead of this file from your Makefile. 3f5fd950eSJulio Merino# 46532e7bfSRui Paulo# Logic to build and install plain test programs. A plain test programs it not 56532e7bfSRui Paulo# supposed to use any specific testing framework: all it does is run some code 66532e7bfSRui Paulo# and report the test's pass or fail status via a 0 or 1 exit code. 76532e7bfSRui Paulo 8f5fd950eSJulio Merino.if !target(__<bsd.test.mk>__) 9f5fd950eSJulio Merino.error plain.test.mk cannot be included directly. 10f5fd950eSJulio Merino.endif 116532e7bfSRui Paulo 126532e7bfSRui Paulo# List of C, C++ and shell test programs to build. 136532e7bfSRui Paulo# 146532e7bfSRui Paulo# Programs listed here are built according to the semantics of bsd.prog.mk for 156532e7bfSRui Paulo# PROGS, PROGS_CXX and SCRIPTS, respectively. 166532e7bfSRui Paulo# 176532e7bfSRui Paulo# Test programs registered in this manner are set to be installed into TESTSDIR 18f324fafcSEitan Adler# (which should be overridden by the Makefile) and are not required to provide a 196532e7bfSRui Paulo# manpage. 206532e7bfSRui PauloPLAIN_TESTS_C?= 216532e7bfSRui PauloPLAIN_TESTS_CXX?= 226532e7bfSRui PauloPLAIN_TESTS_SH?= 236532e7bfSRui Paulo 246532e7bfSRui Paulo.if !empty(PLAIN_TESTS_C) 256532e7bfSRui PauloPROGS+= ${PLAIN_TESTS_C} 266532e7bfSRui Paulo_TESTS+= ${PLAIN_TESTS_C} 276532e7bfSRui Paulo.for _T in ${PLAIN_TESTS_C} 286532e7bfSRui PauloBINDIR.${_T}= ${TESTSDIR} 296532e7bfSRui PauloMAN.${_T}?= # empty 30a2b5b37cSJulio MerinoSRCS.${_T}?= ${_T}.c 316532e7bfSRui PauloTEST_INTERFACE.${_T}= plain 326532e7bfSRui Paulo.endfor 336532e7bfSRui Paulo.endif 346532e7bfSRui Paulo 356532e7bfSRui Paulo.if !empty(PLAIN_TESTS_CXX) 366532e7bfSRui PauloPROGS_CXX+= ${PLAIN_TESTS_CXX} 376532e7bfSRui Paulo_TESTS+= ${PLAIN_TESTS_CXX} 386532e7bfSRui Paulo.for _T in ${PLAIN_TESTS_CXX} 396532e7bfSRui PauloBINDIR.${_T}= ${TESTSDIR} 406532e7bfSRui PauloMAN.${_T}?= # empty 41a2b5b37cSJulio MerinoSRCS.${_T}?= ${_T}.cc 426532e7bfSRui PauloTEST_INTERFACE.${_T}= plain 436532e7bfSRui Paulo.endfor 446532e7bfSRui Paulo.endif 456532e7bfSRui Paulo 46*44f736c3SKyle Evans.if !empty(PLAIN_TESTS_PORCH) 47*44f736c3SKyle EvansSCRIPTS+= ${PLAIN_TESTS_PORCH:S/$/.orch/} 48*44f736c3SKyle Evans_TESTS+= ${PLAIN_TESTS_PORCH} 49*44f736c3SKyle Evans.for _T in ${PLAIN_TESTS_PORCH} 50*44f736c3SKyle EvansSCRIPTSDIR_${_T}.orch= ${TESTSDIR} 51*44f736c3SKyle Evans 52*44f736c3SKyle EvansTEST_INTERFACE.${_T}= plain 53*44f736c3SKyle EvansTEST_METADATA.${_T}+= required_programs="porch" 54*44f736c3SKyle Evans.endfor 55*44f736c3SKyle Evans.endif 56*44f736c3SKyle Evans 576532e7bfSRui Paulo.if !empty(PLAIN_TESTS_SH) 586532e7bfSRui PauloSCRIPTS+= ${PLAIN_TESTS_SH} 596532e7bfSRui Paulo_TESTS+= ${PLAIN_TESTS_SH} 606532e7bfSRui Paulo.for _T in ${PLAIN_TESTS_SH} 616532e7bfSRui PauloSCRIPTSDIR_${_T}= ${TESTSDIR} 626532e7bfSRui PauloTEST_INTERFACE.${_T}= plain 639e684a3aSJulio MerinoCLEANFILES+= ${_T} ${_T}.tmp 649e684a3aSJulio Merino# TODO(jmmv): It seems to me that this SED and SRC functionality should 659e684a3aSJulio Merino# exist in bsd.prog.mk along the support for SCRIPTS. Move it there if 669e684a3aSJulio Merino# this proves to be useful within the tests. 679e684a3aSJulio MerinoPLAIN_TESTS_SH_SED_${_T}?= # empty 689e684a3aSJulio MerinoPLAIN_TESTS_SH_SRC_${_T}?= ${_T}.sh 699e684a3aSJulio Merino${_T}: ${PLAIN_TESTS_SH_SRC_${_T}} 70db572ab6SEnji Cooper.if empty(PLAIN_TESTS_SH_SED_${_T}) 71db572ab6SEnji Cooper cat ${.ALLSRC:N*Makefile*} >${.TARGET}.tmp 72db572ab6SEnji Cooper.else 7364dc0245SJulio Merino cat ${.ALLSRC:N*Makefile*} \ 7464dc0245SJulio Merino | sed ${PLAIN_TESTS_SH_SED_${_T}} >${.TARGET}.tmp 75db572ab6SEnji Cooper.endif 769e684a3aSJulio Merino chmod +x ${.TARGET}.tmp 779e684a3aSJulio Merino mv ${.TARGET}.tmp ${.TARGET} 786532e7bfSRui Paulo.endfor 796532e7bfSRui Paulo.endif 80