svn commit: r257097 - in head: . etc etc/mtree lib/libcrypt lib/libcrypt/tests share/mk tests tests/lib
Rui Paulo
rpaulo at FreeBSD.org
Fri Oct 25 05:25:22 UTC 2013
Author: rpaulo
Date: Fri Oct 25 05:25:19 2013
New Revision: 257097
URL: http://svnweb.freebsd.org/changeset/base/257097
Log:
Set up the /usr/tests hierarchy.
Populate /usr/tests with the only test programs that currently live
in the tree (those in lib/libcrypt/tests/) and add all the build
machinery to accompany this change.
In particular:
- Add a WITHOUT_TESTS variable that users can define to request that
no tests be put in /usr/tests.
- Add a top-level Kyuafile for /usr/tests and a way to create similar
Kyuafiles in top-level subdirectories.
- Add a BSD.tests.dist file to define the directory layout of
/usr/tests.
Submitted by: Julio Merino jmmv google.com
Reviewed by: sjg
MFC after: 2 weeks
Added:
head/etc/mtree/BSD.tests.dist (contents, props changed)
head/tests/
head/tests/Kyuafile (contents, props changed)
head/tests/Makefile (contents, props changed)
head/tests/README (contents, props changed)
head/tests/lib/
head/tests/lib/Makefile (contents, props changed)
Modified:
head/Makefile.inc1
head/etc/Makefile
head/lib/libcrypt/Makefile
head/lib/libcrypt/tests/Makefile
head/share/mk/bsd.own.mk
Modified: head/Makefile.inc1
==============================================================================
--- head/Makefile.inc1 Fri Oct 25 05:12:31 2013 (r257096)
+++ head/Makefile.inc1 Fri Oct 25 05:25:19 2013 (r257097)
@@ -85,6 +85,9 @@ SUBDIR+=secure
SUBDIR+=share
.endif
SUBDIR+=sys usr.bin usr.sbin
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
.if ${MK_OFED} != "no"
SUBDIR+=contrib/ofed
.endif
@@ -489,6 +492,10 @@ _worldtmp:
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
-p ${WORLDTMP}/usr/lib >/dev/null
.endif
+.if ${MK_TESTS} != "no"
+ mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
+ -p ${WORLDTMP}${TESTSBASE} >/dev/null
+.endif
.for _mtree in ${LOCAL_MTREE}
mtree -deU -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null
.endfor
Modified: head/etc/Makefile
==============================================================================
--- head/etc/Makefile Fri Oct 25 05:12:31 2013 (r257096)
+++ head/etc/Makefile Fri Oct 25 05:25:19 2013 (r257097)
@@ -139,6 +139,9 @@ BIN1+= regdomain.xml
BIN2= netstart pccard_ether rc.suspend rc.resume
MTREE= BSD.include.dist BSD.root.dist BSD.usr.dist BSD.var.dist
+.if ${MK_TESTS} != "no"
+MTREE+= BSD.tests.dist
+.endif
.if ${MK_SENDMAIL} != "no"
MTREE+= BSD.sendmail.dist
.endif
@@ -314,6 +317,9 @@ MTREES+= mtree/BSD.debug.dist /usr/lib
.if ${MK_GROFF} != "no"
MTREES+= mtree/BSD.groff.dist /usr
.endif
+.if ${MK_TESTS} != "no"
+MTREES+= mtree/BSD.tests.dist ${TESTSBASE}
+.endif
.if ${MK_SENDMAIL} != "no"
MTREES+= mtree/BSD.sendmail.dist /
.endif
Added: head/etc/mtree/BSD.tests.dist
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/etc/mtree/BSD.tests.dist Fri Oct 25 05:25:19 2013 (r257097)
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# Please see the file src/etc/mtree/README before making changes to this file.
+#
+
+/set type=dir uname=root gname=wheel mode=0755
+.
+ lib
+ libcrypt
+ ..
+ ..
+..
Modified: head/lib/libcrypt/Makefile
==============================================================================
--- head/lib/libcrypt/Makefile Fri Oct 25 05:12:31 2013 (r257096)
+++ head/lib/libcrypt/Makefile Fri Oct 25 05:25:19 2013 (r257097)
@@ -37,4 +37,9 @@ WARNS?= 2
PRECIOUSLIB=
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.lib.mk>
+.include <bsd.subdir.mk>
Modified: head/lib/libcrypt/tests/Makefile
==============================================================================
--- head/lib/libcrypt/tests/Makefile Fri Oct 25 05:12:31 2013 (r257096)
+++ head/lib/libcrypt/tests/Makefile Fri Oct 25 05:25:19 2013 (r257097)
@@ -2,6 +2,8 @@
# exercise libcrypt
+TESTSDIR= ${TESTSBASE}/lib/libcrypt
+
ATF_TESTS_C= crypt_tests
CFLAGS+= -I${.CURDIR:H}
Modified: head/share/mk/bsd.own.mk
==============================================================================
--- head/share/mk/bsd.own.mk Fri Oct 25 05:12:31 2013 (r257096)
+++ head/share/mk/bsd.own.mk Fri Oct 25 05:25:19 2013 (r257097)
@@ -350,6 +350,7 @@ __DEFAULT_YES_OPTIONS = \
SYSINSTALL \
TCSH \
TELNET \
+ TESTS \
TEXTPROC \
TOOLCHAIN \
UNBOUND \
Added: head/tests/Kyuafile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/tests/Kyuafile Fri Oct 25 05:25:19 2013 (r257097)
@@ -0,0 +1,52 @@
+-- $FreeBSD$
+--
+-- Copyright 2011 Google Inc.
+-- All rights reserved.
+--
+-- Redistribution and use in source and binary forms, with or without
+-- modification, are permitted provided that the following conditions are
+-- met:
+--
+-- * Redistributions of source code must retain the above copyright
+-- notice, this list of conditions and the following disclaimer.
+-- * Redistributions in binary form must reproduce the above copyright
+-- notice, this list of conditions and the following disclaimer in the
+-- documentation and/or other materials provided with the distribution.
+-- * Neither the name of Google Inc. nor the names of its contributors
+-- may be used to endorse or promote products derived from this software
+-- without specific prior written permission.
+--
+-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+-- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+-- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-- Automatically recurses into any subdirectory that holds a Kyuafile.
+-- As such, this Kyuafile is suitable for installation into the root of
+-- the tests hierarchy as well as into any other subdirectory that needs
+-- "auto-discovery" of tests.
+--
+-- This file is based on the Kyuafile.top sample file distributed in the
+-- kyua-cli package.
+
+syntax(2)
+
+local directory = fs.dirname(current_kyuafile())
+for file in fs.files(directory) do
+ if file == "." or file == ".." then
+ -- Skip these special entries.
+ else
+ local kyuafile_relative = fs.join(file, "Kyuafile")
+ local kyuafile_absolute = fs.join(directory, kyuafile_relative)
+ if fs.exists(kyuafile_absolute) then
+ include(kyuafile_relative)
+ end
+ end
+end
Added: head/tests/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/tests/Makefile Fri Oct 25 05:25:19 2013 (r257097)
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+TESTS_SUBDIRS= lib
+
+TESTSDIR= ${TESTSBASE}
+
+KYUAFILE= yes
+
+.include <bsd.test.mk>
Added: head/tests/README
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/tests/README Fri Oct 25 05:25:19 2013 (r257097)
@@ -0,0 +1,56 @@
+src/tests: The FreeBSD test suite
+=================================
+
+This file describes the build infrastructure of the FreeBSD test suite.
+If you are only interested in using the test suite itself, please refer
+to tests(7) instead.
+
+The build of the test suite is organized in the following manner:
+
+* The build of all test artifacts is protected by the MK_TESTS knob.
+ The user can disable these with the WITHOUT_TESTS setting in
+ src.conf(5).
+
+* The goal for /usr/tests/ (the installed test programs) is to follow
+ the same hierarchy as /usr/src/ wherever possible, which in turn drives
+ several of the design decisions described below. This simplifies the
+ discoverability of tests. We want a mapping such as:
+
+ /usr/src/bin/cp/ -> /usr/tests/bin/cp/
+ /usr/src/lib/libc/ -> /usr/tests/lib/libc/
+ /usr/src/usr.bin/cut/ -> /usr/tests/usr.bin/cut/
+ ... and many more ...
+
+* Test programs for specific utilities and libraries are located next
+ to the source code of such programs. For example, the tests for the
+ src/lib/libcrypt/ library live in src/lib/libcrypt/tests/. The tests/
+ subdirectory is optional and should, in general, be avoided.
+
+* The src/tests/ hierarchy (this directory) provides generic test
+ infrastructure and glue code to join all test programs together into
+ a single test suite definition.
+
+* The src/tests/ hierarchy also includes cross-functional test programs:
+ i.e. test programs that cover more than a single utility or library
+ and thus don't fit anywhere else in the tree. Consider this to follow
+ the same rationale as src/share/man/: this directory contains generic
+ manual pages while the manual pages that are specific to individual
+ tools or libraries live next to the source code.
+
+In order to keep the src/tests/ hierarchy decoupled from the actual test
+programs being installed --which is a worthy goal because it simplifies
+the addition of new test programs and simplifies the maintenance of the
+tree-- the top-level Kyuafile does not know which subdirectories may
+exist upfront. Instead, such Kyuafile automatically detects, at
+run-time, which */Kyuafile files exist and uses those directly.
+
+Similarly, every category subdirectory within src/tests/ provides the
+same Kyuafile with auto-discovery features. For example: src/tests/lib/
+holds a generic Makefile to install test-suite related material but such
+directory does not know upfront which libraries within src/lib/ will
+install tests. For this reason, the Kyuafile in src/tests/lib/ has to
+also use the auto-discovery features. The same applies for any other
+category subdirectory (e.g. bin, usr.sbin, etc.).
+
+--
+$FreeBSD$
Added: head/tests/lib/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/tests/lib/Makefile Fri Oct 25 05:25:19 2013 (r257097)
@@ -0,0 +1,13 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/lib
+
+KYUAFILE= yes
+
+CLEANFILES+= Kyuafile
+Kyuafile: ${.CURDIR}/../Kyuafile
+ cp -f ${.CURDIR}/../Kyuafile .
+
+.include <bsd.test.mk>
More information about the svn-src-all
mailing list