You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

76 lines
4.2 KiB

  1. # Initialize ######################################################################################
  2. Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE )
  3. Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
  4. Include ( cmake_tests OPTIONAL RESULT_VARIABLE HAS_CMAKE_TESTS )
  5. Find_Package ( Sanitizers QUIET )
  6. Find_Package ( GTest )
  7. If ( NOT "${GTest_FOUND}" )
  8. Return ( )
  9. EndIf ( )
  10. # Test Helper #####################################################################################
  11. File ( GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/helper/*.cpp )
  12. Add_Library ( cppmicrohttpd-test-helper STATIC ${SOURCE_FILES} )
  13. Target_Include_Directories ( cppmicrohttpd-test-helper
  14. PUBLIC
  15. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/helper>
  16. $<INSTALL_INTERFACE:${CPPMICROHTTPD_INSTALL_DIR_INCLUDE}> )
  17. Target_Include_Directories ( cppmicrohttpd-test-helper
  18. SYSTEM PUBLIC
  19. ${MICROHTTPD_INCLUDE_DIRS} )
  20. Target_Link_Libraries ( cppmicrohttpd-test-helper
  21. PUBLIC
  22. cppmicrohttpd-objects
  23. GMock::GMock )
  24. # Test ############################################################################################
  25. File ( GLOB_RECURSE CPPMICROHTTPD_TEST_HEADER_FILES
  26. ${CMAKE_CURRENT_SOURCE_DIR}/*.h )
  27. File ( GLOB_RECURSE CPPMICROHTTPD_TEST_INLINE_FILES
  28. ${CMAKE_CURRENT_SOURCE_DIR}/*.inl )
  29. File ( GLOB_RECURSE CPPMICROHTTPD_TEST_SOURCE_FILES
  30. RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
  31. ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
  32. ForEach ( FILE IN LISTS CPPMICROHTTPD_TEST_SOURCE_FILES )
  33. # add test
  34. Get_Filename_Component ( TEST_DIR ${FILE} DIRECTORY )
  35. Get_Filename_Component ( TEST_NAME ${FILE} NAME_WE )
  36. Set ( TEST_NAME "${TEST_DIR}/${TEST_NAME}" )
  37. String ( REPLACE "\\" "-" TEST_NAME "${TEST_NAME}" )
  38. String ( REPLACE "/" "-" TEST_NAME "${TEST_NAME}" )
  39. String ( REPLACE "_" "-" TEST_NAME "${TEST_NAME}" )
  40. Set ( TEST_NAME "test-${TEST_NAME}" )
  41. Add_Executable ( ${TEST_NAME}
  42. EXCLUDE_FROM_ALL
  43. ${CPPMICROHTTPD_TEST_HEADER_FILES}
  44. ${CPPMICROHTTPD_TEST_INLINE_FILES}
  45. ${FILE} )
  46. Target_Link_Libraries ( ${TEST_NAME}
  47. PUBLIC
  48. cppmicrohttpd-test-helper
  49. GMock::Main )
  50. # Sanitizers
  51. If ( Sanitizers_FOUND )
  52. Add_Sanitizers ( ${TEST_NAME} )
  53. EndIf ( )
  54. # pedantic
  55. If ( HAS_PEDANTIC )
  56. Pedantic_Apply_Flags_Target ( ${TEST_NAME} ALL )
  57. EndIf ( )
  58. # test
  59. If ( HAS_CMAKE_TESTS )
  60. Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} GROUP cppmicrohttpd )
  61. Else ( )
  62. Add_Test ( NAME ${TEST_NAME} COMMAND ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
  63. EndIf ( )
  64. EndForEach ( )