You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2018/12/10 09:28:46 UTC

svn commit: r1848558 - in /tomcat/trunk: java/org/apache/tomcat/buildutil/translate/Utils.java test/org/apache/tomcat/buildutil/ test/org/apache/tomcat/buildutil/translate/ test/org/apache/tomcat/buildutil/translate/TestUtils.java

Author: markt
Date: Mon Dec 10 09:28:46 2018
New Revision: 1848558

URL: http://svn.apache.org/viewvc?rev=1848558&view=rev
Log:
The single quote replacement code has never been quite right. Add some unit tests and use a regexp that better handles the various edge cases

Added:
    tomcat/trunk/test/org/apache/tomcat/buildutil/
    tomcat/trunk/test/org/apache/tomcat/buildutil/translate/
    tomcat/trunk/test/org/apache/tomcat/buildutil/translate/TestUtils.java   (with props)
Modified:
    tomcat/trunk/java/org/apache/tomcat/buildutil/translate/Utils.java

Modified: tomcat/trunk/java/org/apache/tomcat/buildutil/translate/Utils.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/buildutil/translate/Utils.java?rev=1848558&r1=1848557&r2=1848558&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/buildutil/translate/Utils.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/buildutil/translate/Utils.java Mon Dec 10 09:28:46 2018
@@ -29,7 +29,7 @@ public class Utils {
 
     private static final Pattern ADD_CONTINUATION = Pattern.compile("\\n", Pattern.MULTILINE);
     private static final Pattern ESCAPE_LEADING_SPACE = Pattern.compile("^(\\s)", Pattern.MULTILINE);
-    private static final Pattern FIX_SINGLE_QUOTE = Pattern.compile("([^'])'([^'])", Pattern.MULTILINE);
+    private static final Pattern FIX_SINGLE_QUOTE = Pattern.compile("(?<!')'(?!')", Pattern.MULTILINE);
 
     private Utils() {
         // Utility class. Hide default constructor.
@@ -66,7 +66,7 @@ public class Utils {
         }
 
         if (result.contains("[{0}]")) {
-            result = FIX_SINGLE_QUOTE.matcher(result).replaceAll("$1''$2");
+            result = FIX_SINGLE_QUOTE.matcher(result).replaceAll("''");
         }
         return result;
     }

Added: tomcat/trunk/test/org/apache/tomcat/buildutil/translate/TestUtils.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/buildutil/translate/TestUtils.java?rev=1848558&view=auto
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/buildutil/translate/TestUtils.java (added)
+++ tomcat/trunk/test/org/apache/tomcat/buildutil/translate/TestUtils.java Mon Dec 10 09:28:46 2018
@@ -0,0 +1,50 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.tomcat.buildutil.translate;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TestUtils {
+
+    @Test
+    public void testQuoteReplacement01() {
+        Assert.assertEquals("[{0}] a''a", Utils.formatValue("[{0}] a'a"));
+    }
+
+    @Test
+    public void testQuoteReplacement02() {
+        Assert.assertEquals("[{0}] a''", Utils.formatValue("[{0}] a'"));
+    }
+
+
+    @Test
+    public void testQuoteReplacement03() {
+        Assert.assertEquals("''a [{0}]", Utils.formatValue("'a [{0}]"));
+    }
+
+    @Test
+    public void testQuoteReplacement05() {
+        Assert.assertEquals("[{0}] ''a'' bbb", Utils.formatValue("[{0}] 'a' bbb"));
+    }
+
+    @Test
+    public void testQuoteReplacement06() {
+        Assert.assertEquals("[{0}] ''aa'' bbb", Utils.formatValue("[{0}] 'aa' bbb"));
+    }
+
+}

Propchange: tomcat/trunk/test/org/apache/tomcat/buildutil/translate/TestUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org