From f5fd950e35c962bad0aa31fdc4b4052e13207893 Mon Sep 17 00:00:00 2001 From: Julio Merino Date: Fri, 14 Mar 2014 08:56:19 +0000 Subject: [PATCH] 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. --- bin/date/tests/Makefile | 2 +- bin/mv/tests/Makefile | 2 +- bin/pax/tests/Makefile | 2 +- bin/sh/tests/Makefile | 2 +- bin/test/tests/Makefile | 2 +- lib/atf/libatf-c++/tests/Makefile | 2 +- lib/atf/libatf-c++/tests/detail/Makefile | 2 +- lib/atf/libatf-c/tests/Makefile | 2 +- lib/atf/libatf-c/tests/detail/Makefile | 2 +- lib/atf/tests/test-programs/Makefile | 2 +- lib/libcrypt/tests/Makefile | 2 +- libexec/atf/atf-check/tests/Makefile | 2 +- share/examples/tests/tests/atf/Makefile | 2 +- share/examples/tests/tests/plain/Makefile | 2 +- share/mk/atf.test.mk | 8 ++++--- share/mk/bsd.test.mk | 26 ++++++++++++----------- share/mk/plain.test.mk | 8 ++++--- share/mk/tap.test.mk | 8 ++++--- tests/sys/kern/Makefile | 2 +- usr.bin/atf/atf-sh/tests/Makefile | 2 +- 20 files changed, 45 insertions(+), 37 deletions(-) diff --git a/bin/date/tests/Makefile b/bin/date/tests/Makefile index 540008be289..2301dcf203d 100644 --- a/bin/date/tests/Makefile +++ b/bin/date/tests/Makefile @@ -6,4 +6,4 @@ TESTSDIR= ${TESTSBASE}/bin/date TAP_TESTS_SH= legacy_test -.include +.include diff --git a/bin/mv/tests/Makefile b/bin/mv/tests/Makefile index 051a3b6177e..3d437ef916a 100644 --- a/bin/mv/tests/Makefile +++ b/bin/mv/tests/Makefile @@ -6,4 +6,4 @@ TESTSDIR= ${TESTSBASE}/bin/mv TAP_TESTS_SH= legacy_test -.include +.include diff --git a/bin/pax/tests/Makefile b/bin/pax/tests/Makefile index f4f81eea86b..1f27c184130 100644 --- a/bin/pax/tests/Makefile +++ b/bin/pax/tests/Makefile @@ -6,4 +6,4 @@ TESTSDIR= ${TESTSBASE}/bin/pax TAP_TESTS_PERL= legacy_test -.include +.include diff --git a/bin/sh/tests/Makefile b/bin/sh/tests/Makefile index f6ddb8a0727..51c6dc44336 100644 --- a/bin/sh/tests/Makefile +++ b/bin/sh/tests/Makefile @@ -15,4 +15,4 @@ TEST_METADATA.legacy_test+= required_user="unprivileged" SUBDIR+= builtins errors execution expansion parameters parser set-e -.include +.include diff --git a/bin/test/tests/Makefile b/bin/test/tests/Makefile index be32dbb29bf..5ee337a213f 100644 --- a/bin/test/tests/Makefile +++ b/bin/test/tests/Makefile @@ -12,4 +12,4 @@ TAP_TESTS_SH= legacy_test # requested. See https://code.google.com/p/kyua/issues/detail?id=6 TEST_METADATA.legacy_test+= required_user="unprivileged" -.include +.include diff --git a/lib/atf/libatf-c++/tests/Makefile b/lib/atf/libatf-c++/tests/Makefile index 1ab5fdaa6e4..c5a1d2495b6 100644 --- a/lib/atf/libatf-c++/tests/Makefile +++ b/lib/atf/libatf-c++/tests/Makefile @@ -28,4 +28,4 @@ SRCS.${_T}= ${_T}.cpp test_helpers.cpp ATF_TESTS_SH= pkg_config_test -.include +.include diff --git a/lib/atf/libatf-c++/tests/detail/Makefile b/lib/atf/libatf-c++/tests/detail/Makefile index 4e2e9cf538f..b3fd4dcaf3b 100644 --- a/lib/atf/libatf-c++/tests/detail/Makefile +++ b/lib/atf/libatf-c++/tests/detail/Makefile @@ -29,4 +29,4 @@ BINDIR.${p}= ${TESTSDIR} version_helper.o: atf-version .include "../../../common.mk" -.include +.include diff --git a/lib/atf/libatf-c/tests/Makefile b/lib/atf/libatf-c/tests/Makefile index 14b199f591b..1a091d3172f 100644 --- a/lib/atf/libatf-c/tests/Makefile +++ b/lib/atf/libatf-c/tests/Makefile @@ -35,4 +35,4 @@ SRCS.${_T}= ${_T}.c test_helpers.c ATF_TESTS_SH= pkg_config_test -.include +.include diff --git a/lib/atf/libatf-c/tests/detail/Makefile b/lib/atf/libatf-c/tests/detail/Makefile index 472ff9c7fb4..aa85aa311c5 100644 --- a/lib/atf/libatf-c/tests/detail/Makefile +++ b/lib/atf/libatf-c/tests/detail/Makefile @@ -31,4 +31,4 @@ BINDIR.${p}= ${TESTSDIR} version_helper.o: atf-version .include "../../../common.mk" -.include +.include diff --git a/lib/atf/tests/test-programs/Makefile b/lib/atf/tests/test-programs/Makefile index 8ff33332b6f..b0c1c237648 100644 --- a/lib/atf/tests/test-programs/Makefile +++ b/lib/atf/tests/test-programs/Makefile @@ -21,4 +21,4 @@ ATF_TESTS_SH+= ${_T} ATF_TESTS_SH_SRC_${_T}= common.sh ${_T}.sh .endfor -.include +.include diff --git a/lib/libcrypt/tests/Makefile b/lib/libcrypt/tests/Makefile index 51adc2dccf5..2a0f1fbeaf5 100644 --- a/lib/libcrypt/tests/Makefile +++ b/lib/libcrypt/tests/Makefile @@ -9,4 +9,4 @@ ATF_TESTS_C= crypt_tests CFLAGS+= -I${.CURDIR:H} LDADD+= -L${.OBJDIR:H} -lcrypt -.include +.include diff --git a/libexec/atf/atf-check/tests/Makefile b/libexec/atf/atf-check/tests/Makefile index 0f237e6d3f7..43a74988a27 100644 --- a/libexec/atf/atf-check/tests/Makefile +++ b/libexec/atf/atf-check/tests/Makefile @@ -9,4 +9,4 @@ ATF= ${.CURDIR:H:H:H:H}/contrib/atf ATF_TESTS_SH= atf-check_test -.include +.include diff --git a/share/examples/tests/tests/atf/Makefile b/share/examples/tests/tests/atf/Makefile index d93813dabfb..c7bd46fef7b 100644 --- a/share/examples/tests/tests/atf/Makefile +++ b/share/examples/tests/tests/atf/Makefile @@ -27,4 +27,4 @@ ATF_TESTS_SH= cp_test # definitions from above. KYUAFILE= yes -.include +.include diff --git a/share/examples/tests/tests/plain/Makefile b/share/examples/tests/tests/plain/Makefile index 309dbefbea5..7348c5a970e 100644 --- a/share/examples/tests/tests/plain/Makefile +++ b/share/examples/tests/tests/plain/Makefile @@ -27,4 +27,4 @@ PLAIN_TESTS_SH= cp_test # definitions from above. KYUAFILE= yes -.include +.include diff --git a/share/mk/atf.test.mk b/share/mk/atf.test.mk index 3ffb2cb9d85..1be7244acfc 100644 --- a/share/mk/atf.test.mk +++ b/share/mk/atf.test.mk @@ -1,9 +1,13 @@ # $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 # against the ATF libraries. -.include +.if !target(____) +.error atf.test.mk cannot be included directly. +.endif # List of C, C++ and shell test programs to build. # @@ -164,5 +168,3 @@ realtest: .PHONY .endif .endif - -.include diff --git a/share/mk/bsd.test.mk b/share/mk/bsd.test.mk index ee96f77a029..94b22b13c20 100644 --- a/share/mk/bsd.test.mk +++ b/share/mk/bsd.test.mk @@ -2,16 +2,14 @@ # # Generic build infrastructure for test programs. # -# The code in this file is independent of the implementation of the test -# programs being built; this file just provides generic infrastructure for the -# build and the definition of various helper variables and targets. -# -# 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. +# This is the only public file that should be included by Makefiles when +# tests are to be built. All other *.test.mk files are internal and not +# to be included directly. .include +____: + # Directory in which to install tests defined by the current Makefile. # Makefiles have to override this to point to a subdirectory of TESTSBASE. TESTSDIR?= . @@ -67,11 +65,6 @@ TESTS_ENV+= PATH=${TESTS_PATH:tW:C/ +/:/g} TESTS_LD_LIBRARY_PATH+= ${DESTDIR}/lib ${DESTDIR}/usr/lib 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. # # If kyua is installed from ports, we automatically define a realtest target @@ -79,6 +72,15 @@ _TESTS?= # hierarchy specified by this variable. 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 +.include +.include + .if !empty(TESTS_SUBDIRS) SUBDIR+= ${TESTS_SUBDIRS} .endif diff --git a/share/mk/plain.test.mk b/share/mk/plain.test.mk index 2e2752db7fa..99685ef1d96 100644 --- a/share/mk/plain.test.mk +++ b/share/mk/plain.test.mk @@ -1,10 +1,14 @@ # $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 # 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. -.include +.if !target(____) +.error plain.test.mk cannot be included directly. +.endif # List of C, C++ and shell test programs to build. # @@ -58,5 +62,3 @@ ${_T}: ${PLAIN_TESTS_SH_SRC_${_T}} mv ${.TARGET}.tmp ${.TARGET} .endfor .endif - -.include diff --git a/share/mk/tap.test.mk b/share/mk/tap.test.mk index 9c1ef542ecd..4c056616c4c 100644 --- a/share/mk/tap.test.mk +++ b/share/mk/tap.test.mk @@ -1,12 +1,16 @@ # $FreeBSD$ # +# You must include bsd.test.mk instead of this file from your Makefile. +# # Logic to build and install TAP-compliant test programs. # # This is provided to support existing tests in the FreeBSD source tree # (particularly those coming from tools/regression/) that comply with the # Test Anything Protocol. It should not be used for new tests. -.include +.if !target(____) +.error tap.test.mk cannot be included directly. +.endif # List of C, C++ and shell test programs to build. # @@ -87,5 +91,3 @@ ${_T}: ${TAP_TESTS_SH_SRC_${_T}} mv ${.TARGET}.tmp ${.TARGET} .endfor .endif - -.include diff --git a/tests/sys/kern/Makefile b/tests/sys/kern/Makefile index bf6ad552626..4a1e6714795 100644 --- a/tests/sys/kern/Makefile +++ b/tests/sys/kern/Makefile @@ -10,4 +10,4 @@ LDADD.unix_seqpacket_test+= -lpthread WARNS?= 5 -.include +.include diff --git a/usr.bin/atf/atf-sh/tests/Makefile b/usr.bin/atf/atf-sh/tests/Makefile index b43b649fb4b..4fc0ed74edb 100644 --- a/usr.bin/atf/atf-sh/tests/Makefile +++ b/usr.bin/atf/atf-sh/tests/Makefile @@ -23,4 +23,4 @@ misc_helpers: misc_helpers.sh chmod +x ${.TARGET}.tmp mv ${.TARGET}.tmp ${.TARGET} -.include +.include