Browse Source

add testcases for while()/endwhile() errors

Rolf Eike Beer 13 years ago
parent
commit
944b90be60

+ 1 - 0
Tests/CMakeTests/CMakeLists.txt

@@ -29,6 +29,7 @@ AddCMakeTest(CMakeMinimumRequired "")
 AddCMakeTest(CompilerIdVendor "")
 AddCMakeTest(ProcessorCount "")
 AddCMakeTest(PushCheckState "")
+AddCMakeTest(While "")
 
 AddCMakeTest(FileDownload "")
 set_property(TEST CMake.FileDownload PROPERTY

+ 1 - 0
Tests/CMakeTests/While-Endwhile-Alone-Args.cmake

@@ -0,0 +1 @@
+endwhile(a)

+ 1 - 0
Tests/CMakeTests/While-Endwhile-Alone.cmake

@@ -0,0 +1 @@
+endwhile()

+ 2 - 0
Tests/CMakeTests/While-Endwhile-Mismatch.cmake

@@ -0,0 +1,2 @@
+while(a)
+endwhile(b)

+ 1 - 0
Tests/CMakeTests/While-Missing-Argument.cmake

@@ -0,0 +1 @@
+while()

+ 1 - 0
Tests/CMakeTests/While-Missing-Endwhile.cmake

@@ -0,0 +1 @@
+while(a)

+ 53 - 0
Tests/CMakeTests/WhileTest.cmake.in

@@ -0,0 +1,53 @@
+set(NUMBERS "")
+set(COUNT 0)
+
+while(COUNT LESS 200)
+    set(NUMBERS "${NUMBERS} ${COUNT}")
+    set(COUNT "2${COUNT}")
+
+    set(NCOUNT 3)
+    while(NCOUNT LESS 31)
+        set(NUMBERS "${NUMBERS} ${NCOUNT}")
+        set(NCOUNT "${NCOUNT}0")
+    endwhile()
+endwhile(COUNT LESS 200)
+
+if(NOT NUMBERS STREQUAL " 0 3 30 20 3 30")
+    message(SEND_ERROR "while loop nesting error, result: '${NUMBERS}'")
+endif()
+
+set(Missing-Argument-RESULT 1)
+set(Missing-Argument-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?While-Missing-Argument.cmake:1 \\(while\\):.*while called with incorrect number of arguments.*")
+
+include("@CMAKE_CURRENT_SOURCE_DIR@/CheckCMakeTest.cmake")
+check_cmake_test(While
+  Missing-Argument
+)
+
+set(Missing-Endwhile-RESULT 1)
+set(Missing-Endwhile-STDERR ".*CMake Error in (@CMAKE_CURRENT_SOURCE_DIR@/)?While-Missing-Endwhile.cmake:.*A logical block opening on the line.*(@CMAKE_CURRENT_SOURCE_DIR@/)?While-Missing-Endwhile.cmake:1 \\(while\\).*is not closed\\..*")
+
+check_cmake_test(While
+  Missing-Endwhile
+)
+
+set(Endwhile-Mismatch-RESULT 0)
+set(Endwhile-Mismatch-STDERR ".*CMake Warning \\(dev\\) in (@CMAKE_CURRENT_SOURCE_DIR@/)?While-Endwhile-Mismatch.cmake:.*A logical block opening on the line.*(@CMAKE_CURRENT_SOURCE_DIR@/)?While-Endwhile-Mismatch.cmake:1 \\(while\\).*with mis-matching arguments\\..*")
+
+check_cmake_test(While
+  Endwhile-Mismatch
+)
+
+set(Endwhile-Alone-RESULT 1)
+set(Endwhile-Alone-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?While-Endwhile-Alone.cmake:1 \\(endwhile\\):.*An ENDWHILE command was found outside of a proper WHILE ENDWHILE.*structure\\.\n.*$")
+
+check_cmake_test(While
+  Endwhile-Alone
+)
+
+set(Endwhile-Alone-Args-RESULT 1)
+set(Endwhile-Alone-Args-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?While-Endwhile-Alone-Args.cmake:1 \\(endwhile\\):.*An ENDWHILE command was found outside of a proper WHILE ENDWHILE.*structure\\.  Or its arguments did not.*$")
+
+check_cmake_test(While
+  Endwhile-Alone-Args
+)