xref: /openbmc/sdbusplus/test/meson.build (revision 7c0fb15f6bca1fb107d4c55006a5eed9bd82b325)
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
22subdir('async')
23subdir('timer')
24
25tests = [
26    'bus/exception',
27    'bus/list_names',
28    'bus/match',
29    'event/event',
30    'exception/sdbus_error',
31    'message/append',
32    'message/call',
33    'message/native_types',
34    'message/read',
35    'message/types',
36    'unpack_properties',
37    'utility/make_dbus_args_tuple',
38    'utility/tuple_to_array',
39    'utility/type_traits',
40]
41
42foreach t : tests
43    test(
44        'test_' + t.underscorify(),
45        executable(
46            'test-' + t.underscorify(),
47            t + '.cpp',
48            dependencies: [gtest_dep, gmock_dep, sdbusplus_dep],
49        ),
50    )
51endforeach
52
53assert(
54    not get_option('tests').allowed() or boost_dep.found(),
55    'Boost is required when tests are enabled',
56)
57
58test(
59    'test-bus_aio',
60    executable(
61        'test-bus_aio',
62        'bus/aio.cpp',
63        dependencies: [boost_dep, gmock_dep, gtest_dep, sdbusplus_dep],
64    ),
65)
66
67test(
68    'test-vtable',
69    executable(
70        'test-vtable',
71        'vtable/vtable.cpp',
72        'vtable/vtable_c.c',
73        dependencies: [gtest_dep, sdbusplus_dep],
74    ),
75)
76
77yaml_selected_subdirs = ['server']
78subdir('gen')
79
80server_test_pre = declare_dependency(
81    include_directories: include_directories('gen'),
82    dependencies: sdbusplus_dep,
83)
84
85server_test_lib = static_library(
86    'server-test',
87    generated_sources,
88    implicit_include_directories: false,
89    dependencies: server_test_pre,
90)
91
92server_test_dep = declare_dependency(
93    sources: generated_headers,
94    link_with: server_test_lib,
95    dependencies: server_test_pre,
96)
97
98test(
99    'test-server',
100    executable(
101        'test-server',
102        'server/object.cpp',
103        dependencies: [gmock_dep, gtest_dep, server_test_dep],
104    ),
105)
106
107test(
108    'test-server-message-variant',
109    executable(
110        'test-server-message-variant',
111        'server/message_variant.cpp',
112        dependencies: [gmock_dep, gtest_dep, server_test_dep],
113    ),
114)
115
116uninit_tests = [
117    'test_server_no_uninitialized_value_constructor',
118    'test_aserver_no_uninitialized_value_constructor',
119    'test_aserver_emit_interfaces_added_signal',
120    'test_aserver_multiple_interfaces',
121    'test_property_names',
122    'test_method_names',
123    'test_signal_names',
124]
125
126foreach t : uninit_tests
127    test(
128        t,
129        executable(
130            t,
131            f'gen/@t@.cpp',
132            generated_sources,
133            include_directories: [root_inc],
134            dependencies: [sdbusplus_dep, server_test_dep, gtest_dep],
135        ),
136    )
137endforeach
138