[Libreoffice-commits] core.git: Branch 'distro/collabora/co-2021' - tools/CppunitTest_tools_test.mk tools/qa tools/source
Tomaž Vajngerl (via logerrit)
logerrit at kemper.freedesktop.org
Tue Aug 31 02:28:28 UTC 2021
tools/CppunitTest_tools_test.mk | 1
tools/qa/cppunit/test_xmlwriter.cxx | 71 ++++++++++++++++++++++++++++++++++++
tools/source/xml/XmlWriter.cxx | 5 +-
3 files changed, 75 insertions(+), 2 deletions(-)
New commits:
commit 08c71e6a6dd9db7954ad1f97198606ca22eafdcb
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Tue Jun 15 13:35:57 2021 +0900
Commit: Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Tue Aug 31 04:27:54 2021 +0200
tools: handle special chars correctly in XmlHandler + test
Add the char encoding handler when calling xmlOutputBufferCreateIO
so that special chars are handled correctly. Previously we just
set nullptr.
Change-Id: I7ef44130869625cc4662bf168550a3f987390287
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117355
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
(cherry picked from commit 9ef167c38495a67639366357833041b33be3f978)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121098
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
diff --git a/tools/CppunitTest_tools_test.mk b/tools/CppunitTest_tools_test.mk
index 96fb96b08117..096b3ddb1835 100644
--- a/tools/CppunitTest_tools_test.mk
+++ b/tools/CppunitTest_tools_test.mk
@@ -31,6 +31,7 @@ $(eval $(call gb_CppunitTest_add_exception_objects,tools_test, \
tools/qa/cppunit/test_100mm2twips \
tools/qa/cppunit/test_fround \
tools/qa/cppunit/test_xmlwalker \
+ tools/qa/cppunit/test_xmlwriter \
tools/qa/cppunit/test_GenericTypeSerializer \
tools/qa/cppunit/test_cpuid \
tools/qa/cppunit/test_cpu_runtime_detection_AVX2 \
diff --git a/tools/qa/cppunit/test_xmlwriter.cxx b/tools/qa/cppunit/test_xmlwriter.cxx
new file mode 100644
index 000000000000..ffc6131de3ca
--- /dev/null
+++ b/tools/qa/cppunit/test_xmlwriter.cxx
@@ -0,0 +1,71 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <test/bootstrapfixture.hxx>
+#include <rtl/ustring.hxx>
+#include <tools/stream.hxx>
+#include <tools/XmlWriter.hxx>
+
+namespace
+{
+class XmlWriterTest : public test::BootstrapFixture
+{
+public:
+ XmlWriterTest()
+ : BootstrapFixture(true, false)
+ {
+ }
+
+ virtual void setUp() override {}
+
+ void testSimpleRoot();
+ void testSpecialChars();
+
+ CPPUNIT_TEST_SUITE(XmlWriterTest);
+ CPPUNIT_TEST(testSimpleRoot);
+ CPPUNIT_TEST(testSpecialChars);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+void XmlWriterTest::testSimpleRoot()
+{
+ SvMemoryStream aMemoryStream;
+
+ tools::XmlWriter aWriter(&aMemoryStream);
+ aWriter.startDocument(0, false);
+ aWriter.startElement("test");
+ aWriter.endElement();
+ aWriter.endDocument();
+
+ aMemoryStream.Seek(0);
+ OString aString(static_cast<const char*>(aMemoryStream.GetData()), aMemoryStream.GetSize());
+ CPPUNIT_ASSERT_EQUAL(OString("<test/>"), aString);
+}
+
+void XmlWriterTest::testSpecialChars()
+{
+ SvMemoryStream aMemoryStream;
+
+ tools::XmlWriter aWriter(&aMemoryStream);
+ aWriter.startDocument(0, false);
+ aWriter.startElement("test");
+ aWriter.content(OString("<>"));
+ aWriter.endElement();
+ aWriter.endDocument();
+
+ aMemoryStream.Seek(0);
+ OString aString(static_cast<const char*>(aMemoryStream.GetData()), aMemoryStream.GetSize());
+ CPPUNIT_ASSERT_EQUAL(OString("<test><></test>"), aString);
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(XmlWriterTest);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/tools/source/xml/XmlWriter.cxx b/tools/source/xml/XmlWriter.cxx
index eaea3d9c15e4..0b0fd50857f6 100644
--- a/tools/source/xml/XmlWriter.cxx
+++ b/tools/source/xml/XmlWriter.cxx
@@ -59,8 +59,9 @@ XmlWriter::~XmlWriter()
bool XmlWriter::startDocument(sal_Int32 nIndent, bool bWriteXmlHeader)
{
mpImpl->mbWriteXmlHeader = bWriteXmlHeader;
- xmlOutputBufferPtr xmlOutBuffer
- = xmlOutputBufferCreateIO(funcWriteCallback, funcCloseCallback, mpImpl->mpStream, nullptr);
+ xmlCharEncodingHandlerPtr pEncodingHandler = xmlGetCharEncodingHandler(XML_CHAR_ENCODING_UTF8);
+ xmlOutputBufferPtr xmlOutBuffer = xmlOutputBufferCreateIO(funcWriteCallback, funcCloseCallback,
+ mpImpl->mpStream, pEncodingHandler);
mpImpl->mpWriter = xmlNewTextWriter(xmlOutBuffer);
if (mpImpl->mpWriter == nullptr)
return false;
More information about the Libreoffice-commits
mailing list