You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
182 lines
4.5 KiB
182 lines
4.5 KiB
# We do not contact any real URLs, but do try a bogus one.
|
|
# Remove any proxy configuration that may change behavior.
|
|
unset(ENV{http_proxy})
|
|
unset(ENV{https_proxy})
|
|
|
|
set(timeout 4)
|
|
|
|
if(NOT "@CMAKE_CURRENT_SOURCE_DIR@" MATCHES "^/")
|
|
set(slash /)
|
|
endif()
|
|
set(url "file://${slash}@CMAKE_CURRENT_SOURCE_DIR@/FileDownloadInput.png")
|
|
set(dir "@CMAKE_CURRENT_BINARY_DIR@/downloads")
|
|
|
|
# Beware Windows asynchronous file/directory removal, rename and then
|
|
# remove the renamed dir so we can be certain the dir isn't there when
|
|
# we get to the file() commands below
|
|
if(EXISTS "${dir}")
|
|
file(RENAME ${dir} "${dir}_beingRemoved")
|
|
file(REMOVE_RECURSE "${dir}_beingRemoved")
|
|
endif()
|
|
|
|
function(__reportIfWrongStatus statusPair expectedStatusCode)
|
|
list(GET statusPair 0 statusCode)
|
|
if(NOT statusCode EQUAL expectedStatusCode)
|
|
message(SEND_ERROR
|
|
"Unexpected status: ${statusCode}, expected: ${expectedStatusCode}")
|
|
endif()
|
|
endfunction()
|
|
|
|
message(STATUS "FileDownload:1")
|
|
file(DOWNLOAD
|
|
${url}
|
|
${dir}/file1.png
|
|
TIMEOUT ${timeout}
|
|
STATUS status
|
|
)
|
|
__reportIfWrongStatus("${status}" 0)
|
|
|
|
message(STATUS "FileDownload:2")
|
|
file(DOWNLOAD
|
|
${url}
|
|
${dir}/file2.png
|
|
TIMEOUT ${timeout}
|
|
STATUS status
|
|
SHOW_PROGRESS
|
|
)
|
|
__reportIfWrongStatus("${status}" 0)
|
|
|
|
# Two calls in a row, exactly the same arguments.
|
|
# Since downloaded file should exist already for 2nd call,
|
|
# the 2nd call will short-circuit and return early...
|
|
#
|
|
if(EXISTS ${dir}/file3.png)
|
|
file(REMOVE ${dir}/file3.png)
|
|
endif()
|
|
|
|
message(STATUS "FileDownload:3")
|
|
file(DOWNLOAD
|
|
${url}
|
|
${dir}/file3.png
|
|
TIMEOUT ${timeout}
|
|
STATUS status
|
|
EXPECTED_MD5 dbd330d52f4dbd60115d4191904ded92
|
|
)
|
|
__reportIfWrongStatus("${status}" 0)
|
|
|
|
message(STATUS "FileDownload:4")
|
|
file(DOWNLOAD
|
|
${url}
|
|
${dir}/file3.png
|
|
TIMEOUT ${timeout}
|
|
STATUS status
|
|
EXPECTED_HASH SHA1=67eee17f79d9ac557284fc0b8ad19f25723fb578
|
|
)
|
|
__reportIfWrongStatus("${status}" 0)
|
|
|
|
message(STATUS "FileDownload:5")
|
|
file(DOWNLOAD
|
|
${url}
|
|
${dir}/file3.png
|
|
TIMEOUT ${timeout}
|
|
STATUS status
|
|
EXPECTED_HASH SHA224=ba283726bbb602776818b463943189afd91836cb7ee5dd6e2c7b5ae4
|
|
)
|
|
__reportIfWrongStatus("${status}" 0)
|
|
|
|
message(STATUS "FileDownload:6")
|
|
file(DOWNLOAD
|
|
${url}
|
|
${dir}/file3.png
|
|
TIMEOUT ${timeout}
|
|
STATUS status
|
|
EXPECTED_HASH SHA256=cf3334b1275071e1da6e8c396ccb72cf1b2388d8c937526f3af26230affb9423
|
|
)
|
|
__reportIfWrongStatus("${status}" 0)
|
|
|
|
message(STATUS "FileDownload:7")
|
|
file(DOWNLOAD
|
|
${url}
|
|
${dir}/file3.png
|
|
TIMEOUT ${timeout}
|
|
STATUS status
|
|
EXPECTED_HASH SHA384=43a5d13978d97c660db44481aee0604cb4ff6ca0775cd5c2cd68cd8000e107e507c4caf6c228941231041e282ffb8950
|
|
)
|
|
__reportIfWrongStatus("${status}" 0)
|
|
|
|
message(STATUS "FileDownload:8")
|
|
file(DOWNLOAD
|
|
${url}
|
|
${dir}/file3.png
|
|
TIMEOUT ${timeout}
|
|
STATUS status
|
|
EXPECTED_HASH SHA512=6984e0909a1018030ccaa418e3be1654223cdccff0fe6adc745f9aea7e377f178be53b9fc7d54a6f81c2b62ef9ddcd38ba1978fedf4c5e7139baaf355eefad5b
|
|
)
|
|
__reportIfWrongStatus("${status}" 0)
|
|
|
|
message(STATUS "FileDownload:9")
|
|
file(DOWNLOAD
|
|
${url}
|
|
${dir}/file3.png
|
|
TIMEOUT ${timeout}
|
|
STATUS status
|
|
EXPECTED_HASH MD5=dbd330d52f4dbd60115d4191904ded92
|
|
)
|
|
__reportIfWrongStatus("${status}" 0)
|
|
|
|
message(STATUS "FileDownload:10")
|
|
file(DOWNLOAD
|
|
${url}
|
|
${dir}/file3.png
|
|
TIMEOUT ${timeout}
|
|
STATUS status
|
|
EXPECTED_MD5 dbd330d52f4dbd60115d4191904ded92
|
|
)
|
|
__reportIfWrongStatus("${status}" 0)
|
|
# Print status because we check its message too
|
|
message(STATUS "${status}")
|
|
|
|
# do not use proxy for lookup of invalid site (DNS failure by proxy looks
|
|
# different than DNS failure without proxy)
|
|
set(ENV{no_proxy} "$ENV{no_proxy},badhostname.invalid")
|
|
message(STATUS "FileDownload:11")
|
|
file(DOWNLOAD
|
|
badhostname.invalid
|
|
${dir}/file11.png
|
|
TIMEOUT 30
|
|
STATUS status
|
|
)
|
|
message(STATUS "${status}")
|
|
__reportIfWrongStatus("${status}" 6) # 6 corresponds to an unresolvable host name
|
|
|
|
message(STATUS "FileDownload:12")
|
|
set(absFile "@CMAKE_CURRENT_BINARY_DIR@/file12.png")
|
|
if(EXISTS "${absFile}")
|
|
file(RENAME ${absFile} "${absFile}_beingRemoved")
|
|
file(REMOVE "${absFile}_beingRemoved")
|
|
endif()
|
|
file(DOWNLOAD
|
|
${url}
|
|
file12.png
|
|
TIMEOUT ${timeout}
|
|
EXPECTED_MD5 dbd330d52f4dbd60115d4191904ded92
|
|
STATUS status
|
|
)
|
|
__reportIfWrongStatus("${status}" 0)
|
|
if(NOT EXISTS file12.png)
|
|
message(SEND_ERROR "file12.png not downloaded: ${status}")
|
|
endif()
|
|
|
|
message(STATUS "FileDownload:13")
|
|
file(DOWNLOAD
|
|
${url}
|
|
TIMEOUT ${timeout}
|
|
STATUS status
|
|
)
|
|
__reportIfWrongStatus("${status}" 0)
|
|
if(EXISTS TIMEOUT)
|
|
file(REMOVE TIMEOUT)
|
|
message(SEND_ERROR "TIMEOUT argument was incorrectly interpreted as a filename")
|
|
endif()
|
|
message(STATUS "${status}")
|