Browse Source

* Improved unit tests: Build one executable for each test source file (so tests can be executed in parallel)

master
bergmann 4 years ago
parent
commit
d7527b5af5
3 changed files with 87 additions and 61 deletions
  1. +1
    -1
      cmake/modules
  2. +43
    -30
      projects/helloworld/test/CMakeLists.txt
  3. +43
    -30
      projects/libhelloworld/test/CMakeLists.txt

+ 1
- 1
cmake/modules

@@ -1 +1 @@
Subproject commit 4ca86b7d92f24e5d8056cada3ff6bd3906b16aca
Subproject commit 4953cd4cc849afdfa02a6057b5a2011fb62e91a6

+ 43
- 30
projects/helloworld/test/CMakeLists.txt View File

@@ -11,33 +11,46 @@ If ( NOT "${GTest_FOUND}" )
Return ( )
EndIf ( )

File ( GLOB_RECURSE HELLOWORLD_TEST_HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h )
File ( GLOB_RECURSE HELLOWORLD_TEST_INLINE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.inl )
File ( GLOB_RECURSE HELLOWORLD_TEST_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )

Add_Executable ( helloworld-test
EXCLUDE_FROM_ALL
${HELLOWORLD_TEST_HEADER_FILES}
${HELLOWORLD_TEST_INLINE_FILES}
${HELLOWORLD_TEST_SOURCE_FILES} )
Target_Link_Libraries ( helloworld-test
PUBLIC
helloworld-objects
GTest::Main )

# pedantic
If ( HAS_PEDANTIC )
Pedantic_Apply_Flags_Target ( helloworld-test ALL )
EndIf ( )

# optimization
If ( HAS_COTIRE )
Cotire ( helloworld-test )
EndIf ( )

# test
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME helloworld TARGET helloworld-test )
Else ( )
Add_Test ( NAME helloworld COMMAND helloworld-test )
EndIf ( )
File ( GLOB_RECURSE ISEF_TEST_HEADER_FILES
${CMAKE_CURRENT_SOURCE_DIR}/*.h )
File ( GLOB_RECURSE ISEF_TEST_INLINE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/*.inl )
File ( GLOB_RECURSE ISEF_TEST_SOURCE_FILES
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )

ForEach ( FILE IN LISTS ISEF_TEST_SOURCE_FILES )
# add test
Get_Filename_Component ( TEST_DIR ${FILE} DIRECTORY )
Get_Filename_Component ( TEST_NAME ${FILE} NAME_WE )
Set ( TEST_NAME "${TEST_DIR}/${TEST_NAME}" )
String ( REPLACE "\\" "-" TEST_NAME "${TEST_NAME}" )
String ( REPLACE "/" "-" TEST_NAME "${TEST_NAME}" )
Set ( TEST_NAME "test-${TEST_NAME}" )
Add_Executable ( ${TEST_NAME}
EXCLUDE_FROM_ALL
${ISEF_TEST_HEADER_FILES}
${ISEF_TEST_INLINE_FILES}
${FILE} )
Target_Link_Libraries ( ${TEST_NAME}
PUBLIC
helloworld-objects
GTest::Main )

# pedantic
If ( HAS_PEDANTIC )
Pedantic_Apply_Flags_Target ( ${TEST_NAME} ALL )
EndIf ( )

# optimization
If ( HAS_COTIRE )
Cotire ( ${TEST_NAME} )
EndIf ( )

# test
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} )
Else ( )
Add_Test ( NAME ${TEST_NAME} COMMAND ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
EndIf ( )
EndForEach ( )

+ 43
- 30
projects/libhelloworld/test/CMakeLists.txt View File

@@ -11,33 +11,46 @@ If ( NOT "${GTest_FOUND}" )
Return ( )
EndIf ( )

File ( GLOB_RECURSE LIBHELLOWORLD_TEST_HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h )
File ( GLOB_RECURSE LIBHELLOWORLD_TEST_INLINE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.inl )
File ( GLOB_RECURSE LIBHELLOWORLD_TEST_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )

Add_Executable ( libhelloworld-test
EXCLUDE_FROM_ALL
${LIBHELLOWORLD_TEST_HEADER_FILES}
${LIBHELLOWORLD_TEST_INLINE_FILES}
${LIBHELLOWORLD_TEST_SOURCE_FILES} )
Target_Link_Libraries ( libhelloworld-test
PUBLIC
libhelloworld-objects
GTest::Main )

# pedantic
If ( HAS_PEDANTIC )
Pedantic_Apply_Flags_Target ( libhelloworld-test ALL )
EndIf ( )

# optimization
If ( HAS_COTIRE )
Cotire ( libhelloworld-test )
EndIf ( )

# test
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME libhelloworld TARGET libhelloworld-test )
Else ( )
Add_Test ( NAME libhelloworld COMMAND libhelloworld-test )
EndIf ( )
File ( GLOB_RECURSE ISEF_TEST_HEADER_FILES
${CMAKE_CURRENT_SOURCE_DIR}/*.h )
File ( GLOB_RECURSE ISEF_TEST_INLINE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/*.inl )
File ( GLOB_RECURSE ISEF_TEST_SOURCE_FILES
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )

ForEach ( FILE IN LISTS ISEF_TEST_SOURCE_FILES )
# add test
Get_Filename_Component ( TEST_DIR ${FILE} DIRECTORY )
Get_Filename_Component ( TEST_NAME ${FILE} NAME_WE )
Set ( TEST_NAME "${TEST_DIR}/${TEST_NAME}" )
String ( REPLACE "\\" "-" TEST_NAME "${TEST_NAME}" )
String ( REPLACE "/" "-" TEST_NAME "${TEST_NAME}" )
Set ( TEST_NAME "test-${TEST_NAME}" )
Add_Executable ( ${TEST_NAME}
EXCLUDE_FROM_ALL
${ISEF_TEST_HEADER_FILES}
${ISEF_TEST_INLINE_FILES}
${FILE} )
Target_Link_Libraries ( ${TEST_NAME}
PUBLIC
libhelloworld-objects
GTest::Main )

# pedantic
If ( HAS_PEDANTIC )
Pedantic_Apply_Flags_Target ( ${TEST_NAME} ALL )
EndIf ( )

# optimization
If ( HAS_COTIRE )
Cotire ( ${TEST_NAME} )
EndIf ( )

# test
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} )
Else ( )
Add_Test ( NAME ${TEST_NAME} COMMAND ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
EndIf ( )
EndForEach ( )

Loading…
Cancel
Save