[Cmake-commits] CMake branch, next, updated. v3.6.2-2600-g253f35d

Brad King brad.king at kitware.com
Wed Sep 28 15:35:25 EDT 2016


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  253f35d2c894cd11be5952458f107c40526ed076 (commit)
       via  66c70cd9f1eb69b03cefe7fbe8e238aaa4630f47 (commit)
      from  1735255f48c2e03306ad4bb092434a630cdd6577 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=253f35d2c894cd11be5952458f107c40526ed076
commit 253f35d2c894cd11be5952458f107c40526ed076
Merge: 1735255 66c70cd
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Sep 28 15:35:24 2016 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Sep 28 15:35:24 2016 -0400

    Merge topic 'cmake_parse_arguments-PARSE_ARGV-multi-value' into next
    
    66c70cd9 cmake_parse_arguments: Add additional unit tests


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=66c70cd9f1eb69b03cefe7fbe8e238aaa4630f47
commit 66c70cd9f1eb69b03cefe7fbe8e238aaa4630f47
Author:     Matthew Woehlke <matthew.woehlke at kitware.com>
AuthorDate: Wed Sep 28 15:20:42 2016 -0400
Commit:     Matthew Woehlke <matthew.woehlke at kitware.com>
CommitDate: Wed Sep 28 15:20:42 2016 -0400

    cmake_parse_arguments: Add additional unit tests
    
    Add additional unit tests for some corner cases in argument splitting.

diff --git a/Tests/RunCMake/cmake_parse_arguments/ArgvN.cmake b/Tests/RunCMake/cmake_parse_arguments/ArgvN.cmake
index 63a1b01..96a373d 100644
--- a/Tests/RunCMake/cmake_parse_arguments/ArgvN.cmake
+++ b/Tests/RunCMake/cmake_parse_arguments/ArgvN.cmake
@@ -1,15 +1,5 @@
 include(${CMAKE_CURRENT_LIST_DIR}/test_utils.cmake)
 
-function(test_multi list)
-  set(i 0)
-  foreach(value IN LISTS ${list})
-    math(EXPR j "${i} + 1")
-    set(${list}[${i}] "${value}")
-    TEST(${list}[${i}] "${ARGV${j}}")
-    set(i ${j})
-  endforeach()
-endfunction()
-
 function(test1)
   cmake_parse_arguments(PARSE_ARGV 0
     pref "OPT1;OPT2" "SINGLE1;SINGLE2" "MULTI1;MULTI2")
@@ -33,7 +23,7 @@ function(test2 arg1)
   TEST(pref_OPT2 FALSE)
   TEST(pref_SINGLE1 "foo;bar")
   TEST(pref_SINGLE2 UNDEFINED)
-  test_multi(pref_MULTI1 bar "foo;bar")
+  TEST(pref_MULTI1 bar "foo;bar")
   TEST(pref_MULTI2 UNDEFINED)
   TEST(pref_UNPARSED_ARGUMENTS UNDEFINED)
 endfunction()
@@ -43,6 +33,6 @@ function(test3 arg1)
   cmake_parse_arguments(PARSE_ARGV 0
     pref "" "" "")
 
-  test_multi(pref_UNPARSED_ARGUMENTS "foo;bar" dog cat)
+  TEST(pref_UNPARSED_ARGUMENTS "foo;bar" dog cat)
 endfunction()
 test3("foo;bar" dog cat)
diff --git a/Tests/RunCMake/cmake_parse_arguments/CornerCasesArgvN.cmake b/Tests/RunCMake/cmake_parse_arguments/CornerCasesArgvN.cmake
new file mode 100644
index 0000000..807ed03
--- /dev/null
+++ b/Tests/RunCMake/cmake_parse_arguments/CornerCasesArgvN.cmake
@@ -0,0 +1,53 @@
+include(${CMAKE_CURRENT_LIST_DIR}/test_utils.cmake)
+
+function(test1)
+  cmake_parse_arguments(PARSE_ARGV 0
+    mpref "" "" "MULTI")
+
+  TEST(mpref_MULTI foo "foo\;bar")
+
+  cmake_parse_arguments(PARSE_ARGV 1
+    upref "" "" "MULTI")
+
+  TEST(upref_UNPARSED_ARGUMENTS foo "foo\;bar")
+endfunction()
+test1(MULTI foo "foo\;bar")
+
+function(test2)
+  cmake_parse_arguments(PARSE_ARGV 0
+    mpref "" "" "MULTI")
+
+  TEST(mpref_MULTI "foo;" "bar;")
+
+  cmake_parse_arguments(PARSE_ARGV 1
+    upref "" "" "MULTI")
+
+  TEST(upref_UNPARSED_ARGUMENTS "foo;" "bar;")
+endfunction()
+test2(MULTI "foo;" "bar;")
+
+function(test3)
+  cmake_parse_arguments(PARSE_ARGV 0
+    mpref "" "" "MULTI")
+
+  TEST(mpref_MULTI "[foo;]" "bar\\")
+
+  cmake_parse_arguments(PARSE_ARGV 1
+    upref "" "" "MULTI")
+
+  TEST(upref_UNPARSED_ARGUMENTS "[foo;]" "bar\\")
+endfunction()
+test3(MULTI "[foo;]" "bar\\")
+
+function(test4)
+  cmake_parse_arguments(PARSE_ARGV 0
+    mpref "" "" "MULTI")
+
+  TEST(mpref_MULTI foo "bar;none")
+
+  cmake_parse_arguments(PARSE_ARGV 1
+    upref "" "" "MULTI")
+
+  TEST(upref_UNPARSED_ARGUMENTS foo "bar;none")
+endfunction()
+test4(MULTI foo bar\\ none)
diff --git a/Tests/RunCMake/cmake_parse_arguments/RunCMakeTest.cmake b/Tests/RunCMake/cmake_parse_arguments/RunCMakeTest.cmake
index 22d7ee4..1e15b3b 100644
--- a/Tests/RunCMake/cmake_parse_arguments/RunCMakeTest.cmake
+++ b/Tests/RunCMake/cmake_parse_arguments/RunCMakeTest.cmake
@@ -10,3 +10,4 @@ run_cmake(BadArgvN1)
 run_cmake(BadArgvN2)
 run_cmake(BadArgvN3)
 run_cmake(BadArgvN4)
