| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- set(MODULE_NAME "test_libtoolkit")
- set(MODULE_PREFIX "TEST_LIBTOOLKIT")
- include_directories(..)
- set(${MODULE_PREFIX}_DRIVER ${MODULE_NAME}.cpp)
- set(${MODULE_PREFIX}_TEST_DEFINITIONS "")
- file(GLOB ${MODULE_PREFIX}_TESTS "${CMAKE_CURRENT_SOURCE_DIR}/test_*.cpp")
- # CTest
- #list(APPEND ${MODULE_PREFIX}_TEST_DEFINITIONS "-DTEST_WITH_CTEST")
- # Create a test driver and source list for building test programs.
- #create_test_sourcelist(${MODULE_PREFIX}_SRCS #source list name
- # ${${MODULE_PREFIX}_DRIVER} # driver name
- # ${${MODULE_PREFIX}_TESTS} # test list
- # )# EXTRA_INCLUDE include.h FUNCTION function.
- # add_definitions(${${MODULE_PREFIX}_TEST_DEFINITIONS})
- # add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
- # set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} toolkit_a)
- # target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
- # set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
- # foreach(test ${${MODULE_PREFIX}_TESTS})
- # get_filename_component(test_name ${test} NAME_WE)
- # add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${MODULE_NAME} ${test_name})
- # endforeach()
- # set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "test/libtookit")
- #Google Test
- include_directories(${GTEST_ROOT})
- list(APPEND comm_test_libraries gtest)
- list(APPEND comm_test_libraries gtest_main)
- list(APPEND comm_test_libraries libtoolkit_a)
- # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS")
- if(NOT MSVC)
- set(TEST_AREA "${TESTING_OUTPUT_DIRECTORY}/${MODULE_NAME}_area")
- else()
- set(TEST_AREA "${TESTING_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${MODULE_NAME}_area")
- endif()
- file(MAKE_DIRECTORY "${TEST_AREA}")
- file(WRITE "${TEST_AREA}/test_file1.txt" "I am test file 1.")
- file(WRITE "${TEST_AREA}/test_file2.txt" "I am test file 2.")
- file(WRITE "${TEST_AREA}/test_file3.txt" "I am test file 3.")
- file(MAKE_DIRECTORY "${TEST_AREA}/test_dir_1")
- file(WRITE "${TEST_AREA}/test_dir_1/test_dir_1_file_1.txt" "I am test file 1 under dir 1.")
- file(MAKE_DIRECTORY "${TEST_AREA}/test_dir_2")
- file(WRITE "${TEST_AREA}/test_dir_2/test_dir_2_file_1.txt" "I am test file 1 under dir 2.")
- file(WRITE "${TEST_AREA}/test_dir_2/test_dir_2_file_2.txt" "I am test file 2 under dir 2.")
- file(MAKE_DIRECTORY "${TEST_AREA}/test_dir_2/test_sub_dir_2")
- file(WRITE "${TEST_AREA}/test_dir_2/test_sub_dir_2/test_sub_dir_2_file_1.txt" "I am test file 1 under sub dir 2.")
- file(MAKE_DIRECTORY "${TEST_AREA}/test_dir_3")
- file(WRITE "${TEST_AREA}/test_dir_3/test_dir_3_file_1.txt" "I am test file 1 under dir 3.")
- file(WRITE "${TEST_AREA}/test_dir_3/test_dir_3_file_2.txt" "I am test file 2 under dir 3.")
- file(WRITE "${TEST_AREA}/test_dir_3/test_dir_3_file_3.txt" "I am test file 3 under dir 3.")
- file(MAKE_DIRECTORY "${TEST_AREA}/test_dir_4")
- foreach(test ${${MODULE_PREFIX}_TESTS})
- get_filename_component(test_name ${test} NAME_WE)
- add_executable(${test_name} ${test})
- target_link_libraries(${test_name} ${comm_test_libraries})
- target_compile_definitions(${test_name} PRIVATE "-DTOOLKIT_LINKED_AS_STATIC_LIBRARY")
- set_property(TARGET ${test_name} PROPERTY FOLDER "test/libtoolkit")
- # 会将 测试的执行程序生成在指定的文件夹,并且带上编译的配置条件比如 Debug
- set_target_properties(${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
- message(STATUS "add test case: ${test_name}...")
- if(${test_name} STREQUAL "test_file" OR ${test_name} STREQUAL "test_log")
- add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${test_name} ${TEST_AREA})
- else()
- add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${test_name})
- endif()
- set_tests_properties(${teset_name} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED;ERROR;Failed;error")
- endforeach()
- add_executable(single_proc single_proc.cpp)
- set_property(TARGET single_proc PROPERTY FOLDER "test/libtoolkit")
- set_target_properties(single_proc PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
|