From 84469274d09500d8f9018e69be32b539b08a0626 Mon Sep 17 00:00:00 2001 From: Tim Kientzle Date: Sat, 7 Nov 2009 18:35:18 -0500 Subject: [PATCH] Make the CTest integration simpler and a little more robust by just reading list.h directly into cmake. This only requires a suitable "DEFINE_TEST" macro. SVN-Revision: 1587 --- cpio/test/CMakeLists.txt | 35 ++++++++++++++++++---------------- libarchive/test/CMakeLists.txt | 35 +++++++++++++++++----------------- tar/test/CMakeLists.txt | 35 ++++++++++++++++++---------------- 3 files changed, 56 insertions(+), 49 deletions(-) diff --git a/cpio/test/CMakeLists.txt b/cpio/test/CMakeLists.txt index 4a4fb9040..ddc69cce3 100644 --- a/cpio/test/CMakeLists.txt +++ b/cpio/test/CMakeLists.txt @@ -43,28 +43,31 @@ IF(ENABLE_CPIO AND ENABLE_TEST) ENDIF(WIN32 AND NOT CYGWIN) # - # Generate the list.h + # Register target + # + ADD_EXECUTABLE(bsdcpio_test ${bsdcpio_test_SOURCES}) + SET_PROPERTY(TARGET bsdcpio_test PROPERTY COMPILE_DEFINITIONS LIST_H) + + # + # Generate list.h by grepping DEFINE_TEST() lines out of the C sources. # GENERATE_LIST_H(${CMAKE_CURRENT_BINARY_DIR}/list.h ${CMAKE_CURRENT_LIST_FILE} ${bsdcpio_test_SOURCES}) SET_PROPERTY(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR}) - # - # Register target - # - ADD_EXECUTABLE(bsdcpio_test ${bsdcpio_test_SOURCES}) - SET_PROPERTY(TARGET bsdcpio_test PROPERTY COMPILE_DEFINITIONS LIST_H) - # ADD_TEST() for each separate test - SET(num 0) - FOREACH(test ${bsdcpio_test_SOURCES}) - IF(test MATCHES "^test_[^/]+[.]c$") - STRING(REGEX REPLACE "^(test_[^/]+)[.]c$" "\\1" testname ${test}) - ADD_TEST("bsdcpio_${testname}" bsdcpio_test - -v -p ${BSDCPIO} -r ${CMAKE_CURRENT_SOURCE_DIR} ${num}) - MATH(EXPR num "${num} + 1") - ENDIF(test MATCHES "^test_[^/]+[.]c$") - ENDFOREACH(test) + # list.h has a line DEFINE_TEST(testname) for every + # test. We can use that to define the tests for cmake by + # defining a DEFINE_TEST macro and reading list.h in. + MACRO (DEFINE_TEST _testname) + ADD_TEST("bsdcpio_${_testname}" + bsdcpio_test -vv + -p ${BSDCPIO} + -r ${CMAKE_CURRENT_SOURCE_DIR} + ${_testname}) + ENDMACRO (DEFINE_TEST _testname) + + INCLUDE(${CMAKE_CURRENT_BINARY_DIR}/list.h) # Experimental new test handling ADD_CUSTOM_TARGET(run_bsdcpio_test diff --git a/libarchive/test/CMakeLists.txt b/libarchive/test/CMakeLists.txt index 91e249190..682a58cc5 100644 --- a/libarchive/test/CMakeLists.txt +++ b/libarchive/test/CMakeLists.txt @@ -117,13 +117,6 @@ IF(ENABLE_TEST) test_write_open_memory.c ) - # - # Generate the list.h - # - GENERATE_LIST_H(${CMAKE_CURRENT_BINARY_DIR}/list.h - ${CMAKE_CURRENT_LIST_FILE} ${libarchive_test_SOURCES}) - SET_PROPERTY(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES - ${CMAKE_CURRENT_BINARY_DIR}) # # Register target # @@ -132,17 +125,25 @@ IF(ENABLE_TEST) SET_PROPERTY(TARGET libarchive_test PROPERTY COMPILE_DEFINITIONS LIBARCHIVE_STATIC LIST_H) - # Register ADD_TEST() for each separate test - SET(num 0) - FOREACH(test ${libarchive_test_SOURCES}) - IF(test MATCHES "^test_[^/]+[.]c$") - STRING(REGEX REPLACE "^(test_[^/]+)[.]c$" "\\1" testname ${test}) - ADD_TEST("libarchive_${testname}" libarchive_test - -q -r ${CMAKE_CURRENT_SOURCE_DIR} ${num}) - MATH(EXPR num "${num} + 1") - ENDIF(test MATCHES "^test_[^/]+[.]c$") - ENDFOREACH(test) + # + # Generate list.h by grepping DEFINE_TEST() lines out of the C sources. + # + GENERATE_LIST_H(${CMAKE_CURRENT_BINARY_DIR}/list.h + ${CMAKE_CURRENT_LIST_FILE} ${libarchive_test_SOURCES}) + SET_PROPERTY(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_BINARY_DIR}) + + # list.h has a line DEFINE_TEST(testname) for every + # test. We can use that to define the tests for cmake by + # defining a DEFINE_TEST macro and reading list.h in. + MACRO (DEFINE_TEST _testname) + ADD_TEST("libarchive_${_testname}" + libarchive_test -vv + -r ${CMAKE_CURRENT_SOURCE_DIR} + ${_testname}) + ENDMACRO (DEFINE_TEST _testname) + INCLUDE(${CMAKE_CURRENT_BINARY_DIR}/list.h) # Experimental new test handling ADD_CUSTOM_TARGET(run_libarchive_test diff --git a/tar/test/CMakeLists.txt b/tar/test/CMakeLists.txt index 35a6de7b9..fe5f0ba6e 100644 --- a/tar/test/CMakeLists.txt +++ b/tar/test/CMakeLists.txt @@ -30,28 +30,31 @@ IF(ENABLE_TAR AND ENABLE_TEST) ENDIF(WIN32 AND NOT CYGWIN) # - # Generate the list.h + # Register target + # + ADD_EXECUTABLE(bsdtar_test ${bsdtar_test_SOURCES}) + SET_PROPERTY(TARGET bsdtar_test PROPERTY COMPILE_DEFINITIONS LIST_H) + + # + # Generate list.h by grepping DEFINE_TEST() lines out of the C sources. # GENERATE_LIST_H(${CMAKE_CURRENT_BINARY_DIR}/list.h ${CMAKE_CURRENT_LIST_FILE} ${bsdtar_test_SOURCES}) SET_PROPERTY(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR}) - # - # Register target - # - ADD_EXECUTABLE(bsdtar_test ${bsdtar_test_SOURCES}) - SET_PROPERTY(TARGET bsdtar_test PROPERTY COMPILE_DEFINITIONS LIST_H) - # ADD_TEST() for each separate test - SET(num 0) - FOREACH(test ${bsdtar_test_SOURCES}) - IF(test MATCHES "^test_[^/]+[.]c$") - STRING(REGEX REPLACE "^(test_[^/]+)[.]c$" "\\1" testname ${test}) - ADD_TEST("bsdtar_${testname}" bsdtar_test - -q -v -p ${BSDTAR} -r ${CMAKE_CURRENT_SOURCE_DIR} ${num}) - MATH(EXPR num "${num} + 1") - ENDIF(test MATCHES "^test_[^/]+[.]c$") - ENDFOREACH(test) + # list.h has a line DEFINE_TEST(testname) for every + # test. We can use that to define the tests for cmake by + # defining a DEFINE_TEST macro and reading list.h in. + MACRO (DEFINE_TEST _testname) + ADD_TEST("bsdtar_${_testname}" + bsdtar_test -vv + -p ${BSDTAR} + -r ${CMAKE_CURRENT_SOURCE_DIR} + ${_testname}) + ENDMACRO (DEFINE_TEST _testname) + + INCLUDE(${CMAKE_CURRENT_BINARY_DIR}/list.h) # Experimental new test handling ADD_CUSTOM_TARGET(run_bsdtar_test -- 2.47.3