diff options
author | Jake Petroules <jake.petroules@qt.io> | 2017-12-13 22:18:35 -0800 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2017-12-14 19:00:34 +0000 |
commit | 126ce8cd2b2c0c10525e23c9900ec25b0bade601 (patch) | |
tree | ed78033d37ee9d7a2dcc12d27f47cbead43b5a3c /tests/auto/blackbox/tst_blackboxandroid.cpp | |
parent | 90d132dc8e42e4799d3b99293e539cba4ebff967 (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.cpp | 120 |
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() |