blob: 7e9300ff3c67f8e5b9bd2912b4fc611e13b86761 [file] [log] [blame]
Alexander Afanasyev613e2a92014-04-15 13:36:58 -07001# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
Alexander Afanasyev613e2a92014-04-15 13:36:58 -07002"""
Davide Pesavento0064c1d2018-03-03 18:43:53 -05003Copyright (c) 2014-2018, Regents of the University of California,
Junxiao Shi9f5b01d2016-08-05 03:54:28 +00004 Arizona Board of Regents,
5 Colorado State University,
6 University Pierre & Marie Curie, Sorbonne University,
7 Washington University in St. Louis,
8 Beijing Institute of Technology,
9 The University of Memphis.
Alexander Afanasyev613e2a92014-04-15 13:36:58 -070010
11This file is part of NFD (Named Data Networking Forwarding Daemon).
12See AUTHORS.md for complete list of NFD authors and contributors.
13
14NFD is free software: you can redistribute it and/or modify it under the terms
15of the GNU General Public License as published by the Free Software Foundation,
16either version 3 of the License, or (at your option) any later version.
17
18NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
19without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
20PURPOSE. See the GNU General Public License for more details.
21
22You should have received a copy of the GNU General Public License along with
23NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
24"""
25
26top = '..'
27
28def build(bld):
29 # Unit tests
Davide Pesavento0064c1d2018-03-03 18:43:53 -050030 if bld.env.WITH_TESTS:
31 config_path = 'UNIT_TEST_CONFIG_PATH="%s"' % bld.bldnode.make_node('tmp-files')
Alexander Afanasyev58ea4582014-05-30 08:38:56 +030032
Davide Pesavento0064c1d2018-03-03 18:43:53 -050033 # common test objects
34 bld.objects(
Alexander Afanasyev58ea4582014-05-30 08:38:56 +030035 target='unit-tests-base',
Davide Pesavento0064c1d2018-03-03 18:43:53 -050036 features='pch',
37 source=bld.path.ant_glob('*.cpp', excl='main.cpp'),
Alexander Afanasyev58ea4582014-05-30 08:38:56 +030038 use='core-objects',
Junxiao Shi9f5b01d2016-08-05 03:54:28 +000039 headers='../core/common.hpp boost-test.hpp',
Davide Pesavento0064c1d2018-03-03 18:43:53 -050040 defines=[config_path])
Alexander Afanasyev613e2a92014-04-15 13:36:58 -070041
Junxiao Shi38f4ce92016-08-04 10:01:52 +000042 for module, name in {"core": "Core Tests",
43 "daemon": "Daemon Tests",
44 "rib": "RIB Tests",
45 "tools": "Tools Tests"}.items():
Davide Pesavento0064c1d2018-03-03 18:43:53 -050046 # main() for the module
47 bld.objects(target='unit-tests-%s-main' % module,
48 source='main.cpp',
49 use='BOOST',
50 defines=['BOOST_TEST_MODULE=%s' % name])
51
52 node = bld.path.find_dir(module)
53 src = node.ant_glob('**/*.cpp', excl=['face/*ethernet*.cpp',
54 'face/pcap*.cpp',
55 'face/unix*.cpp',
56 'face/websocket*.cpp'])
57 if bld.env.HAVE_LIBPCAP:
58 src += node.ant_glob('face/*ethernet*.cpp')
59 src += node.ant_glob('face/pcap*.cpp')
60 if bld.env.HAVE_UNIX_SOCKETS:
61 src += node.ant_glob('face/unix*.cpp')
62 if bld.env.HAVE_WEBSOCKET:
63 src += node.ant_glob('face/websocket*.cpp')
Alexander Afanasyev613e2a92014-04-15 13:36:58 -070064
Alexander Afanasyevf22ebaf2015-12-17 21:23:05 -080065 # unit-tests-%module
Davide Pesavento0064c1d2018-03-03 18:43:53 -050066 bld.program(name='unit-tests-%s' % module,
67 target='../unit-tests-%s' % module,
68 source=src,
69 use='%s-objects unit-tests-base unit-tests-%s-main' % (module, module),
70 defines=[config_path],
71 install_path=None)
Alexander Afanasyev613e2a92014-04-15 13:36:58 -070072
Davide Pesavento0064c1d2018-03-03 18:43:53 -050073 # Other tests (e.g., stress tests and benchmarks that can be enabled even if unit tests are disabled)
74 if bld.env.WITH_TESTS or bld.env.WITH_OTHER_TESTS:
75 bld.recurse('other')