xref: /openbmc/phosphor-networkd/test/meson.build (revision 297a63b46b2eae315e91b2c69239e23dbf52c22e)
1gtest = dependency('gtest', main: true, disabler: true, required: false)
2gmock = dependency('gmock', disabler: true, required: false)
3if not gtest.found() or not gmock.found()
4    gtest_opts = import('cmake').subproject_options()
5    gtest_opts.add_cmake_defines({'CMAKE_CXX_FLAGS': '-Wno-pedantic'})
6    gtest_proj = import('cmake').subproject(
7        'googletest',
8        options: gtest_opts,
9        required: false,
10    )
11    if gtest_proj.found()
12        gtest = declare_dependency(
13            dependencies: [
14                dependency('threads'),
15                gtest_proj.dependency('gtest'),
16                gtest_proj.dependency('gtest_main'),
17            ],
18        )
19        gmock = gtest_proj.dependency('gmock')
20    else
21        assert(not get_option('tests').enabled(), 'Googletest is required')
22    endif
23endif
24
25test_headers = include_directories('.')
26
27test_deps = [
28    meson.get_compiler('cpp').find_library('dl'),
29    networkd_dep,
30    gtest,
31    gmock,
32    dependency('stdplus-gtest'),
33]
34
35test_lib = static_library(
36    'networkd-test',
37    'mock_syscall.cpp',
38    implicit_include_directories: false,
39    include_directories: test_headers,
40    dependencies: test_deps,
41)
42
43test_dep = declare_dependency(
44    dependencies: test_deps,
45    include_directories: test_headers,
46    link_with: test_lib,
47)
48
49tests = [
50    'config_parser',
51    'ethernet_interface',
52    'netlink',
53    'network_manager',
54    'rtnetlink',
55    'types',
56    'util',
57]
58
59run_with_tmp = find_program('run_with_tmp', native: true)
60
61add_test_setup(
62    'networkd',
63    exe_wrapper: run_with_tmp,
64    env: {'TMPTMPL': 'phosphor-networkd-test.XXXXXXXXXX'},
65    is_default: true,
66)
67
68add_test_setup(
69    'valgrind',
70    exe_wrapper: [run_with_tmp, 'valgrind'],
71    env: {'TMPTMPL': 'phosphor-networkd-test.XXXXXXXXXX'},
72)
73
74foreach t : tests
75    test(
76        t,
77        executable(
78            t.underscorify(),
79            'test_' + t + '.cpp',
80            implicit_include_directories: false,
81            dependencies: test_dep,
82        ),
83    )
84endforeach
85
86if (get_option('hyp-nw-config') == true)
87    subdir('ibm/hypervisor-network-mgr-test')
88endif
89