Browse Source

add_custom_command: Add tests for custom command output checks

Daniel Eiband 6 years ago
parent
commit
cbb861ade8

+ 2 - 2
Source/cmAddCustomCommandCommand.cxx

@@ -396,8 +396,8 @@ bool cmAddCustomCommandCommandCheckOutputs(
     // Make sure the file will not be generated into the source
     // directory during an out of source build.
     if (!mf.CanIWriteThisFile(o)) {
-      std::string e = "attempted to have a file \"" + o +
-        "\" in a source directory as an output of custom command.";
+      std::string e = "attempted to have a file\n\"" + o +
+        "\"\nin a source directory as an output of custom command.";
       status.SetError(e);
       cmSystemTools::SetFatalErrorOccured();
       return false;

+ 1 - 0
Tests/RunCMake/add_custom_command/BadByproduct-result.txt

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

+ 36 - 0
Tests/RunCMake/add_custom_command/BadByproduct-stderr.txt

@@ -0,0 +1,36 @@
+CMake Error at BadByproduct.cmake:2 \(add_custom_command\):
+  add_custom_command called with OUTPUT containing a "#".  This character is
+  not allowed.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
+
+
+CMake Error at BadByproduct.cmake:3 \(add_custom_command\):
+  add_custom_command called with OUTPUT containing a "<".  This character is
+  not allowed.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
+
+
+CMake Error at BadByproduct.cmake:4 \(add_custom_command\):
+  add_custom_command called with OUTPUT containing a ">".  This character is
+  not allowed.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
+
+
+CMake Error at BadByproduct.cmake:5 \(add_custom_command\):
+  add_custom_command called with OUTPUT containing a "<".  This character is
+  not allowed.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
+
+
+CMake Error at BadByproduct.cmake:6 \(add_custom_command\):
+  add_custom_command attempted to have a file
+
+  .*/f".*
+
+  in a source directory as an output of custom command.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)

+ 6 - 0
Tests/RunCMake/add_custom_command/BadByproduct.cmake

@@ -0,0 +1,6 @@
+set(CMAKE_DISABLE_SOURCE_CHANGES ON)
+add_custom_command(OUTPUT a BYPRODUCTS "a#")
+add_custom_command(OUTPUT b BYPRODUCTS "a<")
+add_custom_command(OUTPUT c BYPRODUCTS "a>")
+add_custom_command(OUTPUT d BYPRODUCTS "$<CONFIG>/#")
+add_custom_command(OUTPUT e BYPRODUCTS ${CMAKE_CURRENT_SOURCE_DIR}/f)

+ 1 - 0
Tests/RunCMake/add_custom_command/BadOutput-result.txt

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

+ 36 - 0
Tests/RunCMake/add_custom_command/BadOutput-stderr.txt

@@ -0,0 +1,36 @@
+CMake Error at BadOutput.cmake:2 \(add_custom_command\):
+  add_custom_command called with OUTPUT containing a "#".  This character is
+  not allowed.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
+
+
+CMake Error at BadOutput.cmake:3 \(add_custom_command\):
+  add_custom_command called with OUTPUT containing a "<".  This character is
+  not allowed.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
+
+
+CMake Error at BadOutput.cmake:4 \(add_custom_command\):
+  add_custom_command called with OUTPUT containing a ">".  This character is
+  not allowed.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
+
+
+CMake Error at BadOutput.cmake:5 \(add_custom_command\):
+  add_custom_command called with OUTPUT containing a "<".  This character is
+  not allowed.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
+
+
+CMake Error at BadOutput.cmake:6 \(add_custom_command\):
+  add_custom_command attempted to have a file
+
+  .*/e".*
+
+  in a source directory as an output of custom command.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)

+ 6 - 0
Tests/RunCMake/add_custom_command/BadOutput.cmake

@@ -0,0 +1,6 @@
+set(CMAKE_DISABLE_SOURCE_CHANGES ON)
+add_custom_command(OUTPUT "a#" COMMAND a)
+add_custom_command(OUTPUT "a<" COMMAND b)
+add_custom_command(OUTPUT "a>" COMMAND c)
+add_custom_command(OUTPUT "$<CONFIG>/#" COMMAND d)
+add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/e COMMAND f)

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

@@ -4,6 +4,8 @@ run_cmake(AppendLiteralQuotes)
 run_cmake(AppendNoOutput)
 run_cmake(AppendNotOutput)
 run_cmake(BadArgument)
+run_cmake(BadByproduct)
+run_cmake(BadOutput)
 run_cmake(GeneratedProperty)
 run_cmake(LiteralQuotes)
 run_cmake(NoArguments)