From 368e8de4cd5a5d97c9b5e81489bf014579211bda Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 20 Oct 2014 12:17:03 -0400 Subject: Tests: test -D parsing on the command line --- Tests/RunCMake/CommandLine/CMakeLists.txt | 3 +++ Tests/RunCMake/CommandLine/D_nested_cache-stderr.txt | 1 + Tests/RunCMake/CommandLine/D_nested_cache.cmake | 1 + Tests/RunCMake/CommandLine/D_typed_nested_cache-stderr.txt | 1 + Tests/RunCMake/CommandLine/D_typed_nested_cache.cmake | 1 + Tests/RunCMake/CommandLine/RunCMakeTest.cmake | 8 ++++++++ 6 files changed, 15 insertions(+) create mode 100644 Tests/RunCMake/CommandLine/CMakeLists.txt create mode 100644 Tests/RunCMake/CommandLine/D_nested_cache-stderr.txt create mode 100644 Tests/RunCMake/CommandLine/D_nested_cache.cmake create mode 100644 Tests/RunCMake/CommandLine/D_typed_nested_cache-stderr.txt create mode 100644 Tests/RunCMake/CommandLine/D_typed_nested_cache.cmake diff --git a/Tests/RunCMake/CommandLine/CMakeLists.txt b/Tests/RunCMake/CommandLine/CMakeLists.txt new file mode 100644 index 0000000..2897109 --- /dev/null +++ b/Tests/RunCMake/CommandLine/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.0) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/CommandLine/D_nested_cache-stderr.txt b/Tests/RunCMake/CommandLine/D_nested_cache-stderr.txt new file mode 100644 index 0000000..a1cc8d3 --- /dev/null +++ b/Tests/RunCMake/CommandLine/D_nested_cache-stderr.txt @@ -0,0 +1 @@ +^--><--$ diff --git a/Tests/RunCMake/CommandLine/D_nested_cache.cmake b/Tests/RunCMake/CommandLine/D_nested_cache.cmake new file mode 100644 index 0000000..9b57284 --- /dev/null +++ b/Tests/RunCMake/CommandLine/D_nested_cache.cmake @@ -0,0 +1 @@ +message("-->${FOO}<--") diff --git a/Tests/RunCMake/CommandLine/D_typed_nested_cache-stderr.txt b/Tests/RunCMake/CommandLine/D_typed_nested_cache-stderr.txt new file mode 100644 index 0000000..bba64bc --- /dev/null +++ b/Tests/RunCMake/CommandLine/D_typed_nested_cache-stderr.txt @@ -0,0 +1 @@ +^-->-DBAR:BOOL=BAZ<--$ diff --git a/Tests/RunCMake/CommandLine/D_typed_nested_cache.cmake b/Tests/RunCMake/CommandLine/D_typed_nested_cache.cmake new file mode 100644 index 0000000..9b57284 --- /dev/null +++ b/Tests/RunCMake/CommandLine/D_typed_nested_cache.cmake @@ -0,0 +1 @@ +message("-->${FOO}<--") diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake index 5622a5b..84e3614 100644 --- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake @@ -43,3 +43,11 @@ run_cmake_command(E_sleep-bad-arg2 ${CMAKE_COMMAND} -E sleep 1 -1) run_cmake_command(E_sleep-one-tenth ${CMAKE_COMMAND} -E sleep 0.1) run_cmake_command(P_directory ${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR}) + +set(RunCMake_TEST_OPTIONS + "-DFOO=-DBAR:BOOL=BAZ") +run_cmake(D_nested_cache) + +set(RunCMake_TEST_OPTIONS + "-DFOO:STRING=-DBAR:BOOL=BAZ") +run_cmake(D_typed_nested_cache) -- cgit v0.12 From aee7e4a03b8b410212e2eae23d1ecc182c8da817 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 20 Oct 2014 12:17:19 -0400 Subject: cmCacheManager: parse -D flags more strictly In the case of: -DCACHE_VARS=-DEXTERNAL_PROJECT_CMAKE_ARG:BOOL=TRUE the variable is parsed out as: CACHE_VARS=-DEXTERNAL_PROJECT_CMAKE_ARG because the parser allows '=' in the variable name. Disallow such a name on the command line. --- Source/cmCacheManager.cxx | 2 +- Tests/RunCMake/CommandLine/D_nested_cache-stderr.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index d6b84a0..17bfe4b 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -139,7 +139,7 @@ bool cmCacheManager::ParseEntry(const std::string& entry, { // input line is: key:type=value static cmsys::RegularExpression reg( - "^([^:]*):([^=]*)=(.*[^\r\t ]|[\r\t ]*)[\r\t ]*$"); + "^([^=:]*):([^=]*)=(.*[^\r\t ]|[\r\t ]*)[\r\t ]*$"); // input line is: "key":type=value static cmsys::RegularExpression regQuoted( "^\"([^\"]*)\":([^=]*)=(.*[^\r\t ]|[\r\t ]*)[\r\t ]*$"); diff --git a/Tests/RunCMake/CommandLine/D_nested_cache-stderr.txt b/Tests/RunCMake/CommandLine/D_nested_cache-stderr.txt index a1cc8d3..bba64bc 100644 --- a/Tests/RunCMake/CommandLine/D_nested_cache-stderr.txt +++ b/Tests/RunCMake/CommandLine/D_nested_cache-stderr.txt @@ -1 +1 @@ -^--><--$ +^-->-DBAR:BOOL=BAZ<--$ -- cgit v0.12