diff options
Diffstat (limited to 'tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp')
-rw-r--r-- | tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp b/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp index 28922574b8..a2349a5846 100644 --- a/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp +++ b/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp @@ -36,6 +36,9 @@ #include <QUrl> #include <QXmlDefaultHandler> #include <QXmlStreamReader> +#include <QBuffer> +#include <QStack> +#include <QtGui/private/qzipreader_p.h> #include "qc14n.h" @@ -44,6 +47,10 @@ Q_DECLARE_METATYPE(QXmlStreamReader::ReadElementTextBehaviour) static const char *const catalogFile = "XML-Test-Suite/xmlconf/finalCatalog.xml"; static const int expectedRunCount = 1646; static const int expectedSkipCount = 532; +static const char *const xmlconfDir = "XML-Test-Suite/xmlconf/"; +static const char *const xmlDatasetName = "xmltest"; +static const char *const updateFilesDir = "xmltest_updates"; +static const char *const destinationFolder = "/valid/sa/out/"; static inline int best(int a, int b) { @@ -591,6 +598,27 @@ private: void tst_QXmlStream::initTestCase() { +#ifdef Q_OS_WINRT + QSKIP("Skipping the tests because we cannot unzip the data archive from WinRT app"); +#endif + // Due to license restrictions, we need to distribute part of the test + // suit as a zip archive. So we need to unzip it before running the tests, + // and also update some files there. + // We also need to remove the unzipped data during cleanup. + const QString filesDir(QFINDTESTDATA(xmlconfDir)); + QZipReader reader(filesDir + xmlDatasetName + ".zip"); + QVERIFY(reader.isReadable()); + QVERIFY(reader.extractAll(filesDir)); + // update files + const auto files = + QDir(filesDir + updateFilesDir).entryInfoList(QDir::Files | QDir::NoDotAndDotDot); + for (const auto &fileInfo : files) { + const QString destinationPath = + filesDir + xmlDatasetName + destinationFolder + fileInfo.fileName(); + QFile::remove(destinationPath); // copy will fail if file exists + QVERIFY(QFile::copy(fileInfo.filePath(), destinationPath)); + } + QFile file(QFINDTESTDATA(catalogFile)); QVERIFY2(file.open(QIODevice::ReadOnly), qPrintable(QString::fromLatin1("Failed to open the test suite catalog; %1").arg(file.fileName()))); @@ -600,6 +628,8 @@ void tst_QXmlStream::initTestCase() void tst_QXmlStream::cleanupTestCase() { + QDir d(QFINDTESTDATA(xmlconfDir) + xmlDatasetName); + d.removeRecursively(); QFile::remove(QLatin1String("test.xml")); } @@ -1718,10 +1748,11 @@ static bool isValidSingleTextChar(const ushort c) void tst_QXmlStream::readBack() const { + QBuffer buffer; + for (ushort c = 0; c < std::numeric_limits<ushort>::max(); ++c) { - QBuffer buffer; - QVERIFY(buffer.open(QIODevice::WriteOnly)); + QVERIFY(buffer.open(QIODevice::WriteOnly|QIODevice::Truncate)); QXmlStreamWriter writer(&buffer); writer.writeStartDocument(); writer.writeTextElement("a", QString(QChar(c))); |