1gtest = dependency('gtest', main: true, disabler: true, required: false) 2gmock = dependency('gmock', disabler: true, required: false) 3 4if not gtest.found() or not gmock.found() 5 gtest_proj = import('cmake').subproject('googletest', required: false) 6 if gtest_proj.found() 7 gtest = declare_dependency( 8 dependencies: [ 9 dependency('threads'), 10 gtest_proj.dependency('gtest'), 11 gtest_proj.dependency('gtest_main'), 12 ], 13 ) 14 gmock = gtest_proj.dependency('gmock') 15 else 16 assert(not get_option('tests').enabled(), 'Googletest is required') 17 endif 18endif 19 20swampd_sources = include_directories('../') 21 22unit_tests = [ 23 'dbus_passive_unittest', 24 'dbus_util_unittest', 25 'json_parse_unittest', 26 'pid_json_unittest', 27 'pid_fancontroller_unittest', 28 'pid_stepwisecontroller_unittest', 29 'pid_thermalcontroller_unittest', 30 'pid_zone_unittest', 31 'sensor_host_unittest', 32 'sensor_manager_unittest', 33 'sensor_pluggable_unittest', 34 'sensors_json_unittest', 35 'util_unittest', 36] 37 38unittest_source = { 39 'dbus_passive_unittest': [ 40 '../dbus/dbuspassive.cpp', 41 '../dbus/dbuspassiveredundancy.cpp', 42 '../dbus/dbusutil.cpp', 43 '../failsafeloggers/failsafe_logger_utility.cpp', 44 ], 45 'dbus_util_unittest': ['../dbus/dbusutil.cpp'], 46 'json_parse_unittest': ['../buildjson/buildjson.cpp'], 47 'pid_json_unittest': ['../pid/buildjson.cpp', '../util.cpp'], 48 'pid_fancontroller_unittest': [ 49 '../pid/ec/pid.cpp', 50 '../pid/ec/logging.cpp', 51 '../pid/fancontroller.cpp', 52 '../pid/pidcontroller.cpp', 53 '../pid/tuning.cpp', 54 '../pid/util.cpp', 55 ], 56 'pid_stepwisecontroller_unittest': [ 57 '../pid/ec/stepwise.cpp', 58 '../pid/stepwisecontroller.cpp', 59 '../pid/tuning.cpp', 60 '../pid/util.cpp', 61 ], 62 'pid_thermalcontroller_unittest': [ 63 '../pid/ec/pid.cpp', 64 '../pid/ec/logging.cpp', 65 '../pid/pidcontroller.cpp', 66 '../pid/thermalcontroller.cpp', 67 '../pid/tuning.cpp', 68 '../pid/util.cpp', 69 ], 70 'pid_zone_unittest': [ 71 '../failsafeloggers/builder.cpp', 72 '../failsafeloggers/failsafe_logger.cpp', 73 '../failsafeloggers/failsafe_logger_utility.cpp', 74 '../pid/ec/pid.cpp', 75 '../pid/ec/logging.cpp', 76 '../pid/pidcontroller.cpp', 77 '../pid/tuning.cpp', 78 '../pid/zone.cpp', 79 '../sensors/manager.cpp', 80 ], 81 'sensor_host_unittest': [ 82 '../failsafeloggers/failsafe_logger.cpp', 83 '../failsafeloggers/failsafe_logger_utility.cpp', 84 '../sensors/host.cpp', 85 ], 86 'sensor_manager_unittest': ['../sensors/manager.cpp'], 87 'sensor_pluggable_unittest': ['../sensors/pluggable.cpp'], 88 'sensors_json_unittest': ['../sensors/buildjson.cpp'], 89 'util_unittest': ['../sensors/build_utils.cpp'], 90} 91 92foreach t : unit_tests 93 test( 94 t, 95 executable( 96 t.underscorify(), 97 t + '.cpp', 98 unittest_source.get(t), 99 include_directories: [swampd_sources], 100 link_args: dynamic_linker, 101 build_rpath: get_option('oe-sdk').allowed() ? rpath : '', 102 dependencies: [gtest, gmock, deps], 103 ), 104 ) 105endforeach 106