summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2018-06-28 11:55:42 +0200
committerMårten Nordheim <marten.nordheim@qt.io>2018-06-29 19:02:09 +0000
commit0ac09c40f28987169786b3063af423e9fe93c6b8 (patch)
tree345b23c1e742bfc540300e48fdb27879fd9863b7 /tests
parent34d212cb02f168e59c2a5c8e95a12377a57bfb7e (diff)
Android: Pass tst_qlibrary
To make the minimum amount of changes: - Extract the library files into the expected hierarchy. - Introduce a variable with the path to the directory. - Make the static function a member function so it can use the variable Change-Id: Ibf3106c3606d198a8deb8cb2a5cbde57207221c7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/plugin/qlibrary/tst/tst.pro11
-rw-r--r--tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp61
2 files changed, 57 insertions, 15 deletions
diff --git a/tests/auto/corelib/plugin/qlibrary/tst/tst.pro b/tests/auto/corelib/plugin/qlibrary/tst/tst.pro
index 6e71ec8ff9..56bef14405 100644
--- a/tests/auto/corelib/plugin/qlibrary/tst/tst.pro
+++ b/tests/auto/corelib/plugin/qlibrary/tst/tst.pro
@@ -12,3 +12,14 @@ win32 {
}
TESTDATA += ../library_path/invalid.so
+
+android {
+ libs.prefix = android_test_data
+ libs.base = $$OUT_PWD/..
+ libs.files += $$OUT_PWD/../libmylib.so \
+ $$OUT_PWD/../libmylib.so2 \
+ $$OUT_PWD/../libmylib.prl \
+ $$OUT_PWD/../system.qt.test.mylib.so
+
+ RESOURCES += libs
+}
diff --git a/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp b/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp
index 72d60d71c7..c9c9202a80 100644
--- a/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp
+++ b/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp
@@ -88,12 +88,6 @@
# define PREFIX "lib"
#endif
-static QString sys_qualifiedLibraryName(const QString &fileName)
-{
- QString appDir = QCoreApplication::applicationDirPath();
- return appDir + QLatin1Char('/') + PREFIX + fileName + SUFFIX;
-}
-
QT_FORWARD_DECLARE_CLASS(QLibrary)
class tst_QLibrary : public QObject
{
@@ -106,6 +100,13 @@ enum QLibraryOperation {
OperationMask = 7,
DontSetFileName = 0x100
};
+
+ QString sys_qualifiedLibraryName(const QString &fileName);
+
+ QString directory;
+#ifdef Q_OS_ANDROID
+ QSharedPointer<QTemporaryDir> temporaryDir;
+#endif
private slots:
void initTestCase();
@@ -130,19 +131,49 @@ private slots:
void multipleInstancesForOneLibrary();
};
+QString tst_QLibrary::sys_qualifiedLibraryName(const QString &fileName)
+{
+ return directory + QLatin1Char('/') + PREFIX + fileName + SUFFIX;
+}
+
typedef int (*VersionFunction)(void);
void tst_QLibrary::initTestCase()
{
-#ifndef Q_OS_WINRT
+#ifdef Q_OS_ANDROID
+ auto tempDir = QEXTRACTTESTDATA("android_test_data");
+
+ QVERIFY2(QDir::setCurrent(tempDir->path()), qPrintable("Could not chdir to " + tempDir->path()));
+
+ // copy :/library_path into ./library_path
+ QVERIFY(QDir().mkdir("library_path"));
+ QDirIterator iterator(":/library_path", QDirIterator::Subdirectories);
+ while (iterator.hasNext()) {
+ iterator.next();
+ QFileInfo sourceFileInfo(iterator.path());
+ QFileInfo targetFileInfo("./library_path/" + sourceFileInfo.fileName());
+ if (!targetFileInfo.exists()) {
+ QDir().mkpath(targetFileInfo.path());
+ QVERIFY(QFile::copy(sourceFileInfo.filePath(), targetFileInfo.filePath()));
+ }
+ }
+ directory = tempDir->path();
+ temporaryDir = std::move(tempDir);
+#elif !defined(Q_OS_WINRT)
// chdir to our testdata directory, and use relative paths in some tests.
QString testdatadir = QFileInfo(QFINDTESTDATA("library_path")).absolutePath();
QVERIFY2(QDir::setCurrent(testdatadir), qPrintable("Could not chdir to " + testdatadir));
+ directory = QCoreApplication::applicationDirPath();
+#elif defined(Q_OS_WINRT)
+ directory = QCoreApplication::applicationDirPath();
#endif
}
void tst_QLibrary::version_data()
{
+#ifdef Q_OS_ANDROID
+ QSKIP("Versioned .so files are not generated for Android, so this test is not applicable.");
+#endif
QTest::addColumn<QString>("lib");
QTest::addColumn<int>("loadversion");
QTest::addColumn<int>("resultversion");
@@ -159,7 +190,7 @@ void tst_QLibrary::version()
QFETCH( int, resultversion );
#if !defined(Q_OS_AIX) && !defined(Q_OS_WIN)
- QString appDir = QCoreApplication::applicationDirPath();
+ QString appDir = directory;
QLibrary library( appDir + QLatin1Char('/') + lib, loadversion );
QVERIFY2(library.load(), qPrintable(library.errorString()));
@@ -179,7 +210,7 @@ void tst_QLibrary::load_data()
QTest::addColumn<QString>("lib");
QTest::addColumn<bool>("result");
- QString appDir = QCoreApplication::applicationDirPath();
+ QString appDir = directory;
QTest::newRow( "ok00" ) << appDir + "/mylib" << true;
QTest::newRow( "notexist" ) << appDir + "/nolib" << false;
@@ -220,7 +251,7 @@ void tst_QLibrary::unload_data()
QTest::addColumn<QString>("lib");
QTest::addColumn<bool>("result");
- QString appDir = QCoreApplication::applicationDirPath();
+ QString appDir = directory;
QTest::newRow( "mylib" ) << appDir + "/mylib" << true;
QTest::newRow( "ok01" ) << appDir + "/nolib" << false;
@@ -243,7 +274,7 @@ void tst_QLibrary::unload()
void tst_QLibrary::unload_after_implicit_load()
{
- QLibrary library( QCoreApplication::applicationDirPath() + "/mylib" );
+ QLibrary library( directory + "/mylib" );
QFunctionPointer p = library.resolve("mylibversion");
QVERIFY(p); // Check if it was loaded
QVERIFY(library.isLoaded());
@@ -257,7 +288,7 @@ void tst_QLibrary::resolve_data()
QTest::addColumn<QString>("symbol");
QTest::addColumn<bool>("goodPointer");
- QString appDir = QCoreApplication::applicationDirPath();
+ QString appDir = directory;
QTest::newRow( "ok00" ) << appDir + "/mylib" << QString("mylibversion") << true;
QTest::newRow( "bad00" ) << appDir + "/mylib" << QString("nosym") << false;
@@ -333,7 +364,7 @@ void tst_QLibrary::errorString_data()
QTest::addColumn<bool>("success");
QTest::addColumn<QString>("errorString");
- QString appDir = QCoreApplication::applicationDirPath();
+ QString appDir = directory;
QTest::newRow("bad load()") << (int)Load << QString("nosuchlib") << false << QString("Cannot load library nosuchlib: .*");
QTest::newRow("call errorString() on QLibrary with no d-pointer (crashtest)") << (int)(Load | DontSetFileName) << QString() << false << QString("Unknown error");
@@ -398,7 +429,7 @@ void tst_QLibrary::loadHints_data()
QLibrary::LoadHints lh;
- QString appDir = QCoreApplication::applicationDirPath();
+ QString appDir = directory;
lh |= QLibrary::ResolveAllSymbolsHint;
# if defined(Q_OS_WIN32) || defined(Q_OS_WINRT)
@@ -477,7 +508,7 @@ void tst_QLibrary::fileName()
void tst_QLibrary::multipleInstancesForOneLibrary()
{
- QString lib = QCoreApplication::applicationDirPath() + "/mylib";
+ QString lib = directory + "/mylib";
{
QLibrary lib1(lib);