1gtest_dep = dependency('gtest', main: true, disabler: true, required: false) 2gmock_dep = dependency('gmock', disabler: true, required: false) 3if not gtest_dep.found() or not gmock_dep.found() 4 gtest_proj = import('cmake').subproject('googletest', required: false) 5 if gtest_proj.found() 6 gtest_dep = declare_dependency( 7 dependencies: [ 8 dependency('threads'), 9 gtest_proj.dependency('gtest'), 10 gtest_proj.dependency('gtest_main'), 11 ] 12 ) 13 gmock_dep = gtest_proj.dependency('gmock') 14 else 15 assert( 16 not get_option('tests').enabled(), 17 'Googletest is required if tests are enabled' 18 ) 19 endif 20endif 21 22tests = [ 23 'async/context', 24 'async/task', 25 'bus/list_names', 26 'bus/match', 27 'event/event', 28 'exception/sdbus_error', 29 'message/append', 30 'message/call', 31 'message/native_types', 32 'message/read', 33 'message/types', 34 'timer', 35 'unpack_properties', 36 'utility/tuple_to_array', 37 'utility/type_traits', 38] 39 40foreach t : tests 41 test( 42 'test_' + t.underscorify(), 43 executable( 44 'test-' + t.underscorify(), 45 t + '.cpp', 46 dependencies: [ 47 gtest_dep, 48 gmock_dep, 49 sdbusplus_dep, 50 ], 51 ) 52 ) 53endforeach 54 55assert( 56 not get_option('tests').enabled() or boost_dep.found(), 57 'Boost is required when tests are enabled' 58) 59 60test( 61 'test-bus_aio', 62 executable( 63 'test-bus_aio', 64 'bus/aio.cpp', 65 dependencies: [ 66 boost_dep, 67 gmock_dep, 68 gtest_dep, 69 sdbusplus_dep, 70 ], 71 ) 72) 73 74test( 75 'test-vtable', 76 executable( 77 'test-vtable', 78 'vtable/vtable.cpp', 79 'vtable/vtable_c.c', 80 dependencies: [ 81 gtest_dep, 82 sdbusplus_dep, 83 ], 84 ), 85) 86 87generated_sources = [] 88generated_others = [] 89subdir('gen') 90subdir('gen/server') 91 92server_test_pre = declare_dependency( 93 include_directories: include_directories('gen'), 94 dependencies: sdbusplus_dep) 95 96server_test_lib = static_library( 97 'server-test', 98 generated_sources, 99 implicit_include_directories: false, 100 dependencies: server_test_pre) 101 102generated_sources_header = [] 103foreach s : generated_sources 104 foreach f : s.to_list() 105 if f.full_path().endswith('.hpp') 106 generated_sources_header += f 107 endif 108 endforeach 109endforeach 110 111server_test_dep = declare_dependency( 112 sources: generated_sources_header, 113 link_with: server_test_lib, 114 dependencies: server_test_pre) 115 116test( 117 'test-server', 118 executable( 119 'test-server', 120 'server/object.cpp', 121 dependencies: [ 122 gmock_dep, 123 gtest_dep, 124 server_test_dep, 125 ], 126 ), 127) 128 129test( 130 'test-server-message-variant', 131 executable( 132 'test-server-message-variant', 133 'server/message_variant.cpp', 134 dependencies: [ 135 gmock_dep, 136 gtest_dep, 137 server_test_dep, 138 ], 139 ), 140) 141