summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/Ninja/CommandConcat.cmake
diff options
context:
space:
mode:
authorBernhard Burgermeister <bburgerm@googlemail.com>2017-05-04 15:57:20 (GMT)
committerBrad King <brad.king@kitware.com>2017-05-09 15:34:42 (GMT)
commit5e0e03d953c03e1703708f4f579d903990edecb9 (patch)
treea3d5b73b4bf1bce7f97689d222adf81e356d9925 /Tests/RunCMake/Ninja/CommandConcat.cmake
parenta83250880ad511d92d96bfd860873b9c79c0f462 (diff)
downloadCMake-5e0e03d953c03e1703708f4f579d903990edecb9.zip
CMake-5e0e03d953c03e1703708f4f579d903990edecb9.tar.gz
CMake-5e0e03d953c03e1703708f4f579d903990edecb9.tar.bz2
Ninja: Fix command concatenation on Windows
Put commands that contain `||` into brackets to avoid early abort of execution by `cmd.exe` because `||` has higher precedence than `&&` in `cmd.exe`. Add test to check for command execution after `||` as part of a parameter and as command separator. Fixes: #16850
Diffstat (limited to 'Tests/RunCMake/Ninja/CommandConcat.cmake')
-rw-r--r--Tests/RunCMake/Ninja/CommandConcat.cmake14
1 files changed, 14 insertions, 0 deletions
diff --git a/Tests/RunCMake/Ninja/CommandConcat.cmake b/Tests/RunCMake/Ninja/CommandConcat.cmake
new file mode 100644
index 0000000..790cf9d
--- /dev/null
+++ b/Tests/RunCMake/Ninja/CommandConcat.cmake
@@ -0,0 +1,14 @@
+cmake_minimum_required(VERSION 3.7)
+project(concat_cmd NONE)
+set(output1 ${CMAKE_BINARY_DIR}/out1.txt)
+set(output2 ${CMAKE_BINARY_DIR}/out2.txt)
+file(REMOVE ${output1} ${output2})
+# Check that second command runs if first command contains "||" which has higher precedence than "&&" on Windows
+add_custom_target(concat_cmd ALL
+ COMMAND ${CMAKE_COMMAND} -E echo "Hello || pipe world" && ${CMAKE_COMMAND} -E touch ${output1} || exit 1
+ COMMAND ${CMAKE_COMMAND} -E touch ${output2})
+# Check output
+add_custom_target(check_output ALL
+ COMMAND ${CMAKE_COMMAND} -E copy ${output1} ${output1}.copy
+ COMMAND ${CMAKE_COMMAND} -E copy ${output2} ${output2}.copy)
+add_dependencies(check_output concat_cmd)