Merge topic 'file-remove-no-empty'

a1eb03569d file: Change REMOVE to ignore empty names

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3349
This commit is contained in:
Craig Scott
2019-05-22 12:57:15 +00:00
committed by Kitware Robot
6 changed files with 29 additions and 1 deletions

View File

@@ -292,7 +292,8 @@ Move a file or directory within a filesystem from ``<oldname>`` to
Remove the given files. The ``REMOVE_RECURSE`` mode will remove the given
files and directories, also non-empty directories. No error is emitted if a
given file does not exist.
given file does not exist. Relative input paths are evaluated with respect
to the current source directory. Empty input paths are ignored with a warning.
.. _MAKE_DIRECTORY:

View File

@@ -0,0 +1,6 @@
file-remove-no-empty
--------------------
* The :command:`file(REMOVE)` and :command:`file(REMOVE_RECURSE)` commands
were changed to ignore empty arguments with a warning instead of treating
them as a relative path and removing the contents of the current directory.

View File

@@ -1404,6 +1404,12 @@ bool cmFileCommand::HandleRemove(std::vector<std::string> const& args,
cmMakeRange(args).advance(1)) // Get rid of subcommand
{
std::string fileName = arg;
if (fileName.empty()) {
std::string const r = recurse ? "REMOVE_RECURSE" : "REMOVE";
this->Makefile->IssueMessage(MessageType::AUTHOR_WARNING,
"Ignoring empty file name in " + r + ".");
continue;
}
if (!cmsys::SystemTools::FileIsFullPath(fileName)) {
fileName = this->Makefile->GetCurrentSourceDirectory();
fileName += "/" + arg;

View File

@@ -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.$

View File

@@ -0,0 +1,2 @@
file(REMOVE "")
file(REMOVE_RECURSE "")

View File

@@ -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)