# Get the gtest/gmock dependencies. gtest_dep = dependency('gtest', main: true, disabler: true, required: false) gmock_dep = dependency('gmock', disabler: true, required: false) if not gtest_dep.found() or not gmock_dep.found() cmake = import('cmake') gtest_proj = cmake.subproject('googletest', required: false) if gtest_proj.found() gtest_dep = declare_dependency( dependencies: [ dependency('threads'), gtest_proj.dependency('gtest'), gtest_proj.dependency('gtest_main'), ] ) gmock_dep = gtest_proj.dependency('gmock') else assert(not get_option('tests').enabled(), 'Googletest is required if tests are enabled') endif endif ################################################################################ # Compile the test dts into a binary for pdbg. pdbg_test_dtb = custom_target('build_pdbg_test_dtb', input : files('pdbg-test.dts'), output : 'pdbg-test.dtb', command : [ find_program('dtc'), '-I', 'dts', '-O', 'dtb', '-o', '@OUTPUT@', '@INPUT@' ]) pdbg_env = 'PDBG_DTB=' + pdbg_test_dtb.full_path() ################################################################################ # IMPORTANT NOTE: # We cannot link to `util_lib` because: # - It is built without `-DTEST_TRACE` and any of the util functions that use # `trace.hpp` will throw a linker error because we don't have access to # phosphor-logging in test ... yet. # - Some functions related to pdbg and dbus simply cannot be built in the test # environment. Instead, there are alternate implementation of those # functions to simulate them for testing. test_args = [ '-DTEST_TRACE', package_args, ] test_util_srcs = [ files( '../util/data_file.cpp', '../util/ffdc_file.cpp', '../util/pdbg.cpp', '../util/temporary_file.cpp', 'dbus-sim-only.cpp', 'pdbg-sim-only.cpp', ), pdbg_test_dtb ] test_deps = [ libhei_dep, libpdbg_dep, gtest_dep, ] test_vars = [ pdbg_env, ] test_util_lib = static_library('test_util_lib', sources : test_util_srcs, include_directories : incdir, dependencies : test_deps, cpp_args : test_args, install : false, ) test_libs = [ analyzer_lib, attn_lib, test_util_lib, ] ################################################################################ tc = 'test-bin-stream' src = [ files( tc + '.cpp', ), ] dep = [ gtest_dep ] var = [ ] exe = executable(tc.underscorify(), src, dependencies: dep, link_with: test_libs, cpp_args: test_args, include_directories: incdir) test(tc, exe, env: var) ################################################################################ tc = 'test-ffdc-file' src = [ files( tc + '.cpp', ), ] dep = [ gtest_dep ] var = [ ] exe = executable(tc.underscorify(), src, dependencies: dep, link_with: test_libs, cpp_args: test_args, include_directories: incdir) test(tc, exe, env: var) ################################################################################ tc = 'test-lpc-timeout' src = [ files( tc + '.cpp', '../analyzer/plugins/p10-plugins.cpp', ), ] dep = [ libhei_dep, libpdbg_dep, gtest_dep ] var = [ pdbg_env ] exe = executable(tc.underscorify(), src, dependencies: dep, link_with: test_libs, cpp_args: test_args, include_directories: incdir) test(tc, exe, env: var) ################################################################################ tc = 'test-pdbg-dts' src = [ files( tc + '.cpp', ), ] dep = [ libhei_dep, libpdbg_dep, gtest_dep ] var = [ pdbg_env ] exe = executable(tc.underscorify(), src, dependencies: dep, link_with: test_libs, cpp_args: test_args, include_directories: incdir) test(tc, exe, env: var) ################################################################################ tc = 'test-pll-unlock' src = [ files( tc + '.cpp', '../analyzer/plugins/p10-plugins.cpp', ), ] dep = [ libhei_dep, libpdbg_dep, gtest_dep ] var = [ pdbg_env ] exe = executable(tc.underscorify(), src, dependencies: dep, link_with: test_libs, cpp_args: test_args, include_directories: incdir) test(tc, exe, env: var) ################################################################################ tc = 'test-resolution' src = [ files( tc + '.cpp', ), ] dep = [ libhei_dep, libpdbg_dep, gtest_dep ] var = [ pdbg_env ] exe = executable(tc.underscorify(), src, dependencies: dep, link_with: test_libs, cpp_args: test_args, include_directories: incdir) test(tc, exe, env: var) ################################################################################ tc = 'test-tod-step-check-fault' src = [ files( tc + '.cpp', '../analyzer/plugins/p10-tod-plugins.cpp', ), ] dep = [ libhei_dep, libpdbg_dep, gtest_dep ] var = [ pdbg_env ] exe = executable(tc.underscorify(), src, dependencies: dep, link_with: test_libs, cpp_args: test_args, include_directories: incdir) test(tc, exe, env: var) ################################################################################ tc = 'test-ti-handler' src = [ files( tc + '.cpp', ), ] dep = [ gtest_dep ] var = [ ] exe = executable(tc.underscorify(), src, dependencies: dep, link_with : hwdiags_libs, # TODO: should use test_libs instead cpp_args: test_args, include_directories: incdir) test(tc, exe, env: var) ################################################################################ tc = 'test-attention' src = [ files( tc + '.cpp', ), pdbg_test_dtb, ] dep = [ gtest_dep ] var = [ pdbg_env ] exe = executable(tc.underscorify(), src, dependencies: dep, link_with : hwdiags_libs, # TODO: should use test_libs instead cpp_args: test_args, include_directories: incdir) test(tc, exe, env: var) ################################################################################ tc = 'test-util-data-file' src = [ files( tc + '.cpp', ), ] dep = [ gtest_dep ] var = [ ] exe = executable(tc.underscorify(), src, dependencies: dep, link_with : hwdiags_libs, # TODO: should use test_libs instead cpp_args: test_args, include_directories: incdir) test(tc, exe, env: var) ################################################################################ tc = 'test-end2end' src = [ files( tc + '.cpp', '../cli.cpp', ), pdbg_test_dtb, ] dep = [ gtest_dep ] var = [ pdbg_env ] exe = executable(tc.underscorify(), src, dependencies: dep, link_with : hwdiags_libs, # TODO: should use test_libs instead cpp_args: test_args, include_directories: incdir) test(tc, exe, env: var)