summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp')
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp b/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp
index 28922574b8..533fcd96f5 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"));
}