[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