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