1gtest = dependency('gtest', main: true, disabler: true, required: false) 2gmock = dependency('gmock', disabler: true, required: false) 3if not gtest.found() or not gmock.found() 4 gtest_opts = import('cmake').subproject_options() 5 gtest_opts.add_cmake_defines({'CMAKE_CXX_FLAGS': '-Wno-pedantic'}) 6 gtest_proj = import('cmake').subproject( 7 'googletest', 8 options: gtest_opts, 9 required: false, 10 ) 11 if gtest_proj.found() 12 gtest = declare_dependency( 13 dependencies: [ 14 dependency('threads'), 15 gtest_proj.dependency('gtest'), 16 gtest_proj.dependency('gtest_main'), 17 ], 18 ) 19 gmock = gtest_proj.dependency('gmock') 20 else 21 assert(not get_option('tests').enabled(), 'Googletest is required') 22 endif 23endif 24 25test_headers = include_directories('.') 26 27test_deps = [ 28 meson.get_compiler('cpp').find_library('dl'), 29 networkd_dep, 30 gtest, 31 gmock, 32 dependency('stdplus-gtest'), 33] 34 35test_lib = static_library( 36 'networkd-test', 37 'mock_syscall.cpp', 38 implicit_include_directories: false, 39 include_directories: test_headers, 40 dependencies: test_deps, 41) 42 43test_dep = declare_dependency( 44 dependencies: test_deps, 45 include_directories: test_headers, 46 link_with: test_lib, 47) 48 49tests = [ 50 'config_parser', 51 'ethernet_interface', 52 'netlink', 53 'network_manager', 54 'rtnetlink', 55 'types', 56 'util', 57] 58 59run_with_tmp = find_program('run_with_tmp', native: true) 60 61add_test_setup( 62 'networkd', 63 exe_wrapper: run_with_tmp, 64 env: {'TMPTMPL': 'phosphor-networkd-test.XXXXXXXXXX'}, 65 is_default: true, 66) 67 68add_test_setup( 69 'valgrind', 70 exe_wrapper: [run_with_tmp, 'valgrind'], 71 env: {'TMPTMPL': 'phosphor-networkd-test.XXXXXXXXXX'}, 72) 73 74foreach t : tests 75 test( 76 t, 77 executable( 78 t.underscorify(), 79 'test_' + t + '.cpp', 80 implicit_include_directories: false, 81 dependencies: test_dep, 82 ), 83 ) 84endforeach 85 86if (get_option('hyp-nw-config') == true) 87 subdir('ibm/hypervisor-network-mgr-test') 88endif 89