3 # Logic to build and install TAP-compliant test programs.
5 # This is provided to support existing tests in the FreeBSD source tree
6 # (particularly those coming from tools/regression/) that comply with the
7 # Test Anything Protocol. It should not be used for new tests.
11 # List of C, C++ and shell test programs to build.
13 # Programs listed here are built according to the semantics of bsd.prog.mk for
14 # PROGS, PROGS_CXX and SCRIPTS, respectively.
16 # Test programs registered in this manner are set to be installed into TESTSDIR
17 # (which should be overriden by the Makefile) and are not required to provide a
24 # Perl interpreter to use for test programs written in this language.
25 TAP_PERL_INTERPRETER?= /usr/local/bin/perl
27 .if !empty(TAP_TESTS_C)
28 PROGS+= ${TAP_TESTS_C}
29 _TESTS+= ${TAP_TESTS_C}
30 .for _T in ${TAP_TESTS_C}
31 BINDIR.${_T}= ${TESTSDIR}
34 TEST_INTERFACE.${_T}= tap
38 .if !empty(TAP_TESTS_CXX)
39 PROGS_CXX+= ${TAP_TESTS_CXX}
40 _TESTS+= ${TAP_TESTS_CXX}
41 .for _T in ${TAP_TESTS_CXX}
42 BINDIR.${_T}= ${TESTSDIR}
45 TEST_INTERFACE.${_T}= tap
49 .if !empty(TAP_TESTS_PERL)
50 SCRIPTS+= ${TAP_TESTS_PERL}
51 _TESTS+= ${TAP_TESTS_PERL}
52 .for _T in ${TAP_TESTS_PERL}
53 SCRIPTSDIR_${_T}= ${TESTSDIR}
54 TEST_INTERFACE.${_T}= tap
55 TEST_METADATA.${_T}+= required_programs="${TAP_PERL_INTERPRETER}"
56 CLEANFILES+= ${_T} ${_T}.tmp
57 # TODO(jmmv): It seems to me that this SED and SRC functionality should
58 # exist in bsd.prog.mk along the support for SCRIPTS. Move it there if
59 # this proves to be useful within the tests.
60 TAP_TESTS_PERL_SED_${_T}?= # empty
61 TAP_TESTS_PERL_SRC_${_T}?= ${_T}.pl
62 ${_T}: ${TAP_TESTS_PERL_SRC_${_T}}
64 echo '#! ${TAP_PERL_INTERPRETER}'; \
65 cat ${.ALLSRC} | sed ${TAP_TESTS_PERL_SED_${_T}}; \
67 chmod +x ${.TARGET}.tmp
68 mv ${.TARGET}.tmp ${.TARGET}
72 .if !empty(TAP_TESTS_SH)
73 SCRIPTS+= ${TAP_TESTS_SH}
74 _TESTS+= ${TAP_TESTS_SH}
75 .for _T in ${TAP_TESTS_SH}
76 SCRIPTSDIR_${_T}= ${TESTSDIR}
77 TEST_INTERFACE.${_T}= tap
78 CLEANFILES+= ${_T} ${_T}.tmp
79 # TODO(jmmv): It seems to me that this SED and SRC functionality should
80 # exist in bsd.prog.mk along the support for SCRIPTS. Move it there if
81 # this proves to be useful within the tests.
82 TAP_TESTS_SH_SED_${_T}?= # empty
83 TAP_TESTS_SH_SRC_${_T}?= ${_T}.sh
84 ${_T}: ${TAP_TESTS_SH_SRC_${_T}}
85 cat ${.ALLSRC} | sed ${TAP_TESTS_SH_SED_${_T}} >${.TARGET}.tmp
86 chmod +x ${.TARGET}.tmp
87 mv ${.TARGET}.tmp ${.TARGET}
91 .include <bsd.test.mk>