Add tests for EXCLUDE_FROM_DEFAULT_BUILD

Add tests for EXCLUDE_FROM_DEFAULT_BUILD and its per-configuration
variants.
This commit is contained in:
Petr Kmoch 2012-10-12 15:30:17 +02:00 committed by Brad King
parent c31e119d24
commit b777272b0b
5 changed files with 85 additions and 0 deletions

View File

@ -1412,6 +1412,28 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
--build-makeprogram ${CMAKE_TEST_MAKEPROGRAM} --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
--test-command VSMidl) --test-command VSMidl)
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/VSMidl") list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/VSMidl")
if(NOT MSVC60 AND NOT CMAKE_TEST_MAKEPROGRAM MATCHES "[mM][sS][bB][uU][iI][lL][dD]\\.[eE][xX][eE]")
# The test (and tested property) works with .sln files, so it's skipped when:
# * Using VS6, which doesn't use .sln files
# * cmake --build is set up to use MSBuild, since the MSBuild invocation does not use the .sln file
foreach(config ${CMAKE_CONFIGURATION_TYPES})
add_test(NAME VSExcludeFromDefaultBuild-${config} COMMAND ${CMAKE_CTEST_COMMAND}
--build-and-test
"${CMake_SOURCE_DIR}/Tests/VSExcludeFromDefaultBuild"
"${CMake_BINARY_DIR}/Tests/VSExcludeFromDefaultBuild"
--build-config ${config}
--build-two-config
--build-generator ${CMAKE_TEST_GENERATOR}
--build-project VSExcludeFromDefaultBuild
--build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
--test-command ${CMAKE_COMMAND}
-D "activeConfig=${config}"
-D "allConfigs=${CMAKE_CONFIGURATION_TYPES}"
-D "dir=${CMake_BINARY_DIR}/Tests/VSExcludeFromDefaultBuild"
-P "${CMake_SOURCE_DIR}/Tests/VSExcludeFromDefaultBuild/ResultTest.cmake")
endforeach()
endif()
endif() endif()
if (APPLE) if (APPLE)

View File

@ -0,0 +1,32 @@
cmake_minimum_required(VERSION 2.8.9)
project(VSExcludeFromDefaultBuild)
# First step is to clear all .exe files in output so that possible past
# failures of this test do not prevent it from succeeding.
add_custom_target(ClearExes ALL
COMMAND "${CMAKE_COMMAND}"
-Ddir=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/ClearExes.cmake
VERBATIM)
# Make sure ClearExes is executed before other targets are built
function(add_test_executable target)
add_executable("${target}" ${ARGN})
add_dependencies("${target}" ClearExes)
endfunction()
add_test_executable(DefaultBuilt main.c)
add_test_executable(AlwaysBuilt main.c)
set_target_properties(AlwaysBuilt PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD FALSE)
add_test_executable(NeverBuilt main.c)
set_target_properties(NeverBuilt PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE)
foreach(config ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER ${config} Config)
add_test_executable(BuiltIn${config} main.c)
set_target_properties(BuiltIn${config} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE EXCLUDE_FROM_DEFAULT_BUILD_${Config} FALSE)
add_test_executable(ExcludedIn${config} main.c)
set_target_properties(ExcludedIn${config} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_${Config} TRUE)
endforeach()

View File

@ -0,0 +1,4 @@
file(GLOB exeFiles "${dir}/*.exe")
foreach(exeFile IN LISTS exeFiles)
file(REMOVE "${exeFile}")
endforeach()

View File

@ -0,0 +1,23 @@
message(STATUS "Testing configuration ${activeConfig}.")
macro(TestExists exeName)
set(exeFile "${dir}/${activeConfig}/${exeName}.exe")
if(${ARGN} EXISTS "${exeFile}")
message(STATUS "File ${exeFile} was correctly found ${ARGN} to exist.")
else()
message(FATAL_ERROR "File ${exeFile} was expected ${ARGN} to exist!")
endif()
endmacro()
TestExists(DefaultBuilt)
TestExists(AlwaysBuilt)
TestExists(NeverBuilt NOT)
foreach(config ${allConfigs})
if(config STREQUAL activeConfig)
TestExists(BuiltIn${config})
TestExists(ExcludedIn${config} NOT)
else()
TestExists(BuiltIn${config} NOT)
TestExists(ExcludedIn${config})
endif()
endforeach()

View File

@ -0,0 +1,4 @@
int main(void)
{
return 0;
}