瀏覽代碼

test: add a test for clearing regex results

Ben Boeckel 11 年之前
父節點
當前提交
7878d06189

+ 54 - 0
Tests/RunCMake/string/RegexClear-stderr.txt

@@ -0,0 +1,54 @@
+^Matched string properly
+results from: setting up initial state
+CMAKE_MATCH_0: -->01<--
+CMAKE_MATCH_1: -->0<--
+CMAKE_MATCH_2: -->1<--
+CMAKE_MATCH_COUNT: -->2<--
+Matched string properly
+results from: making a match inside of find_package
+CMAKE_MATCH_0: -->01<--
+CMAKE_MATCH_1: -->0<--
+CMAKE_MATCH_2: -->1<--
+CMAKE_MATCH_COUNT: -->2<--
+Matched nothing properly
+results from: making a failure inside of find_package
+CMAKE_MATCH_0: --><--
+CMAKE_MATCH_1: --><--
+CMAKE_MATCH_2: --><--
+CMAKE_MATCH_COUNT: -->0<--
+Matched nothing properly
+results from: checking after find_package
+CMAKE_MATCH_0: --><--
+CMAKE_MATCH_1: --><--
+CMAKE_MATCH_2: --><--
+CMAKE_MATCH_COUNT: -->0<--
+Matched nothing properly
+results from: clearing out results with a failing match
+CMAKE_MATCH_0: --><--
+CMAKE_MATCH_1: --><--
+CMAKE_MATCH_2: --><--
+CMAKE_MATCH_COUNT: -->0<--
+Matched string properly
+results from: making a successful match before add_subdirectory
+CMAKE_MATCH_0: -->01<--
+CMAKE_MATCH_1: -->0<--
+CMAKE_MATCH_2: -->1<--
+CMAKE_MATCH_COUNT: -->2<--
+Matched string properly
+results from: check for success in add_subdirectory
+CMAKE_MATCH_0: -->01<--
+CMAKE_MATCH_1: -->0<--
+CMAKE_MATCH_2: -->1<--
+CMAKE_MATCH_COUNT: -->2<--
+Matched nothing properly
+results from: failing inside of add_subdirectory
+CMAKE_MATCH_0: --><--
+CMAKE_MATCH_1: --><--
+CMAKE_MATCH_2: --><--
+CMAKE_MATCH_COUNT: -->0<--
+Matched string properly
+results from: ensuring the subdirectory did not interfere with the parent
+CMAKE_MATCH_0: -->01<--
+CMAKE_MATCH_1: -->0<--
+CMAKE_MATCH_2: -->1<--
+CMAKE_MATCH_COUNT: -->2<--$

+ 54 - 0
Tests/RunCMake/string/RegexClear.cmake

@@ -0,0 +1,54 @@
+cmake_minimum_required (VERSION 3.0)
+project (RegexClear C)
+
+function (output_results msg)
+  message("results from: ${msg}")
+  message("CMAKE_MATCH_0: -->${CMAKE_MATCH_0}<--")
+  message("CMAKE_MATCH_1: -->${CMAKE_MATCH_1}<--")
+  message("CMAKE_MATCH_2: -->${CMAKE_MATCH_2}<--")
+  message("CMAKE_MATCH_COUNT: -->${CMAKE_MATCH_COUNT}<--")
+endfunction ()
+
+function (check_for_success msg)
+  if (CMAKE_MATCH_1 STREQUAL "0" AND
+      CMAKE_MATCH_2 STREQUAL "1")
+    message("Matched string properly")
+  else ()
+    message("Failed to match properly")
+  endif ()
+  output_results("${msg}")
+endfunction ()
+
+function (check_for_failure msg)
+  if (CMAKE_MATCH_1 STREQUAL "" AND
+      CMAKE_MATCH_2 STREQUAL "")
+    message("Matched nothing properly")
+  else ()
+    message("Found a match where there should be none")
+  endif ()
+  output_results("${msg}")
+endfunction ()
+
+macro (do_regex_success msg)
+  string(REGEX MATCH "(0)(1)" output "01")
+  check_for_success("${msg}")
+endmacro ()
+
+macro (do_regex_failure msg)
+  string(REGEX MATCH "(0)(1)" output "12")
+  check_for_failure("${msg}")
+endmacro ()
+
+do_regex_success("setting up initial state")
+
+list(INSERT CMAKE_MODULE_PATH 0
+  "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+find_package(dummy) # Ensure cmMakefile::PushScope/PopScope work.
+
+check_for_failure("checking after find_package")
+do_regex_failure("clearing out results with a failing match")
+do_regex_success("making a successful match before add_subdirectory")
+
+add_subdirectory(subdir)
+
+check_for_success("ensuring the subdirectory did not interfere with the parent") # Ensure that the subdir didn't mess with this scope.

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

@@ -10,3 +10,5 @@ run_cmake(UuidBadNamespace)
 run_cmake(UuidMissingNameValue)
 run_cmake(UuidMissingTypeValue)
 run_cmake(UuidBadType)
+
+run_cmake(RegexClear)

+ 4 - 0
Tests/RunCMake/string/cmake/Finddummy.cmake

@@ -0,0 +1,4 @@
+check_for_success("making a match inside of find_package")
+do_regex_failure("making a failure inside of find_package")
+
+set(dummy_FOUND 1)

+ 2 - 0
Tests/RunCMake/string/subdir/CMakeLists.txt

@@ -0,0 +1,2 @@
+check_for_success("check for success in add_subdirectory")
+do_regex_failure("failing inside of add_subdirectory")