meson: Cleanup tests and make them execute again

The tests were previously building but not executing. Fix the build so
they execute and pass again.

Change-Id: I6e29eadd4f51cf47d05f7172f37c76688955ac61
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/test/meson.build b/test/meson.build
index 1cd4eef..cb9d8cc 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,60 +1,41 @@
-average_unittest = executable(
+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: [
+        dependency('threads'),
+        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 = [
     'average_unittest',
-    'average_unittest.cpp',
-    dependencies: [
-        gmock,
-        gtest,
-        hwmon_dep,
-    ],
-)
-
-env_unittest = executable(
     'env_unittest',
-    'env_unittest.cpp',
-    dependencies: [
-        gmock,
-        gtest,
-        hwmon_dep,
-    ],
-)
-
-fanpwm_unittest = executable(
     'fanpwm_unittest',
-    'fanpwm_unittest.cpp',
-    dependencies: [
-        gmock,
-        gtest,
-        hwmon_dep,
-    ],
-)
-
-hwmon_unittest = executable(
     'hwmon_unittest',
-    'hwmon_unittest.cpp',
-    dependencies: [
-        gmock,
-        gtest,
-        hwmon_dep,
-    ],
-)
-
-hwmonio_default_unittest = executable(
     'hwmonio_default_unittest',
-    'hwmonio_default_unittest.cpp',
-    dependencies: [
-        gtest,
-        gmock,
-        hwmon_dep,
-    ],
-)
-
-sensor_unittest = executable(
     'sensor_unittest',
-    'gpio.cpp',
-    'sensor_unittest.cpp',
-    dependencies: [
-        gtest,
-        gmock,
-        hwmon_dep,
-    ],
-)
+]
+
+foreach t : tests
+    test(
+        t,
+        executable(
+            t.underscorify(),
+            t + '.cpp',
+            'gpio.cpp',
+            implicit_include_directories: false,
+            dependencies: [hwmon_dep, gtest, gmock]))
+endforeach