[CMake] CMake and CTest for Google tests

Neelima Mehdiratta nmehdiratta at decarta.com
Wed Aug 25 18:17:50 EDT 2010


I am using Google Tests to create unit tests for our software.  We are
using CMake (version 4.6-patch 2)  for building the unit tests
executable.  Since the list of unit tests is expected to grow to
thousands of tests, I am looking for a way to automate creating a file
(say testlist) on the fly that will contain the list of all our unit
tests specified using the CTest ADD_TEST command. My thought was to use
INCLUDE(testlist) to read in the list of tests at the appropriate point
in the CMakeLists.txt file(i.e, just after calling ENABLE_TESTING().

 

I have a shell (bash) script (addtestscrpt) that needs to run the unit
tests executable to get the list of all unit tests and then put ADD_TEST
for each of those tests into a file which would look like this:

 

ADD_TEST(DDSCfgTest.ctr ${EXECUTABLE_OUTPUT_PATH}/${BIN_NAME}
--gtest_filter=DDSCfgTest.ctr)

ADD_TEST(DDSCfgTest.ReadBool ${EXECUTABLE_OUTPUT_PATH}/${BIN_NAME}
--gtest_filter=DDSCfgTest.ReadBool)

ADD_TEST(DDSCfgTest.ReadInt ${EXECUTABLE_OUTPUT_PATH}/${BIN_NAME}
--gtest_filter=DDSCfgTest.ReadInt)

 

The problem that I'm having is that I need the unit tests executable to
generate the list of all tests and then INCLUDE the list in a
CMakeList.txt file after the unit tests executable is built. 

 

I tried using ADD_CUSTOM_COMMAND with POST_BUILD to run my shell script
(COMMAND ./addtestscript) which runs and creates the list of ADD_TEST()
commands and puts them in a file. But I don't know how to include this
file in the ADD_CUSTOM_COMMAND

 

The closest I got was:

 

ADD_CUSTOM_COMMAND(TARGET ${BIN_NAME}

    POST_BUILD

    WORKING_DIRECTORY ${SRC_DIR}

    COMMAND bash ./addtestscrpt

    COMMAND ${CMAKE_COMMAND} ${SRC_DIR}/DDSCommonTests/CMakeLists.txt

)

where ${SRC_DIR}/DDSCommonTests/CMakeLists.txt

contains

ENABLE_TESTING()

INCLUDE(${SRC_DIR)/testlist)

 

but this doesn't work presumably because CTest needs to know about the
CTestTestfile.cmake in this directory, again in the post_build step.

 

Is there any way to a) Add the INCLUDE(testlist) to the
ADD_CUSTOM_COMMAND or b) tell CTest to read the CTestTestfile.cmake from
that directory or c) Any other way of solving this?

 

Thanks.

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20100825/f4b7e3cc/attachment.htm>


More information about the CMake mailing list