ExternalData: Collapse ../ components in DATA{} paths
Relative path components need to be normalized out even if they appear in the middle of a caller-supplied string.
This commit is contained in:
parent
ee2abfdc89
commit
e2e0d2e3c7
|
@ -334,8 +334,9 @@ function(_ExternalData_arg target arg options var_file)
|
|||
if(IS_ABSOLUTE "${data}")
|
||||
set(absdata "${data}")
|
||||
else()
|
||||
get_filename_component(absdata "${CMAKE_CURRENT_SOURCE_DIR}/${data}" ABSOLUTE)
|
||||
set(absdata "${CMAKE_CURRENT_SOURCE_DIR}/${data}")
|
||||
endif()
|
||||
get_filename_component(absdata "${absdata}" ABSOLUTE)
|
||||
|
||||
# Convert to relative path under the source tree.
|
||||
if(NOT ExternalData_SOURCE_ROOT)
|
||||
|
|
|
@ -4,6 +4,7 @@ ExternalData_Add_Test(Data2
|
|||
NAME Data2Check
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-D Data2=DATA{../Data2.dat}
|
||||
-D Data2b=DATA{${CMAKE_CURRENT_SOURCE_DIR}/../Data2b.dat}
|
||||
-D SeriesC=DATA{SeriesC_1_.my.dat,:}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/Data2Check.cmake
|
||||
)
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
if(NOT EXISTS "${Data2}")
|
||||
message(SEND_ERROR "Input file:\n ${Data2}\ndoes not exist!")
|
||||
foreach(d "${Data2}" "${Data2b}")
|
||||
file(STRINGS "${d}" lines LIMIT_INPUT 1024)
|
||||
if(NOT "x${lines}" STREQUAL "xInput file already transformed.")
|
||||
message(SEND_ERROR "Input file:\n ${d}\ndoes not have expected content, but [[${lines}]]")
|
||||
endif()
|
||||
endforeach()
|
||||
foreach(n 1 2 3)
|
||||
string(REGEX REPLACE "_1_\\.my\\.dat$" "_${n}_.my.dat" SeriesCFile "${SeriesC}")
|
||||
if(NOT EXISTS "${SeriesCFile}")
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
8c018830e3efa5caf3c7415028335a57
|
|
@ -1,2 +1,3 @@
|
|||
-- Data reference correctly transformed in parent dir!
|
||||
-- Data reference correctly transformed in parent dir 1!
|
||||
-- Data reference correctly transformed in parent dir 2!
|
||||
-- Data reference correctly transformed in current dir!
|
||||
|
|
|
@ -2,7 +2,17 @@ set(input ../Data.txt)
|
|||
set(output ${CMAKE_BINARY_DIR}/Data.txt)
|
||||
ExternalData_Expand_Arguments(Data args DATA{${input}})
|
||||
if("x${args}" STREQUAL "x${output}")
|
||||
message(STATUS "Data reference correctly transformed in parent dir!")
|
||||
message(STATUS "Data reference correctly transformed in parent dir 1!")
|
||||
else()
|
||||
message(FATAL_ERROR "Data reference transformed to:\n ${args}\n"
|
||||
"but we expected:\n ${output}")
|
||||
endif()
|
||||
|
||||
set(input ${CMAKE_CURRENT_SOURCE_DIR}/../Data.txt)
|
||||
set(output ${CMAKE_BINARY_DIR}/Data.txt)
|
||||
ExternalData_Expand_Arguments(Data args DATA{${input}})
|
||||
if("x${args}" STREQUAL "x${output}")
|
||||
message(STATUS "Data reference correctly transformed in parent dir 2!")
|
||||
else()
|
||||
message(FATAL_ERROR "Data reference transformed to:\n ${args}\n"
|
||||
"but we expected:\n ${output}")
|
||||
|
|
Loading…
Reference in New Issue