mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 19:00:54 -06:00
Tests: Add tests for INHERITED property chaining
This commit is contained in:
@@ -9,3 +9,4 @@ run_cmake(LINK_LIBRARIES)
|
||||
run_cmake(SOURCES)
|
||||
run_cmake(TYPE)
|
||||
run_cmake(USER_PROP)
|
||||
run_cmake(USER_PROP_INHERITED)
|
||||
|
||||
29
Tests/RunCMake/set_property/USER_PROP_INHERITED-stdout.txt
Normal file
29
Tests/RunCMake/set_property/USER_PROP_INHERITED-stdout.txt
Normal file
@@ -0,0 +1,29 @@
|
||||
-- TopDir-to-nothing chaining: ''
|
||||
-- TopDir-to-global chaining: 'vGlobal'
|
||||
-- TopDir no chaining required: 'vTopDir'
|
||||
-- TopDir unset append chaining: 'aTopDir'
|
||||
-- TopDir preset append chaining: 'vTopDir;aTopDir'
|
||||
-- Subdir-to-parent chaining: 'vTopDir'
|
||||
-- Subdir-to-global chaining: 'vGlobal'
|
||||
-- Subdir no chaining required: 'vSubdir'
|
||||
-- Subdir preset append chaining: 'vSubdir;aSubdir'
|
||||
-- Subdir unset append chaining: 'aSubdir'
|
||||
-- Subdir undefined append chaining: 'aSubdir'
|
||||
-- Target-to-directory chaining: 'vTopDir'
|
||||
-- Target unset append chaining: 'aTarget'
|
||||
-- Target no chaining required: 'vTarget'
|
||||
-- Target preset append chaining: 'vTarget;aTarget'
|
||||
-- Target undefined get chaining: ''
|
||||
-- Target undefined append chaining: 'aTarget'
|
||||
-- Source-to-directory chaining: 'vTopDir'
|
||||
-- Source unset append chaining: 'aSource'
|
||||
-- Source no chaining required: 'vSource'
|
||||
-- Source preset append chaining: 'vSource;aSource'
|
||||
-- Source undefined get chaining: ''
|
||||
-- Source undefined append chaining: 'aSource'
|
||||
-- Test-to-directory chaining: 'vTopDir'
|
||||
-- Test unset append chaining: 'aTest'
|
||||
-- Test no chaining required: 'vTest'
|
||||
-- Test preset append chaining: 'vTest;aTest'
|
||||
-- Test undefined get chaining: ''
|
||||
-- Test undefined append chaining: 'aTest'
|
||||
83
Tests/RunCMake/set_property/USER_PROP_INHERITED.cmake
Normal file
83
Tests/RunCMake/set_property/USER_PROP_INHERITED.cmake
Normal file
@@ -0,0 +1,83 @@
|
||||
# Needed for source property tests
|
||||
enable_language(C)
|
||||
|
||||
#=================================================
|
||||
# Directory property chaining
|
||||
#=================================================
|
||||
|
||||
foreach(i RANGE 1 5)
|
||||
foreach(propType DIRECTORY TARGET SOURCE TEST)
|
||||
define_property(${propType} PROPERTY USER_PROP${i} INHERITED
|
||||
BRIEF_DOCS "Brief" FULL_DOCS "Full"
|
||||
)
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
get_property(val DIRECTORY PROPERTY USER_PROP1)
|
||||
message(STATUS "TopDir-to-nothing chaining: '${val}'")
|
||||
|
||||
set_property(GLOBAL PROPERTY USER_PROP1 vGlobal)
|
||||
set_property(GLOBAL PROPERTY USER_PROP2 vGlobal)
|
||||
set_property(DIRECTORY PROPERTY USER_PROP2 vTopDir)
|
||||
set_property(GLOBAL PROPERTY USER_PROP3 vGlobal)
|
||||
set_property(DIRECTORY PROPERTY USER_PROP4 vTopDir)
|
||||
|
||||
get_property(val DIRECTORY PROPERTY USER_PROP1)
|
||||
message(STATUS "TopDir-to-global chaining: '${val}'")
|
||||
|
||||
get_property(val DIRECTORY PROPERTY USER_PROP2)
|
||||
message(STATUS "TopDir no chaining required: '${val}'")
|
||||
|
||||
set_property(DIRECTORY APPEND PROPERTY USER_PROP3 aTopDir)
|
||||
get_property(val DIRECTORY PROPERTY USER_PROP3)
|
||||
message(STATUS "TopDir unset append chaining: '${val}'")
|
||||
|
||||
set_property(DIRECTORY APPEND PROPERTY USER_PROP4 aTopDir)
|
||||
get_property(val DIRECTORY PROPERTY USER_PROP4)
|
||||
message(STATUS "TopDir preset append chaining: '${val}'")
|
||||
|
||||
add_subdirectory(USER_PROP_INHERITED)
|
||||
|
||||
#=================================================
|
||||
# The other property types all chain the same way
|
||||
#=================================================
|
||||
macro(__chainToDirTests propType)
|
||||
string(TOUPPER ${propType} propTypeUpper)
|
||||
|
||||
get_property(val ${propTypeUpper} ${propType}1 PROPERTY USER_PROP2)
|
||||
message(STATUS "${propType}-to-directory chaining: '${val}'")
|
||||
|
||||
set_property(${propTypeUpper} ${propType}1 APPEND PROPERTY USER_PROP2 a${propType})
|
||||
get_property(val ${propTypeUpper} ${propType}1 PROPERTY USER_PROP2)
|
||||
message(STATUS "${propType} unset append chaining: '${val}'")
|
||||
|
||||
set_property(${propTypeUpper} ${propType}1 PROPERTY USER_PROP1 v${propType})
|
||||
get_property(val ${propTypeUpper} ${propType}1 PROPERTY USER_PROP1)
|
||||
message(STATUS "${propType} no chaining required: '${val}'")
|
||||
|
||||
set_property(${propTypeUpper} ${propType}1 APPEND PROPERTY USER_PROP1 a${propType})
|
||||
get_property(val ${propTypeUpper} ${propType}1 PROPERTY USER_PROP1)
|
||||
message(STATUS "${propType} preset append chaining: '${val}'")
|
||||
|
||||
get_property(val ${propTypeUpper} ${propType}2 PROPERTY USER_PROP5)
|
||||
message(STATUS "${propType} undefined get chaining: '${val}'")
|
||||
|
||||
set_property(${propTypeUpper} ${propType}2 APPEND PROPERTY USER_PROP5 a${propType})
|
||||
get_property(val ${propTypeUpper} ${propType}2 PROPERTY USER_PROP5)
|
||||
message(STATUS "${propType} undefined append chaining: '${val}'")
|
||||
endmacro()
|
||||
|
||||
add_custom_target(Target1)
|
||||
add_custom_target(Target2)
|
||||
__chainToDirTests(Target)
|
||||
|
||||
foreach(i RANGE 1 2)
|
||||
set(Source${i} "${CMAKE_CURRENT_BINARY_DIR}/src${i}.c")
|
||||
file(WRITE ${Source${i}} "int foo${i}() { return ${i}; }")
|
||||
endforeach()
|
||||
add_library(srcProps OBJECT ${Source1} ${Source2})
|
||||
__chainToDirTests(Source)
|
||||
|
||||
add_test(NAME Test1 COMMAND ${CMAKE_COMMAND} -E touch_nocreate iDoNotExist)
|
||||
add_test(NAME Test2 COMMAND ${CMAKE_COMMAND} -E touch_nocreate iDoNotExist)
|
||||
__chainToDirTests(Test)
|
||||
@@ -0,0 +1,21 @@
|
||||
get_property(val DIRECTORY PROPERTY USER_PROP2)
|
||||
message(STATUS "Subdir-to-parent chaining: '${val}'")
|
||||
|
||||
get_property(val DIRECTORY PROPERTY USER_PROP1)
|
||||
message(STATUS "Subdir-to-global chaining: '${val}'")
|
||||
|
||||
set_property(DIRECTORY PROPERTY USER_PROP1 vSubdir)
|
||||
get_property(val DIRECTORY PROPERTY USER_PROP1)
|
||||
message(STATUS "Subdir no chaining required: '${val}'")
|
||||
|
||||
set_property(DIRECTORY APPEND PROPERTY USER_PROP1 aSubdir)
|
||||
get_property(val DIRECTORY PROPERTY USER_PROP1)
|
||||
message(STATUS "Subdir preset append chaining: '${val}'")
|
||||
|
||||
set_property(DIRECTORY APPEND PROPERTY USER_PROP2 aSubdir)
|
||||
get_property(val DIRECTORY PROPERTY USER_PROP2)
|
||||
message(STATUS "Subdir unset append chaining: '${val}'")
|
||||
|
||||
set_property(DIRECTORY APPEND PROPERTY USER_PROP5 aSubdir)
|
||||
get_property(val DIRECTORY PROPERTY USER_PROP5)
|
||||
message(STATUS "Subdir undefined append chaining: '${val}'")
|
||||
Reference in New Issue
Block a user