summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2002-11-06 23:05:39 (GMT)
committerBrad King <brad.king@kitware.com>2002-11-06 23:05:39 (GMT)
commit6ab16695d066278fe9f78774ec3df3733d932c06 (patch)
treeefe7ecb05c7418013618a8d36577dd41c4d02815
parent42c464c05e8f79f82babf83909d918bf26317425 (diff)
downloadCMake-6ab16695d066278fe9f78774ec3df3733d932c06.zip
CMake-6ab16695d066278fe9f78774ec3df3733d932c06.tar.gz
CMake-6ab16695d066278fe9f78774ec3df3733d932c06.tar.bz2
BUG: Fixed STRING(REGEX REPLACE ...) and added better test.
-rw-r--r--Source/cmStringCommand.cxx4
-rw-r--r--Tests/Complex/CMakeLists.txt9
-rw-r--r--Tests/ComplexOneConfig/CMakeLists.txt9
-rw-r--r--Tests/ComplexRelativePaths/CMakeLists.txt9
4 files changed, 17 insertions, 14 deletions
diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx
index f17e65a..73c6e60 100644
--- a/Source/cmStringCommand.cxx
+++ b/Source/cmStringCommand.cxx
@@ -254,7 +254,7 @@ bool cmStringCommand::RegexReplace(std::vector<std::string> const& args)
std::string::size_type r = re.end();
// Concatenate the part of the input that was not matched.
- output += input.substr(base, l-base);
+ output += input.substr(base, l);
// Make sure the match had some text.
if(r-l == 0)
@@ -282,7 +282,7 @@ bool cmStringCommand::RegexReplace(std::vector<std::string> const& args)
if((start != std::string::npos) && (end != std::string::npos) &&
(start >= 0) && (start <= len) && (end >= 0) && (end <= len))
{
- output += input.substr(base+l, r-l);
+ output += input.substr(base+start, end-start);
}
else
{
diff --git a/Tests/Complex/CMakeLists.txt b/Tests/Complex/CMakeLists.txt
index aa4bb4b..af0c5d1 100644
--- a/Tests/Complex/CMakeLists.txt
+++ b/Tests/Complex/CMakeLists.txt
@@ -221,12 +221,13 @@ STRING(REGEX MATCHALL "b" RESULT "abcb")
IF(NOT RESULT)
MESSAGE(SEND_ERROR "STRING(REGEX MATCHALL ... ) test failed.")
ENDIF(NOT RESULT)
-STRING(REGEX REPLACE "(b)" "[\\1]" RESULT "abcde")
-IF("x${RESULT}" MATCHES "^xa\\[b\\]cde$")
+STRING(REGEX REPLACE ".([bd])." "[\\1]" RESULT "a(b)c(d)e")
+IF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
SET(STRING_REGEX_PASSED 1)
-ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]cde$")
+ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
IF(NOT STRING_REGEX_PASSED)
- MESSAGE(SEND_ERROR "STRING(REGEX REPLACE ... ) test failed.")
+ MESSAGE(SEND_ERROR
+ "STRING(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
ENDIF(NOT STRING_REGEX_PASSED)
#
diff --git a/Tests/ComplexOneConfig/CMakeLists.txt b/Tests/ComplexOneConfig/CMakeLists.txt
index aa4bb4b..af0c5d1 100644
--- a/Tests/ComplexOneConfig/CMakeLists.txt
+++ b/Tests/ComplexOneConfig/CMakeLists.txt
@@ -221,12 +221,13 @@ STRING(REGEX MATCHALL "b" RESULT "abcb")
IF(NOT RESULT)
MESSAGE(SEND_ERROR "STRING(REGEX MATCHALL ... ) test failed.")
ENDIF(NOT RESULT)
-STRING(REGEX REPLACE "(b)" "[\\1]" RESULT "abcde")
-IF("x${RESULT}" MATCHES "^xa\\[b\\]cde$")
+STRING(REGEX REPLACE ".([bd])." "[\\1]" RESULT "a(b)c(d)e")
+IF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
SET(STRING_REGEX_PASSED 1)
-ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]cde$")
+ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
IF(NOT STRING_REGEX_PASSED)
- MESSAGE(SEND_ERROR "STRING(REGEX REPLACE ... ) test failed.")
+ MESSAGE(SEND_ERROR
+ "STRING(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
ENDIF(NOT STRING_REGEX_PASSED)
#
diff --git a/Tests/ComplexRelativePaths/CMakeLists.txt b/Tests/ComplexRelativePaths/CMakeLists.txt
index aa4bb4b..af0c5d1 100644
--- a/Tests/ComplexRelativePaths/CMakeLists.txt
+++ b/Tests/ComplexRelativePaths/CMakeLists.txt
@@ -221,12 +221,13 @@ STRING(REGEX MATCHALL "b" RESULT "abcb")
IF(NOT RESULT)
MESSAGE(SEND_ERROR "STRING(REGEX MATCHALL ... ) test failed.")
ENDIF(NOT RESULT)
-STRING(REGEX REPLACE "(b)" "[\\1]" RESULT "abcde")
-IF("x${RESULT}" MATCHES "^xa\\[b\\]cde$")
+STRING(REGEX REPLACE ".([bd])." "[\\1]" RESULT "a(b)c(d)e")
+IF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
SET(STRING_REGEX_PASSED 1)
-ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]cde$")
+ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
IF(NOT STRING_REGEX_PASSED)
- MESSAGE(SEND_ERROR "STRING(REGEX REPLACE ... ) test failed.")
+ MESSAGE(SEND_ERROR
+ "STRING(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
ENDIF(NOT STRING_REGEX_PASSED)
#