blob: 7f5b3213bfb3ed8b79384395b8a34aec93bfa09b [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 Pesavento1b077f62019-02-19 19:19:44 -05003Copyright (c) 2014-2019, 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
Davide Pesavento1b077f62019-02-19 19:19:44 -050042 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
Davide Pesavento1b077f62019-02-19 19:19:44 -050052 subdir = 'daemon/rib' if module == 'rib' else module
53 node = bld.path.find_dir(subdir)
Davide Pesavento0064c1d2018-03-03 18:43:53 -050054 src = node.ant_glob('**/*.cpp', excl=['face/*ethernet*.cpp',
55 'face/pcap*.cpp',
56 'face/unix*.cpp',
57 'face/websocket*.cpp'])
58 if bld.env.HAVE_LIBPCAP:
59 src += node.ant_glob('face/*ethernet*.cpp')
60 src += node.ant_glob('face/pcap*.cpp')
61 if bld.env.HAVE_UNIX_SOCKETS:
62 src += node.ant_glob('face/unix*.cpp')
63 if bld.env.HAVE_WEBSOCKET:
64 src += node.ant_glob('face/websocket*.cpp')
Alexander Afanasyev613e2a92014-04-15 13:36:58 -070065
Davide Pesavento1b077f62019-02-19 19:19:44 -050066 objmod = 'daemon' if module == 'rib' else module
67 # unit-tests binary for the module
68 bld.program(name='unit-tests-%s' % module,
69 target='../unit-tests-%s' % module,
70 source=src,
71 use='%s-objects unit-tests-base unit-tests-%s-main' % (objmod, module),
72 defines=[config_path],
73 install_path=None)
Alexander Afanasyev613e2a92014-04-15 13:36:58 -070074
Davide Pesavento0064c1d2018-03-03 18:43:53 -050075 # Other tests (e.g., stress tests and benchmarks that can be enabled even if unit tests are disabled)
76 if bld.env.WITH_TESTS or bld.env.WITH_OTHER_TESTS:
77 bld.recurse('other')