This is an automated email from the ASF dual-hosted git repository.
sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git
The following commit(s) were added to refs/heads/master by this push:
new 18fa7cd6 Test to show IO-815: not all encodings are matched
18fa7cd6 is described below
commit 18fa7cd6926616b4098be2723379e858ef92e432
Author: Sebb <[email protected]>
AuthorDate: Tue Oct 3 21:59:40 2023 +0100
Test to show IO-815: not all encodings are matched
---
.../commons/io/input/XmlStreamReaderTest.java | 25 ++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/src/test/java/org/apache/commons/io/input/XmlStreamReaderTest.java
b/src/test/java/org/apache/commons/io/input/XmlStreamReaderTest.java
index 555cf7ca..8f08e795 100644
--- a/src/test/java/org/apache/commons/io/input/XmlStreamReaderTest.java
+++ b/src/test/java/org/apache/commons/io/input/XmlStreamReaderTest.java
@@ -30,6 +30,7 @@ import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.URL;
import java.net.URLConnection;
+import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -37,6 +38,7 @@ import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.text.MessageFormat;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
import org.apache.commons.io.IOUtils;
@@ -571,6 +573,29 @@ public class XmlStreamReaderTest {
testRawNoBomValid(UTF_8);
}
+ private void parseCharset(String hdr, String enc) throws Exception {
+ try (InputStream stream = new
ByteArrayInputStream(hdr.getBytes(StandardCharsets.UTF_8))) {
+ try (XmlStreamReader xml = new XmlStreamReader(stream)) {
+ String getenc = xml.getEncoding();
+ assertEquals(enc.toUpperCase(Locale.ROOT), getenc, enc);
+ }
+ };
+ }
+ @Test
+ public void testIO_815() throws Exception {
+ System.out.println(XmlStreamReader.ENCODING_PATTERN);
+ MessageFormat fmt = new MessageFormat("<?xml version=\"1.0\"
encoding=''{0}''?>\n<root>text</root>");
+ for (final Map.Entry<String, Charset> entry :
Charset.availableCharsets().entrySet()) {
+ String csName = entry.getKey();
+ String header = fmt.format(new Object[]{csName});
+ parseCharset(header, csName);
+ for (final String alias : entry.getValue().aliases()) {
+ header = fmt.format(new Object[]{alias});
+ parseCharset(header, alias);
+ }
+ }
+ }
+
protected void testRawNoBomValid(final String encoding) throws Exception {
InputStream is = getXmlInputStream("no-bom", XML1, encoding, encoding);
XmlStreamReader xmlReader = new XmlStreamReader(is, false);