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# Compile the test dts into a binary for pdbg.
26pdbg_test_dtb = custom_target('build_pdbg_test_dtb',
27    input   : files('pdbg-test.dts'),
28    output  : 'pdbg-test.dtb',
29    command : [ find_program('dtc'), '-I', 'dts', '-O', 'dtb',
30                '-o', '@OUTPUT@', '@INPUT@' ])
31
32pdbg_env = 'PDBG_DTB=' + pdbg_test_dtb.full_path()
33
34################################################################################
35
36# Add gtest/gmock dependency to the list of test dependencies.
37test_deps = [
38  test_util_deps,
39  gtest_dep,
40]
41
42test_vars = [
43  pdbg_env,
44  'LG2_FORCE_STDERR=true',
45]
46
47# Additional SRCs that are not (or should not be) included in libraries.
48# NOTE: Try to limit this, if possible, to prevent duplicate compilation.
49test_additional_srcs = [
50  files(
51    '../analyzer/plugins/p10-plugins.cpp',
52    '../analyzer/plugins/p10-tod-plugins.cpp',
53    '../cli.cpp',
54  ),
55  pdbg_test_dtb
56]
57
58################################################################################
59
60testcases = [
61  'test-bin-stream',
62  'test-ffdc-file',
63  'test-lpc-timeout',
64  'test-pdbg-dts',
65  'test-pll-unlock',
66  'test-resolution',
67  'test-tod-step-check-fault',
68]
69
70foreach tc : testcases
71
72  exe = executable(tc.underscorify(),
73    sources             : [ files(tc + '.cpp'), test_additional_srcs ],
74    include_directories : incdir,
75    dependencies        : test_deps,
76    cpp_args            : test_args,
77    link_with           : test_libs,
78  )
79
80  test(tc, exe, env: test_vars)
81
82endforeach
83
84################################################################################
85
86testcases = [
87  'test-attention',
88  'test-end2end',
89  'test-util-data-file',
90  'test-ti-handler',
91]
92
93foreach tc : testcases
94
95  exe = executable(tc.underscorify(),
96    sources             : [ files(tc + '.cpp'), test_additional_srcs ],
97    include_directories : incdir,
98    dependencies        : test_deps,
99    cpp_args            : test_args,
100    link_with           : hwdiags_libs, # TODO: should use test_libs instead
101  )
102
103  test(tc, exe, env: test_vars)
104
105endforeach
106
107