From 43d1f32370a38812fc54fe07ff42ffbf04c40bc1 Mon Sep 17 00:00:00 2001 From: Modestas Vainius Date: Sun, 2 Jun 2013 22:01:26 +0300 Subject: [PATCH] Make tests pass when cmake build path contains regex metacharacters. This is important for BPO builds on the buildds. Backported (from future 2.8.12) and adapted patches: - 0001-Fix-test-failures-caused-by-regexp-sensitive-charact.patch - tests-fix-Memcheck-tests-in-a-dir-with-regex-special.patch --- debian/changelog | 5 + ...s-caused-by-regexp-sensitive-charact.patch | 305 ++++++++++++++++++ debian/patches/series | 2 + ...ck-tests-in-a-dir-with-regex-special.patch | 47 +++ 4 files changed, 359 insertions(+) create mode 100644 debian/patches/0001-Fix-test-failures-caused-by-regexp-sensitive-charact.patch create mode 100644 debian/patches/tests-fix-Memcheck-tests-in-a-dir-with-regex-special.patch diff --git a/debian/changelog b/debian/changelog index 5a3868419..cca9824f3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,10 @@ cmake (2.8.11-3) UNRELEASED; urgency=low + * Make tests pass when cmake build path contains regex metacharacters (e.g. + in case of BPO builds on the buildds). + Backported (from future 2.8.12) and adapted patches: + - 0001-Fix-test-failures-caused-by-regexp-sensitive-charact.patch + - tests-fix-Memcheck-tests-in-a-dir-with-regex-special.patch -- Modestas Vainius Sat, 01 Jun 2013 03:33:25 +0300 diff --git a/debian/patches/0001-Fix-test-failures-caused-by-regexp-sensitive-charact.patch b/debian/patches/0001-Fix-test-failures-caused-by-regexp-sensitive-charact.patch new file mode 100644 index 000000000..5435aaf5b --- /dev/null +++ b/debian/patches/0001-Fix-test-failures-caused-by-regexp-sensitive-charact.patch @@ -0,0 +1,305 @@ +From: Modestas Vainius +Date: Sun, 2 Jun 2013 15:47:05 +0200 +Subject: [PATCH 1/2] Fix test failures caused by regexp-sensitive characters + in the build paths +Origin: backport, commit: 30b246ded16774a2cce792d24b51edca3c8e4996 +Forwarded: yes +Bug: http://cmake.org/Bug/view.php?id=14183 +Applied-Upstream: 2.8.12 + +Checkout [1] as an example of the test failures. In that particular cases, the +failures is caused by the plus sign in the path being pass unescaped +(buildd-cmake_2.8.9-1~bpo60+1-armel-3Lvkef) to the regexp. + +In addition to failures in the log, the following new tests also fail in 2.8.11: + + 243 - CTestTestMemcheckUnknown (Failed) + 244 - CTestTestMemcheckUnknownQuoted (Failed) + 248 - CTestTestMemcheckDummyValgrindFailPre (Failed) + 249 - CTestTestMemcheckDummyValgrindFailPost (Failed) + 250 - CTestTestMemcheckDummyPurify (Failed) + 251 - CTestTestMemcheckDummyBC (Failed) + 253 - CMake.List (Failed) + +[1] https://buildd.debian.org/status/fetch.php?pkg=cmake&arch=armel&ver=2.8.9-1~bpo60%2B1&stamp=1369243896 +--- + Tests/CMakeLists.txt | 5 +---- + Tests/CMakeTests/GetPropertyTest.cmake.in | 29 ++++++++++++++++------------- + Tests/CMakeTests/IfTest.cmake.in | 5 ++++- + Tests/CMakeTests/ListTest.cmake.in | 21 ++++++++++++--------- + Tests/CMakeTests/WhileTest.cmake.in | 14 +++++++++----- + Tests/RegexEscapeString.cmake | 4 ++++ + 6 files changed, 46 insertions(+), 32 deletions(-) + create mode 100644 Tests/RegexEscapeString.cmake + +--- a/Tests/CMakeLists.txt ++++ b/Tests/CMakeLists.txt +@@ -15,10 +15,7 @@ macro(ADD_TEST_MACRO NAME COMMAND) + list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${dir}") + endmacro() + +-macro(REGEX_ESCAPE_STRING _OUT _IN) +- # Escape special regex metacharacters with a backslash +- string(REGEX REPLACE "([$^.[|*+?()]|])" "\\\\\\1" ${_OUT} "${_IN}") +-endmacro() ++include(${CMAKE_CURRENT_SOURCE_DIR}/RegexEscapeString.cmake) + + include(${CMAKE_CURRENT_SOURCE_DIR}/CheckFortran.cmake) + +--- a/Tests/CMakeTests/GetPropertyTest.cmake.in ++++ b/Tests/CMakeTests/GetPropertyTest.cmake.in +@@ -28,92 +28,95 @@ if(NOT result STREQUAL "alpha") + message(SEND_ERROR "bad value of VARIABLE PROPERTY test_var: got '${result}' instead of 'alpha'") + endif() + ++include("@CMAKE_CURRENT_SOURCE_DIR@/../RegexEscapeString.cmake") ++REGEX_ESCAPE_STRING(CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@") ++ + set(Missing-Argument-RESULT 1) +-set(Missing-Argument-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-Missing-Argument.cmake:1 \\(get_property\\):.*get_property called with incorrect number of arguments.*") ++set(Missing-Argument-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-Missing-Argument.cmake:1 \\(get_property\\):.*get_property called with incorrect number of arguments.*") + + check_cmake_test(GetProperty + Missing-Argument + ) + + set(Bad-Scope-RESULT 1) +-set(Bad-Scope-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-Bad-Scope.cmake:1 \\(get_property\\):.*get_property given invalid scope FOO\\..*") ++set(Bad-Scope-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-Bad-Scope.cmake:1 \\(get_property\\):.*get_property given invalid scope FOO\\..*") + + check_cmake_test(GetProperty + Bad-Scope + ) + + set(Bad-Argument-RESULT 1) +-set(Bad-Argument-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-Bad-Argument.cmake:1 \\(get_property\\):.*get_property given invalid argument \"FOO\"\\..*") ++set(Bad-Argument-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-Bad-Argument.cmake:1 \\(get_property\\):.*get_property given invalid argument \"FOO\"\\..*") + + check_cmake_test(GetProperty + Bad-Argument + ) + + set(No-Property-RESULT 1) +-set(No-Property-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-No-Property.cmake:1 \\(get_property\\):.*get_property not given a PROPERTY argument\\..*") ++set(No-Property-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-No-Property.cmake:1 \\(get_property\\):.*get_property not given a PROPERTY argument\\..*") + + check_cmake_test(GetProperty + No-Property + ) + + set(Global-Name-RESULT 1) +-set(Global-Name-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-Global-Name.cmake:1 \\(get_property\\):.*get_property given name for GLOBAL scope\\..*") ++set(Global-Name-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-Global-Name.cmake:1 \\(get_property\\):.*get_property given name for GLOBAL scope\\..*") + + check_cmake_test(GetProperty + Global-Name + ) + + set(Bad-Directory-RESULT 1) +-set(Bad-Directory-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-Bad-Directory.cmake:1 \\(get_property\\):.*get_property DIRECTORY scope provided but requested directory was not.*found\\..*") ++set(Bad-Directory-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-Bad-Directory.cmake:1 \\(get_property\\):.*get_property DIRECTORY scope provided but requested directory was not.*found\\..*") + + check_cmake_test(GetProperty + Bad-Directory + ) + + set(No-Target-RESULT 1) +-set(No-Target-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-No-Target.cmake:1 \\(get_property\\):.*get_property not given name for TARGET scope\\..*") ++set(No-Target-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-No-Target.cmake:1 \\(get_property\\):.*get_property not given name for TARGET scope\\..*") + + check_cmake_test(GetProperty + No-Target + ) + + set(Bad-Target-RESULT 1) +-set(Bad-Target-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-Bad-Target.cmake:1 \\(get_property\\):.*get_property could not find TARGET FOO\\..*") ++set(Bad-Target-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-Bad-Target.cmake:1 \\(get_property\\):.*get_property could not find TARGET FOO\\..*") + + check_cmake_test(GetProperty + Bad-Target + ) + + set(No-Source-RESULT 1) +-set(No-Source-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-No-Source.cmake:1 \\(get_property\\):.*get_property not given name for SOURCE scope\\..*") ++set(No-Source-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-No-Source.cmake:1 \\(get_property\\):.*get_property not given name for SOURCE scope\\..*") + + check_cmake_test(GetProperty + No-Source + ) + + set(No-Test-RESULT 1) +-set(No-Test-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-No-Test.cmake:1 \\(get_property\\):.*get_property not given name for TEST scope\\..*") ++set(No-Test-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-No-Test.cmake:1 \\(get_property\\):.*get_property not given name for TEST scope\\..*") + + check_cmake_test(GetProperty + No-Test + ) + + set(Bad-Test-RESULT 1) +-set(Bad-Test-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-Bad-Test.cmake:1 \\(get_property\\):.*get_property given TEST name that does not exist: FOO.*") ++set(Bad-Test-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-Bad-Test.cmake:1 \\(get_property\\):.*get_property given TEST name that does not exist: FOO.*") + + check_cmake_test(GetProperty + Bad-Test + ) + + set(Variable-Name-RESULT 1) +-set(Variable-Name-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-Variable-Name.cmake:1 \\(get_property\\):.*get_property given name for VARIABLE scope\\..*") ++set(Variable-Name-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-Variable-Name.cmake:1 \\(get_property\\):.*get_property given name for VARIABLE scope\\..*") + + check_cmake_test(GetProperty + Variable-Name + ) + + set(No-Cache-RESULT 1) +-set(No-Cache-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?GetProperty-No-Cache.cmake:1 \\(get_property\\):.*get_property not given name for CACHE scope\\..*") ++set(No-Cache-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?GetProperty-No-Cache.cmake:1 \\(get_property\\):.*get_property not given name for CACHE scope\\..*") + + check_cmake_test(GetProperty + No-Cache +--- a/Tests/CMakeTests/IfTest.cmake.in ++++ b/Tests/CMakeTests/IfTest.cmake.in +@@ -7,6 +7,9 @@ foreach(_arg "" 0 1 2 ${TRUE_NAMES} ${FA + set(VAR_${_arg} "${_arg}") + endforeach() + ++include("@CMAKE_CURRENT_SOURCE_DIR@/../RegexEscapeString.cmake") ++REGEX_ESCAPE_STRING(CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@") ++ + macro(test_vars _old) + # Variables set to false or not set. + foreach(_var "" 0 ${FALSE_NAMES} UNDEFINED) +@@ -158,7 +161,7 @@ endforeach() + test_vars("") + + set(Invalid-Argument-RESULT 1) +-set(Invalid-Argument-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?If-Invalid-Argument.cmake:1 \\(if\\):.*Unknown arguments specified.*") ++set(Invalid-Argument-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?If-Invalid-Argument.cmake:1 \\(if\\):.*Unknown arguments specified.*") + + include("@CMAKE_CURRENT_SOURCE_DIR@/CheckCMakeTest.cmake") + check_cmake_test(If +--- a/Tests/CMakeTests/ListTest.cmake.in ++++ b/Tests/CMakeTests/ListTest.cmake.in +@@ -1,5 +1,8 @@ + include("@CMAKE_CURRENT_SOURCE_DIR@/CheckCMakeTest.cmake") + ++include("@CMAKE_CURRENT_SOURCE_DIR@/../RegexEscapeString.cmake") ++REGEX_ESCAPE_STRING(CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@") ++ + macro(TEST command expected) + if("x${result}" STREQUAL "x${expected}") + #message("TEST \"${command}\" success: \"${result}\" expected: \"${expected}\"") +@@ -101,7 +104,7 @@ list(SORT result) + TEST("SORT empty result" "") + + set(No-Arguments-RESULT 1) +-set(No-Arguments-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?List-No-Arguments.cmake:1 \\(list\\):.*list must be called with at least two arguments.*") ++set(No-Arguments-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-No-Arguments.cmake:1 \\(list\\):.*list must be called with at least two arguments.*") + + # these trigger top-level condition + foreach(cmd IN ITEMS Append Find Get Insert Length Reverse Remove_At Remove_Duplicates Remove_Item Sort) +@@ -130,33 +133,33 @@ foreach(cmd IN ITEMS Find Get Insert Len + endforeach() + + set(Length-Too-Many-Arguments-RESULT 1) +-set(Length-Too-Many-Arguments-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?List-Length-Too-Many-Arguments.cmake:1 \\(list\\):.*list sub-command LENGTH requires two arguments.*") ++set(Length-Too-Many-Arguments-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-Length-Too-Many-Arguments.cmake:1 \\(list\\):.*list sub-command LENGTH requires two arguments.*") + + set(Reverse-Too-Many-Arguments-RESULT 1) +-set(Reverse-Too-Many-Arguments-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?List-Reverse-Too-Many-Arguments.cmake:1 \\(list\\):.*list sub-command REVERSE only takes one argument.*") ++set(Reverse-Too-Many-Arguments-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-Reverse-Too-Many-Arguments.cmake:1 \\(list\\):.*list sub-command REVERSE only takes one argument.*") + + set(Remove_Duplicates-Too-Many-Arguments-RESULT 1) +-set(Remove_Duplicates-Too-Many-Arguments-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?List-Remove_Duplicates-Too-Many-Arguments.cmake:1 \\(list\\):.*list sub-command REMOVE_DUPLICATES only takes one argument.*") ++set(Remove_Duplicates-Too-Many-Arguments-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-Remove_Duplicates-Too-Many-Arguments.cmake:1 \\(list\\):.*list sub-command REMOVE_DUPLICATES only takes one argument.*") + + set(Sort-Too-Many-Arguments-RESULT 1) +-set(Sort-Too-Many-Arguments-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?List-Sort-Too-Many-Arguments.cmake:1 \\(list\\):.*list sub-command SORT only takes one argument.*") ++set(Sort-Too-Many-Arguments-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-Sort-Too-Many-Arguments.cmake:1 \\(list\\):.*list sub-command SORT only takes one argument.*") + + set(Invalid-Subcommand-RESULT 1) +-set(Invalid-Subcommand-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?List-Invalid-Subcommand.cmake:1 \\(list\\):.*list does not recognize sub-command NO_SUCH_SUBCOMMAND.*") ++set(Invalid-Subcommand-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-Invalid-Subcommand.cmake:1 \\(list\\):.*list does not recognize sub-command NO_SUCH_SUBCOMMAND.*") + + foreach(cmd Get Insert Remove_At) + set(${cmd}-Invalid-Index-RESULT 1) +- set(${cmd}-Invalid-Index-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?List-${cmd}-Invalid-Index.cmake:2 \\(list\\):.*list index: 3 out of range \\(-3, 2\\).*") ++ set(${cmd}-Invalid-Index-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-${cmd}-Invalid-Index.cmake:2 \\(list\\):.*list index: 3 out of range \\(-3, 2\\).*") + endforeach() + + foreach(cmd Remove_Item Reverse Remove_Duplicates Sort Remove_At) + string(TOUPPER ${cmd} Cmd) + set(${cmd}-Nonexistent-List-RESULT 1) +- set(${cmd}-Nonexistent-List-STDERR ".*CMake Error at (@CMAKE_CURRENT_SOURCE_DIR@/)?List-${cmd}-Nonexistent-List.cmake:2 \\(list\\):.*sub-command ${Cmd} requires list to be present.*") ++ set(${cmd}-Nonexistent-List-STDERR ".*CMake Error at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-${cmd}-Nonexistent-List.cmake:2 \\(list\\):.*sub-command ${Cmd} requires list to be present.*") + endforeach() + + set(Get-CMP0007-Warn-RESULT 0) +-set(Get-CMP0007-Warn-STDERR ".*CMake Warning \\(dev\\) at (@CMAKE_CURRENT_SOURCE_DIR@/)?List-Get-CMP0007-Warn.cmake:3 \\(list\\):.*Policy CMP0007 is not set:.*") ++set(Get-CMP0007-Warn-STDERR ".*CMake Warning \\(dev\\) at (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?List-Get-CMP0007-Warn.cmake:3 \\(list\\):.*Policy CMP0007 is not set:.*") + + check_cmake_test(List + No-Arguments +--- a/Tests/CMakeTests/WhileTest.cmake.in ++++ b/Tests/CMakeTests/WhileTest.cmake.in +@@ -1,6 +1,9 @@ + set(NUMBERS "") + set(COUNT 0) + ++include("@CMAKE_CURRENT_SOURCE_DIR@/../RegexEscapeString.cmake") ++REGEX_ESCAPE_STRING(CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@") ++ + while(COUNT LESS 200) + set(NUMBERS "${NUMBERS} ${COUNT}") + set(COUNT "2${COUNT}") +@@ -16,8 +19,9 @@ 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.*") ++set(Missing-Argument-STDERR ".*CMake Error at (${CTEST_ESCAPED_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 +@@ -25,28 +29,28 @@ check_cmake_test(While + ) + + 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\\..*") ++set(Missing-Endwhile-STDERR ".*CMake Error in (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?While-Missing-Endwhile.cmake:.*A logical block opening on the line.*(${CTEST_ESCAPED_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\\..*") ++set(Endwhile-Mismatch-STDERR ".*CMake Warning \\(dev\\) in (${CTEST_ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/)?While-Endwhile-Mismatch.cmake:.*A logical block opening on the line.*(${CTEST_ESCAPED_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.*$") ++set(Endwhile-Alone-STDERR ".*CMake Error at (${CTEST_ESCAPED_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.*$") ++set(Endwhile-Alone-Args-STDERR ".*CMake Error at (${CTEST_ESCAPED_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 +--- /dev/null ++++ b/Tests/RegexEscapeString.cmake +@@ -0,0 +1,4 @@ ++macro(REGEX_ESCAPE_STRING _OUT _IN) ++ # Escape special regex metacharacters with a backslash ++ string(REGEX REPLACE "([$^.[|*+?()]|])" "\\\\\\1" ${_OUT} "${_IN}") ++endmacro() diff --git a/debian/patches/series b/debian/patches/series index 859daf873..5d63cd0be 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -3,3 +3,5 @@ multiarch_findgtk2_fix.diff install_to_multiarch_libdir_on_kfreebsd_hurd.diff multiarch-python-include-dirs.diff qt_import_dir_variable.diff +0001-Fix-test-failures-caused-by-regexp-sensitive-charact.patch +tests-fix-Memcheck-tests-in-a-dir-with-regex-special.patch diff --git a/debian/patches/tests-fix-Memcheck-tests-in-a-dir-with-regex-special.patch b/debian/patches/tests-fix-Memcheck-tests-in-a-dir-with-regex-special.patch new file mode 100644 index 000000000..8678a8e9c --- /dev/null +++ b/debian/patches/tests-fix-Memcheck-tests-in-a-dir-with-regex-special.patch @@ -0,0 +1,47 @@ +From: Modestas Vainius +Date: Sun, 02 Jun 2013 22:04:53 +0300 +Subject: tests: fix Memcheck tests in a dir with regex special chars (#14183) +Origin: vendor +Forwarded: yes +Bug: http://cmake.org/Bug/view.php?id=14183 +Applied-Upstream: 2.8.12 + +Adapted version of upstream commit ec5b59a3d39ec9687ebde69b299de77992f82518 for 2.8.11. + +--- a/Tests/CTestTestMemcheck/CMakeLists.txt ++++ b/Tests/CTestTestMemcheck/CMakeLists.txt +@@ -1,3 +1,6 @@ ++include("@CMAKE_CURRENT_SOURCE_DIR@/../RegexEscapeString.cmake") ++REGEX_ESCAPE_STRING(CTEST_ESCAPED_CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}") ++ + foreach (_retval 0 1) + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/ret${_retval}.c" "int main(){return ${_retval};}\n") + endforeach () +@@ -49,7 +52,7 @@ string(REPLACE "+" "\\+" CMAKE_COMMAND_E + + foreach (_unkn Unknown UnknownQuoted) + set_tests_properties(CTestTestMemcheck${_unkn} PROPERTIES +- PASS_REGULAR_EXPRESSION "Do not understand memory checker: ${CMAKE_COMMAND_ESCAPED}\n(.*\n)?Error in read script: ${CMAKE_CURRENT_BINARY_DIR}/${_unkn}/test.cmake\n") ++ PASS_REGULAR_EXPRESSION "Do not understand memory checker: ${CMAKE_COMMAND_ESCAPED}\n(.*\n)?Error in read script: ${CTEST_ESCAPED_CMAKE_CURRENT_BINARY_DIR}/${_unkn}/test.cmake\n") + endforeach () + + set_tests_properties(CTestTestMemcheckNotExist PROPERTIES +@@ -67,7 +70,7 @@ foreach (_pp Pre Post) + string(TOLOWER ${_pp} _pp_lower) + set_tests_properties(CTestTestMemcheckDummyValgrindFail${_pp} + PROPERTIES +- PASS_REGULAR_EXPRESSION "\nProblem running command: ${CMAKE_CURRENT_BINARY_DIR}[^\n]*fail[^\n]*\n(.*\n)?Problem executing ${_pp_lower}-memcheck command\\(s\\\).\n(.*\n)?Error in read script: ${CMAKE_CURRENT_BINARY_DIR}/DummyValgrindFail${_pp}/test.cmake\n") ++ PASS_REGULAR_EXPRESSION "\nProblem running command: ${CTEST_ESCAPED_CMAKE_CURRENT_BINARY_DIR}[^\n]*fail[^\n]*\n(.*\n)?Problem executing ${_pp_lower}-memcheck command\\(s\\\).\n(.*\n)?Error in read script: ${CTEST_ESCAPED_CMAKE_CURRENT_BINARY_DIR}/DummyValgrindFail${_pp}/test.cmake\n") + endforeach () + + set_tests_properties(CTestTestMemcheckDummyValgrindIgnoreMemcheck +@@ -75,7 +78,7 @@ set_tests_properties(CTestTestMemcheckDu + PASS_REGULAR_EXPRESSION "\n2/2 Test #2: RunCMakeAgain .*\n1/1 MemCheck #1: RunCMake .*${NORMAL_CTEST_OUTPUT}") + + set_tests_properties(CTestTestMemcheckDummyPurify PROPERTIES +- PASS_REGULAR_EXPRESSION "\nCannot find memory tester output file: ${CMAKE_CURRENT_BINARY_DIR}/DummyPurify/Testing/Temporary/MemoryChecker.log\n(.*\n)?Error in read script: ${CMAKE_CURRENT_BINARY_DIR}/DummyPurify/test.cmake\n") ++ PASS_REGULAR_EXPRESSION "\nCannot find memory tester output file: ${CTEST_ESCAPED_CMAKE_CURRENT_BINARY_DIR}/DummyPurify/Testing/Temporary/MemoryChecker.log\n(.*\n)?Error in read script: ${CTEST_ESCAPED_CMAKE_CURRENT_BINARY_DIR}/DummyPurify/test.cmake\n") + + set_tests_properties(CTestTestMemcheckDummyBC PROPERTIES +- PASS_REGULAR_EXPRESSION "\nCannot find memory tester output file: ${CMAKE_CURRENT_BINARY_DIR}/DummyBC/Testing/Temporary/MemoryChecker.log\n(.*\n)?Error parsing XML in stream at line 1: no element found\n(.*\n)?Error in read script: ${CMAKE_CURRENT_BINARY_DIR}/DummyBC/test.cmake\n") ++ PASS_REGULAR_EXPRESSION "\nCannot find memory tester output file: ${CTEST_ESCAPED_CMAKE_CURRENT_BINARY_DIR}/DummyBC/Testing/Temporary/MemoryChecker.log\n(.*\n)?Error parsing XML in stream at line 1: no element found\n(.*\n)?Error in read script: ${CTEST_ESCAPED_CMAKE_CURRENT_BINARY_DIR}/DummyBC/test.cmake\n")