Allow disabling building of tests
This commit is contained in:
		| @@ -6,7 +6,7 @@ if(WIN32) | ||||
| endif() | ||||
|  | ||||
| project(Launcher) | ||||
| enable_testing() | ||||
| include(CTest) | ||||
|  | ||||
| string(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BUILD_DIR}" IS_IN_SOURCE_BUILD) | ||||
| if(IS_IN_SOURCE_BUILD) | ||||
|   | ||||
| @@ -5,44 +5,46 @@ set(TEST_RESOURCE_PATH ${CMAKE_CURRENT_LIST_DIR}) | ||||
| message(${TEST_RESOURCE_PATH}) | ||||
|  | ||||
| function(add_unit_test name) | ||||
|     set(options "") | ||||
|     set(oneValueArgs DATA) | ||||
|     set(multiValueArgs SOURCES LIBS) | ||||
|     if(BUILD_TESTING) | ||||
|         set(options "") | ||||
|         set(oneValueArgs DATA) | ||||
|         set(multiValueArgs SOURCES LIBS) | ||||
|  | ||||
|     cmake_parse_arguments(OPT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) | ||||
|         cmake_parse_arguments(OPT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) | ||||
|  | ||||
|     if(WIN32) | ||||
|         add_executable(${name}_test ${OPT_SOURCES} ${TEST_RESOURCE_PATH}/UnitTest/test.rc) | ||||
|     else() | ||||
|         add_executable(${name}_test ${OPT_SOURCES}) | ||||
|     endif() | ||||
|  | ||||
|     if(NOT "${OPT_DATA}" STREQUAL "") | ||||
|         set(TEST_DATA_PATH "${CMAKE_CURRENT_BINARY_DIR}/data") | ||||
|         set(TEST_DATA_PATH_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${OPT_DATA}") | ||||
|         message("From ${TEST_DATA_PATH_SRC} to ${TEST_DATA_PATH}") | ||||
|         string(REGEX REPLACE "[/\\:]" "_" DATA_TARGET_NAME "${TEST_DATA_PATH_SRC}") | ||||
|         if(UNIX) | ||||
|             # on unix we get the third / from the filename | ||||
|             set(TEST_DATA_URL "file://${TEST_DATA_PATH}") | ||||
|         if(WIN32) | ||||
|             add_executable(${name}_test ${OPT_SOURCES} ${TEST_RESOURCE_PATH}/UnitTest/test.rc) | ||||
|         else() | ||||
|             # we don't on windows, so we have to add it ourselves | ||||
|             set(TEST_DATA_URL "file:///${TEST_DATA_PATH}") | ||||
|             add_executable(${name}_test ${OPT_SOURCES}) | ||||
|         endif() | ||||
|         if(NOT TARGET "${DATA_TARGET_NAME}") | ||||
|             add_custom_target(${DATA_TARGET_NAME}) | ||||
|             add_dependencies(${name}_test ${DATA_TARGET_NAME}) | ||||
|             add_custom_command( | ||||
|                 TARGET ${DATA_TARGET_NAME} | ||||
|                 COMMAND ${CMAKE_COMMAND} "-DTEST_DATA_URL=${TEST_DATA_URL}" -DSOURCE=${TEST_DATA_PATH_SRC} -DDESTINATION=${TEST_DATA_PATH} -P ${TEST_RESOURCE_PATH}/UnitTest/generate_test_data.cmake | ||||
|                 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | ||||
|             ) | ||||
|  | ||||
|         if(NOT "${OPT_DATA}" STREQUAL "") | ||||
|             set(TEST_DATA_PATH "${CMAKE_CURRENT_BINARY_DIR}/data") | ||||
|             set(TEST_DATA_PATH_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${OPT_DATA}") | ||||
|             message("From ${TEST_DATA_PATH_SRC} to ${TEST_DATA_PATH}") | ||||
|             string(REGEX REPLACE "[/\\:]" "_" DATA_TARGET_NAME "${TEST_DATA_PATH_SRC}") | ||||
|             if(UNIX) | ||||
|                 # on unix we get the third / from the filename | ||||
|                 set(TEST_DATA_URL "file://${TEST_DATA_PATH}") | ||||
|             else() | ||||
|                 # we don't on windows, so we have to add it ourselves | ||||
|                 set(TEST_DATA_URL "file:///${TEST_DATA_PATH}") | ||||
|             endif() | ||||
|             if(NOT TARGET "${DATA_TARGET_NAME}") | ||||
|                 add_custom_target(${DATA_TARGET_NAME}) | ||||
|                 add_dependencies(${name}_test ${DATA_TARGET_NAME}) | ||||
|                 add_custom_command( | ||||
|                     TARGET ${DATA_TARGET_NAME} | ||||
|                     COMMAND ${CMAKE_COMMAND} "-DTEST_DATA_URL=${TEST_DATA_URL}" -DSOURCE=${TEST_DATA_PATH_SRC} -DDESTINATION=${TEST_DATA_PATH} -P ${TEST_RESOURCE_PATH}/UnitTest/generate_test_data.cmake | ||||
|                     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | ||||
|                 ) | ||||
|             endif() | ||||
|         endif() | ||||
|  | ||||
|         target_link_libraries(${name}_test Qt5::Test ${OPT_LIBS}) | ||||
|  | ||||
|         target_include_directories(${name}_test PRIVATE "${TEST_RESOURCE_PATH}/UnitTest/") | ||||
|  | ||||
|         add_test(NAME ${name} COMMAND ${name}_test WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) | ||||
|     endif() | ||||
|  | ||||
|     target_link_libraries(${name}_test Qt5::Test ${OPT_LIBS}) | ||||
|  | ||||
|     target_include_directories(${name}_test PRIVATE "${TEST_RESOURCE_PATH}/UnitTest/") | ||||
|  | ||||
|     add_test(NAME ${name} COMMAND ${name}_test WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) | ||||
| endfunction() | ||||
|   | ||||
| @@ -353,21 +353,23 @@ add_unit_test(GradleSpecifier | ||||
|     LIBS Launcher_logic | ||||
|     ) | ||||
|  | ||||
| add_executable(PackageManifest | ||||
|     mojang/PackageManifest_test.cpp | ||||
| ) | ||||
| target_link_libraries(PackageManifest | ||||
|     Launcher_logic | ||||
|     Qt5::Test | ||||
| ) | ||||
| target_include_directories(PackageManifest | ||||
|     PRIVATE ../cmake/UnitTest/ | ||||
| ) | ||||
| add_test( | ||||
|     NAME PackageManifest | ||||
|     COMMAND PackageManifest | ||||
|     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | ||||
| ) | ||||
| if(BUILD_TESTING) | ||||
|     add_executable(PackageManifest | ||||
|         mojang/PackageManifest_test.cpp | ||||
|     ) | ||||
|     target_link_libraries(PackageManifest | ||||
|         Launcher_logic | ||||
|         Qt5::Test | ||||
|     ) | ||||
|     target_include_directories(PackageManifest | ||||
|         PRIVATE ../cmake/UnitTest/ | ||||
|     ) | ||||
|     add_test( | ||||
|         NAME PackageManifest | ||||
|         COMMAND PackageManifest | ||||
|         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} | ||||
|     ) | ||||
| endif() | ||||
|  | ||||
| add_unit_test(MojangVersionFormat | ||||
|     SOURCES minecraft/MojangVersionFormat_test.cpp | ||||
|   | ||||
		Reference in New Issue
	
	Block a user