mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 13:20:47 -06:00
ExternalData: Add support for custom download scripts
Add support for a special URL template to map the fetch operation to a project-specified .cmake script insead of using file(DOWNLOAD). Extend the Module.ExternalData test to cover the behavior. Extend the RunCMake.ExternalData test to cover error cases.
This commit is contained in:
@@ -10,7 +10,9 @@ if(NOT "${CMAKE_CURRENT_SOURCE_DIR}" MATCHES "^/")
|
||||
endif()
|
||||
set(ExternalData_URL_TEMPLATES
|
||||
"file://${slash}${CMAKE_CURRENT_SOURCE_DIR}/%(algo)/%(hash)"
|
||||
"ExternalDataCustomScript://MyScript1/%(algo)/%(hash)"
|
||||
)
|
||||
set(ExternalData_CUSTOM_SCRIPT_MyScript1 "${CMAKE_CURRENT_SOURCE_DIR}/MyScript1.cmake")
|
||||
set(ExternalData_BINARY_ROOT "${CMAKE_CURRENT_BINARY_DIR}/ExternalData")
|
||||
file(REMOVE_RECURSE ${ExternalData_BINARY_ROOT}) # clean test
|
||||
|
||||
@@ -23,6 +25,7 @@ ExternalData_Add_Test(Data1
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-D Data=DATA{Data.dat}
|
||||
${Data1CheckSpaces}
|
||||
-D DataScript=DATA{DataScript.dat}
|
||||
-D DataMissing=DATA{DataMissing.dat}
|
||||
-D DataMissingWithAssociated=DATA{DataMissing.dat,Data.dat}
|
||||
-D SeriesA=DATA{SeriesA.dat,:}
|
||||
|
||||
@@ -8,6 +8,10 @@ if(DEFINED DataSpace)
|
||||
message(SEND_ERROR "Input file:\n ${DataSpace}\ndoes not have expected content, but [[${lines}]]")
|
||||
endif()
|
||||
endif()
|
||||
file(STRINGS "${DataScript}" lines LIMIT_INPUT 1024)
|
||||
if(NOT "x${lines}" STREQUAL "xDataScript")
|
||||
message(SEND_ERROR "Input file:\n ${DataScript}\ndoes not have expected content, but [[${lines}]]")
|
||||
endif()
|
||||
if(DataMissing)
|
||||
if(EXISTS "${DataMissing}")
|
||||
message(SEND_ERROR
|
||||
|
||||
1
Tests/Module/ExternalData/DataScript.dat.md5
Normal file
1
Tests/Module/ExternalData/DataScript.dat.md5
Normal file
@@ -0,0 +1 @@
|
||||
fd95c03719e8626c0d10a818f9996dc5
|
||||
5
Tests/Module/ExternalData/MyScript1.cmake
Normal file
5
Tests/Module/ExternalData/MyScript1.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
if(ExternalData_CUSTOM_LOCATION STREQUAL "MD5/fd95c03719e8626c0d10a818f9996dc5")
|
||||
file(WRITE "${ExternalData_CUSTOM_FILE}" "DataScript")
|
||||
else()
|
||||
set(ExternalData_CUSTOM_ERROR "no ${ExternalData_CUSTOM_LOCATION} known")
|
||||
endif()
|
||||
Reference in New Issue
Block a user