gtest = dependency('gtest', main: true, disabler: true, required: false)
gmock = dependency('gmock', disabler: true, required: false)
if not gtest.found() or not gmock.found()
  gtest_opts = import('cmake').subproject_options()
  gtest_opts.add_cmake_defines({'CMAKE_CXX_FLAGS': '-Wno-pedantic'})
  gtest_proj = import('cmake').subproject(
    'googletest',
    options: gtest_opts,
    required: false)
  if gtest_proj.found()
    gtest = declare_dependency(
      dependencies: [
        threads_dep,
        gtest_proj.dependency('gtest'),
        gtest_proj.dependency('gtest_main'),
      ])
    gmock = gtest_proj.dependency('gmock')
  else
    assert(not build_tests.enabled(), 'Googletest is required')
  endif
endif

tests = [
  'firmware_mtd_updater_unittest',
  'firmware_spi_updater_unittest',
  'message_file_unittest',
  'message_reinit_unittest',
  'message_util_unittest',
  'mtd_util_unittest',
  'host_command_unittest',
  'payload_update_unittest',
  'ec_util_unittest',
  'hoth_unittest',
  'hoth_state_unittest',
  'log_collector_util_test',
] + (not libusb_dep.found() ? [ ] : [
  'message_usb_unittest',
])

foreach t : tests
  test(t, executable(t.underscorify(), t + '.cpp',
                     implicit_include_directories: false,
                     dependencies: [libhothd_dep, gtest, gmock]))
endforeach
