1 1.9 jmmv # $NetBSD: bsd.test.mk,v 1.9 2010/06/18 10:10:57 jmmv Exp $ 2 1.1 jmmv # 3 1.1 jmmv 4 1.4 drochner .include <bsd.init.mk> 5 1.4 drochner 6 1.1 jmmv TESTSBASE= /usr/tests 7 1.1 jmmv 8 1.1 jmmv _TESTS= # empty 9 1.1 jmmv 10 1.7 jmmv .if defined(TESTS_C) 11 1.7 jmmv PROGS+= ${TESTS_C} 12 1.7 jmmv LDADD+= -latf-c 13 1.7 jmmv . for _T in ${TESTS_C} 14 1.7 jmmv BINDIR.${_T}= ${TESTSDIR} 15 1.7 jmmv MAN.${_T}?= # empty 16 1.7 jmmv _TESTS+= ${_T} 17 1.7 jmmv . endfor 18 1.7 jmmv .endif 19 1.7 jmmv 20 1.1 jmmv .if defined(TESTS_CXX) 21 1.1 jmmv PROGS_CXX+= ${TESTS_CXX} 22 1.7 jmmv LDADD+= -latf-c++ -latf-c 23 1.1 jmmv . for _T in ${TESTS_CXX} 24 1.1 jmmv BINDIR.${_T}= ${TESTSDIR} 25 1.1 jmmv MAN.${_T}?= # empty 26 1.1 jmmv _TESTS+= ${_T} 27 1.1 jmmv . endfor 28 1.1 jmmv .endif 29 1.1 jmmv 30 1.1 jmmv .if defined(TESTS_SH) 31 1.1 jmmv 32 1.1 jmmv . for _T in ${TESTS_SH} 33 1.1 jmmv SCRIPTS+= ${_T} 34 1.1 jmmv SCRIPTSDIR_${_T}= ${TESTSDIR} 35 1.1 jmmv 36 1.1 jmmv _TESTS+= ${_T} 37 1.1 jmmv CLEANFILES+= ${_T} ${_T}.tmp 38 1.1 jmmv 39 1.1 jmmv TESTS_SH_SRC_${_T}?= ${_T}.sh 40 1.8 jmmv ${_T}: ${TESTS_SH_SRC_${_T}} 41 1.1 jmmv ${_MKTARGET_BUILD} 42 1.8 jmmv echo '#! /usr/bin/atf-sh' >${.TARGET}.tmp 43 1.8 jmmv cat ${.ALLSRC} >>${.TARGET}.tmp 44 1.8 jmmv chmod +x ${.TARGET}.tmp 45 1.1 jmmv mv ${.TARGET}.tmp ${.TARGET} 46 1.1 jmmv . endfor 47 1.1 jmmv .endif 48 1.1 jmmv 49 1.5 jmmv .if !defined(NOATFFILE) 50 1.1 jmmv FILES+= Atffile 51 1.1 jmmv FILESDIR_Atffile= ${TESTSDIR} 52 1.1 jmmv .include <bsd.files.mk> 53 1.5 jmmv .endif 54 1.1 jmmv 55 1.7 jmmv .if !empty(SCRIPTS) || !empty(PROGS) || !empty(PROGS_CXX) 56 1.1 jmmv . include <bsd.prog.mk> 57 1.1 jmmv .endif 58 1.9 jmmv 59 1.9 jmmv # 60 1.9 jmmv # Definition of the "make test" target and supporting variables. 61 1.9 jmmv # 62 1.9 jmmv # This target, by necessity, can only work for native builds (i.e. a NetBSD 63 1.9 jmmv # host building a release for the same system). The target runs ATF, which is 64 1.9 jmmv # not in the toolchain, and the tests execute code built for the target host. 65 1.9 jmmv # 66 1.9 jmmv # Due to the dependencies of the binaries built by the source tree and how they 67 1.9 jmmv # are used by tests, it is highly possible for a execution of "make test" to 68 1.9 jmmv # report bogus results unless the new binaries are put in place. 69 1.9 jmmv # 70 1.9 jmmv 71 1.9 jmmv TESTS_PATH += ${DESTDIR}/bin ${DESTDIR}/sbin ${DESTDIR}/usr/bin ${DESTDIR}/usr/sbin 72 1.9 jmmv TESTS_LD_LIBRARY_PATH += ${DESTDIR}/lib ${DESTDIR}/usr/lib 73 1.9 jmmv 74 1.9 jmmv TESTS_ENV += LD_LIBRARY_PATH=${TESTS_LD_LIBRARY_PATH:tW:S/ /:/g} 75 1.9 jmmv TESTS_ENV += PATH=${TESTS_PATH:tW:S/ /:/g} 76 1.9 jmmv 77 1.9 jmmv _TESTS_FIFO = ${.OBJDIR}/atf-run.fifo 78 1.9 jmmv _TESTS_LOG = ${.OBJDIR}/atf-run.log 79 1.9 jmmv CLEANFILES += ${_TESTS_FIFO} ${_TESTS_LOG} 80 1.9 jmmv 81 1.9 jmmv .PHONY: test 82 1.9 jmmv .if ${TESTSDIR} == ${TESTSBASE} 83 1.9 jmmv # Forbid this case. It is likely to cause false positives/negatives and it 84 1.9 jmmv # does not cover all the tests (e.g. it misses testing software in external). 85 1.9 jmmv test: 86 1.9 jmmv @echo "*** Sorry, you cannot use make test from src/tests. Install the" 87 1.9 jmmv @echo "*** tests into their final location and run them from /usr/tests" 88 1.9 jmmv @false 89 1.9 jmmv .else 90 1.9 jmmv test: 91 1.9 jmmv @echo "*** WARNING: make test is experimental" 92 1.9 jmmv @echo "***" 93 1.9 jmmv @echo "*** Using this test does not preclude you from running the tests" 94 1.9 jmmv @echo "*** installed in /usr/tests. This test run may raise false" 95 1.9 jmmv @echo "*** positives and/or false negatives." 96 1.9 jmmv @echo 97 1.9 jmmv @cd ${DESTDIR}${TESTSDIR}; \ 98 1.9 jmmv mkfifo ${_TESTS_FIFO}; \ 99 1.9 jmmv cat ${_TESTS_FIFO} | tee ${_TESTS_LOG} | \ 100 1.9 jmmv ${TESTS_ENV} ${DESTDIR}/usr/bin/atf-report & \ 101 1.9 jmmv ${TESTS_ENV} ${DESTDIR}/usr/bin/atf-run >>${_TESTS_FIFO}; \ 102 1.9 jmmv result=$${?}; \ 103 1.9 jmmv wait; \ 104 1.9 jmmv rm -f ${_TESTS_FIFO}; \ 105 1.9 jmmv echo; \ 106 1.9 jmmv echo "*** The verbatim output of atf-run has been saved to ${_TESTS_LOG}"; \ 107 1.9 jmmv echo "*** Once again, note that "make test" is unsupported."; \ 108 1.9 jmmv test $${result} -eq 0 109 1.9 jmmv .endif 110