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