xref: /openbmc/sdbusplus/test/meson.build (revision 0cfa35a53ad6c7d580be0ca602aec13d6ba55e89)
1gtest_dep = dependency('gtest', main: true, disabler: true, required: false)
2gmock_dep = dependency('gmock', disabler: true, required: false)
3if not gtest_dep.found() or not gmock_dep.found()
4    gtest_proj = import('cmake').subproject('googletest', required: false)
5    if gtest_proj.found()
6        gtest_dep = declare_dependency(
7            dependencies: [
8                dependency('threads'),
9                gtest_proj.dependency('gtest'),
10                gtest_proj.dependency('gtest_main'),
11            ],
12        )
13        gmock_dep = gtest_proj.dependency('gmock')
14    else
15        assert(
16            not get_option('tests').enabled(),
17            'Googletest is required if tests are enabled',
18        )
19    endif
20endif
21
22tests = [
23    'async/context',
24    'async/task',
25    'async/timer',
26    'async/fdio',
27    'bus/exception',
28    'bus/list_names',
29    'bus/match',
30    'event/event',
31    'exception/sdbus_error',
32    'message/append',
33    'message/call',
34    'message/native_types',
35    'message/read',
36    'message/types',
37    'timer',
38    'unpack_properties',
39    'utility/tuple_to_array',
40    'utility/type_traits',
41]
42
43foreach t : tests
44    test(
45        'test_' + t.underscorify(),
46        executable(
47            'test-' + t.underscorify(),
48            t + '.cpp',
49            dependencies: [gtest_dep, gmock_dep, sdbusplus_dep],
50        ),
51    )
52endforeach
53
54assert(
55    not get_option('tests').allowed() or boost_dep.found(),
56    'Boost is required when tests are enabled',
57)
58
59test(
60    'test-bus_aio',
61    executable(
62        'test-bus_aio',
63        'bus/aio.cpp',
64        dependencies: [boost_dep, gmock_dep, gtest_dep, sdbusplus_dep],
65    ),
66)
67
68test(
69    'test-vtable',
70    executable(
71        'test-vtable',
72        'vtable/vtable.cpp',
73        'vtable/vtable_c.c',
74        dependencies: [gtest_dep, sdbusplus_dep],
75    ),
76)
77
78yaml_selected_subdirs = ['server']
79subdir('gen')
80
81server_test_pre = declare_dependency(
82    include_directories: include_directories('gen'),
83    dependencies: sdbusplus_dep,
84)
85
86server_test_lib = static_library(
87    'server-test',
88    generated_sources,
89    implicit_include_directories: false,
90    dependencies: server_test_pre,
91)
92
93server_test_dep = declare_dependency(
94    sources: generated_headers,
95    link_with: server_test_lib,
96    dependencies: server_test_pre,
97)
98
99test(
100    'test-server',
101    executable(
102        'test-server',
103        'server/object.cpp',
104        dependencies: [gmock_dep, gtest_dep, server_test_dep],
105    ),
106)
107
108test(
109    'test-server-message-variant',
110    executable(
111        'test-server-message-variant',
112        'server/message_variant.cpp',
113        dependencies: [gmock_dep, gtest_dep, server_test_dep],
114    ),
115)
116
117uninit_tests = [
118    'test_server_no_uninitialized_value_constructor',
119    'test_aserver_no_uninitialized_value_constructor',
120]
121
122foreach t : uninit_tests
123    test(
124        t,
125        executable(
126            t,
127            f'gen/@t@.cpp',
128            generated_sources,
129            include_directories: [root_inc],
130            dependencies: [sdbusplus_dep, server_test_dep],
131        ),
132    )
133endforeach
134