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