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