Browse Source

Merge topic 'file-make-directory-descriptive-errors'

efae1ab68b file(MAKE_DIRECTORY): Provide a more descriptive error message

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !8003
Brad King 3 years ago
parent
commit
d83b1dbac6

+ 4 - 2
Source/cmFileCommand.cxx

@@ -845,8 +845,10 @@ bool HandleMakeDirectoryCommand(std::vector<std::string> const& args,
       cmSystemTools::SetFatalErrorOccurred();
       return false;
     }
-    if (!cmSystemTools::MakeDirectory(*cdir)) {
-      std::string error = "problem creating directory: " + *cdir;
+    cmsys::Status mkdirStatus = cmSystemTools::MakeDirectory(*cdir);
+    if (!mkdirStatus) {
+      std::string error = cmStrCat("failed to create directory:\n  ", *cdir,
+                                   "\nbecause: ", mkdirStatus.GetString());
       status.SetError(error);
       return false;
     }

+ 1 - 0
Tests/RunCMake/file/MAKE_DIRECTORY-fail-result.txt

@@ -0,0 +1 @@
+1

+ 9 - 0
Tests/RunCMake/file/MAKE_DIRECTORY-fail-stderr.txt

@@ -0,0 +1,9 @@
+^CMake Error at [^
+]*/MAKE_DIRECTORY-fail.cmake:[0-9]+ \(file\):
+  file failed to create directory:
+
+    [^
+]*/Tests/RunCMake/file/MAKE_DIRECTORY-fail-build/file/directory
+
+  because: [^
+]+$

+ 2 - 0
Tests/RunCMake/file/MAKE_DIRECTORY-fail.cmake

@@ -0,0 +1,2 @@
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/file" "")
+file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/file/directory")

+ 2 - 0
Tests/RunCMake/file/RunCMakeTest.cmake

@@ -61,6 +61,8 @@ run_cmake_script(COPY_FILE-arg-unknown)
 run_cmake_script(COPY_FILE-input-missing)
 run_cmake_script(COPY_FILE-output-missing)
 
+run_cmake_script(MAKE_DIRECTORY-fail)
+
 run_cmake_script(RENAME-file-replace)
 run_cmake_script(RENAME-file-to-file)
 run_cmake_script(RENAME-file-to-dir-capture)