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
|
SUBDIR+=share
|
||||||
.endif
|
.endif
|
||||||
SUBDIR+=sys usr.bin usr.sbin
|
SUBDIR+=sys usr.bin usr.sbin
|
||||||
|
.if ${MK_TESTS} != "no"
|
||||||
|
SUBDIR+= tests
|
||||||
|
.endif
|
||||||
.if ${MK_OFED} != "no"
|
.if ${MK_OFED} != "no"
|
||||||
SUBDIR+=contrib/ofed
|
SUBDIR+=contrib/ofed
|
||||||
.endif
|
.endif
|
||||||
@ -489,6 +492,10 @@ _worldtmp:
|
|||||||
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
|
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
|
||||||
-p ${WORLDTMP}/usr/lib >/dev/null
|
-p ${WORLDTMP}/usr/lib >/dev/null
|
||||||
.endif
|
.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}
|
.for _mtree in ${LOCAL_MTREE}
|
||||||
mtree -deU -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null
|
mtree -deU -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null
|
||||||
.endfor
|
.endfor
|
||||||
|
@ -139,6 +139,9 @@ BIN1+= regdomain.xml
|
|||||||
BIN2= netstart pccard_ether rc.suspend rc.resume
|
BIN2= netstart pccard_ether rc.suspend rc.resume
|
||||||
|
|
||||||
MTREE= BSD.include.dist BSD.root.dist BSD.usr.dist BSD.var.dist
|
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"
|
.if ${MK_SENDMAIL} != "no"
|
||||||
MTREE+= BSD.sendmail.dist
|
MTREE+= BSD.sendmail.dist
|
||||||
.endif
|
.endif
|
||||||
@ -314,6 +317,9 @@ MTREES+= mtree/BSD.debug.dist /usr/lib
|
|||||||
.if ${MK_GROFF} != "no"
|
.if ${MK_GROFF} != "no"
|
||||||
MTREES+= mtree/BSD.groff.dist /usr
|
MTREES+= mtree/BSD.groff.dist /usr
|
||||||
.endif
|
.endif
|
||||||
|
.if ${MK_TESTS} != "no"
|
||||||
|
MTREES+= mtree/BSD.tests.dist ${TESTSBASE}
|
||||||
|
.endif
|
||||||
.if ${MK_SENDMAIL} != "no"
|
.if ${MK_SENDMAIL} != "no"
|
||||||
MTREES+= mtree/BSD.sendmail.dist /
|
MTREES+= mtree/BSD.sendmail.dist /
|
||||||
.endif
|
.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=
|
PRECIOUSLIB=
|
||||||
|
|
||||||
|
.if ${MK_TESTS} != "no"
|
||||||
|
SUBDIR+= tests
|
||||||
|
.endif
|
||||||
|
|
||||||
.include <bsd.lib.mk>
|
.include <bsd.lib.mk>
|
||||||
|
.include <bsd.subdir.mk>
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
# exercise libcrypt
|
# exercise libcrypt
|
||||||
|
|
||||||
|
TESTSDIR= ${TESTSBASE}/lib/libcrypt
|
||||||
|
|
||||||
ATF_TESTS_C= crypt_tests
|
ATF_TESTS_C= crypt_tests
|
||||||
|
|
||||||
CFLAGS+= -I${.CURDIR:H}
|
CFLAGS+= -I${.CURDIR:H}
|
||||||
|
@ -350,6 +350,7 @@ __DEFAULT_YES_OPTIONS = \
|
|||||||
SYSINSTALL \
|
SYSINSTALL \
|
||||||
TCSH \
|
TCSH \
|
||||||
TELNET \
|
TELNET \
|
||||||
|
TESTS \
|
||||||
TEXTPROC \
|
TEXTPROC \
|
||||||
TOOLCHAIN \
|
TOOLCHAIN \
|
||||||
UNBOUND \
|
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