+run_cmake(CornerCasesArgvN)
diff --git a/Tests/RunCMake/cmake_parse_arguments/Utils.cmake b/Tests/RunCMake/cmake_parse_arguments/Utils.cmake
index 3bbf115..f2001f2 100644
--- a/Tests/RunCMake/cmake_parse_arguments/Utils.cmake
+++ b/Tests/RunCMake/cmake_parse_arguments/Utils.cmake
@@ -17,4 +17,5 @@ SET (asdf "some value")
 TEST(asdf "some value")
 
 SET (asdf some list)
+TEST(asdf some list)
 TEST(asdf "some;list")
diff --git a/Tests/RunCMake/cmake_parse_arguments/test_utils.cmake b/Tests/RunCMake/cmake_parse_arguments/test_utils.cmake
index f5425c2..9ce99b8 100644
--- a/Tests/RunCMake/cmake_parse_arguments/test_utils.cmake
+++ b/Tests/RunCMake/cmake_parse_arguments/test_utils.cmake
@@ -1,20 +1,30 @@
-macro(TEST variable)
-  SET(expected "${ARGN}")
-  if ( "${expected}" STREQUAL "UNDEFINED" )
-    if (DEFINED ${variable})
-      message(FATAL_ERROR "'${variable}' shall be undefined but has value '${${variable}}'")
-    endif()
-  elseif( "${expected}" STREQUAL "FALSE" )
-    if (NOT ${variable} STREQUAL "FALSE")
-      message(FATAL_ERROR "'${variable}' shall be FALSE")
-    endif()
-  elseif( "${expected}" STREQUAL "TRUE" )
-    if (NOT ${variable} STREQUAL "TRUE")
-      message(FATAL_ERROR "'${variable}' shall be TRUE")
-    endif()
+function(TEST variable)
+  if(ARGC GREATER 2)
+    set(i 0)
+    foreach(value IN LISTS ${variable})
+      math(EXPR j "${i} + 1")
+      set(${variable}[${i}] "${value}")
+      TEST(${variable}[${i}] "${ARGV${j}}")
+      set(i ${j})
+    endforeach()
   else()
-    if (NOT ${variable} STREQUAL "${expected}")
-      message(FATAL_ERROR "'${variable}' shall be '${expected}'")
+    set(expected "${ARGN}")
+    if("${expected}" STREQUAL "UNDEFINED")
+      if(DEFINED ${variable})
+        message(FATAL_ERROR "'${variable}' shall be undefined but has value '${${variable}}'")
+      endif()
+    elseif("${expected}" STREQUAL "FALSE")
+      if(NOT ${variable} STREQUAL "FALSE")
+        message(FATAL_ERROR "'${variable}' shall be FALSE")
+      endif()
+    elseif("${expected}" STREQUAL "TRUE")
+      if(NOT ${variable} STREQUAL "TRUE")
+        message(FATAL_ERROR "'${variable}' shall be TRUE")
+      endif()
+    else()
+      if(NOT ${variable} STREQUAL "${expected}")
+        message(FATAL_ERROR "'${variable}' shall be '${expected}'")
+      endif()
     endif()
   endif()
-endmacro()
+endfunction()

-----------------------------------------------------------------------

Summary of changes:
 Tests/RunCMake/cmake_parse_arguments/ArgvN.cmake   |   14 +-----
 .../cmake_parse_arguments/CornerCasesArgvN.cmake   |   53 ++++++++++++++++++++
 .../cmake_parse_arguments/RunCMakeTest.cmake       |    1 +
 Tests/RunCMake/cmake_parse_arguments/Utils.cmake   |    1 +
 .../cmake_parse_arguments/test_utils.cmake         |   44 +++++++++-------
 5 files changed, 84 insertions(+), 29 deletions(-)
 create mode 100644 Tests/RunCMake/cmake_parse_arguments/CornerCasesArgvN.cmake


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list