aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/blackbox/tst_blackboxandroid.cpp
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@qt.io>2017-12-13 22:18:35 -0800
committerJake Petroules <jake.petroules@qt.io>2017-12-14 19:00:34 +0000
commit126ce8cd2b2c0c10525e23c9900ec25b0bade601 (patch)
treeed78033d37ee9d7a2dcc12d27f47cbead43b5a3c /tests/auto/blackbox/tst_blackboxandroid.cpp
parent90d132dc8e42e4799d3b99293e539cba4ebff967 (diff)
Run Android autotests in release mode as well as debug
This should help catch more errors in the future. Change-Id: I54c1e4314357351af0df9fbb7ed6df36fda983f5 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'tests/auto/blackbox/tst_blackboxandroid.cpp')
-rw-r--r--tests/auto/blackbox/tst_blackboxandroid.cpp120
1 files changed, 64 insertions, 56 deletions
diff --git a/tests/auto/blackbox/tst_blackboxandroid.cpp b/tests/auto/blackbox/tst_blackboxandroid.cpp
index 5f24f194a..d660cac68 100644
--- a/tests/auto/blackbox/tst_blackboxandroid.cpp
+++ b/tests/auto/blackbox/tst_blackboxandroid.cpp
@@ -68,9 +68,9 @@ TestBlackboxAndroid::TestBlackboxAndroid()
void TestBlackboxAndroid::android()
{
- QFETCH(QString, projectDir);
- QFETCH(QStringList, productNames);
- QFETCH(QList<QByteArrayList>, expectedFilesLists);
+ QFETCH(const QString, projectDir);
+ QFETCH(const QStringList, productNames);
+ QFETCH(const QList<QByteArrayList>, expectedFilesLists);
const SettingsPtr s = settings();
Profile p(profileName(), s.get());
@@ -93,64 +93,72 @@ void TestBlackboxAndroid::android()
QSKIP("NDK samples directory not present");
QDir::setCurrent(testDataDir + "/" + projectDir);
- QbsRunParameters params(QStringList { "--command-echo-mode", "command-line",
- "modules.Android.ndk.platform:android-21" });
- params.profile = p.name();
- QCOMPARE(runQbs(params), 0);
- for (const QString &productName : qAsConst(productNames)) {
- QVERIFY(m_qbsStdout.contains(productName.toLocal8Bit() + ".apk"));
- const QString apkFilePath = relativeProductBuildDir(productName)
- + '/' + productName + ".apk";
- QVERIFY2(regularFileExists(apkFilePath), qPrintable(apkFilePath));
- const QString jarFilePath = findExecutable(QStringList("jar"));
- QVERIFY(!jarFilePath.isEmpty());
- QProcess jar;
- jar.start(jarFilePath, QStringList() << "-tf" << apkFilePath);
- QVERIFY2(jar.waitForStarted(), qPrintable(jar.errorString()));
- QVERIFY2(jar.waitForFinished(), qPrintable(jar.errorString()));
- QVERIFY2(jar.exitCode() == 0, qPrintable(jar.readAllStandardError().constData()));
- QByteArrayList actualFiles = jar.readAllStandardOutput().trimmed().split('\n');
- QByteArrayList missingExpectedFiles;
- QByteArrayList expectedFiles = expectedFilesLists.takeFirst();
- for (const QByteArray &expectedFile : expectedFiles) {
- auto it = std::find(actualFiles.begin(), actualFiles.end(), expectedFile);
- if (it != actualFiles.end()) {
- actualFiles.erase(it);
- continue;
+
+ static const QStringList configNames { "debug", "release" };
+ for (const QString &configName : configNames) {
+ auto currentExpectedFilesLists = expectedFilesLists;
+ QbsRunParameters params(QStringList { "--command-echo-mode", "command-line",
+ "modules.Android.ndk.platform:android-21",
+ "config:" + configName });
+ params.profile = p.name();
+ QCOMPARE(runQbs(params), 0);
+ for (const QString &productName : qAsConst(productNames)) {
+ QVERIFY(m_qbsStdout.contains(productName.toLocal8Bit() + ".apk"));
+ const QString apkFilePath = relativeProductBuildDir(productName, configName)
+ + '/' + productName + ".apk";
+ QVERIFY2(regularFileExists(apkFilePath), qPrintable(apkFilePath));
+ const QString jarFilePath = findExecutable(QStringList("jar"));
+ QVERIFY(!jarFilePath.isEmpty());
+ QProcess jar;
+ jar.start(jarFilePath, QStringList() << "-tf" << apkFilePath);
+ QVERIFY2(jar.waitForStarted(), qPrintable(jar.errorString()));
+ QVERIFY2(jar.waitForFinished(), qPrintable(jar.errorString()));
+ QVERIFY2(jar.exitCode() == 0, qPrintable(jar.readAllStandardError().constData()));
+ QByteArrayList actualFiles = jar.readAllStandardOutput().trimmed().split('\n');
+ QByteArrayList missingExpectedFiles;
+ QByteArrayList expectedFiles = currentExpectedFilesLists.takeFirst();
+ for (const QByteArray &expectedFile : expectedFiles) {
+ if (expectedFile.endsWith("/gdbserver") && configName == "release")
+ continue;
+ auto it = std::find(actualFiles.begin(), actualFiles.end(), expectedFile);
+ if (it != actualFiles.end()) {
+ actualFiles.erase(it);
+ continue;
+ }
+ missingExpectedFiles << expectedFile;
+ }
+ if (!missingExpectedFiles.empty())
+ QFAIL(QByteArray("missing expected files:\n") + missingExpectedFiles.join('\n'));
+ if (!actualFiles.empty()) {
+ QByteArray msg = "unexpected files encountered:\n" + actualFiles.join('\n');
+ auto it = std::find_if(std::begin(actualFiles), std::end(actualFiles),
+ [](const QByteArray &f) {
+ return f.endsWith(".so");
+ });
+ if (it == std::end(actualFiles))
+ QWARN(msg);
+ else
+ QFAIL(msg);
}
- missingExpectedFiles << expectedFile;
}
- if (!missingExpectedFiles.empty())
- QFAIL(QByteArray("missing expected files:\n") + missingExpectedFiles.join('\n'));
- if (!actualFiles.empty()) {
- QByteArray msg = "unexpected files encountered:\n" + actualFiles.join('\n');
- auto it = std::find_if(std::begin(actualFiles), std::end(actualFiles),
- [](const QByteArray &f) {
- return f.endsWith(".so");
+
+ if (projectDir == "multiple-libs-per-apk") {
+ const auto dxPath = androidPaths["sdk-build-tools-dx"];
+ QVERIFY(!dxPath.isEmpty());
+ const auto lines = m_qbsStdout.split('\n');
+ const auto it = std::find_if(lines.cbegin(), lines.cend(), [&](const QByteArray &line) {
+ return !line.isEmpty() && line.startsWith(dxPath.toUtf8());
});
- if (it == std::end(actualFiles))
- QWARN(msg);
- else
- QFAIL(msg);
+ QVERIFY2(it != lines.cend(), qPrintable(m_qbsStdout.constData()));
+ const auto line = *it;
+ QVERIFY2(line.contains("lib3.jar"), qPrintable(line.constData()));
+ QVERIFY2(!line.contains("lib4.jar"), qPrintable(line.constData()));
+ QVERIFY2(line.contains("lib5.jar"), qPrintable(line.constData()));
+ QVERIFY2(line.contains("lib6.jar"), qPrintable(line.constData()));
+ QVERIFY2(!line.contains("lib7.jar"), qPrintable(line.constData()));
+ QVERIFY2(line.contains("lib8.jar"), qPrintable(line.constData()));
}
}
-
- if (projectDir == "multiple-libs-per-apk") {
- const auto dxPath = androidPaths["sdk-build-tools-dx"];
- QVERIFY(!dxPath.isEmpty());
- const auto lines = m_qbsStdout.split('\n');
- const auto it = std::find_if(lines.cbegin(), lines.cend(), [&](const QByteArray &line) {
- return !line.isEmpty() && line.startsWith(dxPath.toUtf8());
- });
- QVERIFY2(it != lines.cend(), qPrintable(m_qbsStdout.constData()));
- const auto line = *it;
- QVERIFY2(line.contains("lib3.jar"), qPrintable(line.constData()));
- QVERIFY2(!line.contains("lib4.jar"), qPrintable(line.constData()));
- QVERIFY2(line.contains("lib5.jar"), qPrintable(line.constData()));
- QVERIFY2(line.contains("lib6.jar"), qPrintable(line.constData()));
- QVERIFY2(!line.contains("lib7.jar"), qPrintable(line.constData()));
- QVERIFY2(line.contains("lib8.jar"), qPrintable(line.constData()));
- }
}
void TestBlackboxAndroid::android_data()