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