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
This commit is contained in:
parent
5e6f3a8ed7
commit
e2197f8018
@ -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
|
||||
|
@ -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
|
||||
|
12
etc/mtree/BSD.tests.dist
Normal file
12
etc/mtree/BSD.tests.dist
Normal file
@ -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
|
||||
..
|
||||
..
|
||||
..
|
@ -37,4 +37,9 @@ WARNS?= 2
|
||||
|
||||
PRECIOUSLIB=
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
|
||||
.include <bsd.lib.mk>
|
||||
.include <bsd.subdir.mk>
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
# exercise libcrypt
|
||||
|
||||
TESTSDIR= ${TESTSBASE}/lib/libcrypt
|
||||
|
||||
ATF_TESTS_C= crypt_tests
|
||||
|
||||
CFLAGS+= -I${.CURDIR:H}
|
||||
|
@ -350,6 +350,7 @@ __DEFAULT_YES_OPTIONS = \
|
||||
SYSINSTALL \
|
||||
TCSH \
|
||||
TELNET \
|
||||
TESTS \
|
||||
TEXTPROC \
|
||||
TOOLCHAIN \
|
||||
UNBOUND \
|
||||
|
52
tests/Kyuafile
Normal file
52
tests/Kyuafile
Normal file
@ -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
|
11
tests/Makefile
Normal file
11
tests/Makefile
Normal file
@ -0,0 +1,11 @@
|
||||
# $FreeBSD$
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
TESTS_SUBDIRS= lib
|
||||
|
||||
TESTSDIR= ${TESTSBASE}
|
||||
|
||||
KYUAFILE= yes
|
||||
|
||||
.include <bsd.test.mk>
|
56
tests/README
Normal file
56
tests/README
Normal file
@ -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$
|
13
tests/lib/Makefile
Normal file
13
tests/lib/Makefile
Normal file
@ -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>
|
Loading…
Reference in New Issue
Block a user