Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to pass quoted parameters to add_test in cmake?

I'm trying to pass parameters to a gtest test suite from cmake:

add_test(NAME craft_test
         COMMAND craft --gtest_output='xml:report.xml')

The issue is that these parameters are being passed surrounded by quotes, why? It looks like a bug, is there a good way for avoiding it?

$ ctest -V
UpdateCTestConfiguration  from :/usr/local/src/craft/build-analyze/DartConfiguration.tcl
UpdateCTestConfiguration  from :/usr/local/src/craft/build-analyze/DartConfiguration.tcl
Test project /usr/local/src/craft/build-analyze
Constructing a list of tests
Done constructing a list of tests
Checking test dependency graph...
Checking test dependency graph end
test 1
    Start 1: craft_test

1: Test command: /usr/local/src/craft/build-analyze/craft "--gtest_output='xml:report.xml'"
1: Test timeout computed to be: 9.99988e+06
1: WARNING: unrecognized output format "'xml" ignored.
1: [==========] Running 1 test from 1 test case.
1: [----------] Global test environment set-up.
1: [----------] 1 test from best_answer_test
1: [ RUN      ] best_answer_test.test_sample
1: [       OK ] best_answer_test.test_sample (0 ms)
1: [----------] 1 test from best_answer_test (0 ms total)
1: 
1: [----------] Global test environment tear-down
1: [==========] 1 test from 1 test case ran. (0 ms total)
1: [  PASSED  ] 1 test.
1/1 Test #1: craft_test .......................   Passed    0.00 sec

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   0.00 sec
like image 328
pepper_chico Avatar asked Jun 23 '13 20:06

pepper_chico


People also ask

What is enable_testing in CMake?

enable_testing() Enables testing for this directory and below. This command should be in the source directory root because ctest expects to find a test file in the build directory root. This command is automatically invoked when the CTest module is included, except if the BUILD_TESTING option is turned off.

Is CTest part of CMake?

CTest is the part of CMake that handles testing your code. CTest allows for an easy way to run your newly built programs with various argument and option settings, and then check the results against expected output.

Does CMake facilitate unit tests?

¶ CMake facilitates testing your software through special testing commands and the CTest executable. First, we will discuss the key testing commands in CMake. To add testing to a CMake-based project, simply include(CTest) and use the add_test command.


1 Answers

It's not the quotes that CMake adds that is the problem here; it's the single quotes in 'xml:report.xml' that are at fault.

You should do:

add_test(NAME craft_test
     COMMAND craft --gtest_output=xml:report.xml)
like image 149
Fraser Avatar answered Nov 15 '22 08:11

Fraser