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/filter-root-cause.cpp', 52 '../analyzer/plugins/ody-plugins.cpp', 53 '../analyzer/plugins/p10-plugins.cpp', 54 '../analyzer/plugins/p10-tod-plugins.cpp', 55 '../cli.cpp', 56 ), 57 pdbg_test_dtb 58] 59 60################################################################################ 61 62testcases = [ 63 'test-bin-stream', 64 'test-ffdc-file', 65 'test-lpc-timeout', 66 'test-pdbg-dts', 67 'test-pll-unlock', 68 'test-resolution', 69 'test-root-cause-filter', 70 'test-tod-step-check-fault', 71 'test-cli', 72] 73 74foreach tc : testcases 75 76 exe = executable(tc.underscorify(), 77 sources : [ files(tc + '.cpp'), test_additional_srcs ], 78 include_directories : incdir, 79 dependencies : test_deps, 80 cpp_args : test_args, 81 link_with : test_libs, 82 ) 83 84 test(tc, exe, env: test_vars) 85 86endforeach 87 88################################################################################ 89 90testcases = [ 91 'test-attention', 92 'test-end2end', 93 'test-util-data-file', 94 'test-ti-handler', 95] 96 97# allow more time for long running tests 98longtests = { 99 'test-end2end': 2, 100} 101 102foreach tc : testcases 103 104 exe = executable(tc.underscorify(), 105 sources : [ files(tc + '.cpp'), test_additional_srcs ], 106 include_directories : incdir, 107 dependencies : test_deps, 108 cpp_args : test_args, 109 link_with : hwdiags_libs, # TODO: should use test_libs instead 110 ) 111 112 test(tc, exe, env: test_vars, timeout: 30 * longtests.get(tc, 1)) 113 114endforeach 115 116