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