summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>2014-12-18 11:58:27 +0100
committerEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>2014-12-22 09:26:49 +0100
commit0b16f425652c0e804ddac9cbca2d0063cfdad55e (patch)
treead2eaa54f8d9092050bd2cf8a703956da987ca8b /tests/auto/corelib
parent999321fecb9223bcadc702674ca83d8f84bd3886 (diff)
Android: Fix QDir tests
There's no way to install files automatically into the file system on Android, so to test QDir on the file system, we have to bundle the files in qrc and then copy them into the file system on startup. This adds some complexity, but at least it will detect regressions. We also need to make sure the current directory is the same as the data path, since the test assumes this, and /usr/ does not exist on Android, so we have to use a different path to find the root path. Change-Id: I18d79b5ed99a0afff573beb30c61745c403f8991 Reviewed-by: BogDan Vatra <bogdan@kde.org>
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r--tests/auto/corelib/io/qdir/android_testdata.qrc44
-rw-r--r--tests/auto/corelib/io/qdir/qdir.pro4
-rw-r--r--tests/auto/corelib/io/qdir/tst_qdir.cpp29
3 files changed, 77 insertions, 0 deletions
diff --git a/tests/auto/corelib/io/qdir/android_testdata.qrc b/tests/auto/corelib/io/qdir/android_testdata.qrc
new file mode 100644
index 0000000000..52cf4da330
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/android_testdata.qrc
@@ -0,0 +1,44 @@
+<RCC>
+ <qresource prefix="/android_testdata">
+ <file>tst_qdir.cpp</file>
+ <file>entrylist/file</file>
+ <file>entrylist/directory/dummy</file>
+ <file>searchdir/subdir1/picker.png</file>
+ <file>searchdir/subdir2/picker.png</file>
+ <file>testData/empty</file>
+ <file>testdir/dir/tmp/empty</file>
+ <file>testdir/dir/qdir.pro</file>
+ <file>testdir/dir/qrc_qdir.cpp</file>
+ <file>testdir/dir/tst_qdir.cpp</file>
+ <file>testdir/spaces/foo. bar</file>
+ <file>testdir/spaces/foo.bar</file>
+ <file>types/a</file>
+ <file>types/a.a</file>
+ <file>types/a.b</file>
+ <file>types/a.c</file>
+ <file>types/b</file>
+ <file>types/b.a</file>
+ <file>types/b.b</file>
+ <file>types/b.c</file>
+ <file>types/c</file>
+ <file>types/c.a</file>
+ <file>types/c.b</file>
+ <file>types/c.c</file>
+ <file>types/d/dummy</file>
+ <file>types/d.a/dummy</file>
+ <file>types/d.c/dummy</file>
+ <file>types/d.b/dummy</file>
+ <file>types/e/dummy</file>
+ <file>types/e.a/dummy</file>
+ <file>types/e.c/dummy</file>
+ <file>types/f/dummy</file>
+ <file>types/f.a/dummy</file>
+ <file>types/f.b/dummy</file>
+ <file>types/f.c/dummy</file>
+ <file>types/e.b/dummy</file>
+ <file>resources/entryList/file1.data</file>
+ <file>resources/entryList/file2.data</file>
+ <file>resources/entryList/file3.data</file>
+ <file>resources/entryList/file4.nothing</file>
+ </qresource>
+</RCC>
diff --git a/tests/auto/corelib/io/qdir/qdir.pro b/tests/auto/corelib/io/qdir/qdir.pro
index e2b25866df..d3e954bd32 100644
--- a/tests/auto/corelib/io/qdir/qdir.pro
+++ b/tests/auto/corelib/io/qdir/qdir.pro
@@ -6,3 +6,7 @@ RESOURCES += qdir.qrc
TESTDATA += testdir testData searchdir resources entrylist types tst_qdir.cpp
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
+
+android:!android-no-sdk {
+ RESOURCES += android_testdata.qrc
+}
diff --git a/tests/auto/corelib/io/qdir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/tst_qdir.cpp
index 49e3264617..484130f163 100644
--- a/tests/auto/corelib/io/qdir/tst_qdir.cpp
+++ b/tests/auto/corelib/io/qdir/tst_qdir.cpp
@@ -214,8 +214,35 @@ private:
Q_DECLARE_METATYPE(tst_QDir::UncHandling)
tst_QDir::tst_QDir()
+#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK)
+ : m_dataPath(QStandardPaths::writableLocation(QStandardPaths::CacheLocation))
+#else
: m_dataPath(QFileInfo(QFINDTESTDATA("testData")).absolutePath())
+#endif
{
+#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK)
+ QString resourceSourcePath = QStringLiteral(":/android_testdata/");
+ QDirIterator it(resourceSourcePath, QDirIterator::Subdirectories);
+ while (it.hasNext()) {
+ it.next();
+
+ QFileInfo fileInfo = it.fileInfo();
+
+ if (!fileInfo.isDir()) {
+ QString destination = m_dataPath + QLatin1Char('/') + fileInfo.filePath().mid(resourceSourcePath.length());
+ QFileInfo destinationFileInfo(destination);
+ if (!destinationFileInfo.exists()) {
+ QDir().mkpath(destinationFileInfo.path());
+ if (!QFile::copy(fileInfo.filePath(), destination))
+ qWarning("Failed to copy %s", qPrintable(fileInfo.filePath()));
+ }
+ }
+
+ }
+
+ if (!QDir::setCurrent(m_dataPath))
+ qWarning("Couldn't set current path to %s", qPrintable(m_dataPath));
+#endif
}
void tst_QDir::init()
@@ -2028,6 +2055,8 @@ void tst_QDir::equalityOperator_data()
//need a path in the root directory that is unlikely to be a symbolic link.
#if defined (Q_OS_WIN)
QString pathinroot("c:/windows/..");
+#elif defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK)
+ QString pathinroot("/system/..");
#else
QString pathinroot("/usr/..");
#endif