From eef3afaa978a25743af7efdda169052b67cc744a Mon Sep 17 00:00:00 2001
From: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
Date: Fri, 11 Mar 2016 11:14:49 +0100
Subject: [PATCH] QTextStream test: Change current directory

For platforms with builtin testdata/sandboxed platforms we need to
change the current directory to be able to create files.

Change-Id: I440205c95dd6df1308c6bf24b1b0f67fd697feab
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
---
 tests/auto/corelib/io/qtextstream/test/test.pro  |  4 ++++
 .../corelib/io/qtextstream/tst_qtextstream.cpp   | 16 ++++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/tests/auto/corelib/io/qtextstream/test/test.pro b/tests/auto/corelib/io/qtextstream/test/test.pro
index 39d181344f6..073aecdfba6 100644
--- a/tests/auto/corelib/io/qtextstream/test/test.pro
+++ b/tests/auto/corelib/io/qtextstream/test/test.pro
@@ -21,3 +21,7 @@ TESTDATA += \
     ../tst_qtextstream.cpp \
     ../resources
 DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
+
+builtin_testdata {
+    DEFINES += BUILTIN_TESTDATA
+}
diff --git a/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp b/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp
index 24dd05223f4..13be58a1f19 100644
--- a/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp
+++ b/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp
@@ -65,6 +65,7 @@ public:
 public slots:
     void initTestCase();
     void cleanup();
+    void cleanupTestCase();
 
 private slots:
     void getSetCheck();
@@ -241,6 +242,9 @@ private:
 
     QTemporaryDir tempDir;
     QString testFileName;
+#ifdef BUILTIN_TESTDATA
+    QSharedPointer<QTemporaryDir> m_dataDir;
+#endif
     const QString m_rfc3261FilePath;
     const QString m_shiftJisFilePath;
 };
@@ -267,9 +271,14 @@ void tst_QTextStream::initTestCase()
 
     testFileName = tempDir.path() + "/testfile";
 
+#ifdef BUILTIN_TESTDATA
+    m_dataDir = QEXTRACTTESTDATA("/");
+    QVERIFY2(QDir::setCurrent(m_dataDir->path()), qPrintable("Could not chdir to " + m_dataDir->path()));
+#else
     // chdir into the testdata dir and refer to our helper apps with relative paths
     QString testdata_dir = QFileInfo(QFINDTESTDATA("stdinProcess")).absolutePath();
     QVERIFY2(QDir::setCurrent(testdata_dir), qPrintable("Could not chdir to " + testdata_dir));
+#endif
 }
 
 // Testing get/set functions
@@ -392,6 +401,13 @@ void tst_QTextStream::cleanup()
     QCoreApplication::instance()->processEvents();
 }
 
+void tst_QTextStream::cleanupTestCase()
+{
+#ifdef BUILTIN_TESTDATA
+    QDir::setCurrent(QCoreApplication::applicationDirPath());
+#endif
+}
+
 // ------------------------------------------------------------------------------
 void tst_QTextStream::construction()
 {
-- 
GitLab