From 1ee272568b02f2165c8c06e6083e9983e72d9a11 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Mon, 30 Jul 2012 09:26:03 +0200 Subject: Fixes to the qdom autotest Don't rely on a black list of codecs for the serialization test. This breaks badly when new codecs get added to Qt (e.g. through ICU). Instead use a white list of known codecs that can encode/decode the test data. Change-Id: I1dc55a25e852198bb935f070a4a21e8369f56268 Reviewed-by: Thiago Macieira --- .../auto/xml/dom/qdom/testdata/excludedCodecs.txt | 135 --------------------- tests/auto/xml/dom/qdom/testdata/testCodecs.txt | 6 + tests/auto/xml/dom/qdom/tst_qdom.cpp | 20 ++- 3 files changed, 14 insertions(+), 147 deletions(-) delete mode 100644 tests/auto/xml/dom/qdom/testdata/excludedCodecs.txt create mode 100644 tests/auto/xml/dom/qdom/testdata/testCodecs.txt (limited to 'tests/auto') diff --git a/tests/auto/xml/dom/qdom/testdata/excludedCodecs.txt b/tests/auto/xml/dom/qdom/testdata/excludedCodecs.txt deleted file mode 100644 index 1f0d871563..0000000000 --- a/tests/auto/xml/dom/qdom/testdata/excludedCodecs.txt +++ /dev/null @@ -1,135 +0,0 @@ -apple roman -arabic -asmo-708 -big5 -big5-0 -big5-eten -big5-hkscs -big5hkscs-0 -cp1250 -cp1251 -cp1252 -cp1253 -cp1254 -cp1255 -cp1256 -cp1257 -cp1258 -cp819 -cp850 -cp866 -cp874 -cp936 -cp949 -cp950 -cshproman8 -csibm866 -csisolatin1 -csisolatin2 -csisolatin3 -csisolatin4 -csisolatin5 -csisolatin6 -csisolatinarabic -csisolatincyrillic -csisolatingreek -csisolatinhebrew -cskoi8r -cspc850multilingual -cyrillic -ecma-114 -ecma-118 -euc-jp -euc-kr -gb18030-0 -gb2312 -gb2312.1980-0 -gbk -gbk-0 -greek -hebrew -hp-roman8 -ibm819 -ibm850 -ibm866 -ibm874 -iscii-bng -iscii-dev -iscii-gjr -iscii-knd -iscii-mlm -iscii-ori -iscii-pnj -iscii-tlg -iscii-tml -iso-2022-jp -iso-8859-1 -iso-8859-10 -iso-8859-10:1992 -iso 8859-11 -iso-8859-13 -iso-8859-14 -iso-8859-15 -iso-8859-16 -iso-8859-2 -iso-8859-3 -iso-8859-4 -iso-8859-5 -iso-8859-6 -iso-8859-6-i -iso-8859-7 -iso-8859-8 -iso 8859-8-i -iso-8859-9 -iso-celtic -iso-ir-100 -iso-ir-101 -iso-ir-109 -iso-ir-110 -iso-ir-126 -iso-ir-127 -iso-ir-138 -iso-ir-144 -iso-ir-148 -iso-ir-157 -iso-ir-199 -iso-ir-226 -jis7 -jisx0201*-0 -jisx0208*-0 -koi8-r -koi8-ru -koi8-u -ksc5601.1987-0 -latin1 -latin10 -latin2 -latin3 -latin4 -latin5 -latin6 -latin8 -latin9 -macintosh -macroman -ms936 -ms_kanji -mulelao-1 -roman8 -shift_jis -sjis -system -tis-620 -tscii -windows-1250 -windows-1251 -windows-1252 -windows-1253 -windows-1254 -windows-1255 -windows-1256 -windows-1257 -windows-1258 -windows-936 -winsami2 -ws2 diff --git a/tests/auto/xml/dom/qdom/testdata/testCodecs.txt b/tests/auto/xml/dom/qdom/testdata/testCodecs.txt new file mode 100644 index 0000000000..1e5923bd33 --- /dev/null +++ b/tests/auto/xml/dom/qdom/testdata/testCodecs.txt @@ -0,0 +1,6 @@ +utf-8 +utf-16 +utf-16be +utf-16le +utf-32 +gb18030 diff --git a/tests/auto/xml/dom/qdom/tst_qdom.cpp b/tests/auto/xml/dom/qdom/tst_qdom.cpp index bfd6ff0810..48b79f5a11 100644 --- a/tests/auto/xml/dom/qdom/tst_qdom.cpp +++ b/tests/auto/xml/dom/qdom/tst_qdom.cpp @@ -140,7 +140,7 @@ private: static bool isDeepEqual(const QDomNode &n1, const QDomNode &n2); static bool isFakeXMLDeclaration(const QDomNode &node); - QList m_excludedCodecs; + QList m_testCodecs; }; Q_DECLARE_METATYPE(QList) @@ -473,15 +473,17 @@ void tst_QDom::save() void tst_QDom::initTestCase() { - QString testFile = QFINDTESTDATA("testdata/excludedCodecs.txt"); + QString testFile = QFINDTESTDATA("testdata/testCodecs.txt"); if (testFile.isEmpty()) - QFAIL("Cannot find testdata/excludedCodecs.txt"); + QFAIL("Cannot find testdata/testCodecs.txt"); QFile file(testFile); QVERIFY(file.open(QIODevice::ReadOnly|QIODevice::Text)); QByteArray codecName; - m_excludedCodecs = file.readAll().split('\n'); + m_testCodecs = file.readAll().split('\n'); + if (m_testCodecs.last().isEmpty()) + m_testCodecs.removeLast(); } @@ -497,14 +499,9 @@ void tst_QDom::saveWithSerialization() const // Read the document QVERIFY(doc.setContent(&f)); - const QList codecs(QTextCodec::availableCodecs()); QByteArray codecName; - foreach(codecName, codecs) { - - /* Avoid codecs that can't handle the files we have. */ - if(m_excludedCodecs.contains(codecName.toLower())) - continue; + foreach (codecName, m_testCodecs) { /* Write out doc in the specified codec. */ QByteArray storage; @@ -513,8 +510,7 @@ void tst_QDom::saveWithSerialization() const QTextStream s(&writeDevice); QTextCodec *codec = QTextCodec::codecForName(codecName); - QVERIFY2(codec, qPrintable(QString::fromLatin1("Failed to load codec %1, even though it was in QTextCodec::availableCodecs()") - .arg(QString::fromLatin1(codecName.constData())))); + QVERIFY2(codec, qPrintable(QString::fromLatin1("Failed to load codec %1").arg(QString::fromLatin1(codecName.constData())))); s.setCodec(codec); doc.save(s, 0, QDomNode::EncodingFromTextStream); -- cgit v1.2.3