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
23test_arg = [
24    '-DTEST_TRACE',
25]
26
27# Compile the test dts into a binary for pdbg.
28pdbg_test_dtb = custom_target('build_pdbg_test_dtb',
29    input   : files('pdbg_test.dts'),
30    output  : 'pdbg_test.dtb',
31    command : [ find_program('dtc'), '-I', 'dts', '-O', 'dtb',
32                '-o', '@OUTPUT@', '@INPUT@' ])
33
34# end2end code exerciser for experiment and testing
35subdir('end2end')
36
37tests = [
38  'bin_stream_test',
39  'ffdc_file_test',
40  'resolution_test',
41  'pdbg_dts_test',
42  'test-lpc-timeout',
43  'test-pll-unlock',
44]
45
46analyzer_src = files(
47  '../analyzer/plugins/p10-plugins.cpp',
48  '../analyzer/service_data.cpp',
49  '../analyzer/resolution.cpp',
50)
51
52# We cannot link to `util_lib` because that is built without `-DTEST_TRACE` and
53# any of the util functions that use `trace.hpp` will throw a linker error
54# because we don't have access to phosphor-logging in test ... yet.
55util_src = files(
56    '../util/ffdc_file.cpp',
57    '../util/pdbg.cpp',
58    '../util/temporary_file.cpp',
59)
60
61sim_src = files(
62  'pdbg-sim-only.cpp',
63)
64
65foreach t : tests
66    test(t,
67         executable(t.underscorify(),
68                    [ files(t + '.cpp'), pdbg_test_dtb,
69                      analyzer_src, util_src, sim_src ],
70                    dependencies : [ libhei_dep, libpdbg_dep, gtest_dep ],
71                    cpp_args : test_arg,
72                    include_directories : incdir),
73         env : [ 'PDBG_DTB=' + pdbg_test_dtb.full_path() ])
74endforeach
75