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