Add the automatic generation of Kyuafile files.
These files are generated from bsd.test.mk because kyua is able to run test programs implemented using different libraries/frameworks. In order to make this possible, this change also extends the various *.test.mk file to explicitly indicate the interface of every test program. Submitted by: Julio Merino jmmv google.com MFC after: 2 weeks
This commit is contained in:
parent
4050b6a73f
commit
ac33783cd3
@ -38,31 +38,37 @@ ATFFILE?= auto
|
||||
|
||||
.if !empty(ATF_TESTS_C)
|
||||
PROGS+= ${ATF_TESTS_C}
|
||||
_TESTS+= ${ATF_TESTS_C}
|
||||
.for _T in ${ATF_TESTS_C}
|
||||
BINDIR.${_T}= ${TESTSDIR}
|
||||
MAN.${_T}?= # empty
|
||||
SRCS.${_T}?= ${_T}.c
|
||||
DPADD.${_T}+= ${LIBATF_C}
|
||||
LDADD.${_T}+= -latf-c
|
||||
TEST_INTERFACE.${_T}= atf
|
||||
.endfor
|
||||
.endif
|
||||
|
||||
.if !empty(ATF_TESTS_CXX)
|
||||
PROGS_CXX+= ${ATF_TESTS_CXX}
|
||||
PROGS+= ${ATF_TESTS_CXX}
|
||||
_TESTS+= ${ATF_TESTS_CXX}
|
||||
.for _T in ${ATF_TESTS_CXX}
|
||||
BINDIR.${_T}= ${TESTSDIR}
|
||||
MAN.${_T}?= # empty
|
||||
SRCS.${_T}?= ${_T}${CXX_SUFFIX:U.cc}
|
||||
DPADD.${_T}+= ${LIBATF_CXX} ${LIBATF_C}
|
||||
LDADD.${_T}+= -latf-c++ -latf-c
|
||||
TEST_INTERFACE.${_T}= atf
|
||||
.endfor
|
||||
.endif
|
||||
|
||||
.if !empty(ATF_TESTS_SH)
|
||||
SCRIPTS+= ${ATF_TESTS_SH}
|
||||
_TESTS+= ${ATF_TESTS_SH}
|
||||
.for _T in ${ATF_TESTS_SH}
|
||||
SCRIPTSDIR_${_T}= ${TESTSDIR}
|
||||
TEST_INTERFACE.${_T}= atf
|
||||
CLEANFILES+= ${_T} ${_T}.tmp
|
||||
ATF_TESTS_SH_SRC_${_T}?= ${_T}.sh
|
||||
${_T}: ${ATF_TESTS_SH_SRC_${_T}}
|
||||
|
@ -33,6 +33,23 @@ TESTSUITE?= FreeBSD
|
||||
# SUBDIR for directories that may contain helper binaries and/or data files.
|
||||
TESTS_SUBDIRS?=
|
||||
|
||||
# Knob to control the handling of the Kyuafile for this Makefile.
|
||||
#
|
||||
# If 'yes', a Kyuafile exists in the source tree and is installed into
|
||||
# TESTSDIR.
|
||||
#
|
||||
# If 'auto', a Kyuafile is automatically generated based on the list of test
|
||||
# programs built by the Makefile and is installed into TESTSDIR. This is the
|
||||
# default and is sufficient in the majority of the cases.
|
||||
#
|
||||
# If 'no', no Kyuafile is installed.
|
||||
KYUAFILE?= auto
|
||||
|
||||
# List of all tests being built. This variable is internal should not be
|
||||
# defined by the Makefile. The various *.test.mk modules extend this variable
|
||||
# as needed.
|
||||
_TESTS?=
|
||||
|
||||
.if !empty(TESTS_SUBDIRS)
|
||||
SUBDIR+= ${TESTS_SUBDIRS}
|
||||
.endif
|
||||
@ -47,6 +64,33 @@ WITHOUT_MAN=yes
|
||||
PROG_VARS+= BINDIR
|
||||
PROGS_TARGETS+= install
|
||||
|
||||
.if ${KYUAFILE:tl} != "no"
|
||||
FILES+= Kyuafile
|
||||
FILESDIR_Kyuafile= ${TESTSDIR}
|
||||
|
||||
.if ${KYUAFILE:tl} == "auto"
|
||||
CLEANFILES+= Kyuafile Kyuafile.tmp
|
||||
|
||||
Kyuafile: Makefile
|
||||
@{ \
|
||||
echo '-- Automatically generated by bsd.test.mk.'; \
|
||||
echo; \
|
||||
echo 'syntax(2)'; \
|
||||
echo; \
|
||||
echo 'test_suite("${TESTSUITE}")'; \
|
||||
echo; \
|
||||
} >Kyuafile.tmp
|
||||
.for _T in ${_TESTS}
|
||||
@echo "${TEST_INTERFACE.${_T}}_test_program{name=\"${_T}\"}" \
|
||||
>>Kyuafile.tmp
|
||||
.endfor
|
||||
.for _T in ${TESTS_SUBDIRS:N.WAIT}
|
||||
@echo "include(\"${_T}/Kyuafile\")" >>Kyuafile.tmp
|
||||
.endfor
|
||||
@mv Kyuafile.tmp Kyuafile
|
||||
.endif
|
||||
.endif
|
||||
|
||||
beforetest: .PHONY
|
||||
.if defined(TESTSDIR)
|
||||
.if ${TESTSDIR} == ${TESTSBASE}
|
||||
|
Loading…
Reference in New Issue
Block a user