| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- # 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}")
- 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}")
|