blob: 956fd0d4136b5f63a71d0208612d2bb7b39e5b79 [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 Pesaventocaa60cc2024-02-18 18:18:37 -05003Copyright (c) 2014-2024, 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:
Davide Pesavento21353752020-11-20 00:43:44 -050031 tmpdir = 'UNIT_TESTS_TMPDIR="%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(
Davide Pesaventocf7db2f2019-03-24 23:17:28 -040035 target='tests-common',
Davide Pesavento0064c1d2018-03-03 18:43:53 -050036 features='pch',
37 source=bld.path.ant_glob('*.cpp', excl='main.cpp'),
Davide Pesaventoa9e1ab22023-10-02 22:10:45 -040038 use='BOOST_TESTS core-objects',
Junxiao Shi9f5b01d2016-08-05 03:54:28 +000039 headers='../core/common.hpp boost-test.hpp',
Davide Pesavento21353752020-11-20 00:43:44 -050040 defines=[tmpdir])
Alexander Afanasyev613e2a92014-04-15 13:36:58 -070041
Davide Pesaventocaa60cc2024-02-18 18:18:37 -050042 for module in ['core', 'daemon', 'tools']:
Davide Pesavento0064c1d2018-03-03 18:43:53 -050043 # main() for the module
Davide Pesaventocaa60cc2024-02-18 18:18:37 -050044 bld.objects(
45 target=f'unit-tests-{module}-main',
46 source='main.cpp',
47 use='BOOST_TESTS',
48 defines=[f'BOOST_TEST_MODULE=NFD {module.capitalize()}'])
Davide Pesavento0064c1d2018-03-03 18:43:53 -050049
Davide Pesaventocaa60cc2024-02-18 18:18:37 -050050 node = bld.path.find_dir(module)
51 src = node.ant_glob('**/*.cpp',
52 excl=['face/*ethernet*.cpp',
53 'face/pcap*.cpp',
54 'face/unix*.cpp',
55 'face/websocket*.cpp'])
Davide Pesavento0064c1d2018-03-03 18:43:53 -050056 if bld.env.HAVE_LIBPCAP:
57 src += node.ant_glob('face/*ethernet*.cpp')
58 src += node.ant_glob('face/pcap*.cpp')
59 if bld.env.HAVE_UNIX_SOCKETS:
60 src += node.ant_glob('face/unix*.cpp')
61 if bld.env.HAVE_WEBSOCKET:
62 src += node.ant_glob('face/websocket*.cpp')
Alexander Afanasyev613e2a92014-04-15 13:36:58 -070063
Davide Pesavento1b077f62019-02-19 19:19:44 -050064 # unit-tests binary for the module
Davide Pesaventocaa60cc2024-02-18 18:18:37 -050065 bld.program(
66 name=f'unit-tests-{module}',
67 target=f'{top}/unit-tests-{module}',
68 source=src,
69 use=f'{module}-objects tests-common unit-tests-{module}-main',
70 defines=[tmpdir],
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')