GoogleTest : "add_test called with incorrect number of arguments" issue raised from gtest_discovery_tests and silently ignored
This single problem we just hit might probably indicate more than one issue underneath, but I don't feel competent enough to judge.
We used GoogleTest
module from CMake 3.18.0-rc4 while using CMake 3.13.3. The use included DISCOVERY_MODE
set to PRE_TEST
. And while running CTest we got this message:
Create new tag: 20200728-0832 - Experimental
Test project /var/fpwork/abadura/MN/RPSW/BM/bm/build/ims.testing
CMake Error at /home/abadura/fpwork/MN/RPSW/BM/bm/build/ims.testing/ims/InfoModel/Testing/Unit/InfoModelTestingUnit[1]_tests.cmake:5801 (add_test):
add_test called with incorrect number of arguments
Call Stack (most recent call first):
/home/abadura/fpwork/MN/RPSW/BM/bm/build/ims.testing/ims/InfoModel/Testing/Unit/InfoModelTestingUnit[1]_include.cmake:20 (include)
/var/fpwork/abadura/MN/RPSW/BM/bm/build/ims.testing/ims/InfoModel/Testing/Unit/CTestTestfile.cmake:7 (include)
/var/fpwork/abadura/MN/RPSW/BM/bm/build/ims.testing/ims/InfoModel/Testing/CTestTestfile.cmake:9 (subdirs)
/var/fpwork/abadura/MN/RPSW/BM/bm/build/ims.testing/ims/InfoModel/CTestTestfile.cmake:7 (subdirs)
/var/fpwork/abadura/MN/RPSW/BM/bm/build/ims.testing/ims/CTestTestfile.cmake:10 (subdirs)
CTestTestfile.cmake:8 (subdirs)
The problematic line 5801 looks like this:
add_test( [==[ut_utility_stub_IMIClient_receive_IMUpdateNotification/ut_utility_stub_IMIClient_receive_IMUpdateNotification.receive_IMUpdateNotification/IMUpdateNotification{\nobjects:[\n0:{\nobject_info:{\nobject_create_info:{\ninstance_id:1\nparent_id:"<none>"\ncreator_id:789\n...;receive_IMUpdateNotification/IMUpdateNotification{\nobjects:[\n0:{\nobject_info:{\nobject_create_info:{\ninstance_id:1\nparent_id:"<none>"\ncreator_id:789\n...;ut_utility_stub_IMIClient_receive_IMOperationExecuted/ut_utility_stub_IMIClient_receive_IMOperationExecuted.;receive_IMOperationExecuted/IMOperationExecuted{\nrequest_id:1\nexecution_status:"EExecutionStatus_EXECUTED"\nerror_code:"<none>"\n};receive_IMOperationExecuted/IMOperationExecuted{\nrequest_id:2\nexecution_status:"EExecutionStatus_REJECTED"\nerror_code:"<none>"\n};ut_utility_stub_IMIClient_send_IMSignInRequest/ut_utility_stub_IMIClient_send_IMSignInRequest.;send_IMSignInRequest/IMSignInRequest{\nupdate_notification_interval_ms:3000\nplatform_im_version:{\nrelease:"dummy_release_1"\nversion_major:5\nversion_minor:6\n}\nview:"<none>"\nclient_id:"<none>"\n};send_IMSignInRequest/IMSignInRequest{\nupdate_notification_interval_ms:3000\nplatform_im_version:{\nrelease:"dummy_release_2"\nversion_major:7\nversion_minor:8\n}\nview:"<none>"\nclient_id:"<none>"\n};;/home/abadura/fpwork/MN/RPSW/BM/bm/build/ims.testing/ims/InfoModel/Testing/Unit/InfoModelTestingUnit;--gtest_filter=ut_utility_stub_IMIClient_receive_IMUpdateNotification/ut_utility_stub_IMIClient_receive_IMUpdateNotification.receive_IMUpdateNotification/0;--gtest_also_run_disabled_tests]==])
All other lines in this file (this happens to be the last test added) are fine. Maybe the test name is too long? Or maybe an unescaped [
is disturbing here (since I noticed there is some strange "quoting" using [==[
... ]==]
).
Furthermore, the CTest execution continued and returned successfully (based on all the other tests which passed). We found the issue in CI by chance only looking at logs of a passed verification...
Now, I will be checking how about shorter test names - those are parametric Google Test tests, where a parameter is a complex object resulting in a very lengthy PrintTo
. Even if it would work, such a form of output is not nice anyway, so I would like to fix this anyway.
However, I think this should not fail this way.