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