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