use multiple test targets

https://gerrit.openbmc.org/c/openbmc/bmcweb/+/57648/8 is unfortunately
rejected by some CI issues where # lines covered by unit test is not
consistent.

Thus, this commit is written to bypass subdir, but still addes the
ability to run a test for a specific component. This speeds up iteration
when developers are working on a subset of the project.

For example, we can compile and run the query_param_test separately. The
speed up will be more obvious when we have better solution to deal with
the current headers and inline functions in the future.

```
meson test query_param_test -C b
ninja: Entering directory `/usr/local/google/home/nanzhou/Desktop/bmcweb/b'
ninja: no work to do.
1/1 query_param_test        OK              0.01s

Ok:                 1
Expected Fail:      0
Fail:               0
Unexpected Pass:    0
Skipped:            0
Timeout:            0
```

The compile time increases a little bit. This doesn't matter too much
given tests are disabled in Yocto builds.

```
[hi on] nanzhou@nanzhou:~/Desktop/bmcweb$ time ninja test -C b
ninja: Entering directory `b'
[49/50] Running all tests.
1/1 bmcweb_unit_test        OK              0.07s


Ok:                 1
Expected Fail:      0
Fail:               0
Unexpected Pass:    0
Skipped:            0
Timeout:            0

Full log written to /usr/local/google/home/nanzhou/Desktop/bmcweb/b/meson-logs/testlog.txt

real    1m56.361s
user    12m11.587s
sys     1m15.924s


[hi on] nanzhou@nanzhou:~/Desktop/bmcweb$ time ninja test -C b
ninja: Entering directory `b'
[247/248] Running all tests.
 1/23 crow_getroutes_test              OK              0.34s
 2/23 router_test                      OK              0.31s
 3/23 utility_test                     OK              0.29s
 4/23 dbus_utility_test                OK              0.28s
 5/23 google_service_root_test         OK              0.27s
 6/23 http_utility_test                OK              0.26s
 7/23 human_sort_test                  OK              0.24s
 8/23 multipart_test                   OK              0.21s
 9/23 openbmc_dbus_rest_test           OK              0.20s
10/23 privileges_test                  OK              0.18s
11/23 registries_test                  OK              0.17s
12/23 hex_utils_test                   OK              0.16s
13/23 ip_utils_test                    OK              0.15s
14/23 json_utils_test                  OK              0.15s
15/23 query_param_test                 OK              0.13s
16/23 stl_utils_test                   OK              0.12s
17/23 chassis_test                     OK              0.10s
18/23 service_root_test                OK              0.04s
19/23 thermal_subsystem_test           OK              0.03s
20/23 configfile_test                  OK              0.23s
21/23 lock_test                        OK              0.22s
22/23 time_utils_test                  OK              0.11s
23/23 log_services_dump_test           OK              0.07s


Ok:                 23
Expected Fail:      0
Fail:               0
Unexpected Pass:    0
Skipped:            0
Timeout:            0

Full log written to /usr/local/google/home/nanzhou/Desktop/bmcweb/b/meson-logs/testlog.txt

real    2m8.792s
user    29m15.844s
sys     3m10.264s
```


Signed-off-by: Nan Zhou <nanzhoumails@gmail.com>
Change-Id: I6f763173c1e7de96ab757673fb5ed0a73e4532f5
diff --git a/meson.build b/meson.build
index 1024761..3e45e82 100644
--- a/meson.build
+++ b/meson.build
@@ -334,8 +334,9 @@
 bmcweb_dependencies += conf_h_dep
 
 # Source files
+fs = import('fs')
 
-srcfiles_bmcweb = [
+srcfiles_bmcweb = files(
   'redfish-core/src/error_messages.cpp',
   'redfish-core/src/utils/json_utils.cpp',
   'src/boost_asio_ssl.cpp',
@@ -343,7 +344,7 @@
   'src/boost_beast.cpp',
   'src/boost_url.cpp',
   'src/dbus_singleton.cpp',
-]
+)
 
 # Generate the bmcweb executable
 executable(
@@ -356,7 +357,7 @@
   install_dir:bindir
 )
 
-srcfiles_unittest = [
+srcfiles_unittest = files(
   'test/http/crow_getroutes_test.cpp',
   'test/http/router_test.cpp',
   'test/http/utility_test.cpp',
@@ -380,19 +381,21 @@
   'test/redfish-core/lib/log_services_dump_test.cpp',
   'test/redfish-core/lib/service_root_test.cpp',
   'test/redfish-core/lib/thermal_subsystem_test.cpp',
-]
+)
 
 if(get_option('tests').enabled())
     # generate the test executable
-    ut_bin = executable(
-      'bmcweb_unit_test',
-      srcfiles_unittest + srcfiles_bmcweb,
-      include_directories : incdir,
-      install_dir: bindir,
-      dependencies: bmcweb_dependencies + [
-        gtest,
-        gmock,
-      ]
-    )
-    test('bmcweb_unit_test', ut_bin)
+    foreach test_src : srcfiles_unittest
+      test_bin = executable(
+        fs.stem(test_src),
+        srcfiles_bmcweb + test_src,
+        include_directories : incdir,
+        install_dir: bindir,
+        dependencies: bmcweb_dependencies + [
+          gtest,
+          gmock,
+        ]
+      )
+      test(fs.stem(test_src), test_bin)
+    endforeach
 endif