Make bsd.test.mk the only public mk fragment for the building of tests.

Change {atf,plain,tap}.test.mk to be internal implementation details of
bsd.test.mk.  Makefiles that build tests should now only include bsd.test.mk
and declaratively specify what they want to build, without worrying about
the internal implementation of the mk files.

The reason for this change is to permit building test programs of different
interfaces from a single directory, which is something I had a need for
while porting tests over from src/tools/regression/.

Additionally, this change makes it possible to perform some other requested
changes to bsd.test.mk in an easier manner.  Coming soon.
This commit is contained in:
Julio Merino
2014-03-14 08:56:19 +00:00
parent cf961c95e5
commit f5fd950e35
20 changed files with 45 additions and 37 deletions
+1 -1
View File
@@ -6,4 +6,4 @@ TESTSDIR= ${TESTSBASE}/bin/date
TAP_TESTS_SH= legacy_test TAP_TESTS_SH= legacy_test
.include <tap.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -6,4 +6,4 @@ TESTSDIR= ${TESTSBASE}/bin/mv
TAP_TESTS_SH= legacy_test TAP_TESTS_SH= legacy_test
.include <tap.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -6,4 +6,4 @@ TESTSDIR= ${TESTSBASE}/bin/pax
TAP_TESTS_PERL= legacy_test TAP_TESTS_PERL= legacy_test
.include <tap.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -15,4 +15,4 @@ TEST_METADATA.legacy_test+= required_user="unprivileged"
SUBDIR+= builtins errors execution expansion parameters parser set-e SUBDIR+= builtins errors execution expansion parameters parser set-e
.include <tap.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -12,4 +12,4 @@ TAP_TESTS_SH= legacy_test
# requested. See https://code.google.com/p/kyua/issues/detail?id=6 # requested. See https://code.google.com/p/kyua/issues/detail?id=6
TEST_METADATA.legacy_test+= required_user="unprivileged" TEST_METADATA.legacy_test+= required_user="unprivileged"
.include <tap.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -28,4 +28,4 @@ SRCS.${_T}= ${_T}.cpp test_helpers.cpp
ATF_TESTS_SH= pkg_config_test ATF_TESTS_SH= pkg_config_test
.include <atf.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -29,4 +29,4 @@ BINDIR.${p}= ${TESTSDIR}
version_helper.o: atf-version version_helper.o: atf-version
.include "../../../common.mk" .include "../../../common.mk"
.include <atf.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -35,4 +35,4 @@ SRCS.${_T}= ${_T}.c test_helpers.c
ATF_TESTS_SH= pkg_config_test ATF_TESTS_SH= pkg_config_test
.include <atf.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -31,4 +31,4 @@ BINDIR.${p}= ${TESTSDIR}
version_helper.o: atf-version version_helper.o: atf-version
.include "../../../common.mk" .include "../../../common.mk"
.include <atf.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -21,4 +21,4 @@ ATF_TESTS_SH+= ${_T}
ATF_TESTS_SH_SRC_${_T}= common.sh ${_T}.sh ATF_TESTS_SH_SRC_${_T}= common.sh ${_T}.sh
.endfor .endfor
.include <atf.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -9,4 +9,4 @@ ATF_TESTS_C= crypt_tests
CFLAGS+= -I${.CURDIR:H} CFLAGS+= -I${.CURDIR:H}
LDADD+= -L${.OBJDIR:H} -lcrypt LDADD+= -L${.OBJDIR:H} -lcrypt
.include <atf.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -9,4 +9,4 @@ ATF= ${.CURDIR:H:H:H:H}/contrib/atf
ATF_TESTS_SH= atf-check_test ATF_TESTS_SH= atf-check_test
.include <atf.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -27,4 +27,4 @@ ATF_TESTS_SH= cp_test
# definitions from above. # definitions from above.
KYUAFILE= yes KYUAFILE= yes
.include <atf.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -27,4 +27,4 @@ PLAIN_TESTS_SH= cp_test
# definitions from above. # definitions from above.
KYUAFILE= yes KYUAFILE= yes
.include <plain.test.mk> .include <bsd.test.mk>
+5 -3
View File
@@ -1,9 +1,13 @@
# $FreeBSD$ # $FreeBSD$
# #
# You must include bsd.test.mk instead of this file from your Makefile.
#
# Logic to build and install ATF test programs; i.e. test programs linked # Logic to build and install ATF test programs; i.e. test programs linked
# against the ATF libraries. # against the ATF libraries.
.include <bsd.init.mk> .if !target(__<bsd.test.mk>__)
.error atf.test.mk cannot be included directly.
.endif
# List of C, C++ and shell test programs to build. # List of C, C++ and shell test programs to build.
# #
@@ -164,5 +168,3 @@ realtest: .PHONY
.endif .endif
.endif .endif
.include <bsd.test.mk>
+14 -12
View File
@@ -2,16 +2,14 @@
# #
# Generic build infrastructure for test programs. # Generic build infrastructure for test programs.
# #
# The code in this file is independent of the implementation of the test # This is the only public file that should be included by Makefiles when
# programs being built; this file just provides generic infrastructure for the # tests are to be built. All other *.test.mk files are internal and not
# build and the definition of various helper variables and targets. # to be included directly.
#
# Makefiles should never include this file directly. Instead, they should
# include one of the various *.test.mk depending on the specific test programs
# being built.
.include <bsd.init.mk> .include <bsd.init.mk>
__<bsd.test.mk>__:
# Directory in which to install tests defined by the current Makefile. # Directory in which to install tests defined by the current Makefile.
# Makefiles have to override this to point to a subdirectory of TESTSBASE. # Makefiles have to override this to point to a subdirectory of TESTSBASE.
TESTSDIR?= . TESTSDIR?= .
@@ -67,11 +65,6 @@ TESTS_ENV+= PATH=${TESTS_PATH:tW:C/ +/:/g}
TESTS_LD_LIBRARY_PATH+= ${DESTDIR}/lib ${DESTDIR}/usr/lib TESTS_LD_LIBRARY_PATH+= ${DESTDIR}/lib ${DESTDIR}/usr/lib
TESTS_ENV+= LD_LIBRARY_PATH=${TESTS_LD_LIBRARY_PATH:tW:C/ +/:/g} TESTS_ENV+= LD_LIBRARY_PATH=${TESTS_LD_LIBRARY_PATH:tW:C/ +/:/g}
# 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?=
# Path to the prefix of the installed Kyua CLI, if any. # Path to the prefix of the installed Kyua CLI, if any.
# #
# If kyua is installed from ports, we automatically define a realtest target # If kyua is installed from ports, we automatically define a realtest target
@@ -79,6 +72,15 @@ _TESTS?=
# hierarchy specified by this variable. # hierarchy specified by this variable.
KYUA_PREFIX?= /usr/local KYUA_PREFIX?= /usr/local
# List of all tests being built. The various *.test.mk modules extend this
# variable as needed.
_TESTS=
# Pull in the definitions of all supported test interfaces.
.include <atf.test.mk>
.include <plain.test.mk>
.include <tap.test.mk>
.if !empty(TESTS_SUBDIRS) .if !empty(TESTS_SUBDIRS)
SUBDIR+= ${TESTS_SUBDIRS} SUBDIR+= ${TESTS_SUBDIRS}
.endif .endif
+5 -3
View File
@@ -1,10 +1,14 @@
# $FreeBSD$ # $FreeBSD$
# #
# You must include bsd.test.mk instead of this file from your Makefile.
#
# Logic to build and install plain test programs. A plain test programs it not # Logic to build and install plain test programs. A plain test programs it not
# supposed to use any specific testing framework: all it does is run some code # supposed to use any specific testing framework: all it does is run some code
# and report the test's pass or fail status via a 0 or 1 exit code. # and report the test's pass or fail status via a 0 or 1 exit code.
.include <bsd.init.mk> .if !target(__<bsd.test.mk>__)
.error plain.test.mk cannot be included directly.
.endif
# List of C, C++ and shell test programs to build. # List of C, C++ and shell test programs to build.
# #
@@ -58,5 +62,3 @@ ${_T}: ${PLAIN_TESTS_SH_SRC_${_T}}
mv ${.TARGET}.tmp ${.TARGET} mv ${.TARGET}.tmp ${.TARGET}
.endfor .endfor
.endif .endif
.include <bsd.test.mk>
+5 -3
View File
@@ -1,12 +1,16 @@
# $FreeBSD$ # $FreeBSD$
# #
# You must include bsd.test.mk instead of this file from your Makefile.
#
# Logic to build and install TAP-compliant test programs. # Logic to build and install TAP-compliant test programs.
# #
# This is provided to support existing tests in the FreeBSD source tree # This is provided to support existing tests in the FreeBSD source tree
# (particularly those coming from tools/regression/) that comply with the # (particularly those coming from tools/regression/) that comply with the
# Test Anything Protocol. It should not be used for new tests. # Test Anything Protocol. It should not be used for new tests.
.include <bsd.init.mk> .if !target(__<bsd.test.mk>__)
.error tap.test.mk cannot be included directly.
.endif
# List of C, C++ and shell test programs to build. # List of C, C++ and shell test programs to build.
# #
@@ -87,5 +91,3 @@ ${_T}: ${TAP_TESTS_SH_SRC_${_T}}
mv ${.TARGET}.tmp ${.TARGET} mv ${.TARGET}.tmp ${.TARGET}
.endfor .endfor
.endif .endif
.include <bsd.test.mk>
+1 -1
View File
@@ -10,4 +10,4 @@ LDADD.unix_seqpacket_test+= -lpthread
WARNS?= 5 WARNS?= 5
.include <atf.test.mk> .include <bsd.test.mk>
+1 -1
View File
@@ -23,4 +23,4 @@ misc_helpers: misc_helpers.sh
chmod +x ${.TARGET}.tmp chmod +x ${.TARGET}.tmp
mv ${.TARGET}.tmp ${.TARGET} mv ${.TARGET}.tmp ${.TARGET}
.include <atf.test.mk> .include <bsd.test.mk>