1# Get the gtest/gmock dependencies.
2gtest_dep = dependency('gtest', main: true, disabler: true, required: false)
3gmock_dep = dependency('gmock', disabler: true, required: false)
4if not gtest_dep.found() or not gmock_dep.found()
5    cmake = import('cmake')
6    gtest_proj = cmake.subproject('googletest',
7                                  required: false)
8    if gtest_proj.found()
9        gtest_dep = declare_dependency(
10            dependencies: [
11                dependency('threads'),
12                gtest_proj.dependency('gtest'),
13                gtest_proj.dependency('gtest_main'),
14            ]
15        )
16        gmock_dep = gtest_proj.dependency('gmock')
17    else
18        assert(not get_option('tests').enabled(),
19               'Googletest is required if tests are enabled')
20    endif
21endif
22
23################################################################################
24
25# NOTE: We cannot link to `util_lib` because that is built without
26#       `-DTEST_TRACE` and any of the util functions that use `trace.hpp` will
27#       throw a linker error because we don't have access to phosphor-logging
28#       in test ... yet.
29
30test_arg = [
31    '-DTEST_TRACE',
32    package_args,
33]
34
35# Compile the test dts into a binary for pdbg.
36pdbg_test_dtb = custom_target('build_pdbg_test_dtb',
37    input   : files('pdbg-test.dts'),
38    output  : 'pdbg-test.dtb',
39    command : [ find_program('dtc'), '-I', 'dts', '-O', 'dtb',
40                '-o', '@OUTPUT@', '@INPUT@' ])
41
42pdbg_env = 'PDBG_DTB=' + pdbg_test_dtb.full_path()
43
44# end2end code exerciser for experiment and testing
45subdir('end2end')
46
47################################################################################
48
49tc = 'test-bin-stream'
50
51src = [
52  files(
53    tc + '.cpp',
54  ),
55]
56
57dep = [ gtest_dep ]
58
59var = [ ]
60
61exe = executable(tc.underscorify(), src, dependencies: dep,
62                 cpp_args: test_arg, include_directories: incdir)
63
64test(tc, exe, env: var)
65
66################################################################################
67
68tc = 'test-ffdc-file'
69
70src = [
71  files(
72    tc + '.cpp',
73    '../util/ffdc_file.cpp',
74    '../util/temporary_file.cpp',
75  ),
76]
77
78dep = [ gtest_dep ]
79
80var = [ ]
81
82exe = executable(tc.underscorify(), src, dependencies: dep,
83                 cpp_args: test_arg, include_directories: incdir)
84
85test(tc, exe, env: var)
86
87################################################################################
88
89tc = 'test-lpc-timeout'
90
91src = [
92  files(
93    tc + '.cpp',
94    '../analyzer/plugins/p10-plugins.cpp',
95    '../analyzer/service_data.cpp',
96    '../util/pdbg.cpp',
97    'dbus-sim-only.cpp',
98    'pdbg-sim-only.cpp',
99  ),
100  pdbg_test_dtb,
101]
102
103dep = [ libhei_dep, libpdbg_dep, gtest_dep ]
104
105var = [ pdbg_env ]
106
107exe = executable(tc.underscorify(), src, dependencies: dep,
108                 cpp_args: test_arg, include_directories: incdir)
109
110test(tc, exe, env: var)
111
112################################################################################
113
114tc = 'test-pdbg-dts'
115
116src = [
117  files(
118    tc + '.cpp',
119    '../util/pdbg.cpp',
120    'dbus-sim-only.cpp',
121    'pdbg-sim-only.cpp',
122  ),
123  pdbg_test_dtb,
124]
125
126dep = [ libhei_dep, libpdbg_dep, gtest_dep ]
127
128var = [ pdbg_env ]
129
130exe = executable(tc.underscorify(), src, dependencies: dep,
131                 cpp_args: test_arg, include_directories: incdir)
132
133test(tc, exe, env: var)
134
135################################################################################
136
137tc = 'test-pll-unlock'
138
139src = [
140  files(
141    tc + '.cpp',
142    '../analyzer/plugins/p10-plugins.cpp',
143    '../analyzer/ras-data/ras-data-parser.cpp',
144    '../analyzer/resolution.cpp',
145    '../analyzer/service_data.cpp',
146    '../util/data_file.cpp',
147    '../util/pdbg.cpp',
148    'dbus-sim-only.cpp',
149    'pdbg-sim-only.cpp',
150  ),
151  pdbg_test_dtb,
152]
153
154dep = [ libhei_dep, libpdbg_dep, gtest_dep ]
155
156var = [ pdbg_env ]
157
158exe = executable(tc.underscorify(), src, dependencies: dep,
159                 cpp_args: test_arg, include_directories: incdir)
160
161test(tc, exe, env: var)
162
163################################################################################
164
165tc = 'test-resolution'
166
167src = [
168  files(
169    tc + '.cpp',
170    '../analyzer/resolution.cpp',
171    '../analyzer/service_data.cpp',
172    '../util/pdbg.cpp',
173    'dbus-sim-only.cpp',
174    'pdbg-sim-only.cpp',
175  ),
176  pdbg_test_dtb,
177]
178
179dep = [ libhei_dep, libpdbg_dep, gtest_dep ]
180
181var = [ pdbg_env ]
182
183exe = executable(tc.underscorify(), src, dependencies: dep,
184                 cpp_args: test_arg, include_directories: incdir)
185
186test(tc, exe, env: var)
187
188################################################################################
189
190tc = 'test-tod-step-check-fault'
191
192src = [
193  files(
194    tc + '.cpp',
195    '../analyzer/plugins/p10-tod-plugins.cpp',
196    '../analyzer/service_data.cpp',
197    '../util/pdbg.cpp',
198    'dbus-sim-only.cpp',
199    'pdbg-sim-only.cpp',
200  ),
201  pdbg_test_dtb,
202]
203
204dep = [ libhei_dep, libpdbg_dep, gtest_dep ]
205
206var = [ pdbg_env ]
207
208exe = executable(tc.underscorify(), src, dependencies: dep,
209                 cpp_args: test_arg, include_directories: incdir)
210
211test(tc, exe, env: var)
212
213################################################################################
214
215tc = 'test-ti-handler'
216
217src = [
218  files(
219    tc + '.cpp',
220  ),
221]
222
223dep = [ gtest_dep ]
224
225var = [ ]
226
227exe = executable(tc.underscorify(), src, dependencies: dep,
228                 link_with : hwdiags_libs,
229                 cpp_args: test_arg, include_directories: incdir)
230
231test(tc, exe, env: var)
232
233################################################################################
234
235tc = 'test-attention'
236
237src = [
238  files(
239    tc + '.cpp',
240  ),
241  pdbg_test_dtb,
242]
243
244dep = [ gtest_dep ]
245
246var = [ pdbg_env ]
247
248exe = executable(tc.underscorify(), src, dependencies: dep,
249                 link_with : hwdiags_libs,
250                 cpp_args: test_arg, include_directories: incdir)
251
252test(tc, exe, env: var)
253