Author: ggregory
Date: Fri Jul 15 16:12:50 2011
New Revision: 1147212
URL: http://svn.apache.org/viewvc?rev=1147212&view=rev
Log:
Test for [LANG-720] StringEscapeUtils.escapeXml(input) outputs wrong results
when an input contains characters in Supplementary Planes. [LANG-708]
StringEscapeUtils.escapeEcmaScript from lang3 cuts off long unicode string.
Added:
commons/proper/lang/trunk/src/test/resources/
commons/proper/lang/trunk/src/test/resources/lang-708-input.txt
Modified:
commons/proper/lang/trunk/build.properties.sample
commons/proper/lang/trunk/build.xml
commons/proper/lang/trunk/default.properties
commons/proper/lang/trunk/pom.xml
commons/proper/lang/trunk/src/site/changes/changes.xml
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
Modified: commons/proper/lang/trunk/build.properties.sample
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/build.properties.sample?rev=1147212&r1=1147211&r2=1147212&view=diff
==============================================================================
--- commons/proper/lang/trunk/build.properties.sample (original)
+++ commons/proper/lang/trunk/build.properties.sample Fri Jul 15 16:12:50 2011
@@ -24,3 +24,4 @@
repository=${user.home}/.m2/repository
junit.home=${repository}/junit/junit/4.7/
easymock.home=${repository}/org/easymock/easymock/2.5.2/
+commons-io.home=${repository}/commons-io/commons-io/2.0.1/
Modified: commons/proper/lang/trunk/build.xml
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/build.xml?rev=1147212&r1=1147211&r2=1147212&view=diff
==============================================================================
--- commons/proper/lang/trunk/build.xml (original)
+++ commons/proper/lang/trunk/build.xml Fri Jul 15 16:12:50 2011
@@ -42,6 +42,7 @@
<pathelement location="${build.home}/tests"/>
<pathelement location="${junit.jar}"/>
<pathelement location="${easymock.jar}"/>
+ <pathelement location="${commons-io.jar}"/>
</path>
<!-- ========== Executable Targets
======================================== -->
Modified: commons/proper/lang/trunk/default.properties
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/default.properties?rev=1147212&r1=1147211&r2=1147212&view=diff
==============================================================================
--- commons/proper/lang/trunk/default.properties (original)
+++ commons/proper/lang/trunk/default.properties Fri Jul 15 16:12:50 2011
@@ -23,6 +23,9 @@ junit.jar = ${junit.home}/junit-4.7.jar
# The location of the Easymock jar
easymock.jar = ${easymock.home}/easymock-2.5.2.jar
+# The location of the Commons-IO jar
+commons-io.jar = ${commons-io.home}/commons-io-2.0.1.jar
+
# Whether or not to fork tests
junit.fork = true
Modified: commons/proper/lang/trunk/pom.xml
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/pom.xml?rev=1147212&r1=1147211&r2=1147212&view=diff
==============================================================================
--- commons/proper/lang/trunk/pom.xml (original)
+++ commons/proper/lang/trunk/pom.xml Fri Jul 15 16:12:50 2011
@@ -425,6 +425,13 @@
</dependency>
<dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.0.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>2.5.2</version>
Modified: commons/proper/lang/trunk/src/site/changes/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/site/changes/changes.xml?rev=1147212&r1=1147211&r2=1147212&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/site/changes/changes.xml (original)
+++ commons/proper/lang/trunk/src/site/changes/changes.xml Fri Jul 15 16:12:50
2011
@@ -22,6 +22,7 @@
<body>
<release version="3.0" date="Unreleased" description="Backwards incompatible
update of Commons Lang to Java 5">
+ <action type="fix" issue="LANG-720">StringEscapeUtils.escapeXml(input)
outputs wrong results when an input contains characters in Supplementary
Planes.</action>
<action type="update" issue="LANG-718">build.xml Java 1.5+
updates.</action>
<action type="fix" issue="LANG-716">swapCase and *capitalize
speedups.</action>
<action type="fix" issue="LANG-715">CharSetUtils.squeeze()
speedup.</action>
@@ -29,6 +30,7 @@
<action type="update" issue="LANG-713">Increase test coverage of
FieldUtils read methods and tweak javadoc</action>
<action type="fix" issue="LANG-711">Add includeantruntime=false to javac
targets to quell warnings in ant 1.8.1 and better (and modest performance
gain).</action>
<action type="fix" issue="LANG-710">StringIndexOutOfBoundsException when
calling unescapeHtml4("&#03")</action>
+ <action type="fix" issue="LANG-708">StringEscapeUtils.escapeEcmaScript
from lang3 cuts off long unicode string</action>
<action type="fix" issue="LANG-703">StringUtils.join throws NPE when
toString returns null for one of objects in collection</action>
<action type="add" issue="LANG-697">Add FormattableUtils class</action>
<action type="add">Add ClassUtils.getSimpleName() methods</action>
Modified:
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java?rev=1147212&r1=1147211&r2=1147212&view=diff
==============================================================================
---
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
(original)
+++
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
Fri Jul 15 16:12:50 2011
@@ -16,6 +16,7 @@
*/
package org.apache.commons.lang3;
+import java.io.FileInputStream;
import java.io.IOException;
import java.io.StringWriter;
import java.lang.reflect.Constructor;
@@ -23,6 +24,8 @@ import java.lang.reflect.Modifier;
import junit.framework.TestCase;
+import org.apache.commons.io.IOUtils;
+
/**
* Unit tests for {@link StringEscapeUtils}.
*
@@ -390,7 +393,11 @@ public class StringEscapeUtilsTest exten
}
}
- // https://issues.apache.org/jira/browse/LANG-480
+ /**
+ * Tests // https://issues.apache.org/jira/browse/LANG-480
+ *
+ * @throws java.io.UnsupportedEncodingException
+ */
public void testEscapeHtmlHighUnicode() throws
java.io.UnsupportedEncodingException {
// this is the utf8 representation of the character:
// COUNTING ROD UNIT DIGIT THREE
@@ -411,7 +418,9 @@ public class StringEscapeUtilsTest exten
// assertEquals( "High unicode should have been unescaped", original,
unescapedFromEntity);
}
- // https://issues.apache.org/jira/browse/LANG-339
+ /**
+ * Tests https://issues.apache.org/jira/browse/LANG-339
+ */
public void testEscapeHiragana() {
// Some random Japanese unicode characters
String original = "\u304B\u304C\u3068";
@@ -424,7 +433,24 @@ public class StringEscapeUtilsTest exten
assertEquals( "Hiragana character unicode behaviour has changed -
expected no unescaping", escaped, unescaped);
}
- // https://issues.apache.org/jira/browse/LANG-720
+ /**
+ * Tests https://issues.apache.org/jira/browse/LANG-708
+ *
+ * @throws IOException
+ * if an I/O error occurs
+ */
+ public void testLang708() throws IOException {
+ String input = IOUtils.toString(new
FileInputStream("src/test/resources/lang-708-input.txt"), "UTF-8");
+ String escaped = StringEscapeUtils.escapeEcmaScript(input);
+ // just the end:
+ assertTrue(escaped, escaped.endsWith("}]"));
+ // a little more:
+ assertTrue(escaped, escaped.endsWith("\"valueCode\\\":\\\"\\\"}]"));
+ }
+
+ /**
+ * Tests https://issues.apache.org/jira/browse/LANG-720
+ */
public void testLang720() {
String input = new
StringBuilder("\ud842\udfb7").append("A").toString();
String escaped = StringEscapeUtils.escapeXml(input);
Added: commons/proper/lang/trunk/src/test/resources/lang-708-input.txt
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/resources/lang-708-input.txt?rev=1147212&view=auto
==============================================================================
--- commons/proper/lang/trunk/src/test/resources/lang-708-input.txt (added)
+++ commons/proper/lang/trunk/src/test/resources/lang-708-input.txt Fri Jul 15
16:12:50 2011
@@ -0,0 +1 @@
+[{"geonameFeatureClass":"L","values":{"eu":"Mundua","ro":"Pamânt","it":"Globo","ca":"el
món","tr":"Yeryüzü","no":"Jorden","hu":"Föld","lv":"Zeme","de":"Welt","el":"ΥδÏÏγειοÏ","fi":"Maa","la":"Terra","fr":"Monde","eo":"Mondo","en":"World","ru":"ÐемлÑ","es":"el
planeta","nl":"Aarde"},"geonameFeatureCode":"AREA","_id":32,"name":"","auto":true,"type":"GEO","geonameId":6295630,"valueCode":""},{"geonameFeatureClass":"L","values":{"ro":"Europa","zh":"欧洲","ca":"Europa","vi":"Châu
Ãu","tr":"Avrupa","no":"Europa","hu":"Európa","lv":"Eiropa","hi":"यà¥à¤°à¥à¤ª","lt":"Europa","bs":"Evropa","ga":"an
Eoraip","th":"ยุà¹à¸£à¸","id":"Eropa","de":"Europa","fi":"Eurooppa","fr":"Europe","sv":"Europa","bg":"ÐвÑопа","da":"Europa","eu":"Europa","is":"Evrópa","it":"Europa","cy":"Ewrop","ar":"Ø£ÙØ±Ùبا","se":"Eurohpá","he":"××ר×פ×
","cs":"Evropa","el":"ÎÏ
ÏÏÏη","nb":"Europa","pl":"Europa","la":"Europa","pt":"Europa","eo":"EÅropo","en":"Europe","ru":"ÐвÑопа","es":"Europa","ja":"ã¨ã¼ããã","nl":"Europa"},"geonameFeatureCode":"CONT","_id":33,"name":"","auto":true,"type":"GEO","geonameId":6255148,"valueCode":""},{"geonameFeatureClass":"A","values":{"no":"Spania","nn":"Spania","fy":"Spanje","gd":"An
Spà inn","ga":"An
Spáinn","oc":"Espanha","arc":"ÜܣܦܢÜÜ","fi":"Espanja","fr":"Espagne","fo":"Spania","udm":"ÐÑпаниÑ","os":"ÐÑпани","he":"ספר×","gn":"Epaña","gl":"España","gv":"Yn
Spaainey","pl":"Hiszpania","gu":"સà«àªªà«àªàª¨","lo":"ສະà»àºàº","ln":"Espania","vi":"Tây
Ban
Nha","dz":"Spain","pms":"Spagna","lv":"SpÄnija","lt":"Ispanija","vo":"Spanyän","de":"Spanien","mg":"Espaina","fur":"Spagne","mk":"ШпаниÑ
а","ml":"à´¸àµà´ªàµà´¯àµà´¨àµ\u200D","ceb":"Espanya","mi":"PÄniora","uk":"ÐÑпанÑÑ","eu":"Espainia","mr":"सà¥à¤ªà¥à¤¨","ug":"Ø¦ÙØ³Ù¾Ø§ÙÙÙÛ","mt":"Spanja","ms":"Sepanyol","ur":"سپÛÙ","fa":"اسپاÙÛØ§","ty":"Paniora","new":"सà¥à¤ªà¥à¤¨","na":"Pain","el":"ÎÏÏανία","nb":"Spania","ne":"सà¥à¤ªà¥à¤¨","vls":"Spanje","eo":"Hispanio","en":"Kingdom
of Spain","et":"Hispaania","es":"la Madre
Patria","nl":"Spanje","vec":"Spagna","to":"Sepeni","ca":"Espanya","tl":"Espanya","tr":"İspanya","tg":"ÐÑпониÑ","haw":"Sepania","bs":"Å panija","br":"Spagn","th":"à¸à¸£à¸°à¹à¸à¸¨à¸ªà¹à¸à¸","bn":"সà§à¦ªà§à¦¨","bo":"སིà¼à½à½à¼","ta":"ஸà¯à®ªà¯à®¯à®¿à®©à¯","sv":"Spanien","bg":"ÐÑп�
�°Ð½Ð¸Ñ","ka":"áá¡áááááá","st":"Spain","sw":"Hispania","be":"ÐÑпанÑÑ","kw":"Spayn","sl":"Å panija","sk":"Å panielsko","da":"Spanien","ang":"SpÄonland","nds":"Spanien","ks":"SpÄna","so":"Isbeyn","ku":"Spanya","sr":"ШпаниÑа","sq":"Spanja","ko":"ìì¤íë","sc":"Ispagna","cy":"Sbaen","se":"Espánjja","sh":"Å panija","cv":"ÐÑпани","km":"á¢áááááá¶á","cs":"Å panÄlsko","li":"Spanje","co":"Spagna","default":"Spain","jbo":"sangu'e","la":"Hesperia","ru":"ÐÑпаниÑ","lb":"Spuenien","sco":"Spain","tet":"España","scn":"Spagna","hr":"Å panjolska","zh":"西çç","ro":"Spania","rm":"Spagna","ht":"Espay","hu":"Spanyolország","ast":"España","hi":"सà¥à¤ªà¥à¤¨","hsb":"Å paniska","nah":"CaxtillÄn","war":"Espanya","lad":"Espanya","id":"Spanyol","ia":"Espani
a","nrm":"Espangne","hy":"Ô»Õ½ÕºÕ¡Õ¶Õ«Õ¡","qu":"Ispaña","ilo":"Espania","az":"İspaniya","is":"Spánn","it":"Spagna","tpi":"Spen","ar":"أسباÙÙØ§","io":"Hispania","pam":"Espanya","frp":"Ãspagne","am":"á¥áµááá«","an":"España","csb":"SzpaÅskô","pt":"Espanha","ja":"ã¹ãã¤ã³","ps":"اسپاÙÙØ§","yi":"שפ×× ××¢","af":"Spanje"},"geonameFeatureCode":"PCLI","_id":260,"name":"","auto":true,"type":"GEO","geonameId":2510769,"valueCode":""},{"geonameFeatureClass":"A","values":{"ca":"Andalusia","tr":"Endülüs","krc":"ÐндалÑÑиÑ","no":"AndalucÃa","fy":"Andalûsje","bs":"Andaluzija","br":"Andalouzia","ext":"Andaluzia","ga":"An
Andalúis","th":"à¹à¸à¸§à¹à¸à¸à¸±à¸à¸à¸²à¸¥à¸¹à¸à¸µà¸à¸²","bn":"à¦à¦¨à§à¦¦à¦¾à¦²à§à¦¸à¦¿à¦¯à¦¼à¦¾","oc":"Andalosi
a","ka":"áááááá£á¡áá","sv":"Andalusien","fr":"Andalousie","bg":"ÐндалÑÑиÑ","glk":"Ø¢ÙØ¯Ø§ÙÙØ³Ûا","be":"ÐндалÑÑÑÑ","kw":"Andalousi","sk":"Andalúzia","os":"ÐндалÑÑи","da":"Andalusien","sr":"ÐндалÑзиÑа","ku":"Endulus","ko":"ìë¬ë£¨ìì
ì§ë°©","he":"×× ×××ס××","sh":"Andaluzija","arz":"Ø§ÙØ¯ÙÙØ³Ùا","cs":"Andalusie","default":"Andalusia","stq":"Andalusien","la":"Vandalitia","pl":"Andaluzja","ru":"ÐндалÑÑиÑ","lb":"Andalusien","tet":"Andaluzia","got":"ð
ð°ð½ð³ð°ð»ð¹ðð¾ð°","hr":"Andaluzija","zh":"å®éé¯è¥¿äº","ro":"Andaluzia","hu":"Andalúzia","pms":"Andalusìa","lv":"AndalÅ«zija","lt":"AndalÅ«zija","nah":"Andalucia","lad":"Anda
luziya","de":"Andalusien","als":"Andalusien","qu":"Andalusiya","hy":"Ô±Õ¶Õ¤Õ¡Õ¬Õ¸ÖÕ¦Õ«Õ¡","eu":"Andaluzia","is":"AndalúsÃa","uk":"ÐндалÑÑÑÑ","az":"Andalusiya","mr":"à¤à¤à¤¦à¤¾à¤²à¥à¤¸à¤¿à¤¯à¤¾","ug":"Andalusiye","fa":"Ø§ÙØ¯Ùس","ar":"Ø£ÙØ¯ÙÙØ³Ùا","rmy":"Andalusiya","io":"Andaluzia","el":"ÎνδαλοÏ
Ïία","frp":"Andalosie","pt":"Andaluzia","eo":"Andaluzio","en":"Andalusia","et":"Andaluusia","es":"AndalucÃa","ja":"ã¢ã³ãã«ã·ã¢å·","nl":"Andalusië","af":"Andalusië","vec":"Andalusìa"},"geonameFeatureCode":"ADM1","_id":261,"name":"","auto":true,"type":"GEO","geonameId":2593109,"valueCode":""},{"geonameFeatureClass":"A","values":{"de":"Granada","default":"Province
of Granada","fr":"Grenade","en":"Province of Granada","es":"Provincia de
Granada","ja":"ã°ã©ãã"},"geonameFeatureCode":"A
DM2","_id":262,"name":"","auto":true,"type":"GEO","geonameId":2517115,"valueCode":""},{"geonameFeatureClass":"A","values":{"default":"Monachil"},"geonameFeatureCode":"ADM3","_id":263,"name":"","auto":true,"type":"GEO","geonameId":6357744,"valueCode":""},{"geonameFeatureClass":"P","values":{"default":"Sierra
Nevada"},"geonameFeatureCode":"PPL","_id":264,"name":"","auto":true,"type":"GEO","geonameId":6544329,"valueCode":""}]
\ No newline at end of file