diff options
author | Brad King <brad.king@kitware.com> | 2022-11-21 14:52:20 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2022-11-21 14:52:29 (GMT) |
commit | 38660bfc20862cf52749b93542d26859bf690861 (patch) | |
tree | f196b59fc87fa3da0e78548928ea581b7b6c6a54 | |
parent | 2a06f3ca03ebd76c2795886e9cd4cb52c4926e37 (diff) | |
parent | 28513a5fbaa5e1ea326c54b4e5edd1d302c257dd (diff) | |
download | CMake-38660bfc20862cf52749b93542d26859bf690861.zip CMake-38660bfc20862cf52749b93542d26859bf690861.tar.gz CMake-38660bfc20862cf52749b93542d26859bf690861.tar.bz2 |
Merge topic 'test-file-download'
28513a5fba Tests: Honor CMake_TEST_NO_NETWORK in RunCMake.file-DOWNLOAD
52b9c7b958 Tests: Move CMake.FileDownload cases into RunCMake.file-DOWNLOAD
9dda7c276c Tests: Factor out common helper in RunCMake.file-DOWNLOAD cases
d6af54c473 Tests: Factor out a RunCMake.file-DOWNLOAD test
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7937
58 files changed, 180 insertions, 310 deletions
diff --git a/Tests/CMakeTests/CMakeLists.txt b/Tests/CMakeTests/CMakeLists.txt index bd2dd7e..16e631b 100644 --- a/Tests/CMakeTests/CMakeLists.txt +++ b/Tests/CMakeTests/CMakeLists.txt @@ -32,16 +32,6 @@ AddCMakeTest(ProcessorCount "-DKWSYS_TEST_EXE=$<TARGET_FILE:cmsysTestsCxx>") AddCMakeTest(PushCheckState "") AddCMakeTest(While "") -AddCMakeTest(FileDownload "") -set_tests_properties(CMake.FileDownload PROPERTIES - PASS_REGULAR_EXPRESSION "file already exists with expected MD5 sum" - FAIL_REGULAR_EXPRESSION "Unexpected status|incorrectly interpreted" - ) -AddCMakeTest(FileDownloadBadHash "") -set_property(TEST CMake.FileDownloadBadHash PROPERTY - WILL_FAIL TRUE - ) - AddCMakeTest(FileUpload "") set(EndStuff_PreArgs diff --git a/Tests/CMakeTests/FileDownloadBadHashTest.cmake.in b/Tests/CMakeTests/FileDownloadBadHashTest.cmake.in deleted file mode 100644 index 64b45ed..0000000 --- a/Tests/CMakeTests/FileDownloadBadHashTest.cmake.in +++ /dev/null @@ -1,13 +0,0 @@ -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") - -file(DOWNLOAD - ${url} - ${dir}/file3.png - TIMEOUT 2 - STATUS status - EXPECTED_HASH SHA1=5555555555555555555555555555555555555555 - ) diff --git a/Tests/CMakeTests/FileDownloadTest.cmake.in b/Tests/CMakeTests/FileDownloadTest.cmake.in deleted file mode 100644 index 255909d..0000000 --- a/Tests/CMakeTests/FileDownloadTest.cmake.in +++ /dev/null @@ -1,229 +0,0 @@ -# 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}") - -message(STATUS "FileDownload:14") -file(DOWNLOAD - ${url} - ${dir}/file14.bin - TIMEOUT ${timeout} - STATUS status - RANGE_START 0 - EXPECTED_MD5 dbd330d52f4dbd60115d4191904ded92 - ) -__reportIfWrongStatus("${status}" 0) - -message(STATUS "FileDownload:15") -file(DOWNLOAD - ${url} - ${dir}/file15.bin - TIMEOUT ${timeout} - STATUS status - RANGE_END 50 - EXPECTED_MD5 8592e5665b839b5d23825dc84c135b61 - ) -__reportIfWrongStatus("${status}" 0) - -message(STATUS "FileDownload:16") -file(DOWNLOAD - ${url} - ${dir}/file16.bin - TIMEOUT ${timeout} - STATUS status - RANGE_START 10 - RANGE_END 50 - EXPECTED_MD5 36cd52681e6c6c8fef85fcd9e86fc30d - ) -__reportIfWrongStatus("${status}" 0) - -message(STATUS "FileDownload:17") -file(DOWNLOAD - ${url} - ${dir}/file17.bin - TIMEOUT ${timeout} - STATUS status - RANGE_START 0 - RANGE_END 50 - RANGE_START 60 - RANGE_END 100 - EXPECTED_MD5 c5c9e74e82d493dd901eecccd659cebc - ) -__reportIfWrongStatus("${status}" 0) diff --git a/Tests/CMakeTests/FileDownloadInput.png b/Tests/CMakeTests/FileUploadInput.png Binary files differindex 9ab565a..9ab565a 100644 --- a/Tests/CMakeTests/FileDownloadInput.png +++ b/Tests/CMakeTests/FileUploadInput.png diff --git a/Tests/CMakeTests/FileUploadTest.cmake.in b/Tests/CMakeTests/FileUploadTest.cmake.in index 0e6f080..7725041 100644 --- a/Tests/CMakeTests/FileUploadTest.cmake.in +++ b/Tests/CMakeTests/FileUploadTest.cmake.in @@ -9,7 +9,7 @@ endif() file(MAKE_DIRECTORY "@CMAKE_CURRENT_BINARY_DIR@/uploads") -set(filename "@CMAKE_CURRENT_SOURCE_DIR@/FileDownloadInput.png") +set(filename "@CMAKE_CURRENT_SOURCE_DIR@/FileUploadInput.png") if(NOT "@CMAKE_CURRENT_BINARY_DIR@" MATCHES "^/") set(slash /) endif() diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 1174d0d..0fe4919 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -466,6 +466,7 @@ add_RunCMake_test(ctest_fixtures) add_RunCMake_test(define_property) add_RunCMake_test(file -DCYGWIN=${CYGWIN} -DMSYS=${MSYS}) add_RunCMake_test(file-CHMOD -DMSYS=${MSYS}) +add_RunCMake_test(file-DOWNLOAD -DCMake_TEST_NO_NETWORK=${CMake_TEST_NO_NETWORK}) add_RunCMake_test(file-RPATH -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}) add_RunCMake_test(find_file) add_RunCMake_test(find_library -DCYGWIN=${CYGWIN} -DMSYS=${MSYS}) diff --git a/Tests/RunCMake/file-DOWNLOAD/CMakeLists.txt b/Tests/RunCMake/file-DOWNLOAD/CMakeLists.txt new file mode 100644 index 0000000..9a66cde --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.13) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/file-DOWNLOAD/EXPECTED_HASH-stdout.txt b/Tests/RunCMake/file-DOWNLOAD/EXPECTED_HASH-stdout.txt new file mode 100644 index 0000000..bd1727a --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/EXPECTED_HASH-stdout.txt @@ -0,0 +1,8 @@ +-- status='0;"No error"' +-- status='0;"skipping download as file already exists with expected MD5 sum"' +-- status='0;"skipping download as file already exists with expected MD5 hash"' +-- status='0;"skipping download as file already exists with expected SHA1 hash"' +-- status='0;"skipping download as file already exists with expected SHA224 hash"' +-- status='0;"skipping download as file already exists with expected SHA256 hash"' +-- status='0;"skipping download as file already exists with expected SHA384 hash"' +-- status='0;"skipping download as file already exists with expected SHA512 hash"' diff --git a/Tests/RunCMake/file-DOWNLOAD/EXPECTED_HASH.cmake b/Tests/RunCMake/file-DOWNLOAD/EXPECTED_HASH.cmake new file mode 100644 index 0000000..dc7f8ff --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/EXPECTED_HASH.cmake @@ -0,0 +1,13 @@ +include(common.cmake) + +# Actually download the file and verify its hash. +file_download(EXPECTED_MD5 dbd330d52f4dbd60115d4191904ded92) + +# Verify that the local file already exists with expected hash. +file_download(EXPECTED_MD5 dbd330d52f4dbd60115d4191904ded92) +file_download(EXPECTED_HASH MD5=dbd330d52f4dbd60115d4191904ded92) +file_download(EXPECTED_HASH SHA1=67eee17f79d9ac557284fc0b8ad19f25723fb578) +file_download(EXPECTED_HASH SHA224=ba283726bbb602776818b463943189afd91836cb7ee5dd6e2c7b5ae4) +file_download(EXPECTED_HASH SHA256=cf3334b1275071e1da6e8c396ccb72cf1b2388d8c937526f3af26230affb9423) +file_download(EXPECTED_HASH SHA384=43a5d13978d97c660db44481aee0604cb4ff6ca0775cd5c2cd68cd8000e107e507c4caf6c228941231041e282ffb8950) +file_download(EXPECTED_HASH SHA512=6984e0909a1018030ccaa418e3be1654223cdccff0fe6adc745f9aea7e377f178be53b9fc7d54a6f81c2b62ef9ddcd38ba1978fedf4c5e7139baaf355eefad5b) diff --git a/Tests/RunCMake/file-DOWNLOAD/RunCMakeTest.cmake b/Tests/RunCMake/file-DOWNLOAD/RunCMakeTest.cmake new file mode 100644 index 0000000..565f440 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/RunCMakeTest.cmake @@ -0,0 +1,26 @@ +include(RunCMake) + +# 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}) + +run_cmake(hash-mismatch) +run_cmake(unused-argument) +run_cmake(httpheader-not-set) +run_cmake(netrc-bad) +run_cmake(tls-cainfo-not-set) +run_cmake(tls-verify-not-set) +run_cmake(pass-not-set) +run_cmake(no-save-hash) + +run_cmake(basic) +run_cmake(EXPECTED_HASH) +run_cmake(file-without-path) +run_cmake(no-file) +run_cmake(range) +run_cmake(SHOW_PROGRESS) + +if(NOT CMake_TEST_NO_NETWORK) + run_cmake(bad-hostname) +endif() diff --git a/Tests/RunCMake/file-DOWNLOAD/SHOW_PROGRESS-stdout.txt b/Tests/RunCMake/file-DOWNLOAD/SHOW_PROGRESS-stdout.txt new file mode 100644 index 0000000..e0a4982 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/SHOW_PROGRESS-stdout.txt @@ -0,0 +1,2 @@ +-- \[download 100% complete\] +-- status='0;"No error"' diff --git a/Tests/RunCMake/file-DOWNLOAD/SHOW_PROGRESS.cmake b/Tests/RunCMake/file-DOWNLOAD/SHOW_PROGRESS.cmake new file mode 100644 index 0000000..ccabced --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/SHOW_PROGRESS.cmake @@ -0,0 +1,3 @@ +include(common.cmake) + +file_download(SHOW_PROGRESS) diff --git a/Tests/RunCMake/file-DOWNLOAD/bad-hostname-stdout.txt b/Tests/RunCMake/file-DOWNLOAD/bad-hostname-stdout.txt new file mode 100644 index 0000000..12278e0 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/bad-hostname-stdout.txt @@ -0,0 +1 @@ +-- status='6;"Couldn't resolve host name"' diff --git a/Tests/RunCMake/file-DOWNLOAD/bad-hostname.cmake b/Tests/RunCMake/file-DOWNLOAD/bad-hostname.cmake new file mode 100644 index 0000000..d3b7a28 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/bad-hostname.cmake @@ -0,0 +1,9 @@ +include(common.cmake) + +# Do not use any proxy for lookup of an invalid site. +# DNS failure by proxy looks different than DNS failure without proxy. +set(ENV{no_proxy} "$ENV{no_proxy},badhostname.invalid") + +set(url "badhostname.invalid") + +file_download() diff --git a/Tests/RunCMake/file-DOWNLOAD/basic-stdout.txt b/Tests/RunCMake/file-DOWNLOAD/basic-stdout.txt new file mode 100644 index 0000000..701e995 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/basic-stdout.txt @@ -0,0 +1 @@ +-- status='0;"No error"' diff --git a/Tests/RunCMake/file-DOWNLOAD/basic.cmake b/Tests/RunCMake/file-DOWNLOAD/basic.cmake new file mode 100644 index 0000000..1fd931c --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/basic.cmake @@ -0,0 +1,3 @@ +include(common.cmake) + +file_download() diff --git a/Tests/RunCMake/file-DOWNLOAD/common.cmake b/Tests/RunCMake/file-DOWNLOAD/common.cmake new file mode 100644 index 0000000..6aa2fe6 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/common.cmake @@ -0,0 +1,15 @@ +if(NOT "${CMAKE_CURRENT_SOURCE_DIR}" MATCHES "^/") + set(slash /) +endif() +set(url "file://${slash}${CMAKE_CURRENT_SOURCE_DIR}/input.png") +set(file ${CMAKE_CURRENT_BINARY_DIR}/output.png) + +function(file_download) + file(DOWNLOAD "${url}" + ${file} # leave unquoted + TIMEOUT 30 + STATUS status + ${ARGN} + ) + message(STATUS "status='${status}'") +endfunction() diff --git a/Tests/RunCMake/file-DOWNLOAD/file-without-path-stdout.txt b/Tests/RunCMake/file-DOWNLOAD/file-without-path-stdout.txt new file mode 100644 index 0000000..701e995 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/file-without-path-stdout.txt @@ -0,0 +1 @@ +-- status='0;"No error"' diff --git a/Tests/RunCMake/file-DOWNLOAD/file-without-path.cmake b/Tests/RunCMake/file-DOWNLOAD/file-without-path.cmake new file mode 100644 index 0000000..a628423 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/file-without-path.cmake @@ -0,0 +1,10 @@ +include(common.cmake) + +set(file_orig "${file}") +cmake_path(GET file_orig FILENAME file) + +file_download() + +if(NOT EXISTS "${file_orig}") + message(FATAL_ERROR "file not downloaded to expected path:\n ${file_orig}") +endif() diff --git a/Tests/RunCMake/file/DOWNLOAD-tls-verify-not-set-result.txt b/Tests/RunCMake/file-DOWNLOAD/hash-mismatch-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/file/DOWNLOAD-tls-verify-not-set-result.txt +++ b/Tests/RunCMake/file-DOWNLOAD/hash-mismatch-result.txt diff --git a/Tests/RunCMake/file-DOWNLOAD/hash-mismatch-stderr.txt b/Tests/RunCMake/file-DOWNLOAD/hash-mismatch-stderr.txt new file mode 100644 index 0000000..6682794 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/hash-mismatch-stderr.txt @@ -0,0 +1,11 @@ +^CMake Error at hash-mismatch.cmake:[0-9]+ \(file\): + file DOWNLOAD HASH mismatch + + for file: \[.*/Tests/RunCMake/file-DOWNLOAD/hash-mismatch-build/output.png\] + expected hash: \[0123456789abcdef0123456789abcdef01234567\] + actual hash: \[67eee17f79d9ac557284fc0b8ad19f25723fb578\] + +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ +status='1;HASH mismatch: expected: 0123456789abcdef0123456789abcdef01234567 actual: 67eee17f79d9ac557284fc0b8ad19f25723fb578'$ diff --git a/Tests/RunCMake/file-DOWNLOAD/hash-mismatch.cmake b/Tests/RunCMake/file-DOWNLOAD/hash-mismatch.cmake new file mode 100644 index 0000000..e3f91e3 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/hash-mismatch.cmake @@ -0,0 +1,8 @@ +include(common.cmake) + +file(DOWNLOAD ${url} ${file} + EXPECTED_HASH SHA1=0123456789abcdef0123456789abcdef01234567 + TIMEOUT 30 + STATUS status + ) +message("status='${status}'") diff --git a/Tests/RunCMake/file/DOWNLOAD-tls-cainfo-not-set-result.txt b/Tests/RunCMake/file-DOWNLOAD/httpheader-not-set-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/file/DOWNLOAD-tls-cainfo-not-set-result.txt +++ b/Tests/RunCMake/file-DOWNLOAD/httpheader-not-set-result.txt diff --git a/Tests/RunCMake/file/DOWNLOAD-httpheader-not-set-stderr.txt b/Tests/RunCMake/file-DOWNLOAD/httpheader-not-set-stderr.txt index 247923b..3ac5082 100644 --- a/Tests/RunCMake/file/DOWNLOAD-httpheader-not-set-stderr.txt +++ b/Tests/RunCMake/file-DOWNLOAD/httpheader-not-set-stderr.txt @@ -1,4 +1,4 @@ -^CMake Error at DOWNLOAD-httpheader-not-set.cmake:[0-9]+ \(file\): +^CMake Error at httpheader-not-set.cmake:[0-9]+ \(file\): file DOWNLOAD missing string for HTTPHEADER. Call Stack \(most recent call first\): CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/file/DOWNLOAD-httpheader-not-set.cmake b/Tests/RunCMake/file-DOWNLOAD/httpheader-not-set.cmake index 6efc958..6efc958 100644 --- a/Tests/RunCMake/file/DOWNLOAD-httpheader-not-set.cmake +++ b/Tests/RunCMake/file-DOWNLOAD/httpheader-not-set.cmake diff --git a/Tests/RunCMake/file-DOWNLOAD/input.png b/Tests/RunCMake/file-DOWNLOAD/input.png Binary files differnew file mode 100644 index 0000000..9ab565a --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/input.png diff --git a/Tests/RunCMake/file/DOWNLOAD-pass-not-set-result.txt b/Tests/RunCMake/file-DOWNLOAD/netrc-bad-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/file/DOWNLOAD-pass-not-set-result.txt +++ b/Tests/RunCMake/file-DOWNLOAD/netrc-bad-result.txt diff --git a/Tests/RunCMake/file/DOWNLOAD-netrc-bad-stderr.txt b/Tests/RunCMake/file-DOWNLOAD/netrc-bad-stderr.txt index 96ce62a..61d7c99 100644 --- a/Tests/RunCMake/file/DOWNLOAD-netrc-bad-stderr.txt +++ b/Tests/RunCMake/file-DOWNLOAD/netrc-bad-stderr.txt @@ -1,19 +1,19 @@ -^CMake Error at DOWNLOAD-netrc-bad\.cmake:[0-9]+ \(file\): +^CMake Error at netrc-bad\.cmake:[0-9]+ \(file\): file DOWNLOAD missing level value for NETRC\. Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\) + -CMake Error at DOWNLOAD-netrc-bad\.cmake:[0-9]+ \(file\): +CMake Error at netrc-bad\.cmake:[0-9]+ \(file\): file DOWNLOAD missing file value for NETRC_FILE\. Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\) + -CMake Error at DOWNLOAD-netrc-bad\.cmake:[0-9]+ \(file\): +CMake Error at netrc-bad\.cmake:[0-9]+ \(file\): file NETRC accepts OPTIONAL, IGNORED or REQUIRED but got: INVALID Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\) + -CMake Error at DOWNLOAD-netrc-bad\.cmake:[0-9]+ \(file\): +CMake Error at netrc-bad\.cmake:[0-9]+ \(file\): file NETRC accepts OPTIONAL, IGNORED or REQUIRED but got: FALSE Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/file/DOWNLOAD-netrc-bad.cmake b/Tests/RunCMake/file-DOWNLOAD/netrc-bad.cmake index 6a62df9..c62238a 100644 --- a/Tests/RunCMake/file/DOWNLOAD-netrc-bad.cmake +++ b/Tests/RunCMake/file-DOWNLOAD/netrc-bad.cmake @@ -5,11 +5,11 @@ file(DOWNLOAD "" "" NETRC) file(DOWNLOAD "" "" NETRC_FILE) set(CMAKE_NETRC FALSE) file(DOWNLOAD - "file://${slash}${CMAKE_CURRENT_SOURCE_DIR}/DOWNLOAD-netrc-bad.txt" + "file://${slash}${CMAKE_CURRENT_SOURCE_DIR}/netrc-bad.txt" "${CMAKE_CURRENT_BINARY_DIR}/netrc-bad.txt" NETRC INVALID ) file(DOWNLOAD - "file://${slash}${CMAKE_CURRENT_SOURCE_DIR}/DOWNLOAD-netrc-bad.txt" + "file://${slash}${CMAKE_CURRENT_SOURCE_DIR}/netrc-bad.txt" "${CMAKE_CURRENT_BINARY_DIR}/netrc-bad.txt" ) diff --git a/Tests/RunCMake/file/DOWNLOAD-unused-argument.txt b/Tests/RunCMake/file-DOWNLOAD/netrc-bad.txt index e69de29..e69de29 100644 --- a/Tests/RunCMake/file/DOWNLOAD-unused-argument.txt +++ b/Tests/RunCMake/file-DOWNLOAD/netrc-bad.txt diff --git a/Tests/RunCMake/file-DOWNLOAD/no-file-arg.cmake b/Tests/RunCMake/file-DOWNLOAD/no-file-arg.cmake new file mode 100644 index 0000000..6520940 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/no-file-arg.cmake @@ -0,0 +1,11 @@ +include(common.cmake) + +set(file "") + +file_download() + +set(file "${CMAKE_CURRENT_BINARY_DIR}/input.png") + +if(NOT EXISTS "${file}") + message(FATAL_ERROR "file not downloaded to expected path:\n ${file}") +endif() diff --git a/Tests/RunCMake/file-DOWNLOAD/no-file-stdout.txt b/Tests/RunCMake/file-DOWNLOAD/no-file-stdout.txt new file mode 100644 index 0000000..701e995 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/no-file-stdout.txt @@ -0,0 +1 @@ +-- status='0;"No error"' diff --git a/Tests/RunCMake/file-DOWNLOAD/no-file.cmake b/Tests/RunCMake/file-DOWNLOAD/no-file.cmake new file mode 100644 index 0000000..dc234b2 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/no-file.cmake @@ -0,0 +1,11 @@ +include(common.cmake) + +# Test downloading without saving to a file. +set(file "") +file_download() + +foreach(name input.png output.png TIMEOUT) + if(EXISTS "${CMAKE_CURRENT_BINARY_DIR}/${name}") + message(FATAL_ERROR "file incorrectly saved to:\n ${CMAKE_CURRENT_BINARY_DIR}/${name}") + endif() +endforeach() diff --git a/Tests/RunCMake/file/DOWNLOAD-no-save-hash-result.txt b/Tests/RunCMake/file-DOWNLOAD/no-save-hash-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/file/DOWNLOAD-no-save-hash-result.txt +++ b/Tests/RunCMake/file-DOWNLOAD/no-save-hash-result.txt diff --git a/Tests/RunCMake/file/DOWNLOAD-no-save-hash-stderr.txt b/Tests/RunCMake/file-DOWNLOAD/no-save-hash-stderr.txt index b0f0d19..8f2f885 100644 --- a/Tests/RunCMake/file/DOWNLOAD-no-save-hash-stderr.txt +++ b/Tests/RunCMake/file-DOWNLOAD/no-save-hash-stderr.txt @@ -1,4 +1,5 @@ -^CMake Error at DOWNLOAD-no-save-hash\.cmake:[0-9]+ \(file\): +^CMake Error at common\.cmake:[0-9]+ \(file\): file DOWNLOAD cannot calculate hash if file is not saved\. Call Stack \(most recent call first\): + no-save-hash.cmake:[0-9]+ \(file_download\) CMakeLists\.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/file-DOWNLOAD/no-save-hash.cmake b/Tests/RunCMake/file-DOWNLOAD/no-save-hash.cmake new file mode 100644 index 0000000..7fdc397 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/no-save-hash.cmake @@ -0,0 +1,5 @@ +include(common.cmake) + +# Test downloading without saving to a file. +set(file "") +file_download(EXPECTED_HASH MD5=55555555555555555555555555555555) diff --git a/Tests/RunCMake/file/DOWNLOAD-unused-argument-result.txt b/Tests/RunCMake/file-DOWNLOAD/no-save-hash.txt index e69de29..e69de29 100644 --- a/Tests/RunCMake/file/DOWNLOAD-unused-argument-result.txt +++ b/Tests/RunCMake/file-DOWNLOAD/no-save-hash.txt diff --git a/Tests/RunCMake/file/DOWNLOAD-netrc-bad-result.txt b/Tests/RunCMake/file-DOWNLOAD/pass-not-set-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/file/DOWNLOAD-netrc-bad-result.txt +++ b/Tests/RunCMake/file-DOWNLOAD/pass-not-set-result.txt diff --git a/Tests/RunCMake/file/DOWNLOAD-pass-not-set-stderr.txt b/Tests/RunCMake/file-DOWNLOAD/pass-not-set-stderr.txt index 2fa2731..23997c5 100644 --- a/Tests/RunCMake/file/DOWNLOAD-pass-not-set-stderr.txt +++ b/Tests/RunCMake/file-DOWNLOAD/pass-not-set-stderr.txt @@ -1,4 +1,4 @@ -^CMake Error at DOWNLOAD-pass-not-set.cmake:[0-9]+ \(file\): +^CMake Error at pass-not-set.cmake:[0-9]+ \(file\): file DOWNLOAD missing string for USERPWD. Call Stack \(most recent call first\): CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/file/DOWNLOAD-pass-not-set.cmake b/Tests/RunCMake/file-DOWNLOAD/pass-not-set.cmake index 61eff6d..61eff6d 100644 --- a/Tests/RunCMake/file/DOWNLOAD-pass-not-set.cmake +++ b/Tests/RunCMake/file-DOWNLOAD/pass-not-set.cmake diff --git a/Tests/RunCMake/file-DOWNLOAD/range-stdout.txt b/Tests/RunCMake/file-DOWNLOAD/range-stdout.txt new file mode 100644 index 0000000..e2ed7aa --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/range-stdout.txt @@ -0,0 +1,4 @@ +-- status='0;"No error"' +-- status='0;"No error"' +-- status='0;"No error"' +-- status='0;"No error"' diff --git a/Tests/RunCMake/file-DOWNLOAD/range.cmake b/Tests/RunCMake/file-DOWNLOAD/range.cmake new file mode 100644 index 0000000..f77bb28 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/range.cmake @@ -0,0 +1,15 @@ +include(common.cmake) + +set(file ${CMAKE_CURRENT_BINARY_DIR}/output1.png) +file_download(RANGE_START 0 EXPECTED_MD5 dbd330d52f4dbd60115d4191904ded92) + +set(file ${CMAKE_CURRENT_BINARY_DIR}/output2.png) +file_download(RANGE_END 50 EXPECTED_MD5 8592e5665b839b5d23825dc84c135b61) + +set(file ${CMAKE_CURRENT_BINARY_DIR}/output3.png) +file_download(RANGE_START 10 RANGE_END 50 EXPECTED_MD5 36cd52681e6c6c8fef85fcd9e86fc30d) + +set(file ${CMAKE_CURRENT_BINARY_DIR}/output4.png) +file_download(RANGE_START 0 RANGE_END 50 + RANGE_START 60 RANGE_END 100 + EXPECTED_MD5 c5c9e74e82d493dd901eecccd659cebc) diff --git a/Tests/RunCMake/file/DOWNLOAD-httpheader-not-set-result.txt b/Tests/RunCMake/file-DOWNLOAD/tls-cainfo-not-set-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/file/DOWNLOAD-httpheader-not-set-result.txt +++ b/Tests/RunCMake/file-DOWNLOAD/tls-cainfo-not-set-result.txt diff --git a/Tests/RunCMake/file/DOWNLOAD-tls-cainfo-not-set-stderr.txt b/Tests/RunCMake/file-DOWNLOAD/tls-cainfo-not-set-stderr.txt index 1552baa..d9fa7b7 100644 --- a/Tests/RunCMake/file/DOWNLOAD-tls-cainfo-not-set-stderr.txt +++ b/Tests/RunCMake/file-DOWNLOAD/tls-cainfo-not-set-stderr.txt @@ -1,4 +1,4 @@ -^CMake Error at DOWNLOAD-tls-cainfo-not-set.cmake:[0-9]+ \(file\): +^CMake Error at tls-cainfo-not-set.cmake:[0-9]+ \(file\): file DOWNLOAD missing file value for TLS_CAINFO. Call Stack \(most recent call first\): CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/file/DOWNLOAD-tls-cainfo-not-set.cmake b/Tests/RunCMake/file-DOWNLOAD/tls-cainfo-not-set.cmake index b476425..b476425 100644 --- a/Tests/RunCMake/file/DOWNLOAD-tls-cainfo-not-set.cmake +++ b/Tests/RunCMake/file-DOWNLOAD/tls-cainfo-not-set.cmake diff --git a/Tests/RunCMake/file/DOWNLOAD-hash-mismatch-result.txt b/Tests/RunCMake/file-DOWNLOAD/tls-verify-not-set-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/file/DOWNLOAD-hash-mismatch-result.txt +++ b/Tests/RunCMake/file-DOWNLOAD/tls-verify-not-set-result.txt diff --git a/Tests/RunCMake/file/DOWNLOAD-tls-verify-not-set-stderr.txt b/Tests/RunCMake/file-DOWNLOAD/tls-verify-not-set-stderr.txt index 2f46c0c..c048ea9 100644 --- a/Tests/RunCMake/file/DOWNLOAD-tls-verify-not-set-stderr.txt +++ b/Tests/RunCMake/file-DOWNLOAD/tls-verify-not-set-stderr.txt @@ -1,4 +1,4 @@ -^CMake Error at DOWNLOAD-tls-verify-not-set.cmake:[0-9]+ \(file\): +^CMake Error at tls-verify-not-set.cmake:[0-9]+ \(file\): file DOWNLOAD missing bool value for TLS_VERIFY. Call Stack \(most recent call first\): CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/file/DOWNLOAD-tls-verify-not-set.cmake b/Tests/RunCMake/file-DOWNLOAD/tls-verify-not-set.cmake index 919368c..919368c 100644 --- a/Tests/RunCMake/file/DOWNLOAD-tls-verify-not-set.cmake +++ b/Tests/RunCMake/file-DOWNLOAD/tls-verify-not-set.cmake diff --git a/Tests/RunCMake/file/DOWNLOAD-no-save-hash.txt b/Tests/RunCMake/file-DOWNLOAD/unused-argument-result.txt index e69de29..e69de29 100644 --- a/Tests/RunCMake/file/DOWNLOAD-no-save-hash.txt +++ b/Tests/RunCMake/file-DOWNLOAD/unused-argument-result.txt diff --git a/Tests/RunCMake/file/DOWNLOAD-unused-argument-stderr.txt b/Tests/RunCMake/file-DOWNLOAD/unused-argument-stderr.txt index 82a78c9..f7cfc4f 100644 --- a/Tests/RunCMake/file/DOWNLOAD-unused-argument-stderr.txt +++ b/Tests/RunCMake/file-DOWNLOAD/unused-argument-stderr.txt @@ -1,5 +1,6 @@ -^CMake Warning \(dev\) at DOWNLOAD-unused-argument.cmake:[0-9]+ \(file\): +^CMake Warning \(dev\) at common.cmake:[0-9]+ \(file\): Unexpected argument: JUNK Call Stack \(most recent call first\): + unused-argument.cmake:[0-9]+ \(file_download\) CMakeLists.txt:[0-9]+ \(include\) This warning is for project developers. Use -Wno-dev to suppress it.$ diff --git a/Tests/RunCMake/file-DOWNLOAD/unused-argument.cmake b/Tests/RunCMake/file-DOWNLOAD/unused-argument.cmake new file mode 100644 index 0000000..6f7f597 --- /dev/null +++ b/Tests/RunCMake/file-DOWNLOAD/unused-argument.cmake @@ -0,0 +1,3 @@ +include(common.cmake) + +file_download(JUNK) diff --git a/Tests/RunCMake/file/DOWNLOAD-hash-mismatch-stderr.txt b/Tests/RunCMake/file/DOWNLOAD-hash-mismatch-stderr.txt deleted file mode 100644 index 7a356c1..0000000 --- a/Tests/RunCMake/file/DOWNLOAD-hash-mismatch-stderr.txt +++ /dev/null @@ -1,11 +0,0 @@ -^CMake Error at DOWNLOAD-hash-mismatch.cmake:[0-9]+ \(file\): - file DOWNLOAD HASH mismatch - - for file: \[.*/Tests/RunCMake/file/DOWNLOAD-hash-mismatch-build/hash-mismatch.txt\] - expected hash: \[0123456789abcdef0123456789abcdef01234567\] - actual hash: \[da39a3ee5e6b4b0d3255bfef95601890afd80709\] - -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\) -+ -status='1;HASH mismatch: expected: 0123456789abcdef0123456789abcdef01234567 actual: da39a3ee5e6b4b0d3255bfef95601890afd80709'$ diff --git a/Tests/RunCMake/file/DOWNLOAD-hash-mismatch.cmake b/Tests/RunCMake/file/DOWNLOAD-hash-mismatch.cmake deleted file mode 100644 index a91b217..0000000 --- a/Tests/RunCMake/file/DOWNLOAD-hash-mismatch.cmake +++ /dev/null @@ -1,10 +0,0 @@ -if(NOT "${CMAKE_CURRENT_SOURCE_DIR}" MATCHES "^/") - set(slash /) -endif() -file(DOWNLOAD - "file://${slash}${CMAKE_CURRENT_SOURCE_DIR}/DOWNLOAD-hash-mismatch.txt" - ${CMAKE_CURRENT_BINARY_DIR}/hash-mismatch.txt - EXPECTED_HASH SHA1=0123456789abcdef0123456789abcdef01234567 - STATUS status - ) -message("status='${status}'") diff --git a/Tests/RunCMake/file/DOWNLOAD-hash-mismatch.txt b/Tests/RunCMake/file/DOWNLOAD-hash-mismatch.txt deleted file mode 100644 index e69de29..0000000 --- a/Tests/RunCMake/file/DOWNLOAD-hash-mismatch.txt +++ /dev/null diff --git a/Tests/RunCMake/file/DOWNLOAD-netrc-bad.txt b/Tests/RunCMake/file/DOWNLOAD-netrc-bad.txt deleted file mode 100644 index e69de29..0000000 --- a/Tests/RunCMake/file/DOWNLOAD-netrc-bad.txt +++ /dev/null diff --git a/Tests/RunCMake/file/DOWNLOAD-no-save-hash.cmake b/Tests/RunCMake/file/DOWNLOAD-no-save-hash.cmake deleted file mode 100644 index ce959a7..0000000 --- a/Tests/RunCMake/file/DOWNLOAD-no-save-hash.cmake +++ /dev/null @@ -1,8 +0,0 @@ -if(NOT "${CMAKE_CURRENT_SOURCE_DIR}" MATCHES "^/") - set(slash /) -endif() -file(DOWNLOAD - "file://${slash}${CMAKE_CURRENT_SOURCE_DIR}/DOWNLOAD-no-save-md5.txt" - EXPECTED_HASH MD5=55555555555555555555555555555555 - STATUS status - ) diff --git a/Tests/RunCMake/file/DOWNLOAD-unused-argument.cmake b/Tests/RunCMake/file/DOWNLOAD-unused-argument.cmake deleted file mode 100644 index 2fa5482..0000000 --- a/Tests/RunCMake/file/DOWNLOAD-unused-argument.cmake +++ /dev/null @@ -1,8 +0,0 @@ -if(NOT "${CMAKE_CURRENT_SOURCE_DIR}" MATCHES "^/") - set(slash /) -endif() -file(DOWNLOAD - "file://${slash}${CMAKE_CURRENT_SOURCE_DIR}/DOWNLOAD-unused-argument.txt" - "${CMAKE_CURRENT_BINARY_DIR}/unused-argument.txt" - JUNK - ) diff --git a/Tests/RunCMake/file/RunCMakeTest.cmake b/Tests/RunCMake/file/RunCMakeTest.cmake index 0c4c174..752f7a0 100644 --- a/Tests/RunCMake/file/RunCMakeTest.cmake +++ b/Tests/RunCMake/file/RunCMakeTest.cmake @@ -4,14 +4,6 @@ run_cmake(CREATE_LINK) run_cmake(CREATE_LINK-COPY_ON_ERROR) run_cmake(CREATE_LINK-noarg) run_cmake(CREATE_LINK-noexist) -run_cmake(DOWNLOAD-hash-mismatch) -run_cmake(DOWNLOAD-unused-argument) -run_cmake(DOWNLOAD-httpheader-not-set) -run_cmake(DOWNLOAD-netrc-bad) -run_cmake(DOWNLOAD-tls-cainfo-not-set) -run_cmake(DOWNLOAD-tls-verify-not-set) -run_cmake(DOWNLOAD-pass-not-set) -run_cmake(DOWNLOAD-no-save-hash) run_cmake(TOUCH) run_cmake(TOUCH-error-in-source-directory) run_cmake(TOUCH-error-missing-directory) |