diff options
author | Brad King <brad.king@kitware.com> | 2019-05-21 13:20:01 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-05-21 13:25:32 (GMT) |
commit | a1eb03569d0e82fb6eaf9a11da1960cfa456f5ef (patch) | |
tree | 25283c5ad6e24dcbdf80eb8bad912ca6892f21f9 /Tests/RunCMake/file | |
parent | 1db0edb2a65b272a7c91e719e818da2e2ce49fb5 (diff) | |
download | CMake-a1eb03569d0e82fb6eaf9a11da1960cfa456f5ef.zip CMake-a1eb03569d0e82fb6eaf9a11da1960cfa456f5ef.tar.gz CMake-a1eb03569d0e82fb6eaf9a11da1960cfa456f5ef.tar.bz2 |
file: Change REMOVE to ignore empty names
Previously code like
file(REMOVE_RECURSE "${accidentally_missing_variable}")
treated the empty string as a relative path with respect to the
current directory and removed its contents. Change this behavior
to ignore the empty string with a warning instead.
Normally such behavior changes are done with a policy, but in this case
such code is likely a real bug in project code that can delete data.
Fixes: #19274
Diffstat (limited to 'Tests/RunCMake/file')
-rw-r--r-- | Tests/RunCMake/file/REMOVE-empty-stderr.txt | 11 | ||||
-rw-r--r-- | Tests/RunCMake/file/REMOVE-empty.cmake | 2 | ||||
-rw-r--r-- | Tests/RunCMake/file/RunCMakeTest.cmake | 2 |
3 files changed, 15 insertions, 0 deletions
diff --git a/Tests/RunCMake/file/REMOVE-empty-stderr.txt b/Tests/RunCMake/file/REMOVE-empty-stderr.txt new file mode 100644 index 0000000..898a6e1 --- /dev/null +++ b/Tests/RunCMake/file/REMOVE-empty-stderr.txt @@ -0,0 +1,11 @@ +^CMake Warning \(dev\) at REMOVE-empty.cmake:1 \(file\): + Ignoring empty file name in REMOVE. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9] \(include\) +This warning is for project developers. Use -Wno-dev to suppress it. ++ +CMake Warning \(dev\) at REMOVE-empty.cmake:2 \(file\): + Ignoring empty file name in REMOVE_RECURSE. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9] \(include\) +This warning is for project developers. Use -Wno-dev to suppress it.$ diff --git a/Tests/RunCMake/file/REMOVE-empty.cmake b/Tests/RunCMake/file/REMOVE-empty.cmake new file mode 100644 index 0000000..38046fb --- /dev/null +++ b/Tests/RunCMake/file/REMOVE-empty.cmake @@ -0,0 +1,2 @@ +file(REMOVE "") +file(REMOVE_RECURSE "") diff --git a/Tests/RunCMake/file/RunCMakeTest.cmake b/Tests/RunCMake/file/RunCMakeTest.cmake index 996d1c5..5db4b3b 100644 --- a/Tests/RunCMake/file/RunCMakeTest.cmake +++ b/Tests/RunCMake/file/RunCMakeTest.cmake @@ -43,6 +43,8 @@ run_cmake(GLOB_RECURSE-noexp-FOLLOW_SYMLINKS) run_cmake(SIZE) run_cmake(SIZE-error-does-not-exist) +run_cmake(REMOVE-empty) + # tests are valid both for GLOB and GLOB_RECURSE run_cmake(GLOB-sort-dedup) run_cmake(GLOB-error-LIST_DIRECTORIES-not-boolean) |