xref: /freebsd/share/mk/plain.test.mk (revision 38f0b757fd84d17d0fc24739a7cda160c4516d81)
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 overriden 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	cat ${.ALLSRC} | sed ${PLAIN_TESTS_SH_SED_${_T}} >${.TARGET}.tmp
61	chmod +x ${.TARGET}.tmp
62	mv ${.TARGET}.tmp ${.TARGET}
63.endfor
64.endif
65