Tests: Add tests for INHERITED property chaining

This commit is contained in:
Craig Scott
2018-03-21 20:35:38 +11:00
parent 5831b6a2ae
commit 9cc97ab4dc
4 changed files with 134 additions and 0 deletions

View File

@@ -9,3 +9,4 @@ run_cmake(LINK_LIBRARIES)
run_cmake(SOURCES)
run_cmake(TYPE)
run_cmake(USER_PROP)
run_cmake(USER_PROP_INHERITED)

View 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'

View 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)

View File

@@ -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}'")