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